diff --git a/.gitignore b/.gitignore index 882d16beb..af2c0073f 100644 --- a/.gitignore +++ b/.gitignore @@ -67,6 +67,9 @@ build/**/*.nativecodeanalysis.all.xml build/**/*.nativecodeanalysis.xml build/**/*.VC.opendb build/**/*.VC.db* +build/**/*.json +build/**/*.sqlite +build/**/*.FileListAbsolute.txt # Compiled Object files build/**/*.slo diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 000000000..24e079909 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,5 @@ +Nazara Engine was originally created in early 2012. +It follows a complete overhaul of a previous project in order to offer more features and modularity. + +Jérôme "Lynix" Leclercq - main developper (lynix680@gmail.com) +Full Cycle Games - sponsor and contributor since January 2017. diff --git a/ChangeLog.md b/ChangeLog.md index 5eb093e46..829e42437 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -17,6 +17,11 @@ 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) +- ⚠ Appveyor nightlies are now compiled with VS2017 +- Set libraries' rpath to current folder (.) +- Add ReleaseWithDebug target +- ⚠ **Default font has been changed from Cabin to OpenSans** Nazara Engine: - VertexMapper:GetComponentPtr no longer throw an error if component is disabled or incompatible with template type, instead a null pointer is returned. @@ -52,7 +57,7 @@ Nazara Engine: - Fix RigidBody3D copy constructor not copying all physics states (angular/linear damping/velocity, mass center, position and rotation) - Add RigidBody3D simulation control (via EnableSimulation and IsSimulationEnabled), which allows to disable physics and collisions at will. - Fix some uninitialized values (found by Valgrind) in Network module -- Fix possible infinite recursion when outputting a Thread::Id object +- Fix possible infinite recursion when outputting a Thread::Id object - ⚠️ Replaced implicit conversion from a Nz::String to a std::string by an explicit method ToStdString() - Fix LuaInstance movement constructor/assignment operator which was corrupting Lua memory - Fix potential bug on SocketImpl::Connect (used by TcpClient::Connect) on POSIX platforms @@ -107,7 +112,9 @@ 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. +- 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 - ⚠️ Added InstancedRenderable::Clone() method @@ -115,6 +122,106 @@ 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 +- 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 +- ⚠️ 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 +- 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 +- 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 +- 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 +- 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 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 +- 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) +- Added LuaState::RawEqual +- Fixed LuaCoroutine movement assignation operator +- Added Arbiter2D::GetBodies +- Added RigidBody2D::ForEachArbiter +- Added possibility to change the RigidBody2D velocity function called by the physics engine +- Fixed MouseButtonEvent and MouseMoveEvent mouse absolute position being unsigned (now signed) +- Fixed Window::SetCursor changing cursor even if window was in foreground on Windows +- Fixed SystemCursor_Move not showing up on Windows +- Fixed Window movement constructor/assignation operator +- Window::PushEvent is now public (useful for pushing external events ie. when using Qt or similar framework controlling window) +- Fixed TileMap not rendering the right materials if it had no tile using some materials in-between +- Added Vector[2|3|4](u)i64 typedefs +- Fixed missing static Vector4::DotProduct implementation +- ⚠ **By default, Nazara now computes the mass center of all 2D physics object when calling SetGeom** +- ⚠ Added Collider2D::ComputeCenterOfMass +- Signal now implement a copy constructor and copy assignation operator for convenience +- Fixed ENet UnreliableFragment packets sent as Unreliable (and such being incomplete upon reception) +- ENet DisconnectLater now reflects libenet behavior (and is waiting for unreliable commands to be sent before disconnecting for good) +- ⚠ Collider3D::ForEachPolygon now takes a void(Vector3f\*, std::size_t) callback (instead of void(float\*, std::size_t)) +- Added Collider2D::ForEachPolygon method +- Added RigidBody::[Get|Set]PositionOffset allowing set an offset between body logic position and body physics position (center of mass position) +- ⚠ Default TextureSampler WrapMode is now Clamp (instead of Repeat) +- Fixed StateMachine ignoring transitions made in Enter/Leave events of states +- Fixed Material::Configure resetting textures +- ⚠ Renamed TextStyleFlags enum to TextStyle, introduced Flags specialization of TextStyle as TextStyleFlags +- ⚠ Font, FontData and SimpleTextDrawer now use a proper TextStyleFlags instead of a UInt32 +- Almost all Math algorithms are now constexpr +- PhysWorld2D: Fixed callbacks not properly replacing each others when registering twice with the same collisionId (pair) +- ⚠ **Font, FontData and SimpleTextDrawer now supports text outlining.** +- Fixed TextSprite not handling multiple textures well +- ⚠ TextSprite will now use multiple render layers by itself (the current one and the one right before, ex: [-1, 0] if base layer is 0) if you use text outlines. +- ⚠ SimpleTextDrawer no longer supports faux bold rendering +- Added PhysWorld2D::[RaycastQuery, RegionQuery] overloads taking a callback +- Added x and y mouse position to MouseWheelEvent +- Added SimpleTextDrawer::[Get|Set]MaxLineWidth (which does line wrap) +- TypeTag helper struct now includes a Type using +- GuillotineBinPack::Insert overload taking multiple rectangles no longer does a heap allocation +- StackArray and StackVector now have a default constructor initializing them with no size/capacity +- StackArray and StackVector are now movable +- Fixed RigidBody2D::Copy not copying kinematic/dynamic/static status +- Fixed out-of-bounds access in LuaInstance::LoadLibraries +- Add Flags::Clear(Flags) helper method, to clear one or more flags. +- Add Flags::Clear() helper method, to reset flags +- Add Flags::Set(Flags) helper method, to enable flags +- ⚠ Constraint2D are no longer managed by references and are now handled objects +- ⚠ Removed all Set methods from math classes taking their own type (e.g. Box::Set(Box)) +- Added Matrix4::Decompose +- ⚠ Node::Get[Position|Rotation|Scale] now defaults to local space +- Fixed Node rotation when using a negative scale +- Added HandledObject::OnHandledObjectDestruction signal +- Added physics function to control sleeping behavior +- String::Number is now locale-independent +- Added ENetPeer::GetTotalByte[Received|Sent] +- Added ENetPeer::GetTotalPacketSent +- ⚠ ENetHost::GetTotalReceivedPackets now returns the number of commands received (instead of the number of UDP packets received) +- Added EmptyStream class, useful to measure how many bytes some writing operations will take +- SegmentCollider2D: Add support for neighbors (aka "ghost vertices"), allowing to prevent seams collisions +- ⚠ OBJLoader flips UV by default, fixing a lot of models UV +- On Windows, Thread::Set(Current)Name now uses `SetThreadDescription` Win32 function if possible instead of triggering a debugger exception. MinGW builds will use this if available too. +- ⚠ Removed Texture(const Image\*) constructor, use Texture::LoadFromImage instead +- ⚠ TextDrawers now use floating-point internally and to exposes their Bounds (AbstractTextDrawer::GetBounds() now returns a Rectf) +- Added [SimpleTextDrawer|RichTextDrawer] character and line spacing offset properties +- Added ENetHost::AllowsIncomingConnections(bool) to disable/re-enable server peers connection +- Added ByteArrayPool and PoolByteStream classes Nazara Development Kit: - Added ImageWidget (#139) @@ -158,14 +265,65 @@ 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) +- Add DebugComponent (a component able to show aabb/obb/collision mesh 2D and 3D) - ⚠️ 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 -- Add GraphicsComponent:ForEachRenderable method +- Added GraphicsComponent:ForEachRenderable method - Fixed GraphicsComponent reflective material count which was not initialized - Added PhysicsComponent2D::ClosestPointQuery +- 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 +- ⚠️ 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 +- 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 +- Added EntityOwner::Release +- Add missing `recomputeMoment` parameter to PhysicsComponent2D::SetMass +- Added possibility of disabling synchronization between PhysicsComponent2D and NodeComponent +- Fixed GraphicsComponent not invalidating render queue on material change (causing crashes or visual errors) +- Added CollisionComponent2D::SetGeomOffset and CollisionComponent2D::Recenter +- Added LifetimeComponent and LifetimeSystem +- Fixed a subtle bug regarding entities invalidation and kill (ex: if an entity #2 kills entity #1 during Entity::Destroy callbacks, entity #1 will survive destruction). +- Added PhysicsSystem2D::[RaycastQuery, RegionQuery] overloads taking a callback +- Added TextAreaWidget support for outline +- Fixed possible crash when disabling BaseWidget background +- Added BaseWidget::OnMouseWheelMoved +- Added Entity::OnEntity[Disabled|Enabled] signals +- Added BaseWidget::SetParent +- BaseWidget::Show will no longer show entities disabled by the widget +- BaseWidget now has a rendering rect property (allowing to tell a widget what part of it will be rendered) +- Added ScrollAreaWidget +- Console has been remade with widgets (allowing to scroll back history, select text, etc.) +- Added TextAreaWidget line wrap option +- TextAreaWidget will now shift the text to the left/right in order to keep the cursor visible +- Added TextAreaWidget::[Get|Set]TextFont +- ⚠️ TextAreaWidget::OnTextAreaCursorMove signal now uses a Vector2ui* position as its second argument (instead of a std::size_t*) +- Added TextAreaWidget::OnTextAreaSelection +- ⚠️ Console class is no longer bound to a LuaState and now has a OnCommand signal +- ⚠️ Made AbstractTextAreaWidget which is inherited by TextAreaWidget +- ⚠️ Added RichTextAreaWidget +- ⚠️ Console now supports text color in history +- Added World::CloneEntity overload taking an EntityHandle const reference, allowing to copy entities from other worlds +- Fixed PhysicsComponent2D copy not copying physics attributes +- Added Entity::DropComponent which detaches a component without necessarily destroying it +- ⚠ ConstraintComponent2D has been reworked to handle entity destruction and remove constraints at will +- Fixed crash when pressing up/down key with no history in the console +- (Rich)TextAreaWidget text style is now alterable +- Added CameraComponent::SetProjectionScale +- Added (Rich)TextAreaWidget character and line spacing offset properties # 0.4: @@ -253,8 +411,8 @@ Nazara Engine: - Added [Nz::TcpClient::SendMultiple](https://nazara.digitalpulsesoftware.net/doc/class_nz_1_1_tcp_client.html#a495c32beb46ed9192699a3b82d358035) method, allowing to send multiple buffers at once. - Added [Nz::PlacementDestroy](https://nazara.digitalpulsesoftware.net/doc/namespace_nz.html#a27c8667def991fc896c5beff3e62668a). (ea985fa76586762f008e4054938db3234eeaf0cb) - Added [Nz::String::Format](https://nazara.digitalpulsesoftware.net/doc/class_nz_1_1_string.html#a4b699982e7f9ea38f6d44b43ac1e2040) and [Nz::String::FormatVA](https://nazara.digitalpulsesoftware.net/doc/class_nz_1_1_string.html#abe0fcbce11224b157ac756b60e8dee92) static methods. (cc6e4127dc6c61799a64404770992cef0804ad34). -- Added [Nz::ParticleGroup::GetBuffer](https://nazara.digitalpulsesoftware.net/doc/class_nz_1_1_particle_mapper.html#aefe1b251efc8c9b8668842275561be0c) method. (4dc85789b59e50d964c83321dbd4b6485c04bef6) -- Added Nz::ParticleMapper::GetPointer method. (1f4e6c2d1594b7bb9dd6f4ea5480fdd16cf5f208) +- Added [Nz::ParticleGroup::GetBuffer](https://nazara.digitalpulsesoftware.net/doc/class_nz_1_1_particle_mapper.html#aefe1b251efc8c9b8668842275561be0c) method. (4dc85789b59e50d964c83321dbd4b6485c04bef6) +- Added Nz::ParticleMapper::GetPointer method. (1f4e6c2d1594b7bb9dd6f4ea5480fdd16cf5f208) - ⚠️ Structures provied by ParticleStruct header now have a float life. (472d964d587d906764ad1e05bfcc9ab1bf979483) - Fixed scale property of Nz::TextSprite not affecting its bounding volume. (52b29bac775823294c4ad7de70f4dc3f4adfa743) - ⚠️ Nz:MeshParams::flipUVs has been replaced by texCoordOffset and texCoordScale. (a1a7d908adc060fd7a43491c903dfe3b501d98e5) @@ -281,7 +439,7 @@ Nazara Engine: - All noises classes now uses std::mt19937 as a random number generator, to ensure the same results on every machine. (1f5ea9839016964c173d919263827dee69ecb65d) Nazara Development Kit: -- **Added basic widgets**. (c8a12083b3133e946bf60dd060331a4b4631f8d8) +- **Added basic widgets**. (c8a12083b3133e946bf60dd060331a4b4631f8d8) - VelocitySystem will no longer affect entities with PhysicsComponent2D. (a6853234412c744cdcb28344f02f7b0c92704d77) - Fixed EulerAngles constructor in Lua. (d55149a0a70f6230b6f1c3fb50e37dc82a2feb9f) - Fixed Component::OnDetached not being called on entity destruction. (5b777eb4853639d7aeb232ca46d17f0d432f47ca) @@ -292,7 +450,7 @@ Nazara Engine: Nazara Engine: - Nazara binaries are now compiled with Run-Time Type-Information. (a70acdc8f44010627a65282fd3099202116d3e13) -- Nazara demos are now compiled with relative dependencies on Linux. +- Nazara demos are now compiled with relative dependencies on Linux. (d6fbb4c408d48c4a768fad7b43460c76a0df1777) - Added [**Nz::BitCount**](https://nazara.digitalpulsesoftware.net/doc/group__core.html#ga6bfbcff78eb6cfbe3ddaedcfc8c04196) function. (82e31a3ec8449da6618f41690164c2e1d883edb4) - Added [**Nz::Bitset::AppendBits**](https://nazara.digitalpulsesoftware.net/doc/class_nz_1_1_bitset.html#a5ca8f365006c86d6d699d02471904f7e) method. (b018a400499a2356c4455a40d9f6a6c12b3cb36b) diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 000000000..05c162982 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,53 @@ +# Installation + +> **Notice**: For french speakers, a more detailed explanation of the instructions is provided here: [Instructions pour compiler](wiki/(FR)-Compiler-le-moteur). + +The first step to using the engine is to recover it. This can currently be done in two ways: +1) This can be don either from the original github (only the development is continuously evolving): +```git clone https://github.com/DigitalPulseSoftware/NazaraEngine.git``` +2) Or by downloading a [zip file](https://github.com/DigitalPulseSoftware/NazaraEngine/archive/master.zip) containing the entire source code of the engine. + +All you have to do is go to the "build/" folder. The compilation system uses [premake](https://premake.github.io/) to generate build systems. + +## Windows +For Windows users, they can directly use ".bat" files such as: "Build_VS2017.bat". It will generate a solution "NazaraEngine.sln" ready to use that you can directly build to produce the libs or execute the samples. + +## Linux + +Linux users, can type: "./premake5-linux64 gmake" or with the additional argument "--cc=clang" to configure the C++ compiler used. + +Some additional libraries will be required for compilation depending on the modules used: + +#### Audio module (OpenAL and libsndfile) + +- with apt: `sudo apt-get install libopenal-dev libsndfile1-dev` +- with pacman: `sudo pacman -S openal libsndfile` + +#### Platform module (Freetype): + +- with apt: `sudo apt-get install libfreetype6-dev` +- with pacman: `sudo pacman -S freetype2` + +#### Utility module (XCB + X11): + +- with apt: `sudo apt-get install libxcb-cursor-dev libxcb-ewmh-dev libxcb-randr0-dev libxcb-icccm4-dev libxcb-keysyms1-dev libx11-dev` +- with pacman: `sudo pacman -S libxcb libx11` + +#### OpenGL renderer module: + +- with apt: `sudo apt-get install mesa-common-dev libgl1-mesa-dev` +- with pacman: `sudo pacman -S mesa` + +#### Plugin Assimp: + +- with apt: `sudo apt-get install libassimp-dev` +- with pacman: `sudo pacman -S assimp` + +#### The one line command to install everything is: + +- with apt: `sudo apt-get install libopenal-dev libsndfile1-dev libfreetype6-dev libxcb-cursor-dev libxcb-ewmh-dev libxcb-randr0-dev libxcb-icccm4-dev libxcb-keysyms1-dev libx11-dev mesa-common-dev libgl1-mesa-dev libassimp-dev` +- with pacman: `sudo pacman -S openal libsndfile freetype2 libxcb libx11 mesa assimp` + +## Test + +One should now be able to execute the samples provided in the folder "NazaraEngine/examples/bin/" or the unit tests within "NazaraEngine/tests/". \ No newline at end of file diff --git a/License-Cabin.txt b/License-Cabin.txt deleted file mode 100644 index ce98ff4b5..000000000 --- a/License-Cabin.txt +++ /dev/null @@ -1,95 +0,0 @@ -Copyright (c) 2011, Pablo Impallari (www.impallari.com|impallari@gmail.com), -Copyright (c) 2011, Igino Marini. (www.ikern.com|mail@iginomarini.com), -with Reserved Font Name Cabin. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/License-OpenSans.txt b/License-OpenSans.txt new file mode 100644 index 000000000..989e2c59e --- /dev/null +++ b/License-OpenSans.txt @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/SDK/include/NDK/Application.hpp b/SDK/include/NDK/Application.hpp index 401f80228..69e97bdce 100644 --- a/SDK/include/NDK/Application.hpp +++ b/SDK/include/NDK/Application.hpp @@ -15,6 +15,7 @@ #include #ifndef NDK_SERVER +#include #include #include #include @@ -81,7 +82,7 @@ namespace Ndk #ifndef NDK_SERVER struct ConsoleOverlay { - std::unique_ptr console; + Console* console; Nz::LuaInstance lua; NazaraSlot(Nz::EventHandler, OnEvent, eventSlot); @@ -114,10 +115,11 @@ namespace Ndk Nz::RenderTarget* renderTarget; std::unique_ptr window; std::unique_ptr console; + std::unique_ptr canvas; std::unique_ptr fpsCounter; std::unique_ptr overlayWorld; }; - + void SetupConsole(WindowInfo& info); void SetupFPSCounter(WindowInfo& info); void SetupOverlay(WindowInfo& info); diff --git a/SDK/include/NDK/Application.inl b/SDK/include/NDK/Application.inl index e01fb2ce4..42139db0c 100644 --- a/SDK/include/NDK/Application.inl +++ b/SDK/include/NDK/Application.inl @@ -112,7 +112,6 @@ namespace Ndk } m_overlayFlags |= OverlayFlags_Console; - } else { diff --git a/SDK/include/NDK/BaseWidget.hpp b/SDK/include/NDK/BaseWidget.hpp index 12ab85cd1..8bdd15584 100644 --- a/SDK/include/NDK/BaseWidget.hpp +++ b/SDK/include/NDK/BaseWidget.hpp @@ -26,8 +26,6 @@ namespace Ndk friend Canvas; public: - struct Padding; - BaseWidget(BaseWidget* parent); BaseWidget(const BaseWidget&) = delete; BaseWidget(BaseWidget&&) = delete; @@ -41,54 +39,79 @@ namespace Ndk inline void CenterVertical(); void ClearFocus(); + inline void ClearRenderingRect(); void Destroy(); 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 const Nz::Rectf& GetRenderingRect() 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); + void SetParent(BaseWidget* widget); + + 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); + + virtual void SetRenderingRect(const Nz::Rectf& renderingRect); 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(); void InvalidateNode() override; + Nz::Rectf GetScissorRect() const; + virtual bool IsFocusable() const; virtual void OnFocusLost(); virtual void OnFocusReceived(); @@ -98,14 +121,17 @@ namespace Ndk virtual void OnMouseMoved(int x, int y, int deltaX, int deltaY); virtual void OnMouseButtonPress(int x, int y, Nz::Mouse::Button button); virtual void OnMouseButtonRelease(int x, int y, Nz::Mouse::Button button); + virtual void OnMouseWheelMoved(int x, int y, float delta); virtual void OnMouseExit(); 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 +143,10 @@ namespace Ndk struct WidgetEntity { EntityOwner handle; - bool isContent; + bool isEnabled = true; + + NazaraSlot(Ndk::Entity, OnEntityDisabled, onDisabledSlot); + NazaraSlot(Ndk::Entity, OnEntityEnabled, onEnabledSlot); }; static constexpr std::size_t InvalidCanvasIndex = std::numeric_limits::max(); @@ -127,12 +156,15 @@ namespace Ndk std::vector> m_children; Canvas* m_canvas; EntityOwner m_backgroundEntity; - Padding m_padding; WorldHandle m_world; Nz::Color m_backgroundColor; + Nz::Rectf m_renderingRect; 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..edff81436 100644 --- a/SDK/include/NDK/BaseWidget.inl +++ b/SDK/include/NDK/BaseWidget.inl @@ -5,6 +5,7 @@ #include #include #include +#include namespace Ndk { @@ -12,12 +13,15 @@ namespace Ndk m_canvasIndex(InvalidCanvasIndex), m_canvas(nullptr), m_backgroundColor(Nz::Color(230, 230, 230, 255)), + m_renderingRect(-std::numeric_limits::infinity(), -std::numeric_limits::infinity(), std::numeric_limits::infinity(), std::numeric_limits::infinity()), m_cursor(Nz::SystemCursor_Default), - m_contentSize(50.f, 50.f), + m_maximumSize(std::numeric_limits::infinity()), + m_minimumSize(0.f), + m_preferredSize(-1), + m_size(50.f, 50.f), m_widgetParent(nullptr), m_visible(true) { - SetPadding(5.f, 5.f, 5.f, 5.f); } template @@ -64,6 +68,25 @@ namespace Ndk SetPosition(GetPosition(Nz::CoordSys_Local).x, (parentSize.y - mySize.y) / 2.f); } + inline void BaseWidget::ClearRenderingRect() + { + SetRenderingRect(Nz::Rectf(-std::numeric_limits::infinity(), -std::numeric_limits::infinity(), std::numeric_limits::infinity(), std::numeric_limits::infinity())); + } + + 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 +102,74 @@ 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 const Nz::Rectf& BaseWidget::GetRenderingRect() const + { + return m_renderingRect; } 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 +177,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..26cc36cbd 100644 --- a/SDK/include/NDK/Canvas.hpp +++ b/SDK/include/NDK/Canvas.hpp @@ -28,11 +28,12 @@ namespace Ndk inline const WorldHandle& GetWorld() const; - void ResizeToContent() override; - Canvas& operator=(const Canvas&) = delete; Canvas& operator=(Canvas&&) = delete; + NazaraSignal(OnUnhandledKeyPressed, const Nz::EventHandler* /*eventHandler*/, const Nz::WindowEvent::KeyEvent& /*event*/); + NazaraSignal(OnUnhandledKeyReleased, const Nz::EventHandler* /*eventHandler*/, const Nz::WindowEvent::KeyEvent& /*event*/); + protected: inline void ClearKeyboardOwner(std::size_t canvasIndex); @@ -50,8 +51,9 @@ namespace Ndk private: void OnEventMouseButtonPressed(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::MouseButtonEvent& event); void OnEventMouseButtonRelease(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::MouseButtonEvent& event); - void OnEventMouseMoved(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::MouseMoveEvent& event); void OnEventMouseLeft(const Nz::EventHandler* eventHandler); + void OnEventMouseMoved(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::MouseMoveEvent& event); + void OnEventMouseWheelMoved(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::MouseWheelEvent& event); void OnEventKeyPressed(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::KeyEvent& event); void OnEventKeyReleased(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::KeyEvent& event); void OnEventTextEntered(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::TextEvent& event); @@ -67,8 +69,9 @@ namespace Ndk NazaraSlot(Nz::EventHandler, OnKeyReleased, m_keyReleasedSlot); NazaraSlot(Nz::EventHandler, OnMouseButtonPressed, m_mouseButtonPressedSlot); NazaraSlot(Nz::EventHandler, OnMouseButtonReleased, m_mouseButtonReleasedSlot); - NazaraSlot(Nz::EventHandler, OnMouseMoved, m_mouseMovedSlot); NazaraSlot(Nz::EventHandler, OnMouseLeft, m_mouseLeftSlot); + NazaraSlot(Nz::EventHandler, OnMouseMoved, m_mouseMovedSlot); + NazaraSlot(Nz::EventHandler, OnMouseWheelMoved, m_mouseWheelMovedSlot); NazaraSlot(Nz::EventHandler, OnTextEntered, m_textEnteredSlot); std::size_t m_keyboardOwner; diff --git a/SDK/include/NDK/Canvas.inl b/SDK/include/NDK/Canvas.inl index 7ac84a45d..0e1cb38f5 100644 --- a/SDK/include/NDK/Canvas.inl +++ b/SDK/include/NDK/Canvas.inl @@ -24,12 +24,10 @@ namespace Ndk m_keyReleasedSlot.Connect(eventHandler.OnKeyReleased, this, &Canvas::OnEventKeyReleased); m_mouseButtonPressedSlot.Connect(eventHandler.OnMouseButtonPressed, this, &Canvas::OnEventMouseButtonPressed); m_mouseButtonReleasedSlot.Connect(eventHandler.OnMouseButtonReleased, this, &Canvas::OnEventMouseButtonRelease); - m_mouseMovedSlot.Connect(eventHandler.OnMouseMoved, this, &Canvas::OnEventMouseMoved); m_mouseLeftSlot.Connect(eventHandler.OnMouseLeft, this, &Canvas::OnEventMouseLeft); + m_mouseMovedSlot.Connect(eventHandler.OnMouseMoved, this, &Canvas::OnEventMouseMoved); + m_mouseWheelMovedSlot.Connect(eventHandler.OnMouseWheelMoved, this, &Canvas::OnEventMouseWheelMoved); m_textEnteredSlot.Connect(eventHandler.OnTextEntered, this, &Canvas::OnEventTextEntered); - - // Disable padding by default - SetPadding(0.f, 0.f, 0.f, 0.f); } inline Canvas::~Canvas() @@ -61,7 +59,7 @@ namespace Ndk { WidgetEntry& entry = m_widgetEntries[index]; - Nz::Vector3f pos = entry.widget->GetPosition(); + Nz::Vector3f pos = entry.widget->GetPosition(Nz::CoordSys_Global); Nz::Vector2f size = entry.widget->GetSize(); entry.box.Set(pos.x, pos.y, pos.z, size.x, size.y, 1.f); 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.hpp b/SDK/include/NDK/Components.hpp index 97c15fc7c..cc8c37d93 100644 --- a/SDK/include/NDK/Components.hpp +++ b/SDK/include/NDK/Components.hpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include diff --git a/SDK/include/NDK/Components/CameraComponent.hpp b/SDK/include/NDK/Components/CameraComponent.hpp index e9a4de2da..cf835704a 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(); @@ -43,6 +43,7 @@ namespace Ndk const Nz::Frustumf& GetFrustum() const override; inline unsigned int GetLayer() const; const Nz::Matrix4f& GetProjectionMatrix() const override; + inline const Nz::Vector3f& GetProjectionScale() const; Nz::ProjectionType GetProjectionType() const override; inline const Nz::Vector2f& GetSize() const; const Nz::RenderTarget* GetTarget() const override; @@ -54,6 +55,7 @@ namespace Ndk inline void SetFOV(float fov); void SetLayer(unsigned int layer); + inline void SetProjectionScale(const Nz::Vector3f& scale); inline void SetProjectionType(Nz::ProjectionType projection); inline void SetSize(const Nz::Vector2f& size); inline void SetSize(float width, float height); @@ -99,6 +101,7 @@ namespace Ndk mutable Nz::Recti m_viewport; const Nz::RenderTarget* m_target; Nz::Vector2f m_size; + Nz::Vector3f m_projectionScale; mutable bool m_frustumUpdated; mutable bool m_projectionMatrixUpdated; mutable bool m_viewMatrixUpdated; diff --git a/SDK/include/NDK/Components/CameraComponent.inl b/SDK/include/NDK/Components/CameraComponent.inl index 4baad5225..e059a68b1 100644 --- a/SDK/include/NDK/Components/CameraComponent.inl +++ b/SDK/include/NDK/Components/CameraComponent.inl @@ -17,6 +17,7 @@ namespace Ndk m_targetRegion(0.f, 0.f, 1.f, 1.f), m_target(nullptr), m_size(0.f), + m_projectionScale(1.f, 1.f, 1.f), m_frustumUpdated(false), m_projectionMatrixUpdated(false), m_viewMatrixUpdated(false), @@ -38,12 +39,12 @@ 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), m_target(nullptr), m_size(camera.m_size), + m_projectionScale(camera.m_projectionScale), m_frustumUpdated(false), m_projectionMatrixUpdated(false), m_viewMatrixUpdated(false), @@ -116,11 +117,19 @@ namespace Ndk return m_layer; } + /*! + * \brief Gets the projection scale of the camera + * \return Projection scale + */ + const Nz::Vector3f& CameraComponent::GetProjectionScale() const + { + return m_projectionScale; + } + /*! * \brief Gets the size of the camera * \return Size of the camera */ - inline const Nz::Vector2f & CameraComponent::GetSize() const { return m_size; @@ -152,12 +161,23 @@ namespace Ndk InvalidateProjectionMatrix(); } + /*! + * \brief Sets the camera projection scale + * + * \param scale New projection scale + */ + inline void CameraComponent::SetProjectionScale(const Nz::Vector3f& scale) + { + m_projectionScale = scale; + + InvalidateProjectionMatrix(); + } + /*! * \brief Sets the projection type of the camera * * \param projectionType Projection type of the camera */ - inline void CameraComponent::SetProjectionType(Nz::ProjectionType projectionType) { m_projectionType = projectionType; diff --git a/SDK/include/NDK/Components/CollisionComponent2D.hpp b/SDK/include/NDK/Components/CollisionComponent2D.hpp index 6908c2bef..a5da3b8c2 100644 --- a/SDK/include/NDK/Components/CollisionComponent2D.hpp +++ b/SDK/include/NDK/Components/CollisionComponent2D.hpp @@ -14,10 +14,15 @@ namespace Ndk { + class CollisionComponent2D; + + using CollisionComponent2DHandle = Nz::ObjectHandle; + class NDK_API CollisionComponent2D : public Component { - friend class PhysicsSystem2D; friend class ConstraintComponent2D; + friend class PhysicsComponent2D; + friend class PhysicsSystem2D; public: CollisionComponent2D(Nz::Collider2DRef geom = Nz::Collider2DRef()); @@ -26,8 +31,12 @@ namespace Ndk Nz::Rectf GetAABB() const; const Nz::Collider2DRef& GetGeom() const; + const Nz::Vector2f& GetGeomOffset() const; + + void Recenter(const Nz::Vector2f& origin); void SetGeom(Nz::Collider2DRef geom); + void SetGeomOffset(const Nz::Vector2f& geomOffset); CollisionComponent2D& operator=(Nz::Collider2DRef geom); CollisionComponent2D& operator=(CollisionComponent2D&& collision) = default; @@ -36,7 +45,10 @@ namespace Ndk private: void InitializeStaticBody(); + Nz::RigidBody2D* GetRigidBody(); + const Nz::RigidBody2D* GetRigidBody() const; Nz::RigidBody2D* GetStaticBody(); + const Nz::RigidBody2D* GetStaticBody() const; void OnAttached() override; void OnComponentAttached(BaseComponent& component) override; diff --git a/SDK/include/NDK/Components/CollisionComponent2D.inl b/SDK/include/NDK/Components/CollisionComponent2D.inl index b85fe3017..1bc9f0978 100644 --- a/SDK/include/NDK/Components/CollisionComponent2D.inl +++ b/SDK/include/NDK/Components/CollisionComponent2D.inl @@ -28,16 +28,6 @@ namespace Ndk { } - /*! - * \brief Gets the collision box representing the entity - * \return The physics collision box - */ - - inline Nz::Rectf CollisionComponent2D::GetAABB() const - { - return m_staticBody->GetAABB(); - } - /*! * \brief Gets the geometry representing the entity * \return A constant reference to the physics geometry @@ -62,13 +52,13 @@ namespace Ndk return *this; } - /*! - * \brief Gets the static body used by the entity - * \return A pointer to the entity - */ - inline Nz::RigidBody2D* CollisionComponent2D::GetStaticBody() { return m_staticBody.get(); } + + inline const Nz::RigidBody2D* CollisionComponent2D::GetStaticBody() const + { + return m_staticBody.get(); + } } 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..652559481 100644 --- a/SDK/include/NDK/Components/ConstraintComponent2D.hpp +++ b/SDK/include/NDK/Components/ConstraintComponent2D.hpp @@ -1,30 +1,47 @@ +// Copyright (C) 2019 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_COMPONENTS_CONSTRAINTCOMPONENT2D_HPP #define NDK_COMPONENTS_CONSTRAINTCOMPONENT2D_HPP -#include #include #include -#include +#include +#include #include +#include namespace Ndk { + class ConstraintComponent2D; + + using ConstraintComponent2DHandle = Nz::ObjectHandle; + class NDK_API ConstraintComponent2D : public Component { public: ConstraintComponent2D() = default; - ConstraintComponent2D(const ConstraintComponent2D& joint) = default; + ConstraintComponent2D(const ConstraintComponent2D& joint); ConstraintComponent2D(ConstraintComponent2D&& joint) = default; - template inline Nz::ObjectRef CreateConstraint(const Ndk::EntityHandle& first, const Ndk::EntityHandle& second, Args&&... args); - + template T* CreateConstraint(const Ndk::EntityHandle& first, const Ndk::EntityHandle& second, Args&&... args); + bool RemoveConstraint(Nz::Constraint2D* constraint); + static ComponentIndex componentIndex; private: + struct ConstraintData + { + std::unique_ptr constraint; - std::vector m_constraints; + NazaraSlot(Ndk::Entity, OnEntityDestruction, onBodyADestruction); + NazaraSlot(Ndk::Entity, OnEntityDestruction, onBodyBDestruction); + }; + + std::vector m_constraints; }; } diff --git a/SDK/include/NDK/Components/ConstraintComponent2D.inl b/SDK/include/NDK/Components/ConstraintComponent2D.inl index 51e64ba6e..5db943439 100644 --- a/SDK/include/NDK/Components/ConstraintComponent2D.inl +++ b/SDK/include/NDK/Components/ConstraintComponent2D.inl @@ -1,3 +1,7 @@ +// Copyright (C) 2019 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 @@ -5,7 +9,7 @@ namespace Ndk { template - Nz::ObjectRef ConstraintComponent2D::CreateConstraint(const Ndk::EntityHandle& first, const Ndk::EntityHandle& second, Args && ...args) + T* ConstraintComponent2D::CreateConstraint(const Ndk::EntityHandle& first, const Ndk::EntityHandle& second, Args&& ...args) { auto FetchBody = [](const Ndk::EntityHandle& entity) -> Nz::RigidBody2D* { @@ -23,9 +27,20 @@ namespace Ndk Nz::RigidBody2D* secondBody = FetchBody(second); NazaraAssert(secondBody, "Second entity has no CollisionComponent2D nor PhysicsComponent2D component"); - Nz::ObjectRef constraint = T::New(*firstBody, *secondBody, std::forward(args)...); - m_constraints.push_back(constraint); + m_constraints.emplace_back(); + auto& constraintData = m_constraints.back(); + constraintData.constraint = std::make_unique(*firstBody, *secondBody, std::forward(args)...); - return constraint; + constraintData.onBodyADestruction.Connect(first->OnEntityDestruction, [this, constraint = constraintData.constraint.get()](const Ndk::Entity* /*entity*/) + { + RemoveConstraint(constraint); + }); + + constraintData.onBodyBDestruction.Connect(second->OnEntityDestruction, [this, constraint = constraintData.constraint.get()](const Ndk::Entity* /*entity*/) + { + RemoveConstraint(constraint); + }); + + return static_cast(constraintData.constraint.get()); } } diff --git a/SDK/include/NDK/Components/DebugComponent.hpp b/SDK/include/NDK/Components/DebugComponent.hpp index 85e868b5a..e0993d26d 100644 --- a/SDK/include/NDK/Components/DebugComponent.hpp +++ b/SDK/include/NDK/Components/DebugComponent.hpp @@ -16,7 +16,7 @@ namespace Ndk { enum class DebugDraw { - //TODO: Collider2D + Collider2D, Collider3D, GraphicsAABB, GraphicsOBB, @@ -40,6 +40,11 @@ namespace Ndk constexpr DebugDrawFlags DebugDraw_None = 0; + class DebugComponent; + class GraphicsComponent; + + using DebugComponentHandle = Nz::ObjectHandle; + class NDK_API DebugComponent : public Component { friend class DebugSystem; @@ -61,8 +66,14 @@ namespace Ndk static ComponentIndex componentIndex; private: + void DetachDebugRenderables(GraphicsComponent& gfxComponent); + inline const Nz::InstancedRenderableRef& GetDebugRenderable(DebugDraw option) const; inline DebugDrawFlags GetEnabledFlags() const; + + void OnComponentDetached(BaseComponent& component) override; + void OnDetached() override; + inline void UpdateDebugRenderable(DebugDraw option, Nz::InstancedRenderableRef renderable); inline void UpdateEnabledFlags(DebugDrawFlags flags); diff --git a/SDK/include/NDK/Components/GraphicsComponent.hpp b/SDK/include/NDK/Components/GraphicsComponent.hpp index 3e7b05def..e7780f3e0 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 @@ -21,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; @@ -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); @@ -44,15 +46,19 @@ 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 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; @@ -68,7 +74,8 @@ namespace Ndk void ConnectInstancedRenderableSignals(Renderable& renderable); - inline void InvalidateBoundingVolume() const; + 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); inline void InvalidateRenderables(); @@ -89,11 +96,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 +144,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 adf653351..37bbd1049 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.inl +++ b/SDK/include/NDK/Components/GraphicsComponent.inl @@ -22,11 +22,11 @@ namespace Ndk */ inline GraphicsComponent::GraphicsComponent(const GraphicsComponent& graphicsComponent) : Component(graphicsComponent), - HandledObject(graphicsComponent), m_reflectiveMaterialCount(0), - m_boundingVolume(graphicsComponent.m_boundingVolume), + m_aabb(graphicsComponent.m_aabb), m_transformMatrix(graphicsComponent.m_transformMatrix), - m_boundingVolumeUpdated(graphicsComponent.m_boundingVolumeUpdated), + m_scissorRect(graphicsComponent.m_scissorRect), + m_boundingVolumesUpdated(graphicsComponent.m_boundingVolumesUpdated), m_transformMatrixUpdated(graphicsComponent.m_transformMatrixUpdated) { m_renderables.reserve(graphicsComponent.m_renderables.size()); @@ -36,12 +36,12 @@ namespace Ndk inline void GraphicsComponent::AddToCullingList(GraphicsComponentCullingList* cullingList) const { - m_volumeCullingEntries.emplace_back(VolumeCullingEntry{}); - 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(); } /*! @@ -70,7 +70,7 @@ namespace Ndk InvalidateReflectionMap(); } - InvalidateBoundingVolume(); + InvalidateAABB(); } /*! @@ -85,13 +85,15 @@ namespace Ndk { if (it->renderable == renderable) { - InvalidateBoundingVolume(); + InvalidateAABB(); std::size_t materialCount = renderable->GetMaterialCount(); for (std::size_t i = 0; i < materialCount; ++i) UnregisterMaterial(renderable->GetMaterial(i)); m_renderables.erase(it); + + ForceCullingInvalidation(); break; } } @@ -109,26 +111,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(); } /*! @@ -141,6 +131,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 * @@ -168,28 +169,50 @@ 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; + } + + 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 + * + * \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; } } @@ -199,7 +222,7 @@ namespace Ndk { m_scissorRect = scissorRect; - for (VolumeCullingEntry& entry : m_volumeCullingEntries) + for (CullingBoxEntry& entry : m_cullingBoxEntries) entry.listEntry.ForceInvalidation(); //< Invalidate render queues } @@ -211,7 +234,7 @@ namespace Ndk { renderable.data.localMatrix = localMatrix; - InvalidateBoundingVolume(); + InvalidateAABB(); break; } } @@ -233,9 +256,15 @@ namespace Ndk * \brief Invalidates the bounding volume */ - inline void GraphicsComponent::InvalidateBoundingVolume() const + inline void GraphicsComponent::ForceCullingInvalidation() { - m_boundingVolumeUpdated = false; + for (CullingBoxEntry& entry : m_cullingBoxEntries) + entry.listEntry.ForceInvalidation(); //< Invalidate render queues + } + + inline void GraphicsComponent::InvalidateAABB() const + { + m_boundingVolumesUpdated = false; } /*! @@ -256,7 +285,7 @@ namespace Ndk { m_transformMatrixUpdated = false; - InvalidateBoundingVolume(); + InvalidateAABB(); InvalidateRenderables(); } } diff --git a/SDK/include/NDK/Components/LifetimeComponent.hpp b/SDK/include/NDK/Components/LifetimeComponent.hpp new file mode 100644 index 000000000..72004a90d --- /dev/null +++ b/SDK/include/NDK/Components/LifetimeComponent.hpp @@ -0,0 +1,40 @@ +// 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_COMPONENTS_LIFETIMECOMPONENT_HPP +#define NDK_COMPONENTS_LIFETIMECOMPONENT_HPP + +#include + +namespace Ndk +{ + class LifetimeComponent; + + using LifetimeComponentHandle = Nz::ObjectHandle; + + class NDK_API LifetimeComponent : public Component + { + friend class LifetimeSystem; + + public: + inline LifetimeComponent(float lifetime); + LifetimeComponent(const LifetimeComponent&) = default; + ~LifetimeComponent() = default; + + inline float GetRemainingTime() const; + + static ComponentIndex componentIndex; + + private: + inline bool UpdateLifetime(float elapsedTime); + + float m_lifetime; + }; +} + +#include + +#endif // NDK_COMPONENTS_LIFETIMECOMPONENT_HPP diff --git a/SDK/include/NDK/Components/LifetimeComponent.inl b/SDK/include/NDK/Components/LifetimeComponent.inl new file mode 100644 index 000000000..145e160ba --- /dev/null +++ b/SDK/include/NDK/Components/LifetimeComponent.inl @@ -0,0 +1,24 @@ +// 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 LifetimeComponent::LifetimeComponent(float lifetime) : + m_lifetime(lifetime) + { + } + + inline float Ndk::LifetimeComponent::GetRemainingTime() const + { + return m_lifetime; + } + + inline bool LifetimeComponent::UpdateLifetime(float elapsedTime) + { + m_lifetime -= elapsedTime; + return m_lifetime < 0.f; + } +} 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 efd30602a..3983c26a5 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; @@ -20,39 +24,75 @@ namespace Ndk friend class ConstraintComponent2D; public: - PhysicsComponent2D() = default; + using VelocityFunc = Nz::RigidBody2D::VelocityFunc; + + PhysicsComponent2D(); 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(const Nz::RadianAnglef& 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 void EnableNodeSynchronization(bool nodeSynchronization); - bool IsSleeping() const; + inline void ForceSleep(); + inline void ForEachArbiter(const std::function& callback); - 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 Nz::Rectf GetAABB() const; + inline float GetAngularDamping() 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 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; + const VelocityFunc& GetVelocityFunction() const; + + inline bool IsNodeSynchronizationEnabled() const; + inline bool IsSleeping() const; + inline bool IsValid() const; + + inline void ResetVelocityFunction(); + + 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, 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); + 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); + inline void SetVelocityFunction(VelocityFunc velocityFunc); + + inline void UpdateVelocity(const Nz::Vector2f& gravity, float damping, float deltaTime); + + inline void Wakeup(); static ComponentIndex componentIndex; private: + inline void ApplyPhysicsState(Nz::RigidBody2D& rigidBody) const; + inline void CopyPhysicsState(const Nz::RigidBody2D& rigidBody); Nz::RigidBody2D* GetRigidBody(); + const Nz::RigidBody2D* GetRigidBody() const; void OnAttached() override; void OnComponentAttached(BaseComponent& component) override; @@ -60,7 +100,28 @@ namespace Ndk void OnDetached() override; void OnEntityDestruction() override; + struct PendingPhysObjectStates + { + struct ShapeStates + { + Nz::Vector2f surfaceVelocity; + float elasticity; + float friction; + }; + + VelocityFunc velocityFunc; + std::vector shapes; + Nz::RadianAnglef angularVelocity; + Nz::Vector2f massCenter; + Nz::Vector2f velocity; + bool valid = false; + float mass; + float momentOfInertia; + }; + std::unique_ptr m_object; + PendingPhysObjectStates m_pendingStates; + bool m_nodeSynchronizationEnabled; }; } diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.inl b/SDK/include/NDK/Components/PhysicsComponent2D.inl index b6628467d..6e0b0b10f 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.inl +++ b/SDK/include/NDK/Components/PhysicsComponent2D.inl @@ -7,16 +7,22 @@ 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) - NazaraUnused(physics); + CopyPhysicsState(*physics.GetRigidBody()); } /*! @@ -91,7 +97,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"); @@ -115,6 +121,41 @@ 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(); + } + + /*! + TODO + */ + inline void PhysicsComponent2D::ForceSleep() + { + NazaraAssert(m_object, "Invalid physics object"); + + return m_object->ForceSleep(); + } + + /*! + TODO + */ + inline void PhysicsComponent2D::ForEachArbiter(const std::function& callback) + { + NazaraAssert(m_object, "Invalid physics object"); + + return m_object->ForEachArbiter(callback); + } /*! * \brief Gets the AABB of the physics object * \return AABB of the object @@ -128,6 +169,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 @@ -135,7 +192,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"); @@ -155,7 +212,37 @@ namespace Ndk { NazaraAssert(m_object, "Invalid physics object"); - return m_object->GetCenterOfGravity(coordSys); + 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); } /*! @@ -164,7 +251,6 @@ namespace Ndk * * \remark Produces a NazaraAssert if the physics object is invalid */ - inline float PhysicsComponent2D::GetMass() const { NazaraAssert(m_object, "Invalid physics object"); @@ -172,6 +258,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 @@ -192,21 +310,43 @@ 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"); 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 * * \remark Produces a NazaraAssert if the physics object is invalid */ - inline Nz::Vector2f PhysicsComponent2D::GetVelocity() const { NazaraAssert(m_object, "Invalid physics object"); @@ -214,13 +354,36 @@ namespace Ndk return m_object->GetVelocity(); } + /*! + * \brief Gets the custom velocity function of the physics object + * \return Velocity function of the object (may be empty if default function is used) + * + * \remark Produces a NazaraAssert if the physics object is invalid + */ + inline auto PhysicsComponent2D::GetVelocityFunction() const -> const VelocityFunc& + { + NazaraAssert(m_object, "Invalid physics object"); + + return m_object->GetVelocityFunction(); + } + + /*! + * \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"); @@ -228,6 +391,47 @@ namespace Ndk return m_object->IsSleeping(); } + /*! + * \brief Checks if this component is bound to a valid rigid body + * + * A component may not be bound to a rigid body if the component is not bound to an entity or if this entity is being destroyed + * + * \return true If bound, false otherwise + */ + inline bool PhysicsComponent2D::IsValid() const + { + return bool(m_object); + } + + /*! + * \brief Reset velocity function to default one + * + * \remark Produces a NazaraAssert if the physics object is invalid + */ + inline void PhysicsComponent2D::ResetVelocityFunction() + { + NazaraAssert(m_object, "Invalid physics object"); + + return m_object->ResetVelocityFunction(); + } + + /*! + * \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 * @@ -235,29 +439,93 @@ 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"); 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 * * \param mass Mass of the object + * \param recomputeMoment Should the moment of inertia be recomputed according to the new mass * - * \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) + inline void PhysicsComponent2D::SetMass(float mass, bool recomputeMoment) { 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); + m_object->SetMass(mass, recomputeMoment); } /*! @@ -267,12 +535,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); } /*! @@ -282,7 +565,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"); @@ -297,22 +579,45 @@ 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"); 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"); @@ -320,13 +625,101 @@ namespace Ndk m_object->SetVelocity(velocity); } + /*! + * \brief Sets a custom velocity function for the physics object + * + * A velocity function is called (for non-kinematic and non-static objects) at every physics update to compute the new velocity of the object. + * You may call UpdateVelocity (the default velocity function) to let the physics engine compute that itself and then adjust it using GetVelocity/SetVelocity as you need. + * + * \param velocityFunc New custom velocity function + * + * \remark Passing an empty VelocityFunc has the same effect as calling ResetVelocityFunction + * \see ResetVelocityFunction + * \see UpdateVelocity + */ + inline void PhysicsComponent2D::SetVelocityFunction(VelocityFunc velocityFunc) + { + NazaraAssert(m_object, "Invalid physics object"); + + m_object->SetVelocityFunction(std::move(velocityFunc)); + } + + /*! + * \brief Calls the physics engine default velocity function + * + * \param gravity Physics system gravity + * \param damping Physics system damping (adjusted to deltaTime) + * \param deltaTime Elapsed time since last physics update + */ + inline void PhysicsComponent2D::UpdateVelocity(const Nz::Vector2f& gravity, float damping, float deltaTime) + { + NazaraAssert(m_object, "Invalid physics object"); + + m_object->UpdateVelocity(gravity, damping, deltaTime); + } + + /*! + TODO + */ + inline void PhysicsComponent2D::Wakeup() + { + NazaraAssert(m_object, "Invalid physics object"); + + return m_object->Wakeup(); + } + + inline void PhysicsComponent2D::ApplyPhysicsState(Nz::RigidBody2D& rigidBody) const + { + assert(m_pendingStates.valid); + + rigidBody.SetAngularVelocity(m_pendingStates.angularVelocity); + rigidBody.SetMass(m_pendingStates.mass); + rigidBody.SetMassCenter(m_pendingStates.massCenter); + rigidBody.SetMomentOfInertia(m_pendingStates.momentOfInertia); + rigidBody.SetVelocity(m_pendingStates.velocity); + rigidBody.SetVelocityFunction(m_pendingStates.velocityFunc); + + for (std::size_t i = 0; i < m_pendingStates.shapes.size(); ++i) + { + auto& shapeData = m_pendingStates.shapes[i]; + rigidBody.SetElasticity(i, shapeData.elasticity); + rigidBody.SetFriction(i, shapeData.friction); + rigidBody.SetSurfaceVelocity(i, shapeData.surfaceVelocity); + } + } + + inline void PhysicsComponent2D::CopyPhysicsState(const Nz::RigidBody2D& rigidBody) + { + m_pendingStates.valid = true; + + m_pendingStates.angularVelocity = rigidBody.GetAngularVelocity(); + m_pendingStates.mass = rigidBody.GetMass(); + m_pendingStates.massCenter = rigidBody.GetMassCenter(); + m_pendingStates.momentOfInertia = rigidBody.GetMomentOfInertia(); + m_pendingStates.velocity = rigidBody.GetVelocity(); + m_pendingStates.velocityFunc = rigidBody.GetVelocityFunction(); + + m_pendingStates.shapes.resize(rigidBody.GetShapeCount()); + for (std::size_t i = 0; i < m_pendingStates.shapes.size(); ++i) + { + auto& shapeData = m_pendingStates.shapes[i]; + shapeData.elasticity = rigidBody.GetElasticity(i); + shapeData.friction = rigidBody.GetFriction(i); + shapeData.surfaceVelocity = rigidBody.GetSurfaceVelocity(i); + } + } + /*! * \brief Gets the underlying physics object * \return A reference to the physics object */ - inline Nz::RigidBody2D* PhysicsComponent2D::GetRigidBody() { return m_object.get(); } + + inline const Nz::RigidBody2D* PhysicsComponent2D::GetRigidBody() const + { + return m_object.get(); + } } diff --git a/SDK/include/NDK/Components/PhysicsComponent3D.hpp b/SDK/include/NDK/Components/PhysicsComponent3D.hpp index 98e36079a..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; @@ -23,49 +27,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/Components/VelocityComponent.hpp b/SDK/include/NDK/Components/VelocityComponent.hpp index 6497fd61a..2c619da76 100644 --- a/SDK/include/NDK/Components/VelocityComponent.hpp +++ b/SDK/include/NDK/Components/VelocityComponent.hpp @@ -16,13 +16,14 @@ 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()); + VelocityComponent(const Nz::Vector3f& velocity = Nz::Vector3f::Zero(), Nz::CoordSys coordSystem = Nz::CoordSys_Global); ~VelocityComponent() = default; Nz::Vector3f linearVelocity; + Nz::CoordSys coordSys; VelocityComponent& operator=(const Nz::Vector3f& vel); diff --git a/SDK/include/NDK/Components/VelocityComponent.inl b/SDK/include/NDK/Components/VelocityComponent.inl index 3ca449132..2adedf413 100644 --- a/SDK/include/NDK/Components/VelocityComponent.inl +++ b/SDK/include/NDK/Components/VelocityComponent.inl @@ -16,8 +16,9 @@ namespace Ndk * \param velocity Linear velocity */ - inline VelocityComponent::VelocityComponent(const Nz::Vector3f& velocity) : - linearVelocity(velocity) + inline VelocityComponent::VelocityComponent(const Nz::Vector3f& velocity, Nz::CoordSys coordSystem) : + linearVelocity(velocity), + coordSys(coordSystem) { } diff --git a/SDK/include/NDK/Console.hpp b/SDK/include/NDK/Console.hpp index 728cbcbb0..3b4dbbe39 100644 --- a/SDK/include/NDK/Console.hpp +++ b/SDK/include/NDK/Console.hpp @@ -14,24 +14,29 @@ #include #include #include +#include #include namespace Nz { - class LuaState; struct WindowEvent; } namespace Ndk { + class AbstractTextAreaWidget; class Console; + class Entity; + class RichTextAreaWidget; + class ScrollAreaWidget; + class TextAreaWidget; using ConsoleHandle = Nz::ObjectHandle; - class NDK_API Console : public Nz::Node, public Nz::HandledObject + class NDK_API Console : public BaseWidget, public Nz::HandledObject { public: - Console(World& world, const Nz::Vector2f& size, Nz::LuaState& state); + Console(BaseWidget* parent); Console(const Console& console) = delete; Console(Console&& console) = default; ~Console() = default; @@ -39,34 +44,25 @@ namespace Ndk void AddLine(const Nz::String& text, const Nz::Color& color = Nz::Color::White); void Clear(); + void ClearFocus(); inline unsigned int GetCharacterSize() const; - inline const EntityHandle& GetHistory() const; - inline const EntityHandle& GetHistoryBackground() const; - inline const EntityHandle& GetInput() const; - inline const EntityHandle& GetInputBackground() const; - inline const Nz::Vector2f& GetSize() const; + inline const RichTextAreaWidget* GetHistory() const; + inline const TextAreaWidget* GetInput() const; inline const Nz::FontRef& GetTextFont() const; - inline bool IsVisible() const; - - void SendCharacter(char32_t character); - void SendEvent(const Nz::WindowEvent& event); - void SetCharacterSize(unsigned int size); - void SetSize(const Nz::Vector2f& size); + void SetFocus(); void SetTextFont(Nz::FontRef font); - void Show(bool show = true); - Console& operator=(const Console& console) = delete; Console& operator=(Console&& console) = default; + NazaraSignal(OnCommand, Console* /*console*/, const Nz::String& /*command*/); + private: - void AddLineInternal(const Nz::String& text, const Nz::Color& color = Nz::Color::White); - void ExecuteInput(); - void Layout(); - void RefreshHistory(); + void ExecuteInput(const AbstractTextAreaWidget* textArea, bool* ignoreDefaultAction); + void Layout() override; struct Line { @@ -77,20 +73,10 @@ namespace Ndk std::size_t m_historyPosition; std::vector m_commandHistory; std::vector m_historyLines; - EntityOwner m_historyBackground; - EntityOwner m_history; - EntityOwner m_input; - EntityOwner m_inputBackground; + ScrollAreaWidget* m_historyArea; + RichTextAreaWidget* m_history; + TextAreaWidget* m_input; Nz::FontRef m_defaultFont; - Nz::LuaState& m_state; - Nz::SpriteRef m_historyBackgroundSprite; - Nz::SpriteRef m_inputBackgroundSprite; - Nz::SimpleTextDrawer m_historyDrawer; - Nz::SimpleTextDrawer m_inputDrawer; - Nz::TextSpriteRef m_historyTextSprite; - Nz::TextSpriteRef m_inputTextSprite; - Nz::Vector2f m_size; - bool m_opened; unsigned int m_characterSize; unsigned int m_maxHistoryLines; }; diff --git a/SDK/include/NDK/Console.inl b/SDK/include/NDK/Console.inl index 746616ffd..3cd318ae3 100644 --- a/SDK/include/NDK/Console.inl +++ b/SDK/include/NDK/Console.inl @@ -19,51 +19,21 @@ namespace Ndk * \return History of the console */ - inline const EntityHandle& Console::GetHistory() const + inline const RichTextAreaWidget* Console::GetHistory() const { return m_history; } - /*! - * \brief Gets the entity representing the background of the console's history - * \return Background history of the console - */ - - inline const EntityHandle& Console::GetHistoryBackground() const - { - return m_historyBackground; - } - /*! * \brief Gets the entity representing the input of the console * \return Input of the console */ - inline const EntityHandle& Console::GetInput() const + inline const TextAreaWidget* Console::GetInput() const { return m_input; } - /*! - * \brief Gets the entity representing the background of the console's input - * \return Background input of the console - */ - - inline const EntityHandle& Console::GetInputBackground() const - { - return m_inputBackground; - } - - /*! - * \brief Gets the size of the console - * \return Size (Width, Height) of the console - */ - - inline const Nz::Vector2f& Console::GetSize() const - { - return m_size; - } - /*! * \brief Gets the font used by the console * \return A reference to the font currenty used @@ -73,14 +43,4 @@ namespace Ndk { return m_defaultFont; } - - /*! - * \brief Checks whether the console is visible - * \return true If it is the case - */ - - inline bool Console::IsVisible() const - { - return m_opened; - } } diff --git a/SDK/include/NDK/Entity.hpp b/SDK/include/NDK/Entity.hpp index 355028fef..85e43da19 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 @@ -43,6 +43,10 @@ namespace Ndk const EntityHandle& Clone() const; inline void Disable(); + + std::unique_ptr DropComponent(ComponentIndex index); + template std::unique_ptr DropComponent(); + void Enable(bool enable = true); inline BaseComponent& GetComponent(ComponentIndex index); @@ -61,6 +65,7 @@ namespace Ndk void Invalidate(); inline bool IsEnabled() const; + bool IsDying() const; inline bool IsValid() const; inline void RemoveAllComponents(); @@ -73,6 +78,8 @@ namespace Ndk Entity& operator=(Entity&&) = delete; NazaraSignal(OnEntityDestruction, Entity* /*entity*/); + NazaraSignal(OnEntityDisabled, Entity* /*entity*/); + NazaraSignal(OnEntityEnabled, Entity* /*entity*/); private: Entity(World* world, EntityId id); @@ -80,8 +87,6 @@ namespace Ndk void Create(); void Destroy(); - void DestroyComponent(ComponentIndex index); - inline Nz::Bitset<>& GetRemovedComponentBits(); inline void RegisterEntityList(EntityList* list); diff --git a/SDK/include/NDK/Entity.inl b/SDK/include/NDK/Entity.inl index 7b8fa5736..799384182 100644 --- a/SDK/include/NDK/Entity.inl +++ b/SDK/include/NDK/Entity.inl @@ -64,6 +64,15 @@ namespace Ndk * \remark Produces a NazaraAssert if component is not available in this entity */ + template + std::unique_ptr Entity::DropComponent() + { + static_assert(std::is_base_of::value, "ComponentType is not a component"); + + ComponentIndex index = GetComponentIndex(); + return DropComponent(index); + } + template ComponentType& Entity::GetComponent() { diff --git a/SDK/include/NDK/EntityOwner.hpp b/SDK/include/NDK/EntityOwner.hpp index fb32f0780..84eb95feb 100644 --- a/SDK/include/NDK/EntityOwner.hpp +++ b/SDK/include/NDK/EntityOwner.hpp @@ -15,11 +15,12 @@ namespace Ndk { public: EntityOwner() = default; - explicit EntityOwner(Entity* entity); + EntityOwner(Entity* entity); EntityOwner(const EntityOwner& handle) = delete; 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/SDK/include/NDK/LuaAPI.inl b/SDK/include/NDK/LuaAPI.inl index 318bb6add..01c797e89 100644 --- a/SDK/include/NDK/LuaAPI.inl +++ b/SDK/include/NDK/LuaAPI.inl @@ -125,14 +125,14 @@ namespace Nz state.Pop(); } - mat->Set(values); + *mat = Matrix4d(values); return 1; } default: { if (state.IsOfType(index, "Matrix4")) - mat->Set(*static_cast(state.ToUserdata(index))); + *mat = *static_cast(state.ToUserdata(index)); return 1; } @@ -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)) @@ -384,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); @@ -393,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); @@ -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); @@ -605,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/include/NDK/StateMachine.inl b/SDK/include/NDK/StateMachine.inl index 1b2a625ab..ba2a74928 100644 --- a/SDK/include/NDK/StateMachine.inl +++ b/SDK/include/NDK/StateMachine.inl @@ -159,8 +159,13 @@ namespace Ndk */ inline bool StateMachine::Update(float elapsedTime) { - for (StateTransition& transition : m_transitions) + // Use a classic for instead of a range-for because some state may push/pop on enter/leave, adding new transitions as we iterate + // (range-for is a problem here because it doesn't handle mutable containers) + + for (std::size_t i = 0; i < m_transitions.size(); ++i) { + StateTransition& transition = m_transitions[i]; + switch (transition.type) { case TransitionType::Pop: diff --git a/SDK/include/NDK/Systems.hpp b/SDK/include/NDK/Systems.hpp index 80571ef45..e9a60f0c3 100644 --- a/SDK/include/NDK/Systems.hpp +++ b/SDK/include/NDK/Systems.hpp @@ -6,6 +6,7 @@ #define NDK_SYSTEMS_GLOBAL_HPP #include +#include #include #include #include diff --git a/SDK/include/NDK/Systems/DebugSystem.hpp b/SDK/include/NDK/Systems/DebugSystem.hpp index 940feb782..1d468ea41 100644 --- a/SDK/include/NDK/Systems/DebugSystem.hpp +++ b/SDK/include/NDK/Systems/DebugSystem.hpp @@ -22,26 +22,33 @@ namespace Ndk DebugSystem(); ~DebugSystem() = default; + void EnableDepthBuffer(bool enable); + + inline bool IsDepthBufferEnabled() const; + static SystemIndex systemIndex; private: Nz::InstancedRenderableRef GenerateBox(Nz::Boxf box); + Nz::InstancedRenderableRef GenerateCollision2DMesh(Entity* entity, Nz::Vector3f* offset); Nz::InstancedRenderableRef GenerateCollision3DMesh(Entity* entity); - Nz::MaterialRef GetAABBMaterial(); - Nz::MaterialRef GetCollisionMaterial(); - Nz::MaterialRef GetOBBMaterial(); std::pair GetBoxMesh(); + Nz::MaterialRef GetCollisionMaterial(); + Nz::MaterialRef GetGlobalAABBMaterial(); + Nz::MaterialRef GetLocalAABBMaterial(); + Nz::MaterialRef GetOBBMaterial(); void OnEntityValidation(Entity* entity, bool justAdded) override; - 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; Nz::VertexBufferRef m_boxMeshVertexBuffer; + bool m_isDepthBufferEnabled; }; } diff --git a/SDK/include/NDK/Systems/DebugSystem.inl b/SDK/include/NDK/Systems/DebugSystem.inl index b7439fc12..b72b87f3f 100644 --- a/SDK/include/NDK/Systems/DebugSystem.inl +++ b/SDK/include/NDK/Systems/DebugSystem.inl @@ -4,3 +4,10 @@ #include +namespace Ndk +{ + inline bool DebugSystem::IsDepthBufferEnabled() const + { + return m_isDepthBufferEnabled; + } +} diff --git a/SDK/include/NDK/Systems/LifetimeSystem.hpp b/SDK/include/NDK/Systems/LifetimeSystem.hpp new file mode 100644 index 000000000..9957c1b53 --- /dev/null +++ b/SDK/include/NDK/Systems/LifetimeSystem.hpp @@ -0,0 +1,29 @@ +// 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_SYSTEMS_LIFETIMESYSTEM_HPP +#define NDK_SYSTEMS_LIFETIMESYSTEM_HPP + +#include + +namespace Ndk +{ + class NDK_API LifetimeSystem : public System + { + public: + LifetimeSystem(); + ~LifetimeSystem() = default; + + static SystemIndex systemIndex; + + private: + void OnUpdate(float elapsedTime) override; + }; +} + +#include + +#endif // NDK_SYSTEMS_LIFETIMESYSTEM_HPP diff --git a/SDK/include/NDK/Systems/LifetimeSystem.inl b/SDK/include/NDK/Systems/LifetimeSystem.inl new file mode 100644 index 000000000..5302ce8d0 --- /dev/null +++ b/SDK/include/NDK/Systems/LifetimeSystem.inl @@ -0,0 +1,3 @@ +// 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 diff --git a/SDK/include/NDK/Systems/PhysicsSystem2D.hpp b/SDK/include/NDK/Systems/PhysicsSystem2D.hpp index 66c8b1c61..dd10fcd57 100644 --- a/SDK/include/NDK/Systems/PhysicsSystem2D.hpp +++ b/SDK/include/NDK/Systems/PhysicsSystem2D.hpp @@ -16,24 +16,114 @@ 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); + + void RaycastQuery(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, const std::function& callback); + 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, const std::function& callback); + void RegionQuery(const Nz::Rectf& boundingBox, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector* bodies); + + 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); + inline void SetIterationCount(std::size_t iterationCount); + inline void SetMaxStepCount(std::size_t maxStepCount); + inline void SetSleepTime(float sleepTime); + 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; + inline Nz::PhysWorld2D& GetPhysWorld(); + inline 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..64870c092 100644 --- a/SDK/include/NDK/Systems/PhysicsSystem2D.inl +++ b/SDK/include/NDK/Systems/PhysicsSystem2D.inl @@ -2,19 +2,81 @@ // 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 float PhysicsSystem2D::GetDamping() const + { + return GetPhysWorld().GetDamping(); + } + + inline Nz::Vector2f PhysicsSystem2D::GetGravity() const + { + return GetPhysWorld().GetGravity(); + } + + inline std::size_t PhysicsSystem2D::GetIterationCount() const + { + return GetPhysWorld().GetIterationCount(); + } + + inline std::size_t PhysicsSystem2D::GetMaxStepCount() const + { + return GetPhysWorld().GetMaxStepCount(); + } + + inline float PhysicsSystem2D::GetStepSize() const + { + return GetPhysWorld().GetStepSize(); + } + + inline void PhysicsSystem2D::SetDamping(float dampingValue) + { + GetPhysWorld().SetDamping(dampingValue); + } + + inline void PhysicsSystem2D::SetGravity(const Nz::Vector2f& gravity) + { + GetPhysWorld().SetGravity(gravity); + } + + inline void PhysicsSystem2D::SetIterationCount(std::size_t iterationCount) + { + GetPhysWorld().SetIterationCount(iterationCount); + } + + inline void PhysicsSystem2D::SetMaxStepCount(std::size_t maxStepCount) + { + GetPhysWorld().SetMaxStepCount(maxStepCount); + } + + inline void PhysicsSystem2D::SetSleepTime(float sleepTime) + { + GetPhysWorld().SetSleepTime(sleepTime); + } + + inline void PhysicsSystem2D::SetStepSize(float stepSize) + { + GetPhysWorld().SetStepSize(stepSize); + } + + inline void PhysicsSystem2D::UseSpatialHash(float cellSize, std::size_t entityCount) + { + GetPhysWorld().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 +84,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/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/include/NDK/Widgets.hpp b/SDK/include/NDK/Widgets.hpp index 26917a4c9..9a36e37a2 100644 --- a/SDK/include/NDK/Widgets.hpp +++ b/SDK/include/NDK/Widgets.hpp @@ -5,12 +5,16 @@ #ifndef NDK_WIDGETS_GLOBAL_HPP #define NDK_WIDGETS_GLOBAL_HPP +#include +#include #include #include #include #include #include #include +#include +#include #include #endif // NDK_WIDGETS_GLOBAL_HPP diff --git a/SDK/include/NDK/Widgets/AbstractTextAreaWidget.hpp b/SDK/include/NDK/Widgets/AbstractTextAreaWidget.hpp new file mode 100644 index 000000000..b05f65bce --- /dev/null +++ b/SDK/include/NDK/Widgets/AbstractTextAreaWidget.hpp @@ -0,0 +1,135 @@ +// 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_ABSTRACTTEXTAREAWIDGET_HPP +#define NDK_WIDGETS_ABSTRACTTEXTAREAWIDGET_HPP + +#include +#include +#include +#include +#include +#include + +namespace Ndk +{ + class NDK_API AbstractTextAreaWidget : public BaseWidget + { + public: + using CharacterFilter = std::function; + + AbstractTextAreaWidget(BaseWidget* parent); + AbstractTextAreaWidget(const AbstractTextAreaWidget&) = delete; + AbstractTextAreaWidget(AbstractTextAreaWidget&&) = default; + ~AbstractTextAreaWidget() = default; + + virtual void Clear(); + + //virtual TextAreaWidget* Clone() const = 0; + + void EnableLineWrap(bool enable = true); + inline void EnableMultiline(bool enable = true); + inline void EnableTabWriting(bool enable = true); + + inline void Erase(std::size_t glyphPosition); + virtual void Erase(std::size_t firstGlyph, std::size_t lastGlyph) = 0; + inline void EraseSelection(); + + inline const CharacterFilter& GetCharacterFilter() const; + inline const Nz::Vector2ui& GetCursorPosition() const; + inline Nz::Vector2ui GetCursorPosition(std::size_t glyphIndex) const; + inline EchoMode GetEchoMode() const; + inline std::size_t GetGlyphIndex() const; + inline std::size_t GetGlyphIndex(const Nz::Vector2ui& cursorPosition) const; + inline const Nz::String& GetText() const; + + Nz::Vector2ui GetHoveredGlyph(float x, float y) const; + + inline bool HasSelection() const; + + inline bool IsLineWrapEnabled() const; + inline bool IsMultilineEnabled() const; + inline bool IsReadOnly() const; + inline bool IsTabWritingEnabled() const; + + inline void MoveCursor(int offset); + inline void MoveCursor(const Nz::Vector2i& offset); + + inline Nz::Vector2ui NormalizeCursorPosition(Nz::Vector2ui cursorPosition) const; + + inline void SetCharacterFilter(CharacterFilter filter); + inline void SetCursorPosition(std::size_t glyphIndex); + 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 Write(const Nz::String& text); + inline void Write(const Nz::String& text, const Nz::Vector2ui& glyphPosition); + virtual void Write(const Nz::String& text, std::size_t glyphPosition) = 0; + + AbstractTextAreaWidget& operator=(const AbstractTextAreaWidget&) = delete; + AbstractTextAreaWidget& operator=(AbstractTextAreaWidget&&) = default; + + NazaraSignal(OnTextAreaCursorMove, const AbstractTextAreaWidget* /*textArea*/, Nz::Vector2ui* /*newCursorPosition*/); + NazaraSignal(OnTextAreaKeyBackspace, const AbstractTextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); + NazaraSignal(OnTextAreaKeyDown, const AbstractTextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); + NazaraSignal(OnTextAreaKeyEnd, const AbstractTextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); + NazaraSignal(OnTextAreaKeyHome, const AbstractTextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); + NazaraSignal(OnTextAreaKeyLeft, const AbstractTextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); + NazaraSignal(OnTextAreaKeyReturn, const AbstractTextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); + NazaraSignal(OnTextAreaKeyRight, const AbstractTextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); + NazaraSignal(OnTextAreaKeyUp, const AbstractTextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); + NazaraSignal(OnTextAreaSelection, const AbstractTextAreaWidget* /*textArea*/, Nz::Vector2ui* /*start*/, Nz::Vector2ui* /*end*/); + + protected: + virtual Nz::AbstractTextDrawer& GetTextDrawer() = 0; + virtual const Nz::AbstractTextDrawer& GetTextDrawer() const = 0; + + void Layout() override; + + virtual void HandleIndentation(bool add) = 0; + virtual void HandleSelectionIndentation(bool add) = 0; + virtual void HandleWordCursorMove(bool left) = 0; + + bool IsFocusable() const override; + void OnFocusLost() override; + void OnFocusReceived() override; + 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; + + inline void SetCursorPositionInternal(std::size_t glyphIndex); + inline void SetCursorPositionInternal(Nz::Vector2ui cursorPosition); + + void RefreshCursor(); + virtual void UpdateDisplayText() = 0; + void UpdateTextSprite(); + + CharacterFilter m_characterFilter; + EchoMode m_echoMode; + EntityHandle m_cursorEntity; + EntityHandle m_textEntity; + Nz::TextSpriteRef m_textSprite; + Nz::Vector2ui m_cursorPositionBegin; + Nz::Vector2ui m_cursorPositionEnd; + Nz::Vector2ui m_selectionCursor; + std::vector m_cursorSprites; + bool m_isLineWrapEnabled; + bool m_isMouseButtonDown; + bool m_multiLineEnabled; + bool m_readOnly; + bool m_tabEnabled; // writes (Shift+)Tab character if set to true + }; +} + +#include + +#endif // NDK_WIDGETS_ABSTRACTTEXTAREAWIDGET_HPP diff --git a/SDK/include/NDK/Widgets/AbstractTextAreaWidget.inl b/SDK/include/NDK/Widgets/AbstractTextAreaWidget.inl new file mode 100644 index 000000000..ca40d278b --- /dev/null +++ b/SDK/include/NDK/Widgets/AbstractTextAreaWidget.inl @@ -0,0 +1,252 @@ +// 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 void AbstractTextAreaWidget::EnableMultiline(bool enable) + { + m_multiLineEnabled = enable; + } + + inline void AbstractTextAreaWidget::EnableTabWriting(bool enable) + { + m_tabEnabled = enable; + } + + inline void AbstractTextAreaWidget::Erase(std::size_t glyphPosition) + { + Erase(glyphPosition, glyphPosition + 1U); + } + + inline void AbstractTextAreaWidget::EraseSelection() + { + if (!HasSelection()) + return; + + Erase(GetGlyphIndex(m_cursorPositionBegin), GetGlyphIndex(m_cursorPositionEnd)); + } + + inline const AbstractTextAreaWidget::CharacterFilter& AbstractTextAreaWidget::GetCharacterFilter() const + { + return m_characterFilter; + } + + inline const Nz::Vector2ui& AbstractTextAreaWidget::GetCursorPosition() const + { + return m_cursorPositionBegin; + } + + Nz::Vector2ui AbstractTextAreaWidget::GetCursorPosition(std::size_t glyphIndex) const + { + const Nz::AbstractTextDrawer& textDrawer = GetTextDrawer(); + + glyphIndex = std::min(glyphIndex, GetTextDrawer().GetGlyphCount()); + + std::size_t lineCount = textDrawer.GetLineCount(); + std::size_t line = 0U; + for (std::size_t i = line + 1; i < lineCount; ++i) + { + if (textDrawer.GetLine(i).glyphIndex > glyphIndex) + break; + + line = i; + } + + const auto& lineInfo = textDrawer.GetLine(line); + + Nz::Vector2ui cursorPos; + cursorPos.y = static_cast(line); + cursorPos.x = static_cast(glyphIndex - lineInfo.glyphIndex); + + return cursorPos; + } + + inline EchoMode AbstractTextAreaWidget::GetEchoMode() const + { + return m_echoMode; + } + + inline std::size_t AbstractTextAreaWidget::GetGlyphIndex() const + { + return GetGlyphIndex(m_cursorPositionBegin); + } + + inline std::size_t AbstractTextAreaWidget::GetGlyphIndex(const Nz::Vector2ui& cursorPosition) const + { + const Nz::AbstractTextDrawer& textDrawer = GetTextDrawer(); + + std::size_t glyphIndex = textDrawer.GetLine(cursorPosition.y).glyphIndex + cursorPosition.x; + if (textDrawer.GetLineCount() > cursorPosition.y + 1) + glyphIndex = std::min(glyphIndex, textDrawer.GetLine(cursorPosition.y + 1).glyphIndex - 1); + else + glyphIndex = std::min(glyphIndex, textDrawer.GetGlyphCount()); + + return glyphIndex; + } + + inline bool AbstractTextAreaWidget::HasSelection() const + { + return m_cursorPositionBegin != m_cursorPositionEnd; + } + + inline bool AbstractTextAreaWidget::IsLineWrapEnabled() const + { + return m_isLineWrapEnabled; + } + + inline bool AbstractTextAreaWidget::IsMultilineEnabled() const + { + return m_multiLineEnabled; + } + + inline bool AbstractTextAreaWidget::IsTabWritingEnabled() const + { + return m_tabEnabled; + } + + inline bool AbstractTextAreaWidget::IsReadOnly() const + { + return m_readOnly; + } + + inline void AbstractTextAreaWidget::MoveCursor(int offset) + { + std::size_t cursorGlyph = GetGlyphIndex(m_cursorPositionBegin); + if (offset >= 0) + SetCursorPosition(cursorGlyph + static_cast(offset)); + else + { + std::size_t nOffset = static_cast(-offset); + if (nOffset >= cursorGlyph) + SetCursorPosition(0); + else + SetCursorPosition(cursorGlyph - nOffset); + } + } + + inline void AbstractTextAreaWidget::MoveCursor(const Nz::Vector2i& offset) + { + auto ClampOffset = [] (unsigned int cursorPosition, int cursorOffset) -> unsigned int + { + if (cursorOffset >= 0) + return cursorPosition + cursorOffset; + else + { + unsigned int nOffset = static_cast(-cursorOffset); + if (nOffset >= cursorPosition) + return 0; + else + return cursorPosition - nOffset; + } + }; + + Nz::Vector2ui cursorPosition = m_cursorPositionBegin; + cursorPosition.x = ClampOffset(static_cast(cursorPosition.x), offset.x); + cursorPosition.y = ClampOffset(static_cast(cursorPosition.y), offset.y); + + SetCursorPosition(cursorPosition); + } + + inline Nz::Vector2ui AbstractTextAreaWidget::NormalizeCursorPosition(Nz::Vector2ui cursorPosition) const + { + const Nz::AbstractTextDrawer& textDrawer = GetTextDrawer(); + + std::size_t lineCount = textDrawer.GetLineCount(); + if (cursorPosition.y >= lineCount) + cursorPosition.y = static_cast(lineCount - 1); + + const auto& lineInfo = textDrawer.GetLine(cursorPosition.y); + if (cursorPosition.y + 1 < lineCount) + { + const auto& nextLineInfo = textDrawer.GetLine(cursorPosition.y + 1); + cursorPosition.x = std::min(cursorPosition.x, static_cast(nextLineInfo.glyphIndex - lineInfo.glyphIndex - 1)); + } + + return cursorPosition; + } + + inline void AbstractTextAreaWidget::SetCharacterFilter(CharacterFilter filter) + { + m_characterFilter = std::move(filter); + } + + inline void AbstractTextAreaWidget::SetCursorPosition(std::size_t glyphIndex) + { + Nz::Vector2ui position = GetCursorPosition(glyphIndex); + Nz::Vector2ui newPosition = position; + + OnTextAreaCursorMove(this, &newPosition); + + if (position == newPosition) + SetCursorPositionInternal(position); + else + SetCursorPositionInternal(GetGlyphIndex(newPosition)); + } + + inline void AbstractTextAreaWidget::SetCursorPosition(Nz::Vector2ui cursorPosition) + { + OnTextAreaCursorMove(this, &cursorPosition); + + return SetCursorPositionInternal(NormalizeCursorPosition(cursorPosition)); + } + + inline void AbstractTextAreaWidget::SetEchoMode(EchoMode echoMode) + { + m_echoMode = echoMode; + + UpdateDisplayText(); + } + + inline void AbstractTextAreaWidget::SetReadOnly(bool readOnly) + { + m_readOnly = readOnly; + m_cursorEntity->Enable(!m_readOnly && HasFocus()); + } + + inline void AbstractTextAreaWidget::SetSelection(Nz::Vector2ui fromPosition, Nz::Vector2ui toPosition) + { + // 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) + { + OnTextAreaSelection(this, &fromPosition, &toPosition); + + // Ensure begin is before end a second time (in case signal changed it) + if (toPosition.y < fromPosition.y || (toPosition.y == fromPosition.y && toPosition.x < fromPosition.x)) + std::swap(fromPosition, toPosition); + + m_cursorPositionBegin = NormalizeCursorPosition(fromPosition); + m_cursorPositionEnd = NormalizeCursorPosition(toPosition); + + RefreshCursor(); + } + } + + inline void AbstractTextAreaWidget::Write(const Nz::String& text) + { + Write(text, GetGlyphIndex(m_cursorPositionBegin)); + } + + inline void AbstractTextAreaWidget::Write(const Nz::String& text, const Nz::Vector2ui& glyphPosition) + { + Write(text, GetGlyphIndex(glyphPosition)); + } + + void AbstractTextAreaWidget::SetCursorPositionInternal(std::size_t glyphIndex) + { + return SetCursorPositionInternal(GetCursorPosition(glyphIndex)); + } + + inline void AbstractTextAreaWidget::SetCursorPositionInternal(Nz::Vector2ui cursorPosition) + { + m_cursorPositionBegin = cursorPosition; + m_cursorPositionEnd = m_cursorPositionBegin; + + RefreshCursor(); + } +} 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 12fc12762..a65429290 100644 --- a/SDK/include/NDK/Widgets/ButtonWidget.hpp +++ b/SDK/include/NDK/Widgets/ButtonWidget.hpp @@ -23,15 +23,11 @@ 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; - //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 9d175fdbe..a9723c20b 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; @@ -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 51fe4de87..d95af8623 100644 --- a/SDK/include/NDK/Widgets/ImageWidget.hpp +++ b/SDK/include/NDK/Widgets/ImageWidget.hpp @@ -19,21 +19,19 @@ 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; //virtual ImageWidget* Clone() const = 0; - void ResizeToContent() override; - 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 f4f43bf1e..6e3b89ee8 100644 --- a/SDK/include/NDK/Widgets/LabelWidget.hpp +++ b/SDK/include/NDK/Widgets/LabelWidget.hpp @@ -21,23 +21,17 @@ 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; - //virtual LabelWidget* Clone() const = 0; - - void ResizeToContent() override; - inline void UpdateText(const Nz::AbstractTextDrawer& drawer); LabelWidget& operator=(const LabelWidget&) = delete; LabelWidget& operator=(LabelWidget&&) = default; private: - void Layout() override; - EntityHandle m_textEntity; Nz::TextSpriteRef m_textSprite; }; diff --git a/SDK/include/NDK/Widgets/LabelWidget.inl b/SDK/include/NDK/Widgets/LabelWidget.inl index 72d0ad1a6..cf14ea7d0 100644 --- a/SDK/include/NDK/Widgets/LabelWidget.inl +++ b/SDK/include/NDK/Widgets/LabelWidget.inl @@ -9,5 +9,9 @@ namespace Ndk inline void LabelWidget::UpdateText(const Nz::AbstractTextDrawer& drawer) { m_textSprite->Update(drawer); + + Nz::Vector2f size = Nz::Vector2f(m_textSprite->GetBoundingVolume().obb.localBox.GetLengths()); + SetMinimumSize(size); + SetPreferredSize(size); } } diff --git a/SDK/include/NDK/Widgets/ProgressBarWidget.hpp b/SDK/include/NDK/Widgets/ProgressBarWidget.hpp index 2faa8093d..2ae334b8c 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; @@ -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/RichTextAreaWidget.hpp b/SDK/include/NDK/Widgets/RichTextAreaWidget.hpp new file mode 100644 index 000000000..a21a233d2 --- /dev/null +++ b/SDK/include/NDK/Widgets/RichTextAreaWidget.hpp @@ -0,0 +1,68 @@ +// 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_RICHTEXTAREAWIDGET_HPP +#define NDK_WIDGETS_RICHTEXTAREAWIDGET_HPP + +#include +#include + +namespace Ndk +{ + class NDK_API RichTextAreaWidget : public AbstractTextAreaWidget + { + public: + RichTextAreaWidget(BaseWidget* parent); + RichTextAreaWidget(const RichTextAreaWidget&) = delete; + RichTextAreaWidget(RichTextAreaWidget&&) = default; + ~RichTextAreaWidget() = default; + + void AppendText(const Nz::String& text); + + void Clear() override; + + void Erase(std::size_t firstGlyph, std::size_t lastGlyph) override; + + inline unsigned int GetCharacterSize() const; + inline float GetCharacterSpacingOffset() const; + inline float GetLineSpacingOffset() const; + inline const Nz::Color& GetTextColor() const; + inline Nz::Font* GetTextFont() const; + inline const Nz::Color& GetTextOutlineColor() const; + inline float GetTextOutlineThickness() const; + inline Nz::TextStyleFlags GetTextStyle() const; + + inline void SetCharacterSize(unsigned int characterSize); + inline void SetCharacterSpacingOffset(float offset); + inline void SetLineSpacingOffset(float offset); + inline void SetTextColor(const Nz::Color& color); + inline void SetTextFont(Nz::FontRef font); + inline void SetTextOutlineColor(const Nz::Color& color); + inline void SetTextOutlineThickness(float thickness); + inline void SetTextStyle(Nz::TextStyleFlags style); + + void Write(const Nz::String& text, std::size_t glyphPosition) override; + + RichTextAreaWidget& operator=(const RichTextAreaWidget&) = delete; + RichTextAreaWidget& operator=(RichTextAreaWidget&&) = default; + + private: + Nz::AbstractTextDrawer& GetTextDrawer() override; + const Nz::AbstractTextDrawer& GetTextDrawer() const override; + + void HandleIndentation(bool add) override; + void HandleSelectionIndentation(bool add) override; + void HandleWordCursorMove(bool left) override; + + void UpdateDisplayText() override; + + Nz::RichTextDrawer m_drawer; + }; +} + +#include + +#endif // NDK_WIDGETS_TEXTAREAWIDGET_HPP diff --git a/SDK/include/NDK/Widgets/RichTextAreaWidget.inl b/SDK/include/NDK/Widgets/RichTextAreaWidget.inl new file mode 100644 index 000000000..4fd7faa10 --- /dev/null +++ b/SDK/include/NDK/Widgets/RichTextAreaWidget.inl @@ -0,0 +1,88 @@ +// 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 unsigned int RichTextAreaWidget::GetCharacterSize() const + { + return m_drawer.GetDefaultCharacterSize(); + } + + inline float RichTextAreaWidget::GetCharacterSpacingOffset() const + { + return m_drawer.GetDefaultCharacterSpacingOffset(); + } + + inline float RichTextAreaWidget::GetLineSpacingOffset() const + { + return m_drawer.GetDefaultLineSpacingOffset(); + } + + inline const Nz::Color& RichTextAreaWidget::GetTextColor() const + { + return m_drawer.GetDefaultColor(); + } + + inline Nz::Font* RichTextAreaWidget::GetTextFont() const + { + return m_drawer.GetDefaultFont(); + } + + inline const Nz::Color& RichTextAreaWidget::GetTextOutlineColor() const + { + return m_drawer.GetDefaultOutlineColor(); + } + + inline float RichTextAreaWidget::GetTextOutlineThickness() const + { + return m_drawer.GetDefaultOutlineThickness(); + } + + inline Nz::TextStyleFlags RichTextAreaWidget::GetTextStyle() const + { + return m_drawer.GetDefaultStyle(); + } + + inline void RichTextAreaWidget::SetCharacterSize(unsigned int characterSize) + { + m_drawer.SetDefaultCharacterSize(characterSize); + } + + inline void RichTextAreaWidget::SetCharacterSpacingOffset(float offset) + { + m_drawer.SetDefaultCharacterSpacingOffset(offset); + } + + inline void RichTextAreaWidget::SetLineSpacingOffset(float offset) + { + m_drawer.SetDefaultLineSpacingOffset(offset); + } + + inline void RichTextAreaWidget::SetTextColor(const Nz::Color& color) + { + m_drawer.SetDefaultColor(color); + } + + inline void RichTextAreaWidget::SetTextFont(Nz::FontRef font) + { + m_drawer.SetDefaultFont(std::move(font)); + } + + inline void RichTextAreaWidget::SetTextOutlineColor(const Nz::Color& color) + { + m_drawer.SetDefaultOutlineColor(color); + } + + inline void RichTextAreaWidget::SetTextOutlineThickness(float thickness) + { + m_drawer.SetDefaultOutlineThickness(thickness); + } + + inline void RichTextAreaWidget::SetTextStyle(Nz::TextStyleFlags style) + { + m_drawer.SetDefaultStyle(style); + } +} diff --git a/SDK/include/NDK/Widgets/ScrollAreaWidget.hpp b/SDK/include/NDK/Widgets/ScrollAreaWidget.hpp new file mode 100644 index 000000000..17ada16ef --- /dev/null +++ b/SDK/include/NDK/Widgets/ScrollAreaWidget.hpp @@ -0,0 +1,74 @@ +// Copyright (C) 2019 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_SCROLLAREAWIDGET_HPP +#define NDK_WIDGETS_SCROLLAREAWIDGET_HPP + +#include +#include +#include + +namespace Ndk +{ + class NDK_API ScrollAreaWidget : public BaseWidget + { + public: + ScrollAreaWidget(BaseWidget* parent, BaseWidget* content); + ScrollAreaWidget(const ScrollAreaWidget&) = delete; + ScrollAreaWidget(ScrollAreaWidget&&) = default; + ~ScrollAreaWidget() = default; + + void EnableScrollbar(bool enable); + + inline float GetScrollHeight() const; + inline float GetScrollRatio() const; + + inline bool HasScrollbar() const; + inline bool IsScrollbarEnabled() const; + inline bool IsScrollbarVisible() const; + + inline void ScrollToHeight(float height); + void ScrollToRatio(float ratio); + + ScrollAreaWidget& operator=(const ScrollAreaWidget&) = delete; + ScrollAreaWidget& operator=(ScrollAreaWidget&&) = default; + + private: + enum class ScrollBarStatus + { + Grabbed, + Hovered, + None + }; + + Nz::Rectf GetScrollbarRect() const; + + void Layout() override; + + void OnMouseButtonPress(int x, int y, Nz::Mouse::Button button) override; + void OnMouseButtonRelease(int x, int y, Nz::Mouse::Button button) override; + void OnMouseExit() override; + void OnMouseMoved(int x, int y, int deltaX, int deltaY) override; + void OnMouseWheelMoved(int x, int y, float delta) override; + + void UpdateScrollbarStatus(ScrollBarStatus status); + + BaseWidget* m_content; + EntityHandle m_scrollbarBackgroundEntity; + EntityHandle m_scrollbarEntity; + Nz::SpriteRef m_scrollbarBackgroundSprite; + Nz::SpriteRef m_scrollbarSprite; + Nz::Vector2i m_grabbedDelta; + ScrollBarStatus m_scrollbarStatus; + bool m_isScrollbarEnabled; + bool m_hasScrollbar; + float m_scrollRatio; + }; +} + +#include + +#endif // NDK_WIDGETS_SCROLLAREAWIDGET_HPP diff --git a/SDK/include/NDK/Widgets/ScrollAreaWidget.inl b/SDK/include/NDK/Widgets/ScrollAreaWidget.inl new file mode 100644 index 000000000..89bea6d47 --- /dev/null +++ b/SDK/include/NDK/Widgets/ScrollAreaWidget.inl @@ -0,0 +1,39 @@ +// Copyright (C) 2019 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 float ScrollAreaWidget::GetScrollHeight() const + { + return m_scrollRatio * m_content->GetHeight(); + } + + inline float ScrollAreaWidget::GetScrollRatio() const + { + return m_scrollRatio; + } + + inline bool ScrollAreaWidget::HasScrollbar() const + { + return m_hasScrollbar; + } + + inline bool ScrollAreaWidget::IsScrollbarEnabled() const + { + return m_isScrollbarEnabled; + } + + inline bool ScrollAreaWidget::IsScrollbarVisible() const + { + return HasScrollbar() && IsScrollbarEnabled(); + } + + inline void ScrollAreaWidget::ScrollToHeight(float height) + { + float contentHeight = m_content->GetHeight(); + ScrollToRatio(height / contentHeight); + } +} diff --git a/SDK/include/NDK/Widgets/TextAreaWidget.hpp b/SDK/include/NDK/Widgets/TextAreaWidget.hpp index e7cdc2f7a..8b06e7579 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.hpp +++ b/SDK/include/NDK/Widgets/TextAreaWidget.hpp @@ -7,108 +7,68 @@ #ifndef NDK_WIDGETS_TEXTAREAWIDGET_HPP #define NDK_WIDGETS_TEXTAREAWIDGET_HPP -#include #include -#include -#include -#include +#include namespace Ndk { - class NDK_API TextAreaWidget : public BaseWidget + class NDK_API TextAreaWidget : public AbstractTextAreaWidget { public: - TextAreaWidget(BaseWidget* parent = nullptr); + TextAreaWidget(BaseWidget* parent); TextAreaWidget(const TextAreaWidget&) = delete; TextAreaWidget(TextAreaWidget&&) = default; ~TextAreaWidget() = default; void AppendText(const Nz::String& text); - inline void Clear(); + void Clear() override; - //virtual TextAreaWidget* Clone() const = 0; - - inline void EnableMultiline(bool enable = true); - - void EraseSelection(); + using AbstractTextAreaWidget::Erase; + void Erase(std::size_t firstGlyph, std::size_t lastGlyph) override; 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 float GetCharacterSpacingOffset() const; + inline float GetLineSpacingOffset() const; inline const Nz::String& GetText() const; inline const Nz::Color& GetTextColor() const; - - Nz::Vector2ui GetHoveredGlyph(float x, float y) const; - - inline bool HasSelection() const; - - inline bool IsMultilineEnabled() const; - inline bool IsReadOnly() const; - - inline void MoveCursor(int offset); - inline void MoveCursor(const Nz::Vector2i& offset); - - void ResizeToContent() override; + inline Nz::Font* GetTextFont() const; + inline const Nz::Color& GetTextOulineColor() const; + inline float GetTextOulineThickness() const; + inline Nz::TextStyleFlags GetTextStyle() const; inline void SetCharacterSize(unsigned int characterSize); - inline void SetCursorPosition(std::size_t glyphIndex); - 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 SetCharacterSpacingOffset(float offset); + inline void SetLineSpacingOffset(float offset); inline void SetText(const Nz::String& text); inline void SetTextColor(const Nz::Color& text); + inline void SetTextFont(Nz::FontRef font); + inline void SetTextOutlineColor(const Nz::Color& color); + inline void SetTextOutlineThickness(float thickness); + inline void SetTextStyle(Nz::TextStyleFlags style); - void Write(const Nz::String& text); + using AbstractTextAreaWidget::Write; + void Write(const Nz::String& text, std::size_t glyphPosition) override; TextAreaWidget& operator=(const TextAreaWidget&) = delete; TextAreaWidget& operator=(TextAreaWidget&&) = default; - 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*/); - NazaraSignal(OnTextAreaKeyUp, const TextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); - NazaraSignal(OnTextChanged, const TextAreaWidget* /*textArea*/, const Nz::String& /*text*/); + NazaraSignal(OnTextChanged, const AbstractTextAreaWidget* /*textArea*/, const Nz::String& /*text*/); private: - void Layout() override; + Nz::AbstractTextDrawer& GetTextDrawer() override; + const Nz::AbstractTextDrawer& GetTextDrawer() const override; - bool IsFocusable() const override; - void OnFocusLost() override; - void OnFocusReceived() override; - 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 HandleIndentation(bool add) override; + void HandleSelectionIndentation(bool add) override; + void HandleWordCursorMove(bool left) override; - void RefreshCursor(); - void UpdateDisplayText(); + void UpdateDisplayText() override; + void UpdateMinimumSize(); - EchoMode m_echoMode; - EntityHandle m_cursorEntity; - EntityHandle m_textEntity; Nz::SimpleTextDrawer m_drawer; Nz::String m_text; - Nz::TextSpriteRef m_textSprite; - 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 274d46a02..f63897420 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.inl +++ b/SDK/include/NDK/Widgets/TextAreaWidget.inl @@ -6,75 +6,24 @@ namespace Ndk { - inline void TextAreaWidget::Clear() - { - m_cursorPositionBegin.MakeZero(); - m_cursorPositionEnd.MakeZero(); - m_drawer.Clear(); - m_text.Clear(); - m_textSprite->Update(m_drawer); - - RefreshCursor(); - OnTextChanged(this, m_text); - } - - inline void TextAreaWidget::EnableMultiline(bool enable) - { - m_multiLineEnabled = enable; - } - inline unsigned int TextAreaWidget::GetCharacterSize() const { return m_drawer.GetCharacterSize(); } - inline const Nz::Vector2ui& TextAreaWidget::GetCursorPosition() const - { - 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 { return m_drawer.GetText(); } - inline std::size_t TextAreaWidget::GetGlyphIndex(const Nz::Vector2ui& cursorPosition) + inline float TextAreaWidget::GetCharacterSpacingOffset() const { - std::size_t glyphIndex = m_drawer.GetLine(cursorPosition.y).glyphIndex + cursorPosition.x; - if (m_drawer.GetLineCount() > cursorPosition.y + 1) - glyphIndex = std::min(glyphIndex, m_drawer.GetLine(cursorPosition.y + 1).glyphIndex - 1); - else - glyphIndex = std::min(glyphIndex, m_drawer.GetGlyphCount()); - - return glyphIndex; + return m_drawer.GetCharacterSpacingOffset(); } - inline EchoMode TextAreaWidget::GetEchoMode() const + inline float TextAreaWidget::GetLineSpacingOffset() const { - return m_echoMode; + return m_drawer.GetLineSpacingOffset(); } inline const Nz::String& TextAreaWidget::GetText() const @@ -87,126 +36,47 @@ namespace Ndk return m_drawer.GetColor(); } - inline bool TextAreaWidget::HasSelection() const + inline Nz::Font* TextAreaWidget::GetTextFont() const { - return m_cursorPositionBegin != m_cursorPositionEnd; + return m_drawer.GetFont(); } - inline bool TextAreaWidget::IsMultilineEnabled() const + inline const Nz::Color& TextAreaWidget::GetTextOulineColor() const { - return m_multiLineEnabled; + return m_drawer.GetOutlineColor(); } - inline bool TextAreaWidget::IsReadOnly() const + inline float TextAreaWidget::GetTextOulineThickness() const { - return m_readOnly; + return m_drawer.GetOutlineThickness(); } - inline void TextAreaWidget::MoveCursor(int offset) + inline Nz::TextStyleFlags TextAreaWidget::GetTextStyle() const { - std::size_t cursorGlyph = GetGlyphIndex(m_cursorPositionBegin); - if (offset >= 0) - SetCursorPosition(cursorGlyph + static_cast(offset)); - else - { - std::size_t nOffset = static_cast(-offset); - if (nOffset >= cursorGlyph) - SetCursorPosition(0); - else - SetCursorPosition(cursorGlyph - nOffset); - } - } - - inline void TextAreaWidget::MoveCursor(const Nz::Vector2i& offset) - { - auto ClampOffset = [] (unsigned int cursorPosition, int cursorOffset) -> unsigned int - { - if (cursorOffset >= 0) - return cursorPosition + cursorOffset; - else - { - unsigned int nOffset = static_cast(-cursorOffset); - if (nOffset >= cursorPosition) - return 0; - else - return cursorPosition - nOffset; - } - }; - - Nz::Vector2ui cursorPosition = m_cursorPositionBegin; - cursorPosition.x = ClampOffset(static_cast(cursorPosition.x), offset.x); - cursorPosition.y = ClampOffset(static_cast(cursorPosition.y), offset.y); - - SetCursorPosition(cursorPosition); + return m_drawer.GetStyle(); } inline void TextAreaWidget::SetCharacterSize(unsigned int characterSize) { m_drawer.SetCharacterSize(characterSize); - } - - inline void TextAreaWidget::SetCursorPosition(std::size_t glyphIndex) - { - OnTextAreaCursorMove(this, &glyphIndex); - - m_cursorPositionBegin = GetCursorPosition(glyphIndex); - m_cursorPositionEnd = m_cursorPositionBegin; - - RefreshCursor(); - } - - inline void TextAreaWidget::SetCursorPosition(Nz::Vector2ui cursorPosition) - { - std::size_t lineCount = m_drawer.GetLineCount(); - if (cursorPosition.y >= lineCount) - cursorPosition.y = static_cast(lineCount - 1); - - m_cursorPositionBegin = cursorPosition; - - const auto& lineInfo = m_drawer.GetLine(cursorPosition.y); - if (cursorPosition.y + 1 < lineCount) - { - const auto& nextLineInfo = m_drawer.GetLine(cursorPosition.y + 1); - 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); - - RefreshCursor(); - } - - inline void TextAreaWidget::SetEchoMode(EchoMode echoMode) - { - m_echoMode = echoMode; + UpdateMinimumSize(); UpdateDisplayText(); } - inline void TextAreaWidget::SetReadOnly(bool readOnly) + inline void TextAreaWidget::SetCharacterSpacingOffset(float offset) { - m_readOnly = readOnly; - m_cursorEntity->Enable(!m_readOnly && HasFocus()); + m_drawer.SetCharacterSpacingOffset(offset); + + UpdateMinimumSize(); + UpdateDisplayText(); } - inline void TextAreaWidget::SetSelection(Nz::Vector2ui fromPosition, Nz::Vector2ui toPosition) + inline void TextAreaWidget::SetLineSpacingOffset(float offset) { - ///TODO: Check if position are valid + m_drawer.SetLineSpacingOffset(offset); - // 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(); - } + UpdateDisplayText(); } inline void TextAreaWidget::SetText(const Nz::String& text) @@ -221,6 +91,34 @@ namespace Ndk { m_drawer.SetColor(text); - m_textSprite->Update(m_drawer); + UpdateDisplayText(); + } + + inline void TextAreaWidget::SetTextFont(Nz::FontRef font) + { + m_drawer.SetFont(font); + + UpdateDisplayText(); + } + + inline void TextAreaWidget::SetTextOutlineColor(const Nz::Color& color) + { + m_drawer.SetOutlineColor(color); + + UpdateDisplayText(); + } + + inline void TextAreaWidget::SetTextOutlineThickness(float thickness) + { + m_drawer.SetOutlineThickness(thickness); + + UpdateDisplayText(); + } + + inline void TextAreaWidget::SetTextStyle(Nz::TextStyleFlags style) + { + m_drawer.SetStyle(style); + + UpdateDisplayText(); } } diff --git a/SDK/include/NDK/World.hpp b/SDK/include/NDK/World.hpp index 9b1d4c970..ca6e917b7 100644 --- a/SDK/include/NDK/World.hpp +++ b/SDK/include/NDK/World.hpp @@ -46,6 +46,7 @@ namespace Ndk void Clear() noexcept; const EntityHandle& CloneEntity(EntityId id); + const EntityHandle& CloneEntity(const EntityHandle& entity); inline void DisableProfiler(); inline void EnableProfiler(bool enable = true); @@ -67,6 +68,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; @@ -96,6 +99,12 @@ namespace Ndk inline void InvalidateSystemOrder(); void ReorderSystems(); + struct DoubleBitset + { + Nz::Bitset front; + Nz::Bitset back; + }; + struct EntityBlock { EntityBlock(Entity&& e) : @@ -117,9 +126,9 @@ namespace Ndk std::vector> m_waitingEntities; EntityList m_aliveEntities; ProfilerData m_profilerData; - Nz::Bitset m_dirtyEntities; + DoubleBitset m_dirtyEntities; Nz::Bitset m_freeEntityIds; - Nz::Bitset m_killedEntities; + DoubleBitset m_killedEntities; bool m_orderedSystemsUpdated; bool m_isProfilerEnabled; }; diff --git a/SDK/include/NDK/World.inl b/SDK/include/NDK/World.inl index 942ce4d36..1c3e446e1 100644 --- a/SDK/include/NDK/World.inl +++ b/SDK/include/NDK/World.inl @@ -308,7 +308,7 @@ namespace Ndk inline void World::KillEntity(Entity* entity) { if (IsEntityValid(entity)) - m_killedEntities.UnboundedSet(entity->GetId(), true); + m_killedEntities.front.UnboundedSet(entity->GetId(), true); } /*! @@ -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.front.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()); @@ -446,13 +467,13 @@ namespace Ndk inline void World::Invalidate() { - m_dirtyEntities.Resize(m_entityBlocks.size(), false); - m_dirtyEntities.Set(true); // Activation of all bits + m_dirtyEntities.front.Resize(m_entityBlocks.size(), false); + m_dirtyEntities.front.Set(true); // Activation of all bits } inline void World::Invalidate(EntityId id) { - m_dirtyEntities.UnboundedSet(id, true); + m_dirtyEntities.front.UnboundedSet(id, true); } inline void World::InvalidateSystemOrder() diff --git a/SDK/src/NDK/Application.cpp b/SDK/src/NDK/Application.cpp index a4fca055a..cf6fcdbb5 100644 --- a/SDK/src/NDK/Application.cpp +++ b/SDK/src/NDK/Application.cpp @@ -147,16 +147,22 @@ namespace Ndk Nz::Vector2ui windowDimensions; if (info.window->IsValid()) - { windowDimensions = info.window->GetSize(); - windowDimensions.y /= 4; - } else windowDimensions.MakeZero(); - overlay->console = std::make_unique(*info.overlayWorld, Nz::Vector2f(windowDimensions), overlay->lua); + Nz::LuaInstance& lua = overlay->lua; + + overlay->console = info.canvas->Add(); + overlay->console->OnCommand.Connect([&lua](Ndk::Console* console, const Nz::String& command) + { + if (!lua.Execute(command)) + console->AddLine(lua.GetLastError(), Nz::Color::Red); + }); Console& consoleRef = *overlay->console; + consoleRef.Resize({float(windowDimensions.x), windowDimensions.y / 4.f}); + consoleRef.Show(false); // Redirect logs toward the console overlay->logSlot.Connect(Nz::Log::OnLogWrite, [&consoleRef] (const Nz::String& str) @@ -164,11 +170,11 @@ namespace Ndk consoleRef.AddLine(str); }); - overlay->lua.LoadLibraries(); - LuaAPI::RegisterClasses(overlay->lua); + lua.LoadLibraries(); + LuaAPI::RegisterClasses(lua); // Override "print" function to add a line in the console - overlay->lua.PushFunction([&consoleRef] (Nz::LuaState& state) + lua.PushFunction([&consoleRef] (Nz::LuaState& state) { Nz::StringStream stream; @@ -192,31 +198,37 @@ namespace Ndk consoleRef.AddLine(stream); return 0; }); - overlay->lua.SetGlobal("print"); + lua.SetGlobal("print"); // Define a few base variables to allow our interface to interact with the application - overlay->lua.PushGlobal("Application", Ndk::Application::Instance()); - overlay->lua.PushGlobal("Console", consoleRef.CreateHandle()); + lua.PushGlobal("Application", Ndk::Application::Instance()); + lua.PushGlobal("Console", consoleRef.CreateHandle()); // Setup a few event callback to handle the console Nz::EventHandler& eventHandler = info.window->GetEventHandler(); - overlay->eventSlot.Connect(eventHandler.OnEvent, [&consoleRef] (const Nz::EventHandler*, const Nz::WindowEvent& event) - { - if (consoleRef.IsVisible()) - consoleRef.SendEvent(event); - }); - overlay->keyPressedSlot.Connect(eventHandler.OnKeyPressed, [&consoleRef] (const Nz::EventHandler*, const Nz::WindowEvent::KeyEvent& event) { if (event.code == Nz::Keyboard::F9) - consoleRef.Show(!consoleRef.IsVisible()); + { + // Toggle console visibility and focus + if (consoleRef.IsVisible()) + { + consoleRef.ClearFocus(); + consoleRef.Show(false); + } + else + { + consoleRef.Show(true); + consoleRef.SetFocus(); + } + } }); overlay->resizedSlot.Connect(info.renderTarget->OnRenderTargetSizeChange, [&consoleRef] (const Nz::RenderTarget* renderTarget) { Nz::Vector2ui size = renderTarget->GetSize(); - consoleRef.SetSize({float(size.x), size.y / 4.f}); + consoleRef.Resize({float(size.x), size.y / 4.f}); }); info.console = std::move(overlay); @@ -238,6 +250,9 @@ namespace Ndk { info.overlayWorld = std::make_unique(false); //< No default system + if (info.window->IsValid()) + info.canvas = std::make_unique(info.overlayWorld->CreateHandle(), info.window->GetEventHandler(), info.window->GetCursorController().CreateHandle()); + RenderSystem& renderSystem = info.overlayWorld->AddSystem(); renderSystem.ChangeRenderTechnique(); renderSystem.SetDefaultBackground(nullptr); diff --git a/SDK/src/NDK/BaseWidget.cpp b/SDK/src/NDK/BaseWidget.cpp index dc33252e2..cb643dc0c 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,15 @@ namespace Ndk } else { - m_backgroundEntity->Kill(); + DestroyEntity(m_backgroundEntity); + 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 +107,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,9 +145,27 @@ namespace Ndk m_canvas->SetKeyboardOwner(m_canvasIndex); } - void BaseWidget::SetSize(const Nz::Vector2f& size) + void BaseWidget::SetParent(BaseWidget* widget) { - 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)}); + Canvas* oldCanvas = m_canvas; + Canvas* newCanvas = widget->GetCanvas(); + + // Changing a widget canvas is a problem because of the canvas entities + NazaraAssert(oldCanvas == newCanvas, "Transferring a widget between canvas is not yet supported"); + + Node::SetParent(widget); + m_widgetParent = widget; + + Layout(); + } + + void BaseWidget::SetRenderingRect(const Nz::Rectf& renderingRect) + { + m_renderingRect = renderingRect; + + UpdatePositionAndSize(); + for (const auto& widgetPtr : m_children) + widgetPtr->UpdatePositionAndSize(); } void BaseWidget::Show(bool show) @@ -148,22 +180,45 @@ namespace Ndk UnregisterFromCanvas(); for (WidgetEntity& entity : m_entities) - entity.handle->Enable(show); + { + if (entity.isEnabled) + { + entity.handle->Enable(show); //< This will override isEnabled + entity.isEnabled = true; + } + } for (const auto& widgetPtr : m_children) widgetPtr->Show(show); } } - const Ndk::EntityHandle& BaseWidget::CreateEntity(bool isContentEntity) + const EntityHandle& BaseWidget::CreateEntity() { const EntityHandle& newEntity = m_world->CreateEntity(); newEntity->Enable(m_visible); m_entities.emplace_back(); - WidgetEntity& widgetEntity = m_entities.back(); - widgetEntity.handle = newEntity; - widgetEntity.isContent = isContentEntity; + WidgetEntity& newWidgetEntity = m_entities.back(); + newWidgetEntity.handle = newEntity; + newWidgetEntity.onDisabledSlot.Connect(newEntity->OnEntityDisabled, [this](Entity* entity) + { + auto it = std::find_if(m_entities.begin(), m_entities.end(), [&](const WidgetEntity& widgetEntity) { return widgetEntity.handle == entity; }); + NazaraAssert(it != m_entities.end(), "Entity does not belong to this widget"); + + it->isEnabled = false; + }); + + newWidgetEntity.onEnabledSlot.Connect(newEntity->OnEntityEnabled, [this](Entity* entity) + { + auto it = std::find_if(m_entities.begin(), m_entities.end(), [&](const WidgetEntity& widgetEntity) { return widgetEntity.handle == entity; }); + NazaraAssert(it != m_entities.end(), "Entity does not belong to this widget"); + + if (!IsVisible()) + entity->Disable(); // Next line will override isEnabled status + + it->isEnabled = true; + }); return newEntity; } @@ -178,8 +233,8 @@ 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); + if (m_backgroundSprite) + m_backgroundSprite->SetSize(m_size.x, m_size.y); UpdatePositionAndSize(); } @@ -191,6 +246,19 @@ namespace Ndk UpdatePositionAndSize(); } + Nz::Rectf BaseWidget::GetScissorRect() const + { + Nz::Vector2f widgetPos = Nz::Vector2f(GetPosition(Nz::CoordSys_Global)); + Nz::Vector2f widgetSize = GetSize(); + + Nz::Rectf widgetRect(widgetPos.x, widgetPos.y, widgetSize.x, widgetSize.y); + Nz::Rectf widgetRenderingRect(widgetPos.x + m_renderingRect.x, widgetPos.y + m_renderingRect.y, m_renderingRect.width, m_renderingRect.height); + + widgetRect.Intersect(widgetRenderingRect, &widgetRect); + + return widgetRect; + } + bool BaseWidget::IsFocusable() const { return false; @@ -229,6 +297,10 @@ namespace Ndk { } + void BaseWidget::OnMouseWheelMoved(int /*x*/, int /*y*/, float /*delta*/) + { + } + void BaseWidget::OnMouseExit() { } @@ -279,19 +351,22 @@ namespace Ndk if (IsRegisteredToCanvas()) m_canvas->NotifyWidgetBoxUpdate(m_canvasIndex); - Nz::Vector2f widgetPos = Nz::Vector2f(GetPosition()); - Nz::Vector2f widgetSize = GetSize(); + Nz::Rectf scissorRect = GetScissorRect(); - Nz::Vector2f contentPos = widgetPos + GetContentOrigin(); - Nz::Vector2f contentSize = GetContentSize(); + if (m_widgetParent) + { + Nz::Rectf parentScissorRect = m_widgetParent->GetScissorRect(); - 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)); + if (!scissorRect.Intersect(parentScissorRect, &scissorRect)) + scissorRect = parentScissorRect; + } + + Nz::Recti fullBounds(scissorRect); 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..f6d27ad15 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; @@ -65,7 +61,7 @@ namespace Ndk } } - void Canvas::OnEventMouseButtonRelease(const Nz::EventHandler* /*eventHandler*/, const Nz::WindowEvent::MouseButtonEvent & event) + void Canvas::OnEventMouseButtonRelease(const Nz::EventHandler* /*eventHandler*/, const Nz::WindowEvent::MouseButtonEvent& event) { if (m_hoveredWidget != InvalidCanvasIndex) { @@ -132,6 +128,19 @@ namespace Ndk } } + void Canvas::OnEventMouseWheelMoved(const Nz::EventHandler* /*eventHandler*/, const Nz::WindowEvent::MouseWheelEvent& event) + { + if (m_hoveredWidget != InvalidCanvasIndex) + { + WidgetEntry& hoveredWidget = m_widgetEntries[m_hoveredWidget]; + + int x = static_cast(std::round(event.x - hoveredWidget.box.x)); + int y = static_cast(std::round(event.y - hoveredWidget.box.y)); + + hoveredWidget.widget->OnMouseWheelMoved(x, y, event.delta); + } + } + void Canvas::OnEventMouseLeft(const Nz::EventHandler* /*eventHandler*/) { if (m_hoveredWidget != InvalidCanvasIndex) @@ -141,7 +150,7 @@ namespace Ndk } } - void Canvas::OnEventKeyPressed(const Nz::EventHandler* /*eventHandler*/, const Nz::WindowEvent::KeyEvent& event) + void Canvas::OnEventKeyPressed(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::KeyEvent& event) { if (m_keyboardOwner != InvalidCanvasIndex) { @@ -195,12 +204,16 @@ namespace Ndk } } } + + OnUnhandledKeyPressed(eventHandler, event); } - void Canvas::OnEventKeyReleased(const Nz::EventHandler* /*eventHandler*/, const Nz::WindowEvent::KeyEvent& event) + void Canvas::OnEventKeyReleased(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::KeyEvent& event) { if (m_keyboardOwner != InvalidCanvasIndex) m_widgetEntries[m_keyboardOwner].widget->OnKeyReleased(event); + + OnUnhandledKeyReleased(eventHandler, event); } void Canvas::OnEventTextEntered(const Nz::EventHandler* /*eventHandler*/, const Nz::WindowEvent::TextEvent& event) diff --git a/SDK/src/NDK/Components/CameraComponent.cpp b/SDK/src/NDK/Components/CameraComponent.cpp index a688a0ca5..4a599ab9e 100644 --- a/SDK/src/NDK/Components/CameraComponent.cpp +++ b/SDK/src/NDK/Components/CameraComponent.cpp @@ -154,11 +154,10 @@ namespace Ndk } /*! - * \brief Sets the layer of the camera in case of multiples fields + * \brief Sets the layer of the camera in case of multiples layers * * \param layer Layer of the camera */ - void CameraComponent::SetLayer(unsigned int layer) { m_layer = layer; @@ -169,7 +168,6 @@ namespace Ndk /*! * \brief Operation to perform when component is attached to an entity */ - void CameraComponent::OnAttached() { if (m_entity->HasComponent()) @@ -304,6 +302,8 @@ namespace Ndk break; } + m_projectionMatrix *= Nz::Matrix4f::Scale(m_projectionScale); + m_projectionMatrixUpdated = true; } diff --git a/SDK/src/NDK/Components/CollisionComponent2D.cpp b/SDK/src/NDK/Components/CollisionComponent2D.cpp index 9e88f396b..fddbe8842 100644 --- a/SDK/src/NDK/Components/CollisionComponent2D.cpp +++ b/SDK/src/NDK/Components/CollisionComponent2D.cpp @@ -17,29 +17,57 @@ namespace Ndk * \brief NDK class that represents a two-dimensional collision geometry */ + /*! + * \brief Gets the collision box representing the entity + * \return The physics collision box + */ + Nz::Rectf CollisionComponent2D::GetAABB() const + { + return GetRigidBody()->GetAABB(); + } + + /*! + * \brief Gets the position offset between the actual rigid body center of mass position and the origin of the geometry + * \return Position offset + */ + const Nz::Vector2f& CollisionComponent2D::GetGeomOffset() const + { + return GetRigidBody()->GetPositionOffset(); + } + + /*! + * \brief Convenience function to align center of geometry to a specific point + * + * \param geomOffset Position offset + * + * \remark This does not change the center of mass + */ + void CollisionComponent2D::Recenter(const Nz::Vector2f& origin) + { + const Nz::RigidBody2D* rigidBody = GetRigidBody(); + SetGeomOffset(origin - rigidBody->GetAABB().GetCenter() + rigidBody->GetPositionOffset()); + } + /*! * \brief Sets geometry for the entity * * \param geom Geometry used for collisions - * - * \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); - if (m_entity->HasComponent()) - { - // We update the geometry of the PhysiscsObject linked to the PhysicsComponent2D - PhysicsComponent2D& physComponent = m_entity->GetComponent(); - physComponent.GetRigidBody()->SetGeom(m_geom); - } - else - { - NazaraAssert(m_staticBody, "An entity without physics component should have a static body"); - m_staticBody->SetGeom(m_geom); - } + GetRigidBody()->SetGeom(m_geom); + } + + /*! + * \brief Sets the position offset between the actual rigid body center of mass position and the origin of the geometry + * + * \param geomOffset Position offset + */ + void CollisionComponent2D::SetGeomOffset(const Nz::Vector2f& geomOffset) + { + GetRigidBody()->SetPositionOffset(geomOffset); } /*! @@ -48,7 +76,6 @@ namespace Ndk * \remark Produces a NazaraAssert if entity is invalid * \remark Produces a NazaraAssert if entity is not linked to a world, or the world has no physics system */ - void CollisionComponent2D::InitializeStaticBody() { NazaraAssert(m_entity, "Invalid entity"); @@ -56,7 +83,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()))); @@ -68,7 +95,34 @@ namespace Ndk matrix.MakeIdentity(); m_staticBody->SetPosition(Nz::Vector2f(matrix.GetTranslation())); + } + Nz::RigidBody2D* CollisionComponent2D::GetRigidBody() + { + if (m_entity->HasComponent()) + { + PhysicsComponent2D& physComponent = m_entity->GetComponent(); + return physComponent.GetRigidBody(); + } + else + { + NazaraAssert(m_staticBody, "An entity without physics component should have a static body"); + return m_staticBody.get(); + } + } + + const Nz::RigidBody2D* CollisionComponent2D::GetRigidBody() const + { + if (m_entity->HasComponent()) + { + PhysicsComponent2D& physComponent = m_entity->GetComponent(); + return physComponent.GetRigidBody(); + } + else + { + NazaraAssert(m_staticBody, "An entity without physics component should have a static body"); + return m_staticBody.get(); + } } /*! diff --git a/SDK/src/NDK/Components/ConstraintComponent2D.cpp b/SDK/src/NDK/Components/ConstraintComponent2D.cpp index ef841c210..6c75f39ee 100644 --- a/SDK/src/NDK/Components/ConstraintComponent2D.cpp +++ b/SDK/src/NDK/Components/ConstraintComponent2D.cpp @@ -1,6 +1,23 @@ +// Copyright (C) 2019 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 { + ConstraintComponent2D::ConstraintComponent2D(const ConstraintComponent2D& /*joint*/) + { + } + + bool ConstraintComponent2D::RemoveConstraint(Nz::Constraint2D* constraintPtr) + { + auto it = std::find_if(m_constraints.begin(), m_constraints.end(), [constraintPtr](const ConstraintData& constraintData) { return constraintData.constraint.get() == constraintPtr; }); + if (it != m_constraints.end()) + m_constraints.erase(it); + + return !m_constraints.empty(); + } + ComponentIndex ConstraintComponent2D::componentIndex; } diff --git a/SDK/src/NDK/Components/DebugComponent.cpp b/SDK/src/NDK/Components/DebugComponent.cpp index 6c8ab9f1c..604e1d143 100644 --- a/SDK/src/NDK/Components/DebugComponent.cpp +++ b/SDK/src/NDK/Components/DebugComponent.cpp @@ -3,8 +3,33 @@ // For conditions of distribution and use, see copyright notice in Prerequisites.hpp #include +#include namespace Ndk { + void DebugComponent::DetachDebugRenderables(GraphicsComponent& gfxComponent) + { + for (auto& renderable : m_debugRenderables) + { + if (renderable) + { + gfxComponent.Detach(renderable); + renderable.Reset(); + } + } + } + + void DebugComponent::OnComponentDetached(BaseComponent& component) + { + if (IsComponent(component)) + DetachDebugRenderables(static_cast(component)); + } + + void DebugComponent::OnDetached() + { + if (m_entity->HasComponent()) + DetachDebugRenderables(m_entity->GetComponent()); + } + ComponentIndex DebugComponent::componentIndex; } diff --git a/SDK/src/NDK/Components/GraphicsComponent.cpp b/SDK/src/NDK/Components/GraphicsComponent.cpp index f865e749b..43bfa3b54 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 * @@ -60,12 +88,13 @@ namespace Ndk for (std::size_t i = 0; i < materialCount; ++i) RegisterMaterial(entry.renderable->GetMaterial(i)); - InvalidateBoundingVolume(); + InvalidateAABB(); + ForceCullingInvalidation(); } 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,8 +111,7 @@ namespace Ndk r.dataUpdated = false; r.renderable->InvalidateData(&r.data, flags); - for (VolumeCullingEntry& entry : m_volumeCullingEntries) - entry.listEntry.ForceInvalidation(); + ForceCullingInvalidation(); } void GraphicsComponent::InvalidateRenderableMaterial(const Nz::InstancedRenderable* renderable, std::size_t skinIndex, std::size_t matIndex, const Nz::MaterialRef& newMat) @@ -96,9 +124,11 @@ namespace Ndk const Nz::MaterialRef& oldMat = renderable->GetMaterial(skinIndex, matIndex); UnregisterMaterial(oldMat); + + ForceCullingInvalidation(); } - void Ndk::GraphicsComponent::InvalidateReflectionMap() + void GraphicsComponent::InvalidateReflectionMap() { m_entity->Invalidate(); @@ -202,6 +232,8 @@ namespace Ndk std::size_t materialCount = renderable->GetMaterialCount(); for (std::size_t i = 0; i < materialCount; ++i) UnregisterMaterial(renderable->GetMaterial(i)); + + ForceCullingInvalidation(); } void GraphicsComponent::OnInstancedRenderableSkinChange(const Nz::InstancedRenderable* renderable, std::size_t newSkinIndex) @@ -212,6 +244,8 @@ namespace Ndk for (std::size_t i = 0; i < materialCount; ++i) UnregisterMaterial(renderable->GetMaterial(i)); + + ForceCullingInvalidation(); } void GraphicsComponent::OnMaterialReflectionChange(const Nz::Material* material, Nz::ReflectionMode reflectionMode) @@ -234,11 +268,10 @@ namespace Ndk NazaraUnused(node); // Our view matrix depends on NodeComponent position/rotation - InvalidateBoundingVolume(); + InvalidateAABB(); InvalidateTransformMatrix(); - for (VolumeCullingEntry& entry : m_volumeCullingEntries) - entry.listEntry.ForceInvalidation(); //< Force invalidation on movement + ForceCullingInvalidation(); //< Force invalidation on movement for now (FIXME) } void GraphicsComponent::UnregisterMaterial(Nz::Material* material) @@ -263,36 +296,38 @@ 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.Set(-1.f, -1.f, -1.f); - for (VolumeCullingEntry& entry : m_volumeCullingEntries) - entry.listEntry.UpdateVolume(m_boundingVolume); + bool isAabbSet = false; + + for (const Renderable& r : m_renderables) + { + 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 (isAabbSet) + m_aabb.ExtendTo(r.boundingVolume.aabb); + else + { + m_aabb.Set(r.boundingVolume.aabb); + isAabbSet = true; + } + } + } + + m_boundingVolumesUpdated = true; + + for (CullingBoxEntry& entry : m_cullingBoxEntries) + entry.listEntry.UpdateBox(m_aabb); } /*! diff --git a/SDK/src/NDK/Components/LifetimeComponent.cpp b/SDK/src/NDK/Components/LifetimeComponent.cpp new file mode 100644 index 000000000..5ffa6da82 --- /dev/null +++ b/SDK/src/NDK/Components/LifetimeComponent.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 LifetimeComponent::componentIndex; +} diff --git a/SDK/src/NDK/Components/PhysicsComponent2D.cpp b/SDK/src/NDK/Components/PhysicsComponent2D.cpp index e2e199a22..871fa762e 100644 --- a/SDK/src/NDK/Components/PhysicsComponent2D.cpp +++ b/SDK/src/NDK/Components/PhysicsComponent2D.cpp @@ -29,11 +29,19 @@ 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::Vector2f positionOffset; Nz::Collider2DRef geom; if (m_entity->HasComponent()) - geom = m_entity->GetComponent().GetGeom(); + { + const CollisionComponent2D& entityCollision = m_entity->GetComponent(); + geom = entityCollision.GetGeom(); + positionOffset = entityCollision.GetStaticBody()->GetPositionOffset(); //< Calling GetGeomOffset would retrieve current component which is not yet initialized + } + else + positionOffset = Nz::Vector2f::Zero(); Nz::Matrix4f matrix; if (m_entity->HasComponent()) @@ -42,8 +50,12 @@ namespace Ndk matrix.MakeIdentity(); m_object = std::make_unique(&world, 1.f, geom); + m_object->SetPositionOffset(positionOffset); m_object->SetPosition(Nz::Vector2f(matrix.GetTranslation())); m_object->SetUserdata(reinterpret_cast(static_cast(m_entity->GetId()))); + + if (m_pendingStates.valid) + ApplyPhysicsState(*m_object); } /*! @@ -86,7 +98,11 @@ namespace Ndk void PhysicsComponent2D::OnDetached() { - m_object.reset(); + if (m_object) + { + CopyPhysicsState(*m_object); + m_object.reset(); + } } void PhysicsComponent2D::OnEntityDestruction() diff --git a/SDK/src/NDK/Console.cpp b/SDK/src/NDK/Console.cpp index e5b4f1306..e98ad90ec 100644 --- a/SDK/src/NDK/Console.cpp +++ b/SDK/src/NDK/Console.cpp @@ -4,14 +4,12 @@ #include #include -#include #include #include #include +#include #include -///TODO: For now is unable to display different color in the history, it needs a RichTextDrawer to do so - namespace Ndk { namespace @@ -34,71 +32,76 @@ namespace Ndk * \param instance Lua instance that will interact with the world */ - Console::Console(World& world, const Nz::Vector2f& size, Nz::LuaState& state) : + Console::Console(BaseWidget* parent) : + BaseWidget(parent), m_historyPosition(0), m_defaultFont(Nz::Font::GetDefault()), - m_state(state), - m_size(size), - m_opened(false), - m_characterSize(24) + m_characterSize(24), + m_maxHistoryLines(200) { - Nz::MaterialRef backgroundMaterial = Nz::Material::New(); - backgroundMaterial->EnableBlending(true); - backgroundMaterial->EnableDepthBuffer(false); - backgroundMaterial->SetDstBlend(Nz::BlendFunc_InvSrcAlpha); - backgroundMaterial->SetSrcBlend(Nz::BlendFunc_SrcAlpha); - - // History bakckground - m_historyBackgroundSprite = Nz::Sprite::New(); - m_historyBackgroundSprite->SetColor(Nz::Color(80, 80, 160, 128)); - m_historyBackgroundSprite->SetMaterial(backgroundMaterial); - - m_historyBackground = world.CreateEntity(); - m_historyBackground->Enable(m_opened); - m_historyBackground->AddComponent().Attach(m_historyBackgroundSprite, -1); - m_historyBackground->AddComponent().SetParent(this); - // History - m_historyDrawer.SetCharacterSize(m_characterSize); - m_historyDrawer.SetColor(Nz::Color(200, 200, 200)); - m_historyDrawer.SetFont(m_defaultFont); + m_history = Add(); + m_history->EnableBackground(true); + m_history->EnableLineWrap(true); + m_history->SetReadOnly(true); + m_history->SetBackgroundColor(Nz::Color(80, 80, 160, 128)); - m_historyTextSprite = Nz::TextSprite::New(); - - m_history = world.CreateEntity(); - m_history->Enable(m_opened); - m_history->AddComponent().Attach(m_historyTextSprite); - - Ndk::NodeComponent& historyNode = m_history->AddComponent(); - historyNode.SetParent(this); - - // Input background - m_inputBackgroundSprite = Nz::Sprite::New(); - m_inputBackgroundSprite->SetColor(Nz::Color(255, 255, 255, 200)); - m_inputBackgroundSprite->SetMaterial(backgroundMaterial); - - m_inputBackground = world.CreateEntity(); - m_inputBackground->Enable(m_opened); - m_inputBackground->AddComponent().Attach(m_inputBackgroundSprite, -1); - m_inputBackground->AddComponent().SetParent(this); + m_historyArea = Add(m_history); // Input - m_inputDrawer.SetColor(Nz::Color::Black); - m_inputDrawer.SetCharacterSize(m_characterSize); - m_inputDrawer.SetFont(m_defaultFont); - m_inputDrawer.SetText(s_inputPrefix); + m_input = Add(); + m_input->EnableBackground(true); + m_input->SetText(s_inputPrefix); + m_input->SetTextColor(Nz::Color::Black); - m_inputTextSprite = Nz::TextSprite::New(); - m_inputTextSprite->Update(m_inputDrawer); + m_input->OnTextAreaKeyReturn.Connect(this, &Console::ExecuteInput); - m_input = world.CreateEntity(); - m_input->Enable(m_opened); - m_input->AddComponent().Attach(m_inputTextSprite); + // Protect input prefix from erasure/selection + m_input->SetCursorPosition(s_inputPrefixSize); - Ndk::NodeComponent& inputNode = m_input->AddComponent(); - inputNode.SetParent(this); + m_input->OnTextAreaCursorMove.Connect([](const AbstractTextAreaWidget* textArea, Nz::Vector2ui* newCursorPos) + { + newCursorPos->x = std::max(newCursorPos->x, static_cast(s_inputPrefixSize)); + }); - Layout(); + m_input->OnTextAreaSelection.Connect([](const AbstractTextAreaWidget* textArea, Nz::Vector2ui* start, Nz::Vector2ui* end) + { + start->x = std::max(start->x, static_cast(s_inputPrefixSize)); + end->x = std::max(end->x, static_cast(s_inputPrefixSize)); + }); + + m_input->OnTextAreaKeyBackspace.Connect([](const AbstractTextAreaWidget* textArea, bool* ignoreDefaultAction) + { + if (textArea->GetGlyphIndex() < s_inputPrefixSize) + *ignoreDefaultAction = true; + }); + + // Handle history + m_input->OnTextAreaKeyUp.Connect([&] (const AbstractTextAreaWidget* textArea, bool* ignoreDefaultAction) + { + *ignoreDefaultAction = true; + + if (m_commandHistory.empty()) + return; + + if (m_historyPosition > 0) + m_historyPosition--; + + m_input->SetText(s_inputPrefix + m_commandHistory[m_historyPosition]); + }); + + m_input->OnTextAreaKeyDown.Connect([&] (const AbstractTextAreaWidget* textArea, bool* ignoreDefaultAction) + { + *ignoreDefaultAction = true; + + if (m_commandHistory.empty()) + return; + + if (++m_historyPosition >= m_commandHistory.size()) + m_historyPosition = 0; + + m_input->SetText(s_inputPrefix + m_commandHistory[m_historyPosition]); + }); } /*! @@ -107,110 +110,41 @@ namespace Ndk * \param text New line of text * \param color Color for the text */ - void Console::AddLine(const Nz::String& text, const Nz::Color& color) { - AddLineInternal(text, color); - RefreshHistory(); + if (m_historyLines.size() >= m_maxHistoryLines) + m_historyLines.erase(m_historyLines.begin()); + + m_historyLines.emplace_back(Line{ color, text }); + m_history->SetTextColor(color); + m_history->AppendText(text + '\n'); + m_history->Resize(m_history->GetPreferredSize()); + m_historyArea->Resize(m_historyArea->GetSize()); + m_historyArea->ScrollToRatio(1.f); } /*! * \brief Clears the console + * + * Clears the console history and input */ - void Console::Clear() { m_historyLines.clear(); - RefreshHistory(); + m_history->Clear(); + m_history->Resize(m_history->GetPreferredSize()); + m_historyArea->Resize(m_historyArea->GetSize()); + m_input->SetText(s_inputPrefix); } /*! - * \brief Sends a character to the console + * \brief Clears the console focus * - * \param character Character that will be added to the console + * Clear console input widget focus (if owned) */ - - void Console::SendCharacter(char32_t character) + void Console::ClearFocus() { - switch (character) - { - case '\b': - { - Nz::String input = m_inputDrawer.GetText(); - if (input.GetLength() <= s_inputPrefixSize) // Prevent removal of the input prefix - return; // Ignore if no user character is there - - input.Resize(-1, Nz::String::HandleUtf8); - m_inputDrawer.SetText(input); - break; - } - - case '\r': - case '\n': - ExecuteInput(); - break; - - default: - { - if (Nz::Unicode::GetCategory(character) == Nz::Unicode::Category_Other_Control) - return; - - m_inputDrawer.AppendText(Nz::String::Unicode(character)); - break; - } - } - - m_inputTextSprite->Update(m_inputDrawer); - } - - /*! - * \brief Sends an event to the console - * - * \param event Event to be takin into consideration by the console - */ - void Console::SendEvent(const Nz::WindowEvent& event) - { - switch (event.type) - { - case Nz::WindowEventType_TextEntered: - SendCharacter(event.text.character); - break; - - case Nz::WindowEventType_KeyPressed: - { - switch (event.key.code) - { - case Nz::Keyboard::Down: - case Nz::Keyboard::Up: - { - if (event.key.code == Nz::Keyboard::Up) - m_historyPosition = std::min(m_commandHistory.size(), m_historyPosition + 1); - else - { - if (m_historyPosition > 1) - m_historyPosition--; - else if (m_historyPosition == 0) - m_historyPosition = 1; - } - - if (!m_commandHistory.empty()) - { - Nz::String text = m_commandHistory[m_commandHistory.size() - m_historyPosition]; - m_inputDrawer.SetText(s_inputPrefix + text); - m_inputTextSprite->Update(m_inputDrawer); - } - break; - } - - default: - break; - } - break; - } - - default: - break; - } + m_input->ClearFocus(); } /*! @@ -218,30 +152,23 @@ namespace Ndk * * \param size Size of the font */ - void Console::SetCharacterSize(unsigned int size) { m_characterSize = size; - m_historyDrawer.SetCharacterSize(m_characterSize); - m_historyTextSprite->Update(m_historyDrawer); - m_inputDrawer.SetCharacterSize(m_characterSize); - m_inputTextSprite->Update(m_inputDrawer); + m_history->SetCharacterSize(size); + m_input->SetCharacterSize(size); Layout(); } /*! - * \brief Sets the console size + * \brief Give the console input focus * - * \param size (Width, Height) of the console */ - - void Console::SetSize(const Nz::Vector2f& size) + void Console::SetFocus() { - m_size = size; - m_historyBackgroundSprite->SetSize(m_size); - Layout(); + m_input->SetFocus(); } /*! @@ -251,121 +178,55 @@ namespace Ndk * * \remark Produces a NazaraAssert if font is invalid or null */ - void Console::SetTextFont(Nz::FontRef font) { NazaraAssert(font && font->IsValid(), "Invalid font"); m_defaultFont = std::move(font); - m_historyDrawer.SetFont(m_defaultFont); - m_inputDrawer.SetFont(m_defaultFont); + m_history->SetTextFont(m_defaultFont); + m_input->SetTextFont(m_defaultFont); Layout(); } - /*! - * \brief Shows the console - * - * \param show Should the console be showed - */ - - void Console::Show(bool show) - { - if (m_opened != show) - { - m_historyBackground->Enable(show); - m_history->Enable(show); - m_input->Enable(show); - m_inputBackground->Enable(show); - - m_opened = show; - } - } - - /*! - * \brief Adds a line to the history of the console - * - * \param text New line of text - * \param color Color for the text - */ - - void Console::AddLineInternal(const Nz::String& text, const Nz::Color& color) - { - m_historyLines.emplace_back(Line{color, text}); - } - /*! * \brief Performs this action when an input is added to the console */ - - void Console::ExecuteInput() + void Console::ExecuteInput(const AbstractTextAreaWidget* textArea, bool* ignoreDefaultAction) { - Nz::String input = m_inputDrawer.GetText(); + NazaraAssert(textArea == m_input, "Unexpected signal from an other text area"); + + *ignoreDefaultAction = true; + + Nz::String input = m_input->GetText(); Nz::String inputCmd = input.SubString(s_inputPrefixSize); - m_inputDrawer.SetText(s_inputPrefix); + m_input->SetText(s_inputPrefix); if (m_commandHistory.empty() || m_commandHistory.back() != inputCmd) m_commandHistory.push_back(inputCmd); - m_historyPosition = 0; + m_historyPosition = m_commandHistory.size(); - AddLineInternal(input); //< With the input prefix + AddLine(input); //< With the input prefix - if (!m_state.Execute(inputCmd)) - AddLineInternal(m_state.GetLastError(), Nz::Color::Red); - - RefreshHistory(); + OnCommand(this, inputCmd); } /*! * \brief Places the console according to its layout */ - void Console::Layout() { + Nz::Vector2f origin = Nz::Vector2f(GetPosition()); + const Nz::Vector2f& size = GetSize(); + unsigned int lineHeight = m_defaultFont->GetSizeInfo(m_characterSize).lineHeight; + float historyHeight = size.y - lineHeight; - Ndk::NodeComponent& inputNode = m_input->GetComponent(); - inputNode.SetPosition(0.f, m_size.y - lineHeight - 5.f); + m_historyArea->SetPosition(origin.x, origin.y); + m_historyArea->Resize({ size.x, historyHeight - 4.f }); - float historyHeight = m_size.y - lineHeight - 5.f - 2.f; - m_historyBackgroundSprite->SetSize(m_size.x, historyHeight); - - m_maxHistoryLines = static_cast(std::ceil(historyHeight / lineHeight)); - - Ndk::NodeComponent& historyNode = m_history->GetComponent(); - historyNode.SetPosition(0.f, historyHeight - m_maxHistoryLines * lineHeight); - - Ndk::NodeComponent& inputBackgroundNode = m_inputBackground->GetComponent(); - inputBackgroundNode.SetPosition(0.f, historyHeight + 2.f); - - m_inputBackgroundSprite->SetSize(m_size.x, m_size.y - historyHeight); - } - - /*! - * \brief Refreshes the history of the console - */ - - void Console::RefreshHistory() - { - m_historyDrawer.Clear(); - auto it = m_historyLines.end(); - if (m_historyLines.size() > m_maxHistoryLines) - it -= m_maxHistoryLines; - else - it = m_historyLines.begin(); - - for (unsigned int i = 0; i < m_maxHistoryLines; ++i) - { - if (m_maxHistoryLines - i <= m_historyLines.size() && it != m_historyLines.end()) - { - m_historyDrawer.AppendText(it->text); - ++it; - } - - m_historyDrawer.AppendText(Nz::String('\n')); - } - - m_historyTextSprite->Update(m_historyDrawer); + m_input->Resize({size.x, size.y - historyHeight}); + m_input->SetPosition(origin.x, origin.y + historyHeight); } } diff --git a/SDK/src/NDK/Entity.cpp b/SDK/src/NDK/Entity.cpp index ffcce07f0..8086e5905 100644 --- a/SDK/src/NDK/Entity.cpp +++ b/SDK/src/NDK/Entity.cpp @@ -97,6 +97,36 @@ namespace Ndk return m_world->CloneEntity(m_id); } + /*! + * \brief Detaches a component from the entity + * \return An owning pointer to the component + * + * Instantly detaches a component from the entity and returns it, allowing to attach it to another entity + * + * \remark Unlike RemoveComponent, this function instantly removes the component + */ + std::unique_ptr Entity::DropComponent(ComponentIndex index) + { + if (!HasComponent(index)) + return nullptr; + + // We get the component and we alert existing components of the deleted one + std::unique_ptr component = std::move(m_components[index]); + m_components[index].reset(); + + for (std::size_t i = m_componentBits.FindFirst(); i != m_componentBits.npos; i = m_componentBits.FindNext(i)) + { + if (i != index) + m_components[i]->OnComponentDetached(*component); + } + m_componentBits.Reset(index); + m_removedComponentBits.UnboundedReset(index); + + component->SetEntity(nullptr); + + return component; + } + /*! * \brief Enables the entity * @@ -111,11 +141,15 @@ namespace Ndk { for (std::size_t i = m_componentBits.FindFirst(); i != m_componentBits.npos; i = m_componentBits.FindNext(i)) m_components[i]->OnEntityEnabled(); + + OnEntityEnabled(this); } else { for (std::size_t i = m_componentBits.FindFirst(); i != m_componentBits.npos; i = m_componentBits.FindNext(i)) m_components[i]->OnEntityDisabled(); + + OnEntityDisabled(this); } Invalidate(); @@ -133,13 +167,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 */ @@ -195,32 +238,4 @@ namespace Ndk m_valid = false; } - - /*! - * \brief Destroys a component by index - * - * \param index Index of the component - * - * \remark If component is not available, no action is performed - */ - - void Entity::DestroyComponent(ComponentIndex index) - { - if (HasComponent(index)) - { - // We get the component and we alert existing components of the deleted one - BaseComponent& component = *m_components[index].get(); - for (std::size_t i = m_componentBits.FindFirst(); i != m_componentBits.npos; i = m_componentBits.FindNext(i)) - { - if (i != index) - m_components[i]->OnComponentDetached(component); - } - - component.SetEntity(nullptr); - - m_components[index].reset(); - m_componentBits.Reset(index); - } - } - } 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_Math.cpp b/SDK/src/NDK/Lua/LuaBinding_Math.cpp index c218c2a66..15deebfab 100644 --- a/SDK/src/NDK/Lua/LuaBinding_Math.cpp +++ b/SDK/src/NDK/Lua/LuaBinding_Math.cpp @@ -282,7 +282,7 @@ namespace Ndk { case 1: if (lua.IsOfType(argIndex, "Matrix4")) - instance.Set(*static_cast(lua.ToUserdata(argIndex))); + instance = *static_cast(lua.ToUserdata(argIndex)); break; case 16: @@ -291,7 +291,7 @@ namespace Ndk for (std::size_t i = 0; i < 16; ++i) values[i] = lua.CheckNumber(argIndex++); - instance.Set(values); + instance = Nz::Matrix4d(values); return 0; } 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_SDK.cpp b/SDK/src/NDK/Lua/LuaBinding_SDK.cpp index 36c28d973..805f7742d 100644 --- a/SDK/src/NDK/Lua/LuaBinding_SDK.cpp +++ b/SDK/src/NDK/Lua/LuaBinding_SDK.cpp @@ -62,24 +62,14 @@ namespace Ndk console.BindMethod("AddLine", &Console::AddLine, Nz::Color::White); console.BindMethod("Clear", &Console::Clear); console.BindMethod("GetCharacterSize", &Console::GetCharacterSize); - console.BindMethod("GetHistory", &Console::GetHistory); - console.BindMethod("GetHistoryBackground", &Console::GetHistoryBackground); - console.BindMethod("GetInput", &Console::GetInput); - console.BindMethod("GetInputBackground", &Console::GetInputBackground); - console.BindMethod("GetSize", &Console::GetSize); + //console.BindMethod("GetHistory", &Console::GetHistory); + //console.BindMethod("GetInput", &Console::GetInput); console.BindMethod("GetTextFont", &Console::GetTextFont); console.BindMethod("IsValidHandle", &ConsoleHandle::IsValid); - console.BindMethod("IsVisible", &Console::IsVisible); - - console.BindMethod("SendCharacter", &Console::SendCharacter); - //consoleClass.SetMethod("SendEvent", &Console::SendEvent); console.BindMethod("SetCharacterSize", &Console::SetCharacterSize); - console.BindMethod("SetSize", &Console::SetSize); console.BindMethod("SetTextFont", &Console::SetTextFont); - - console.BindMethod("Show", &Console::Show, true); } #endif diff --git a/SDK/src/NDK/Lua/LuaBinding_Utility.cpp b/SDK/src/NDK/Lua/LuaBinding_Utility.cpp index 5fdd52d01..262620b12 100644 --- a/SDK/src/NDK/Lua/LuaBinding_Utility.cpp +++ b/SDK/src/NDK/Lua/LuaBinding_Utility.cpp @@ -123,12 +123,13 @@ namespace Ndk lua.Push(instance->GetCachedGlyphCount()); return 1; - case 2: + case 3: { unsigned int characterSize = lua.Check(&argIndex); - Nz::UInt32 style = lua.Check(&argIndex); + Nz::TextStyleFlags style = lua.Check(&argIndex); + float outlineThickness = lua.Check(&argIndex); - lua.Push(instance->GetCachedGlyphCount(characterSize, style)); + lua.Push(instance->GetCachedGlyphCount(characterSize, style, outlineThickness)); return 1; } } @@ -146,9 +147,7 @@ namespace Ndk font.BindMethod("IsValid", &Nz::Font::IsValid); - 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("Precache", (bool(Nz::Font::*)(unsigned int, Nz::TextStyleFlags, float, const Nz::String&) const) &Nz::Font::Precache); font.BindMethod("SetGlyphBorder", &Nz::Font::SetGlyphBorder); font.BindMethod("SetMinimumStepSize", &Nz::Font::SetMinimumStepSize); @@ -157,6 +156,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/Sdk.cpp b/SDK/src/NDK/Sdk.cpp index 90d07c738..341e6f0d5 100644 --- a/SDK/src/NDK/Sdk.cpp +++ b/SDK/src/NDK/Sdk.cpp @@ -17,11 +17,13 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include #include @@ -88,6 +90,7 @@ namespace Ndk // Shared components InitializeComponent("NdkColl2"); InitializeComponent("NdkColl3"); + InitializeComponent("NdkLiftm"); InitializeComponent("NdkNode"); InitializeComponent("NdkPhys2"); InitializeComponent("NdkPhys3"); @@ -110,6 +113,7 @@ namespace Ndk BaseSystem::Initialize(); // Shared systems + InitializeSystem(); InitializeSystem(); InitializeSystem(); InitializeSystem(); diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp index 0da17c352..5b8bb7aa6 100644 --- a/SDK/src/NDK/Systems/DebugSystem.cpp +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -8,10 +8,12 @@ #include #include #include +#include #include #include #include #include +#include namespace Ndk { @@ -20,9 +22,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,19 +34,20 @@ namespace Ndk m_meshData.vertexBuffer = m_vertexBuffer; } - void UpdateBoundingVolume(InstanceData* instanceData) const override + void UpdateBoundingVolume(InstanceData* /*instanceData*/) const override { } 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: Ndk::EntityHandle m_entityOwner; Nz::IndexBufferRef m_indexBuffer; - Nz::MaterialRef m_material; Nz::MeshData m_meshData; Nz::VertexBufferRef m_vertexBuffer; }; @@ -53,7 +55,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 { @@ -62,25 +69,43 @@ 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, const Nz::MaterialRef& mat) + { + 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, mat, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); + }; - renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); + 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, m_localMaterial); + } } std::unique_ptr Clone() const override { 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 { @@ -89,21 +114,31 @@ namespace Ndk const DebugComponent& entityDebug = m_entityOwner->GetComponent(); const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); - Nz::Boxf obb = entityGfx.GetBoundingVolume().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 { return nullptr; } + + private: + Nz::MaterialRef m_material; }; } @@ -118,12 +153,174 @@ namespace Ndk /*! * \brief Constructs an DebugSystem object by default */ - DebugSystem::DebugSystem() + DebugSystem::DebugSystem() : + m_isDepthBufferEnabled(true) { - Requires(); + Requires(); SetUpdateOrder(1000); //< Update last } + void DebugSystem::EnableDepthBuffer(bool enable) + { + m_isDepthBufferEnabled = enable; + + if (m_collisionMaterial) + m_collisionMaterial->EnableDepthBuffer(enable); + + if (m_globalAabbMaterial) + m_globalAabbMaterial->EnableDepthBuffer(enable); + + if (m_localAabbMaterial) + m_localAabbMaterial->EnableDepthBuffer(enable); + + if (m_obbMaterial) + m_obbMaterial->EnableDepthBuffer(enable); + } + + 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::GenerateCollision2DMesh(Entity* entity, Nz::Vector3f* offset) + { + if (entity->HasComponent()) + { + CollisionComponent2D& entityCollision = entity->GetComponent(); + const Nz::Collider2DRef& geom = entityCollision.GetGeom(); + + std::vector vertices; + std::vector indices; + + geom->ForEachPolygon([&](const Nz::Vector2f* polygonVertices, std::size_t vertexCount) + { + std::size_t firstIndex = vertices.size(); + + // Don't reserve and let the vector handle its own capacity + for (std::size_t i = 0; i < vertexCount; ++i) + vertices.emplace_back(*polygonVertices++); + + 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, Nz::UInt32(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), 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(); + + Nz::StaticMeshRef subMesh = Nz::StaticMesh::New(vertexBuffer, 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()); + + // Find center of mass + if (entity->HasComponent()) + { + const PhysicsComponent2D& entityPhys = entity->GetComponent(); + *offset = entityPhys.GetMassCenter(Nz::CoordSys_Local) + entityCollision.GetGeomOffset(); + } + else + *offset = entityCollision.GetGeomOffset(); + + return model; + } + else + return nullptr; + } + + 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 Nz::Vector3f* polygonVertices, std::size_t vertexCount) + { + std::size_t firstIndex = vertices.size(); + vertices.resize(firstIndex + vertexCount); + std::copy(polygonVertices, polygonVertices + vertexCount, &vertices[firstIndex]); + + 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, Nz::UInt32(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), 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(); + + Nz::StaticMeshRef subMesh = Nz::StaticMesh::New(vertexBuffer, 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; + } + std::pair DebugSystem::GetBoxMesh() { if (!m_boxMeshIndexBuffer) @@ -175,12 +372,73 @@ namespace Ndk return { m_boxMeshIndexBuffer, m_boxMeshVertexBuffer }; } + Nz::MaterialRef DebugSystem::GetGlobalAABBMaterial() + { + if (!m_globalAabbMaterial) + { + 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); + //m_globalAabbMaterial->SetLineWidth(2.f); + } + + 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); + //m_localAabbMaterial->SetLineWidth(2.f); + } + + return m_localAabbMaterial; + } + + 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); + //m_collisionMaterial->SetLineWidth(2.f); + } + + 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); + //m_obbMaterial->SetLineWidth(2.f); + } + + return m_obbMaterial; + } + void DebugSystem::OnEntityValidation(Entity* entity, bool /*justAdded*/) { static constexpr int DebugDrawOrder = 1'000; DebugComponent& entityDebug = entity->GetComponent(); GraphicsComponent& entityGfx = entity->GetComponent(); + NodeComponent& entityNode = entity->GetComponent(); DebugDrawFlags enabledFlags = entityDebug.GetEnabledFlags(); DebugDrawFlags flags = entityDebug.GetFlags(); @@ -193,17 +451,24 @@ namespace Ndk { switch (option) { + case DebugDraw::Collider2D: + { + Nz::Vector3f offset; + Nz::InstancedRenderableRef renderable = GenerateCollision2DMesh(entity, &offset); + if (renderable) + entityGfx.Attach(renderable, Nz::Matrix4f::Translate(offset), DebugDrawOrder); + + entityDebug.UpdateDebugRenderable(option, std::move(renderable)); + break; + } + 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)); break; @@ -213,7 +478,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); @@ -257,125 +522,5 @@ namespace Ndk // 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, Nz::UInt32(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), 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(); - - Nz::StaticMeshRef subMesh = Nz::StaticMesh::New(vertexBuffer, 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/Systems/LifetimeSystem.cpp b/SDK/src/NDK/Systems/LifetimeSystem.cpp new file mode 100644 index 000000000..d575ebdc4 --- /dev/null +++ b/SDK/src/NDK/Systems/LifetimeSystem.cpp @@ -0,0 +1,27 @@ +// 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 + +namespace Ndk +{ + LifetimeSystem::LifetimeSystem() + { + Requires(); + } + + void LifetimeSystem::OnUpdate(float elapsedTime) + { + for (const Ndk::EntityHandle& entity : GetEntities()) + { + auto& lifetime = entity->GetComponent(); + + if (lifetime.UpdateLifetime(elapsedTime)) + entity->Kill(); + } + } + + SystemIndex LifetimeSystem::systemIndex; +} diff --git a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp index 95c3f426b..4b6386c74 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,135 @@ 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; + + GetPhysWorld().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 = GetPhysWorld().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; + if (GetPhysWorld().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 true; + } + else + return false; + } + + void PhysicsSystem2D::RaycastQuery(const Nz::Vector2f & from, const Nz::Vector2f & to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, const std::function& callback) + { + return GetPhysWorld().RaycastQuery(from, to, radius, collisionGroup, categoryMask, collisionMask, [this, &callback](const Nz::PhysWorld2D::RaycastHit& hitInfo) + { + callback({ + GetEntityFromBody(*hitInfo.nearestBody), + hitInfo.hitPos, + hitInfo.hitNormal, + hitInfo.fraction + }); + }); + } + + 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 = GetPhysWorld().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; + if (GetPhysWorld().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 true; + } + else + return false; + } + + void PhysicsSystem2D::RegionQuery(const Nz::Rectf& boundingBox, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, const std::function& callback) + { + return GetPhysWorld().RegionQuery(boundingBox, collisionGroup, categoryMask, collisionMask, [this, &callback](Nz::RigidBody2D* body) + { + callback(GetEntityFromBody(*body)); + }); + } + + void PhysicsSystem2D::RegionQuery(const Nz::Rectf& boundingBox, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector* bodies) + { + std::vector queryResult; + GetPhysWorld().RegionQuery(boundingBox, collisionGroup, categoryMask, collisionMask, &queryResult); + + for (auto& body : queryResult) + { + bodies->emplace_back(GetEntityFromBody(*body)); + } } /*! @@ -47,18 +174,34 @@ 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); + + m_staticObjects.Remove(entity); + } + else + { + 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(Nz::CoordSys_Global))); + //physObj->SetRotation(node.GetRotation()); + } } - auto& entities = (entity->HasComponent()) ? m_dynamicObjects : m_staticObjects; - entities.Insert(entity); - - if (!m_world) + if (!m_physWorld) CreatePhysWorld(); } @@ -70,10 +213,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) { @@ -81,7 +224,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); } @@ -97,7 +240,7 @@ namespace Ndk Nz::Vector2f newPosition = Nz::Vector2f(node.GetPosition(Nz::CoordSys_Global)); // To move static objects and ensure their collisions, we have to specify them a velocity - // (/!\: the physical motor does not apply the speed on static objects) + // (/!\: the physical engine does not apply the speed on static objects) if (newPosition != oldPosition) { body->SetPosition(newPosition); @@ -106,8 +249,7 @@ namespace Ndk else body->SetVelocity(Nz::Vector2f::Zero()); -/* - if (newRotation != oldRotation) + /*if (newRotation != oldRotation) { Nz::Quaternionf transition = newRotation * oldRotation.GetConjugate(); Nz::EulerAnglesf angles = transition.ToEulerAngles(); @@ -119,10 +261,91 @@ namespace Ndk physObj->SetAngularVelocity(angularVelocity); } else - physObj->SetAngularVelocity(Nz::Vector3f::Zero()); -*/ + physObj->SetAngularVelocity(Nz::Vector3f::Zero());*/ } } + void PhysicsSystem2D::RegisterCallbacks(unsigned int collisionId, Callback callbacks) + { + Nz::PhysWorld2D::Callback worldCallbacks; + + if (callbacks.endCallback) + { + 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); + }; + } + + if (callbacks.preSolveCallback) + { + 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); + }; + } + + if (callbacks.postSolveCallback) + { + 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); + }; + } + + if (callbacks.startCallback) + { + 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); + }; + } + + worldCallbacks.userdata = callbacks.userdata; + + m_physWorld->RegisterCallbacks(collisionId, worldCallbacks); + } + + void PhysicsSystem2D::RegisterCallbacks(unsigned int collisionIdA, unsigned int collisionIdB, Callback callbacks) + { + Nz::PhysWorld2D::Callback worldCallbacks; + + if (callbacks.endCallback) + { + 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); + }; + } + + if (callbacks.preSolveCallback) + { + 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); + }; + } + + if (callbacks.postSolveCallback) + { + 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); + }; + } + + if (callbacks.startCallback) + { + 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); + }; + } + + worldCallbacks.userdata = callbacks.userdata; + + m_physWorld->RegisterCallbacks(collisionIdA, collisionIdB, worldCallbacks); + } + SystemIndex PhysicsSystem2D::systemIndex; } diff --git a/SDK/src/NDK/Systems/PhysicsSystem3D.cpp b/SDK/src/NDK/Systems/PhysicsSystem3D.cpp index d0256a416..4e905a64c 100644 --- a/SDK/src/NDK/Systems/PhysicsSystem3D.cpp +++ b/SDK/src/NDK/Systems/PhysicsSystem3D.cpp @@ -69,8 +69,8 @@ namespace Ndk auto& node = entity->GetComponent(); Nz::RigidBody3D* physObj = collision.GetStaticBody(); - physObj->SetPosition(node.GetPosition()); - physObj->SetRotation(node.GetRotation()); + physObj->SetPosition(node.GetPosition(Nz::CoordSys_Global)); + physObj->SetRotation(node.GetRotation(Nz::CoordSys_Global)); } } diff --git a/SDK/src/NDK/Systems/RenderSystem.cpp b/SDK/src/NDK/Systems/RenderSystem.cpp index 01ae6b2ac..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 @@ -34,7 +35,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()); @@ -183,6 +185,8 @@ namespace Ndk m_coordinateSystemInvalidated = false; } + Nz::SkinningManager::Skin(); + UpdateDynamicReflections(); UpdatePointSpotShadowMaps(); @@ -194,16 +198,22 @@ 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; - std::size_t visibilityHash = m_drawableCulling.Cull(camComponent.GetFrustum(), &forceInvalidation); + const Nz::Frustumf& frustum = camComponent.GetFrustum(); + + std::size_t visibilityHash; + if (m_isCullingEnabled) + visibilityHash = m_drawableCulling.Cull(frustum, &forceInvalidation); + else + visibilityHash = m_drawableCulling.FillWithAllEntries(&forceInvalidation); // Always regenerate renderqueue if particle groups are present for now (FIXME) if (!m_lights.empty() || !m_particleGroups.empty()) @@ -212,9 +222,12 @@ 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->AddToRenderQueueByCulling(frustum, renderQueue); + for (const Ndk::EntityHandle& light : m_lights) { LightComponent& lightComponent = light->GetComponent(); diff --git a/SDK/src/NDK/Systems/VelocitySystem.cpp b/SDK/src/NDK/Systems/VelocitySystem.cpp index 35109dbcd..714b9b7ae 100644 --- a/SDK/src/NDK/Systems/VelocitySystem.cpp +++ b/SDK/src/NDK/Systems/VelocitySystem.cpp @@ -42,7 +42,7 @@ namespace Ndk NodeComponent& node = entity->GetComponent(); const VelocityComponent& velocity = entity->GetComponent(); - node.Move(velocity.linearVelocity * elapsedTime, Nz::CoordSys_Global); + node.Move(velocity.linearVelocity * elapsedTime, velocity.coordSys); } } diff --git a/SDK/src/NDK/Widgets/AbstractTextAreaWidget.cpp b/SDK/src/NDK/Widgets/AbstractTextAreaWidget.cpp new file mode 100644 index 000000000..ddb3467f5 --- /dev/null +++ b/SDK/src/NDK/Widgets/AbstractTextAreaWidget.cpp @@ -0,0 +1,489 @@ +// 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 + +namespace Ndk +{ + namespace + { + constexpr float paddingWidth = 5.f; + constexpr float paddingHeight = 3.f; + } + + AbstractTextAreaWidget::AbstractTextAreaWidget(BaseWidget* parent) : + BaseWidget(parent), + m_characterFilter(), + m_echoMode(EchoMode_Normal), + m_cursorPositionBegin(0U, 0U), + m_cursorPositionEnd(0U, 0U), + m_isLineWrapEnabled(false), + m_isMouseButtonDown(false), + m_multiLineEnabled(false), + m_readOnly(false), + m_tabEnabled(false) + { + m_textSprite = Nz::TextSprite::New(); + + m_textEntity = CreateEntity(); + m_textEntity->AddComponent().Attach(m_textSprite); + + auto& textNode = m_textEntity->AddComponent(); + textNode.SetParent(this); + textNode.SetPosition(paddingWidth, paddingHeight); + + m_cursorEntity = CreateEntity(); + m_cursorEntity->AddComponent(); + m_cursorEntity->AddComponent().SetParent(m_textEntity); + m_cursorEntity->GetComponent(); + m_cursorEntity->Enable(false); + + SetCursor(Nz::SystemCursor_Text); + + EnableBackground(true); + } + + void AbstractTextAreaWidget::Clear() + { + Nz::AbstractTextDrawer& textDrawer = GetTextDrawer(); + + m_cursorPositionBegin.MakeZero(); + m_cursorPositionEnd.MakeZero(); + textDrawer.Clear(); + m_textSprite->Update(textDrawer); + SetPreferredSize(Nz::Vector2f(m_textSprite->GetBoundingVolume().obb.localBox.GetLengths())); + + RefreshCursor(); + } + + void AbstractTextAreaWidget::EnableLineWrap(bool enable) + { + if (m_isLineWrapEnabled != enable) + { + m_isLineWrapEnabled = enable; + + Nz::AbstractTextDrawer& textDrawer = GetTextDrawer(); + + if (enable) + textDrawer.SetMaxLineWidth(GetWidth()); + else + textDrawer.SetMaxLineWidth(std::numeric_limits::infinity()); + + UpdateTextSprite(); + } + } + + Nz::Vector2ui AbstractTextAreaWidget::GetHoveredGlyph(float x, float y) const + { + const Nz::AbstractTextDrawer& textDrawer = GetTextDrawer(); + + auto& textNode = m_textEntity->GetComponent(); + Nz::Vector2f textPosition = Nz::Vector2f(textNode.GetPosition(Nz::CoordSys_Local)); + x -= textPosition.x; + y -= textPosition.y; + + std::size_t glyphCount = textDrawer.GetGlyphCount(); + if (glyphCount > 0) + { + std::size_t lineCount = textDrawer.GetLineCount(); + std::size_t line = 0U; + for (; line < lineCount - 1; ++line) + { + Nz::Rectf lineBounds = textDrawer.GetLine(line).bounds; + if (lineBounds.GetMaximum().y > y) + break; + } + + std::size_t upperLimit = (line != lineCount - 1) ? textDrawer.GetLine(line + 1).glyphIndex : glyphCount + 1; + + std::size_t firstLineGlyph = textDrawer.GetLine(line).glyphIndex; + std::size_t i = firstLineGlyph; + for (; i < upperLimit - 1; ++i) + { + Nz::Rectf bounds = textDrawer.GetGlyph(i).bounds; + if (x < bounds.x + bounds.width * 0.75f) + break; + } + + return Nz::Vector2ui(Nz::Vector2(i - firstLineGlyph, line)); + } + + return Nz::Vector2ui::Zero(); + } + + void AbstractTextAreaWidget::Layout() + { + BaseWidget::Layout(); + + if (m_isLineWrapEnabled) + { + Nz::AbstractTextDrawer& textDrawer = GetTextDrawer(); + + textDrawer.SetMaxLineWidth(GetWidth()); + UpdateTextSprite(); + } + + RefreshCursor(); + } + + bool AbstractTextAreaWidget::IsFocusable() const + { + return !m_readOnly; + } + + void AbstractTextAreaWidget::OnFocusLost() + { + m_cursorEntity->Disable(); + } + + void AbstractTextAreaWidget::OnFocusReceived() + { + if (!m_readOnly) + m_cursorEntity->Enable(true); + } + + bool AbstractTextAreaWidget::OnKeyPressed(const Nz::WindowEvent::KeyEvent& key) + { + const Nz::AbstractTextDrawer& textDrawer = GetTextDrawer(); + + switch (key.code) + { + case Nz::Keyboard::Backspace: + { + bool ignoreDefaultAction = false; + OnTextAreaKeyBackspace(this, &ignoreDefaultAction); + + std::size_t cursorGlyphEnd = GetGlyphIndex(m_cursorPositionEnd); + + if (ignoreDefaultAction || cursorGlyphEnd == 0) + return true; + + // When a text is selected, delete key does the same as delete and leave the character behind it + if (HasSelection()) + EraseSelection(); + else + { + MoveCursor(-1); + Erase(GetGlyphIndex(m_cursorPositionBegin)); + } + + return true; + } + + case Nz::Keyboard::Delete: + { + if (HasSelection()) + EraseSelection(); + else + Erase(GetGlyphIndex(m_cursorPositionBegin)); + + return true; + } + + case Nz::Keyboard::Down: + { + bool ignoreDefaultAction = false; + OnTextAreaKeyDown(this, &ignoreDefaultAction); + + 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; + + std::size_t lineCount = textDrawer.GetLineCount(); + if (key.control && lineCount > 0) + SetCursorPosition({ static_cast(textDrawer.GetLineGlyphCount(lineCount - 1)), static_cast(lineCount - 1) }); + else + SetCursorPosition({ static_cast(textDrawer.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, key.control ? 0U : m_cursorPositionEnd.y }); + return true; + } + + case Nz::Keyboard::Left: + { + bool ignoreDefaultAction = false; + OnTextAreaKeyLeft(this, &ignoreDefaultAction); + + if (ignoreDefaultAction) + return true; + + if (HasSelection()) + SetCursorPosition(m_cursorPositionBegin); + else if (key.control) + HandleWordCursorMove(true); + else + MoveCursor(-1); + + return true; + } + + case Nz::Keyboard::Return: + { + bool ignoreDefaultAction = false; + OnTextAreaKeyReturn(this, &ignoreDefaultAction); + + if (ignoreDefaultAction) + return true; + + if (!m_multiLineEnabled) + break; + + if (HasSelection()) + EraseSelection(); + + Write(Nz::String('\n')); + return true;; + } + + case Nz::Keyboard::Right: + { + bool ignoreDefaultAction = false; + OnTextAreaKeyRight(this, &ignoreDefaultAction); + + if (ignoreDefaultAction) + return true; + + if (HasSelection()) + SetCursorPosition(m_cursorPositionEnd); + else if (key.control) + HandleWordCursorMove(false); + else + MoveCursor(1); + + return true; + } + + case Nz::Keyboard::Up: + { + bool ignoreDefaultAction = false; + OnTextAreaKeyUp(this, &ignoreDefaultAction); + + if (ignoreDefaultAction) + return true; + + if (HasSelection()) + SetCursorPosition(m_cursorPositionBegin); + + MoveCursor({0, -1}); + return true; + } + + case Nz::Keyboard::Tab: + { + if (!m_tabEnabled) + return false; + + if (HasSelection()) + HandleSelectionIndentation(!key.shift); + else + HandleIndentation(!key.shift); + + return true; + } + + default: + break; + } + + return false; + } + + void AbstractTextAreaWidget::OnKeyReleased(const Nz::WindowEvent::KeyEvent& /*key*/) + { + } + + void AbstractTextAreaWidget::OnMouseButtonPress(int x, int y, Nz::Mouse::Button button) + { + if (button == Nz::Mouse::Left) + { + SetFocus(); + + Nz::Vector2ui hoveredGlyph = GetHoveredGlyph(float(x), float(y)); + + // 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 AbstractTextAreaWidget::OnMouseButtonRelease(int, int, Nz::Mouse::Button button) + { + if (button == Nz::Mouse::Left) + m_isMouseButtonDown = false; + } + + void AbstractTextAreaWidget::OnMouseEnter() + { + if (!Nz::Mouse::IsButtonPressed(Nz::Mouse::Left)) + m_isMouseButtonDown = false; + } + + void AbstractTextAreaWidget::OnMouseMoved(int x, int y, int deltaX, int deltaY) + { + if (m_isMouseButtonDown) + SetSelection(m_selectionCursor, GetHoveredGlyph(float(x), float(y))); + } + + void AbstractTextAreaWidget::OnTextEntered(char32_t character, bool /*repeated*/) + { + if (m_readOnly) + return; + + if (Nz::Unicode::GetCategory(character) == Nz::Unicode::Category_Other_Control || (m_characterFilter && !m_characterFilter(character))) + return; + + if (HasSelection()) + EraseSelection(); + + Write(Nz::String::Unicode(character)); + } + + void AbstractTextAreaWidget::RefreshCursor() + { + if (m_readOnly) + return; + + const Nz::AbstractTextDrawer& textDrawer = GetTextDrawer(); + + auto GetGlyph = [&](const Nz::Vector2ui& glyphPosition, std::size_t* glyphIndex) -> const Nz::AbstractTextDrawer::Glyph* + { + if (glyphPosition.y >= textDrawer.GetLineCount()) + return nullptr; + + const auto& lineInfo = textDrawer.GetLine(glyphPosition.y); + + std::size_t cursorGlyph = GetGlyphIndex({ glyphPosition.x, glyphPosition.y }); + if (glyphIndex) + *glyphIndex = cursorGlyph; + + std::size_t glyphCount = textDrawer.GetGlyphCount(); + if (glyphCount > 0 && lineInfo.glyphIndex < cursorGlyph) + { + const auto& glyph = textDrawer.GetGlyph(std::min(cursorGlyph, glyphCount - 1)); + return &glyph; + } + else + return nullptr; + }; + + // Move text so that cursor is always visible + const auto* lastGlyph = GetGlyph(m_cursorPositionEnd, nullptr); + float glyphPos = (lastGlyph) ? lastGlyph->bounds.x : 0.f; + float glyphWidth = (lastGlyph) ? lastGlyph->bounds.width : 0.f; + + auto& node = m_textEntity->GetComponent(); + float textPosition = node.GetPosition(Nz::CoordSys_Local).x - paddingWidth; + float cursorPosition = glyphPos + textPosition; + float width = GetWidth(); + + if (width <= textDrawer.GetBounds().width) + { + if (cursorPosition + glyphWidth > width) + node.Move(width - cursorPosition - glyphWidth, 0.f); + else if (cursorPosition - glyphWidth < 0.f) + node.Move(-cursorPosition + glyphWidth, 0.f); + } + else + node.Move(-textPosition, 0.f); // Reset text position if we have enough room to show everything + + // Show cursor/selection + std::size_t selectionLineCount = m_cursorPositionEnd.y - m_cursorPositionBegin.y + 1; + std::size_t oldSpriteCount = m_cursorSprites.size(); + if (m_cursorSprites.size() != selectionLineCount) + { + 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")); + } + } + + GraphicsComponent& gfxComponent = m_cursorEntity->GetComponent(); + gfxComponent.Clear(); + + for (unsigned int i = m_cursorPositionBegin.y; i <= m_cursorPositionEnd.y; ++i) + { + const auto& lineInfo = textDrawer.GetLine(i); + + Nz::SpriteRef& cursorSprite = m_cursorSprites[i - m_cursorPositionBegin.y]; + if (i == m_cursorPositionBegin.y || i == m_cursorPositionEnd.y) + { + auto GetGlyphPos = [&](const Nz::Vector2ui& glyphPosition) + { + std::size_t glyphIndex; + const auto* glyph = GetGlyph(glyphPosition, &glyphIndex); + if (glyph) + { + float position = glyph->bounds.x; + if (glyphIndex >= textDrawer.GetGlyphCount()) + position += glyph->bounds.width; + + return position; + } + else + return 0.f; + }; + + float beginX = (i == m_cursorPositionBegin.y) ? GetGlyphPos({ m_cursorPositionBegin.x, i }) : 0.f; + float endX = (i == m_cursorPositionEnd.y) ? GetGlyphPos({ m_cursorPositionEnd.x, i }) : 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, lineInfo.bounds.height); + + 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, lineInfo.bounds.height); + + gfxComponent.Attach(cursorSprite, Nz::Matrix4f::Translate({ 0.f, lineInfo.bounds.y, 0.f })); + } + } + } + + void AbstractTextAreaWidget::UpdateTextSprite() + { + m_textSprite->Update(GetTextDrawer()); + SetPreferredSize(Nz::Vector2f(m_textSprite->GetBoundingVolume().obb.localBox.GetLengths())); + } +} 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 5d8360635..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 size = GetSize(); + m_gradientSprite->SetSize(size); - Nz::Vector2f origin = GetContentOrigin(); - const Nz::Vector2f& contentSize = GetContentSize(); - - Nz::Boxf textBox = m_textEntity->GetComponent().GetBoundingVolume().obb.localBox; - m_textEntity->GetComponent().SetPosition(origin.x + contentSize.x / 2 - textBox.width / 2, origin.y + contentSize.y / 2 - textBox.height / 2); + Nz::Boxf textBox = m_textEntity->GetComponent().GetAABB(); + 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..7d906d8d1 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); @@ -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; } @@ -108,33 +108,20 @@ 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 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) @@ -178,4 +165,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..0a1cfdc81 100644 --- a/SDK/src/NDK/Widgets/ImageWidget.cpp +++ b/SDK/src/NDK/Widgets/ImageWidget.cpp @@ -11,27 +11,18 @@ namespace Ndk ImageWidget::ImageWidget(BaseWidget* parent) : BaseWidget(parent) { - m_entity = CreateEntity(true); - m_entity->AddComponent(); + m_entity = CreateEntity(); + m_entity->AddComponent().SetParent(this); auto& gfx = m_entity->AddComponent(); m_sprite = Nz::Sprite::New(); 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..813295622 100644 --- a/SDK/src/NDK/Widgets/LabelWidget.cpp +++ b/SDK/src/NDK/Widgets/LabelWidget.cpp @@ -13,22 +13,10 @@ 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); Layout(); } - - 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..cc3f4f2d9 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,7 @@ namespace Ndk void ProgressBarWidget::Layout() { - Nz::Vector2f origin = GetContentOrigin(); - Nz::Vector2f size = GetContentSize(); + Nz::Vector2f size = GetSize(); Nz::Vector2f progressBarSize = size; if (IsTextEnabled()) @@ -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); } } diff --git a/SDK/src/NDK/Widgets/RichTextAreaWidget.cpp b/SDK/src/NDK/Widgets/RichTextAreaWidget.cpp new file mode 100644 index 000000000..35abb6e06 --- /dev/null +++ b/SDK/src/NDK/Widgets/RichTextAreaWidget.cpp @@ -0,0 +1,196 @@ +// 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 +{ + RichTextAreaWidget::RichTextAreaWidget(BaseWidget* parent) : + AbstractTextAreaWidget(parent) + { + Layout(); + } + + void RichTextAreaWidget::AppendText(const Nz::String& text) + { + //m_text += text; + switch (m_echoMode) + { + case EchoMode_Normal: + m_drawer.AppendText(text); + break; + + case EchoMode_Password: + m_drawer.AppendText(Nz::String(text.GetLength(), '*')); + break; + + case EchoMode_PasswordExceptLast: + { + /*m_drawer.Clear(); + std::size_t textLength = m_text.GetLength(); + if (textLength >= 2) + { + std::size_t lastCharacterPosition = m_text.GetCharacterPosition(textLength - 2); + if (lastCharacterPosition != Nz::String::npos) + m_drawer.AppendText(Nz::String(textLength - 1, '*')); + } + + if (textLength >= 1) + m_drawer.AppendText(m_text.SubString(m_text.GetCharacterPosition(textLength - 1)));*/ + + break; + } + } + + UpdateTextSprite(); + + //OnTextChanged(this, m_text); + } + + void RichTextAreaWidget::Clear() + { + AbstractTextAreaWidget::Clear(); + } + + void RichTextAreaWidget::Erase(std::size_t firstGlyph, std::size_t lastGlyph) + { + if (firstGlyph > lastGlyph) + std::swap(firstGlyph, lastGlyph); + + std::size_t textLength = m_drawer.GetGlyphCount(); + if (firstGlyph > textLength) + return; + + std::size_t firstBlock = m_drawer.FindBlock(firstGlyph); + std::size_t lastBlock = m_drawer.FindBlock((lastGlyph > 0) ? lastGlyph - 1 : lastGlyph); + if (firstBlock == lastBlock) + { + const Nz::String& blockText = m_drawer.GetBlockText(firstBlock); + std::size_t blockFirstGlyph = m_drawer.GetBlockFirstGlyphIndex(firstBlock); + + Nz::String newText; + if (firstGlyph > blockFirstGlyph) + { + std::size_t characterPosition = blockText.GetCharacterPosition(firstGlyph - blockFirstGlyph); + NazaraAssert(characterPosition != Nz::String::npos, "Invalid character position"); + + newText.Append(blockText.SubString(0, characterPosition - 1)); + } + + if (lastGlyph < textLength) + newText.Append(blockText.SubString(blockText.GetCharacterPosition(lastGlyph - blockFirstGlyph))); + + if (!newText.IsEmpty()) + m_drawer.SetBlockText(firstBlock, std::move(newText)); + else + m_drawer.RemoveBlock(firstBlock); + } + else + { + const Nz::String& lastBlockText = m_drawer.GetBlockText(lastBlock); + std::size_t lastBlockGlyphIndex = m_drawer.GetBlockFirstGlyphIndex(lastBlock); + + // First, update/delete last block + std::size_t lastCharPos = lastBlockText.GetCharacterPosition(lastGlyph - lastBlockGlyphIndex); + if (lastCharPos != Nz::String::npos) + { + Nz::String newText = lastBlockText.SubString(lastCharPos); + if (!newText.IsEmpty()) + m_drawer.SetBlockText(lastBlock, std::move(newText)); + else + m_drawer.RemoveBlock(lastBlock); + } + + // And then remove all middle blocks, remove in reverse order because of index shifting + assert(lastBlock > 0); + for (std::size_t i = lastBlock - 1; i > firstBlock; --i) + m_drawer.RemoveBlock(i); + + const Nz::String& firstBlockText = m_drawer.GetBlockText(firstBlock); + std::size_t firstBlockGlyphIndex = m_drawer.GetBlockFirstGlyphIndex(firstBlock); + + // And finally update/delete first block + if (firstGlyph > firstBlockGlyphIndex) + { + std::size_t firstCharPos = firstBlockText.GetCharacterPosition(firstGlyph - firstBlockGlyphIndex - 1); + if (firstCharPos != Nz::String::npos) + { + Nz::String newText = firstBlockText.SubString(0, firstCharPos); + if (!newText.IsEmpty()) + m_drawer.SetBlockText(firstBlock, std::move(newText)); + else + m_drawer.RemoveBlock(firstBlock); + } + } + else + m_drawer.RemoveBlock(firstBlock); + } + + UpdateDisplayText(); + } + + void RichTextAreaWidget::Write(const Nz::String& text, std::size_t glyphPosition) + { + if (m_drawer.HasBlocks()) + { + auto block = m_drawer.GetBlock(m_drawer.FindBlock((glyphPosition > 0) ? glyphPosition - 1 : glyphPosition)); + std::size_t firstGlyph = block.GetFirstGlyphIndex(); + assert(glyphPosition >= firstGlyph); + + Nz::String blockText = block.GetText(); + std::size_t characterPosition = blockText.GetCharacterPosition(glyphPosition - firstGlyph); + blockText.Insert(characterPosition, text); + + block.SetText(blockText); + } + else + m_drawer.AppendText(text); + + SetCursorPosition(glyphPosition + text.GetLength()); + + UpdateDisplayText(); + } + + Nz::AbstractTextDrawer& RichTextAreaWidget::GetTextDrawer() + { + return m_drawer; + } + + const Nz::AbstractTextDrawer& RichTextAreaWidget::GetTextDrawer() const + { + return m_drawer; + } + + void RichTextAreaWidget::HandleIndentation(bool add) + { + } + + void RichTextAreaWidget::HandleSelectionIndentation(bool add) + { + } + + void RichTextAreaWidget::HandleWordCursorMove(bool left) + { + } + + void RichTextAreaWidget::UpdateDisplayText() + { + /*m_drawer.Clear(); + switch (m_echoMode) + { + case EchoMode_Normal: + m_drawer.AppendText(m_text); + break; + + case EchoMode_Password: + case EchoMode_PasswordExceptLast: + m_drawer.AppendText(Nz::String(m_text.GetLength(), '*')); + break; + }*/ + + UpdateTextSprite(); + + SetCursorPosition(m_cursorPositionBegin); //< Refresh cursor position (prevent it from being outside of the text) + } +} diff --git a/SDK/src/NDK/Widgets/ScrollAreaWidget.cpp b/SDK/src/NDK/Widgets/ScrollAreaWidget.cpp new file mode 100644 index 000000000..0d7c1f934 --- /dev/null +++ b/SDK/src/NDK/Widgets/ScrollAreaWidget.cpp @@ -0,0 +1,198 @@ +// Copyright (C) 2019 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 +{ + namespace + { + constexpr float scrollbarPadding = 5.f; + } + + ScrollAreaWidget::ScrollAreaWidget(BaseWidget* parent, BaseWidget* content) : + BaseWidget(parent), + m_content(content), + m_scrollbarStatus(ScrollBarStatus::None), + m_isScrollbarEnabled(true), + m_scrollRatio(0.f) + { + m_content->SetParent(this); + m_content->SetPosition(Nz::Vector3f::Zero()); + + m_scrollbarBackgroundSprite = Nz::Sprite::New(); + m_scrollbarBackgroundSprite->SetColor(Nz::Color(62, 62, 62)); + + m_scrollbarBackgroundEntity = CreateEntity(); + m_scrollbarBackgroundEntity->AddComponent().SetParent(this); + m_scrollbarBackgroundEntity->AddComponent().Attach(m_scrollbarBackgroundSprite, 1); + + m_scrollbarSprite = Nz::Sprite::New(); + m_scrollbarSprite->SetColor(Nz::Color(104, 104, 104)); + + m_scrollbarEntity = CreateEntity(); + m_scrollbarEntity->AddComponent().SetParent(this); + m_scrollbarEntity->AddComponent().Attach(m_scrollbarSprite); + + Resize(m_content->GetSize()); + } + + void ScrollAreaWidget::EnableScrollbar(bool enable) + { + if (m_isScrollbarEnabled != enable) + { + m_isScrollbarEnabled = enable; + + bool isVisible = IsScrollbarVisible(); + m_scrollbarEntity->Enable(isVisible); + m_scrollbarBackgroundEntity->Enable(isVisible); + } + } + + void ScrollAreaWidget::ScrollToRatio(float ratio) + { + m_scrollRatio = Nz::Clamp(ratio, 0.f, 1.f); + + float widgetHeight = GetHeight(); + float maxHeight = widgetHeight - m_scrollbarSprite->GetSize().y - 2.f * scrollbarPadding; + + auto& scrollbarNode = m_scrollbarEntity->GetComponent(); + scrollbarNode.SetPosition(Nz::Vector2f(scrollbarNode.GetPosition(Nz::CoordSys_Local).x, scrollbarPadding + m_scrollRatio * maxHeight)); + + float contentPosition = m_scrollRatio * (widgetHeight - m_content->GetHeight()); + + m_content->SetPosition(0.f, contentPosition); + m_content->SetRenderingRect(Nz::Rectf(-std::numeric_limits::infinity(), -contentPosition, std::numeric_limits::infinity(), widgetHeight)); + } + + Nz::Rectf ScrollAreaWidget::GetScrollbarRect() const + { + Nz::Vector2f scrollBarPosition = Nz::Vector2f(m_scrollbarEntity->GetComponent().GetPosition(Nz::CoordSys_Local)); + Nz::Vector2f scrollBarSize = m_scrollbarSprite->GetSize(); + return Nz::Rectf(scrollBarPosition.x, scrollBarPosition.y, scrollBarSize.x, scrollBarSize.y); + } + + void ScrollAreaWidget::Layout() + { + constexpr float scrollBarBackgroundWidth = 20.f; + constexpr float scrollBarWidth = scrollBarBackgroundWidth - 2.f * scrollbarPadding; + + float areaHeight = GetHeight(); + float contentHeight = m_content->GetHeight(); + + if (contentHeight > areaHeight) + { + m_hasScrollbar = true; + + Nz::Vector2f contentSize(GetWidth() - scrollBarBackgroundWidth, contentHeight); + m_content->Resize(contentSize); + + if (m_isScrollbarEnabled) + { + m_scrollbarEntity->Enable(); + m_scrollbarBackgroundEntity->Enable(); + } + + float scrollBarHeight = std::max(std::floor(areaHeight * (areaHeight / contentHeight)), 20.f); + + m_scrollbarBackgroundSprite->SetSize(scrollBarBackgroundWidth, areaHeight); + m_scrollbarSprite->SetSize(scrollBarWidth, scrollBarHeight); + + m_scrollbarBackgroundEntity->GetComponent().SetPosition(contentSize.x, 0.f); + m_scrollbarEntity->GetComponent().SetPosition(contentSize.x + (scrollBarBackgroundWidth - scrollBarWidth) / 2.f, 0.f); + + ScrollToRatio(m_scrollRatio); + } + else + { + m_hasScrollbar = false; + + m_content->Resize(GetSize()); + + m_scrollbarEntity->Disable(); + m_scrollbarBackgroundEntity->Disable(); + + ScrollToRatio(0.f); + } + + BaseWidget::Layout(); + } + + void ScrollAreaWidget::OnMouseButtonPress(int x, int y, Nz::Mouse::Button button) + { + if (button != Nz::Mouse::Left) + return; + + if (m_scrollbarStatus == ScrollBarStatus::Hovered) + { + UpdateScrollbarStatus(ScrollBarStatus::Grabbed); + + auto& scrollbarNode = m_scrollbarEntity->GetComponent(); + + m_grabbedDelta.Set(x, int(y - scrollbarNode.GetPosition(Nz::CoordSys_Local).y)); + } + } + + void ScrollAreaWidget::OnMouseButtonRelease(int x, int y, Nz::Mouse::Button button) + { + if (button != Nz::Mouse::Left) + return; + + if (m_scrollbarStatus == ScrollBarStatus::Grabbed) + { + Nz::Rectf scrollBarRect = GetScrollbarRect(); + UpdateScrollbarStatus((scrollBarRect.Contains(Nz::Vector2f(float(x), float(y)))) ? ScrollBarStatus::Hovered : ScrollBarStatus::None); + } + } + + void ScrollAreaWidget::OnMouseExit() + { + //if (m_scrollbarStatus == ScrollBarStatus::Hovered) + UpdateScrollbarStatus(ScrollBarStatus::None); + } + + void ScrollAreaWidget::OnMouseMoved(int x, int y, int /*deltaX*/, int /*deltaY*/) + { + if (m_scrollbarStatus == ScrollBarStatus::Grabbed) + { + float height = GetHeight(); + float maxHeight = height - m_scrollbarSprite->GetSize().y; + float newHeight = Nz::Clamp(float(y - m_grabbedDelta.y), 0.f, maxHeight); + + ScrollToHeight(newHeight / maxHeight * m_content->GetHeight()); + } + else + { + Nz::Rectf scrollBarRect = GetScrollbarRect(); + UpdateScrollbarStatus((scrollBarRect.Contains(Nz::Vector2f(float(x), float(y)))) ? ScrollBarStatus::Hovered : ScrollBarStatus::None); + } + } + + void ScrollAreaWidget::OnMouseWheelMoved(int /*x*/, int /*y*/, float delta) + { + constexpr float scrollStep = 100.f; + + ScrollToHeight(GetScrollHeight() - scrollStep * delta); + } + + void ScrollAreaWidget::UpdateScrollbarStatus(ScrollBarStatus status) + { + if (m_scrollbarStatus != status) + { + Nz::Color newColor; + switch (status) + { + case ScrollBarStatus::Grabbed: newColor = Nz::Color(235, 235, 235); break; + case ScrollBarStatus::Hovered: newColor = Nz::Color(152, 152, 152); break; + case ScrollBarStatus::None: newColor = Nz::Color(104, 104, 104); break; + } + + m_scrollbarSprite->SetColor(newColor); + m_scrollbarStatus = status; + } + } +} diff --git a/SDK/src/NDK/Widgets/TextAreaWidget.cpp b/SDK/src/NDK/Widgets/TextAreaWidget.cpp index f10f57953..4271f43a1 100644 --- a/SDK/src/NDK/Widgets/TextAreaWidget.cpp +++ b/SDK/src/NDK/Widgets/TextAreaWidget.cpp @@ -4,36 +4,20 @@ #include #include +#include #include #include namespace Ndk { TextAreaWidget::TextAreaWidget(BaseWidget* parent) : - BaseWidget(parent), - m_echoMode(EchoMode_Normal), - m_cursorPositionBegin(0U, 0U), - m_cursorPositionEnd(0U, 0U), - m_isMouseButtonDown(false), - m_multiLineEnabled(false), - m_readOnly(false) + AbstractTextAreaWidget(parent) { - m_cursorEntity = CreateEntity(true); - m_cursorEntity->AddComponent(); - m_cursorEntity->AddComponent().SetParent(this); - m_cursorEntity->Enable(false); - - m_textSprite = Nz::TextSprite::New(); - - m_textEntity = CreateEntity(true); - m_textEntity->AddComponent().Attach(m_textSprite); - m_textEntity->AddComponent().SetParent(this); - - SetCursor(Nz::SystemCursor_Text); + SetCharacterSize(GetCharacterSize()); //< Actualize minimum / preferred size Layout(); } - + void TextAreaWidget::AppendText(const Nz::String& text) { m_text += text; @@ -65,413 +49,168 @@ namespace Ndk } } - m_textSprite->Update(m_drawer); + UpdateTextSprite(); OnTextChanged(this, m_text); } - void TextAreaWidget::EraseSelection() + void TextAreaWidget::Clear() { - if (!HasSelection()) - return; + AbstractTextAreaWidget::Clear(); - std::size_t cursorGlyphBegin = GetGlyphIndex(m_cursorPositionBegin); - std::size_t cursorGlyphEnd = GetGlyphIndex(m_cursorPositionEnd); + m_text.Clear(); + 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 (cursorGlyphBegin > textLength) + if (firstGlyph > textLength) return; Nz::String newText; - if (cursorGlyphBegin > 0) - newText.Append(m_text.SubString(0, m_text.GetCharacterPosition(cursorGlyphBegin) - 1)); + if (firstGlyph > 0) + { + std::size_t characterPosition = m_text.GetCharacterPosition(firstGlyph); + NazaraAssert(characterPosition != Nz::String::npos, "Invalid character position"); - if (cursorGlyphEnd < textLength) - newText.Append(m_text.SubString(m_text.GetCharacterPosition(cursorGlyphEnd))); + newText.Append(m_text.SubString(0, characterPosition - 1)); + } + + 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); } - Nz::Vector2ui TextAreaWidget::GetHoveredGlyph(float x, float y) const + void TextAreaWidget::Write(const Nz::String& text, std::size_t glyphPosition) { - std::size_t glyphCount = m_drawer.GetGlyphCount(); - if (glyphCount > 0) - { - std::size_t lineCount = m_drawer.GetLineCount(); - std::size_t line = 0U; - for (; line < lineCount - 1; ++line) - { - Nz::Rectf lineBounds = m_drawer.GetLine(line).bounds; - if (lineBounds.GetMaximum().y > y) - break; - } - - std::size_t upperLimit = (line != lineCount - 1) ? m_drawer.GetLine(line + 1).glyphIndex : glyphCount + 1; - - 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; - if (x < bounds.x + bounds.width * 0.75f) - break; - } - - return Nz::Vector2ui(i - firstLineGlyph, line); - } - - return Nz::Vector2ui::Zero(); - } - - void TextAreaWidget::ResizeToContent() - { - SetContentSize(Nz::Vector2f(m_textSprite->GetBoundingVolume().obb.localBox.GetLengths())); - } - - void TextAreaWidget::Write(const Nz::String& text) - { - std::size_t cursorGlyph = GetGlyphIndex(m_cursorPositionBegin); - - if (cursorGlyph >= m_drawer.GetGlyphCount()) + if (glyphPosition >= m_drawer.GetGlyphCount()) { + // It's faster to append than to insert in the middle 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()); } } - void TextAreaWidget::Layout() + Nz::AbstractTextDrawer& TextAreaWidget::GetTextDrawer() { - BaseWidget::Layout(); - - m_textEntity->GetComponent().SetPosition(GetContentOrigin()); - - RefreshCursor(); + return m_drawer; } - bool TextAreaWidget::IsFocusable() const + const Nz::AbstractTextDrawer& TextAreaWidget::GetTextDrawer() const { - return !m_readOnly; + return m_drawer; } - void TextAreaWidget::OnFocusLost() + void TextAreaWidget::HandleIndentation(bool add) { - m_cursorEntity->Disable(); - } - - void TextAreaWidget::OnFocusReceived() - { - if (!m_readOnly) - m_cursorEntity->Enable(true); - } - - bool TextAreaWidget::OnKeyPressed(const Nz::WindowEvent::KeyEvent& key) - { - switch (key.code) + if (add) + Write(Nz::String('\t')); + else { - case Nz::Keyboard::Delete: + 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 { - if (HasSelection()) - EraseSelection(); - else + Erase(currentGlyph - 1U); + + if (m_cursorPositionBegin.x < static_cast(m_drawer.GetLineGlyphCount(m_cursorPositionBegin.y))) + MoveCursor(-1); + } + } + } + + void TextAreaWidget::HandleSelectionIndentation(bool add) + { + for (unsigned line = m_cursorPositionBegin.y; line <= m_cursorPositionEnd.y; ++line) + { + const Nz::Vector2ui cursorPositionBegin = m_cursorPositionBegin; + const Nz::Vector2ui cursorPositionEnd = m_cursorPositionEnd; + + if (add) + { + 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 (m_drawer.GetLineGlyphCount(line) == 0) + continue; + + std::size_t firstGlyph = GetGlyphIndex({ 0U, line }); + + if (m_text[m_text.GetCharacterPosition(firstGlyph)] == '\t') { - 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(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{})); } - - return true; } + } + } - case Nz::Keyboard::Down: + void TextAreaWidget::HandleWordCursorMove(bool left) + { + if (left) + { + std::size_t index = GetGlyphIndex(m_cursorPositionBegin); + if (index == 0) + return; + + 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) { - bool ignoreDefaultAction = false; - OnTextAreaKeyDown(this, &ignoreDefaultAction); - - if (ignoreDefaultAction) - return true; - - if (HasSelection()) - SetCursorPosition(m_cursorPositionEnd); - - MoveCursor({0, 1}); - return true; + if (index == endlIndex + 1) + SetCursorPosition(endlIndex); + else + SetCursorPosition(endlIndex + 1); } + else + SetCursorPosition({ 0U, m_cursorPositionBegin.y }); + } + else + { + std::size_t index = GetGlyphIndex(m_cursorPositionEnd); + std::size_t spaceIndex = m_text.Find(' ', index); + std::size_t endlIndex = m_text.Find('\n', index); - case Nz::Keyboard::End: + if (spaceIndex < endlIndex && spaceIndex != Nz::String::npos) { - bool ignoreDefaultAction = false; - OnTextAreaKeyEnd(this, &ignoreDefaultAction); - - if (ignoreDefaultAction) - return true; - - const auto& lineInfo = m_drawer.GetLine(m_cursorPositionEnd.y); + 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 }); - 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; - OnTextAreaKeyLeft(this, &ignoreDefaultAction); - - if (ignoreDefaultAction) - return true; - - if (HasSelection()) - SetCursorPosition(m_cursorPositionBegin); - else - MoveCursor(-1); - - return true; - } - - case Nz::Keyboard::Right: - { - bool ignoreDefaultAction = false; - OnTextAreaKeyRight(this, &ignoreDefaultAction); - - if (ignoreDefaultAction) - return true; - - if (HasSelection()) - SetCursorPosition(m_cursorPositionEnd); - else - MoveCursor(1); - - return true; - } - - case Nz::Keyboard::Up: - { - bool ignoreDefaultAction = false; - OnTextAreaKeyUp(this, &ignoreDefaultAction); - - if (ignoreDefaultAction) - return true; - - if (HasSelection()) - SetCursorPosition(m_cursorPositionBegin); - - MoveCursor({0, -1}); - return true; - } - - default: - return false; - } - } - - void TextAreaWidget::OnKeyReleased(const Nz::WindowEvent::KeyEvent& /*key*/) - { - } - - void TextAreaWidget::OnMouseButtonPress(int x, int y, Nz::Mouse::Button button) - { - if (button == Nz::Mouse::Left) - { - SetFocus(); - - const Padding& padding = GetPadding(); - 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))); - } - } - - void TextAreaWidget::OnTextEntered(char32_t character, bool /*repeated*/) - { - if (m_readOnly) - return; - - switch (character) - { - case '\b': - { - bool ignoreDefaultAction = false; - OnTextAreaKeyBackspace(this, &ignoreDefaultAction); - - std::size_t cursorGlyphBegin = GetGlyphIndex(m_cursorPositionBegin); - std::size_t cursorGlyphEnd = GetGlyphIndex(m_cursorPositionEnd); - - if (ignoreDefaultAction || cursorGlyphEnd == 0) - break; - - // 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 (cursorGlyphBegin > 1) - newText.Append(m_text.SubString(0, m_text.GetCharacterPosition(cursorGlyphBegin - 1) - 1)); - - if (cursorGlyphEnd < m_text.GetLength()) - newText.Append(m_text.SubString(m_text.GetCharacterPosition(cursorGlyphEnd))); - - // Move cursor before setting text (to prevent SetText to move our cursor) - MoveCursor(-1); - - SetText(newText); - } - break; - } - - case '\r': - case '\n': - { - bool ignoreDefaultAction = false; - OnTextAreaKeyReturn(this, &ignoreDefaultAction); - - if (ignoreDefaultAction || !m_multiLineEnabled) - break; - - Write(Nz::String('\n')); - break; - } - - default: - { - if (Nz::Unicode::GetCategory(character) == Nz::Unicode::Category_Other_Control) - break; - - if (HasSelection()) - EraseSelection(); - - Write(Nz::String::Unicode(character)); - break; - } - } - } - - void TextAreaWidget::RefreshCursor() - { - 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) - { - 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")); - } - } - - float lineHeight = float(m_drawer.GetFont()->GetSizeInfo(m_drawer.GetCharacterSize()).lineHeight); - - 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 = [&](unsigned int 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 })); - } } } @@ -489,8 +228,26 @@ namespace Ndk break; } - m_textSprite->Update(m_drawer); + UpdateTextSprite(); SetCursorPosition(m_cursorPositionBegin); //< Refresh cursor position (prevent it from being outside of the text) } + + void TextAreaWidget::UpdateMinimumSize() + { + std::size_t fontCount = m_drawer.GetFontCount(); + float 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(m_drawer.GetCharacterSize()); + lineHeight = std::max(lineHeight, m_drawer.GetLineHeight()); + spaceAdvance = std::max(spaceAdvance, sizeInfo.spaceAdvance); + } + + Nz::Vector2f size = { float(spaceAdvance), lineHeight + 5.f }; + SetMinimumSize(size); + } } diff --git a/SDK/src/NDK/World.cpp b/SDK/src/NDK/World.cpp index bfbe0140c..ef59463bc 100644 --- a/SDK/src/NDK/World.cpp +++ b/SDK/src/NDK/World.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -43,6 +44,7 @@ namespace Ndk void World::AddDefaultSystems() { + AddSystem(); AddSystem(); AddSystem(); AddSystem(); @@ -133,9 +135,9 @@ namespace Ndk m_waitingEntities.clear(); m_aliveEntities.Clear(); - m_dirtyEntities.Clear(); + m_dirtyEntities.front.Clear(); m_freeEntityIds.Clear(); - m_killedEntities.Clear(); + m_killedEntities.front.Clear(); } /*! @@ -155,16 +157,26 @@ namespace Ndk return EntityHandle::InvalidHandle; } + return CloneEntity(original); + } + + /*! + * \brief Clones the entity + * \return The clone newly created + * + * \param original Entity handle + * + * \remark Cloning a disabled entity will produce an enabled clone + */ + const EntityHandle& World::CloneEntity(const EntityHandle& original) + { const EntityHandle& clone = CreateEntity(); if (!original->IsEnabled()) clone->Disable(); const Nz::Bitset<>& componentBits = original->GetComponentBits(); for (std::size_t i = componentBits.FindFirst(); i != componentBits.npos; i = componentBits.FindNext(i)) - { - std::unique_ptr component(original->GetComponent(ComponentIndex(i)).Clone()); - clone->AddComponent(std::move(component)); - } + clone->AddComponent(original->GetComponent(ComponentIndex(i)).Clone()); clone->Enable(); @@ -208,7 +220,8 @@ namespace Ndk } // Handle killed entities before last call - for (std::size_t i = m_killedEntities.FindFirst(); i != m_killedEntities.npos; i = m_killedEntities.FindNext(i)) + std::swap(m_killedEntities.front, m_killedEntities.back); + for (std::size_t i = m_killedEntities.back.FindFirst(); i != m_killedEntities.back.npos; i = m_killedEntities.back.FindNext(i)) { NazaraAssert(i < m_entityBlocks.size(), "Entity index out of range"); @@ -218,12 +231,13 @@ namespace Ndk entity->Destroy(); // Send back the identifier of the entity to the free queue - m_freeEntityIds.UnboundedSet(entity->GetId()); + m_freeEntityIds.UnboundedSet(i); } - m_killedEntities.Reset(); + m_killedEntities.back.Clear(); // Handle of entities which need an update from the systems - for (std::size_t i = m_dirtyEntities.FindFirst(); i != m_dirtyEntities.npos; i = m_dirtyEntities.FindNext(i)) + std::swap(m_dirtyEntities.front, m_dirtyEntities.back); + for (std::size_t i = m_dirtyEntities.back.FindFirst(); i != m_dirtyEntities.back.npos; i = m_dirtyEntities.back.FindNext(i)) { NazaraAssert(i < m_entityBlocks.size(), "Entity index out of range"); @@ -234,9 +248,8 @@ namespace Ndk continue; Nz::Bitset<>& removedComponents = entity->GetRemovedComponentBits(); - for (std::size_t j = removedComponents.FindFirst(); j != m_dirtyEntities.npos; j = removedComponents.FindNext(j)) - entity->DestroyComponent(static_cast(j)); - removedComponents.Reset(); + for (std::size_t j = removedComponents.FindFirst(); j != m_dirtyEntities.back.npos; j = removedComponents.FindNext(j)) + entity->DropComponent(static_cast(j)); for (auto& system : m_orderedSystems) { @@ -260,7 +273,7 @@ namespace Ndk } } } - m_dirtyEntities.Reset(); + m_dirtyEntities.back.Clear(); } /*! diff --git a/THANKS.md b/THANKS.md new file mode 100644 index 000000000..b2821222e --- /dev/null +++ b/THANKS.md @@ -0,0 +1,26 @@ +# Thanks + +A special thank you to all those who may have contributed directly or indirectly to this project. We can mention: + +- **RafBill** and **Raakz:** Finding bugs and/or testing. +- **Fissal "DrFisher" Hannoun**: Helping a lot in architecture design. +- **Alexandre "Danman" Janniaux**: Helping making the POSIX implementation. +- **Youri "Gawaboumga" Hubaut**: Improving the whole project by making the documentation, improving the code, and more. +- **Rémi "overdrivr" Bèges**: Made the Noise module. + +## Additional thanks + +This engine also uses different projects, we obviously thank their respective authors and contributors: + +- [Assimp](http://www.assimp.org/): Model loader. +- [Catch2](https://github.com/catchorg/Catch2): Test framework for C++. +- [Chimpmunk](http://chipmunk-physics.net/): Physics engine for 2D. +- [Freetype](https://www.freetype.org/): Font rendering library. +- [Lua](https://www.lua.org/): Scripting library. +- [Netwon](http://newtondynamics.com/forum/newton.php): Physics engine for 3D. +- [Sndfile](http://www.mega-nerd.com/libsndfile/): Audio loader. +- [Stb](https://github.com/nothings/stb): Image loader. +- [Utfcpp](http://utfcpp.sourceforge.net/): UTF-8 handler. +- [OpenAL](https://www.openal.org/): Audio API specification. +- [OpenGL](https://www.khronos.org/opengl/): Graphics API specification. +- [Vulkan](https://www.khronos.org/vulkan/): New graphics API specification which replaced OpenGL. diff --git a/appveyor.yml b/appveyor.yml index 73d011778..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 .. @@ -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" 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..8657a02cb 100644 --- a/build/Build_VS2015.bat +++ b/build/Build_VS2015.bat @@ -1 +1 @@ -premake5 vs2015 \ No newline at end of file +.\premake5.exe --premakeproject vs2015 diff --git a/build/Build_VS2017.bat b/build/Build_VS2017.bat index b569c559d..c172c5a59 100644 --- a/build/Build_VS2017.bat +++ b/build/Build_VS2017.bat @@ -1 +1 @@ -premake5 vs2017 \ No newline at end of file +.\premake5.exe --premakeproject vs2017 diff --git a/build/Build_VS2019.bat b/build/Build_VS2019.bat new file mode 100644 index 000000000..f9dd7c987 --- /dev/null +++ b/build/Build_VS2019.bat @@ -0,0 +1 @@ +.\premake5.exe --premakeproject vs2019 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 diff --git a/build/config.lua b/build/config.lua index 571bf6dc9..16bf08d33 100644 --- a/build/config.lua +++ b/build/config.lua @@ -11,7 +11,7 @@ BuildDependencies = true BuildExamples = true -- Setup configurations array (valid values: Debug, Release, ReleaseWithDebug) -Configurations = "Debug,Release" -- "Debug,Release,ReleaseWithDebug" +Configurations = "Debug,Release,ReleaseWithDebug" -- "Debug,Release,ReleaseWithDebug" -- Setup additionnals install directories, separated by a semi-colon ; (library binaries will be copied there) --InstallDir = "/usr/local/lib64" 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" 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/build/scripts/common.lua b/build/scripts/common.lua index 5c1298fb1..7ca78b9af 100644 --- a/build/scripts/common.lua +++ b/build/scripts/common.lua @@ -58,6 +58,7 @@ function NazaraBuild:Execute() workspace("NazaraEngine") platforms(platformData) + startproject "DemoFirstScene" location(_ACTION) do @@ -608,7 +609,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...") @@ -838,10 +839,11 @@ function NazaraBuild:PrepareGeneric() targetsuffix("-d") filter("configurations:*Debug*") + optimize("Debug") symbols("On") filter("configurations:not *Debug*") - flags("NoFramePointer") + omitframepointer("On") -- Setup some optimizations for release filter("configurations:Release*") @@ -855,6 +857,10 @@ function NazaraBuild:PrepareGeneric() filter("configurations:*Dynamic") kind("SharedLib") + -- Enable MSVC conformance (not required but better) + filter("action:vs*") + buildoptions({"/permissive-", "/Zc:__cplusplus", "/Zc:referenceBinding", "/Zc:throwingNew"}) + -- Enable SSE math and vectorization optimizations filter({"configurations:Release*", clangGccActions}) buildoptions("-mfpmath=sse") @@ -872,6 +878,7 @@ function NazaraBuild:PrepareMainWorkspace() -- Add lib/conf/arch to library search path self:FilterLibDirectory("../lib/", libdirs) + self:FilterLibDirectory("../lib/", runpathdirs) filter("action:vs*") buildoptions({"/MP", "/bigobj"}) -- Multiprocessus build and big .obj 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/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.*", diff --git a/examples/FirstScene/main.cpp b/examples/FirstScene/main.cpp index a4ce40454..06e9fd97c 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; @@ -95,16 +92,13 @@ int main() // Ce paramètre sert à indiquer la mise à l'échelle désirée lors du chargement du modèle. params.mesh.matrix.MakeScale(Nz::Vector3f(0.01f)); // Un centième de la taille originelle - // Les UVs de ce fichier sont retournées (repère OpenGL, origine coin bas-gauche) par rapport à ce que le moteur attend (haut-gauche) - // Nous devons donc indiquer au moteur de les retourner lors du chargement - params.mesh.texCoordScale.Set(1.f, -1.f); - // Nazara va par défaut optimiser les modèles pour un rendu plus rapide, cela peut prendre du temps et n'est pas nécessaire ici params.mesh.optimizeIndexBuffers = false; // 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 8fa72bfff..6f3205b87 100644 --- a/examples/Particles/SpacebattleDemo.cpp +++ b/examples/Particles/SpacebattleDemo.cpp @@ -230,56 +230,67 @@ ParticleDemo("Space battle", sharedData) Ndk::InitializeSystem(); Nz::ModelParameters parameters; + parameters.mesh.texCoordOffset.Set(0.f, 1.f); + parameters.mesh.texCoordScale.Set(1.f, -1.f); parameters.mesh.optimizeIndexBuffers = false; 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.texCoordOffset.Set(0.f, 1.f); + 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.texCoordOffset.Set(0.f, 0.f); + 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 +335,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); @@ -585,7 +596,6 @@ void SpacebattleExample::Enter(Ndk::StateMachine& fsm) auto colorPtr = mapper.GetComponentPtr(Nz::ParticleComponent_Color); auto lifePtr = mapper.GetComponentPtr(Nz::ParticleComponent_Life); - float velFactor = std::pow(0.9f, elapsedTime / 0.1f); for (unsigned int i = startId; i <= endId; ++i) colorPtr[i].a = static_cast(Nz::Clamp(lifePtr[i] * 255.f, 0.f, 255.f)); })); @@ -662,13 +672,15 @@ 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); } 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(); @@ -760,7 +772,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() @@ -774,7 +786,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(); @@ -784,7 +796,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(); @@ -795,7 +807,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(); @@ -814,7 +826,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/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/examples/Tut01/main.cpp b/examples/Tut01/main.cpp index 8a3df36ff..4570cec08 100644 --- a/examples/Tut01/main.cpp +++ b/examples/Tut01/main.cpp @@ -29,9 +29,13 @@ int main(int argc, char* argv[]) viewer.SetTarget(&mainWindow); viewer.SetProjectionType(Nz::ProjectionType_Orthogonal); + Nz::SimpleTextDrawer textDrawer; + textDrawer.SetCharacterSize(72); + textDrawer.SetOutlineThickness(4.f); + textDrawer.SetText("Hello world !"); Nz::TextSpriteRef textSprite = Nz::TextSprite::New(); - textSprite->Update(Nz::SimpleTextDrawer::Draw("Hello world !", 72)); + textSprite->Update(textDrawer); Ndk::EntityHandle text = world.CreateEntity(); Ndk::NodeComponent& nodeComponent = text->AddComponent(); @@ -39,7 +43,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); 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.hpp b/include/Nazara/Core.hpp index 515d8c545..bb5e6e682 100644 --- a/include/Nazara/Core.hpp +++ b/include/Nazara/Core.hpp @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -82,6 +83,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/include/Nazara/Core/ByteArrayPool.hpp b/include/Nazara/Core/ByteArrayPool.hpp new file mode 100644 index 000000000..e45ceee67 --- /dev/null +++ b/include/Nazara/Core/ByteArrayPool.hpp @@ -0,0 +1,43 @@ +// 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_BYTEARRAYPOOL_HPP +#define NAZARA_BYTEARRAYPOOL_HPP + +#include +#include +#include +#include + +namespace Nz +{ + class AbstractHash; + + class NAZARA_CORE_API ByteArrayPool + { + public: + ByteArrayPool() = default; + ByteArrayPool(const ByteArrayPool&) = delete; + ByteArrayPool(ByteArrayPool&&) = default; + ~ByteArrayPool() = default; + + inline void Clear(); + + inline ByteArray GetByteArray(std::size_t capacity = 0); + + inline void ReturnByteArray(ByteArray byteArray); + + ByteArrayPool& operator=(const ByteArrayPool&) = delete; + ByteArrayPool& operator=(ByteArrayPool&&) = default; + + private: + std::vector m_byteArrays; + }; +} + +#include + +#endif // NAZARA_BYTEARRAYPOOL_HPP diff --git a/include/Nazara/Core/ByteArrayPool.inl b/include/Nazara/Core/ByteArrayPool.inl new file mode 100644 index 000000000..82cf8349c --- /dev/null +++ b/include/Nazara/Core/ByteArrayPool.inl @@ -0,0 +1,44 @@ +// 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 + { + bool SortByteArrayByCapacity(const ByteArray& byteArray, std::size_t refCapacity) + { + return refCapacity > byteArray.GetCapacity(); + } + } + + inline void ByteArrayPool::Clear() + { + m_byteArrays.clear(); + } + + inline ByteArray ByteArrayPool::GetByteArray(std::size_t capacity) + { + ByteArray ret; + + auto it = std::lower_bound(m_byteArrays.begin(), m_byteArrays.end(), capacity, Detail::SortByteArrayByCapacity); + if (it != m_byteArrays.end()) + { + ret = std::move(*it); + m_byteArrays.erase(it); + } + + return ret; + } + + inline void ByteArrayPool::ReturnByteArray(ByteArray byteArray) + { + auto it = std::lower_bound(m_byteArrays.begin(), m_byteArrays.end(), byteArray.GetCapacity(), Detail::SortByteArrayByCapacity); + m_byteArrays.emplace(it, std::move(byteArray)); + } +} + +#include 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/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/EmptyStream.hpp b/include/Nazara/Core/EmptyStream.hpp new file mode 100644 index 000000000..da66ca329 --- /dev/null +++ b/include/Nazara/Core/EmptyStream.hpp @@ -0,0 +1,46 @@ +// Copyright (C) 2019 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_EMPTYSTREAM_HPP +#define NAZARA_EMPTYSTREAM_HPP + +#include +#include + +namespace Nz +{ + class NAZARA_CORE_API EmptyStream : public Stream + { + public: + inline EmptyStream(); + EmptyStream(const EmptyStream&) = default; + EmptyStream(EmptyStream&&) noexcept = default; + ~EmptyStream() = default; + + void Clear(); + + bool EndOfStream() const override; + + UInt64 GetCursorPos() const override; + UInt64 GetSize() const override; + + bool SetCursorPos(UInt64 offset) override; + + EmptyStream& operator=(const EmptyStream&) = default; + EmptyStream& operator=(EmptyStream&&) 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; + + UInt64 m_size; + }; +} + +#include + +#endif // NAZARA_EMPTYSTREAM_HPP diff --git a/include/Nazara/Core/EmptyStream.inl b/include/Nazara/Core/EmptyStream.inl new file mode 100644 index 000000000..4da4db08d --- /dev/null +++ b/include/Nazara/Core/EmptyStream.inl @@ -0,0 +1,22 @@ +// Copyright (C) 2019 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 +{ + /*! + * \ingroup core + * \class Nz::EmptyStream + * \brief Constructs an EmptyStream object by default + */ + inline EmptyStream::EmptyStream() : + m_size(0) + { + m_openMode = Nz::OpenMode_ReadWrite; + } +} + +#include diff --git a/include/Nazara/Core/Flags.hpp b/include/Nazara/Core/Flags.hpp index 92c97de9e..3fa7d2741 100644 --- a/include/Nazara/Core/Flags.hpp +++ b/include/Nazara/Core/Flags.hpp @@ -39,15 +39,20 @@ namespace Nz static constexpr std::size_t MaxValue = static_cast(EnumAsFlags::max); - using BitField16 = std::conditional_t<(MaxValue > 8), UInt16, UInt8>; - using BitField32 = std::conditional_t<(MaxValue > 16), UInt32, BitField16>; + using BitField16 = std::conditional_t<(MaxValue >= 8), UInt16, UInt8>; + using BitField32 = std::conditional_t<(MaxValue >= 16), UInt32, BitField16>; public: - using BitField = std::conditional_t<(MaxValue > 32), UInt64, BitField32>; + using BitField = std::conditional_t<(MaxValue >= 32), UInt64, BitField32>; constexpr Flags(BitField value = 0); constexpr Flags(E enumVal); + void Clear(); + void Clear(const Flags& flags); + + void Set(const Flags& flags); + constexpr bool Test(const Flags& flags) const; explicit constexpr operator bool() const; diff --git a/include/Nazara/Core/Flags.inl b/include/Nazara/Core/Flags.inl index 2b57a59a8..2e1800ff8 100644 --- a/include/Nazara/Core/Flags.inl +++ b/include/Nazara/Core/Flags.inl @@ -39,9 +39,49 @@ namespace Nz { } + /*! + * \brief Clear all flags + * + * \see Test + */ + template + void Flags::Clear() + { + m_value = 0; + } + + /*! + * \brief Clear some flags + * + * \param flags Flags to be cleared + * + * \see Test + */ + template + void Flags::Clear(const Flags& flags) + { + m_value &= ~flags.m_value; + } + + /*! + * \brief Enable some flags + * + * \param flags Flags to be enabled + * + * \see Clear + * \see Test + */ + template + void Flags::Set(const Flags& flags) + { + m_value |= flags.m_value; + } + /*! * \brief Tests if all flags from a Flags object are enabled * \return True if all tested flags are enabled. + * + * \see Clear */ template constexpr bool Flags::Test(const Flags& flags) const diff --git a/include/Nazara/Core/HandledObject.hpp b/include/Nazara/Core/HandledObject.hpp index 633f7e9fe..390a4e612 100644 --- a/include/Nazara/Core/HandledObject.hpp +++ b/include/Nazara/Core/HandledObject.hpp @@ -8,11 +8,22 @@ #define NAZARA_OBJECTHANDLER_HPP #include +#include #include #include namespace Nz { + namespace Detail + { + struct NAZARA_CORE_API HandleData + { + void* object; + + static std::shared_ptr GetEmptyObject(); + }; + } + template class ObjectHandle; template @@ -31,15 +42,16 @@ namespace Nz HandledObject& operator=(const HandledObject& object); HandledObject& operator=(HandledObject&& object) noexcept; + NazaraSignal(OnHandledObjectDestruction, HandledObject* /*emitter*/); + protected: 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..ed0115f5b 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,44 @@ 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(); + if (m_handleData) + { + OnHandledObjectDestruction(this); - m_handles.clear(); + 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/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/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 f415f93de..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,18 +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); - } + m_handleData = std::move(handle.m_handleData); + handle.m_handleData = Detail::HandleData::GetEmptyObject(); } /*! @@ -151,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; } @@ -181,7 +140,7 @@ namespace Nz Nz::StringStream ss; ss << "ObjectHandle("; if (IsValid()) - ss << m_object->ToString(); + ss << GetObject()->ToString(); else ss << "Null"; @@ -209,7 +168,7 @@ namespace Nz template ObjectHandle::operator T*() const { - return m_object; + return GetObject(); } /*! @@ -219,7 +178,7 @@ namespace Nz template T* ObjectHandle::operator->() const { - return m_object; + return GetObject(); } /*! @@ -229,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; } @@ -264,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 @@ -386,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(); } /*! @@ -399,7 +324,7 @@ namespace Nz template bool operator<(const T& lhs, const ObjectHandle& rhs) { - return &lhs < rhs.m_object; + return &lhs < rhs.GetObject(); } /*! @@ -412,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/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 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..25ff82a95 100644 --- a/include/Nazara/Core/ObjectRef.inl +++ b/include/Nazara/Core/ObjectRef.inl @@ -335,7 +335,7 @@ namespace Nz template bool operator<(const ObjectRef& lhs, const ObjectRef& rhs) { - return lhs.m_object < rhs.m_object; + return lhs.Get() < rhs.Get(); } /*! @@ -348,7 +348,7 @@ namespace Nz template bool operator<(const T& lhs, const ObjectRef& rhs) { - return &lhs < rhs.m_object; + return &lhs < rhs.Get(); } /*! @@ -361,7 +361,7 @@ namespace Nz template bool operator<(const ObjectRef& lhs, const T& rhs) { - return lhs.m_object < &rhs; + return lhs.Get() < &rhs; } /*! @@ -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/PoolByteStream.hpp b/include/Nazara/Core/PoolByteStream.hpp new file mode 100644 index 000000000..63150290d --- /dev/null +++ b/include/Nazara/Core/PoolByteStream.hpp @@ -0,0 +1,46 @@ +// 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_POOLBYTESTREAM_HPP +#define NAZARA_POOLBYTESTREAM_HPP + +#include +#include +#include +#include + +namespace Nz +{ + class ByteArrayPool; + + class NAZARA_CORE_API PoolByteStream : public ByteStream + { + friend class Network; + + public: + inline PoolByteStream(ByteArrayPool& pool); + inline PoolByteStream(ByteArrayPool& pool, std::size_t capacity); + PoolByteStream(const PoolByteStream&) = delete; + PoolByteStream(PoolByteStream&& packet) = default; + inline ~PoolByteStream(); + + void Reset(); + void Reset(std::size_t capacity); + + PoolByteStream& operator=(const PoolByteStream&) = delete; + PoolByteStream& operator=(PoolByteStream&&) = delete; + + private: + void OnEmptyStream() override; + + ByteArrayPool& m_pool; + ByteArray m_buffer; + }; +} + +#include + +#endif // NAZARA_POOLBYTESTREAM_HPP diff --git a/include/Nazara/Core/PoolByteStream.inl b/include/Nazara/Core/PoolByteStream.inl new file mode 100644 index 000000000..d786c6a67 --- /dev/null +++ b/include/Nazara/Core/PoolByteStream.inl @@ -0,0 +1,30 @@ +// 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 +#include +#include + +namespace Nz +{ + inline PoolByteStream::PoolByteStream(ByteArrayPool& pool) : + m_pool(pool) + { + } + + inline PoolByteStream::PoolByteStream(ByteArrayPool& pool, std::size_t capacity) : + PoolByteStream(pool) + { + Reset(capacity); + } + + inline PoolByteStream::~PoolByteStream() + { + FlushBits(); //< Needs to be done here as the stream will be freed before ByteStream calls it + Reset(); //< Returns the byte array (if any) to the pool + } +} + +#include 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/Core/Signal.hpp b/include/Nazara/Core/Signal.hpp index 1569c5d0e..973181e47 100644 --- a/include/Nazara/Core/Signal.hpp +++ b/include/Nazara/Core/Signal.hpp @@ -32,7 +32,7 @@ namespace Nz class ConnectionGuard; Signal(); - Signal(const Signal&) = delete; + Signal(const Signal&); Signal(Signal&& signal) noexcept; ~Signal() = default; @@ -47,7 +47,7 @@ namespace Nz void operator()(Args... args) const; - Signal& operator=(const Signal&) = delete; + Signal& operator=(const Signal&); Signal& operator=(Signal&& signal) noexcept; private: diff --git a/include/Nazara/Core/Signal.inl b/include/Nazara/Core/Signal.inl index c4e89bd40..47d490a09 100644 --- a/include/Nazara/Core/Signal.inl +++ b/include/Nazara/Core/Signal.inl @@ -18,13 +18,23 @@ namespace Nz /*! * \brief Constructs a Signal object by default */ - template Signal::Signal() : m_slotIterator(0) { } + /*! + * \brief Constructs a Signal object by default + * + * \remark It doesn't make sense to copy a signal, this is only available for convenience to allow compiler-generated copy constructors + */ + template + Signal::Signal(const Signal&) : + Signal() + { + } + /*! * \brief Constructs a Signal object by move semantic * @@ -174,13 +184,24 @@ namespace Nz m_slots[m_slotIterator]->callback(args...); } + /*! + * \brief Doesn't do anything + * \return A reference to this + * + * \remark This is only for convenience to allow compiled-generated assignation operator + */ + template + Signal& Signal::operator=(const Signal&) + { + return *this; + } + /*! * \brief Moves the signal into this * \return A reference to this * * \param signal Signal to move in this */ - template Signal& Signal::operator=(Signal&& signal) noexcept { diff --git a/include/Nazara/Core/StackArray.hpp b/include/Nazara/Core/StackArray.hpp new file mode 100644 index 000000000..0a9f23faa --- /dev/null +++ b/include/Nazara/Core/StackArray.hpp @@ -0,0 +1,100 @@ +// 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 +#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(); + StackArray(T* stackMemory, std::size_t size); + StackArray(T* stackMemory, std::size_t size, NoInitTag); + StackArray(const StackArray&) = delete; + StackArray(StackArray&&) = default; + ~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; + + StackArray& operator=(const StackArray&) = delete; + StackArray& operator=(StackArray&&) = default; + + private: + std::size_t m_size; + MovablePtr 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..7e46afc64 --- /dev/null +++ b/include/Nazara/Core/StackArray.inl @@ -0,0 +1,216 @@ +// 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() : + m_size(0), + m_ptr(nullptr) + { + } + + 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/include/Nazara/Core/StackVector.hpp b/include/Nazara/Core/StackVector.hpp new file mode 100644 index 000000000..6d01d8589 --- /dev/null +++ b/include/Nazara/Core/StackVector.hpp @@ -0,0 +1,119 @@ +// 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 +#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(); + StackVector(T* stackMemory, std::size_t capacity); + StackVector(const StackVector&) = delete; + StackVector(StackVector&&) = default; + ~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; + + StackVector& operator=(const StackVector&) = delete; + StackVector& operator=(StackVector&&) = default; + + private: + std::size_t m_capacity; + std::size_t m_size; + MovablePtr 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..580ade499 --- /dev/null +++ b/include/Nazara/Core/StackVector.inl @@ -0,0 +1,347 @@ +// 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() : + m_capacity(0), + m_size(0), + m_ptr(nullptr) + { + } + + 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(cbegin(), pos); + if (pos < end()) + { + iterator lastElement = end() - 1; + PlacementNew(&m_ptr[m_size], std::move(*lastElement)); + + if (&m_ptr[index] < lastElement) + std::move_backward(&m_ptr[index], &m_ptr[m_size - 1], &m_ptr[m_size]); + + PlacementDestroy(&m_ptr[index]); + } + 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(cbegin(), pos); + std::move(begin() + index + 1, end(), begin() + index); + pop_back(); + + return iterator(&m_ptr[index]); + } + + template + typename StackVector::iterator StackVector::erase(const_iterator first, const_iterator last) + { + std::size_t index = std::distance(cbegin(), first); + + if (first == last) + return begin() + index; + + assert(first < last); + assert(first >= begin() && last <= end()); + + std::size_t count = std::distance(first, last); + + std::move(begin() + index + count, end(), begin() + index); + resize(size() - count); + + 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) + PlacementDestroy(&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/include/Nazara/Core/String.inl b/include/Nazara/Core/String.inl index 57c781f9e..eed2269d0 100644 --- a/include/Nazara/Core/String.inl +++ b/include/Nazara/Core/String.inl @@ -41,7 +41,7 @@ namespace Nz inline void String::ReleaseString() { - m_sharedString = std::move(GetEmptyString()); + m_sharedString = GetEmptyString(); } /*! diff --git a/include/Nazara/Core/TypeTag.hpp b/include/Nazara/Core/TypeTag.hpp index 150802b01..c7f6c0f4e 100644 --- a/include/Nazara/Core/TypeTag.hpp +++ b/include/Nazara/Core/TypeTag.hpp @@ -10,7 +10,10 @@ namespace Nz { template - struct TypeTag {}; + struct TypeTag + { + using Type = T; + }; } #endif // NAZARA_TYPETAG_HPP 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/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/Graphics/CullingList.hpp b/include/Nazara/Graphics/CullingList.hpp index 7232e9cdb..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; @@ -41,6 +43,12 @@ namespace Nz std::size_t Cull(const Frustumf& frustum, bool* forceInvalidation = nullptr); + 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); @@ -48,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; @@ -102,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 @@ -133,43 +130,73 @@ 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 + 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..341508351 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); + fullyVisibleHash = CombineHash(fullyVisibleHash, std::hash()(entry.renderable)); + + forcedInvalidation = forcedInvalidation | entry.forceInvalidation; + entry.forceInvalidation = false; + break; + + case IntersectionSide_Intersecting: + m_partiallyVisibleResults.push_back(entry.renderable); + partiallyVisibleHash = 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); + fullyVisibleHash = 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); + partiallyVisibleHash = 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); + fullyVisibleHash = 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); + partiallyVisibleHash = 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,115 +156,57 @@ namespace Nz } template - typename CullingList::NoTestEntry CullingList::RegisterNoTest(const T* renderable) + auto CullingList::GetFullyVisibleResults() const -> const ResultContainer& { - NoTestEntry entry(this, m_noTestList.size()); - m_noTestList.emplace_back(NoTestVisibilityEntry{&entry, renderable, false}); //< Address of entry will be updated when moving - - return entry; + return m_fullyVisibleResults; } template - typename CullingList::SphereEntry CullingList::RegisterSphereTest(const T* renderable) + auto CullingList::GetPartiallyVisibleResults() const -> const ResultContainer& { - 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; + return m_partiallyVisibleResults; } template - typename CullingList::VolumeEntry CullingList::RegisterVolumeTest(const T* renderable) + auto CullingList::RegisterBoxTest(const T* renderable) -> BoxEntry { - VolumeEntry entry(this, m_volumeTestList.size()); - m_volumeTestList.emplace_back(VolumeVisibilityEntry{Nz::BoundingVolumef(), &entry, renderable, false}); //< Address of entry will be updated when moving + BoxEntry newEntry(this, m_boxTestList.size()); + m_boxTestList.emplace_back(BoxVisibilityEntry{ Nz::Boxf(), &newEntry, renderable, false }); //< Address of entry will be updated when moving - return entry; - } - - // Interface STD - template - typename CullingList::ResultContainer::iterator CullingList::begin() - { - return m_results.begin(); + return newEntry; } template - typename CullingList::ResultContainer::const_iterator CullingList::begin() const + auto CullingList::RegisterNoTest(const T* renderable) -> NoTestEntry { - return m_results.begin(); + 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 - typename CullingList::ResultContainer::const_iterator CullingList::cbegin() const + auto CullingList::RegisterSphereTest(const T* renderable) -> SphereEntry { - return m_results.cbegin(); + 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; } template - typename CullingList::ResultContainer::const_iterator CullingList::cend() const + auto CullingList::RegisterVolumeTest(const T* renderable) -> VolumeEntry { - return m_results.cend(); + 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; } template - typename CullingList::ResultContainer::const_reverse_iterator CullingList::crbegin() const + inline void CullingList::NotifyBoxUpdate(std::size_t index, const Boxf& box) { - 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 @@ -187,6 +214,12 @@ namespace Nz { switch (type) { + case CullTest::Box: + { + m_boxTestList[index].forceInvalidation = true; + break; + } + case CullTest::NoTest: { m_noTestList[index].forceInvalidation = true; @@ -218,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]; @@ -256,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()); @@ -358,12 +408,7 @@ namespace Nz template template - #ifdef NAZARA_COMPILER_MSVC - // MSVC bug - typename CullingList::Entry& CullingList::Entry::operator=(Entry&& entry) - #else typename CullingList::template Entry& CullingList::Entry::operator=(Entry&& entry) - #endif { m_index = entry.m_index; m_parent = entry.m_parent; @@ -374,6 +419,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/DeferredGeometryPass.hpp b/include/Nazara/Graphics/DeferredGeometryPass.hpp index 3c7890bfe..043378642 100644 --- a/include/Nazara/Graphics/DeferredGeometryPass.hpp +++ b/include/Nazara/Graphics/DeferredGeometryPass.hpp @@ -51,8 +51,16 @@ 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_spriteChains; + mutable std::vector m_spriteBatches; Buffer m_vertexBuffer; RenderStates m_clearStates; ShaderRef m_clearShader; diff --git a/include/Nazara/Graphics/DepthRenderTechnique.hpp b/include/Nazara/Graphics/DepthRenderTechnique.hpp index f8f7bc4e3..5ae883352 100644 --- a/include/Nazara/Graphics/DepthRenderTechnique.hpp +++ b/include/Nazara/Graphics/DepthRenderTechnique.hpp @@ -61,8 +61,16 @@ 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_spriteChains; + mutable std::vector m_spriteBatches; Buffer m_vertexBuffer; RenderStates m_clearStates; ShaderRef m_clearShader; 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 diff --git a/include/Nazara/Graphics/Material.hpp b/include/Nazara/Graphics/Material.hpp index 8baab7e62..00cbbcbdb 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; @@ -135,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); @@ -178,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 3831519a2..66c34e19c 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); } @@ -118,6 +119,14 @@ namespace Nz { m_pipelineInfo = pipelineInfo; + // Temp and dirty fix for pipeline overriding has*Map + m_pipelineInfo.hasAlphaMap = m_alphaMap.IsValid(); + m_pipelineInfo.hasDiffuseMap = m_diffuseMap.IsValid(); + m_pipelineInfo.hasEmissiveMap = m_emissiveMap.IsValid(); + m_pipelineInfo.hasHeightMap = m_heightMap.IsValid(); + m_pipelineInfo.hasNormalMap = m_normalMap.IsValid(); + m_pipelineInfo.hasSpecularMap = m_specularMap.IsValid(); + InvalidatePipeline(); } @@ -392,6 +401,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 +784,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 @@ -866,43 +903,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 @@ -1437,6 +1437,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/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/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 1b0055cf3..9c1809368 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)); + } } /*! @@ -51,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/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..a00eae551 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 * @@ -295,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()))); } } diff --git a/include/Nazara/Graphics/TextSprite.hpp b/include/Nazara/Graphics/TextSprite.hpp index d86d999ad..1826aa21b 100644 --- a/include/Nazara/Graphics/TextSprite.hpp +++ b/include/Nazara/Graphics/TextSprite.hpp @@ -59,6 +59,31 @@ namespace Nz void OnAtlasLayerChange(const AbstractAtlas* atlas, AbstractImage* oldLayer, AbstractImage* newLayer); void UpdateData(InstanceData* instanceData) const override; + struct RenderKey + { + Texture* texture; + int renderOrder; + + bool operator==(const RenderKey& rhs) const + { + return texture == rhs.texture && renderOrder == rhs.renderOrder; + } + + bool operator!=(const RenderKey& rhs) const + { + return !operator==(rhs); + } + }; + + struct HashRenderKey + { + std::size_t operator()(const RenderKey& key) const + { + // Since renderOrder will be very small, this will be enough + return std::hash()(key.texture) + key.renderOrder; + } + }; + struct RenderIndices { unsigned int first; @@ -74,10 +99,10 @@ namespace Nz }; std::unordered_map m_atlases; - mutable std::unordered_map m_renderInfos; + mutable std::unordered_map m_renderInfos; mutable std::vector m_localVertices; Color m_color; - Recti m_localBounds; + Rectf m_localBounds; float m_scale; static TextSpriteLibrary::LibraryMap s_library; diff --git a/include/Nazara/Graphics/TextSprite.inl b/include/Nazara/Graphics/TextSprite.inl index 04a3c1170..97b17d888 100644 --- a/include/Nazara/Graphics/TextSprite.inl +++ b/include/Nazara/Graphics/TextSprite.inl @@ -14,7 +14,7 @@ namespace Nz inline TextSprite::TextSprite() : m_color(Color::White), - m_localBounds(Nz::Recti::Zero()), + m_localBounds(Nz::Rectf::Zero()), m_scale(1.f) { ResetMaterials(1U); 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; diff --git a/include/Nazara/Graphics/TileMap.inl b/include/Nazara/Graphics/TileMap.inl index 23065d429..bb24ea3d4 100644 --- a/include/Nazara/Graphics/TileMap.inl +++ b/include/Nazara/Graphics/TileMap.inl @@ -149,8 +149,8 @@ namespace Nz m_layers[materialIndex].tiles.insert(tileIndex); else if (materialIndex != tile.layerIndex) { - m_layers[materialIndex].tiles.erase(tileIndex); - m_layers[tile.layerIndex].tiles.insert(tileIndex); + m_layers[tile.layerIndex].tiles.erase(tileIndex); + m_layers[materialIndex].tiles.insert(tileIndex); invalidatedLayers |= 1U << tile.layerIndex; } @@ -285,8 +285,8 @@ namespace Nz m_layers[materialIndex].tiles.insert(tileIndex); else if (materialIndex != tile.layerIndex) { - m_layers[materialIndex].tiles.erase(tileIndex); - m_layers[tile.layerIndex].tiles.insert(tileIndex); + m_layers[tile.layerIndex].tiles.erase(tileIndex); + m_layers[materialIndex].tiles.insert(tileIndex); invalidatedLayers |= 1U << tile.layerIndex; } diff --git a/include/Nazara/Lua/LuaCoroutine.inl b/include/Nazara/Lua/LuaCoroutine.inl index 63c7d0eda..43a3f87cb 100644 --- a/include/Nazara/Lua/LuaCoroutine.inl +++ b/include/Nazara/Lua/LuaCoroutine.inl @@ -15,8 +15,7 @@ namespace Nz { LuaState::operator=(std::move(instance)); - m_ref = instance.m_ref; - instance.m_ref = -1; + std::swap(m_ref, instance.m_ref); return *this; } diff --git a/include/Nazara/Lua/LuaState.hpp b/include/Nazara/Lua/LuaState.hpp index 47c6d07cf..4890eae30 100644 --- a/include/Nazara/Lua/LuaState.hpp +++ b/include/Nazara/Lua/LuaState.hpp @@ -157,6 +157,8 @@ namespace Nz void* PushUserdata(std::size_t size) const; void PushValue(int index) const; + bool RawEqual(int index1, int index2) const; + void Remove(int index) const; void Replace(int index) const; diff --git a/include/Nazara/Lua/LuaState.inl b/include/Nazara/Lua/LuaState.inl index 7dcc4e36f..97a0827b0 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,35 @@ 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; + + container->clear(); + for (;;) + { + Nz::CallOnExit popStack { [&instance]() { instance.Pop(); } }; + instance.PushInteger(pos++); + + int tableIndex = (index < 0) ? index - 1 : index; + if (instance.GetTable(tableIndex) == 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/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 diff --git a/include/Nazara/Math/Algorithm.hpp b/include/Nazara/Math/Algorithm.hpp index dd9cb4d5a..7bd77437d 100644 --- a/include/Nazara/Math/Algorithm.hpp +++ b/include/Nazara/Math/Algorithm.hpp @@ -35,15 +35,15 @@ namespace Nz { - template /*constexpr*/ T Approach(T value, T objective, T increment); + template constexpr T Approach(T value, T objective, T increment); template constexpr T Clamp(T value, T min, T max); - template /*constexpr*/ std::size_t CountBits(T value); + template constexpr std::size_t CountBits(T value); template constexpr T FromDegrees(T degrees); template constexpr T FromRadians(T radians); template constexpr T DegreeToRadian(T degrees); - template /*constexpr*/ T GetNearestPowerOfTwo(T number); - /*constexpr*/ unsigned int GetNumberLength(signed char number); - /*constexpr*/ unsigned int GetNumberLength(unsigned char number); + template constexpr T GetNearestPowerOfTwo(T number); + constexpr unsigned int GetNumberLength(signed char number); + constexpr unsigned int GetNumberLength(unsigned char number); unsigned int GetNumberLength(int number); /*constexpr*/ unsigned int GetNumberLength(unsigned int number); unsigned int GetNumberLength(long long number); @@ -53,12 +53,12 @@ namespace Nz unsigned int GetNumberLength(long double number, UInt8 precision = NAZARA_CORE_DECIMAL_DIGITS); template /*constexpr*/ unsigned int IntegralLog2(T number); template /*constexpr*/ unsigned int IntegralLog2Pot(T pot); - template /*constexpr*/ T IntegralPow(T base, unsigned int exponent); + template constexpr T IntegralPow(T base, unsigned int exponent); template constexpr T Lerp(const T& from, const T& to, const T2& interpolation); template constexpr T MultiplyAdd(T x, T y, T z); - template /*constexpr*/ T NormalizeAngle(T angle); - template /*constexpr*/ bool NumberEquals(T a, T b); - template /*constexpr*/ bool NumberEquals(T a, T b, T maxDifference); + template constexpr T NormalizeAngle(T angle); + template constexpr bool NumberEquals(T a, T b); + template constexpr bool NumberEquals(T a, T b, T maxDifference); String NumberToString(long long number, UInt8 radix = 10); template constexpr T RadianToDegree(T radians); long long StringToNumber(String str, UInt8 radix = 10, bool* ok = nullptr); diff --git a/include/Nazara/Math/Algorithm.inl b/include/Nazara/Math/Algorithm.inl index b393d38e6..5a7bfb8fc 100644 --- a/include/Nazara/Math/Algorithm.inl +++ b/include/Nazara/Math/Algorithm.inl @@ -98,13 +98,13 @@ namespace Nz return 0; } - template /*constexpr*/ std::enable_if_t::value, bool> NumberEquals(T a, T b, T maxDifference) + template constexpr std::enable_if_t::value, bool> NumberEquals(T a, T b, T maxDifference) { T diff = std::abs(a - b); return diff <= maxDifference; } - template /*constexpr*/ std::enable_if_t::value || (!std::is_integral::value && !std::is_floating_point::value), bool> NumberEquals(T a, T b, T maxDifference) + template constexpr std::enable_if_t::value || (!std::is_integral::value && !std::is_floating_point::value), bool> NumberEquals(T a, T b, T maxDifference) { if (b > a) std::swap(a, b); @@ -113,7 +113,7 @@ namespace Nz return diff <= maxDifference; } - template /*constexpr*/ std::enable_if_t::value && std::is_integral::value, bool> NumberEquals(T a, T b, T maxDifference) + template constexpr std::enable_if_t::value && std::is_integral::value, bool> NumberEquals(T a, T b, T maxDifference) { if (b > a) std::swap(a, b); @@ -132,10 +132,8 @@ namespace Nz * \param objective Target value * \param increment One step value */ - template - //TODO: Mark as constexpr when supported by all major compilers - /*constexpr*/ inline T Approach(T value, T objective, T increment) + constexpr inline T Approach(T value, T objective, T increment) { if (value < objective) return std::min(value + increment, objective); @@ -154,7 +152,6 @@ namespace Nz * \param min Minimum of the interval * \param max Maximum of the interval */ - template constexpr T Clamp(T value, T min, T max) { @@ -168,10 +165,8 @@ namespace Nz * * \param value The value to count bits */ - template - //TODO: Mark as constexpr when supported by all major compilers - /*constexpr*/ inline std::size_t CountBits(T value) + constexpr inline std::size_t CountBits(T value) { // https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan std::size_t count = 0; @@ -191,7 +186,6 @@ namespace Nz * * \param degrees Angle in degree (this is expected between 0..360) */ - template constexpr T DegreeToRadian(T degrees) { @@ -205,7 +199,6 @@ namespace Nz * * \param degrees Convert degree to NAZARA_MATH_ANGLE_RADIAN unit */ - template constexpr T FromDegrees(T degrees) { @@ -223,7 +216,6 @@ namespace Nz * * \param radians Convert radian to NAZARA_MATH_ANGLE_RADIAN unit */ - template constexpr T FromRadians(T radians) { @@ -241,10 +233,8 @@ namespace Nz * * \param number Number to get nearest power */ - template - //TODO: Mark as constexpr when supported by all major compilers - /*constexpr*/ inline T GetNearestPowerOfTwo(T number) + constexpr inline T GetNearestPowerOfTwo(T number) { T x = 1; while (x < number) @@ -260,9 +250,7 @@ namespace Nz * * \param number Number to get number of digits */ - - //TODO: Mark as constexpr when supported by all major compilers - /*constexpr*/ inline unsigned int GetNumberLength(signed char number) + constexpr inline unsigned int GetNumberLength(signed char number) { // Char is expected to be 1 byte static_assert(sizeof(number) == 1, "Signed char must be one byte-sized"); @@ -288,9 +276,7 @@ namespace Nz * * \param number Number to get number of digits */ - - //TODO: Mark as constexpr when supported by all major compilers - /*constexpr*/ inline unsigned int GetNumberLength(unsigned char number) + constexpr inline unsigned int GetNumberLength(unsigned char number) { // Char is expected to be 1 byte static_assert(sizeof(number) == 1, "Unsigned char must be one byte-sized"); @@ -310,7 +296,6 @@ namespace Nz * * \param number Number to get number of digits */ - inline unsigned int GetNumberLength(int number) { if (number == 0) @@ -326,7 +311,6 @@ namespace Nz * * \param number Number to get number of digits */ - //TODO: Mark as constexpr when supported by all major compilers /*constexpr*/ inline unsigned int GetNumberLength(unsigned int number) { @@ -343,7 +327,6 @@ namespace Nz * * \param number Number to get number of digits */ - inline unsigned int GetNumberLength(long long number) { if (number == 0) @@ -359,7 +342,6 @@ namespace Nz * * \param number Number to get number of digits */ - //TODO: Mark as constexpr when supported by all major compilers /*constexpr*/ inline unsigned int GetNumberLength(unsigned long long number) { @@ -377,7 +359,6 @@ namespace Nz * \param number Number to get number of digits * \param precision Number of digit after the dot */ - inline unsigned int GetNumberLength(float number, UInt8 precision) { // The imprecision of floats need a cast (log10(9.99999) = 0.99999) @@ -392,7 +373,6 @@ namespace Nz * \param number Number to get number of digits * \param precision Number of digit after the dot */ - inline unsigned int GetNumberLength(double number, UInt8 precision) { // The imprecision of floats need a cast (log10(9.99999) = 0.99999) @@ -407,7 +387,6 @@ namespace Nz * \param number Number to get number of digits * \param precision Number of digit after the dot */ - inline unsigned int GetNumberLength(long double number, UInt8 precision) { // The imprecision of floats need a cast (log10(9.99999) = 0.99999) @@ -423,7 +402,6 @@ namespace Nz * * \remark If number is 0, 0 is returned */ - template //TODO: Mark as constexpr when supported by all major compilers /*constexpr*/ inline unsigned int IntegralLog2(T number) @@ -442,7 +420,6 @@ namespace Nz * \remark Only works for power of two * \remark If number is 0, 0 is returned */ - template //TODO: Mark as constexpr when supported by all major compilers /*constexpr*/ inline unsigned int IntegralLog2Pot(T pot) @@ -458,10 +435,8 @@ namespace Nz * \param base Base of the exponentation * \param exponent Power for the base */ - - //TODO: Mark as constexpr when supported by all major compilers template - /*constexpr*/ T IntegralPow(T base, unsigned int exponent) + constexpr T IntegralPow(T base, unsigned int exponent) { T r = 1; for (unsigned int i = 0; i < exponent; ++i) @@ -484,7 +459,6 @@ namespace Nz * * \see Lerp */ - template constexpr T Lerp(const T& from, const T& to, const T2& interpolation) { @@ -540,10 +514,8 @@ namespace Nz * * \param angle Angle to normalize */ - template - //TODO: Mark as constexpr when supported by all major compilers - /*constexpr*/ inline T NormalizeAngle(T angle) + constexpr inline T NormalizeAngle(T angle) { #if NAZARA_MATH_ANGLE_RADIAN const T limit = T(M_PI); @@ -567,10 +539,8 @@ namespace Nz * \param a First value * \param b Second value */ - template - //TODO: Mark as constexpr when supported by all major compilers - /*constexpr*/ inline bool NumberEquals(T a, T b) + constexpr inline bool NumberEquals(T a, T b) { return NumberEquals(a, b, std::numeric_limits::epsilon()); } @@ -584,10 +554,8 @@ namespace Nz * \param b Second value * \param maxDifference Epsilon of comparison (expected to be positive) */ - template - //TODO: Mark as constexpr when supported by all major compilers - /*constexpr*/ inline bool NumberEquals(T a, T b, T maxDifference) + constexpr inline bool NumberEquals(T a, T b, T maxDifference) { return Detail::NumberEquals(a, b, maxDifference); } @@ -603,7 +571,6 @@ namespace Nz * \remark radix is meant to be between 2 and 36, other values are potentially undefined behavior * \remark With NAZARA_MATH_SAFE, a NazaraError is produced and String() is returned */ - inline String NumberToString(long long number, UInt8 radix) { #if NAZARA_MATH_SAFE @@ -651,7 +618,6 @@ namespace Nz * * \param radians Angle in radian (this is expected between 0..2*pi) */ - template constexpr T RadianToDegree(T radians) { @@ -670,7 +636,6 @@ namespace Nz * \remark radix is meant to be between 2 and 36, other values are potentially undefined behavior * \remark With NAZARA_MATH_SAFE, a NazaraError is produced and 0 is returned */ - inline long long StringToNumber(String str, UInt8 radix, bool* ok) { #if NAZARA_MATH_SAFE @@ -727,7 +692,6 @@ namespace Nz * * \param angle Convert degree from NAZARA_MATH_ANGLE_RADIAN unit to degrees */ - template constexpr T ToDegrees(T angle) { @@ -745,7 +709,6 @@ namespace Nz * * \param angle Convert degree from NAZARA_MATH_ANGLE_RADIAN unit to radians */ - template constexpr T ToRadians(T angle) { diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp new file mode 100644 index 000000000..64e7ad878 --- /dev/null +++ b/include/Nazara/Math/Angle.hpp @@ -0,0 +1,106 @@ +// 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 +#include +#include + +namespace Nz +{ + struct SerializationContext; + + template class EulerAngles; + template class Quaternion; + + template + class Angle + { + public: + Angle() = default; + Angle(T angle); + template explicit Angle(const Angle& Angle); + Angle(const Angle&) = default; + ~Angle() = default; + + T GetCos() const; + T GetSin() const; + std::pair GetSinCos() const; + T GetTan() const; + + Angle& MakeZero(); + + void Normalize(); + + Angle& Set(const Angle& ang); + template Angle& Set(const Angle& ang); + + T ToDegrees() const; + Angle ToDegreeAngle() const; + EulerAngles ToEulerAngles() const; + Quaternion ToQuaternion() const; + T ToRadians() const; + Angle ToRadianAngle() const; + String ToString() const; + + template> operator Angle() const { return ToDegreeAngle(); } // GCC < 8 bug + template> operator Angle() const { return ToRadianAngle(); } // GCC < 8 bug + + 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); + Angle& operator*=(T scalar); + Angle& operator/=(T divider); + + 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 value; + }; + + 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..036ed5943 --- /dev/null +++ b/include/Nazara/Math/Angle.inl @@ -0,0 +1,599 @@ +// 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 + +#ifdef NAZARA_PLATFORM_POSIX +#include //< sincos +#endif + +#include + +namespace Nz +{ + namespace Detail + { + template struct AngleUtils; + + template<> + struct AngleUtils + { + template static constexpr T GetEpsilon() + { + return T(1e-4); + } + + 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 GetEpsilon() + { + return T(1e-5); + } + + template static constexpr T GetLimit() + { + return T(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)"; + } + }; + +#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* c) + { + ::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) + { + *sin = std::sin(x); + *cos = std::cos(x); + } +#endif + } + /*! + * \ingroup math + * \class Nz::Angle + * \brief Math class that represents an angle + */ + + /*! + * \brief Constructs an Angle object with an angle value + * + * \param value value of the angle + */ + template + Angle::Angle(T angle) : + value(angle) + { + } + + /*! + * \brief Computes the cosine of the angle + * \return Cosine of angle + * + * \see GetSinCos + */ + template + T Angle::GetCos() const + { + return std::cos(ToRadians()); + } + + /*! + * \brief Computes the sine of the angle + * \return Sine of angle + * + * \see GetSinCos + */ + template + T Angle::GetSin() const + { + return std::sin(ToRadians()); + } + + /*! + * \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(), &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()); + } + + /*! + * \brief Changes the angle value to zero + */ + template + Angle& Angle::MakeZero() + { + value = T(0); + return *this; + } + + /*! + * \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::template GetLimit(); + constexpr T twoLimit = limit * T(2); + + value = std::fmod(value, twoLimit); + if (value < T(0)) + value += twoLimit; + } + + /*! + * \brief Copies the angle value of an angle + * + * \param Angle Angle which will be copied + */ + template + Angle& Angle::Set(const Angle& ang) + { + value = ang.value; + 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& ang) + { + value = static_cast(ang.value); + 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(value); + } + + /*! + * \brief Returns the degree angle that is equivalent to this one + * \return Equivalent degree angle + */ + template + Angle Angle::ToDegreeAngle() const + { + return DegreeAngle(ToDegrees()); + } + + /*! + * \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()); + } + + /*! + * \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 Returns the radian angle that is equivalent to this angle + * \return Equivalent radian angle value + */ + template + T Angle::ToRadians() const + { + return Detail::AngleUtils::ToRadians(value); + } + + /*! + * \brief Returns the radian angle that is equivalent to this angle + * \return Equivalent radian angle + */ + template + Angle Angle::ToRadianAngle() const + { + return RadianAngle(ToRadians()); + } + + /*! + * \brief Converts the angle to a string representation + * \return String representation of the angle + */ + template + String Angle::ToString() const + { + 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() const + { + return ToDegreeAngle(); + }*/ + + /*! + * \brief Converts the angle to a string representation + * \return String representation of the angle + */ + /*template + template + Angle::operator Angle() const + { + return ToRadianAngle(); + }*/ + + /*! + * \brief Addition operator + * \return Adds two angles together + * + * \param other Angle to add + */ + template + Angle Angle::operator+(const Angle& other) const + { + return Angle(value + other.value); + } + + /*! + * \brief Subtraction operator + * \return Subtracts two angles together + * + * \param other Angle to subtract + */ + template + Angle Angle::operator-(const Angle& other) const + { + return Angle(value - other.value); + } + + /*! + * \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(value * 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(value / divider); + } + + /*! + * \brief Adds an angle by another + * \return A reference to the angle + * + * \param other Angle to add + */ + template + Angle& Angle::operator+=(const Angle& other) + { + value += other.value; + return *this; + } + + /*! + * \brief Subtract an angle by another + * \return A reference to the angle + * + * \param other Angle to subtract + */ + template + Angle& Angle::operator-=(const Angle& other) + { + value -= other.value; + return *this; + } + + /*! + * \brief Scales the angle by a scalar + * \return A reference to the angle + * + * \param scalar Multiplier + */ + template + Angle& Angle::operator*=(T scalar) + { + value *= 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) + { + value /= divider; + return *this; + } + + /*! + * \brief Compares the angle to another for equality + * \return True if both angles are equal + * + * \param other The other angle to compare to + */ + template + bool Angle::operator==(const Angle& other) const + { + return NumberEquals(value, other.value, Detail::AngleUtils::template GetEpsilon()); + } + + /*! + * \brief Compares the angle to another for inequality + * \return True if both angles are equal + * + * \param other The other angle to compare to + */ + template + bool Angle::operator!=(const Angle& other) const + { + return !NumberEquals(value, other.value, 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 + */ + 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.value)) + 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->value)) + 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.value); +} + +/*! +* \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.value); +} + +/*! +* \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.value); +} + +#include diff --git a/include/Nazara/Math/Box.hpp b/include/Nazara/Math/Box.hpp index 555e10130..e9e57c8f0 100644 --- a/include/Nazara/Math/Box.hpp +++ b/include/Nazara/Math/Box.hpp @@ -63,7 +63,6 @@ namespace Nz Box& Set(T Width, T Height, T Depth); Box& Set(T X, T Y, T Z, T Width, T Height, T Depth); Box& Set(const T box[6]); - Box& Set(const Box& box); Box& Set(const Rect& rect); Box& Set(const Vector3& lengths); Box& Set(const Vector3& vec1, const Vector3& vec2); diff --git a/include/Nazara/Math/Box.inl b/include/Nazara/Math/Box.inl index 6b0ed9112..6055b3444 100644 --- a/include/Nazara/Math/Box.inl +++ b/include/Nazara/Math/Box.inl @@ -585,21 +585,6 @@ namespace Nz return *this; } - /*! - * \brief Sets the components of the box with components from another - * \return A reference to this box - * - * \param box The other box - */ - - template - Box& Box::Set(const Box& box) - { - std::memcpy(this, &box, sizeof(Box)); - - return *this; - } - /*! * \brief Sets the components of the box with components from a Rect * \return A reference to this box 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, diff --git a/include/Nazara/Math/EulerAngles.hpp b/include/Nazara/Math/EulerAngles.hpp index 126ea399e..503a0fb94 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,7 +36,7 @@ namespace Nz EulerAngles& Set(T P, T Y, T R); EulerAngles& Set(const T angles[3]); - EulerAngles& Set(const EulerAngles& angles); + template EulerAngles& Set(const Angle& angles); //EulerAngles& Set(const Matrix3& mat); EulerAngles& Set(const Quaternion& quat); template EulerAngles& Set(const EulerAngles& angles); diff --git a/include/Nazara/Math/EulerAngles.inl b/include/Nazara/Math/EulerAngles.inl index 2c35503ec..00f78bf27 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,19 +153,20 @@ namespace Nz return *this; } + /*! - * \brief Sets the components of the euler angle from another euler angle + * \brief Sets the components of the euler angle from a 2D rotation specified by an Angle * \return A reference to this euler angle * - * \param angles The other euler angle + * \param angle 2D angle + * + * \see Angle */ - template - EulerAngles& EulerAngles::Set(const EulerAngles& angles) + template + EulerAngles& EulerAngles::Set(const Angle& angle) { - std::memcpy(this, &angles, sizeof(EulerAngles)); - - return *this; + return Set(angle.ToEulerAngles()); } /*! @@ -394,3 +406,4 @@ std::ostream& operator<<(std::ostream& out, const Nz::EulerAngles& angles) #undef F #include +#include "EulerAngles.hpp" diff --git a/include/Nazara/Math/Frustum.hpp b/include/Nazara/Math/Frustum.hpp index 042d55cee..f1b37811a 100644 --- a/include/Nazara/Math/Frustum.hpp +++ b/include/Nazara/Math/Frustum.hpp @@ -52,7 +52,6 @@ namespace Nz Frustum& operator=(const Frustum& other) = default; - Frustum& Set(const Frustum& frustum); template Frustum& Set(const Frustum& frustum); String ToString() const; diff --git a/include/Nazara/Math/Frustum.inl b/include/Nazara/Math/Frustum.inl index 6d6d38500..36a13a316 100644 --- a/include/Nazara/Math/Frustum.inl +++ b/include/Nazara/Math/Frustum.inl @@ -623,21 +623,6 @@ namespace Nz return (c == 6) ? IntersectionSide_Inside : IntersectionSide_Intersecting; } - /*! - * \brief Sets the components of the frustum from another frustum - * \return A reference to this frustum - * - * \param frustum The other frustum - */ - - template - Frustum& Frustum::Set(const Frustum& frustum) - { - std::memcpy(this, &frustum, sizeof(Frustum)); - - return *this; - } - /*! * \brief Sets the components of the frustum from another type of Frustum * \return A reference to this frustum diff --git a/include/Nazara/Math/Matrix4.hpp b/include/Nazara/Math/Matrix4.hpp index cb8667036..3ed2cd717 100644 --- a/include/Nazara/Math/Matrix4.hpp +++ b/include/Nazara/Math/Matrix4.hpp @@ -44,6 +44,8 @@ namespace Nz Matrix4& Concatenate(const Matrix4& matrix); Matrix4& ConcatenateAffine(const Matrix4& matrix); + void Decompose(Vector3& translation, Quaternion& rotation, Vector3& scale); + Vector4 GetColumn(unsigned int column) const; T GetDeterminant() const; T GetDeterminantAffine() const; @@ -82,9 +84,7 @@ namespace Nz T r21, T r22, T r23, T r24, T r31, T r32, T r33, T r34, T r41, T r42, T r43, T r44); - Matrix4& Set(const T matrix[16]); //Matrix4(const Matrix3& matrix); - Matrix4& Set(const Matrix4& matrix); template Matrix4& Set(const Matrix4& matrix); Matrix4& SetRotation(const Quaternion& rotation); Matrix4& SetScale(const Vector3& scale); diff --git a/include/Nazara/Math/Matrix4.inl b/include/Nazara/Math/Matrix4.inl index 297edf8a8..1f2f58a17 100644 --- a/include/Nazara/Math/Matrix4.inl +++ b/include/Nazara/Math/Matrix4.inl @@ -55,9 +55,12 @@ namespace Nz */ template - Matrix4::Matrix4(const T matrix[16]) + Matrix4::Matrix4(const T matrix[16]) : + Matrix4(matrix[ 0], matrix[ 1], matrix[ 2], matrix[ 3], + matrix[ 4], matrix[ 5], matrix[ 6], matrix[ 7], + matrix[ 8], matrix[ 9], matrix[10], matrix[11], + matrix[12], matrix[13], matrix[14], matrix[15]) { - Set(matrix); } /*! @@ -217,6 +220,25 @@ namespace Nz F(1.0)); } + template + void Matrix4::Decompose(Vector3& translation, Quaternion& rotation, Vector3& scale) + { + Matrix4f localMat(*this); + + translation = localMat.GetTranslation(); + scale = localMat.GetScale(); + + Vector3 invScale; + invScale.x = T(1) / scale.x; + invScale.y = T(1) / scale.y; + invScale.z = T(1) / scale.z; + + localMat.ApplyScale(invScale); + + rotation = localMat.GetRotation(); + } + + /*! * \brief Gets the ith column of the matrix * \return Vector4 which is the transformation of this axis @@ -448,7 +470,7 @@ namespace Nz for (unsigned int i = 0; i < 16; ++i) inv[i] *= invDet; - dest->Set(inv); + *dest = inv; return true; } else @@ -550,7 +572,7 @@ namespace Nz inv[15] = F(1.0); - dest->Set(inv); + *dest = inv; return true; } else @@ -1097,37 +1119,6 @@ namespace Nz return *this; } - /*! - * \brief Sets the components of the matrix from an array of sixteen elements - * \return A reference to this matrix - * - * \param matrix[16] Matrix components - */ - - template - Matrix4& Matrix4::Set(const T matrix[16]) - { - // Here we are confident of the continuity of memory elements - std::memcpy(&m11, matrix, 16 * sizeof(T)); - - return *this; - } - - /*! - * \brief Sets the components of the matrix from another matrix - * \return A reference to this matrix - * - * \param matrix The other matrix - */ - - template - Matrix4& Matrix4::Set(const Matrix4& matrix) - { - std::memcpy(this, &matrix, sizeof(Matrix4)); - - return *this; - } - /*! * \brief Sets the components of the matrix from another type of Matrix4 * \return A reference to this matrix diff --git a/include/Nazara/Math/OrientedBox.hpp b/include/Nazara/Math/OrientedBox.hpp index ab136a530..dbc1820c5 100644 --- a/include/Nazara/Math/OrientedBox.hpp +++ b/include/Nazara/Math/OrientedBox.hpp @@ -36,7 +36,6 @@ namespace Nz OrientedBox& Set(T X, T Y, T Z, T Width, T Height, T Depth); OrientedBox& Set(const Box& box); - OrientedBox& Set(const OrientedBox& orientedBox); OrientedBox& Set(const Vector3& vec1, const Vector3& vec2); template OrientedBox& Set(const OrientedBox& orientedBox); diff --git a/include/Nazara/Math/OrientedBox.inl b/include/Nazara/Math/OrientedBox.inl index df864fe26..7e561eb41 100644 --- a/include/Nazara/Math/OrientedBox.inl +++ b/include/Nazara/Math/OrientedBox.inl @@ -164,21 +164,6 @@ namespace Nz return *this; } - /*! - * \brief Sets the components of the oriented box with components from another - * \return A reference to this oriented box - * - * \param orientedBox The other OrientedBox - */ - - template - OrientedBox& OrientedBox::Set(const OrientedBox& orientedBox) - { - std::memcpy(this, &orientedBox, sizeof(OrientedBox)); - - return *this; - } - /*! * \brief Sets a OrientedBox object from two vectors representing point of the space * (X, Y, Z) will be the components minimum of the two vectors and the (width, height, depth) will be the components maximum - minimum diff --git a/include/Nazara/Math/Plane.hpp b/include/Nazara/Math/Plane.hpp index d5384b3fe..0f0dbd5f0 100644 --- a/include/Nazara/Math/Plane.hpp +++ b/include/Nazara/Math/Plane.hpp @@ -37,7 +37,6 @@ namespace Nz Plane& Set(T normalX, T normalY, T normalZ, T Distance); Plane& Set(const T plane[4]); - Plane& Set(const Plane& plane); Plane& Set(const Vector3& Normal, T Distance); Plane& Set(const Vector3& Normal, const Vector3& point); Plane& Set(const Vector3& point1, const Vector3& point2, const Vector3& point3); diff --git a/include/Nazara/Math/Plane.inl b/include/Nazara/Math/Plane.inl index 4c2adc90c..7430b4dca 100644 --- a/include/Nazara/Math/Plane.inl +++ b/include/Nazara/Math/Plane.inl @@ -212,21 +212,6 @@ namespace Nz return *this; } - /*! - * \brief Sets the components of the plane from another plane - * \return A reference to this plane - * - * \param plane The other plane - */ - - template - Plane& Plane::Set(const Plane& plane) - { - std::memcpy(this, &plane, sizeof(Plane)); - - return *this; - } - /*! * \brief Sets the components of the plane from a normal and a distance * \return A reference to this plane diff --git a/include/Nazara/Math/Quaternion.hpp b/include/Nazara/Math/Quaternion.hpp index 17c9a8757..991b23b94 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,11 +51,11 @@ 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]); //Quaternion& Set(const Matrix3& mat); - Quaternion& Set(const Quaternion& quat); template Quaternion& Set(const Quaternion& quat); T SquaredMagnitude() const; diff --git a/include/Nazara/Math/Quaternion.inl b/include/Nazara/Math/Quaternion.inl index 59099f3b8..6d8937566 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) { @@ -405,21 +430,6 @@ namespace Nz return *this; } - /*! - * \brief Sets the components of the quaternion from another quaternion - * \return A reference to this quaternion - * - * \param quat The other quaternion - */ - - template - Quaternion& Quaternion::Set(const Quaternion& quat) - { - std::memcpy(this, &quat, sizeof(Quaternion)); - - return *this; - } - /*! * \brief Sets the components of the quaternion from another type of Quaternion * \return A reference to this quaternion @@ -886,3 +896,4 @@ std::ostream& operator<<(std::ostream& out, const Nz::Quaternion& quat) #undef F #include +#include "Quaternion.hpp" diff --git a/include/Nazara/Math/Ray.hpp b/include/Nazara/Math/Ray.hpp index 677bf50b9..8429e7dc8 100644 --- a/include/Nazara/Math/Ray.hpp +++ b/include/Nazara/Math/Ray.hpp @@ -54,7 +54,6 @@ namespace Nz Ray& Set(const Vector3& origin, const Vector3& direction); Ray& Set(const T origin[3], const T direction[3]); Ray& Set(const Plane& planeOne, const Plane& planeTwo); - Ray& Set(const Ray& ray); template Ray& Set(const Ray& ray); template Ray& Set(const Vector3& origin, const Vector3& direction); diff --git a/include/Nazara/Math/Ray.inl b/include/Nazara/Math/Ray.inl index 673dca796..f2248baca 100644 --- a/include/Nazara/Math/Ray.inl +++ b/include/Nazara/Math/Ray.inl @@ -593,21 +593,6 @@ namespace Nz return *this; } - /*! - * \brief Sets the components of the ray with components from another - * \return A reference to this ray - * - * \param ray The other ray - */ - - template - Ray& Ray::Set(const Ray& ray) - { - std::memcpy(this, &ray, sizeof(Ray)); - - return *this; - } - /*! * \brief Sets the components of the ray from another type of Ray * \return A reference to this ray diff --git a/include/Nazara/Math/Rect.hpp b/include/Nazara/Math/Rect.hpp index db7ee15f0..58e6ed677 100644 --- a/include/Nazara/Math/Rect.hpp +++ b/include/Nazara/Math/Rect.hpp @@ -55,7 +55,6 @@ namespace Nz Rect& Set(T Width, T Height); Rect& Set(T X, T Y, T Width, T Height); Rect& Set(const T rect[4]); - Rect& Set(const Rect& rect); Rect& Set(const Vector2& lengths); Rect& Set(const Vector2& vec1, const Vector2& vec2); template Rect& Set(const Rect& rect); @@ -92,7 +91,9 @@ namespace Nz using Recti = Rect; using Rectui = Rect; using Recti32 = Rect; + using Recti64 = Rect; using Rectui32 = Rect; + using Rectui64 = Rect; template bool Serialize(SerializationContext& context, const Rect& rect, TypeTag>); template bool Unserialize(SerializationContext& context, Rect* rect, TypeTag>); diff --git a/include/Nazara/Math/Rect.inl b/include/Nazara/Math/Rect.inl index 93b6e6d79..20181a763 100644 --- a/include/Nazara/Math/Rect.inl +++ b/include/Nazara/Math/Rect.inl @@ -475,21 +475,6 @@ namespace Nz return *this; } - /*! - * \brief Sets the components of the rectangle with components from another - * \return A reference to this rectangle - * - * \param rect The other Rect - */ - - template - Rect& Rect::Set(const Rect& rect) - { - std::memcpy(this, &rect, sizeof(Rect)); - - return *this; - } - /*! * \brief Sets the components of the rectange from a vector representing width and height * \return A reference to this rectangle diff --git a/include/Nazara/Math/Sphere.hpp b/include/Nazara/Math/Sphere.hpp index 0c9880287..762a276dc 100644 --- a/include/Nazara/Math/Sphere.hpp +++ b/include/Nazara/Math/Sphere.hpp @@ -53,7 +53,6 @@ namespace Nz Sphere& Set(T X, T Y, T Z, T Radius); //Sphere& Set(const Circle& rect); - Sphere& Set(const Sphere& sphere); Sphere& Set(const Vector3& center, T Radius); Sphere& Set(const T sphere[4]); template Sphere& Set(const Sphere& sphere); diff --git a/include/Nazara/Math/Sphere.inl b/include/Nazara/Math/Sphere.inl index 643fcee82..c9ac33414 100644 --- a/include/Nazara/Math/Sphere.inl +++ b/include/Nazara/Math/Sphere.inl @@ -397,21 +397,6 @@ namespace Nz } */ - /*! - * \brief Sets the components of the sphere with center and radius from another - * \return A reference to this sphere - * - * \param sphere The other sphere - */ - - template - Sphere& Sphere::Set(const Sphere& sphere) - { - std::memcpy(this, &sphere, sizeof(Sphere)); - - return *this; - } - /*! * \brief Sets the components of the sphere from an array of four elements * \return A reference to this sphere diff --git a/include/Nazara/Math/Vector2.hpp b/include/Nazara/Math/Vector2.hpp index 6a7f925f6..fa41597a1 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; @@ -55,7 +55,6 @@ namespace Nz Vector2& Set(T X, T Y); Vector2& Set(T scale); Vector2& Set(const T vec[2]); - Vector2& Set(const Vector2& vec); Vector2& Set(const Vector3& vec); Vector2& Set(const Vector4& vec); template Vector2& Set(const Vector2& vec); @@ -92,6 +91,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); @@ -108,7 +108,9 @@ namespace Nz using Vector2i = Vector2; using Vector2ui = Vector2; using Vector2i32 = Vector2; + using Vector2i64 = Vector2; using Vector2ui32 = Vector2; + using Vector2ui64 = Vector2; template bool Serialize(SerializationContext& context, const Vector2& vector, TypeTag>); template bool Unserialize(SerializationContext& context, Vector2* vector, TypeTag>); diff --git a/include/Nazara/Math/Vector2.inl b/include/Nazara/Math/Vector2.inl index c33af8102..d1724f838 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))); } /*! @@ -379,22 +367,8 @@ namespace Nz template Vector2& Vector2::Set(const T vec[2]) { - std::memcpy(&x, vec, 2*sizeof(T)); - - return *this; - } - - /*! - * \brief Sets the components of the vector from another vector - * \return A reference to this vector - * - * \param vec The other vector - */ - - template - Vector2& Vector2::Set(const Vector2& vec) - { - std::memcpy(this, &vec, sizeof(Vector2)); + x = vec[0]; + y = vec[1]; return *this; } @@ -835,6 +809,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..99e3696df 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; @@ -67,7 +67,6 @@ namespace Nz Vector3& Set(T scale); Vector3& Set(const T vec[3]); Vector3& Set(const Vector2& vec, T Z = 0.0); - Vector3& Set(const Vector3& vec); template Vector3& Set(const Vector3& vec); Vector3& Set(const Vector4& vec); @@ -106,8 +105,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(); @@ -130,7 +128,9 @@ namespace Nz using Vector3i = Vector3; using Vector3ui = Vector3; using Vector3i32 = Vector3; + using Vector3i64 = Vector3; using Vector3ui32 = Vector3; + using Vector3ui64 = Vector3; template bool Serialize(SerializationContext& context, const Vector3& vector, TypeTag>); template bool Unserialize(SerializationContext& context, Vector3* vector, TypeTag>); diff --git a/include/Nazara/Math/Vector3.inl b/include/Nazara/Math/Vector3.inl index 8ed7c6977..1dcf48fe7 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))); } /*! @@ -534,20 +523,6 @@ namespace Nz return *this; } - /*! - * \brief Sets the components of the vector from another vector - * \return A reference to this vector - * - * \param vec The other vector - */ - template - Vector3& Vector3::Set(const Vector3& vec) - { - std::memcpy(this, &vec, sizeof(Vector3)); - - return *this; - } - /*! * \brief Sets the components of the vector from another type of Vector3 * \return A reference to this vector @@ -1014,26 +989,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/include/Nazara/Math/Vector4.hpp b/include/Nazara/Math/Vector4.hpp index f1a799fb3..2938df3bb 100644 --- a/include/Nazara/Math/Vector4.hpp +++ b/include/Nazara/Math/Vector4.hpp @@ -57,7 +57,6 @@ namespace Nz Vector4& Set(const T vec[4]); Vector4& Set(const Vector2& vec, T Z = 0.0, T W = 1.0); Vector4& Set(const Vector3& vec, T W = 1.0); - Vector4& Set(const Vector4& vec); template Vector4& Set(const Vector4& vec); String ToString() const; @@ -106,7 +105,9 @@ namespace Nz using Vector4i = Vector4; using Vector4ui = Vector4; using Vector4i32 = Vector4; + using Vector4i64 = Vector4; using Vector4ui32 = Vector4; + using Vector4ui64 = Vector4; template bool Serialize(SerializationContext& context, const Vector4& vector, TypeTag>); template bool Unserialize(SerializationContext& context, Vector4* vector, TypeTag>); diff --git a/include/Nazara/Math/Vector4.inl b/include/Nazara/Math/Vector4.inl index 69d0b513f..6deadf5f5 100644 --- a/include/Nazara/Math/Vector4.inl +++ b/include/Nazara/Math/Vector4.inl @@ -417,7 +417,10 @@ namespace Nz template Vector4& Vector4::Set(const T vec[4]) { - std::memcpy(&x, vec, 4*sizeof(T)); + x = vec[0]; + y = vec[1]; + z = vec[2]; + w = vec[3]; return *this; } @@ -459,21 +462,6 @@ namespace Nz return *this; } - /*! - * \brief Sets the components of the vector from another vector - * \return A reference to this vector - * - * \param vec The other vector - */ - - template - Vector4& Vector4::Set(const Vector4& vec) - { - std::memcpy(this, &vec, sizeof(Vector4)); - - return *this; - } - /*! * \brief Sets the components of the vector from another type of Vector4 * \return A reference to this vector @@ -899,6 +887,21 @@ namespace Nz return !operator<(vec); } + /*! + * \brief Calculates the dot (scalar) product with two vectors + * \return The value of the dot product + * + * \param vec1 The first vector to calculate the dot product with + * \param vec2 The second vector to calculate the dot product with + * + * \see AbsDotProduct, DotProduct + */ + template + T Vector4::DotProduct(const Vector4& vec1, const Vector4& vec2) + { + return vec1.DotProduct(vec2); + } + /*! * \brief Interpolates the vector to other one with a factor of interpolation * \return A new vector which is the interpolation of two vectors @@ -911,7 +914,6 @@ namespace Nz * * \see Lerp */ - template Vector4 Vector4::Lerp(const Vector4& from, const Vector4& to, T interpolation) { 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..9b7434812 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; + OnStateChanged(this, oldState, newState); } } } diff --git a/include/Nazara/Network/ENetHost.hpp b/include/Nazara/Network/ENetHost.hpp index 28a2d2da5..b6af25895 100644 --- a/include/Nazara/Network/ENetHost.hpp +++ b/include/Nazara/Network/ENetHost.hpp @@ -44,6 +44,8 @@ namespace Nz ENetHost(ENetHost&&) = default; inline ~ENetHost(); + inline void AllowsIncomingConnections(bool allow = true); + void Broadcast(UInt8 channelId, ENetPacketFlags flags, NetPacket&& packet); bool CheckEvents(ENetEvent* event); @@ -56,10 +58,16 @@ namespace Nz bool Create(const IpAddress& listenAddress, std::size_t peerCount, std::size_t channelCount, UInt32 incomingBandwidth, UInt32 outgoingBandwidth); inline void Destroy(); + inline bool DoesAllowIncomingConnections() const; + 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..fadcc9fc4 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 @@ -19,6 +20,13 @@ namespace Nz Destroy(); } + inline void ENetHost::AllowsIncomingConnections(bool allow) + { + NazaraAssert(m_address.IsValid() && !m_address.IsLoopback(), "Only server hosts can allow incoming connections"); + + m_allowsIncomingConnections = allow; + } + inline bool ENetHost::Create(NetProtocol protocol, UInt16 port, std::size_t peerCount, std::size_t channelCount) { NazaraAssert(protocol != NetProtocol_Unknown, "Invalid protocol"); @@ -53,6 +61,11 @@ namespace Nz m_socket.Close(); } + inline bool ENetHost::DoesAllowIncomingConnections() const + { + return m_allowsIncomingConnections; + } + inline IpAddress ENetHost::GetBoundAddress() const { return m_address; @@ -63,6 +76,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..812b644cd 100644 --- a/include/Nazara/Network/ENetPeer.hpp +++ b/include/Nazara/Network/ENetPeer.hpp @@ -56,6 +56,11 @@ namespace Nz inline UInt16 GetPeerId() const; inline UInt32 GetRoundTripTime() const; inline ENetPeerState GetState() const; + inline UInt64 GetTotalByteReceived() const; + inline UInt64 GetTotalByteSent() const; + inline UInt32 GetTotalPacketReceived() const; + inline UInt32 GetTotalPacketLost() const; + inline UInt32 GetTotalPacketSent() const; inline bool HasPendingCommands(); @@ -234,9 +239,12 @@ namespace Nz UInt32 m_timeoutLimit; UInt32 m_timeoutMaximum; UInt32 m_timeoutMinimum; + UInt32 m_totalPacketReceived; + UInt32 m_totalPacketLost; + UInt32 m_totalPacketSent; UInt32 m_windowSize; - UInt64 m_totalPacketLost; - UInt64 m_totalPacketSent; + UInt64 m_totalByteReceived; + UInt64 m_totalByteSent; bool m_isSimulationEnabled; }; } diff --git a/include/Nazara/Network/ENetPeer.inl b/include/Nazara/Network/ENetPeer.inl index 3f8ffa846..0d7a96104 100644 --- a/include/Nazara/Network/ENetPeer.inl +++ b/include/Nazara/Network/ENetPeer.inl @@ -62,9 +62,34 @@ namespace Nz return m_state; } + inline UInt64 ENetPeer::GetTotalByteReceived() const + { + return m_totalByteReceived; + } + + inline UInt64 ENetPeer::GetTotalByteSent() const + { + return m_totalByteSent; + } + + inline UInt32 ENetPeer::GetTotalPacketReceived() const + { + return m_totalPacketReceived; + } + + 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(); + return m_outgoingReliableCommands.empty() && m_outgoingUnreliableCommands.empty() && m_sentReliableCommands.empty() && m_sentUnreliableCommands.empty(); } inline bool ENetPeer::IsConnected() const @@ -94,3 +119,4 @@ namespace Nz } #include +#include "ENetPeer.hpp" 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/include/Nazara/Network/NetPacket.inl b/include/Nazara/Network/NetPacket.inl index eb68d1e53..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); + } } /*! @@ -195,7 +198,7 @@ namespace Nz * \param packet NetPacket to move in this */ - inline NetPacket& Nz::NetPacket::operator=(NetPacket&& packet) + inline NetPacket& NetPacket::operator=(NetPacket&& packet) { FreeStream(); @@ -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; } diff --git a/include/Nazara/Network/TcpClient.hpp b/include/Nazara/Network/TcpClient.hpp index 43b299994..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); @@ -54,7 +56,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/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 diff --git a/include/Nazara/Physics2D/Arbiter2D.hpp b/include/Nazara/Physics2D/Arbiter2D.hpp new file mode 100644 index 000000000..b8683e2eb --- /dev/null +++ b/include/Nazara/Physics2D/Arbiter2D.hpp @@ -0,0 +1,61 @@ +// 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 RigidBody2D; + + 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::pair GetBodies() const; + + std::size_t GetContactCount() const; + float GetContactDepth(std::size_t i) const; + Vector2f GetContactPointA(std::size_t i) const; + Vector2f GetContactPointB(std::size_t i) const; + + float GetElasticity() const; + float GetFriction() const; + Vector2f GetNormal() const; + Vector2f GetSurfaceVelocity() const; + + bool IsFirstContact() const; + bool IsRemoval() const; + + void SetElasticity(float elasticity); + void SetFriction(float friction); + void SetSurfaceVelocity(const 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/Collider2D.hpp b/include/Nazara/Physics2D/Collider2D.hpp index 78e76d6d6..d0f7fd608 100644 --- a/include/Nazara/Physics2D/Collider2D.hpp +++ b/include/Nazara/Physics2D/Collider2D.hpp @@ -41,21 +41,30 @@ namespace Nz Collider2D(Collider2D&&) = delete; virtual ~Collider2D(); + virtual Vector2f ComputeCenterOfMass() const = 0; virtual float ComputeMomentOfInertia(float mass) const = 0; - inline Nz::UInt32 GetCategoryMask() const; - inline Nz::UInt32 GetCollisionGroup() const; + virtual void ForEachPolygon(const std::function& callback) const; + + inline UInt32 GetCategoryMask() const; + inline UInt32 GetCollisionGroup() const; inline unsigned int GetCollisionId() const; - inline Nz::UInt32 GetCollisionMask() const; + inline UInt32 GetCollisionMask() const; + inline float GetElasticity() const; + inline float GetFriction() const; + inline Vector2f GetSurfaceVelocity() 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 SetElasticity(float elasticity); + inline void SetFriction(float friction); + inline void SetSurfaceVelocity(const Vector2f& surfaceVelocity); inline void SetTrigger(bool trigger); Collider2D& operator=(const Collider2D&) = delete; @@ -65,16 +74,19 @@ 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; + UInt32 m_categoryMask; + UInt32 m_collisionGroup; + UInt32 m_collisionMask; + Vector2f m_surfaceVelocity; bool m_trigger; - Nz::UInt32 m_categoryMask; - Nz::UInt32 m_collisionGroup; + float m_elasticity; + float m_friction; unsigned int m_collisionId; - 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; }; @@ -90,8 +102,10 @@ namespace Nz BoxCollider2D(const Vector2f& size, float radius = 0.f); BoxCollider2D(const Rectf& rect, float radius = 0.f); + Nz::Vector2f ComputeCenterOfMass() const override; float ComputeMomentOfInertia(float mass) const override; + inline float GetRadius() const; inline const Rectf& GetRect() const; inline Vector2f GetSize() const; ColliderType2D GetType() const override; @@ -99,7 +113,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; @@ -115,15 +129,17 @@ namespace Nz public: CircleCollider2D(float radius, const Vector2f& offset = Vector2f::Zero()); + Nz::Vector2f ComputeCenterOfMass() const override; float ComputeMomentOfInertia(float mass) const override; + inline const Vector2f& GetOffset() const; inline float GetRadius() const; ColliderType2D GetType() const override; 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; @@ -139,17 +155,24 @@ namespace Nz public: CompoundCollider2D(std::vector geoms); + Nz::Vector2f ComputeCenterOfMass() const override; 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::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; }; class ConvexCollider2D; @@ -162,14 +185,16 @@ namespace Nz public: ConvexCollider2D(SparsePtr vertices, std::size_t vertexCount, float radius = 0.f); + Nz::Vector2f ComputeCenterOfMass() const override; float ComputeMomentOfInertia(float mass) const override; ColliderType2D GetType() const override; + inline const std::vector& GetVertices() const; 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; @@ -185,6 +210,7 @@ namespace Nz public: NullCollider2D() = default; + Nz::Vector2f ComputeCenterOfMass() const override; float ComputeMomentOfInertia(float mass) const override; ColliderType2D GetType() const override; @@ -192,7 +218,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; @@ -204,21 +230,28 @@ namespace Nz { public: inline SegmentCollider2D(const Vector2f& first, const Vector2f& second, float thickness = 1.f); + inline SegmentCollider2D(const Vector2f& first, const Vector2f& firstNeighbor, const Vector2f& second, const Vector2f& secondNeighbor, float thickness = 1.f); + Nz::Vector2f ComputeCenterOfMass() const override; float ComputeMomentOfInertia(float mass) const override; inline const Vector2f& GetFirstPoint() const; + inline const Vector2f& GetFirstPointNeighbor() const; inline float GetLength() const; inline const Vector2f& GetSecondPoint() const; + inline const Vector2f& GetSecondPointNeighbor() const; + inline float GetThickness() const; ColliderType2D GetType() const override; 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_firstNeighbor; Vector2f m_second; + Vector2f m_secondNeighbor; float m_thickness; }; } diff --git a/include/Nazara/Physics2D/Collider2D.inl b/include/Nazara/Physics2D/Collider2D.inl index 79af0942d..75696ce50 100644 --- a/include/Nazara/Physics2D/Collider2D.inl +++ b/include/Nazara/Physics2D/Collider2D.inl @@ -2,26 +2,30 @@ // 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 Collider2D::Collider2D() : - m_trigger(false), m_categoryMask(0xFFFFFFFF), m_collisionGroup(0), - m_collisionId(0), - m_collisionMask(0xFFFFFFFF) + m_collisionMask(0xFFFFFFFF), + m_surfaceVelocity(Vector2f::Zero()), + m_trigger(false), + m_elasticity(0.f), + m_friction(0.f), + m_collisionId(0) { } - 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,22 +35,37 @@ namespace Nz return m_collisionId; } - inline Nz::UInt32 Collider2D::GetCollisionMask() const + inline UInt32 Collider2D::GetCollisionMask() const { 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; } - 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,16 +75,36 @@ namespace Nz m_collisionId = typeId; } - inline void Collider2D::SetCollisionMask(Nz::UInt32 mask) + inline void Collider2D::SetCollisionMask(UInt32 mask) { 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; } + inline float BoxCollider2D::GetRadius() const + { + return m_radius; + } + inline const Rectf& BoxCollider2D::GetRect() const { return m_rect; @@ -85,6 +124,11 @@ namespace Nz return object.release(); } + inline const Vector2f& CircleCollider2D::GetOffset() const + { + return m_offset; + } + inline float CircleCollider2D::GetRadius() const { return m_radius; @@ -99,11 +143,21 @@ namespace Nz return object.release(); } - inline const std::vector& Nz::CompoundCollider2D::GetGeoms() const + 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) { @@ -113,6 +167,11 @@ namespace Nz return object.release(); } + inline const std::vector& ConvexCollider2D::GetVertices() const + { + return m_vertices; + } + template ConvexCollider2DRef ConvexCollider2D::New(Args&&... args) { @@ -132,8 +191,15 @@ namespace Nz } SegmentCollider2D::SegmentCollider2D(const Vector2f& first, const Vector2f& second, float thickness) : + SegmentCollider2D(first, first, second, second, thickness) + { + } + + inline SegmentCollider2D::SegmentCollider2D(const Vector2f& first, const Vector2f& firstNeighbor, const Vector2f& second, const Vector2f& secondNeighbor, float thickness) : m_first(first), + m_firstNeighbor(firstNeighbor), m_second(second), + m_secondNeighbor(secondNeighbor), m_thickness(thickness) { } @@ -143,6 +209,11 @@ namespace Nz return m_first; } + inline const Vector2f& SegmentCollider2D::GetFirstPointNeighbor() const + { + return m_firstNeighbor; + } + inline float SegmentCollider2D::GetLength() const { return m_first.Distance(m_second); @@ -153,6 +224,16 @@ namespace Nz return m_second; } + inline const Vector2f& SegmentCollider2D::GetSecondPointNeighbor() const + { + return m_secondNeighbor; + } + + inline float SegmentCollider2D::GetThickness() const + { + return m_thickness; + } + template SegmentCollider2DRef SegmentCollider2D::New(Args&&... args) { diff --git a/include/Nazara/Physics2D/Constraint2D.hpp b/include/Nazara/Physics2D/Constraint2D.hpp index 9b2bf814b..13ee68c86 100644 --- a/include/Nazara/Physics2D/Constraint2D.hpp +++ b/include/Nazara/Physics2D/Constraint2D.hpp @@ -8,7 +8,10 @@ #define NAZARA_CONSTRAINT2D_HPP #include +#include #include +#include +#include #include #include #include @@ -20,11 +23,9 @@ namespace Nz { class Constraint2D; - using Constraint2DConstRef = ObjectRef; - using Constraint2DLibrary = ObjectLibrary; - using Constraint2DRef = ObjectRef; + using Constraint2DHandle = ObjectHandle; - class NAZARA_PHYSICS2D_API Constraint2D : public RefCounted + class NAZARA_PHYSICS2D_API Constraint2D : public HandledObject { public: Constraint2D(const Constraint2D&) = delete; @@ -56,16 +57,12 @@ namespace Nz Constraint2D(Nz::PhysWorld2D* world, cpConstraint* constraint); MovablePtr m_constraint; - - private: - static Constraint2DLibrary s_library; }; class DampedSpringConstraint2D; - using DampedSpringConstraint2DConstRef = ObjectRef; - using DampedSpringConstraint2DRef = ObjectRef; - + using DampedSpringConstraint2DHandle = ObjectHandle; + class NAZARA_PHYSICS2D_API DampedSpringConstraint2D : public Constraint2D { public: @@ -83,35 +80,30 @@ namespace Nz void SetRestLength(float newLength); void SetSecondAnchor(const Vector2f& firstAnchor); void SetStiffness(float newStiffness); - - template static DampedSpringConstraint2DRef New(Args&&... args); }; class DampedRotarySpringConstraint2D; - using DampedRotarySpringConstraint2DConstRef = ObjectRef; - using DampedRotarySpringConstraint2DRef = ObjectRef; + using DampedRotarySpringConstraint2DHandle = ObjectHandle; 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); }; class GearConstraint2D; - using GearConstraint2DConstRef = ObjectRef; + using GearConstraint2DHandle = ObjectHandle; using GearConstraint2DRef = ObjectRef; class NAZARA_PHYSICS2D_API GearConstraint2D : public Constraint2D @@ -131,8 +123,7 @@ namespace Nz class MotorConstraint2D; - using MotorConstraint2DConstRef = ObjectRef; - using MotorConstraint2DRef = ObjectRef; + using MotorConstraint2DHandle = ObjectHandle; class NAZARA_PHYSICS2D_API MotorConstraint2D : public Constraint2D { @@ -142,14 +133,11 @@ namespace Nz float GetRate() const; void SetRate(float rate); - - template static MotorConstraint2DRef New(Args&&... args); }; class PinConstraint2D; - using PinConstraint2DConstRef = ObjectRef; - using PinConstraint2DRef = ObjectRef; + using PinConstraint2DHandle = ObjectHandle; class NAZARA_PHYSICS2D_API PinConstraint2D : public Constraint2D { @@ -164,14 +152,11 @@ namespace Nz void SetDistance(float newDistance); void SetFirstAnchor(const Vector2f& firstAnchor); void SetSecondAnchor(const Vector2f& firstAnchor); - - template static PinConstraint2DRef New(Args&&... args); }; class PivotConstraint2D; - using PivotConstraint2DConstRef = ObjectRef; - using PivotConstraint2DRef = ObjectRef; + using PivotConstraint2DHandle = ObjectHandle; class NAZARA_PHYSICS2D_API PivotConstraint2D : public Constraint2D { @@ -185,14 +170,11 @@ namespace Nz void SetFirstAnchor(const Vector2f& firstAnchor); void SetSecondAnchor(const Vector2f& firstAnchor); - - template static PivotConstraint2DRef New(Args&&... args); }; class RatchetConstraint2D; - using RatchetConstraint2DConstRef = ObjectRef; - using RatchetConstraint2DRef = ObjectRef; + using RatchetConstraint2DHandle = ObjectHandle; class NAZARA_PHYSICS2D_API RatchetConstraint2D : public Constraint2D { @@ -200,41 +182,35 @@ 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); - - template static RatchetConstraint2DRef New(Args&&... args); }; class RotaryLimitConstraint2D; - using RotaryLimitConstraint2DConstRef = ObjectRef; - using RotaryLimitConstraint2DRef = ObjectRef; + using RotaryLimitConstraint2DHandle = ObjectHandle; 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); - - template static RotaryLimitConstraint2DRef New(Args&&... args); + void SetMaxAngle(const RadianAnglef& maxAngle); + void SetMinAngle(const RadianAnglef& minAngle); }; class SlideConstraint2D; - using SlideConstraint2DConstRef = ObjectRef; - using SlideConstraint2DRef = ObjectRef; + using SlideConstraint2DHandle = ObjectHandle; class NAZARA_PHYSICS2D_API SlideConstraint2D : public Constraint2D { @@ -251,8 +227,6 @@ namespace Nz void SetMaxDistance(float newMaxDistance); void SetMinDistance(float newMinDistance); void SetSecondAnchor(const Vector2f& firstAnchor); - - template static SlideConstraint2DRef New(Args&&... args); }; } diff --git a/include/Nazara/Physics2D/Constraint2D.inl b/include/Nazara/Physics2D/Constraint2D.inl index 9bdb1d3ad..2ed7744f3 100644 --- a/include/Nazara/Physics2D/Constraint2D.inl +++ b/include/Nazara/Physics2D/Constraint2D.inl @@ -8,86 +8,6 @@ namespace Nz { - template - DampedSpringConstraint2DRef DampedSpringConstraint2D::New(Args&&... args) - { - std::unique_ptr object(new DampedSpringConstraint2D(std::forward(args)...)); - object->SetPersistent(false); - - return object.release(); - } - - template - DampedRotarySpringConstraint2DRef DampedRotarySpringConstraint2D::New(Args&&... args) - { - std::unique_ptr object(new DampedRotarySpringConstraint2D(std::forward(args)...)); - object->SetPersistent(false); - - return object.release(); - } - - template - GearConstraint2DRef GearConstraint2D::New(Args&&... args) - { - std::unique_ptr object(new GearConstraint2D(std::forward(args)...)); - object->SetPersistent(false); - - return object.release(); - } - - template - MotorConstraint2DRef MotorConstraint2D::New(Args&&... args) - { - std::unique_ptr object(new MotorConstraint2D(std::forward(args)...)); - object->SetPersistent(false); - - return object.release(); - } - - template - PinConstraint2DRef PinConstraint2D::New(Args&&... args) - { - std::unique_ptr object(new PinConstraint2D(std::forward(args)...)); - object->SetPersistent(false); - - return object.release(); - } - - template - PivotConstraint2DRef PivotConstraint2D::New(Args&&... args) - { - std::unique_ptr object(new PivotConstraint2D(std::forward(args)...)); - object->SetPersistent(false); - - return object.release(); - } - - template - RatchetConstraint2DRef RatchetConstraint2D::New(Args&&... args) - { - std::unique_ptr object(new RatchetConstraint2D(std::forward(args)...)); - object->SetPersistent(false); - - return object.release(); - } - - template - RotaryLimitConstraint2DRef RotaryLimitConstraint2D::New(Args&&... args) - { - std::unique_ptr object(new RotaryLimitConstraint2D(std::forward(args)...)); - object->SetPersistent(false); - - return object.release(); - } - - template - SlideConstraint2DRef SlideConstraint2D::New(Args&&... args) - { - std::unique_ptr object(new SlideConstraint2D(std::forward(args)...)); - object->SetPersistent(false); - - return object.release(); - } } #include diff --git a/include/Nazara/Physics2D/PhysWorld2D.hpp b/include/Nazara/Physics2D/PhysWorld2D.hpp index 301e73563..e6521b37a 100644 --- a/include/Nazara/Physics2D/PhysWorld2D.hpp +++ b/include/Nazara/Physics2D/PhysWorld2D.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -22,16 +23,18 @@ 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 DebugDrawCircleCallback = std::function; using DebugDrawDotCallback = std::function; using DebugDrawPolygonCallback = std::function; using DebugDrawSegmentCallback = std::function; @@ -61,18 +64,21 @@ namespace Nz bool NearestBodyQuery(const Vector2f& from, float maxDistance, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, RigidBody2D** nearestBody = nullptr); bool NearestBodyQuery(const Vector2f& from, float maxDistance, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, NearestQueryResult* result); + void RaycastQuery(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, const std::function& callback); 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, const std::function& callback); 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); void SetDamping(float dampingValue); void SetGravity(const Vector2f& gravity); void SetIterationCount(std::size_t iterationCount); void SetMaxStepCount(std::size_t maxStepCount); + void SetSleepTime(float sleepTime); void SetStepSize(float stepSize); void Step(float timestep); @@ -88,7 +94,7 @@ namespace Nz ContactPreSolveCallback preSolveCallback = nullptr; ContactPostSolveCallback postSolveCallback = nullptr; ContactStartCallback startCallback = nullptr; - void* userdata; + void* userdata = nullptr; }; struct DebugDrawOptions @@ -127,7 +133,7 @@ namespace Nz NazaraSignal(OnPhysWorld2DPostStep, const PhysWorld2D* /*physWorld*/, float /*invStepCount*/); private: - void InitCallbacks(cpCollisionHandler* handler, const Callback& callbacks); + void InitCallbacks(cpCollisionHandler* handler, Callback callbacks); using PostStep = std::function; diff --git a/include/Nazara/Physics2D/RigidBody2D.hpp b/include/Nazara/Physics2D/RigidBody2D.hpp index 3b74a1943..f80c0c8cf 100644 --- a/include/Nazara/Physics2D/RigidBody2D.hpp +++ b/include/Nazara/Physics2D/RigidBody2D.hpp @@ -10,48 +10,65 @@ #include #include #include +#include #include #include #include +#include #include struct cpBody; namespace Nz { + class Arbiter2D; class PhysWorld2D; class NAZARA_PHYSICS2D_API RigidBody2D { public: + using VelocityFunc = std::function; + RigidBody2D(PhysWorld2D* world, float mass); RigidBody2D(PhysWorld2D* world, float mass, Collider2DRef geom); RigidBody2D(const RigidBody2D& object); - RigidBody2D(RigidBody2D&& object); + RigidBody2D(RigidBody2D&& object) noexcept; ~RigidBody2D(); void AddForce(const Vector2f& force, CoordSys coordSys = CoordSys_Global); 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; void EnableSimulation(bool simulation); + void ForEachArbiter(std::function callback); + void ForceSleep(); + Rectf GetAABB() const; - float GetAngularVelocity() const; - Vector2f GetCenterOfGravity(CoordSys coordSys = CoordSys_Local) const; + inline float GetAngularDamping() 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; + inline const Vector2f& GetPositionOffset() 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; + const VelocityFunc& GetVelocityFunction() const; PhysWorld2D* GetWorld() const; bool IsKinematic() const; @@ -59,16 +76,31 @@ namespace Nz bool IsSleeping() const; bool IsStatic() const; - void SetAngularVelocity(float angularVelocity); - void SetGeom(Collider2DRef geom, bool recomputeMoment = true); + void ResetVelocityFunction(); + + inline void SetAngularDamping(float angularDamping); + 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, bool recomputeMassCenter = 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); + void SetPositionOffset(const Vector2f& offset); + 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); + void SetVelocityFunction(VelocityFunc velocityFunc); + + void UpdateVelocity(const Nz::Vector2f& gravity, float damping, float deltaTime); + + void Wakeup(); RigidBody2D& operator=(const RigidBody2D& object); RigidBody2D& operator=(RigidBody2D&& object); @@ -85,7 +117,10 @@ namespace Nz void UnregisterFromSpace(); static void CopyBodyData(cpBody* from, cpBody* to); + static void CopyShapeData(cpShape* from, cpShape* to); + Vector2f m_positionOffset; + VelocityFunc m_velocityFunc; std::vector m_shapes; Collider2DRef m_geom; cpBody* m_handle; @@ -99,4 +134,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..272c8fe30 --- /dev/null +++ b/include/Nazara/Physics2D/RigidBody2D.inl @@ -0,0 +1,36 @@ +// 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 Vector2f RigidBody2D::GetCenterOfGravity(CoordSys coordSys) const + { + return GetMassCenter(coordSys); + } + + inline const Vector2f& RigidBody2D::GetPositionOffset() const + { + return m_positionOffset; + } + + inline std::size_t RigidBody2D::GetShapeCount() const + { + return m_shapes.size(); + } + + inline void RigidBody2D::SetAngularDamping(float angularDamping) + { + SetMomentOfInertia(angularDamping); + } +} + +#include diff --git a/include/Nazara/Physics3D/Collider3D.hpp b/include/Nazara/Physics3D/Collider3D.hpp index a7a59a2d1..9dbfe126c 100644 --- a/include/Nazara/Physics3D/Collider3D.hpp +++ b/include/Nazara/Physics3D/Collider3D.hpp @@ -54,7 +54,7 @@ namespace Nz virtual void ComputeInertialMatrix(Vector3f* inertia, Vector3f* center) const; virtual float ComputeVolume() const; - virtual void ForEachPolygon(const std::function& callback) const; + virtual void ForEachPolygon(const std::function& callback) const; NewtonCollision* GetHandle(PhysWorld3D* world) const; virtual ColliderType3D GetType() const = 0; 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/include/Nazara/Platform/Event.hpp b/include/Nazara/Platform/Event.hpp index ece401890..02a842889 100644 --- a/include/Nazara/Platform/Event.hpp +++ b/include/Nazara/Platform/Event.hpp @@ -36,8 +36,8 @@ namespace Nz struct MouseButtonEvent { Mouse::Button button; - unsigned int x; - unsigned int y; + int x; + int y; }; // Used by: @@ -46,8 +46,8 @@ namespace Nz { int deltaX; int deltaY; - unsigned int x; - unsigned int y; + int x; + int y; }; // Used by: @@ -55,6 +55,8 @@ namespace Nz struct MouseWheelEvent { float delta; + int x; + int y; }; // Used by: diff --git a/include/Nazara/Platform/Window.hpp b/include/Nazara/Platform/Window.hpp index 7eb5f449a..47d416930 100644 --- a/include/Nazara/Platform/Window.hpp +++ b/include/Nazara/Platform/Window.hpp @@ -40,7 +40,7 @@ namespace Nz inline Window(VideoMode mode, const String& title, WindowStyleFlags style = WindowStyle_Default); inline explicit Window(WindowHandle handle); Window(const Window&) = delete; - Window(Window&&) = default; + Window(Window&& window); virtual ~Window(); inline void Close(); @@ -78,6 +78,8 @@ namespace Nz NAZARA_DEPRECATED("Event pooling/waiting is deprecated, please use the EventHandler system") bool PollEvent(WindowEvent* event); + void PushEvent(const WindowEvent& event); + void ProcessEvents(bool block = false); void SetCursor(CursorRef cursor); @@ -101,7 +103,7 @@ namespace Nz bool WaitEvent(WindowEvent* event); Window& operator=(const Window&) = delete; - Window& operator=(Window&&) = default; + Window& operator=(Window&& window); protected: virtual bool OnWindowCreated(); @@ -111,13 +113,17 @@ namespace Nz MovablePtr m_impl; private: + void ConnectSlots(); + void DisconnectSlots(); + void IgnoreNextMouseEvent(int mouseX, int mouseY) const; - inline void HandleEvent(const WindowEvent& event); - inline void PushEvent(const WindowEvent& event); + void HandleEvent(const WindowEvent& event); static bool Initialize(); static void Uninitialize(); + NazaraSlot(CursorController, OnCursorUpdated, m_cursorUpdateSlot); + std::queue m_events; std::vector m_pendingEvents; ConditionVariable m_eventCondition; diff --git a/include/Nazara/Platform/Window.inl b/include/Nazara/Platform/Window.inl index 9ce95a78a..1be1a773f 100644 --- a/include/Nazara/Platform/Window.inl +++ b/include/Nazara/Platform/Window.inl @@ -2,6 +2,7 @@ // This file is part of the "Nazara Engine - Platform module" // For conditions of distribution and use, see copyright notice in Config.hpp +#include #include #include #include @@ -90,20 +91,6 @@ namespace Nz SetCursor(Cursor::Get(systemCursor)); } - inline void Window::HandleEvent(const WindowEvent& event) - { - if (m_eventPolling) - m_events.push(event); - - m_eventHandler.Dispatch(event); - - if (event.type == WindowEventType_Resized) - OnWindowResized(); - - if (event.type == WindowEventType_Quit && m_closeOnQuit) - Close(); - } - inline void Window::PushEvent(const WindowEvent& event) { if (!m_asyncWindow) diff --git a/include/Nazara/Prerequisites.hpp b/include/Nazara/Prerequisites.hpp index ddb2796fc..2414aba95 100644 --- a/include/Nazara/Prerequisites.hpp +++ b/include/Nazara/Prerequisites.hpp @@ -77,7 +77,7 @@ // Nazara version macro #define NAZARA_VERSION_MAJOR 0 -#define NAZARA_VERSION_MINOR 3 +#define NAZARA_VERSION_MINOR 4 #define NAZARA_VERSION_PATCH 0 #include @@ -134,9 +134,9 @@ #define NAZARA_CORE_API #endif -// Détection 64 bits +// Detect 64 bits #if !defined(NAZARA_PLATFORM_x64) && (defined(_WIN64) || defined(__amd64__) || defined(__x86_64__) || defined(__ia64__) || defined(__ia64) || \ - defined(_M_IA64) || defined(__itanium__) || defined(__MINGW64__) || defined(_M_AMD64) || defined (_M_X64)) + defined(_M_IA64) || defined(__itanium__) || defined(__MINGW64__) || defined(_M_AMD64) || defined (_M_X64)) #define NAZARA_PLATFORM_x64 #endif diff --git a/include/Nazara/Renderer/Texture.hpp b/include/Nazara/Renderer/Texture.hpp index ef90efcf6..b4108f357 100644 --- a/include/Nazara/Renderer/Texture.hpp +++ b/include/Nazara/Renderer/Texture.hpp @@ -38,7 +38,6 @@ 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); Texture(const Texture&) = delete; Texture(Texture&&) = delete; ~Texture(); @@ -68,24 +67,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 +78,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 +94,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.hpp b/include/Nazara/Utility.hpp index 2ccf84080..97deaca58 100644 --- a/include/Nazara/Utility.hpp +++ b/include/Nazara/Utility.hpp @@ -54,6 +54,7 @@ #include #include #include +#include #include #include #include diff --git a/include/Nazara/Utility/AbstractAtlas.hpp b/include/Nazara/Utility/AbstractAtlas.hpp index bb6c77c2f..fc84cfa0e 100644 --- a/include/Nazara/Utility/AbstractAtlas.hpp +++ b/include/Nazara/Utility/AbstractAtlas.hpp @@ -22,6 +22,8 @@ namespace Nz { public: AbstractAtlas() = default; + AbstractAtlas(const AbstractAtlas&) = delete; + AbstractAtlas(AbstractAtlas&&) noexcept = default; virtual ~AbstractAtlas(); virtual void Clear() = 0; @@ -31,6 +33,9 @@ namespace Nz virtual UInt32 GetStorage() const = 0; virtual bool Insert(const Image& image, Rectui* rect, bool* flipped, unsigned int* layerIndex) = 0; + AbstractAtlas& operator=(const AbstractAtlas&) = delete; + AbstractAtlas& operator=(AbstractAtlas&&) noexcept = default; + // Signals: NazaraSignal(OnAtlasCleared, const AbstractAtlas* /*atlas*/); NazaraSignal(OnAtlasLayerChange, const AbstractAtlas* /*atlas*/, AbstractImage* /*oldLayer*/, AbstractImage* /*newLayer*/); diff --git a/include/Nazara/Utility/AbstractTextDrawer.hpp b/include/Nazara/Utility/AbstractTextDrawer.hpp index c52051a5c..e62338c61 100644 --- a/include/Nazara/Utility/AbstractTextDrawer.hpp +++ b/include/Nazara/Utility/AbstractTextDrawer.hpp @@ -27,7 +27,9 @@ namespace Nz AbstractTextDrawer() = default; virtual ~AbstractTextDrawer(); - virtual const Recti& GetBounds() const = 0; + virtual void Clear() = 0; + + virtual const Rectf& GetBounds() const = 0; virtual Font* GetFont(std::size_t index) const = 0; virtual std::size_t GetFontCount() const = 0; virtual const Glyph& GetGlyph(std::size_t index) const = 0; @@ -35,6 +37,9 @@ namespace Nz 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; + virtual float GetMaxLineWidth() const = 0; + + virtual void SetMaxLineWidth(float lineWidth) = 0; struct Glyph { @@ -44,6 +49,7 @@ namespace Nz Vector2f corners[4]; AbstractImage* atlas; bool flipped; + int renderOrder; }; struct Line 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/Enums.hpp b/include/Nazara/Utility/Enums.hpp index edc8708b4..c77fed662 100644 --- a/include/Nazara/Utility/Enums.hpp +++ b/include/Nazara/Utility/Enums.hpp @@ -330,18 +330,26 @@ namespace Nz TextAlign_Max = TextAlign_Right }; - enum TextStyleFlags + enum TextStyle { - TextStyle_Regular = 0x0, + TextStyle_Bold, + TextStyle_Italic, + TextStyle_StrikeThrough, + TextStyle_Underlined, - TextStyle_Bold = 0x1, - TextStyle_Italic = 0x2, - TextStyle_StrikeThrough = 0x4, - TextStyle_Underlined = 0x8, - - TextStyle_Max = TextStyle_Underlined*2-1 + TextStyle_Max = TextStyle_Underlined }; + template<> + struct EnumAsFlags + { + static constexpr TextStyle max = TextStyle_Max; + }; + + using TextStyleFlags = Flags; + + constexpr TextStyleFlags TextStyle_Regular = 0; + enum VertexComponent { VertexComponent_Unused = -1, diff --git a/include/Nazara/Utility/Font.hpp b/include/Nazara/Utility/Font.hpp index 7f1a411cd..70cbf6150 100644 --- a/include/Nazara/Utility/Font.hpp +++ b/include/Nazara/Utility/Font.hpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -58,14 +59,14 @@ namespace Nz bool Create(FontData* data); void Destroy(); - bool ExtractGlyph(unsigned int characterSize, char32_t character, UInt32 style, FontGlyph* glyph) const; + bool ExtractGlyph(unsigned int characterSize, char32_t character, TextStyleFlags style, float outlineThickness, FontGlyph* glyph) const; const std::shared_ptr& GetAtlas() const; - std::size_t GetCachedGlyphCount(unsigned int characterSize, UInt32 style) const; + std::size_t GetCachedGlyphCount(unsigned int characterSize, TextStyleFlags style, float outlineThickness) const; std::size_t GetCachedGlyphCount() const; String GetFamilyName() const; int GetKerning(unsigned int characterSize, char32_t first, char32_t second) const; - const Glyph& GetGlyph(unsigned int characterSize, UInt32 style, char32_t character) const; + const Glyph& GetGlyph(unsigned int characterSize, TextStyleFlags style, float outlineThickness, char32_t character) const; unsigned int GetGlyphBorder() const; unsigned int GetMinimumStepSize() const; const SizeInfo& GetSizeInfo(unsigned int characterSize) const; @@ -73,13 +74,8 @@ namespace Nz bool IsValid() const; - 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()); + bool Precache(unsigned int characterSize, TextStyleFlags style, float outlineThickness, char32_t character) const; + bool Precache(unsigned int characterSize, TextStyleFlags style, float outlineThickness, const String& characterSet) const; void SetAtlas(const std::shared_ptr& atlas); void SetGlyphBorder(unsigned int borderSize); @@ -93,6 +89,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); @@ -107,6 +107,7 @@ namespace Nz bool requireFauxItalic; bool flipped; bool valid; + float fauxOutlineThickness; int advance; unsigned int layerIndex; }; @@ -131,11 +132,11 @@ namespace Nz private: using GlyphMap = std::unordered_map; - UInt64 ComputeKey(unsigned int characterSize, UInt32 style) const; + UInt64 ComputeKey(unsigned int characterSize, TextStyleFlags style, float outlineThickness) const; void OnAtlasCleared(const AbstractAtlas* atlas); void OnAtlasLayerChange(const AbstractAtlas* atlas, AbstractImage* oldLayer, AbstractImage* newLayer); void OnAtlasRelease(const AbstractAtlas* atlas); - const Glyph& PrecacheGlyph(GlyphMap& glyphMap, unsigned int characterSize, UInt32 style, char32_t character) const; + const Glyph& PrecacheGlyph(GlyphMap& glyphMap, unsigned int characterSize, TextStyleFlags style, float outlineThickness, char32_t character) const; static bool Initialize(); static void Uninitialize(); diff --git a/include/Nazara/Utility/FontData.hpp b/include/Nazara/Utility/FontData.hpp index efd2e6d94..88838a3b7 100644 --- a/include/Nazara/Utility/FontData.hpp +++ b/include/Nazara/Utility/FontData.hpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace Nz { @@ -21,7 +22,7 @@ namespace Nz FontData() = default; virtual ~FontData(); - virtual bool ExtractGlyph(unsigned int characterSize, char32_t character, UInt32 style, FontGlyph* dst) = 0; + virtual bool ExtractGlyph(unsigned int characterSize, char32_t character, TextStyleFlags style, float outlineThickness, FontGlyph* dst) = 0; virtual String GetFamilyName() const = 0; virtual String GetStyleName() const = 0; @@ -35,7 +36,8 @@ namespace Nz virtual float QueryUnderlinePosition(unsigned int characterSize) const = 0; virtual float QueryUnderlineThickness(unsigned int characterSize) const = 0; - virtual bool SupportsStyle(UInt32 style) const = 0; + virtual bool SupportsOutline(float outlineThickness) const = 0; + virtual bool SupportsStyle(TextStyleFlags style) const = 0; }; } diff --git a/include/Nazara/Utility/GuillotineImageAtlas.hpp b/include/Nazara/Utility/GuillotineImageAtlas.hpp index 5a1633113..506922c46 100644 --- a/include/Nazara/Utility/GuillotineImageAtlas.hpp +++ b/include/Nazara/Utility/GuillotineImageAtlas.hpp @@ -21,7 +21,9 @@ namespace Nz { public: GuillotineImageAtlas(); - virtual ~GuillotineImageAtlas(); + GuillotineImageAtlas(const GuillotineImageAtlas&) = delete; + GuillotineImageAtlas(GuillotineImageAtlas&&) noexcept = default; + ~GuillotineImageAtlas() = default; void Clear() override; @@ -38,6 +40,9 @@ namespace Nz void SetRectChoiceHeuristic(GuillotineBinPack::FreeRectChoiceHeuristic heuristic); void SetRectSplitHeuristic(GuillotineBinPack::GuillotineSplitHeuristic heuristic); + GuillotineImageAtlas& operator=(const GuillotineImageAtlas&) = delete; + GuillotineImageAtlas& operator=(GuillotineImageAtlas&&) noexcept = default; + protected: struct Layer; 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/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/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/include/Nazara/Utility/Node.hpp b/include/Nazara/Utility/Node.hpp index 6065d1e04..df931a7ba 100644 --- a/include/Nazara/Utility/Node.hpp +++ b/include/Nazara/Utility/Node.hpp @@ -41,10 +41,10 @@ namespace Nz virtual Vector3f GetLeft() const; virtual NodeType GetNodeType() const; const Node* GetParent() const; - Vector3f GetPosition(CoordSys coordSys = CoordSys_Global) const; + Vector3f GetPosition(CoordSys coordSys = CoordSys_Local) const; virtual Vector3f GetRight() const; - Quaternionf GetRotation(CoordSys coordSys = CoordSys_Global) const; - Vector3f GetScale(CoordSys coordSys = CoordSys_Global) const; + Quaternionf GetRotation(CoordSys coordSys = CoordSys_Local) const; + Vector3f GetScale(CoordSys coordSys = CoordSys_Local) const; const Matrix4f& GetTransformMatrix() const; virtual Vector3f GetUp() const; @@ -75,6 +75,7 @@ namespace Nz void SetPosition(const Vector3f& translation, CoordSys coordSys = CoordSys_Local); void SetPosition(float translationX, float translationY, float translationZ = 0.f, CoordSys coordSys = CoordSys_Local); void SetRotation(const Quaternionf& quat, CoordSys coordSys = CoordSys_Local); + void SetScale(const Vector2f& scale, CoordSys coordSys = CoordSys_Local); void SetScale(const Vector3f& scale, CoordSys coordSys = CoordSys_Local); void SetScale(float scale, CoordSys coordSys = CoordSys_Local); void SetScale(float scaleX, float scaleY, float scaleZ = 1.f, CoordSys coordSys = CoordSys_Local); @@ -105,6 +106,8 @@ namespace Nz virtual void UpdateDerived() const; virtual void UpdateTransformMatrix() const; + static Quaternionf ScaleQuaternion(const Vector3f& scale, Quaternionf quaternion); + mutable std::vector m_childs; mutable Matrix4f m_transformMatrix; mutable Quaternionf m_derivedRotation; diff --git a/include/Nazara/Utility/RichTextDrawer.hpp b/include/Nazara/Utility/RichTextDrawer.hpp new file mode 100644 index 000000000..25bd8dcf6 --- /dev/null +++ b/include/Nazara/Utility/RichTextDrawer.hpp @@ -0,0 +1,212 @@ +// Copyright (C) 2016 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 + +#pragma once + +#ifndef NAZARA_RICHTEXTDRAWER_HPP +#define NAZARA_RICHTEXTDRAWER_HPP + +#include +#include +#include +#include +#include +#include + +namespace Nz +{ + class NAZARA_UTILITY_API RichTextDrawer : public AbstractTextDrawer + { + public: + class BlockRef; + + RichTextDrawer(); + RichTextDrawer(const RichTextDrawer& drawer); + RichTextDrawer(RichTextDrawer&& drawer); + ~RichTextDrawer(); + + BlockRef AppendText(const String& str, bool forceNewBlock = false); + + void Clear() override; + + inline std::size_t FindBlock(std::size_t glyphIndex) const; + + inline unsigned int GetBlockCharacterSize(std::size_t index) const; + inline float GetBlockCharacterSpacingOffset(std::size_t index) const; + inline const Color& GetBlockColor(std::size_t index) const; + inline std::size_t GetBlockCount() const; + inline std::size_t GetBlockFirstGlyphIndex(std::size_t index) const; + inline const FontRef& GetBlockFont(std::size_t index) const; + inline float GetBlockLineHeight(std::size_t index) const; + inline float GetBlockLineSpacingOffset(std::size_t index) const; + inline const Color& GetBlockOutlineColor(std::size_t index) const; + inline float GetBlockOutlineThickness(std::size_t index) const; + inline TextStyleFlags GetBlockStyle(std::size_t index) const; + inline const String& GetBlockText(std::size_t index) const; + + inline BlockRef GetBlock(std::size_t index); + const Rectf& GetBounds() const override; + inline unsigned int GetDefaultCharacterSize() const; + inline float GetDefaultCharacterSpacingOffset() const; + inline const Color& GetDefaultColor() const; + inline const FontRef& GetDefaultFont() const; + inline float GetDefaultLineSpacingOffset() const; + inline const Color& GetDefaultOutlineColor() const; + inline float GetDefaultOutlineThickness() const; + inline TextStyleFlags GetDefaultStyle() const; + Font* GetFont(std::size_t index) const override; + std::size_t GetFontCount() const override; + const Glyph& GetGlyph(std::size_t index) const override; + std::size_t GetGlyphCount() const override; + const Line& GetLine(std::size_t index) const override; + std::size_t GetLineCount() const override; + float GetMaxLineWidth() const override; + + inline bool HasBlocks() const; + + void MergeBlocks(); + + void RemoveBlock(std::size_t index); + + inline void SetBlockCharacterSize(std::size_t index, unsigned int characterSize); + inline void SetBlockCharacterSpacingOffset(std::size_t index, float offset); + inline void SetBlockColor(std::size_t index, const Color& color); + inline void SetBlockFont(std::size_t index, FontRef font); + inline void SetBlockLineSpacingOffset(std::size_t index, float offset); + inline void SetBlockOutlineColor(std::size_t index, const Color& color); + inline void SetBlockOutlineThickness(std::size_t index, float thickness); + inline void SetBlockStyle(std::size_t index, TextStyleFlags style); + inline void SetBlockText(std::size_t index, String str); + + inline void SetDefaultCharacterSize(unsigned int characterSize); + inline void SetDefaultCharacterSpacingOffset(float offset); + inline void SetDefaultColor(const Color& color); + inline void SetDefaultFont(const FontRef& font); + inline void SetDefaultLineSpacingOffset(float offset); + inline void SetDefaultOutlineColor(const Color& color); + inline void SetDefaultOutlineThickness(float thickness); + inline void SetDefaultStyle(TextStyleFlags style); + + void SetMaxLineWidth(float lineWidth) override; + + RichTextDrawer& operator=(const RichTextDrawer& drawer); + RichTextDrawer& operator=(RichTextDrawer&& drawer); + + static constexpr std::size_t InvalidBlockIndex = std::numeric_limits::max(); + + private: + struct Block; + + inline void AppendNewLine(const Font* font, unsigned int characterSize, float lineSpacingOffset) const; + void AppendNewLine(const Font* font, unsigned int characterSize, float lineSpacingOffset, std::size_t glyphIndex, float glyphPosition) const; + inline void ClearGlyphs() const; + inline void ConnectFontSlots(); + inline void DisconnectFontSlots(); + bool GenerateGlyph(Glyph& glyph, char32_t character, float outlineThickness, bool lineWrap, const Font* font, const Color& color, TextStyleFlags style, float lineSpacingOffset, unsigned int characterSize, int renderOrder, int* advance) const; + void GenerateGlyphs(const Font* font, const Color& color, TextStyleFlags style, unsigned int characterSize, const Color& outlineColor, float characterSpacingOffset, float lineSpacingOffset, float outlineThickness, const String& text) const; + inline float GetLineHeight(const Block& block) const; + inline float GetLineHeight(float lineSpacingOffset, const Font::SizeInfo& sizeInfo) const; + inline std::size_t HandleFontAddition(const FontRef& font); + inline void InvalidateGlyphs(); + inline void ReleaseFont(std::size_t fontIndex); + inline bool ShouldLineWrap(float size) const; + + void OnFontAtlasLayerChanged(const Font* font, AbstractImage* oldLayer, AbstractImage* newLayer); + void OnFontInvalidated(const Font* font); + void OnFontRelease(const Font* object); + + void UpdateGlyphs() const; + + static constexpr std::size_t InvalidGlyph = std::numeric_limits::max(); + + struct Block + { + std::size_t fontIndex; + std::size_t glyphIndex; + Color color; + Color outlineColor; + String text; + TextStyleFlags style; + float characterSpacingOffset; + float lineSpacingOffset; + float outlineThickness; + unsigned int characterSize; + }; + + struct FontData + { + FontRef font; + std::size_t useCount = 0; + + NazaraSlot(Font, OnFontAtlasChanged, atlasChangedSlot); + NazaraSlot(Font, OnFontAtlasLayerChanged, atlasLayerChangedSlot); + NazaraSlot(Font, OnFontGlyphCacheCleared, glyphCacheClearedSlot); + NazaraSlot(Font, OnFontRelease, fontReleaseSlot); + }; + + Color m_defaultColor; + Color m_defaultOutlineColor; + TextStyleFlags m_defaultStyle; + FontRef m_defaultFont; + mutable std::size_t m_lastSeparatorGlyph; + std::unordered_map m_fontIndexes; + std::vector m_blocks; + std::vector m_fonts; + mutable std::vector m_glyphs; + mutable std::vector m_lines; + mutable Rectf m_bounds; + mutable Vector2f m_drawPos; + mutable bool m_glyphUpdated; + float m_defaultCharacterSpacingOffset; + float m_defaultLineSpacingOffset; + float m_defaultOutlineThickness; + float m_maxLineWidth; + unsigned int m_defaultCharacterSize; + mutable float m_lastSeparatorPosition; + }; + + class RichTextDrawer::BlockRef + { + friend RichTextDrawer; + + public: + BlockRef(const BlockRef&) = default; + BlockRef(BlockRef&&) = default; + ~BlockRef() = default; + + inline float GetCharacterSpacingOffset() const; + inline unsigned int GetCharacterSize() const; + inline Color GetColor() const; + inline std::size_t GetFirstGlyphIndex() const; + inline const FontRef& GetFont() const; + inline float GetLineSpacingOffset() const; + inline Color GetOutlineColor() const; + inline float GetOutlineThickness() const; + inline TextStyleFlags GetStyle() const; + inline const String& GetText() const; + + inline void SetCharacterSpacingOffset(float offset); + inline void SetCharacterSize(unsigned int size); + inline void SetColor(Color color); + inline void SetFont(FontRef font); + inline void SetLineSpacingOffset(float offset); + inline void SetOutlineColor(Color color); + inline void SetOutlineThickness(float thickness); + inline void SetStyle(TextStyleFlags style); + inline void SetText(const String& text); + + BlockRef& operator=(const BlockRef&) = default; + BlockRef& operator=(BlockRef&&) = default; + + private: + inline BlockRef(RichTextDrawer& drawer, std::size_t index); + + std::size_t m_blockIndex; + RichTextDrawer& m_drawer; + }; +} + +#include + +#endif // NAZARA_RICHTEXTDRAWER_HPP diff --git a/include/Nazara/Utility/RichTextDrawer.inl b/include/Nazara/Utility/RichTextDrawer.inl new file mode 100644 index 000000000..38f220198 --- /dev/null +++ b/include/Nazara/Utility/RichTextDrawer.inl @@ -0,0 +1,631 @@ +// Copyright (C) 2016 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 RichTextDrawer::FindBlock(std::size_t glyphIndex) const + { + auto it = m_blocks.begin(); + for (; it != m_blocks.end(); ++it) + { + if (it->glyphIndex > glyphIndex) + break; + } + + assert(it != m_blocks.begin()); + return std::distance(m_blocks.begin(), it) - 1; + /* + // Binary search + std::size_t count = m_blocks.size(); + std::size_t step; + + std::size_t i = InvalidBlockIndex; + std::size_t first = 0; + std::size_t last = count; + while (count > 0) + { + i = first; + step = count / 2; + + i += step; + + if (m_blocks[i].glyphIndex < glyphIndex) + { + first = ++i; + count -= step + 1; + } + else + count = step; + } + + return i;*/ + } + + inline auto RichTextDrawer::GetBlock(std::size_t index) -> BlockRef + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + return BlockRef(*this, index); + } + + inline unsigned int RichTextDrawer::GetBlockCharacterSize(std::size_t index) const + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + return m_blocks[index].characterSize; + } + + inline float RichTextDrawer::GetBlockCharacterSpacingOffset(std::size_t index) const + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + return m_blocks[index].characterSpacingOffset; + } + + inline const Color& RichTextDrawer::GetBlockColor(std::size_t index) const + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + return m_blocks[index].color; + } + + inline std::size_t RichTextDrawer::GetBlockCount() const + { + return m_blocks.size(); + } + + inline std::size_t RichTextDrawer::GetBlockFirstGlyphIndex(std::size_t index) const + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + return m_blocks[index].glyphIndex; + } + + inline const FontRef& RichTextDrawer::GetBlockFont(std::size_t index) const + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + std::size_t fontIndex = m_blocks[index].fontIndex; + assert(fontIndex < m_fonts.size()); + return m_fonts[fontIndex].font; + } + + inline float RichTextDrawer::GetBlockLineHeight(std::size_t index) const + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + return m_blocks[index].lineSpacingOffset; + } + + inline float RichTextDrawer::GetBlockLineSpacingOffset(std::size_t index) const + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + return m_blocks[index].lineSpacingOffset; + } + + inline const Color& RichTextDrawer::GetBlockOutlineColor(std::size_t index) const + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + return m_blocks[index].outlineColor; + } + + inline float RichTextDrawer::GetBlockOutlineThickness(std::size_t index) const + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + return m_blocks[index].outlineThickness; + } + + inline TextStyleFlags RichTextDrawer::GetBlockStyle(std::size_t index) const + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + return m_blocks[index].style; + } + + inline const String& RichTextDrawer::GetBlockText(std::size_t index) const + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + return m_blocks[index].text; + } + + inline unsigned int RichTextDrawer::GetDefaultCharacterSize() const + { + return m_defaultCharacterSize; + } + + inline float RichTextDrawer::GetDefaultCharacterSpacingOffset() const + { + return m_defaultCharacterSpacingOffset; + } + + inline const Color& RichTextDrawer::GetDefaultColor() const + { + return m_defaultColor; + } + + inline const FontRef& RichTextDrawer::GetDefaultFont() const + { + return m_defaultFont; + } + + inline float RichTextDrawer::GetDefaultLineSpacingOffset() const + { + return m_defaultLineSpacingOffset; + } + + inline const Color& RichTextDrawer::GetDefaultOutlineColor() const + { + return m_defaultOutlineColor; + } + + inline float RichTextDrawer::GetDefaultOutlineThickness() const + { + return m_defaultOutlineThickness; + } + + inline TextStyleFlags RichTextDrawer::GetDefaultStyle() const + { + return m_defaultStyle; + } + + inline void RichTextDrawer::AppendNewLine(const Font* font, unsigned int characterSize, float lineSpacingOffset) const + { + AppendNewLine(font, characterSize, lineSpacingOffset, InvalidGlyph, 0); + } + + inline void RichTextDrawer::ClearGlyphs() const + { + m_bounds.MakeZero(); + m_lastSeparatorGlyph = InvalidGlyph; + m_lines.clear(); + m_glyphs.clear(); + m_glyphUpdated = true; + m_bounds.MakeZero(); //< Compute bounds as float to speedup bounds computation (as casting between floats and integers is costly) + } + + inline void RichTextDrawer::ConnectFontSlots() + { + for (auto& fontData : m_fonts) + { + fontData.atlasChangedSlot.Connect(fontData.font->OnFontAtlasChanged, this, &RichTextDrawer::OnFontInvalidated); + fontData.atlasLayerChangedSlot.Connect(fontData.font->OnFontAtlasLayerChanged, this, &RichTextDrawer::OnFontAtlasLayerChanged); + fontData.fontReleaseSlot.Connect(fontData.font->OnFontDestroy, this, &RichTextDrawer::OnFontRelease); + fontData.glyphCacheClearedSlot.Connect(fontData.font->OnFontGlyphCacheCleared, this, &RichTextDrawer::OnFontInvalidated); + } + } + + inline void RichTextDrawer::DisconnectFontSlots() + { + for (auto& fontData : m_fonts) + { + fontData.atlasChangedSlot.Disconnect(); + fontData.atlasLayerChangedSlot.Disconnect(); + fontData.fontReleaseSlot.Disconnect(); + fontData.glyphCacheClearedSlot.Disconnect(); + } + } + + inline float RichTextDrawer::GetLineHeight(const Block& block) const + { + assert(block.fontIndex < m_fonts.size()); + const FontData& fontData = m_fonts[block.fontIndex]; + + return GetLineHeight(block.lineSpacingOffset, fontData.font->GetSizeInfo(block.characterSize)); + } + + inline float RichTextDrawer::GetLineHeight(float lineSpacingOffset, const Font::SizeInfo& sizeInfo) const + { + return float(sizeInfo.lineHeight) + lineSpacingOffset; + } + + inline std::size_t RichTextDrawer::HandleFontAddition(const FontRef& font) + { + auto it = m_fontIndexes.find(font); + if (it == m_fontIndexes.end()) + { + std::size_t fontIndex = m_fonts.size(); + m_fonts.emplace_back(); + auto& fontData = m_fonts.back(); + fontData.font = font; + fontData.atlasChangedSlot.Connect(font->OnFontAtlasChanged, this, &RichTextDrawer::OnFontInvalidated); + fontData.atlasLayerChangedSlot.Connect(font->OnFontAtlasLayerChanged, this, &RichTextDrawer::OnFontAtlasLayerChanged); + fontData.fontReleaseSlot.Connect(font->OnFontDestroy, this, &RichTextDrawer::OnFontRelease); + fontData.glyphCacheClearedSlot.Connect(font->OnFontGlyphCacheCleared, this, &RichTextDrawer::OnFontInvalidated); + + it = m_fontIndexes.emplace(font, fontIndex).first; + } + + return it->second; + } + + inline void RichTextDrawer::ReleaseFont(std::size_t fontIndex) + { + assert(fontIndex < m_fonts.size()); + + FontData& fontData = m_fonts[fontIndex]; + assert(fontData.useCount > 0); + + if (--fontData.useCount == 0) + { + // Shift font indexes + m_fontIndexes.erase(fontData.font); + for (auto& fontIndexe : m_fontIndexes) + { + if (fontIndexe.second > fontIndex) + fontIndexe.second--; + } + + m_fonts.erase(m_fonts.begin() + fontIndex); + } + } + + inline bool RichTextDrawer::ShouldLineWrap(float size) const + { + if (m_lines.back().glyphIndex > m_glyphs.size()) + return false; + + return m_lines.back().bounds.GetMaximum().x + size > m_maxLineWidth; + } + + inline bool RichTextDrawer::HasBlocks() const + { + return !m_blocks.empty(); + } + + inline void RichTextDrawer::SetBlockCharacterSize(std::size_t index, unsigned int characterSize) + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + m_blocks[index].characterSize = characterSize; + + InvalidateGlyphs(); + } + + inline void RichTextDrawer::SetBlockCharacterSpacingOffset(std::size_t index, float offset) + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + m_blocks[index].characterSpacingOffset = offset; + + InvalidateGlyphs(); + } + + inline void RichTextDrawer::SetBlockColor(std::size_t index, const Color& color) + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + m_blocks[index].color = color; + + InvalidateGlyphs(); + } + + inline void RichTextDrawer::SetBlockFont(std::size_t index, FontRef font) + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + std::size_t fontIndex = HandleFontAddition(font); + std::size_t oldFontIndex = m_blocks[index].fontIndex; + + if (oldFontIndex != fontIndex) + { + ReleaseFont(oldFontIndex); + + m_fonts[fontIndex].useCount++; + m_blocks[index].fontIndex = fontIndex; + } + + InvalidateGlyphs(); + } + + inline void RichTextDrawer::SetBlockLineSpacingOffset(std::size_t index, float offset) + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + m_blocks[index].lineSpacingOffset = offset; + + InvalidateGlyphs(); + } + + inline void RichTextDrawer::SetBlockOutlineColor(std::size_t index, const Color& color) + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + m_blocks[index].outlineColor = color; + + InvalidateGlyphs(); + } + + inline void RichTextDrawer::SetBlockOutlineThickness(std::size_t index, float thickness) + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + m_blocks[index].outlineThickness = thickness; + + InvalidateGlyphs(); + } + + inline void RichTextDrawer::SetBlockStyle(std::size_t index, TextStyleFlags style) + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + m_blocks[index].style = style; + + InvalidateGlyphs(); + } + + inline void RichTextDrawer::SetBlockText(std::size_t index, String str) + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + + std::size_t previousLength = m_blocks[index].text.GetLength(); + + m_blocks[index].text = std::move(str); + + std::size_t newLength = m_blocks[index].text.GetLength(); + if (newLength != previousLength) + { + std::size_t delta = newLength - previousLength; //< Underflow allowed + for (std::size_t i = index + 1; i < m_blocks.size(); ++i) + m_blocks[i].glyphIndex += delta; + } + + InvalidateGlyphs(); + } + + inline void RichTextDrawer::SetDefaultCharacterSize(unsigned int characterSize) + { + m_defaultCharacterSize = characterSize; + } + + inline void RichTextDrawer::SetDefaultCharacterSpacingOffset(float offset) + { + m_defaultCharacterSpacingOffset = offset; + } + + inline void RichTextDrawer::SetDefaultColor(const Color& color) + { + m_defaultColor = color; + } + + inline void RichTextDrawer::SetDefaultFont(const FontRef& font) + { + m_defaultFont = font; + } + + inline void RichTextDrawer::SetDefaultLineSpacingOffset(float offset) + { + m_defaultLineSpacingOffset = offset; + } + + inline void RichTextDrawer::SetDefaultOutlineColor(const Color& color) + { + m_defaultOutlineColor = color; + } + + inline void RichTextDrawer::SetDefaultOutlineThickness(float thickness) + { + m_defaultOutlineThickness = thickness; + } + + inline void RichTextDrawer::SetDefaultStyle(TextStyleFlags style) + { + m_defaultStyle = style; + } + + inline void RichTextDrawer::InvalidateGlyphs() + { + m_glyphUpdated = false; + } + + /*! + * \class Nz::RichTextDrawer::BlockRef + * \brief Helper class representing a block inside a RichTextDrawer, allowing easier access. + * + * \warning This class is meant for temporary use, moving or destroying the RichTextDrawer or one of its blocks invalidates all BlockRef + */ + + inline RichTextDrawer::BlockRef::BlockRef(RichTextDrawer& drawer, std::size_t index) : + m_blockIndex(index), + m_drawer(drawer) + { + } + + /*! + * Returns the character spacing offset used for the characters of the referenced block + * \return The referenced block character size + * + * \see GetColor, GetFont, GetStyle, GetText, SetCharacterSize + */ + inline float RichTextDrawer::BlockRef::GetCharacterSpacingOffset() const + { + return m_drawer.GetBlockCharacterSpacingOffset(m_blockIndex); + } + + /*! + * Returns the character size used for the characters of the referenced block + * \return The referenced block character size + * + * \see GetColor, GetFont, GetStyle, GetText, SetCharacterSize + */ + inline unsigned int RichTextDrawer::BlockRef::GetCharacterSize() const + { + return m_drawer.GetBlockCharacterSize(m_blockIndex); + } + + /*! + * Returns the color used for the characters of the referenced block + * \return The referenced block color + * + * \see GetCharacterSize, GetFont, GetStyle, GetText, SetColor + */ + inline Color RichTextDrawer::BlockRef::GetColor() const + { + return m_drawer.GetBlockColor(m_blockIndex); + } + + /*! + * Returns the font used for the characters of the referenced block + * \return A reference on the referenced block font + * + * \see GetCharacterSize, GetColor, GetStyle, GetText, SetFont + */ + inline const FontRef& RichTextDrawer::BlockRef::GetFont() const + { + return m_drawer.GetBlockFont(m_blockIndex); + } + + /*! + * Returns the line spacing offset used for the characters of the referenced block + * \return The referenced block character size + * + * \see GetColor, GetFont, GetStyle, GetText, SetCharacterSize + */ + inline float RichTextDrawer::BlockRef::GetLineSpacingOffset() const + { + return m_drawer.GetBlockLineSpacingOffset(m_blockIndex); + } + + /*! + * Returns the outline color used for the characters of the referenced block + * \return The referenced block outline color + * + * \see GetCharacterSize, GetColor, GetStyle, GetText, SetFont + */ + inline Color RichTextDrawer::BlockRef::GetOutlineColor() const + { + return m_drawer.GetBlockOutlineColor(m_blockIndex); + } + + /*! + * Returns the outline thickness used for the characters of the referenced block + * \return The referenced block outline thickness + * + * \see GetCharacterSize, GetColor, GetStyle, GetText, SetFont + */ + inline float RichTextDrawer::BlockRef::GetOutlineThickness() const + { + return m_drawer.GetBlockOutlineThickness(m_blockIndex); + } + + /*! + * Returns the style flags used for the characters of the referenced block + * \return The referenced block style flags (see TextStyleFlags) + * + * \see GetCharacterSize, GetColor, GetFont, GetText, SetStyle + */ + inline TextStyleFlags RichTextDrawer::BlockRef::GetStyle() const + { + return m_drawer.GetBlockStyle(m_blockIndex); + } + + /*! + * Returns the first glyph index at which starts the referenced block + * \return The first glyph index concerned by this block + * + * \see GetText + */ + inline std::size_t RichTextDrawer::BlockRef::GetFirstGlyphIndex() const + { + return m_drawer.GetBlockFirstGlyphIndex(m_blockIndex); + } + + /*! + * Returns the text of the referenced block + * \return The referenced block text + * + * \see GetCharacterSize, GetColor, GetFont, GetStyle, SetText + */ + inline const String& RichTextDrawer::BlockRef::GetText() const + { + return m_drawer.GetBlockText(m_blockIndex); + } + + /*! + * Changes the character spacing offset of the referenced block characters + * \remark This invalidates the drawer and will force a (complete or partial, depending on the block index) glyph regeneration to occur. + * + * \see GetCharacterSpacingOffset, SetColor, SetFont, SetStyle, SetText + */ + inline void RichTextDrawer::BlockRef::SetCharacterSpacingOffset(float offset) + { + m_drawer.SetBlockCharacterSpacingOffset(m_blockIndex, offset); + } + + /*! + * Changes the character size of the referenced block characters + * \remark This invalidates the drawer and will force a (complete or partial, depending on the block index) glyph regeneration to occur. + * + * \see GetCharacterSize, SetColor, SetFont, SetStyle, SetText + */ + inline void RichTextDrawer::BlockRef::SetCharacterSize(unsigned int size) + { + m_drawer.SetBlockCharacterSize(m_blockIndex, size); + } + + /*! + * Changes the color of the referenced block characters + * \remark This is the only property that can be changed without forcing a glyph regeneration + * + * \see GetColor, SetCharacterSize, SetFont, SetStyle, SetText + */ + inline void RichTextDrawer::BlockRef::SetColor(Color color) + { + m_drawer.SetBlockColor(m_blockIndex, color); + } + + /*! + * Changes the font of the referenced block characters + * \remark This invalidates the drawer and will force a (complete or partial, depending on the block index) glyph regeneration to occur. + * + * \see GetCharacterSize, SetCharacterSize, SetColor, SetStyle, SetText + */ + inline void RichTextDrawer::BlockRef::SetFont(FontRef font) + { + m_drawer.SetBlockFont(m_blockIndex, std::move(font)); + } + + /*! + * Changes the line spacing offset of the referenced block characters + * \remark This invalidates the drawer and will force a (complete or partial, depending on the block index) glyph regeneration to occur. + * + * \see GetLineSpacingOffset, SetColor, SetFont, SetStyle, SetText + */ + inline void RichTextDrawer::BlockRef::SetLineSpacingOffset(float offset) + { + m_drawer.SetBlockLineSpacingOffset(m_blockIndex, offset); + } + + /*! + * Changes the outline color of the referenced block characters + * \remark This invalidates the drawer and will force a (complete or partial, depending on the block index) glyph regeneration to occur. + * + * \see GetCharacterSize, SetCharacterSize, SetColor, SetStyle, SetText + */ + inline void RichTextDrawer::BlockRef::SetOutlineColor(Color color) + { + m_drawer.SetBlockOutlineColor(m_blockIndex, std::move(color)); + } + + /*! + * Changes the outline thickness of the referenced block characters + * \remark This invalidates the drawer and will force a (complete or partial, depending on the block index) glyph regeneration to occur. + * + * \see GetCharacterSize, SetCharacterSize, SetColor, SetStyle, SetText + */ + inline void RichTextDrawer::BlockRef::SetOutlineThickness(float thickness) + { + m_drawer.SetBlockOutlineThickness(m_blockIndex, thickness); + } + + /*! + * Changes the style flags of the referenced block characters + * \remark This invalidates the drawer and will force a (complete or partial, depending on the block index) glyph regeneration to occur. + * + * \see GetStyle, SetCharacterSize, SetColor, SetFont, SetText + */ + inline void RichTextDrawer::BlockRef::SetStyle(TextStyleFlags style) + { + m_drawer.SetBlockStyle(m_blockIndex, style); + } + + /*! + * Changes the text of the referenced block + * \remark This invalidates the drawer and will force a (complete or partial, depending on the block index) glyph regeneration to occur. + * + * \see GetText, SetCharacterSize, SetColor, SetFont, SetStyle + */ + inline void RichTextDrawer::BlockRef::SetText(const String& text) + { + m_drawer.SetBlockText(m_blockIndex, text); + } +} + +#include diff --git a/include/Nazara/Utility/SimpleTextDrawer.hpp b/include/Nazara/Utility/SimpleTextDrawer.hpp index d3c3bd9cc..3ee3b1b25 100644 --- a/include/Nazara/Utility/SimpleTextDrawer.hpp +++ b/include/Nazara/Utility/SimpleTextDrawer.hpp @@ -19,70 +19,108 @@ namespace Nz class NAZARA_UTILITY_API SimpleTextDrawer : public AbstractTextDrawer { public: - SimpleTextDrawer(); - SimpleTextDrawer(const SimpleTextDrawer& drawer); - SimpleTextDrawer(SimpleTextDrawer&& drawer); - virtual ~SimpleTextDrawer(); + inline SimpleTextDrawer(); + inline SimpleTextDrawer(const SimpleTextDrawer& drawer); + inline SimpleTextDrawer(SimpleTextDrawer&& drawer); + ~SimpleTextDrawer() = default; - void AppendText(const String& str); + inline void AppendText(const String& str); - void Clear(); + void Clear() override; - const Recti& GetBounds() const override; - unsigned int GetCharacterSize() const; - const Color& GetColor() const; - Font* GetFont() const; + const Rectf& GetBounds() const override; + inline float GetCharacterSpacingOffset() const; + inline unsigned int GetCharacterSize() const; + inline const Color& GetColor() const; + inline Font* GetFont() const; Font* GetFont(std::size_t index) const override; std::size_t GetFontCount() const override; const Glyph& GetGlyph(std::size_t index) const override; std::size_t GetGlyphCount() const override; const Line& GetLine(std::size_t index) const override; std::size_t GetLineCount() const override; - UInt32 GetStyle() const; - const String& GetText() const; + inline float GetLineHeight() const; + inline float GetLineSpacingOffset() const; + float GetMaxLineWidth() const override; + inline const Color& GetOutlineColor() const; + inline float GetOutlineThickness() const; + inline TextStyleFlags GetStyle() const; + inline const String& GetText() const; - void SetCharacterSize(unsigned int characterSize); - void SetColor(const Color& color); - void SetFont(Font* font); - void SetStyle(UInt32 style); - void SetText(const String& str); + inline void SetCharacterSpacingOffset(float offset); + inline void SetCharacterSize(unsigned int characterSize); + inline void SetColor(const Color& color); + inline void SetFont(Font* font); + inline void SetLineSpacingOffset(float offset); + inline void SetMaxLineWidth(float lineWidth) override; + inline void SetOutlineColor(const Color& color); + inline void SetOutlineThickness(float thickness); + inline void SetStyle(TextStyleFlags style); + inline void SetText(const String& str); - SimpleTextDrawer& operator=(const SimpleTextDrawer& drawer); - SimpleTextDrawer& operator=(SimpleTextDrawer&& drawer); + inline SimpleTextDrawer& operator=(const SimpleTextDrawer& drawer); + inline SimpleTextDrawer& operator=(SimpleTextDrawer&& drawer); - static SimpleTextDrawer Draw(const String& str, unsigned int characterSize, UInt32 style = TextStyle_Regular, const Color& color = Color::White); - static SimpleTextDrawer Draw(Font* font, const String& str, unsigned int characterSize, UInt32 style = TextStyle_Regular, const Color& color = Color::White); + static inline SimpleTextDrawer Draw(const String& str, unsigned int characterSize, TextStyleFlags style = TextStyle_Regular, const Color& color = Color::White); + static inline SimpleTextDrawer Draw(const String& str, unsigned int characterSize, TextStyleFlags style, const Color& color, float outlineThickness, const Color& outlineColor); + static inline SimpleTextDrawer Draw(Font* font, const String& str, unsigned int characterSize, TextStyleFlags style = TextStyle_Regular, const Color& color = Color::White); + static inline SimpleTextDrawer Draw(Font* font, const String& str, unsigned int characterSize, TextStyleFlags style, const Color& color, float outlineThickness, const Color& outlineColor); private: + inline void AppendNewLine() const; + void AppendNewLine(std::size_t glyphIndex, float glyphPosition) const; + void ClearGlyphs() const; - void ConnectFontSlots(); - void DisconnectFontSlots(); + + inline void ConnectFontSlots(); + inline void DisconnectFontSlots(); + + bool GenerateGlyph(Glyph& glyph, char32_t character, float outlineThickness, bool lineWrap, Nz::Color color, int renderOrder, int* advance) const; void GenerateGlyphs(const String& text) const; + + inline float GetLineHeight(const Font::SizeInfo& sizeInfo) const; + + inline void InvalidateColor(); + inline void InvalidateGlyphs(); + void OnFontAtlasLayerChanged(const Font* font, AbstractImage* oldLayer, AbstractImage* newLayer); void OnFontInvalidated(const Font* font); void OnFontRelease(const Font* object); - void UpdateGlyphColor() const; - void UpdateGlyphs() const; + + inline bool ShouldLineWrap(float size) const; + + inline void UpdateGlyphColor() const; + inline void UpdateGlyphs() const; + + static constexpr std::size_t InvalidGlyph = std::numeric_limits::max(); NazaraSlot(Font, OnFontAtlasChanged, m_atlasChangedSlot); NazaraSlot(Font, OnFontAtlasLayerChanged, m_atlasLayerChangedSlot); NazaraSlot(Font, OnFontGlyphCacheCleared, m_glyphCacheClearedSlot); NazaraSlot(Font, OnFontRelease, m_fontReleaseSlot); + mutable std::size_t m_lastSeparatorGlyph; mutable std::vector m_glyphs; mutable std::vector m_lines; Color m_color; + Color m_outlineColor; FontRef m_font; - mutable Rectf m_workingBounds; - mutable Recti m_bounds; + mutable Rectf m_bounds; String m_text; + TextStyleFlags m_style; mutable UInt32 m_previousCharacter; - UInt32 m_style; - mutable Vector2ui m_drawPos; + mutable Vector2f m_drawPos; mutable bool m_colorUpdated; mutable bool m_glyphUpdated; + mutable float m_lastSeparatorPosition; + float m_characterSpacingOffset; + float m_lineSpacingOffset; + float m_maxLineWidth; + float m_outlineThickness; unsigned int m_characterSize; }; } +#include + #endif // NAZARA_SIMPLETEXTDRAWER_HPP diff --git a/include/Nazara/Utility/SimpleTextDrawer.inl b/include/Nazara/Utility/SimpleTextDrawer.inl new file mode 100644 index 000000000..a203bfa8e --- /dev/null +++ b/include/Nazara/Utility/SimpleTextDrawer.inl @@ -0,0 +1,385 @@ +// 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 SimpleTextDrawer::SimpleTextDrawer() : + m_color(Color::White), + m_outlineColor(Color::Black), + m_style(TextStyle_Regular), + m_colorUpdated(true), + m_glyphUpdated(true), + m_characterSpacingOffset(0.f), + m_lineSpacingOffset(0.f), + m_maxLineWidth(std::numeric_limits::infinity()), + m_outlineThickness(0.f), + m_characterSize(24) + { + SetFont(Font::GetDefault()); + } + + inline SimpleTextDrawer::SimpleTextDrawer(const SimpleTextDrawer& drawer) : + m_color(drawer.m_color), + m_text(drawer.m_text), + m_style(drawer.m_style), + m_colorUpdated(false), + m_glyphUpdated(false), + m_outlineColor(drawer.m_outlineColor), + m_characterSpacingOffset(drawer.m_characterSpacingOffset), + m_lineSpacingOffset(drawer.m_lineSpacingOffset), + m_maxLineWidth(drawer.m_maxLineWidth), + m_outlineThickness(drawer.m_outlineThickness), + m_characterSize(drawer.m_characterSize) + { + SetFont(drawer.m_font); + } + + inline SimpleTextDrawer::SimpleTextDrawer(SimpleTextDrawer&& drawer) + { + operator=(std::move(drawer)); + } + + inline void SimpleTextDrawer::AppendText(const String& str) + { + m_text.Append(str); + if (m_glyphUpdated) + GenerateGlyphs(str); + } + + inline float SimpleTextDrawer::GetCharacterSpacingOffset() const + { + return m_characterSpacingOffset; + } + + inline unsigned int SimpleTextDrawer::GetCharacterSize() const + { + return m_characterSize; + } + + inline const Color& SimpleTextDrawer::GetColor() const + { + return m_color; + } + + inline Font* SimpleTextDrawer::GetFont() const + { + return m_font; + } + + inline float SimpleTextDrawer::GetLineHeight() const + { + NazaraAssert(m_font, "SimpleTextDrawer has no font"); + return GetLineHeight(m_font->GetSizeInfo(m_characterSize)); + } + + inline float SimpleTextDrawer::GetLineSpacingOffset() const + { + return m_lineSpacingOffset; + } + + inline const Color& SimpleTextDrawer::GetOutlineColor() const + { + return m_outlineColor; + } + + inline float SimpleTextDrawer::GetOutlineThickness() const + { + return m_outlineThickness; + } + + inline TextStyleFlags SimpleTextDrawer::GetStyle() const + { + return m_style; + } + + inline const String& SimpleTextDrawer::GetText() const + { + return m_text; + } + + inline void SimpleTextDrawer::SetCharacterSpacingOffset(float offset) + { + if (m_characterSpacingOffset != offset) + { + m_characterSpacingOffset = offset; + + InvalidateGlyphs(); + } + } + + inline void SimpleTextDrawer::SetCharacterSize(unsigned int characterSize) + { + if (m_characterSize != characterSize) + { + m_characterSize = characterSize; + + InvalidateGlyphs(); + } + } + + inline void SimpleTextDrawer::SetColor(const Color& color) + { + if (m_color != color) + { + m_color = color; + + InvalidateColor(); + } + } + + inline void SimpleTextDrawer::SetFont(Font* font) + { + if (m_font != font) + { + m_font = font; + + if (m_font) + ConnectFontSlots(); + else + DisconnectFontSlots(); + + InvalidateGlyphs(); + } + } + + inline void SimpleTextDrawer::SetLineSpacingOffset(float offset) + { + if (m_lineSpacingOffset != offset) + { + m_lineSpacingOffset = offset; + + InvalidateGlyphs(); + } + } + + inline void SimpleTextDrawer::SetMaxLineWidth(float lineWidth) + { + if (m_maxLineWidth != lineWidth) + { + NazaraAssert(lineWidth > 0.f, "Max line width must be positive"); + + m_maxLineWidth = lineWidth; + + InvalidateGlyphs(); + } + } + + inline void SimpleTextDrawer::SetOutlineColor(const Color& color) + { + if (m_outlineColor != color) + { + m_outlineColor = color; + + InvalidateColor(); + } + } + + inline void SimpleTextDrawer::SetOutlineThickness(float thickness) + { + if (m_outlineThickness != thickness) + { + NazaraAssert(thickness >= 0.f, "Thickness must be zero or positive"); + + m_outlineThickness = thickness; + + InvalidateGlyphs(); + } + } + + inline void SimpleTextDrawer::SetStyle(TextStyleFlags style) + { + if (m_style != style) + { + m_style = style; + + InvalidateGlyphs(); + } + } + + inline void SimpleTextDrawer::SetText(const String& str) + { + if (m_text != str) + { + m_text = str; + + InvalidateGlyphs(); + } + } + + inline SimpleTextDrawer& SimpleTextDrawer::operator=(const SimpleTextDrawer& drawer) + { + m_characterSize = drawer.m_characterSize; + m_characterSpacingOffset = drawer.m_characterSpacingOffset; + m_color = drawer.m_color; + m_lineSpacingOffset = drawer.m_lineSpacingOffset; + m_maxLineWidth = drawer.m_maxLineWidth; + m_outlineColor = drawer.m_outlineColor; + m_outlineThickness = drawer.m_outlineThickness; + m_style = drawer.m_style; + m_text = drawer.m_text; + + SetFont(drawer.m_font); + InvalidateGlyphs(); + + return *this; + } + + inline SimpleTextDrawer& SimpleTextDrawer::operator=(SimpleTextDrawer&& drawer) + { + DisconnectFontSlots(); + + m_bounds = std::move(drawer.m_bounds); + m_colorUpdated = std::move(drawer.m_colorUpdated); + m_characterSize = std::move(drawer.m_characterSize); + m_characterSpacingOffset = drawer.m_characterSpacingOffset; + m_color = std::move(drawer.m_color); + m_glyphs = std::move(drawer.m_glyphs); + m_glyphUpdated = std::move(drawer.m_glyphUpdated); + m_font = std::move(drawer.m_font); + m_lineSpacingOffset = drawer.m_lineSpacingOffset; + m_maxLineWidth = drawer.m_maxLineWidth; + m_outlineColor = std::move(drawer.m_outlineColor); + m_outlineThickness = std::move(drawer.m_outlineThickness); + m_style = std::move(drawer.m_style); + m_text = std::move(drawer.m_text); + + // Update slot pointers (TODO: Improve the way of doing this) + if (m_font) + { + drawer.DisconnectFontSlots(); + ConnectFontSlots(); + } + + return *this; + } + + inline SimpleTextDrawer SimpleTextDrawer::Draw(const String& str, unsigned int characterSize, TextStyleFlags style, const Color& color) + { + SimpleTextDrawer drawer; + drawer.SetCharacterSize(characterSize); + drawer.SetColor(color); + drawer.SetStyle(style); + drawer.SetText(str); + + return drawer; + } + + inline SimpleTextDrawer SimpleTextDrawer::Draw(const String& str, unsigned int characterSize, TextStyleFlags style, const Color& color, float outlineThickness, const Color& outlineColor) + { + SimpleTextDrawer drawer; + drawer.SetCharacterSize(characterSize); + drawer.SetColor(color); + drawer.SetOutlineColor(outlineColor); + drawer.SetOutlineThickness(outlineThickness); + drawer.SetStyle(style); + drawer.SetText(str); + + return drawer; + } + + inline SimpleTextDrawer SimpleTextDrawer::Draw(Font* font, const String& str, unsigned int characterSize, TextStyleFlags style, const Color& color) + { + SimpleTextDrawer drawer; + drawer.SetCharacterSize(characterSize); + drawer.SetColor(color); + drawer.SetFont(font); + drawer.SetStyle(style); + drawer.SetText(str); + + return drawer; + } + + inline SimpleTextDrawer SimpleTextDrawer::Draw(Font* font, const String& str, unsigned int characterSize, TextStyleFlags style, const Color& color, float outlineThickness, const Color& outlineColor) + { + SimpleTextDrawer drawer; + drawer.SetCharacterSize(characterSize); + drawer.SetColor(color); + drawer.SetFont(font); + drawer.SetOutlineColor(outlineColor); + drawer.SetOutlineThickness(outlineThickness); + drawer.SetStyle(style); + drawer.SetText(str); + + return drawer; + } + + inline void SimpleTextDrawer::AppendNewLine() const + { + AppendNewLine(InvalidGlyph, 0); + } + + inline void SimpleTextDrawer::ConnectFontSlots() + { + m_atlasChangedSlot.Connect(m_font->OnFontAtlasChanged, this, &SimpleTextDrawer::OnFontInvalidated); + m_atlasLayerChangedSlot.Connect(m_font->OnFontAtlasLayerChanged, this, &SimpleTextDrawer::OnFontAtlasLayerChanged); + m_fontReleaseSlot.Connect(m_font->OnFontRelease, this, &SimpleTextDrawer::OnFontRelease); + m_glyphCacheClearedSlot.Connect(m_font->OnFontGlyphCacheCleared, this, &SimpleTextDrawer::OnFontInvalidated); + } + + inline void SimpleTextDrawer::DisconnectFontSlots() + { + m_atlasChangedSlot.Disconnect(); + m_atlasLayerChangedSlot.Disconnect(); + m_fontReleaseSlot.Disconnect(); + m_glyphCacheClearedSlot.Disconnect(); + } + + inline float SimpleTextDrawer::GetLineHeight(const Font::SizeInfo& sizeInfo) const + { + return float(sizeInfo.lineHeight) + m_lineSpacingOffset; + } + + inline void SimpleTextDrawer::InvalidateColor() + { + m_colorUpdated = false; + } + + inline void SimpleTextDrawer::InvalidateGlyphs() + { + m_glyphUpdated = false; + } + + inline bool SimpleTextDrawer::ShouldLineWrap(float size) const + { + if (m_lines.back().glyphIndex > m_glyphs.size()) + return false; + + return m_lines.back().bounds.GetMaximum().x + size > m_maxLineWidth; + } + + inline void SimpleTextDrawer::UpdateGlyphColor() const + { + if (m_outlineThickness > 0.f) + { + for (std::size_t glyphIndex = 0; glyphIndex < m_glyphs.size(); ++glyphIndex) + { + Glyph& glyph = m_glyphs[glyphIndex]; + if (glyphIndex % 2 == 0) + glyph.color = m_outlineColor; + else + glyph.color = m_color; + } + } + else + { + for (Glyph& glyph : m_glyphs) + glyph.color = m_color; + } + + m_colorUpdated = true; + } + + inline void SimpleTextDrawer::UpdateGlyphs() const + { + NazaraAssert(m_font && m_font->IsValid(), "Invalid font"); + + ClearGlyphs(); + GenerateGlyphs(m_text); + } +} + +#include diff --git a/plugins/Assimp/Plugin.cpp b/plugins/Assimp/Plugin.cpp index 4320ae098..3f1e5200a 100644 --- a/plugins/Assimp/Plugin.cpp +++ b/plugins/Assimp/Plugin.cpp @@ -25,11 +25,14 @@ SOFTWARE. #include #include #include +#include #include #include #include #include #include +#include +#include #include #include #include @@ -59,6 +62,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); @@ -75,7 +80,7 @@ bool IsSupported(const String& extension) return (aiIsExtensionSupported(dotExt.GetConstBuffer()) == AI_TRUE); } -Ternary Check(Stream& /*stream*/, const MeshParams& parameters) +Ternary CheckAnimation(Stream& /*stream*/, const AnimationParams& parameters) { bool skip; if (parameters.custom.GetBooleanParameter("SkipAssimpLoader", &skip) && skip) @@ -84,7 +89,102 @@ Ternary Check(Stream& /*stream*/, const MeshParams& parameters) return Ternary_Unknown; } -bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) +AnimationRef LoadAnimation(Stream& stream, const AnimationParams& parameters) +{ + Nz::String streamPath = stream.GetPath(); + + FileIOUserdata userdata; + userdata.originalFilePath = (!streamPath.IsEmpty()) ? streamPath.GetConstBuffer() : StreamPath; + userdata.originalStream = &stream; + + aiFileIO fileIO; + fileIO.CloseProc = StreamCloser; + fileIO.OpenProc = StreamOpener; + fileIO.UserData = reinterpret_cast(&userdata); + + unsigned int postProcess = aiProcess_CalcTangentSpace | aiProcess_Debone + | aiProcess_FindInvalidData | aiProcess_FixInfacingNormals + | aiProcess_FlipWindingOrder | aiProcess_GenSmoothNormals + | aiProcess_GenUVCoords | aiProcess_JoinIdenticalVertices + | aiProcess_LimitBoneWeights | aiProcess_MakeLeftHanded + | aiProcess_OptimizeGraph | aiProcess_OptimizeMeshes + | aiProcess_RemoveComponent | aiProcess_RemoveRedundantMaterials + | aiProcess_SortByPType | aiProcess_SplitLargeMeshes + | aiProcess_TransformUVCoords | aiProcess_Triangulate; + + aiPropertyStore* properties = aiCreatePropertyStore(); + aiSetImportPropertyInteger(properties, AI_CONFIG_PP_LBW_MAX_WEIGHTS, 4); + aiSetImportPropertyInteger(properties, AI_CONFIG_PP_RVC_FLAGS, ~aiComponent_ANIMATIONS); + + const aiScene* scene = aiImportFileExWithProperties(userdata.originalFilePath, 0, &fileIO, properties); + aiReleasePropertyStore(properties); + + if (!scene) + { + NazaraError("Assimp failed to import file: " + Nz::String(aiGetErrorString())); + return nullptr; + } + + if (!scene->HasAnimations()) + { + NazaraError("File has no animation"); + return nullptr; + } + + aiAnimation* animation = scene->mAnimations[0]; + + unsigned int maxFrameCount = 0; + for (unsigned int i = 0; i < animation->mNumChannels; ++i) + { + aiNodeAnim* nodeAnim = animation->mChannels[i]; + + maxFrameCount = std::max({ maxFrameCount, nodeAnim->mNumPositionKeys, nodeAnim->mNumRotationKeys, nodeAnim->mNumScalingKeys }); + } + + AnimationRef anim = Animation::New(); + + anim->CreateSkeletal(maxFrameCount, animation->mNumChannels); + + Sequence sequence; + sequence.firstFrame = 0; + sequence.frameCount = maxFrameCount; + sequence.frameRate = animation->mTicksPerSecond; + + anim->AddSequence(sequence); + + SequenceJoint* sequenceJoints = anim->GetSequenceJoints(); + + Quaternionf rotationQuat = Quaternionf::Identity(); + + for (unsigned int i = 0; i < animation->mNumChannels; ++i) + { + aiNodeAnim* nodeAnim = animation->mChannels[i]; + for (unsigned int j = 0; j < nodeAnim->mNumPositionKeys; ++j) + { + SequenceJoint& sequenceJoint = sequenceJoints[i*animation->mNumChannels + j]; + + aiQuaternion rotation = nodeAnim->mRotationKeys[j].mValue; + aiVector3D position = nodeAnim->mPositionKeys[j].mValue; + + sequenceJoint.position = Vector3f(position.x, position.y, position.z); + sequenceJoint.rotation = Quaternionf(rotation.w, rotation.x, rotation.y, rotation.z); + sequenceJoint.scale.Set(1.f); + } + } + + return anim; +} + +Ternary CheckMesh(Stream& /*stream*/, const MeshParams& parameters) +{ + bool skip; + if (parameters.custom.GetBooleanParameter("SkipAssimpLoader", &skip) && skip) + return Ternary_False; + + return Ternary_Unknown; +} + +MeshRef LoadMesh(Stream& stream, const MeshParams& parameters) { Nz::String streamPath = stream.GetPath(); @@ -147,7 +247,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; @@ -155,18 +255,19 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) bool animatedMesh = false; if (parameters.animated) { - for (unsigned int i = 0; i < scene->mNumMeshes; ++i) + for (unsigned int meshIdx = 0; meshIdx < scene->mNumMeshes; ++meshIdx) { - aiMesh* currentMesh = scene->mMeshes[i]; + aiMesh* currentMesh = scene->mMeshes[meshIdx]; if (currentMesh->HasBones()) // Inline functions can be safely called { animatedMesh = true; - for (unsigned int j = 0; j < currentMesh->mNumBones; ++j) - joints.insert(currentMesh->mBones[j]->mName.C_Str()); + for (unsigned int boneIdx = 0; boneIdx < currentMesh->mNumBones; ++boneIdx) + joints.insert(currentMesh->mBones[boneIdx]->mName.C_Str()); } } } + MeshRef mesh = Mesh::New(); if (animatedMesh) { mesh->CreateSkeletal(UInt32(joints.size())); @@ -180,7 +281,162 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) ProcessJoints(scene->mRootNode, skeleton, joints); - return false; + // aiMaterial index in scene => Material index and data in Mesh + std::unordered_map> materials; + + for (unsigned int meshIdx = 0; meshIdx < scene->mNumMeshes; ++meshIdx) + { + aiMesh* iMesh = scene->mMeshes[meshIdx]; + if (iMesh->HasBones()) + { + // For now, process only skeletal meshes + } + + unsigned int indexCount = iMesh->mNumFaces * 3; + unsigned int vertexCount = iMesh->mNumVertices; + + // Index buffer + bool largeIndices = (vertexCount > std::numeric_limits::max()); + + IndexBufferRef indexBuffer = IndexBuffer::New(largeIndices, indexCount, parameters.storage, parameters.indexBufferFlags); + + IndexMapper indexMapper(indexBuffer, BufferAccess_DiscardAndWrite); + IndexIterator index = indexMapper.begin(); + + for (unsigned int faceIdx = 0; faceIdx < iMesh->mNumFaces; ++faceIdx) + { + aiFace& face = iMesh->mFaces[faceIdx]; + if (face.mNumIndices != 3) + NazaraWarning("Assimp plugin: This face is not a triangle!"); + + *index++ = face.mIndices[0]; + *index++ = face.mIndices[1]; + *index++ = face.mIndices[2]; + } + indexMapper.Unmap(); + + // Make sure the normal/tangent matrix won't rescale our vectors + Nz::Matrix4f normalTangentMatrix = parameters.matrix; + if (normalTangentMatrix.HasScale()) + normalTangentMatrix.ApplyScale(1.f / normalTangentMatrix.GetScale()); + + VertexBufferRef vertexBuffer = VertexBuffer::New(VertexDeclaration::Get(VertexLayout_XYZ_Normal_UV_Tangent_Skinning), vertexCount, parameters.storage, parameters.vertexBufferFlags | BufferUsage_Dynamic); + BufferMapper vertexMapper(vertexBuffer, BufferAccess_ReadWrite); + SkeletalMeshVertex* vertices = static_cast(vertexMapper.GetPointer()); + + for (std::size_t vertexIdx = 0; vertexIdx < vertexCount; ++vertexIdx) + { + aiVector3D normal = iMesh->mNormals[vertexIdx]; + aiVector3D position = iMesh->mVertices[vertexIdx]; + aiVector3D tangent = iMesh->mTangents[vertexIdx]; + aiVector3D uv = iMesh->mTextureCoords[0][vertexIdx]; + + vertices[vertexIdx].weightCount = 0; + vertices[vertexIdx].normal = normalTangentMatrix.Transform({ normal.x, normal.y, normal.z }, 0.f); + vertices[vertexIdx].position = parameters.matrix * Vector3f(position.x, position.y, position.z); + vertices[vertexIdx].tangent = normalTangentMatrix.Transform({ tangent.x, tangent.y, tangent.z }, 0.f); + vertices[vertexIdx].uv = parameters.texCoordOffset + Vector2f(uv.x, uv.y) * parameters.texCoordScale; + } + + for (unsigned int boneIdx = 0; boneIdx < iMesh->mNumBones; ++boneIdx) + { + aiBone* bone = iMesh->mBones[boneIdx]; + for (unsigned int weightIdx = 0; weightIdx < bone->mNumWeights; ++weightIdx) + { + aiVertexWeight& vertexWeight = bone->mWeights[weightIdx]; + SkeletalMeshVertex& vertex = vertices[vertexWeight.mVertexId]; + + std::size_t weightIndex = vertex.weightCount++; + vertex.jointIndexes[weightIndex] = boneIdx; + vertex.weights[weightIndex] = vertexWeight.mWeight; + } + } + + // Submesh + SkeletalMeshRef subMesh = SkeletalMesh::New(vertexBuffer, indexBuffer); + subMesh->SetMaterialIndex(iMesh->mMaterialIndex); + + auto matIt = materials.find(iMesh->mMaterialIndex); + if (matIt == materials.end()) + { + ParameterList matData; + aiMaterial* aiMat = scene->mMaterials[iMesh->mMaterialIndex]; + + auto ConvertColor = [&](const char* aiKey, unsigned int aiType, unsigned int aiIndex, const char* colorKey) + { + aiColor4D color; + if (aiGetMaterialColor(aiMat, aiKey, aiType, aiIndex, &color) == aiReturn_SUCCESS) + { + matData.SetParameter(colorKey, Color(static_cast(color.r * 255), static_cast(color.g * 255), static_cast(color.b * 255), static_cast(color.a * 255))); + } + }; + + auto ConvertTexture = [&](aiTextureType aiType, const char* textureKey, const char* wrapKey = nullptr) + { + aiString path; + aiTextureMapMode mapMode[3]; + if (aiGetMaterialTexture(aiMat, aiType, 0, &path, nullptr, nullptr, nullptr, nullptr, &mapMode[0], nullptr) == aiReturn_SUCCESS) + { + matData.SetParameter(textureKey, stream.GetDirectory() + String(path.data, path.length)); + + if (wrapKey) + { + SamplerWrap wrap = SamplerWrap_Default; + switch (mapMode[0]) + { + case aiTextureMapMode_Clamp: + case aiTextureMapMode_Decal: + wrap = SamplerWrap_Clamp; + break; + + case aiTextureMapMode_Mirror: + wrap = SamplerWrap_MirroredRepeat; + break; + + case aiTextureMapMode_Wrap: + wrap = SamplerWrap_Repeat; + break; + + default: + NazaraWarning("Assimp texture map mode 0x" + String::Number(mapMode[0], 16) + " not handled"); + break; + } + + matData.SetParameter(wrapKey, static_cast(wrap)); + } + } + }; + + ConvertColor(AI_MATKEY_COLOR_AMBIENT, MaterialData::AmbientColor); + ConvertColor(AI_MATKEY_COLOR_DIFFUSE, MaterialData::DiffuseColor); + ConvertColor(AI_MATKEY_COLOR_SPECULAR, MaterialData::SpecularColor); + + ConvertTexture(aiTextureType_DIFFUSE, MaterialData::DiffuseTexturePath, MaterialData::DiffuseWrap); + ConvertTexture(aiTextureType_EMISSIVE, MaterialData::EmissiveTexturePath); + ConvertTexture(aiTextureType_HEIGHT, MaterialData::HeightTexturePath); + ConvertTexture(aiTextureType_NORMALS, MaterialData::NormalTexturePath); + ConvertTexture(aiTextureType_OPACITY, MaterialData::AlphaTexturePath); + ConvertTexture(aiTextureType_SPECULAR, MaterialData::SpecularTexturePath, MaterialData::SpecularWrap); + + aiString name; + if (aiGetMaterialString(aiMat, AI_MATKEY_NAME, &name) == aiReturn_SUCCESS) + matData.SetParameter(MaterialData::Name, String(name.data, name.length)); + + int iValue; + if (aiGetMaterialInteger(aiMat, AI_MATKEY_TWOSIDED, &iValue) == aiReturn_SUCCESS) + matData.SetParameter(MaterialData::FaceCulling, !iValue); + + matIt = materials.insert(std::make_pair(iMesh->mMaterialIndex, std::make_pair(UInt32(materials.size()), std::move(matData)))).first; + } + + subMesh->SetMaterialIndex(matIt->first); + + mesh->AddSubMesh(subMesh); + } + + mesh->SetMaterialCount(std::max(UInt32(materials.size()), 1)); + for (const auto& pair : materials) + mesh->SetMaterialData(pair.second.first, pair.second.second); } else { @@ -189,9 +445,9 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) // aiMaterial index in scene => Material index and data in Mesh std::unordered_map> materials; - for (unsigned int i = 0; i < scene->mNumMeshes; ++i) + for (unsigned int meshIdx = 0; meshIdx < scene->mNumMeshes; ++meshIdx) { - aiMesh* iMesh = scene->mMeshes[i]; + aiMesh* iMesh = scene->mMeshes[meshIdx]; if (!iMesh->HasBones()) // Don't process skeletal meshs { unsigned int indexCount = iMesh->mNumFaces * 3; @@ -205,9 +461,9 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) IndexMapper indexMapper(indexBuffer, BufferAccess_DiscardAndWrite); IndexIterator index = indexMapper.begin(); - for (unsigned int j = 0; j < iMesh->mNumFaces; ++j) + for (unsigned int faceIdx = 0; faceIdx < iMesh->mNumFaces; ++faceIdx) { - aiFace& face = iMesh->mFaces[j]; + aiFace& face = iMesh->mFaces[faceIdx]; if (face.mNumIndices != 3) NazaraWarning("Assimp plugin: This face is not a triangle!"); @@ -229,17 +485,17 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) VertexMapper vertexMapper(vertexBuffer, BufferAccess_DiscardAndWrite); auto posPtr = vertexMapper.GetComponentPtr(VertexComponent_Position); - for (unsigned int j = 0; j < vertexCount; ++j) + for (unsigned int vertexIdx = 0; vertexIdx < vertexCount; ++vertexIdx) { - aiVector3D position = iMesh->mVertices[j]; + aiVector3D position = iMesh->mVertices[vertexIdx]; *posPtr++ = parameters.matrix * Vector3f(position.x, position.y, position.z); } if (auto normalPtr = vertexMapper.GetComponentPtr(VertexComponent_Normal)) { - for (unsigned int j = 0; j < vertexCount; ++j) + for (unsigned int vertexIdx = 0; vertexIdx < vertexCount; ++vertexIdx) { - aiVector3D normal = iMesh->mNormals[j]; + aiVector3D normal = iMesh->mNormals[vertexIdx]; *normalPtr++ = normalTangentMatrix.Transform({normal.x, normal.y, normal.z}, 0.f); } } @@ -249,9 +505,9 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) { if (iMesh->HasTangentsAndBitangents()) { - for (unsigned int j = 0; j < vertexCount; ++j) + for (unsigned int vertexIdx = 0; vertexIdx < vertexCount; ++vertexIdx) { - aiVector3D tangent = iMesh->mTangents[j]; + aiVector3D tangent = iMesh->mTangents[vertexIdx]; *tangentPtr++ = normalTangentMatrix.Transform({tangent.x, tangent.y, tangent.z}, 0.f); } } @@ -263,15 +519,15 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) { if (iMesh->HasTextureCoords(0)) { - for (unsigned int j = 0; j < vertexCount; ++j) + for (unsigned int vertexIdx = 0; vertexIdx < vertexCount; ++vertexIdx) { - aiVector3D uv = iMesh->mTextureCoords[0][j]; + aiVector3D uv = iMesh->mTextureCoords[0][vertexIdx]; *uvPtr++ = parameters.texCoordOffset + Vector2f(uv.x, uv.y) * parameters.texCoordScale; } } else { - for (unsigned int j = 0; j < vertexCount; ++j) + for (unsigned int vertexIdx = 0; vertexIdx < vertexCount; ++vertexIdx) *uvPtr++ = Vector2f::Zero(); } } @@ -375,19 +631,21 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) aiReleaseImport(scene); - return true; + return mesh; } extern "C" { NAZARA_EXPORT int PluginLoad() { - Nz::MeshLoader::RegisterLoader(IsSupported, Check, Load); + Nz::AnimationLoader::RegisterLoader(IsSupported, CheckAnimation, LoadAnimation); + Nz::MeshLoader::RegisterLoader(IsSupported, CheckMesh, LoadMesh); return 1; } NAZARA_EXPORT void PluginUnload() { - Nz::MeshLoader::UnregisterLoader(IsSupported, Check, Load); + Nz::AnimationLoader::RegisterLoader(IsSupported, CheckAnimation, LoadAnimation); + Nz::MeshLoader::UnregisterLoader(IsSupported, CheckMesh, LoadMesh); } } diff --git a/readme.md b/readme.md index b35253f90..2eaabc09e 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +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: [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.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 ef57f0448..f0b7bf6c4 100644 --- a/readme_fr.md +++ b/readme_fr.md @@ -1,6 +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: [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.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 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/Core/ByteStream.cpp b/src/Nazara/Core/ByteStream.cpp index a61cae520..6559e50fb 100644 --- a/src/Nazara/Core/ByteStream.cpp +++ b/src/Nazara/Core/ByteStream.cpp @@ -68,7 +68,7 @@ namespace Nz void ByteStream::SetStream(ByteArray* byteArray, OpenModeFlags openMode) { - std::unique_ptr stream(new MemoryStream(byteArray, openMode)); + std::unique_ptr stream = std::make_unique(byteArray, openMode); SetStream(stream.get()); // SetStream reset our smart pointer, set it after calling it @@ -86,7 +86,7 @@ namespace Nz void ByteStream::SetStream(void* ptr, Nz::UInt64 size) { - std::unique_ptr stream(new MemoryView(ptr, size)); + std::unique_ptr stream = std::make_unique(ptr, size); SetStream(stream.get()); // SetStream reset our smart pointer, set it after calling it @@ -104,7 +104,7 @@ namespace Nz void ByteStream::SetStream(const void* ptr, Nz::UInt64 size) { - std::unique_ptr stream(new MemoryView(ptr, size)); + std::unique_ptr stream = std::make_unique(ptr, size); SetStream(stream.get()); // SetStream reset our smart pointer, set it after calling it diff --git a/src/Nazara/Core/EmptyStream.cpp b/src/Nazara/Core/EmptyStream.cpp new file mode 100644 index 000000000..5cba8af35 --- /dev/null +++ b/src/Nazara/Core/EmptyStream.cpp @@ -0,0 +1,99 @@ +// Copyright (C) 2019 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 +#include +#include + +namespace Nz +{ + /*! + * \ingroup core + * \class Nz::EmptyStream + * \brief Core class that simulate an empty buffer (discarding all content) which can be used to measure size + */ + + /*! + * \brief Resets the stream size to zero + */ + void EmptyStream::Clear() + { + m_size = 0; + } + + /*! + * \brief Checks whether the stream reached the end of the stream + * \return Always false + */ + bool EmptyStream::EndOfStream() const + { + return false; + } + + /*! + * \brief Gets the position of the cursor (which is always zero) + * \return Always zero + */ + UInt64 EmptyStream::GetCursorPos() const + { + return 0; + } + + /*! + * \brief Gets the size of the raw memory (how many bytes would have been written on a regular stream) + * \return Size occupied until now + */ + UInt64 EmptyStream::GetSize() const + { + return m_size; + } + + /*! + * \brief Does nothing + * \return true + * + * \param offset Offset according to the beginning of the stream + */ + bool EmptyStream::SetCursorPos(UInt64 offset) + { + return true; + } + + /*! + * \brief Flushes the stream (does nothing) + */ + void EmptyStream::FlushStream() + { + // Nothing to flush + } + + /*! + * \brief Reads data + * \return Number of byte read (always zero) + * + * Reading from an empty stream does nothing and will always returns zero + * + * \param buffer Preallocated buffer to contain information read + * \param size Size of the read and thus of the buffer + */ + std::size_t EmptyStream::ReadBlock(void* buffer, std::size_t size) + { + return 0; + } + + /*! + * \brief Writes data + * \return size + * + * \param buffer Dummy parameter + * \param size How many bytes will be "written" + */ + std::size_t EmptyStream::WriteBlock(const void* /*buffer*/, std::size_t size) + { + m_size += size; + + return size; + } +} diff --git a/src/Nazara/Core/GuillotineBinPack.cpp b/src/Nazara/Core/GuillotineBinPack.cpp index 9ebae4bbb..ef8e2f953 100644 --- a/src/Nazara/Core/GuillotineBinPack.cpp +++ b/src/Nazara/Core/GuillotineBinPack.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -302,7 +303,8 @@ namespace Nz bool GuillotineBinPack::Insert(Rectui* rects, bool* flipped, bool* inserted, unsigned int count, bool merge, FreeRectChoiceHeuristic rectChoice, GuillotineSplitHeuristic splitMethod) { - std::vector remainingRects(count); // Position of the rectangle + Nz::StackVector remainingRects = NazaraStackVector(Rectui*, count); // Position of the rectangle + remainingRects.resize(count); for (unsigned int i = 0; i < count; ++i) remainingRects[i] = &rects[i]; 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; + } + } +} diff --git a/src/Nazara/Core/PoolByteStream.cpp b/src/Nazara/Core/PoolByteStream.cpp new file mode 100644 index 000000000..889fe32ca --- /dev/null +++ b/src/Nazara/Core/PoolByteStream.cpp @@ -0,0 +1,40 @@ +// 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 +#include + +namespace Nz +{ + /*! + * \ingroup core + * \class Nz::PoolByteStream + * \brief ByteStream allocated using a pool + */ + + void PoolByteStream::Reset() + { + if (m_buffer.GetCapacity() > 0) + { + m_pool.ReturnByteArray(std::move(m_buffer)); + m_buffer.Clear(false); + } + + SetStream(static_cast(nullptr)); + } + + void PoolByteStream::Reset(std::size_t capacity) + { + if (m_buffer.GetCapacity() < capacity) + m_buffer = m_pool.GetByteArray(capacity); + + SetStream(&m_buffer, Nz::OpenMode_ReadWrite); + } + + void PoolByteStream::OnEmptyStream() + { + Reset(0); + } +} 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/Core/String.cpp b/src/Nazara/Core/String.cpp index 9e4e2ae32..438565449 100644 --- a/src/Nazara/Core/String.cpp +++ b/src/Nazara/Core/String.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -976,7 +977,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 +1752,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 +1932,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) @@ -5121,6 +5122,7 @@ namespace Nz String String::Number(float number) { std::ostringstream oss; + oss.imbue(std::locale::classic()); oss.precision(NAZARA_CORE_DECIMAL_DIGITS); oss << number; @@ -5137,6 +5139,7 @@ namespace Nz String String::Number(double number) { std::ostringstream oss; + oss.imbue(std::locale::classic()); oss.precision(NAZARA_CORE_DECIMAL_DIGITS); oss << number; @@ -5153,6 +5156,7 @@ namespace Nz String String::Number(long double number) { std::ostringstream oss; + oss.imbue(std::locale::classic()); oss.precision(NAZARA_CORE_DECIMAL_DIGITS); oss << number; diff --git a/src/Nazara/Core/Unicode.cpp b/src/Nazara/Core/Unicode.cpp index cec6dbba8..5b20ebce6 100644 --- a/src/Nazara/Core/Unicode.cpp +++ b/src/Nazara/Core/Unicode.cpp @@ -4,23 +4,141 @@ #include #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 otherCodepoint) { return character.codepoint < otherCodepoint; }); + 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 otherCodepoint) { return character.firstCodepoint < otherCodepoint; }); + 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 otherCodepoint) { return character.codepoint < otherCodepoint; }); + 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 @@ -157,7 +275,7 @@ namespace Nz case 'X': case 'Y': case 'Z': - return Category_Number_DecimalDigit; + return Category_Letter_Uppercase; case '_': return Category_Punctuation_Connector; @@ -192,7 +310,7 @@ namespace Nz case 'x': case 'y': case 'z': - return Category_Number_DecimalDigit; + return Category_Letter_Lowercase; default: break; 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}, +}; + diff --git a/src/Nazara/Core/Win32/ThreadImpl.cpp b/src/Nazara/Core/Win32/ThreadImpl.cpp index 4dd557536..0ad2293cc 100644 --- a/src/Nazara/Core/Win32/ThreadImpl.cpp +++ b/src/Nazara/Core/Win32/ThreadImpl.cpp @@ -11,6 +11,9 @@ namespace Nz { + // Windows 10, version 1607 brought SetThreadDescription in order to name a thread + using SetThreadDescriptionFunc = HRESULT(WINAPI*)(HANDLE hThread, PCWSTR lpThreadDescription); + #ifdef NAZARA_COMPILER_MSVC namespace { @@ -50,12 +53,12 @@ namespace Nz void ThreadImpl::SetName(const Nz::String& name) { - SetThreadName(m_threadId, name.GetConstBuffer()); + SetThreadName(m_handle, name); } void ThreadImpl::SetCurrentName(const Nz::String& name) { - SetThreadName(::GetCurrentThreadId(), name.GetConstBuffer()); + SetThreadName(::GetCurrentThread(), name); } void ThreadImpl::Sleep(UInt32 time) @@ -63,9 +66,12 @@ namespace Nz ::Sleep(time); } - void ThreadImpl::SetThreadName(DWORD threadId, const char* threadName) + void ThreadImpl::RaiseThreadNameException(DWORD threadId, const char* threadName) { - #ifdef NAZARA_COMPILER_MSVC +#ifdef NAZARA_COMPILER_MSVC + if (!::IsDebuggerPresent()) + return; + // https://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx constexpr DWORD MS_VC_EXCEPTION = 0x406D1388; @@ -75,8 +81,8 @@ namespace Nz info.dwThreadID = threadId; info.dwFlags = 0; - #pragma warning(push) - #pragma warning(disable: 6320 6322) +#pragma warning(push) +#pragma warning(disable: 6320 6322) __try { RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(ULONG_PTR), reinterpret_cast(&info)); @@ -84,10 +90,20 @@ namespace Nz __except (EXCEPTION_EXECUTE_HANDLER) { } - #pragma warning(pop) - #else - NazaraWarning("SetThreadName on Windows is only supported with MSVC for now"); - #endif +#pragma warning(pop) +#else + NazaraWarning("SetThreadDescription is not supported and threadname exception is only supported with MSVC"); +#endif + } + + void ThreadImpl::SetThreadName(HANDLE threadHandle, const Nz::String& name) + { + // Try to use SetThreadDescription if available + static SetThreadDescriptionFunc SetThreadDescription = reinterpret_cast(::GetProcAddress(::GetModuleHandleW(L"Kernel32.dll"), "SetThreadDescription")); + if (SetThreadDescription) + SetThreadDescription(threadHandle, name.GetWideString().data()); + else + RaiseThreadNameException(::GetThreadId(threadHandle), name.GetConstBuffer()); } unsigned int __stdcall ThreadImpl::ThreadProc(void* userdata) diff --git a/src/Nazara/Core/Win32/ThreadImpl.hpp b/src/Nazara/Core/Win32/ThreadImpl.hpp index 8bc25930d..c12697611 100644 --- a/src/Nazara/Core/Win32/ThreadImpl.hpp +++ b/src/Nazara/Core/Win32/ThreadImpl.hpp @@ -30,7 +30,8 @@ namespace Nz static void Sleep(UInt32 time); private: - static void SetThreadName(DWORD threadId, const char* threadName); + static void RaiseThreadNameException(DWORD threadId, const char* threadName); + static void SetThreadName(HANDLE threadHandle, const Nz::String& name); static unsigned int __stdcall ThreadProc(void* userdata); DWORD m_threadId; 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; }); diff --git a/src/Nazara/Graphics/DeferredGeometryPass.cpp b/src/Nazara/Graphics/DeferredGeometryPass.cpp index dbd500ea4..0129c4980 100644 --- a/src/Nazara/Graphics/DeferredGeometryPass.cpp +++ b/src/Nazara/Graphics/DeferredGeometryPass.cpp @@ -29,8 +29,8 @@ namespace Nz Vector2f uv; }; - UInt32 s_maxQuads = std::numeric_limits::max() / 6; - UInt32 s_vertexBufferSize = 4 * 1024 * 1024; // 4 MiB + constexpr UInt32 s_vertexBufferSize = 4 * 1024 * 1024; // 4 MiB + constexpr UInt32 s_maxQuadPerDraw = s_vertexBufferSize / sizeof(VertexLayout_XYZ_Color_UV); } /*! @@ -468,62 +468,9 @@ 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 std::size_t maxSpriteCount = std::min(s_maxQuadPerDraw, m_spriteBuffer.GetVertexCount() / 4); 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 = [&]() - { - std::size_t spriteChainCount = m_spriteChains.size(); - if (spriteChainCount > 0) - { - 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 - { - // We open the buffer in writing mode - BufferMapper vertexMapper(m_spriteBuffer, BufferAccess_DiscardAndWrite); - VertexStruct_XYZ_Color_UV* vertices = static_cast(vertexMapper.GetPointer()); - - 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); - } - while (spriteChain < spriteChainCount); - } - - m_spriteChains.clear(); - }; - const Material* lastMaterial = nullptr; const MaterialPipeline* lastPipeline = nullptr; const Shader* lastShader = nullptr; @@ -533,18 +480,19 @@ 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); + + auto Draw = [&]() { - const Nz::Recti& scissorRect = (basicSprites.scissorRect.width > 0) ? basicSprites.scissorRect : fullscreenScissorRect; - - if (basicSprites.material != lastMaterial || basicSprites.overlay != lastOverlay || (basicSprites.material->IsScissorTestEnabled() && scissorRect != lastScissorRect)) + unsigned int firstIndex = 0; + for (const auto& batch : m_spriteBatches) { - Commit(); - - const MaterialPipeline* pipeline = basicSprites.material->GetPipeline(); - if (lastPipeline != pipeline) + const MaterialPipeline* pipeline = batch.material->GetPipeline(); + if (pipeline != lastPipeline) { - pipelineInstance = &basicSprites.material->GetPipeline()->Apply(ShaderFlags_Deferred | ShaderFlags_TextureOverlay | ShaderFlags_VertexColor); + pipelineInstance = &batch.material->GetPipeline()->Apply(ShaderFlags_TextureOverlay | ShaderFlags_VertexColor); const Shader* shader = pipelineInstance->uberInstance->GetShader(); if (shader != lastShader) @@ -566,33 +514,105 @@ namespace Nz lastPipeline = pipeline; } - if (lastMaterial != basicSprites.material) + if (batch.material != lastMaterial) { - basicSprites.material->Apply(*pipelineInstance); + batch.material->Apply(*pipelineInstance); - Renderer::SetTextureSampler(overlayTextureUnit, basicSprites.material->GetDiffuseSampler()); + Renderer::SetTextureSampler(overlayTextureUnit, batch.material->GetDiffuseSampler()); - lastMaterial = basicSprites.material; + 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; + } + }; + + m_spriteBatches.clear(); + { + BufferMapper vertexMapper; + VertexStruct_XYZ_Color_UV* vertices = nullptr; + + std::size_t remainingSprite = maxSpriteCount; + + const Material* lastMaterial = nullptr; + const Texture* lastOverlay = nullptr; + Recti lastScissorRect = Recti(-1, -1); + + for (const BasicRenderQueue::SpriteChain& basicSprites : spriteList) + { const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : m_whiteTexture.Get(); - if (overlayTexture != lastOverlay) - { - Renderer::SetTexture(overlayTextureUnit, overlayTexture); - lastOverlay = overlayTexture; - } + const Nz::Recti& scissorRect = (basicSprites.scissorRect.width > 0) ? basicSprites.scissorRect : fullscreenScissorRect; - if (basicSprites.material->IsScissorTestEnabled() && scissorRect != lastScissorRect) + const VertexStruct_XYZ_Color_UV* spriteVertices = basicSprites.vertices; + std::size_t spriteCount = basicSprites.spriteCount; + + for (;;) { - Renderer::SetScissorRect(scissorRect); - lastScissorRect = scissorRect; + if (m_spriteBatches.empty() || basicSprites.material != lastMaterial || overlayTexture != lastOverlay || (basicSprites.material->IsScissorTestEnabled() && scissorRect != lastScissorRect)) + { + m_spriteBatches.emplace_back(); + SpriteBatch& newBatch = m_spriteBatches.back(); + newBatch.material = basicSprites.material; + newBatch.overlayTexture = overlayTexture; + newBatch.scissorRect = scissorRect; + newBatch.spriteCount = 0; + + lastMaterial = basicSprites.material; + lastOverlay = overlayTexture; + lastScissorRect = scissorRect; + } + + SpriteBatch& currentBatch = m_spriteBatches.back(); + + if (!vertices) + { + vertexMapper.Map(m_spriteBuffer, BufferAccess_DiscardAndWrite); + vertices = static_cast(vertexMapper.GetPointer()); + } + + std::size_t processedSpriteCount = std::min(remainingSprite, spriteCount); + std::size_t processedVertices = processedSpriteCount * 4; + + std::memcpy(vertices, spriteVertices, processedVertices * sizeof(VertexStruct_XYZ_Color_UV)); + vertices += processedVertices; + spriteVertices += processedVertices; + + currentBatch.spriteCount += processedSpriteCount; + spriteCount -= processedSpriteCount; + + remainingSprite -= processedSpriteCount; + if (remainingSprite == 0) + { + vertexMapper.Unmap(); + vertices = nullptr; + + Draw(); + + remainingSprite = maxSpriteCount; + m_spriteBatches.clear(); + } + + if (spriteCount == 0) + break; } } - - m_spriteChains.emplace_back(basicSprites.vertices, basicSprites.spriteCount); } - Commit(); + Draw(); } const DeferredGeometryPass::ShaderUniforms* DeferredGeometryPass::GetShaderUniforms(const Shader* shader) const @@ -631,12 +651,12 @@ namespace Nz { ErrorFlags flags(ErrorFlag_ThrowException, true); - s_quadIndexBuffer.Reset(false, s_maxQuads * 6, DataStorage_Hardware, 0); + s_quadIndexBuffer.Reset(true, s_maxQuadPerDraw * 6, DataStorage_Hardware, 0); BufferMapper mapper(s_quadIndexBuffer, BufferAccess_WriteOnly); - UInt16* indices = static_cast(mapper.GetPointer()); + UInt32* indices = static_cast(mapper.GetPointer()); - for (unsigned int i = 0; i < s_maxQuads; ++i) + for (UInt32 i = 0; i < s_maxQuadPerDraw; ++i) { *indices++ = i * 4 + 0; *indices++ = i * 4 + 2; diff --git a/src/Nazara/Graphics/DepthRenderTechnique.cpp b/src/Nazara/Graphics/DepthRenderTechnique.cpp index 5435d7497..531b9988a 100644 --- a/src/Nazara/Graphics/DepthRenderTechnique.cpp +++ b/src/Nazara/Graphics/DepthRenderTechnique.cpp @@ -31,8 +31,8 @@ namespace Nz Vector2f uv; }; - unsigned int s_maxQuads = std::numeric_limits::max() / 6; - unsigned int s_vertexBufferSize = 4 * 1024 * 1024; // 4 MiB + constexpr UInt32 s_vertexBufferSize = 4 * 1024 * 1024; // 4 MiB + constexpr UInt32 s_maxQuadPerDraw = s_vertexBufferSize / sizeof(VertexLayout_XYZ_Color_UV); } /*! @@ -46,7 +46,7 @@ namespace Nz */ DepthRenderTechnique::DepthRenderTechnique() : - m_vertexBuffer(BufferType_Vertex) + m_vertexBuffer(BufferType_Vertex) { ErrorFlags flags(ErrorFlag_ThrowException, true); @@ -148,12 +148,12 @@ namespace Nz { ErrorFlags flags(ErrorFlag_ThrowException, true); - s_quadIndexBuffer.Reset(false, s_maxQuads * 6, DataStorage_Hardware, 0); + s_quadIndexBuffer.Reset(true, s_maxQuadPerDraw * 6, DataStorage_Hardware, 0); BufferMapper mapper(s_quadIndexBuffer, BufferAccess_WriteOnly); - UInt16* indices = static_cast(mapper.GetPointer()); + UInt32* indices = static_cast(mapper.GetPointer()); - for (unsigned int i = 0; i < s_maxQuads; ++i) + for (UInt32 i = 0; i < s_maxQuadPerDraw; ++i) { *indices++ = i * 4 + 0; *indices++ = i * 4 + 2; @@ -486,62 +486,9 @@ 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 std::size_t maxSpriteCount = std::min(s_maxQuadPerDraw, m_spriteBuffer.GetVertexCount() / 4); 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 = [&]() - { - std::size_t spriteChainCount = m_spriteChains.size(); - if (spriteChainCount > 0) - { - 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 - { - // We open the buffer in writing mode - BufferMapper vertexMapper(m_spriteBuffer, BufferAccess_DiscardAndWrite); - VertexStruct_XYZ_Color_UV* vertices = static_cast(vertexMapper.GetPointer()); - - 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); - } - while (spriteChain < spriteChainCount); - } - - m_spriteChains.clear(); - }; - const Material* lastMaterial = nullptr; const MaterialPipeline* lastPipeline = nullptr; const Shader* lastShader = nullptr; @@ -551,18 +498,19 @@ 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); + + auto Draw = [&]() { - const Nz::Recti& scissorRect = (basicSprites.scissorRect.width > 0) ? basicSprites.scissorRect : fullscreenScissorRect; - - if (basicSprites.material != lastMaterial || basicSprites.overlay != lastOverlay || (basicSprites.material->IsScissorTestEnabled() && scissorRect != lastScissorRect)) + unsigned int firstIndex = 0; + for (const auto& batch : m_spriteBatches) { - Commit(); - - const MaterialPipeline* pipeline = basicSprites.material->GetPipeline(); - if (lastPipeline != pipeline) + const MaterialPipeline* pipeline = batch.material->GetPipeline(); + if (pipeline != lastPipeline) { - pipelineInstance = &basicSprites.material->GetPipeline()->Apply(ShaderFlags_Deferred | ShaderFlags_TextureOverlay | ShaderFlags_VertexColor); + pipelineInstance = &batch.material->GetPipeline()->Apply(ShaderFlags_TextureOverlay | ShaderFlags_VertexColor); const Shader* shader = pipelineInstance->uberInstance->GetShader(); if (shader != lastShader) @@ -582,33 +530,105 @@ namespace Nz lastPipeline = pipeline; } - if (lastMaterial != basicSprites.material) + if (batch.material != lastMaterial) { - basicSprites.material->Apply(*pipelineInstance); + batch.material->Apply(*pipelineInstance); - Renderer::SetTextureSampler(overlayTextureUnit, basicSprites.material->GetDiffuseSampler()); + Renderer::SetTextureSampler(overlayTextureUnit, batch.material->GetDiffuseSampler()); - lastMaterial = basicSprites.material; + 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; + } + }; + + m_spriteBatches.clear(); + { + BufferMapper vertexMapper; + VertexStruct_XYZ_Color_UV* vertices = nullptr; + + std::size_t remainingSprite = maxSpriteCount; + + const Material* lastMaterial = nullptr; + const Texture* lastOverlay = nullptr; + Recti lastScissorRect = Recti(-1, -1); + + for (const BasicRenderQueue::SpriteChain& basicSprites : spriteList) + { const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : m_whiteTexture.Get(); - if (overlayTexture != lastOverlay) - { - Renderer::SetTexture(overlayTextureUnit, overlayTexture); - lastOverlay = overlayTexture; - } + const Nz::Recti& scissorRect = (basicSprites.scissorRect.width > 0) ? basicSprites.scissorRect : fullscreenScissorRect; - if (basicSprites.material->IsScissorTestEnabled() && scissorRect != lastScissorRect) + const VertexStruct_XYZ_Color_UV* spriteVertices = basicSprites.vertices; + std::size_t spriteCount = basicSprites.spriteCount; + + for (;;) { - Renderer::SetScissorRect(scissorRect); - lastScissorRect = scissorRect; + if (m_spriteBatches.empty() || basicSprites.material != lastMaterial || overlayTexture != lastOverlay || (basicSprites.material->IsScissorTestEnabled() && scissorRect != lastScissorRect)) + { + m_spriteBatches.emplace_back(); + SpriteBatch& newBatch = m_spriteBatches.back(); + newBatch.material = basicSprites.material; + newBatch.overlayTexture = overlayTexture; + newBatch.scissorRect = scissorRect; + newBatch.spriteCount = 0; + + lastMaterial = basicSprites.material; + lastOverlay = overlayTexture; + lastScissorRect = scissorRect; + } + + SpriteBatch& currentBatch = m_spriteBatches.back(); + + if (!vertices) + { + vertexMapper.Map(m_spriteBuffer, BufferAccess_DiscardAndWrite); + vertices = static_cast(vertexMapper.GetPointer()); + } + + std::size_t processedSpriteCount = std::min(remainingSprite, spriteCount); + std::size_t processedVertices = processedSpriteCount * 4; + + std::memcpy(vertices, spriteVertices, processedVertices * sizeof(VertexStruct_XYZ_Color_UV)); + vertices += processedVertices; + spriteVertices += processedVertices; + + currentBatch.spriteCount += processedSpriteCount; + spriteCount -= processedSpriteCount; + + remainingSprite -= processedSpriteCount; + if (remainingSprite == 0) + { + vertexMapper.Unmap(); + vertices = nullptr; + + Draw(); + + remainingSprite = maxSpriteCount; + m_spriteBatches.clear(); + } + + if (spriteCount == 0) + break; } } - - m_spriteChains.emplace_back(basicSprites.vertices, basicSprites.spriteCount); } - Commit(); + Draw(); } /*! 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/ForwardRenderTechnique.cpp b/src/Nazara/Graphics/ForwardRenderTechnique.cpp index 934d54d6d..77098ecf5 100644 --- a/src/Nazara/Graphics/ForwardRenderTechnique.cpp +++ b/src/Nazara/Graphics/ForwardRenderTechnique.cpp @@ -32,8 +32,8 @@ namespace Nz Vector2f uv; }; - UInt32 s_maxQuads = std::numeric_limits::max() / 6; - UInt32 s_vertexBufferSize = 4 * 1024 * 1024; // 4 MiB + constexpr UInt32 s_vertexBufferSize = 4 * 1024 * 1024; // 4 MiB + constexpr UInt32 s_maxQuadPerDraw = s_vertexBufferSize / sizeof(VertexLayout_XYZ_Color_UV); } /*! @@ -175,12 +175,12 @@ namespace Nz { ErrorFlags flags(ErrorFlag_ThrowException, true); - s_quadIndexBuffer.Reset(false, s_maxQuads * 6, DataStorage_Hardware, 0); + s_quadIndexBuffer.Reset(true, s_maxQuadPerDraw * 6, DataStorage_Hardware, 0); BufferMapper mapper(s_quadIndexBuffer, BufferAccess_WriteOnly); - UInt16* indices = static_cast(mapper.GetPointer()); + UInt32* indices = static_cast(mapper.GetPointer()); - for (unsigned int i = 0; i < s_maxQuads; ++i) + for (UInt32 i = 0; i < s_maxQuadPerDraw; ++i) { *indices++ = i * 4 + 0; *indices++ = i * 4 + 2; @@ -618,52 +618,9 @@ namespace Nz const RenderTarget* renderTarget = sceneData.viewer->GetTarget(); Recti fullscreenScissorRect = Recti(Vector2i(renderTarget->GetSize())); + const std::size_t maxSpriteCount = std::min(s_maxQuadPerDraw, m_spriteBuffer.GetVertexCount() / 4); + const unsigned int overlayTextureUnit = Material::GetTextureUnit(TextureMap_Overlay); - const std::size_t maxSpriteCount = std::min(s_maxQuads, m_spriteBuffer.GetVertexCount() / 4); - - m_spriteBatches.clear(); - { - 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) - { - 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)) - { - m_spriteBatches.emplace_back(); - SpriteBatch& newBatch = m_spriteBatches.back(); - newBatch.material = basicSprites.material; - newBatch.overlayTexture = overlayTexture; - newBatch.scissorRect = scissorRect; - newBatch.spriteCount = 0; - - lastMaterial = basicSprites.material; - lastOverlay = overlayTexture; - lastScissorRect = scissorRect; - } - - 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; const Shader* lastShader = nullptr; @@ -677,59 +634,135 @@ namespace Nz Renderer::SetMatrix(MatrixType_World, Matrix4f::Identity()); Renderer::SetVertexBuffer(&m_spriteBuffer); - unsigned int firstIndex = 0; - for (const auto& batch : m_spriteBatches) + auto Draw = [&]() { - const MaterialPipeline* pipeline = batch.material->GetPipeline(); - if (pipeline != lastPipeline) + unsigned int firstIndex = 0; + for (const auto& batch : m_spriteBatches) { - pipelineInstance = &batch.material->GetPipeline()->Apply(ShaderFlags_TextureOverlay | ShaderFlags_VertexColor); - - const Shader* shader = pipelineInstance->uberInstance->GetShader(); - if (shader != lastShader) + const MaterialPipeline* pipeline = batch.material->GetPipeline(); + if (pipeline != lastPipeline) { - // Index of uniforms in the shader - shaderUniforms = GetShaderUniforms(shader); + pipelineInstance = &batch.material->GetPipeline()->Apply(ShaderFlags_TextureOverlay | ShaderFlags_VertexColor); - // Ambient color of the scene - shader->SendColor(shaderUniforms->sceneAmbient, sceneData.ambientColor); - // Position of the camera - shader->SendVector(shaderUniforms->eyePosition, sceneData.viewer->GetEyePosition()); + const Shader* shader = pipelineInstance->uberInstance->GetShader(); + if (shader != lastShader) + { + // Index of uniforms in the shader + shaderUniforms = GetShaderUniforms(shader); - // Overlay texture unit - shader->SendInteger(shaderUniforms->textureOverlay, overlayTextureUnit); + // Ambient color of the scene + shader->SendColor(shaderUniforms->sceneAmbient, sceneData.ambientColor); + // Position of the camera + shader->SendVector(shaderUniforms->eyePosition, sceneData.viewer->GetEyePosition()); - lastShader = shader; + // Overlay texture unit + shader->SendInteger(shaderUniforms->textureOverlay, overlayTextureUnit); + + lastShader = shader; + } + + lastPipeline = pipeline; } - lastPipeline = pipeline; - } + if (batch.material != lastMaterial) + { + batch.material->Apply(*pipelineInstance); - if (batch.material != lastMaterial) + 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; + } + }; + + m_spriteBatches.clear(); + { + BufferMapper vertexMapper; + VertexStruct_XYZ_Color_UV* vertices = nullptr; + + std::size_t remainingSprite = maxSpriteCount; + + const Material* lastMaterial = nullptr; + const Texture* lastOverlay = nullptr; + Recti lastScissorRect = Recti(-1, -1); + + for (const BasicRenderQueue::SpriteChain& basicSprites : spriteList) { - batch.material->Apply(*pipelineInstance); + const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : m_whiteTexture.Get(); + const Nz::Recti& scissorRect = (basicSprites.scissorRect.width > 0) ? basicSprites.scissorRect : fullscreenScissorRect; - Renderer::SetTextureSampler(overlayTextureUnit, batch.material->GetDiffuseSampler()); + const VertexStruct_XYZ_Color_UV* spriteVertices = basicSprites.vertices; + std::size_t spriteCount = basicSprites.spriteCount; + + for (;;) + { + if (m_spriteBatches.empty() || basicSprites.material != lastMaterial || overlayTexture != lastOverlay || (basicSprites.material->IsScissorTestEnabled() && scissorRect != lastScissorRect)) + { + m_spriteBatches.emplace_back(); + SpriteBatch& newBatch = m_spriteBatches.back(); + newBatch.material = basicSprites.material; + newBatch.overlayTexture = overlayTexture; + newBatch.scissorRect = scissorRect; + newBatch.spriteCount = 0; - lastMaterial = batch.material; + lastMaterial = basicSprites.material; + lastOverlay = overlayTexture; + lastScissorRect = scissorRect; + } + + SpriteBatch& currentBatch = m_spriteBatches.back(); + + if (!vertices) + { + vertexMapper.Map(m_spriteBuffer, BufferAccess_DiscardAndWrite); + vertices = static_cast(vertexMapper.GetPointer()); + } + + std::size_t processedSpriteCount = std::min(remainingSprite, spriteCount); + std::size_t processedVertices = processedSpriteCount * 4; + + std::memcpy(vertices, spriteVertices, processedVertices * sizeof(VertexStruct_XYZ_Color_UV)); + vertices += processedVertices; + spriteVertices += processedVertices; + + currentBatch.spriteCount += processedSpriteCount; + spriteCount -= processedSpriteCount; + + remainingSprite -= processedSpriteCount; + if (remainingSprite == 0) + { + vertexMapper.Unmap(); + vertices = nullptr; + + Draw(); + + remainingSprite = maxSpriteCount; + m_spriteBatches.clear(); + } + + if (spriteCount == 0) + break; + } } - - 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; } + + Draw(); } const ForwardRenderTechnique::ShaderUniforms* ForwardRenderTechnique::GetShaderUniforms(const Shader* shader) const 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/Material.cpp b/src/Nazara/Graphics/Material.cpp index e88ad6100..81c50ab85 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())); @@ -429,6 +433,8 @@ namespace Nz m_normalMap = material.m_normalMap; m_specularMap = material.m_specularMap; + SetReflectionMode(material.GetReflectionMode()); + InvalidatePipeline(); } 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); 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/Graphics/SkyboxBackground.cpp b/src/Nazara/Graphics/SkyboxBackground.cpp index 8d5723ab9..411f3d0c1 100644 --- a/src/Nazara/Graphics/SkyboxBackground.cpp +++ b/src/Nazara/Graphics/SkyboxBackground.cpp @@ -56,8 +56,6 @@ namespace Nz const Nz::RenderTarget* target = viewer->GetTarget(); Nz::Vector2ui targetSize = target->GetSize(); - Matrix4f projectionMatrix = Nz::Matrix4f::Perspective(45.f, float(targetSize.x) / targetSize.y, viewer->GetZNear(), viewer->GetZFar()); - Matrix4f skyboxMatrix(viewer->GetViewMatrix()); skyboxMatrix.SetTranslation(Vector3f::Zero()); @@ -77,7 +75,7 @@ namespace Nz world.SetTranslation(offset); Renderer::SetIndexBuffer(s_indexBuffer); - Renderer::SetMatrix(MatrixType_Projection, projectionMatrix); + Renderer::SetMatrix(MatrixType_Projection, viewer->GetProjectionMatrix()); Renderer::SetMatrix(MatrixType_View, skyboxMatrix); Renderer::SetMatrix(MatrixType_World, world); Renderer::SetRenderStates(s_renderStates); diff --git a/src/Nazara/Graphics/TextSprite.cpp b/src/Nazara/Graphics/TextSprite.cpp index 8cc4961cf..f253b5539 100644 --- a/src/Nazara/Graphics/TextSprite.cpp +++ b/src/Nazara/Graphics/TextSprite.cpp @@ -30,13 +30,13 @@ namespace Nz { for (auto& pair : m_renderInfos) { - Texture* overlay = pair.first; + const RenderKey& key = pair.first; RenderIndices& indices = pair.second; if (indices.count > 0) { const VertexStruct_XYZ_Color_UV* vertices = reinterpret_cast(instanceData.data.data()); - renderQueue->AddSprites(instanceData.renderOrder, GetMaterial(), &vertices[indices.first * 4], indices.count, scissorRect, overlay); + renderQueue->AddSprites(instanceData.renderOrder + key.renderOrder, GetMaterial(), &vertices[indices.first * 4], indices.count, scissorRect, key.texture); } } } @@ -101,15 +101,16 @@ namespace Nz } std::size_t glyphCount = drawer.GetGlyphCount(); - m_localVertices.resize(glyphCount * 4); // Reset glyph count for every texture to zero for (auto& pair : m_renderInfos) pair.second.count = 0; // Count glyph count for each texture - Texture* lastTexture = nullptr; + RenderKey lastRenderKey { nullptr, 0 }; unsigned int* count = nullptr; + + std::size_t visibleGlyphCount = 0; for (std::size_t i = 0; i < glyphCount; ++i) { const AbstractTextDrawer::Glyph& glyph = drawer.GetGlyph(i); @@ -117,19 +118,23 @@ namespace Nz continue; Texture* texture = static_cast(glyph.atlas); - if (lastTexture != texture) + RenderKey renderKey{ texture, glyph.renderOrder }; + if (lastRenderKey != renderKey) { - auto it = m_renderInfos.find(texture); + auto it = m_renderInfos.find(renderKey); if (it == m_renderInfos.end()) - it = m_renderInfos.insert(std::make_pair(texture, RenderIndices{0U, 0U})).first; + it = m_renderInfos.insert(std::make_pair(renderKey, RenderIndices{0U, 0U})).first; count = &it->second.count; - lastTexture = texture; + lastRenderKey = renderKey; } (*count)++; + visibleGlyphCount++; } + m_localVertices.resize(visibleGlyphCount * 4); + // Attributes indices and reinitialize glyph count to zero to use it as a counter in the next loop // This is because the 1st glyph can use texture A, the 2nd glyph can use texture B and the 3th glyph C can use texture A again // so we need a counter to know where to write informations @@ -140,7 +145,7 @@ namespace Nz { RenderIndices& indices = infoIt->second; if (indices.count == 0) - m_renderInfos.erase(infoIt++); //< No glyph uses this texture, remove from indices + infoIt = m_renderInfos.erase(infoIt); //< No glyph uses this texture, remove from indices else { indices.first = index; @@ -151,7 +156,7 @@ namespace Nz } } - lastTexture = nullptr; + lastRenderKey = { nullptr, 0 }; RenderIndices* indices = nullptr; for (unsigned int i = 0; i < glyphCount; ++i) { @@ -160,10 +165,11 @@ namespace Nz continue; Texture* texture = static_cast(glyph.atlas); - if (lastTexture != texture) + RenderKey renderKey{ texture, glyph.renderOrder }; + if (lastRenderKey != renderKey) { - indices = &m_renderInfos[texture]; //< We changed texture, adjust the pointer - lastTexture = texture; + indices = &m_renderInfos[renderKey]; //< We changed texture, adjust the pointer + lastRenderKey = renderKey; } // First, compute the uv coordinates from our atlas rect @@ -185,9 +191,10 @@ namespace Nz for (unsigned int j = 0; j < 4; ++j) { // Remember that indices->count is a counter here, not a count value - m_localVertices[indices->count * 4 + j].color = glyph.color; - m_localVertices[indices->count * 4 + j].position.Set(glyph.corners[j]); - m_localVertices[indices->count * 4 + j].uv.Set(uvRect.GetCorner((glyph.flipped) ? flippedCorners[j] : normalCorners[j])); + std::size_t offset = (indices->first + indices->count) * 4 + j; + m_localVertices[offset].color = glyph.color; + m_localVertices[offset].position.Set(glyph.corners[j]); + m_localVertices[offset].uv.Set(uvRect.GetCorner((glyph.flipped) ? flippedCorners[j] : normalCorners[j])); } // Increment the counter, go to next glyph @@ -208,9 +215,8 @@ namespace Nz void TextSprite::MakeBoundingVolume() const { - Rectf bounds(m_localBounds); - Vector2f max = m_scale * bounds.GetMaximum(); - Vector2f min = m_scale * bounds.GetMinimum(); + Vector2f max = m_scale * m_localBounds.GetMaximum(); + Vector2f min = m_scale * m_localBounds.GetMinimum(); m_boundingVolume.Set(min.x * Vector3f::Right() + min.y * Vector3f::Down(), max.x * Vector3f::Right() + max.y * Vector3f::Down()); } @@ -236,13 +242,12 @@ namespace Nz } /*! - * \brief Handle the invalidation of an atlas layer + * \brief Handle the size change of an atlas layer * * \param atlas Atlas being invalidated * \param oldLayer Pointer to the previous layer * \param newLayer Pointer to the new layer */ - void TextSprite::OnAtlasLayerChange(const AbstractAtlas* atlas, AbstractImage* oldLayer, AbstractImage* newLayer) { NazaraUnused(atlas); @@ -255,33 +260,38 @@ namespace Nz } #endif + if (!oldLayer) + return; + + assert(newLayer); + // The texture of an atlas have just been recreated (size change) // we have to adjust the coordinates of the texture and the rendering texture Texture* oldTexture = static_cast(oldLayer); Texture* newTexture = static_cast(newLayer); - // It is possible that we don't use the texture (the atlas warning us for each of its layers) - auto it = m_renderInfos.find(oldTexture); - if (it != m_renderInfos.end()) + Vector2ui oldSize(oldTexture->GetSize()); + Vector2ui newSize(newTexture->GetSize()); + Vector2f scale = Vector2f(oldSize) / Vector2f(newSize); // ratio of the old one to the new one + + // It is possible we actually use that texture multiple times, check them all + for (auto it = m_renderInfos.begin(); it != m_renderInfos.end(); ++it) { - // We indeed use this texture, we have to update its coordinates - RenderIndices indices = std::move(it->second); + const RenderKey& renderKey = it->first; + const RenderIndices& indices = it->second; - Vector2ui oldSize(oldTexture->GetSize()); - Vector2ui newSize(newTexture->GetSize()); - Vector2f scale = Vector2f(oldSize) / Vector2f(newSize); // ratio of the old one to the new one - - // Now we will iterate through each coordinates of the concerned texture to multiply them by the ratio - SparsePtr texCoordPtr(&m_localVertices[indices.first].uv, sizeof(VertexStruct_XYZ_Color_UV)); + // Adjust texture coordinates by size ratio + SparsePtr texCoordPtr(&m_localVertices[indices.first].uv, sizeof(VertexStruct_XY_Color_UV)); for (unsigned int i = 0; i < indices.count; ++i) { for (unsigned int j = 0; j < 4; ++j) - m_localVertices[i*4 + j].uv *= scale; + m_localVertices[i * 4 + j].uv *= scale; } - // We get rid off the old texture and we set the new one at the place (same for indices) + // Erase and re-insert with the new texture handle m_renderInfos.erase(it); - m_renderInfos.insert(std::make_pair(newTexture, std::move(indices))); + m_renderInfos.insert(std::make_pair(RenderKey{ newTexture, renderKey.renderOrder }, indices)); + it = m_renderInfos.begin(); //< std::unordered_map::insert may invalidate all iterators, start from the beginning... } } diff --git a/src/Nazara/Graphics/TileMap.cpp b/src/Nazara/Graphics/TileMap.cpp index 6a30496c3..4789f4a8b 100644 --- a/src/Nazara/Graphics/TileMap.cpp +++ b/src/Nazara/Graphics/TileMap.cpp @@ -27,11 +27,14 @@ namespace Nz { const VertexStruct_XYZ_Color_UV* vertices = reinterpret_cast(instanceData.data.data()); - std::size_t matCount = 0; std::size_t spriteCount = 0; - for (const Layer& layer : m_layers) + for (std::size_t layerIndex = 0; layerIndex < m_layers.size(); ++layerIndex) { - renderQueue->AddSprites(instanceData.renderOrder, GetMaterial(matCount++), &vertices[spriteCount], layer.tiles.size(), scissorRect); + const auto& layer = m_layers[layerIndex]; + if (layer.tiles.empty()) + continue; + + renderQueue->AddSprites(instanceData.renderOrder, GetMaterial(layerIndex), &vertices[4 * spriteCount], layer.tiles.size(), scissorRect); spriteCount += layer.tiles.size(); } @@ -63,9 +66,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) { diff --git a/src/Nazara/Lua/LuaInstance.cpp b/src/Nazara/Lua/LuaInstance.cpp index 85567df81..eb9e4e48f 100644 --- a/src/Nazara/Lua/LuaInstance.cpp +++ b/src/Nazara/Lua/LuaInstance.cpp @@ -63,7 +63,7 @@ namespace Nz void LuaInstance::LoadLibraries(LuaLibFlags libFlags) { // From luaL_openlibs - std::array libs; + std::array libs; std::size_t libCount = 0; libs[libCount++] = { "_G", luaopen_base }; diff --git a/src/Nazara/Lua/LuaState.cpp b/src/Nazara/Lua/LuaState.cpp index dfbec1117..6065087d6 100644 --- a/src/Nazara/Lua/LuaState.cpp +++ b/src/Nazara/Lua/LuaState.cpp @@ -712,6 +712,11 @@ namespace Nz lua_pushvalue(m_state, index); } + bool LuaState::RawEqual(int index1, int index2) const + { + return lua_rawequal(m_state, index1, index2); + } + void LuaState::Remove(int index) const { lua_remove(m_state, index); diff --git a/src/Nazara/Network/ENetHost.cpp b/src/Nazara/Network/ENetHost.cpp index 5744b8743..04119a330 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: @@ -541,6 +541,7 @@ namespace Nz { peer->m_address = m_receivedAddress; peer->m_incomingDataTotal += UInt32(m_receivedDataLength); + peer->m_totalByteReceived += UInt32(m_receivedDataLength); } auto commandError = [&]() -> bool @@ -657,6 +658,10 @@ namespace Nz return commandError(); } + m_totalReceivedPackets++; + if (peer) + peer->m_totalPacketReceived++; + if (peer && (command->header.command & ENetProtocolFlag_Acknowledge) != 0) { UInt16 sentTime; @@ -750,7 +755,6 @@ namespace Nz m_receivedDataLength = receivedLength; m_totalReceivedData += receivedLength; - m_totalReceivedPackets++; // Intercept @@ -855,9 +859,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) @@ -886,6 +890,7 @@ namespace Nz canPing = false; + assert((outgoingCommand->command.header.command & ENetProtocolCommand_Mask) < ENetProtocolCommand_Count); std::size_t commandSize = s_commandSizes[outgoingCommand->command.header.command & ENetProtocolCommand_Mask]; if (m_commandCount >= m_commands.size() || m_bufferCount + 1 >= m_buffers.size() || peer->GetMtu() - m_packetSize < commandSize || (outgoingCommand->packet && UInt16(peer->GetMtu() - m_packetSize) < UInt16(commandSize + outgoingCommand->fragmentLength))) @@ -1138,6 +1143,7 @@ namespace Nz { auto outgoingCommand = currentCommand; + assert((outgoingCommand->command.header.command & ENetProtocolCommand_Mask) < ENetProtocolCommand_Count); std::size_t commandSize = s_commandSizes[outgoingCommand->command.header.command & ENetProtocolCommand_Mask]; if (m_commandCount >= m_commands.size() || m_bufferCount + 1 >= m_buffers.size() || peer->m_mtu - m_packetSize < commandSize || @@ -1351,6 +1357,7 @@ namespace Nz std::size_t ENetHost::GetCommandSize(UInt8 commandNumber) { + assert((commandNumber & ENetProtocolCommand_Mask) < ENetProtocolCommand_Count); return s_commandSizes[commandNumber & ENetProtocolCommand_Mask]; } diff --git a/src/Nazara/Network/ENetPeer.cpp b/src/Nazara/Network/ENetPeer.cpp index 38189361b..294585631 100644 --- a/src/Nazara/Network/ENetPeer.cpp +++ b/src/Nazara/Network/ENetPeer.cpp @@ -163,6 +163,9 @@ namespace Nz m_incomingUnsequencedGroup = 0; m_outgoingUnsequencedGroup = 0; m_eventData = 0; + m_totalByteReceived = 0; + m_totalByteSent = 0; + m_totalPacketReceived = 0; m_totalPacketLost = 0; m_totalPacketSent = 0; m_totalWaitingData = 0; @@ -212,7 +215,7 @@ namespace Nz if ((packetRef->flags & (ENetPacketFlag_Reliable | ENetPacketFlag_UnreliableFragment)) == ENetPacketFlag_UnreliableFragment && channel.outgoingUnreliableSequenceNumber < 0xFFFF) { - commandNumber = ENetProtocolCommand_SendUnreliable; + commandNumber = ENetProtocolCommand_SendUnreliableFragment; startSequenceNumber = HostToNet(channel.outgoingUnreliableSequenceNumber + 1); } else @@ -286,6 +289,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 +322,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; @@ -347,7 +349,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; @@ -771,7 +773,7 @@ namespace Nz break; if ((incomingCommand.command.header.command & ENetProtocolCommand_Mask) != ENetProtocolCommand_SendUnreliableFragment || - totalLength != incomingCommand.packet->data.GetDataSize() || fragmentCount != incomingCommand.fragments.GetSize()) + totalLength != incomingCommand.packet->data.GetDataSize() || fragmentCount != incomingCommand.fragments.GetSize()) return false; startCommand = &incomingCommand; @@ -779,9 +781,10 @@ namespace Nz } } - if (startCommand) + if (!startCommand) { - if (!QueueIncomingCommand(*command, nullptr, totalLength, ENetPacketFlag_UnreliableFragment, fragmentCount)) + startCommand = QueueIncomingCommand(*command, nullptr, totalLength, ENetPacketFlag_UnreliableFragment, fragmentCount); + if (!startCommand) return false; } @@ -1041,7 +1044,13 @@ namespace Nz void ENetPeer::RemoveSentUnreliableCommands() { + if (m_sentUnreliableCommands.empty()) + return; + m_sentUnreliableCommands.clear(); + + if (m_state == ENetPeerState::DisconnectLater && !HasPendingCommands()) + Disconnect(m_eventData); } void ENetPeer::ResetQueues() @@ -1079,6 +1088,7 @@ namespace Nz acknowledgment.sentTime = sentTime; m_outgoingDataTotal += sizeof(Acknowledgement); + m_totalByteSent += sizeof(Acknowledgement); m_acknowledgements.emplace_back(acknowledgment); @@ -1259,7 +1269,10 @@ namespace Nz void ENetPeer::SetupOutgoingCommand(OutgoingCommand& outgoingCommand) { - m_outgoingDataTotal += static_cast(ENetHost::GetCommandSize(outgoingCommand.command.header.command) + outgoingCommand.fragmentLength); + UInt32 commandSize = static_cast(ENetHost::GetCommandSize(outgoingCommand.command.header.command) + outgoingCommand.fragmentLength); + + m_outgoingDataTotal += commandSize; + m_totalByteSent += commandSize; if (outgoingCommand.command.header.channelID == 0xFF) { 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/Posix/IpAddressImpl.cpp b/src/Nazara/Network/Posix/IpAddressImpl.cpp index d00d58068..4abaaee94 100644 --- a/src/Nazara/Network/Posix/IpAddressImpl.cpp +++ b/src/Nazara/Network/Posix/IpAddressImpl.cpp @@ -63,7 +63,7 @@ namespace Nz IpAddress::IPv6 ipv6; for (unsigned int i = 0; i < 8; ++i) - ipv6[i] = rawIpV6[i * 2] << 8 | rawIpV6[i * 2 + 1]; + ipv6[i] = Nz::UInt16(rawIpV6[i * 2]) << 8 | rawIpV6[i * 2 + 1]; return ipv6; } diff --git a/src/Nazara/Network/Posix/SocketImpl.cpp b/src/Nazara/Network/Posix/SocketImpl.cpp index c8140f019..af0b5557f 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 @@ -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 == SOCKET_ERROR) - { - 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 != 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 = TranslateErrnoToSocketError(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 = TranslateErrnoToSocketError(GetLastErrorCode()); + + 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"); @@ -574,7 +573,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 +697,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; @@ -952,6 +951,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 +969,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/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 9e2eb7e0c..de8e2771d 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 @@ -244,7 +288,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 +305,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 @@ -432,55 +476,52 @@ 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. + * + * \see PollForConnected */ - - 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"); - CallOnExit restoreBlocking; - if (m_isBlockingEnabled) + SocketState newState = SocketImpl::PollConnection(m_handle, m_peerAddress, (msTimeout > 0) ? msTimeout : std::numeric_limits::max(), &m_lastError); + + // 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) { - SocketImpl::SetBlocking(m_handle, false); - restoreBlocking.Reset([this] () - { - SocketImpl::SetBlocking(m_handle, true); - }); + m_openMode = OpenMode_NotOpen; + m_peerAddress = IpAddress::Invalid; } - 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 - if (newState == SocketState_NotConnected) - m_peerAddress = IpAddress::Invalid; - 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; } /*! 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; diff --git a/src/Nazara/Network/Win32/IpAddressImpl.cpp b/src/Nazara/Network/Win32/IpAddressImpl.cpp index 853dae840..38da48b4b 100644 --- a/src/Nazara/Network/Win32/IpAddressImpl.cpp +++ b/src/Nazara/Network/Win32/IpAddressImpl.cpp @@ -157,7 +157,7 @@ namespace Nz IpAddress::IPv6 ipv6; for (unsigned int i = 0; i < 8; ++i) - ipv6[i] = rawIpV6[i * 2] << 8 | rawIpV6[i * 2 + 1]; + ipv6[i] = Nz::UInt16(rawIpV6[i * 2]) << 8 | rawIpV6[i * 2 + 1]; return IpAddress(ipv6, ntohs(addressv6->sin6_port)); } diff --git a/src/Nazara/Network/Win32/SocketImpl.cpp b/src/Nazara/Network/Win32/SocketImpl.cpp index 6d2e33f7f..f9e4b42f5 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 @@ -29,7 +29,7 @@ struct tcp_keepalive #define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4) #endif -#include +#include #include @@ -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; @@ -153,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); @@ -501,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) { @@ -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); @@ -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; 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); diff --git a/src/Nazara/Physics2D/Arbiter2D.cpp b/src/Nazara/Physics2D/Arbiter2D.cpp new file mode 100644 index 000000000..56668bbe5 --- /dev/null +++ b/src/Nazara/Physics2D/Arbiter2D.cpp @@ -0,0 +1,102 @@ +// 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::pair Arbiter2D::GetBodies() const + { + std::pair bodies; + cpBody* firstBody; + cpBody* secondBody; + cpArbiterGetBodies(m_arbiter, &firstBody, &secondBody); + + bodies.first = static_cast(cpBodyGetUserData(firstBody)); + bodies.second = static_cast(cpBodyGetUserData(secondBody)); + + return bodies; + } + + 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/Collider2D.cpp b/src/Nazara/Physics2D/Collider2D.cpp index 95cd633af..16587a092 100644 --- a/src/Nazara/Physics2D/Collider2D.cpp +++ b/src/Nazara/Physics2D/Collider2D.cpp @@ -3,29 +3,99 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include +#include #include +#include #include -#include +#include +#include +#include namespace Nz { Collider2D::~Collider2D() = default; - std::vector Collider2D::GenerateShapes(RigidBody2D* body) const + void Collider2D::ForEachPolygon(const std::function& callback) const { - cpShapeFilter filter = cpShapeFilterNew(m_collisionGroup, m_categoryMask, m_collisionMask); + // Currently, the only way to get only the polygons of a shape is to create a temporary cpSpace containing only this shape + // A better way to do this would be to reimplement this function in every subclass type in the very same way chipmunk does - std::vector shapes; - CreateShapes(body, shapes); + PhysWorld2D physWorld; + RigidBody2D rigidBody(&physWorld, 0.f); - for (cpShape* shape : shapes) + std::vector shapeVector; + rigidBody.SetGeom(const_cast(this), false, false); //< Won't be used for writing, but still ugly + + PhysWorld2D::DebugDrawOptions drawCallbacks; + drawCallbacks.circleCallback = [&](const Vector2f& origin, const RadianAnglef& /*rotation*/, float radius, Nz::Color /*outlineColor*/, Nz::Color /*fillColor*/, void* /*userData*/) { - cpShapeSetFilter(shape, filter); + constexpr std::size_t circleVerticesCount = 20; + + std::array vertices; + + RadianAnglef angleBetweenVertices = 2.f * float(M_PI) / vertices.size(); + for (std::size_t i = 0; i < vertices.size(); ++i) + { + RadianAnglef angle = float(i) * angleBetweenVertices; + std::pair sincos = angle.GetSinCos(); + + vertices[i] = origin + Vector2f(radius * sincos.first, radius * sincos.second); + } + + callback(vertices.data(), vertices.size()); + }; + + drawCallbacks.polygonCallback = [&](const Vector2f* vertices, std::size_t vertexCount, float radius, Nz::Color /*outlineColor*/, Nz::Color /*fillColor*/, void* /*userData*/) + { + //TODO: Handle radius + callback(vertices, vertexCount); + }; + + drawCallbacks.segmentCallback = [&](const Vector2f& first, const Vector2f& second, Nz::Color /*color*/, void* /*userData*/) + { + std::array vertices = { first, second }; + + callback(vertices.data(), vertices.size()); + }; + + drawCallbacks.thickSegmentCallback = [&](const Vector2f& first, const Vector2f& second, float thickness, Nz::Color /*outlineColor*/, Nz::Color /*fillColor*/, void* /*userData*/) + { + static std::pair sincos = Nz::DegreeAnglef(90.f).GetSinCos(); + + Vector2f normal = Vector2f::Normalize(second - first); + Vector2f thicknessNormal(sincos.second * normal.x - sincos.first * normal.y, + sincos.first * normal.x + sincos.second * normal.y); + + std::array vertices; + vertices[0] = first + thickness * thicknessNormal; + vertices[1] = first - thickness * thicknessNormal; + vertices[2] = second - thickness * thicknessNormal; + vertices[3] = second + thickness * thicknessNormal; + + callback(vertices.data(), vertices.size()); + }; + + physWorld.DebugDraw(drawCallbacks, true, false, false); + } + + std::size_t Collider2D::GenerateShapes(RigidBody2D* body, std::vector* shapes) const + { + std::size_t shapeCount = CreateShapes(body, shapes); + + cpShapeFilter filter = cpShapeFilterNew(m_collisionGroup, m_categoryMask, m_collisionMask); + for (std::size_t i = shapes->size() - shapeCount; i < shapes->size(); ++i) + { + cpShape* shape = (*shapes)[i]; + cpShapeSetCollisionType(shape, m_collisionId); + cpShapeSetElasticity(shape, cpFloat(m_elasticity)); + cpShapeSetFilter(shape, filter); + cpShapeSetFriction(shape, cpFloat(m_friction)); cpShapeSetSensor(shape, (m_trigger) ? cpTrue : cpFalse); + cpShapeSetSurfaceVelocity(shape, cpv(cpFloat(m_surfaceVelocity.x), cpFloat(m_surfaceVelocity.y))); } - return shapes; + return shapeCount; } /******************************** BoxCollider2D *********************************/ @@ -41,6 +111,11 @@ namespace Nz { } + Nz::Vector2f BoxCollider2D::ComputeCenterOfMass() const + { + return m_rect.GetCenter(); + } + float BoxCollider2D::ComputeMomentOfInertia(float mass) const { return static_cast(cpMomentForBox2(mass, cpBBNew(m_rect.x, m_rect.y, m_rect.x + m_rect.width, m_rect.y + m_rect.height))); @@ -51,9 +126,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 *********************************/ @@ -64,6 +140,11 @@ namespace Nz { } + Nz::Vector2f CircleCollider2D::ComputeCenterOfMass() const + { + return m_offset; + } + float CircleCollider2D::ComputeMomentOfInertia(float mass) const { return static_cast(cpMomentForCircle(mass, 0.f, m_radius, cpv(m_offset.x, m_offset.y))); @@ -74,18 +155,29 @@ 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 *********************************/ CompoundCollider2D::CompoundCollider2D(std::vector geoms) : - m_geoms(std::move(geoms)) + m_geoms(std::move(geoms)), + m_doesOverrideCollisionProperties(true) { } + Nz::Vector2f CompoundCollider2D::ComputeCenterOfMass() const + { + Nz::Vector2f centerOfMass = Nz::Vector2f::Zero(); + for (const auto& geom : m_geoms) + centerOfMass += geom->ComputeCenterOfMass(); + + return centerOfMass / float(m_geoms.size()); + } + float CompoundCollider2D::ComputeMomentOfInertia(float mass) const { ///TODO: Correctly compute moment using parallel axis theorem: @@ -102,11 +194,30 @@ 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::size_t CompoundCollider2D::GenerateShapes(RigidBody2D* body, std::vector* shapes) const + { + // This is our parent's default behavior + if (m_doesOverrideCollisionProperties) + return Collider2D::GenerateShapes(body, shapes); + else + { + std::size_t shapeCount = 0; + for (const auto& geom : m_geoms) + shapeCount += geom->GenerateShapes(body, shapes); + + return shapeCount; + } } /******************************** ConvexCollider2D *********************************/ @@ -119,6 +230,15 @@ namespace Nz m_vertices[i].Set(*vertices++); } + Nz::Vector2f ConvexCollider2D::ComputeCenterOfMass() const + { + static_assert(sizeof(cpVect) == sizeof(Vector2d), "Chipmunk vector is not equivalent to Vector2d"); + + cpVect center = cpCentroidForPoly(int(m_vertices.size()), reinterpret_cast(m_vertices.data())); + + return Nz::Vector2f(float(center.x), float(center.y)); + } + float ConvexCollider2D::ComputeMomentOfInertia(float mass) const { static_assert(sizeof(cpVect) == sizeof(Vector2d), "Chipmunk vector is not equivalent to Vector2d"); @@ -131,9 +251,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 **********************************/ @@ -143,17 +264,28 @@ namespace Nz return ColliderType2D_Null; } + Nz::Vector2f NullCollider2D::ComputeCenterOfMass() const + { + return Nz::Vector2f::Zero(); + } + float NullCollider2D::ComputeMomentOfInertia(float mass) const { 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 *********************************/ + Nz::Vector2f SegmentCollider2D::ComputeCenterOfMass() const + { + return (m_first + m_second) / 2.f; + } + float SegmentCollider2D::ComputeMomentOfInertia(float mass) const { return static_cast(cpMomentForSegment(mass, cpv(m_first.x, m_first.y), cpv(m_second.x, m_second.y), m_thickness)); @@ -164,8 +296,12 @@ 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)); + cpShape* segment = cpSegmentShapeNew(body->GetHandle(), cpv(m_first.x, m_first.y), cpv(m_second.x, m_second.y), m_thickness); + cpSegmentShapeSetNeighbors(segment, cpv(m_firstNeighbor.x, m_firstNeighbor.y), cpv(m_secondNeighbor.x, m_secondNeighbor.y)); + + shapes->push_back(segment); + return 1; } } diff --git a/src/Nazara/Physics2D/Constraint2D.cpp b/src/Nazara/Physics2D/Constraint2D.cpp index a17119545..e4ad5e407 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.value, 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.value); } 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.value); } 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.value, maxAngle.value)) { } - 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.value); } - void RotaryLimitConstraint2D::SetMinAngle(float minAngle) + void RotaryLimitConstraint2D::SetMinAngle(const RadianAnglef& minAngle) { - cpRotaryLimitJointSetMin(m_constraint, minAngle); + cpRotaryLimitJointSetMin(m_constraint, minAngle.value); } diff --git a/src/Nazara/Physics2D/PhysWorld2D.cpp b/src/Nazara/Physics2D/PhysWorld2D.cpp index ea648b197..0296558ec 100644 --- a/src/Nazara/Physics2D/PhysWorld2D.cpp +++ b/src/Nazara/Physics2D/PhysWorld2D.cpp @@ -3,7 +3,8 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include -#include +#include +#include #include #include @@ -25,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) @@ -44,7 +45,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)); @@ -204,6 +205,27 @@ namespace Nz } } + void PhysWorld2D::RaycastQuery(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, const std::function& callback) + { + using CallbackType = const std::function; + + auto cpCallback = [](cpShape* shape, cpVect point, cpVect normal, cpFloat alpha, void* data) + { + CallbackType& callback = *static_cast(data); + + RaycastHit hitInfo; + hitInfo.fraction = float(alpha); + hitInfo.hitNormal.Set(Nz::Vector2(normal.x, normal.y)); + hitInfo.hitPos.Set(Nz::Vector2(point.x, point.y)); + hitInfo.nearestBody = static_cast(cpShapeGetUserData(shape)); + + callback(hitInfo); + }; + + cpShapeFilter filter = cpShapeFilterNew(collisionGroup, categoryMask, collisionMask); + cpSpaceSegmentQuery(m_handle, { from.x, from.y }, { to.x, to.y }, radius, filter, cpCallback, const_cast(static_cast(&callback))); + } + bool PhysWorld2D::RaycastQuery(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector* hitInfos) { using ResultType = decltype(hitInfos); @@ -258,6 +280,20 @@ namespace Nz } } + void PhysWorld2D::RegionQuery(const Nz::Rectf& boundingBox, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, const std::function& callback) + { + using CallbackType = const std::function; + + auto cpCallback = [](cpShape* shape, void* data) + { + CallbackType& callback = *static_cast(data); + callback(static_cast(cpShapeGetUserData(shape))); + }; + + cpShapeFilter filter = cpShapeFilterNew(collisionGroup, categoryMask, collisionMask); + cpSpaceBBQuery(m_handle, cpBBNew(boundingBox.x, boundingBox.y, boundingBox.x + boundingBox.width, boundingBox.y + boundingBox.height), filter, cpCallback, const_cast(static_cast(&callback))); + } + void PhysWorld2D::RegionQuery(const Nz::Rectf& boundingBox, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector* bodies) { using ResultType = decltype(bodies); @@ -272,14 +308,14 @@ namespace Nz cpSpaceBBQuery(m_handle, cpBBNew(boundingBox.x, boundingBox.y, boundingBox.x + boundingBox.width, boundingBox.y + boundingBox.height), filter, callback, bodies); } - void PhysWorld2D::RegisterCallbacks(unsigned int collisionId, const Callback& callbacks) + void PhysWorld2D::RegisterCallbacks(unsigned int collisionId, Callback callbacks) { - InitCallbacks(cpSpaceAddWildcardHandler(m_handle, collisionId), callbacks); + InitCallbacks(cpSpaceAddWildcardHandler(m_handle, collisionId), std::move(callbacks)); } - void PhysWorld2D::RegisterCallbacks(unsigned int collisionIdA, unsigned int collisionIdB, const Callback& callbacks) + void PhysWorld2D::RegisterCallbacks(unsigned int collisionIdA, unsigned int collisionIdB, Callback callbacks) { - InitCallbacks(cpSpaceAddCollisionHandler(m_handle, collisionIdA, collisionIdB), callbacks); + InitCallbacks(cpSpaceAddCollisionHandler(m_handle, collisionIdA, collisionIdB), std::move(callbacks)); } void PhysWorld2D::SetDamping(float dampingValue) @@ -302,6 +338,14 @@ namespace Nz m_maxStepCount = maxStepCount; } + void PhysWorld2D::SetSleepTime(float sleepTime) + { + if (sleepTime > 0) + cpSpaceSetSleepTimeThreshold(m_handle, cpFloat(sleepTime)); + else + cpSpaceSetSleepTimeThreshold(m_handle, std::numeric_limits::infinity()); + } + void PhysWorld2D::SetStepSize(float stepSize) { m_stepSize = stepSize; @@ -340,15 +384,20 @@ namespace Nz cpSpaceUseSpatialHash(m_handle, cpFloat(cellSize), int(entityCount)); } - void PhysWorld2D::InitCallbacks(cpCollisionHandler* handler, const Callback& callbacks) + void PhysWorld2D::InitCallbacks(cpCollisionHandler* handler, Callback callbacks) { - auto it = m_callbacks.emplace(handler, std::make_unique(callbacks)).first; + auto it = m_callbacks.find(handler); + if (it == m_callbacks.end()) + it = m_callbacks.emplace(handler, std::make_unique(std::move(callbacks))).first; + else + it->second = std::make_unique(std::move(callbacks)); - handler->userData = it->second.get(); + Callback* callbackFunctions = it->second.get(); + handler->userData = callbackFunctions; - if (callbacks.startCallback) + if (callbackFunctions->startCallback) { - handler->beginFunc = [](cpArbiter* arb, cpSpace* space, void *data) -> cpBool + handler->beginFunc = [](cpArbiter* arb, cpSpace* space, void* data) -> cpBool { cpBody* firstBody; cpBody* secondBody; @@ -358,41 +407,26 @@ 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)) - { - cpBool retA = cpArbiterCallWildcardBeginA(arb, space); - cpBool retB = cpArbiterCallWildcardBeginB(arb, space); - return retA && retB; - } + if (customCallbacks->startCallback(*world, arbiter, *firstRigidBody, *secondRigidBody, customCallbacks->userdata)) + return cpTrue; else return cpFalse; }; } - - if (callbacks.endCallback) + else { - handler->separateFunc = [](cpArbiter* arb, cpSpace* space, void *data) + handler->beginFunc = [](cpArbiter* arb, cpSpace* space, void*) -> cpBool { - cpBody* firstBody; - cpBody* secondBody; - cpArbiterGetBodies(arb, &firstBody, &secondBody); - - PhysWorld2D* world = static_cast(cpSpaceGetUserData(space)); - RigidBody2D* firstRigidBody = static_cast(cpBodyGetUserData(firstBody)); - RigidBody2D* secondRigidBody = static_cast(cpBodyGetUserData(secondBody)); - - const Callback* customCallbacks = static_cast(data); - customCallbacks->endCallback(*world, *firstRigidBody, *secondRigidBody, customCallbacks->userdata); - - cpArbiterCallWildcardSeparateA(arb, space); - cpArbiterCallWildcardSeparateB(arb, space); + return cpTrue; }; } - if (callbacks.preSolveCallback) + if (callbackFunctions->endCallback) { - handler->preSolveFunc = [](cpArbiter* arb, cpSpace* space, void *data) -> cpBool + handler->separateFunc = [](cpArbiter* arb, cpSpace* space, void* data) { cpBody* firstBody; cpBody* secondBody; @@ -402,19 +436,49 @@ 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)) - { - cpBool retA = cpArbiterCallWildcardPreSolveA(arb, space); - cpBool retB = cpArbiterCallWildcardPreSolveB(arb, space); - return retA && retB; - } + customCallbacks->endCallback(*world, arbiter, *firstRigidBody, *secondRigidBody, customCallbacks->userdata); + }; + } + else + { + handler->separateFunc = [](cpArbiter* arb, cpSpace* space, void*) + { + }; + } + + if (callbackFunctions->preSolveCallback) + { + handler->preSolveFunc = [](cpArbiter* arb, cpSpace* space, void* data) -> cpBool + { + cpBody* firstBody; + cpBody* secondBody; + cpArbiterGetBodies(arb, &firstBody, &secondBody); + + PhysWorld2D* world = static_cast(cpSpaceGetUserData(space)); + 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, arbiter, *firstRigidBody, *secondRigidBody, customCallbacks->userdata)) + return cpTrue; else return cpFalse; }; } + else + { + handler->preSolveFunc = [](cpArbiter* arb, cpSpace* space, void* data) -> cpBool + { + return cpTrue; + }; + } - if (callbacks.postSolveCallback) + if (callbackFunctions->postSolveCallback) { handler->postSolveFunc = [](cpArbiter* arb, cpSpace* space, void *data) { @@ -426,11 +490,16 @@ namespace Nz RigidBody2D* firstRigidBody = static_cast(cpBodyGetUserData(firstBody)); RigidBody2D* secondRigidBody = static_cast(cpBodyGetUserData(secondBody)); - const Callback* customCallbacks = static_cast(data); - customCallbacks->postSolveCallback(*world, *firstRigidBody, *secondRigidBody, customCallbacks->userdata); + Arbiter2D arbiter(arb); - cpArbiterCallWildcardPostSolveA(arb, space); - cpArbiterCallWildcardPostSolveB(arb, space); + const Callback* customCallbacks = static_cast(data); + customCallbacks->postSolveCallback(*world, arbiter, *firstRigidBody, *secondRigidBody, customCallbacks->userdata); + }; + } + else + { + handler->postSolveFunc = [](cpArbiter* arb, cpSpace* space, void* data) + { }; } } diff --git a/src/Nazara/Physics2D/RigidBody2D.cpp b/src/Nazara/Physics2D/RigidBody2D.cpp index c2cb31c4f..1e3835bdd 100644 --- a/src/Nazara/Physics2D/RigidBody2D.cpp +++ b/src/Nazara/Physics2D/RigidBody2D.cpp @@ -3,6 +3,7 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include +#include #include #include #include @@ -18,6 +19,7 @@ namespace Nz } RigidBody2D::RigidBody2D(PhysWorld2D* world, float mass, Collider2DRef geom) : + m_positionOffset(Vector2f::Zero()), m_geom(), m_userData(nullptr), m_world(world), @@ -30,10 +32,11 @@ namespace Nz NazaraAssert(m_world, "Invalid world"); m_handle = Create(mass); - SetGeom(geom); + SetGeom(std::move(geom)); } RigidBody2D::RigidBody2D(const RigidBody2D& object) : + m_positionOffset(object.m_positionOffset), m_geom(object.m_geom), m_userData(object.m_userData), m_world(object.m_world), @@ -47,17 +50,21 @@ namespace Nz NazaraAssert(m_geom, "Invalid geometry"); m_handle = Create(m_mass, object.GetMomentOfInertia()); - SetGeom(object.GetGeom(), false); + SetGeom(object.GetGeom(), false, false); 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) : + RigidBody2D::RigidBody2D(RigidBody2D&& object) noexcept : OnRigidBody2DMove(std::move(object.OnRigidBody2DMove)), OnRigidBody2DRelease(std::move(object.OnRigidBody2DRelease)), + m_positionOffset(std::move(object.m_positionOffset)), m_shapes(std::move(object.m_shapes)), m_geom(std::move(object.m_geom)), m_handle(object.m_handle), @@ -87,7 +94,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) @@ -102,11 +109,11 @@ namespace Nz cpBodyApplyForceAtLocalPoint(m_handle, cpv(force.x, force.y), cpv(point.x, point.y)); break; } -} + } 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) @@ -123,9 +130,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 @@ -153,7 +160,7 @@ namespace Nz if (closestPoint) *closestPoint = closest; - if (minDistance) + if (closestDistance) *closestDistance = minDistance; return true; @@ -172,6 +179,30 @@ namespace Nz } } + void RigidBody2D::ForEachArbiter(std::function callback) + { + using CallbackType = decltype(callback); + + auto RealCallback = [](cpBody* body, cpArbiter* arbiter, void* data) + { + CallbackType& cb = *static_cast(data); + + Arbiter2D nzArbiter(arbiter); + cb(nzArbiter); + }; + + cpBodyEachArbiter(m_handle, RealCallback, &callback); + } + + void RigidBody2D::ForceSleep() + { + m_world->RegisterPostStep(this, [](Nz::RigidBody2D* body) + { + if (cpBodyGetType(body->GetHandle()) == CP_BODY_TYPE_DYNAMIC) + cpBodySleep(body->GetHandle()); + }); + } + Rectf RigidBody2D::GetAABB() const { if (m_shapes.empty()) @@ -185,9 +216,21 @@ 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 FromRadians(static_cast(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 @@ -205,37 +248,37 @@ 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 { - cpVect pos = cpBodyGetPosition(m_handle); + cpVect pos = cpBodyLocalToWorld(m_handle, cpv(-m_positionOffset.x, -m_positionOffset.y)); 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 @@ -247,6 +290,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; @@ -258,6 +308,11 @@ namespace Nz return Vector2f(static_cast(vel.x), static_cast(vel.y)); } + const RigidBody2D::VelocityFunc& RigidBody2D::GetVelocityFunction() const + { + return m_velocityFunc; + } + PhysWorld2D* RigidBody2D::GetWorld() const { return m_world; @@ -283,12 +338,43 @@ namespace Nz return m_isStatic; } - void RigidBody2D::SetAngularVelocity(float angularVelocity) + void RigidBody2D::ResetVelocityFunction() { - cpBodySetAngularVelocity(m_handle, ToRadians(angularVelocity)); + m_handle->velocity_func = cpBodyUpdateVelocity; } - void RigidBody2D::SetGeom(Collider2DRef geom, bool recomputeMoment) + void RigidBody2D::SetAngularVelocity(const RadianAnglef& angularVelocity) + { + cpBodySetAngularVelocity(m_handle, angularVelocity.value); + } + + 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, bool recomputeMassCenter) { // We have no public way of getting rid of an existing geom without removing the whole body // So let's save some attributes of the body, destroy it and rebuild it @@ -311,7 +397,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) @@ -325,6 +411,9 @@ namespace Nz if (!IsStatic() && !IsKinematic()) cpBodySetMoment(m_handle, m_geom->ComputeMomentOfInertia(m_mass)); } + + if (recomputeMassCenter) + SetMassCenter(m_geom->ComputeCenterOfMass()); } void RigidBody2D::SetMass(float mass, bool recomputeMoment) @@ -362,9 +451,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) @@ -378,7 +479,8 @@ namespace Nz void RigidBody2D::SetPosition(const Vector2f& position) { - cpBodySetPosition(m_handle, cpv(position.x, position.y)); + // Use cpTransformVect to rotate/scale the position offset + cpBodySetPosition(m_handle, cpvadd(cpv(position.x, position.y), cpTransformVect(m_handle->transform, cpv(m_positionOffset.x, m_positionOffset.y)))); if (m_isStatic) { m_world->RegisterPostStep(this, [](Nz::RigidBody2D* body) @@ -388,9 +490,16 @@ namespace Nz } } - void RigidBody2D::SetRotation(float rotation) + void RigidBody2D::SetPositionOffset(const Vector2f& offset) { - cpBodySetAngle(m_handle, ToRadians(rotation)); + Nz::Vector2f position = GetPosition(); + m_positionOffset = offset; + SetPosition(position); + } + + void RigidBody2D::SetRotation(const RadianAnglef& rotation) + { + cpBodySetAngle(m_handle, rotation.value); if (m_isStatic) { m_world->RegisterPostStep(this, [](Nz::RigidBody2D* body) @@ -400,6 +509,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; @@ -427,6 +549,41 @@ namespace Nz cpBodySetVelocity(m_handle, cpv(velocity.x, velocity.y)); } + void RigidBody2D::SetVelocityFunction(VelocityFunc velocityFunc) + { + m_velocityFunc = std::move(velocityFunc); + + if (m_velocityFunc) + { + m_handle->velocity_func = [](cpBody* body, cpVect gravity, cpFloat damping, cpFloat dt) + { + RigidBody2D* rigidBody = static_cast(cpBodyGetUserData(body)); + const auto& callback = rigidBody->GetVelocityFunction(); + assert(callback); + + callback(*rigidBody, Nz::Vector2f(float(gravity.x), float(gravity.y)), float(damping), float(dt)); + }; + } + else + m_handle->velocity_func = cpBodyUpdateVelocity; + } + + void RigidBody2D::UpdateVelocity(const Nz::Vector2f & gravity, float damping, float deltaTime) + { + cpBodyUpdateVelocity(m_handle, cpv(gravity.x, gravity.y), damping, deltaTime); + } + + void RigidBody2D::Wakeup() + { + m_world->RegisterPostStep(this, [](Nz::RigidBody2D* body) + { + if (cpBodyGetType(body->GetHandle()) != CP_BODY_TYPE_STATIC) + cpBodyActivate(body->GetHandle()); + else + cpBodyActivateStatic(body->GetHandle(), nullptr); + }); + } + RigidBody2D& RigidBody2D::operator=(const RigidBody2D& object) { RigidBody2D physObj(object); @@ -447,8 +604,10 @@ namespace Nz m_geom = std::move(object.m_geom); m_gravityFactor = object.m_gravityFactor; m_mass = object.m_mass; + m_positionOffset = object.m_positionOffset; m_shapes = std::move(object.m_shapes); m_userData = object.m_userData; + m_velocityFunc = std::move(object.m_velocityFunc); m_world = object.m_world; cpBodySetUserData(m_handle, this); @@ -526,13 +685,22 @@ namespace Nz void RigidBody2D::CopyBodyData(cpBody* from, cpBody* to) { + cpBodySetCenterOfGravity(to, cpBodyGetCenterOfGravity(from)); + cpBodySetAngle(to, cpBodyGetAngle(from)); cpBodySetAngularVelocity(to, cpBodyGetAngularVelocity(from)); - cpBodySetCenterOfGravity(to, cpBodyGetCenterOfGravity(from)); cpBodySetForce(to, cpBodyGetForce(from)); cpBodySetPosition(to, cpBodyGetPosition(from)); cpBodySetTorque(to, cpBodyGetTorque(from)); cpBodySetVelocity(to, cpBodyGetVelocity(from)); + + cpBodySetType(to, cpBodyGetType(from)); } + void RigidBody2D::CopyShapeData(cpShape* from, cpShape* to) + { + cpShapeSetElasticity(to, cpShapeGetElasticity(from)); + cpShapeSetFriction(to, cpShapeGetFriction(from)); + cpShapeSetSurfaceVelocity(to, cpShapeGetSurfaceVelocity(from)); + } } diff --git a/src/Nazara/Physics3D/Collider3D.cpp b/src/Nazara/Physics3D/Collider3D.cpp index 4dc2f6821..be7ceb6be 100644 --- a/src/Nazara/Physics3D/Collider3D.cpp +++ b/src/Nazara/Physics3D/Collider3D.cpp @@ -114,12 +114,14 @@ namespace Nz return volume; } - void Collider3D::ForEachPolygon(const std::function& callback) const + void Collider3D::ForEachPolygon(const std::function& callback) const { auto newtCallback = [](void* const userData, int vertexCount, const dFloat* const faceArray, int /*faceId*/) { + static_assert(sizeof(Vector3f) == 3 * sizeof(float), "Vector3 is expected to contain 3 floats without padding"); + const auto& cb = *static_cast>(userData); - cb(faceArray, vertexCount); + cb(reinterpret_cast(faceArray), vertexCount); }; // Check for existing collision handles, and create a temporary one if none is available diff --git a/src/Nazara/Physics3D/PhysWorld3D.cpp b/src/Nazara/Physics3D/PhysWorld3D.cpp index e85ddcf0b..bce1f5b6d 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 @@ -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"); @@ -173,13 +183,9 @@ 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)); - 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/src/Nazara/Physics3D/RigidBody3D.cpp b/src/Nazara/Physics3D/RigidBody3D.cpp index ea6e58621..c18055f56 100644 --- a/src/Nazara/Physics3D/RigidBody3D.cpp +++ b/src/Nazara/Physics3D/RigidBody3D.cpp @@ -444,6 +444,6 @@ namespace Nz NazaraUnused(threadIndex); RigidBody3D* me = static_cast(NewtonBodyGetUserData(body)); - me->m_matrix.Set(matrix); + me->m_matrix = matrix; } } diff --git a/src/Nazara/Platform/Win32/CursorImpl.cpp b/src/Nazara/Platform/Win32/CursorImpl.cpp index 399320c59..48d960f92 100644 --- a/src/Nazara/Platform/Win32/CursorImpl.cpp +++ b/src/Nazara/Platform/Win32/CursorImpl.cpp @@ -48,7 +48,7 @@ namespace Nz bool CursorImpl::Create(SystemCursor cursor) { - if (cursor != SystemCursor_Move) + if (cursor != SystemCursor_None) m_cursor = static_cast(LoadImage(nullptr, s_systemCursorIds[cursor], IMAGE_CURSOR, 0, 0, LR_SHARED)); else m_cursor = nullptr; diff --git a/src/Nazara/Platform/Win32/InputImpl.cpp b/src/Nazara/Platform/Win32/InputImpl.cpp index f44594fa4..79a8b6a3c 100644 --- a/src/Nazara/Platform/Win32/InputImpl.cpp +++ b/src/Nazara/Platform/Win32/InputImpl.cpp @@ -292,5 +292,5 @@ namespace Nz } else NazaraError("Invalid window handle"); - } + } } diff --git a/src/Nazara/Platform/Win32/WindowImpl.cpp b/src/Nazara/Platform/Win32/WindowImpl.cpp index 07f952e96..6ee3365ac 100644 --- a/src/Nazara/Platform/Win32/WindowImpl.cpp +++ b/src/Nazara/Platform/Win32/WindowImpl.cpp @@ -53,6 +53,7 @@ namespace Nz m_smoothScrolling(false), m_scrolling(0) { + m_cursor = static_cast(LoadImage(nullptr, IDC_ARROW, IMAGE_CURSOR, 0, 0, LR_SHARED)); } bool WindowImpl::Create(const VideoMode& mode, const String& title, WindowStyleFlags style) @@ -70,8 +71,8 @@ namespace Nz win32Mode.dmBitsPerPel = mode.bitsPerPixel; win32Mode.dmPelsHeight = mode.height; win32Mode.dmPelsWidth = mode.width; - win32Mode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; - win32Mode.dmSize = sizeof(DEVMODE); + win32Mode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; + win32Mode.dmSize = sizeof(DEVMODE); if (ChangeDisplaySettings(&win32Mode, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL) { @@ -269,6 +270,11 @@ namespace Nz return IsWindowVisible(m_handle) == TRUE; } + void WindowImpl::RefreshCursor() + { + ::SetCursor(m_cursor); + } + void WindowImpl::ProcessEvents(bool block) { if (m_ownsWindow) @@ -289,7 +295,8 @@ namespace Nz { m_cursor = cursor.m_impl->GetCursor(); - ::SetCursor(m_cursor); + if (HasFocus()) + RefreshCursor(); } void WindowImpl::SetEventListener(bool listener) @@ -403,12 +410,12 @@ namespace Nz break; - case WM_SETCURSOR: + /*case WM_SETCURSOR: // http://msdn.microsoft.com/en-us/library/windows/desktop/ms648382(v=vs.85).aspx if (LOWORD(lParam) == HTCLIENT) ::SetCursor(m_cursor); - break; + break;*/ case WM_WINDOWPOSCHANGING: { @@ -653,7 +660,7 @@ namespace Nz { m_mouseInside = true; - // On créé un évènement pour être informé de la sortie de la fenêtre + // Track mouse event to be notified when mouse leaves window TRACKMOUSEEVENT mouseEvent; mouseEvent.cbSize = sizeof(TRACKMOUSEEVENT); mouseEvent.dwFlags = TME_LEAVE; @@ -705,7 +712,10 @@ namespace Nz { WindowEvent event; event.type = WindowEventType_MouseWheelMoved; - event.mouseWheel.delta = static_cast(GET_WHEEL_DELTA_WPARAM(wParam))/WHEEL_DELTA; + event.mouseWheel.delta = static_cast(GET_WHEEL_DELTA_WPARAM(wParam)) / WHEEL_DELTA; + event.mouseWheel.x = GET_X_LPARAM(lParam); + event.mouseWheel.y = GET_Y_LPARAM(lParam); + m_parent->PushEvent(event); } else @@ -715,7 +725,10 @@ namespace Nz { WindowEvent event; event.type = WindowEventType_MouseWheelMoved; - event.mouseWheel.delta = static_cast(m_scrolling/WHEEL_DELTA); + event.mouseWheel.delta = static_cast(m_scrolling / WHEEL_DELTA); + event.mouseWheel.x = GET_X_LPARAM(lParam); + event.mouseWheel.y = GET_Y_LPARAM(lParam); + m_parent->PushEvent(event); m_scrolling %= WHEEL_DELTA; diff --git a/src/Nazara/Platform/Win32/WindowImpl.hpp b/src/Nazara/Platform/Win32/WindowImpl.hpp index b9d18dcd9..e05a86fdf 100644 --- a/src/Nazara/Platform/Win32/WindowImpl.hpp +++ b/src/Nazara/Platform/Win32/WindowImpl.hpp @@ -58,6 +58,8 @@ namespace Nz bool IsMinimized() const; bool IsVisible() const; + void RefreshCursor(); + void ProcessEvents(bool block); void SetCursor(const Cursor& cursor); diff --git a/src/Nazara/Platform/Window.cpp b/src/Nazara/Platform/Window.cpp index 69758cdb0..9ce743ad4 100644 --- a/src/Nazara/Platform/Window.cpp +++ b/src/Nazara/Platform/Window.cpp @@ -33,11 +33,28 @@ namespace Nz m_eventPolling(false), m_waitForEvent(false) { - m_cursorController.OnCursorUpdated.Connect([this](const CursorController*, const CursorRef& cursor) - { - if (IsValid()) - SetCursor(cursor); - }); + ConnectSlots(); + } + + Window::Window(Window&& window) : + m_events(std::move(window.m_events)), + m_pendingEvents(std::move(window.m_pendingEvents)), + m_eventCondition(std::move(window.m_eventCondition)), + m_cursorController(std::move(window.m_cursorController)), + m_cursor(std::move(window.m_cursor)), + m_eventHandler(std::move(window.m_eventHandler)), + m_icon(std::move(window.m_icon)), + m_eventMutex(std::move(window.m_eventMutex)), + m_eventConditionMutex(std::move(window.m_eventConditionMutex)), + m_asyncWindow(window.m_asyncWindow), + m_closed(window.m_asyncWindow), + m_closeOnQuit(window.m_closeOnQuit), + m_eventPolling(window.m_eventPolling), + m_ownsWindow(window.m_asyncWindow), + m_waitForEvent(window.m_waitForEvent) + { + window.DisconnectSlots(); + ConnectSlots(); } Window::~Window() @@ -105,8 +122,6 @@ namespace Nz m_impl->SetMinimumSize(-1, -1); m_impl->SetVisible(true); - SetCursor(Cursor::Get(SystemCursor_Default)); - if (opened) m_impl->SetPosition(position.x, position.y); @@ -582,6 +597,30 @@ namespace Nz } } + Window& Window::operator=(Window&& window) + { + m_events = std::move(window.m_events); + m_pendingEvents = std::move(window.m_pendingEvents); + m_eventCondition = std::move(window.m_eventCondition); + m_cursorController = std::move(window.m_cursorController); + m_cursor = std::move(window.m_cursor); + m_eventHandler = std::move(window.m_eventHandler); + m_icon = std::move(window.m_icon); + m_eventMutex = std::move(window.m_eventMutex); + m_eventConditionMutex = std::move(window.m_eventConditionMutex); + m_asyncWindow = window.m_asyncWindow; + m_closed = window.m_asyncWindow; + m_closeOnQuit = window.m_closeOnQuit; + m_eventPolling = window.m_eventPolling; + m_ownsWindow = window.m_asyncWindow; + m_waitForEvent = window.m_waitForEvent; + + window.DisconnectSlots(); + ConnectSlots(); + + return *this; + } + bool Window::OnWindowCreated() { return true; @@ -595,6 +634,20 @@ namespace Nz { } + void Window::ConnectSlots() + { + m_cursorUpdateSlot.Connect(m_cursorController.OnCursorUpdated, [this](const CursorController*, const CursorRef& cursor) + { + if (IsValid()) + SetCursor(cursor); + }); + } + + void Window::DisconnectSlots() + { + m_cursorUpdateSlot.Disconnect(); + } + void Window::IgnoreNextMouseEvent(int mouseX, int mouseY) const { #if NAZARA_PLATFORM_SAFE @@ -608,6 +661,34 @@ namespace Nz m_impl->IgnoreNextMouseEvent(mouseX, mouseY); } + void Window::HandleEvent(const WindowEvent& event) + { + if (m_eventPolling) + m_events.push(event); + + m_eventHandler.Dispatch(event); + + switch (event.type) + { + case WindowEventType_MouseEntered: + m_impl->RefreshCursor(); + break; + + case WindowEventType_Resized: + OnWindowResized(); + break; + + case WindowEventType_Quit: + if (m_closeOnQuit) + Close(); + + break; + + default: + break; + } + } + bool Window::Initialize() { return WindowImpl::Initialize(); diff --git a/src/Nazara/Platform/X11/WindowImpl.cpp b/src/Nazara/Platform/X11/WindowImpl.cpp index 4a5f8208e..abf2db675 100644 --- a/src/Nazara/Platform/X11/WindowImpl.cpp +++ b/src/Nazara/Platform/X11/WindowImpl.cpp @@ -412,6 +412,10 @@ namespace Nz } } + void WindowImpl::RefreshCursor() + { + } + void WindowImpl::SetCursor(const Cursor& cursor) { xcb_cursor_t cursorImpl = cursor.m_impl->GetCursor(); @@ -1229,6 +1233,8 @@ namespace Nz { event.type = Nz::WindowEventType_MouseWheelMoved; event.mouseWheel.delta = (buttonReleaseEvent->detail == XCB_BUTTON_INDEX_4) ? 1 : -1; + event.mouseWheel.x = buttonReleaseEvent->event_x; + event.mouseWheel.y = buttonReleaseEvent->event_y; break; } default: diff --git a/src/Nazara/Platform/X11/WindowImpl.hpp b/src/Nazara/Platform/X11/WindowImpl.hpp index d9e9d8652..ecf5e0233 100644 --- a/src/Nazara/Platform/X11/WindowImpl.hpp +++ b/src/Nazara/Platform/X11/WindowImpl.hpp @@ -58,6 +58,8 @@ namespace Nz bool IsMinimized() const; bool IsVisible() const; + void RefreshCursor(); + void ProcessEvents(bool block); void SetCursor(const Cursor& cursor); diff --git a/src/Nazara/Renderer/GlslWriter.cpp b/src/Nazara/Renderer/GlslWriter.cpp index 06ebc251d..3d023993c 100644 --- a/src/Nazara/Renderer/GlslWriter.cpp +++ b/src/Nazara/Renderer/GlslWriter.cpp @@ -233,19 +233,19 @@ namespace Nz break; case ShaderAst::ExpressionType::Float1: - Append(String::Format("%F", node.values.vec1)); + Append(String::Number(node.values.vec1)); break; case ShaderAst::ExpressionType::Float2: - Append(String::Format("vec2(%F, %F)", node.values.vec2.x, node.values.vec2.y)); + Append("vec2(" + String::Number(node.values.vec2.x) + ", " + String::Number(node.values.vec2.y) + ")"); break; case ShaderAst::ExpressionType::Float3: - Append(String::Format("vec3(%F, %F, %F)", node.values.vec3.x, node.values.vec3.y, node.values.vec3.z)); + Append("vec3(" + String::Number(node.values.vec3.x) + ", " + String::Number(node.values.vec3.y) + ", " + String::Number(node.values.vec3.z) + ")"); break; case ShaderAst::ExpressionType::Float4: - Append(String::Format("vec4(%F, %F, %F, %F)", node.values.vec4.x, node.values.vec4.y, node.values.vec4.z, node.values.vec4.w)); + Append("vec4(" + String::Number(node.values.vec4.x) + ", " + String::Number(node.values.vec4.y) + ", " + String::Number(node.values.vec4.z) + ", " + String::Number(node.values.vec4.z) + ")"); break; default: 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..a61311fb0 100644 --- a/src/Nazara/Utility/Font.cpp +++ b/src/Nazara/Utility/Font.cpp @@ -13,8 +13,8 @@ namespace Nz { namespace { - const UInt8 r_cabinRegular[] = { - #include + const UInt8 r_sansationRegular[] = { + #include }; } @@ -109,7 +109,7 @@ namespace Nz } } - bool Font::ExtractGlyph(unsigned int characterSize, char32_t character, UInt32 style, FontGlyph* glyph) const + bool Font::ExtractGlyph(unsigned int characterSize, char32_t character, TextStyleFlags style, float outlineThickness, FontGlyph* glyph) const { #if NAZARA_UTILITY_SAFE if (!IsValid()) @@ -119,7 +119,7 @@ namespace Nz } #endif - return m_data->ExtractGlyph(characterSize, character, style, glyph); + return m_data->ExtractGlyph(characterSize, character, style, outlineThickness, glyph); } const std::shared_ptr& Font::GetAtlas() const @@ -127,9 +127,9 @@ namespace Nz return m_atlas; } - std::size_t Font::GetCachedGlyphCount(unsigned int characterSize, UInt32 style) const + std::size_t Font::GetCachedGlyphCount(unsigned int characterSize, TextStyleFlags style, float outlineThickness) const { - UInt64 key = ComputeKey(characterSize, style); + UInt64 key = ComputeKey(characterSize, style, outlineThickness); auto it = m_glyphes.find(key); if (it == m_glyphes.end()) return 0; @@ -169,28 +169,27 @@ namespace Nz } #endif - // On utilise un cache car la méthode interne QueryKerning peut se révéler coûteuse (car pouvant induire un changement de taille) + // Use a cache as QueryKerning may be costly (may induce an internal size change) auto& map = m_kerningCache[characterSize]; - UInt64 key = (static_cast(first) << 32) | second; // Combinaison de deux caractères 32 bits dans un nombre 64 bits + UInt64 key = (static_cast(first) << 32) | second; auto it = map.find(key); if (it == map.end()) { - // Absent du cache: on va demander l'information à la police int kerning = m_data->QueryKerning(characterSize, first, second); map.insert(std::make_pair(key, kerning)); return kerning; } else - return it->second; // Présent dans le cache, tout va bien + return it->second; } - const Font::Glyph& Font::GetGlyph(unsigned int characterSize, UInt32 style, char32_t character) const + const Font::Glyph& Font::GetGlyph(unsigned int characterSize, TextStyleFlags style, float outlineThickness, char32_t character) const { - UInt64 key = ComputeKey(characterSize, style); - return PrecacheGlyph(m_glyphes[key], characterSize, style, character); + UInt64 key = ComputeKey(characterSize, style, outlineThickness); + return PrecacheGlyph(m_glyphes[key], characterSize, style, outlineThickness, character); } unsigned int Font::GetGlyphBorder() const @@ -224,11 +223,11 @@ namespace Nz sizeInfo.underlineThickness = m_data->QueryUnderlineThickness(characterSize); FontGlyph glyph; - if (m_data->ExtractGlyph(characterSize, ' ', TextStyle_Regular, &glyph)) + if (m_data->ExtractGlyph(characterSize, ' ', TextStyle_Regular, 0.f, &glyph)) sizeInfo.spaceAdvance = glyph.advance; else { - NazaraWarning("Failed to extract space character from font, using half the size"); + NazaraWarning("Failed to extract space character from font, using half the character size"); sizeInfo.spaceAdvance = characterSize/2; } @@ -256,13 +255,13 @@ namespace Nz return m_data != nullptr; } - bool Font::Precache(unsigned int characterSize, UInt32 style, char32_t character) const + bool Font::Precache(unsigned int characterSize, TextStyleFlags style, float outlineThickness, char32_t character) const { - UInt64 key = ComputeKey(characterSize, style); - return PrecacheGlyph(m_glyphes[key], characterSize, style, character).valid; + UInt64 key = ComputeKey(characterSize, style, outlineThickness); + return PrecacheGlyph(m_glyphes[key], characterSize, style, outlineThickness, character).valid; } - bool Font::Precache(unsigned int characterSize, UInt32 style, const String& characterSet) const + bool Font::Precache(unsigned int characterSize, TextStyleFlags style, float outlineThickness, const String& characterSet) const { ///TODO: Itération UTF-8 => UTF-32 sans allocation de buffer (Exposer utf8cpp ?) std::u32string set = characterSet.GetUtf32String(); @@ -272,29 +271,14 @@ namespace Nz return false; } - UInt64 key = ComputeKey(characterSize, style); + UInt64 key = ComputeKey(characterSize, style, outlineThickness); auto& glyphMap = m_glyphes[key]; for (char32_t character : set) - PrecacheGlyph(glyphMap, characterSize, style, character); + PrecacheGlyph(glyphMap, characterSize, style, outlineThickness, character); 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) @@ -332,13 +316,7 @@ namespace Nz { if (m_minimumStepSize != minimumStepSize) { - #if NAZARA_UTILITY_SAFE - if (minimumStepSize == 0) - { - NazaraError("Minimum step size cannot be zero as it implies division by zero"); - return; - } - #endif + NazaraAssert(minimumStepSize != 0, "Minimum step size cannot be zero"); m_minimumStepSize = minimumStepSize; ClearGlyphCache(); @@ -358,10 +336,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_sansationRegular, sizeof(r_sansationRegular)); + if (!s_defaultFont) NazaraError("Failed to open default font"); } @@ -378,6 +354,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; @@ -401,21 +392,21 @@ namespace Nz s_defaultMinimumStepSize = minimumStepSize; } - UInt64 Font::ComputeKey(unsigned int characterSize, UInt32 style) const + UInt64 Font::ComputeKey(unsigned int characterSize, TextStyleFlags style, float outlineThickness) const { - // On prend le pas en compte - UInt64 sizePart = static_cast((characterSize/m_minimumStepSize)*m_minimumStepSize); - - // Ainsi que le style (uniquement le gras et l'italique, les autres sont gérés par un TextDrawer) - UInt64 stylePart = 0; + // Adjust size to step size + UInt64 sizeStylePart = static_cast((characterSize/m_minimumStepSize)*m_minimumStepSize); + sizeStylePart = std::min(sizeStylePart, Nz::IntegralPow(2, 30)); //< 2^30 should be more than enough as a max size + sizeStylePart <<= 2; + // Store bold and italic flags (other style are handled directly by a TextDrawer) if (style & TextStyle_Bold) - stylePart |= TextStyle_Bold; + sizeStylePart |= 1 << 0; if (style & TextStyle_Italic) - stylePart |= TextStyle_Italic; + sizeStylePart |= 1 << 1; - return (stylePart << 32) | sizePart; + return (sizeStylePart << 32) | reinterpret_cast(outlineThickness); } void Font::OnAtlasCleared(const AbstractAtlas* atlas) @@ -473,13 +464,13 @@ namespace Nz NazaraError("Atlas has been released while in use"); } - const Font::Glyph& Font::PrecacheGlyph(GlyphMap& glyphMap, unsigned int characterSize, UInt32 style, char32_t character) const + const Font::Glyph& Font::PrecacheGlyph(GlyphMap& glyphMap, unsigned int characterSize, TextStyleFlags style, float outlineThickness, char32_t character) const { auto it = glyphMap.find(character); - if (it != glyphMap.end()) // Si le glyphe n'est pas déjà chargé + if (it != glyphMap.end()) return it->second; - Glyph& glyph = glyphMap[character]; // Insertion du glyphe + Glyph& glyph = glyphMap[character]; //< Insert a new glyph glyph.valid = false; #if NAZARA_UTILITY_SAFE @@ -490,11 +481,12 @@ namespace Nz } #endif - // On vérifie que le style demandé est supporté par la police (dans le cas contraire il devra être simulé au rendu) + // Check if requested style is supported by our font (otherwise it will need to be simulated) + glyph.fauxOutlineThickness = 0.f; glyph.requireFauxBold = false; glyph.requireFauxItalic = false; - UInt32 supportedStyle = style; + TextStyleFlags supportedStyle = style; if (style & TextStyle_Bold && !m_data->SupportsStyle(TextStyle_Bold)) { glyph.requireFauxBold = true; @@ -507,12 +499,18 @@ namespace Nz supportedStyle &= ~TextStyle_Italic; } - // Est-ce que la police supporte le style demandé ? - if (style == supportedStyle) + float supportedOutlineThickness = outlineThickness; + if (outlineThickness > 0.f && !m_data->SupportsOutline(outlineThickness)) + { + glyph.fauxOutlineThickness = supportedOutlineThickness; + supportedOutlineThickness = 0.f; + } + + // Does font support requested style? + if (style == supportedStyle && outlineThickness == supportedOutlineThickness) { - // On extrait le glyphe depuis la police FontGlyph fontGlyph; - if (ExtractGlyph(characterSize, character, style, &fontGlyph)) + if (ExtractGlyph(characterSize, character, style, outlineThickness, &fontGlyph)) { if (fontGlyph.image.IsValid()) { @@ -525,21 +523,20 @@ namespace Nz 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 + // Insert rectangle (if not empty) into our atlas + if (glyph.atlasRect.width > 0 && glyph.atlasRect.height > 0) { - // Bordure (pour éviter le débordement lors du filtrage) + // Add a small border to prevent GPU to sample another glyph pixel glyph.atlasRect.width += m_glyphBorder*2; glyph.atlasRect.height += m_glyphBorder*2; - // Insertion du rectangle dans l'atlas virtuel if (!m_atlas->Insert(fontGlyph.image, &glyph.atlasRect, &glyph.flipped, &glyph.layerIndex)) { NazaraError("Failed to insert glyph into atlas"); return glyph; } - // Compensation de la bordure (centrage du glyphe) + // Recenter and remove glyph border glyph.atlasRect.x += m_glyphBorder; glyph.atlasRect.y += m_glyphBorder; glyph.atlasRect.width -= m_glyphBorder*2; @@ -551,16 +548,13 @@ namespace Nz glyph.valid = true; } else - { NazaraWarning("Failed to extract glyph \"" + String::Unicode(character) + "\""); - } } else { - // La police ne supporte pas le style demandé, nous allons donc précharger le glyphe supportant le style "minimum" supporté - // et copier ses données - UInt64 newKey = ComputeKey(characterSize, supportedStyle); - const Glyph& referenceGlyph = PrecacheGlyph(m_glyphes[newKey], characterSize, supportedStyle, character); + // Font doesn't support request style, precache the minimal supported version and copy its data + UInt64 newKey = ComputeKey(characterSize, supportedStyle, supportedOutlineThickness); + const Glyph& referenceGlyph = PrecacheGlyph(m_glyphes[newKey], characterSize, supportedStyle, supportedOutlineThickness, character); if (referenceGlyph.valid) { glyph.aabb = referenceGlyph.aabb; 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..05814a903 100644 --- a/src/Nazara/Utility/Formats/FreeTypeLoader.cpp +++ b/src/Nazara/Utility/Formats/FreeTypeLoader.cpp @@ -6,7 +6,9 @@ #include #include FT_FREETYPE_H #include FT_BITMAP_H +#include FT_STROKER_H #include FT_OUTLINE_H +#include #include #include #include @@ -24,8 +26,10 @@ namespace Nz class FreeTypeLibrary; FT_Library s_library; + FT_Stroker s_stroker; std::shared_ptr s_libraryOwner; - float s_invScaleFactor = 1.f / (1 << 6); // 1/64 + constexpr float s_scaleFactor = 1 << 6; + constexpr float s_invScaleFactor = 1.f / s_scaleFactor; extern "C" unsigned long FT_StreamRead(FT_Stream stream, unsigned long offset, unsigned char* buffer, unsigned long count) @@ -66,9 +70,23 @@ namespace Nz // pour ne libérer FreeType que lorsque plus personne ne l'utilise public: - FreeTypeLibrary() = default; + FreeTypeLibrary() + { + if (FT_Stroker_New(s_library, &s_stroker) != 0) + { + NazaraWarning("Failed to load FreeType stroker, outline will not be possible"); + s_stroker = nullptr; //< Just in case + } + } + ~FreeTypeLibrary() { + if (s_stroker) + { + FT_Stroker_Done(s_stroker); + s_stroker = nullptr; + } + FT_Done_FreeType(s_library); s_library = nullptr; } @@ -96,7 +114,7 @@ namespace Nz return FT_Open_Face(s_library, &m_args, -1, nullptr) == 0; } - bool ExtractGlyph(unsigned int characterSize, char32_t character, UInt32 style, FontGlyph* dst) override + bool ExtractGlyph(unsigned int characterSize, char32_t character, TextStyleFlags style, float outlineThickness, FontGlyph* dst) override { #ifdef NAZARA_DEBUG if (!dst) @@ -114,61 +132,85 @@ namespace Nz return false; } - FT_GlyphSlot& glyph = m_face->glyph; + FT_GlyphSlot glyphSlot = m_face->glyph; + + FT_Glyph glyph; + if (FT_Get_Glyph(glyphSlot, &glyph) != 0) + { + NazaraError("Failed to extract glyph"); + return false; + } + CallOnExit destroyGlyph([&]() { FT_Done_Glyph(glyph); }); const FT_Pos boldStrength = 2 << 6; - bool embolden = (style & TextStyle_Bold); + bool embolden = (style & TextStyle_Bold) != 0; + bool hasOutlineFormat = (glyph->format == FT_GLYPH_FORMAT_OUTLINE); dst->advance = (embolden) ? boldStrength >> 6 : 0; - if (embolden && glyph->format == FT_GLYPH_FORMAT_OUTLINE) + if (hasOutlineFormat) { - // http://www.freetype.org/freetype2/docs/reference/ft2-outline_processing.html#FT_Outline_Embolden - FT_Outline_Embolden(&glyph->outline, boldStrength); - embolden = false; + if (embolden) + { + // FT_Glyph can be casted to FT_OutlineGlyph if format is FT_GLYPH_FORMAT_OUTLINE + FT_OutlineGlyph outlineGlyph = reinterpret_cast(glyph); + if (FT_Outline_Embolden(&outlineGlyph->outline, boldStrength) != 0) + { + NazaraError("Failed to embolden glyph"); + return false; + } + } + + if (outlineThickness > 0.f) + { + FT_Stroker_Set(s_stroker, static_cast(s_scaleFactor * outlineThickness), FT_STROKER_LINECAP_ROUND, FT_STROKER_LINEJOIN_ROUND, 0); + if (FT_Glyph_Stroke(&glyph, s_stroker, 1) != 0) + { + NazaraError("Failed to outline glyph"); + return false; + } + } } - // http://www.freetype.org/freetype2/docs/reference/ft2-glyph_management.html#FT_Glyph_To_Bitmap - // Conversion du glyphe vers le format bitmap - // Cette fonction ne fait rien dans le cas où le glyphe est déjà un bitmap - if (FT_Render_Glyph(glyph, FT_RENDER_MODE_NORMAL) != 0) + if (FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, nullptr, 1) != 0) { NazaraError("Failed to convert glyph to bitmap"); return false; } + FT_Bitmap& bitmap = reinterpret_cast(glyph)->bitmap; + // Dans le cas où nous voulons des caractères gras mais que nous n'avons pas pu agir plus tôt // nous demandons à FreeType d'agir directement sur le bitmap généré if (embolden) { // http://www.freetype.org/freetype2/docs/reference/ft2-bitmap_handling.html#FT_Bitmap_Embolden - // "If you want to embolden the bitmap owned by a FT_GlyphSlot_Rec, you should call FT_GlyphSlot_Own_Bitmap on the slot first" - FT_GlyphSlot_Own_Bitmap(glyph); - FT_Bitmap_Embolden(s_library, &glyph->bitmap, boldStrength, boldStrength); + FT_Bitmap_Embolden(s_library, &bitmap, boldStrength, boldStrength); } - dst->advance += glyph->metrics.horiAdvance >> 6; - dst->aabb.x = glyph->metrics.horiBearingX >> 6; - dst->aabb.y = -(glyph->metrics.horiBearingY >> 6); // Inversion du repère - dst->aabb.width = glyph->metrics.width >> 6; - dst->aabb.height = glyph->metrics.height >> 6; + int outlineThicknessInt = static_cast(outlineThickness * 2.f + 0.5f); //< round it + dst->advance += glyphSlot->metrics.horiAdvance >> 6; + dst->aabb.x = glyphSlot->metrics.horiBearingX >> 6; + dst->aabb.y = -(glyphSlot->metrics.horiBearingY >> 6); // Inversion du repère + dst->aabb.width = (glyphSlot->metrics.width >> 6) + outlineThicknessInt; + dst->aabb.height = (glyphSlot->metrics.height >> 6) + outlineThicknessInt; - unsigned int width = glyph->bitmap.width; - unsigned int height = glyph->bitmap.rows; + unsigned int width = bitmap.width; + unsigned int height = bitmap.rows; if (width > 0 && height > 0) { dst->image.Create(ImageType_2D, PixelFormatType_A8, width, height); UInt8* pixels = dst->image.GetPixels(); - const UInt8* data = glyph->bitmap.buffer; + const UInt8* data = bitmap.buffer; // Selon la documentation FreeType, le glyphe peut être encodé en format A8 (huit bits d'alpha par pixel) // ou au format A1 (un bit d'alpha par pixel). // Cependant dans un cas comme dans l'autre, il nous faut gérer le pitch (les données peuvent ne pas être contigues) // ainsi que le padding dans le cas du format A1 (Chaque ligne prends un nombre fixe d'octets) - if (glyph->bitmap.pixel_mode == FT_PIXEL_MODE_MONO) + if (bitmap.pixel_mode == FT_PIXEL_MODE_MONO) { // Format A1 for (unsigned int y = 0; y < height; ++y) @@ -176,20 +218,20 @@ namespace Nz for (unsigned int x = 0; x < width; ++x) *pixels++ = (data[x/8] & ((1 << (7 - x%8)) ? 255 : 0)); - data += glyph->bitmap.pitch; + data += bitmap.pitch; } } else { // Format A8 - if (glyph->bitmap.pitch == static_cast(width*sizeof(UInt8))) // Pouvons-nous copier directement ? - dst->image.Update(glyph->bitmap.buffer); + if (bitmap.pitch == static_cast(width*sizeof(UInt8))) // Pouvons-nous copier directement ? + dst->image.Update(bitmap.buffer); //< Small optimization else { for (unsigned int y = 0; y < height; ++y) { std::memcpy(pixels, data, width*sizeof(UInt8)); - data += glyph->bitmap.pitch; + data += bitmap.pitch; pixels += width*sizeof(UInt8); } } @@ -312,7 +354,12 @@ namespace Nz m_args.stream = &m_stream; } - bool SupportsStyle(UInt32 style) const override + bool SupportsOutline(float /*outlineThickness*/) const override + { + return s_stroker != 0; + } + + bool SupportsStyle(TextStyleFlags style) const override { ///TODO return style == TextStyle_Regular || style == TextStyle_Bold; @@ -361,7 +408,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 +417,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 +446,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 +469,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 +489,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..58b2d8e0a 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(); @@ -305,6 +306,8 @@ namespace Nz if (vertexIndices.texCoord > 0) { Vector2f uv = Vector2f(texCoords[vertexIndices.texCoord - 1]); + uv.y = 1.f - uv.y; //< OBJ model texcoords seems to majority start from bottom left + uvPtr[index] = Vector2f(parameters.texCoordOffset + uv * parameters.texCoordScale); } else @@ -341,7 +344,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..2593bc368 100644 --- a/src/Nazara/Utility/GuillotineImageAtlas.cpp +++ b/src/Nazara/Utility/GuillotineImageAtlas.cpp @@ -19,8 +19,6 @@ namespace Nz { } - GuillotineImageAtlas::~GuillotineImageAtlas() = default; - void GuillotineImageAtlas::Clear() { m_layers.clear(); @@ -166,8 +164,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/src/Nazara/Utility/Node.cpp b/src/Nazara/Utility/Node.cpp index 2832df42d..e18e81244 100644 --- a/src/Nazara/Utility/Node.cpp +++ b/src/Nazara/Utility/Node.cpp @@ -530,6 +530,12 @@ namespace Nz InvalidateNode(); } + void Node::SetScale(const Vector2f& scale, CoordSys coordSys) + { + // Prevent Z scale at zero (can happen when using SetScale with a Vec2) + SetScale(scale.x, scale.y, 1.f, coordSys); + } + void Node::SetScale(const Vector3f& scale, CoordSys coordSys) { switch (coordSys) @@ -574,7 +580,7 @@ namespace Nz if (!m_derivedUpdated) UpdateDerived(); - return m_derivedPosition + (m_derivedScale * (m_derivedRotation * localPosition)); + return m_derivedPosition + (m_derivedScale * (ScaleQuaternion(m_derivedScale, m_derivedRotation) * localPosition)); } Quaternionf Node::ToGlobalRotation(const Quaternionf& localRotation) const @@ -582,7 +588,7 @@ namespace Nz if (!m_derivedUpdated) UpdateDerived(); - return m_derivedRotation * localRotation; + return ScaleQuaternion(m_derivedScale, m_derivedRotation) * localRotation; } Vector3f Node::ToGlobalScale(const Vector3f& localScale) const @@ -598,7 +604,7 @@ namespace Nz if (!m_derivedUpdated) UpdateDerived(); - return (m_derivedRotation.GetConjugate()*(globalPosition - m_derivedPosition))/m_derivedScale; + return m_derivedRotation.GetConjugate()*(globalPosition - m_derivedPosition)/m_derivedScale; } Quaternionf Node::ToLocalRotation(const Quaternionf& globalRotation) const @@ -688,7 +694,11 @@ namespace Nz if (m_inheritRotation) { - m_derivedRotation = m_parent->m_derivedRotation * m_initialRotation * m_rotation; + Quaternionf rotation = m_initialRotation * m_rotation; + if (m_inheritScale) + rotation = ScaleQuaternion(m_parent->m_derivedScale, rotation); + + m_derivedRotation = m_parent->m_derivedRotation * rotation; m_derivedRotation.Normalize(); } else @@ -716,4 +726,27 @@ namespace Nz m_transformMatrix.MakeTransform(m_derivedPosition, m_derivedRotation, m_derivedScale); m_transformMatrixUpdated = true; } + + Quaternionf Node::ScaleQuaternion(const Vector3f& scale, Quaternionf quaternion) + { + if (std::signbit(scale.x)) + { + quaternion.z = -quaternion.z; + quaternion.y = -quaternion.y; + } + + if (std::signbit(scale.y)) + { + quaternion.x = -quaternion.x; + quaternion.z = -quaternion.z; + } + + if (std::signbit(scale.z)) + { + quaternion.x = -quaternion.x; + quaternion.y = -quaternion.y; + } + + return quaternion; + } } diff --git a/src/Nazara/Utility/Resources/Fonts/Cabin-Regular.ttf b/src/Nazara/Utility/Resources/Fonts/Cabin-Regular.ttf deleted file mode 100644 index 7c57306e7..000000000 Binary files a/src/Nazara/Utility/Resources/Fonts/Cabin-Regular.ttf and /dev/null differ diff --git a/src/Nazara/Utility/Resources/Fonts/Cabin-Regular.ttf.h b/src/Nazara/Utility/Resources/Fonts/Cabin-Regular.ttf.h deleted file mode 100644 index d4e6b4702..000000000 --- a/src/Nazara/Utility/Resources/Fonts/Cabin-Regular.ttf.h +++ /dev/null @@ -1 +0,0 @@ -0,1,0,0,0,20,1,0,0,4,0,64,71,80,79,83,151,54,140,15,0,0,1,76,0,0,80,136,71,83,85,66,106,170,88,44,0,0,81,212,0,0,0,226,76,84,83,72,238,121,138,113,0,2,166,40,0,0,1,17,79,83,47,50,107,102,16,29,0,0,82,184,0,0,0,96,86,68,77,88,244,48,222,91,0,2,211,228,0,0,11,186,99,109,97,112,219,189,238,36,0,0,83,24,0,0,3,214,99,118,116,32,10,218,1,14,0,0,86,240,0,0,0,40,102,112,103,109,6,89,156,55,0,0,87,24,0,0,1,115,103,97,115,112,0,7,0,7,0,0,88,140,0,0,0,12,103,108,121,102,165,131,172,68,0,0,88,152,0,1,62,120,104,100,109,120,89,143,73,52,0,2,167,60,0,0,44,168,104,101,97,100,249,107,226,196,0,1,151,16,0,0,0,54,104,104,101,97,8,46,4,154,0,1,151,72,0,0,0,36,104,109,116,120,14,254,41,164,0,1,151,108,0,0,4,52,107,101,114,110,78,121,118,225,0,1,155,160,0,0,248,4,108,111,99,97,52,140,127,38,0,2,147,164,0,0,2,28,109,97,120,112,3,38,4,200,0,2,149,192,0,0,0,32,110,97,109,101,249,131,24,59,0,2,149,224,0,0,11,113,112,111,115,116,73,171,162,27,0,2,161,84,0,0,3,158,112,114,101,112,203,107,102,228,0,2,164,244,0,0,1,52,0,1,0,0,0,10,0,30,0,44,0,1,108,97,116,110,0,8,0,4,0,0,0,0,255,255,0,1,0,0,0,1,107,101,114,110,0,8,0,0,0,1,0,0,0,1,0,4,0,2,0,0,0,2,0,10,21,92,0,1,74,236,0,4,0,0,0,104,0,218,0,224,1,26,1,32,1,130,1,188,1,206,1,216,2,22,2,100,2,162,2,172,2,182,2,188,2,238,2,248,3,46,3,164,3,178,3,216,3,226,4,4,4,22,4,140,4,162,4,184,4,202,5,84,5,126,5,176,5,254,6,104,6,198,7,16,7,70,7,76,8,10,8,28,8,170,9,36,9,110,9,164,9,198,10,108,10,178,10,228,11,34,11,84,11,130,11,188,11,242,12,64,12,106,12,160,12,254,13,48,13,110,13,200,14,30,14,100,14,162,14,208,15,82,15,96,15,134,15,144,15,226,16,40,16,78,16,88,16,106,16,116,16,126,16,144,16,194,16,220,17,6,17,12,17,62,17,68,17,94,17,100,17,122,17,200,17,218,18,44,18,50,18,104,18,138,18,172,18,190,18,252,19,70,19,132,19,174,19,216,20,10,20,64,20,114,20,160,20,174,20,232,20,250,21,64,0,1,0,173,0,29,0,14,0,53,255,202,0,55,255,217,0,56,255,233,0,71,255,242,0,77,255,251,0,85,255,235,0,87,255,243,0,88,255,247,0,158,255,243,0,210,255,210,1,4,255,214,1,6,255,242,1,7,255,247,1,9,255,222,0,1,0,173,0,29,0,24,0,17,255,230,0,21,255,234,0,23,255,229,0,25,255,237,0,26,255,245,0,43,0,22,0,46,255,239,0,71,255,239,0,72,255,232,0,84,255,233,0,85,255,231,0,87,255,231,0,88,255,232,0,158,255,236,0,175,255,232,0,197,255,244,0,244,255,235,0,252,255,237,1,3,255,236,1,4,255,241,1,5,255,230,1,6,255,245,1,7,255,242,1,9,255,248,0,14,0,46,255,238,0,53,0,11,0,55,0,16,0,56,0,9,0,72,255,238,0,133,255,203,0,171,0,16,0,172,0,12,0,173,0,65,0,174,0,43,0,175,255,232,0,251,255,220,0,252,255,238,0,255,255,217,0,4,0,18,255,229,0,19,255,218,0,20,255,238,0,24,255,216,0,2,0,17,255,239,0,18,255,242,0,15,0,17,255,239,0,18,255,242,0,53,255,214,0,55,255,213,0,56,255,226,0,71,255,241,0,85,255,239,0,87,255,227,0,88,255,236,0,158,255,243,1,4,255,222,1,5,255,248,1,6,255,223,1,7,255,232,1,9,255,221,0,19,0,16,255,197,0,17,255,246,0,21,255,217,0,23,255,228,0,46,255,237,0,72,255,218,0,84,255,221,0,133,255,202,0,173,0,13,0,174,0,14,0,175,255,234,0,197,255,231,0,244,255,243,0,249,255,243,0,251,255,200,0,252,255,223,0,255,255,197,1,3,255,235,1,5,255,246,0,15,0,10,255,230,0,13,255,238,0,15,255,238,0,16,255,243,0,24,255,245,0,34,255,246,0,53,255,236,0,55,255,246,0,57,255,246,0,58,255,233,0,59,255,241,0,61,255,248,0,62,255,237,0,94,255,240,0,251,255,245,0,2,0,10,255,245,0,12,255,248,0,2,0,12,255,239,255,255,255,242,0,1,0,10,255,239,0,12,0,10,255,235,0,13,255,240,0,15,255,241,0,53,255,238,0,55,255,244,0,56,255,245,0,58,255,242,0,59,255,248,0,61,255,247,0,91,255,247,0,111,255,245,1,4,255,248,0,2,1,4,255,239,1,9,255,244,0,13,0,10,255,239,0,18,255,248,0,24,255,248,0,53,255,231,0,55,255,240,0,56,255,244,0,58,255,235,0,61,255,244,0,90,255,247,0,111,255,245,1,4,255,225,1,6,255,244,1,9,255,227,0,29,0,4,255,228,0,12,255,220,0,13,255,217,0,15,255,217,0,16,255,200,0,17,255,247,0,21,255,221,0,23,255,232,0,34,255,210,0,46,255,236,0,53,0,17,0,55,0,30,0,56,0,19,0,57,0,22,0,58,0,33,0,62,0,25,0,66,255,223,0,72,255,222,0,84,255,224,0,86,255,233,0,91,255,245,0,94,0,28,0,244,255,245,0,249,255,245,0,251,255,204,0,252,255,226,1,3,255,240,1,5,255,248,255,255,255,238,0,3,0,10,255,238,0,53,255,248,0,58,255,246,0,9,0,10,255,236,0,13,255,234,0,15,255,234,0,16,255,225,0,34,255,232,0,46,255,246,0,59,255,246,0,251,255,229,0,252,255,246,0,2,0,19,255,246,0,24,255,238,0,8,0,53,255,203,0,55,255,227,0,56,255,236,0,57,255,240,0,58,255,211,0,59,255,236,0,210,255,236,1,9,255,241,0,4,0,18,255,239,0,26,255,242,0,158,255,242,0,175,255,250,0,29,0,10,255,231,0,11,255,247,0,19,255,247,0,24,255,243,0,32,255,240,0,53,255,228,0,55,255,240,0,56,255,245,0,57,255,241,0,61,255,241,0,62,255,227,0,71,255,242,0,72,255,249,0,77,255,250,0,85,255,239,0,87,255,239,0,88,255,243,0,89,255,234,0,94,255,231,0,133,255,248,0,158,255,242,0,240,255,244,0,255,255,247,1,4,255,242,1,6,255,248,1,7,255,249,1,8,255,242,1,9,255,243,1,10,255,251,0,5,0,21,255,207,0,158,255,250,0,173,0,31,0,174,0,12,0,175,255,249,0,5,0,20,255,248,0,24,255,240,0,158,255,250,0,175,255,249,0,255,255,226,0,4,0,21,255,220,0,158,255,243,0,173,0,21,0,175,255,246,0,34,0,7,255,245,0,11,0,11,0,13,255,186,0,16,255,199,0,21,255,223,0,23,255,243,0,27,255,243,0,28,255,243,0,33,255,222,0,46,255,239,0,53,0,5,0,62,0,16,0,71,255,244,0,72,255,216,0,85,255,247,0,87,255,247,0,88,255,248,0,89,255,239,0,94,0,19,0,133,255,155,0,158,255,241,0,162,255,206,0,173,0,52,0,174,0,28,0,175,255,222,0,240,0,16,0,244,255,240,0,249,255,240,0,251,255,187,0,252,255,219,0,255,255,146,1,3,255,239,1,5,255,244,1,10,255,250,0,10,0,10,255,248,0,53,255,251,0,71,255,246,0,72,255,250,0,77,255,250,0,85,255,244,0,87,255,244,0,88,255,247,0,158,255,244,1,4,255,251,0,12,0,10,255,246,0,46,255,251,0,71,255,247,0,72,255,241,0,77,255,246,0,85,255,247,0,87,255,247,0,88,255,248,0,158,255,244,0,175,255,243,0,252,255,250,1,5,255,251,0,19,0,7,255,247,0,11,0,9,0,62,0,33,0,71,255,246,0,72,255,238,0,85,255,229,0,87,255,201,0,88,255,211,0,94,0,33,0,110,255,238,0,158,255,245,0,171,0,10,0,173,0,24,0,174,0,41,0,175,255,239,0,240,0,27,1,4,255,247,1,5,255,241,1,7,255,251,0,26,0,11,255,166,0,17,255,243,0,18,255,236,0,21,255,194,0,26,255,227,0,32,255,231,0,53,255,189,0,55,255,154,0,56,255,203,0,61,255,187,0,62,255,240,0,71,255,241,0,72,255,249,0,85,255,232,0,87,255,199,0,88,255,212,0,94,255,241,0,110,255,220,0,158,255,243,0,240,255,166,1,4,255,199,1,5,255,247,1,6,255,194,1,7,255,213,1,9,255,186,255,255,255,198,0,23,0,10,255,242,0,11,255,238,0,18,255,247,0,32,255,242,0,43,255,251,0,53,255,231,0,55,255,236,0,56,255,238,0,61,255,239,0,71,255,240,0,72,255,243,0,77,255,245,0,85,255,236,0,87,255,234,0,88,255,236,0,158,255,238,0,175,255,247,0,240,255,237,1,4,255,240,1,5,255,250,1,6,255,244,1,7,255,243,1,9,255,243,0,18,0,7,255,250,0,10,255,241,0,13,255,175,0,16,255,210,0,20,255,248,0,21,255,242,0,33,255,241,0,46,255,246,0,57,255,242,0,72,255,246,0,77,255,251,0,133,255,187,0,173,0,25,0,174,0,4,0,175,255,234,0,251,255,214,0,252,255,242,0,255,255,182,0,13,0,21,255,234,0,53,255,243,0,55,255,251,0,62,255,240,0,71,255,249,0,72,255,243,0,77,255,248,0,85,255,248,0,87,255,248,0,88,255,250,0,94,255,247,0,158,255,247,0,175,255,242,0,1,0,158,255,244,0,47,0,7,255,241,0,11,0,12,0,13,255,213,0,16,255,205,0,17,255,235,0,21,255,211,0,23,255,218,0,25,255,248,0,27,255,222,0,28,255,222,0,33,255,197,0,46,255,230,0,62,0,18,0,71,255,231,0,72,255,175,0,77,255,250,0,84,255,197,0,85,255,230,0,87,255,173,0,88,255,182,0,89,255,170,0,94,0,21,0,110,255,232,0,133,255,183,0,158,255,227,0,162,255,203,0,171,255,254,0,172,255,254,0,173,0,52,0,174,0,30,0,175,255,215,0,189,255,208,0,197,255,216,0,240,0,16,0,244,255,207,0,249,255,207,0,251,255,186,0,252,255,201,0,255,255,166,1,3,255,225,1,4,255,211,1,5,255,202,1,6,255,213,1,7,255,213,1,8,255,209,1,9,255,214,1,10,255,229,0,4,0,158,255,248,0,173,255,251,0,175,255,242,0,255,255,232,0,35,0,7,255,243,0,11,0,16,0,13,255,213,0,16,255,201,0,17,255,246,0,21,255,220,0,23,255,230,0,28,255,248,0,33,255,213,0,46,255,235,0,62,0,29,0,71,255,244,0,72,255,203,0,84,255,217,0,85,255,239,0,87,255,242,0,88,255,241,0,89,255,243,0,94,0,29,0,110,255,245,0,133,255,196,0,158,255,242,0,171,0,9,0,173,0,44,0,174,0,40,0,175,255,216,0,197,255,227,0,240,0,26,0,244,255,241,0,249,255,241,0,251,255,199,0,252,255,218,0,255,255,186,1,3,255,237,1,5,255,244,0,30,0,7,255,247,0,11,0,17,0,13,255,225,0,16,255,215,0,21,255,233,0,23,255,241,0,33,255,223,0,46,255,239,0,62,0,26,0,71,255,247,0,72,255,216,0,85,255,243,0,87,255,247,0,88,255,247,0,89,255,249,0,94,0,28,0,133,255,209,0,158,255,245,0,171,0,4,0,173,0,44,0,174,0,36,0,175,255,222,0,240,0,23,0,244,255,246,0,249,255,246,0,251,255,215,0,252,255,228,0,255,255,209,1,3,255,245,1,5,255,249,0,18,0,7,255,246,0,62,0,31,0,71,255,245,0,72,255,238,0,85,255,228,0,87,255,207,0,88,255,213,0,94,0,31,0,110,255,238,0,158,255,243,0,171,0,7,0,173,0,23,0,174,0,38,0,175,255,239,0,240,0,24,1,4,255,248,1,5,255,240,1,7,255,251,0,13,0,17,255,233,0,21,255,206,0,23,255,218,0,25,255,246,0,33,255,198,0,158,255,230,0,171,0,16,0,173,0,38,0,174,0,47,0,175,255,216,0,189,255,225,0,197,255,234,0,255,255,174,0,8,0,17,255,243,0,21,255,199,0,23,255,247,0,158,255,239,0,171,0,6,0,173,0,29,0,174,0,37,0,175,255,235,0,41,0,17,255,232,0,21,255,228,0,23,255,229,0,25,255,248,0,43,0,49,0,46,255,244,0,53,0,22,0,55,0,31,0,56,0,27,0,57,0,28,0,75,0,7,0,81,255,223,0,84,255,218,0,85,255,224,0,87,255,216,0,88,255,218,0,89,255,226,0,91,255,219,0,133,255,243,0,158,255,244,0,162,255,228,0,171,0,15,0,173,0,34,0,174,0,45,0,175,255,231,0,189,255,252,0,197,255,232,0,200,255,246,0,244,255,215,0,249,0,32,0,251,255,225,0,252,255,216,0,255,255,236,1,3,255,222,1,4,255,219,1,5,255,215,1,6,255,219,1,7,255,218,1,8,255,228,1,9,255,220,1,10,255,223,0,17,0,17,255,244,0,18,255,241,0,26,255,242,0,43,0,16,0,53,255,205,0,55,255,201,0,56,255,216,0,85,255,240,0,87,255,222,0,88,255,231,0,210,255,214,0,249,0,14,1,4,255,220,1,5,255,243,1,6,255,217,1,7,255,226,1,9,255,215,0,12,0,18,255,234,0,26,255,247,0,38,255,240,0,43,255,240,0,46,255,248,0,52,255,250,0,53,255,173,0,54,255,227,0,55,255,193,0,56,255,210,0,58,255,165,0,158,255,249,0,15,0,18,255,235,0,19,255,232,0,24,255,226,0,38,255,237,0,43,255,237,0,46,255,239,0,52,255,237,0,53,255,171,0,54,255,238,0,55,255,193,0,56,255,212,0,57,255,217,0,58,255,167,0,59,255,227,0,158,255,248,0,12,0,21,255,231,0,24,255,245,0,38,255,247,0,43,255,247,0,46,255,251,0,52,255,244,0,53,255,190,0,54,255,243,0,55,255,236,0,56,255,241,0,58,255,218,0,175,255,251,0,11,0,7,255,244,0,38,255,242,0,43,255,242,0,46,255,240,0,52,255,246,0,53,255,245,0,54,255,240,0,55,255,250,0,56,255,248,0,58,255,251,0,59,255,245,0,14,0,18,255,235,0,19,255,245,0,24,255,230,0,38,255,241,0,43,255,241,0,46,255,243,0,52,255,241,0,53,255,187,0,54,255,240,0,55,255,209,0,56,255,213,0,57,255,243,0,58,255,174,0,59,255,243,0,13,0,7,255,235,0,13,255,229,0,16,255,234,0,21,255,244,0,33,255,239,0,38,255,244,0,43,255,244,0,46,255,229,0,54,255,247,0,59,255,243,0,72,255,252,0,94,0,8,0,175,255,224,0,19,0,7,255,244,0,10,0,5,0,16,0,14,0,24,255,225,0,32,255,217,0,38,255,245,0,43,0,45,0,46,255,242,0,53,255,208,0,54,255,246,0,55,255,247,0,56,255,250,0,57,255,250,0,58,255,238,0,59,255,245,0,62,0,25,0,75,0,19,0,94,0,29,0,175,255,250,0,10,0,7,255,242,0,32,255,237,0,53,255,166,0,54,255,251,0,55,255,245,0,56,255,251,0,58,255,217,0,62,255,239,0,72,255,238,0,175,255,230,0,13,0,7,255,244,0,11,255,246,0,38,255,240,0,43,255,240,0,46,255,248,0,53,255,234,0,54,255,228,0,55,255,239,0,56,255,237,0,58,255,241,0,85,255,251,0,87,255,249,0,88,255,251,0,23,0,7,255,237,0,10,255,232,0,13,255,227,0,16,255,225,0,20,255,231,0,21,255,238,0,24,255,200,0,32,255,202,0,33,255,232,0,38,255,243,0,43,255,243,0,46,255,230,0,53,255,163,0,54,255,247,0,55,255,243,0,56,255,247,0,57,255,214,0,58,255,225,0,59,255,227,0,62,255,217,0,72,255,250,0,94,255,228,0,175,255,218,0,12,0,24,255,234,0,38,255,241,0,43,255,241,0,46,255,245,0,52,255,248,0,53,255,202,0,54,255,238,0,55,255,216,0,56,255,224,0,57,255,244,0,58,255,209,0,59,255,245,0,15,0,7,255,246,0,21,255,234,0,24,255,246,0,32,255,229,0,38,255,248,0,43,255,248,0,46,255,248,0,53,255,209,0,54,255,246,0,55,255,237,0,56,255,243,0,58,255,211,0,62,255,230,0,94,255,242,0,175,255,251,0,22,0,7,255,238,0,10,255,231,0,13,255,227,0,16,255,223,0,20,255,231,0,24,255,200,0,32,255,206,0,33,255,240,0,38,255,242,0,43,255,242,0,46,255,229,0,53,255,170,0,54,255,245,0,55,255,237,0,56,255,242,0,57,255,208,0,58,255,210,0,59,255,224,0,62,255,214,0,72,255,250,0,94,255,227,0,175,255,238,0,21,0,7,255,240,0,10,255,232,0,13,255,235,0,16,255,231,0,20,255,240,0,24,255,207,0,32,255,211,0,33,255,247,0,38,255,243,0,43,255,243,0,46,255,232,0,53,255,178,0,54,255,246,0,55,255,236,0,56,255,242,0,57,255,213,0,58,255,211,0,59,255,228,0,62,255,218,0,94,255,229,0,175,255,246,0,17,0,7,255,238,0,32,255,227,0,38,255,247,0,43,255,247,0,46,255,250,0,52,255,248,0,53,255,167,0,54,255,244,0,55,255,236,0,56,255,242,0,58,255,208,0,61,255,247,0,62,255,230,0,72,255,247,0,94,255,237,0,175,255,240,0,240,255,248,0,15,0,19,255,227,0,20,255,230,0,24,255,198,0,33,255,238,0,38,255,243,0,43,255,243,0,46,255,229,0,53,255,168,0,54,255,245,0,55,255,238,0,56,255,242,0,57,255,208,0,58,255,211,0,59,255,225,0,175,255,236,0,11,0,21,255,225,0,24,255,244,0,38,255,242,0,43,255,242,0,46,255,245,0,53,255,203,0,54,255,239,0,55,255,240,0,56,255,243,0,58,255,227,0,175,255,247,0,32,0,17,255,238,0,21,255,238,0,23,255,235,0,43,0,47,0,46,255,247,0,53,0,21,0,55,0,29,0,56,0,25,0,57,0,28,0,85,255,231,0,87,255,227,0,88,255,228,0,89,255,238,0,158,255,247,0,171,0,12,0,173,0,33,0,174,0,44,0,175,255,234,0,189,255,249,0,244,255,233,0,249,0,30,0,251,255,236,0,252,255,228,0,255,255,247,1,3,255,232,1,4,255,230,1,5,255,225,1,6,255,231,1,7,255,229,1,8,255,246,1,9,255,232,1,10,255,238,0,3,0,53,255,200,0,55,255,236,0,56,255,244,0,9,0,46,255,247,0,53,255,230,0,55,255,243,0,56,255,248,0,57,255,236,0,133,255,236,0,251,255,236,0,252,255,248,0,255,255,235,0,2,0,21,255,229,0,23,255,239,0,20,0,43,0,19,0,46,255,238,0,53,255,192,0,55,255,233,0,56,255,241,0,57,255,231,0,72,255,243,0,75,0,20,0,77,255,247,0,89,255,248,0,133,255,235,0,175,255,240,0,244,255,246,0,251,255,227,0,252,255,233,0,255,255,231,1,5,255,244,1,8,255,243,1,9,255,246,1,10,255,240,0,17,0,10,255,228,0,13,255,177,0,16,255,221,0,32,255,223,0,46,255,251,0,53,255,202,0,55,255,248,0,57,255,205,0,61,255,247,0,62,255,214,0,66,255,247,0,89,255,250,0,94,255,226,0,133,255,201,0,251,255,233,0,252,255,251,1,8,255,250,0,9,0,10,255,239,0,11,255,241,0,71,255,250,0,85,255,247,0,87,255,245,0,88,255,248,0,89,255,251,0,90,255,245,0,240,255,242,0,2,0,62,255,246,0,94,255,248,0,4,0,61,255,220,0,94,255,248,0,210,255,195,0,213,255,195,0,2,0,62,255,245,0,94,255,248,0,2,0,11,0,30,0,240,0,28,0,4,0,11,0,18,0,62,0,9,0,94,0,14,0,240,0,18,0,12,0,3,0,29,0,8,0,29,0,11,0,76,0,32,0,39,0,61,0,13,0,62,0,44,0,94,0,33,0,209,0,37,0,210,0,24,0,212,0,37,0,213,0,24,0,240,0,81,0,6,0,11,0,43,0,32,0,27,0,61,0,14,0,62,0,39,0,94,0,44,0,240,0,48,0,10,0,7,255,247,0,10,255,232,0,11,255,240,0,13,255,247,0,32,255,242,0,61,255,246,0,62,255,240,0,89,255,248,0,94,255,243,0,240,255,241,0,1,0,173,0,37,0,12,0,7,255,239,0,11,0,5,0,16,255,209,0,33,255,210,0,110,255,245,0,161,255,187,0,169,255,174,0,173,0,44,0,174,0,28,0,189,255,224,0,197,255,232,0,240,0,9,0,1,0,173,0,37,0,6,0,161,255,187,0,169,255,174,0,173,0,44,0,174,0,28,0,189,255,224,0,197,255,232,0,1,0,143,0,6,0,5,0,133,255,228,0,143,0,10,0,173,0,11,0,251,255,236,0,255,255,235,0,19,0,2,255,247,0,10,255,228,0,11,255,241,0,18,255,242,0,19,255,240,0,24,255,229,0,26,255,248,0,32,255,221,0,61,255,220,0,62,255,214,0,94,255,224,0,240,255,235,0,255,255,247,1,4,255,238,1,6,255,244,1,7,255,246,1,8,255,243,1,9,255,233,1,10,255,250,0,4,0,21,255,221,0,32,255,242,0,62,255,238,0,94,255,246,0,20,0,10,255,224,0,11,255,244,0,16,255,246,0,18,255,241,0,19,255,229,0,24,255,222,0,32,255,223,0,61,255,222,0,62,255,213,0,94,255,222,0,240,255,240,0,251,255,247,0,252,255,251,0,255,255,231,1,4,255,242,1,6,255,247,1,7,255,249,1,8,255,232,1,9,255,234,1,10,255,242,0,1,0,21,255,241,0,13,0,10,255,240,0,13,255,199,0,16,255,217,0,20,255,245,0,21,255,247,0,24,255,218,0,32,255,218,0,33,255,242,0,62,255,215,0,94,255,228,0,251,255,213,0,252,255,243,0,255,255,188,0,8,0,10,255,239,0,11,255,244,0,24,255,247,0,32,255,236,0,61,255,240,0,62,255,226,0,94,255,232,0,240,255,239,0,8,0,10,255,235,0,24,255,244,0,32,255,237,0,61,255,243,0,62,255,217,0,94,255,233,0,240,255,243,0,252,255,252,0,4,0,21,255,247,0,62,255,234,0,94,255,248,1,3,255,252,0,15,0,11,255,221,0,17,255,246,0,18,255,232,0,26,255,237,0,32,255,232,0,61,255,201,0,62,255,231,0,94,255,236,0,110,255,236,0,240,255,220,1,4,255,210,1,5,255,243,1,6,255,219,1,7,255,227,1,9,255,205,0,18,0,10,255,237,0,11,255,238,0,18,255,241,0,24,255,243,0,26,255,247,0,32,255,229,0,61,255,223,0,62,255,220,0,94,255,228,0,110,255,248,0,240,255,234,0,244,255,252,0,249,255,252,1,4,255,238,1,5,255,249,1,6,255,240,1,7,255,241,1,9,255,236,0,15,0,10,255,227,0,13,255,188,0,16,255,223,0,19,255,245,0,20,255,234,0,24,255,215,0,32,255,223,0,61,255,243,0,62,255,213,0,94,255,224,0,251,255,227,0,252,255,248,0,255,255,199,1,8,255,243,1,10,255,251,0,10,0,21,255,242,0,24,255,244,0,32,255,226,0,61,255,228,0,62,255,224,0,94,255,232,0,240,255,243,1,4,255,249,1,6,255,252,1,9,255,246,0,10,0,10,255,233,0,11,255,245,0,24,255,244,0,32,255,232,0,61,255,239,0,62,255,223,0,94,255,230,0,240,255,238,0,255,255,250,1,8,255,252,0,12,0,10,255,241,0,13,255,222,0,16,255,220,0,21,255,230,0,24,255,219,0,32,255,216,0,33,255,223,0,62,255,218,0,94,255,230,0,251,255,210,0,252,255,238,0,255,255,195,0,13,0,10,255,230,0,13,255,248,0,16,255,243,0,24,255,240,0,32,255,236,0,61,255,246,0,62,255,215,0,94,255,225,0,240,255,245,0,251,255,244,0,252,255,249,0,255,255,247,1,10,255,252,0,12,0,10,255,245,0,13,255,223,0,16,255,217,0,21,255,243,0,24,255,223,0,32,255,222,0,33,255,230,0,62,255,217,0,94,255,230,0,251,255,219,0,252,255,240,0,255,255,213,0,11,0,10,255,243,0,13,255,231,0,16,255,226,0,24,255,223,0,32,255,222,0,33,255,239,0,62,255,218,0,94,255,230,0,251,255,227,0,252,255,242,0,255,255,221,0,3,0,21,255,247,0,62,255,233,0,94,255,247,0,14,0,10,255,248,0,13,255,221,0,16,255,215,0,21,255,226,0,23,255,247,0,24,255,225,0,32,255,222,0,33,255,219,0,62,255,218,0,94,255,232,0,251,255,205,0,252,255,236,0,255,255,198,1,3,255,252,0,4,0,21,255,220,0,32,255,227,0,62,255,222,0,94,255,236,0,17,0,11,255,197,0,17,255,241,0,18,255,231,0,21,255,199,0,26,255,228,0,32,255,228,0,61,255,186,0,62,255,227,0,94,255,233,0,110,255,221,0,240,255,192,1,4,255,207,1,5,255,245,1,6,255,186,1,7,255,210,1,9,255,176,255,255,255,208,0,4,0,19,255,239,0,20,255,246,0,24,255,235,0,18,255,240,0,2,54,70,0,4,0,0,54,206,56,224,0,89,0,77,0,0,255,248,255,146,255,220,255,237,255,245,255,234,255,238,255,241,255,203,255,237,255,223,255,218,255,243,255,234,255,146,255,213,255,243,255,236,255,244,255,241,255,146,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,210,255,203,255,250,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,231,255,224,0,0,0,0,0,0,255,224,0,0,0,0,255,227,255,231,255,243,255,229,255,243,255,245,255,243,255,233,255,247,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,124,255,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,255,222,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,255,231,0,0,0,0,255,193,255,216,255,238,255,248,255,242,255,237,255,247,255,248,255,247,255,248,255,225,255,243,255,238,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,146,255,215,0,0,255,222,0,0,255,242,0,0,0,0,255,243,0,0,0,0,0,0,255,124,255,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,208,255,218,255,214,0,0,0,0,0,0,255,222,0,0,0,7,255,230,0,0,0,0,255,243,0,0,0,0,0,0,255,228,255,241,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,218,0,0,0,0,0,0,255,226,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,255,232,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,255,247,0,0,255,250,255,213,255,192,255,244,255,217,0,0,255,245,0,0,0,0,255,240,0,0,0,0,0,0,255,205,255,204,255,202,255,207,255,219,0,0,0,0,255,241,255,229,0,0,0,0,255,214,0,0,255,213,0,0,255,212,255,239,255,208,255,249,255,221,255,228,255,246,255,241,255,212,255,246,255,223,255,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,0,0,0,0,0,0,0,0,255,229,255,251,255,236,0,0,0,0,0,0,255,251,0,0,255,250,255,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,250,255,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,0,0,0,0,255,195,0,0,0,0,0,0,255,242,0,0,255,226,0,0,255,246,0,0,0,0,255,241,255,249,0,0,255,242,0,0,0,0,0,0,255,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,249,255,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,249,255,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,255,237,0,0,0,0,0,0,255,250,255,250,255,226,0,0,255,240,0,0,255,249,0,0,255,242,255,244,255,248,255,250,255,250,0,0,255,241,0,0,0,0,255,227,255,250,0,0,0,0,0,0,0,0,0,0,0,0,255,249,255,250,0,0,0,0,255,247,255,228,255,243,255,248,255,225,255,235,0,0,0,0,255,244,0,0,0,0,255,245,0,0,255,251,0,0,255,237,255,244,255,249,0,0,0,0,255,229,0,0,255,246,0,0,0,0,0,0,255,249,255,249,255,228,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,255,240,255,251,255,235,0,0,255,246,0,0,0,0,255,238,255,240,0,0,255,245,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,255,243,0,0,255,248,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,186,255,203,255,199,255,212,255,217,255,236,255,186,255,234,0,0,0,0,255,217,255,248,0,0,255,248,0,0,0,0,0,0,255,211,255,236,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,255,249,0,0,0,0,255,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,0,0,0,0,0,0,0,0,0,0,0,0,255,249,255,242,0,0,0,0,0,0,0,0,0,0,255,250,255,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,250,255,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,255,241,0,0,255,243,0,0,0,0,255,250,0,0,0,0,0,0,255,246,255,242,255,246,0,0,0,0,0,0,0,0,0,0,255,245,255,247,0,0,0,0,0,0,0,0,0,0,255,247,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,255,247,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,247,255,248,0,0,0,0,0,0,255,251,0,0,0,0,255,247,255,247,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,242,255,246,0,0,0,0,0,0,0,0,0,0,255,245,255,247,0,0,0,0,0,0,0,0,0,0,255,247,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,255,222,0,0,255,227,0,0,255,224,0,0,0,0,255,232,255,199,0,0,255,228,0,0,255,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,196,0,0,0,0,0,0,255,246,0,0,255,222,0,0,255,249,255,166,255,158,255,249,255,181,0,0,255,232,0,0,0,0,255,238,0,0,0,0,0,0,255,167,255,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,250,255,244,255,250,0,0,0,0,255,251,255,238,255,233,255,244,255,233,255,251,255,251,255,251,0,0,255,248,255,246,255,249,0,0,255,236,255,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,242,255,239,0,0,0,0,0,0,255,251,255,250,255,229,255,250,255,242,255,228,255,250,0,0,255,242,255,245,255,247,255,250,255,250,0,0,255,242,0,0,0,0,255,230,255,251,0,0,0,0,0,0,0,0,0,0,0,0,255,249,255,250,0,0,0,0,255,247,255,232,255,244,255,248,255,229,255,238,0,0,0,0,255,245,255,251,0,0,255,246,0,0,0,0,0,0,255,240,255,245,255,250,0,0,0,0,255,231,0,0,255,246,0,0,0,0,0,0,255,250,255,249,255,229,255,227,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,175,255,216,255,242,255,243,255,248,0,0,255,175,0,0,0,0,0,0,255,250,0,0,0,0,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,255,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,255,237,0,0,255,242,0,0,255,248,0,0,255,245,255,244,255,248,0,0,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,250,255,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,0,0,0,0,0,0,0,0,0,0,255,250,255,240,0,0,0,0,0,0,0,0,0,0,255,250,255,244,0,0,0,0,0,0,0,0,0,0,0,0,255,251,0,0,255,243,255,241,255,242,0,0,255,251,0,0,0,0,0,0,0,0,0,0,0,0,255,250,255,241,255,244,0,0,0,0,0,0,0,0,0,0,0,0,255,250,255,250,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,216,255,214,255,202,255,195,255,177,0,0,255,195,255,213,255,197,0,0,0,0,255,169,255,171,0,0,255,232,0,0,0,0,0,0,255,168,255,208,255,207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,250,255,247,0,0,0,0,255,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,234,0,0,0,0,0,0,255,248,255,242,255,240,0,0,255,233,0,0,255,245,0,0,255,243,255,240,255,242,255,243,255,243,0,0,255,243,0,0,0,0,0,0,255,242,255,250,0,0,0,0,0,0,0,0,0,0,255,240,255,244,255,250,0,0,0,0,0,0,0,0,0,0,0,0,255,251,255,250,255,249,255,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,255,250,255,250,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,243,255,245,0,0,0,0,0,0,255,250,255,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,238,255,213,255,207,255,216,255,196,0,0,255,220,255,213,255,214,0,0,0,0,255,220,255,243,0,0,255,244,0,0,0,0,0,0,255,220,255,243,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,248,255,226,255,219,255,216,255,217,255,219,255,230,255,225,255,230,0,0,0,0,255,227,255,248,0,0,255,249,0,0,0,0,0,0,255,224,255,247,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,0,0,255,223,0,0,255,226,0,0,255,224,0,0,0,0,255,232,255,206,0,0,255,229,0,0,255,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,255,215,255,201,0,0,0,0,0,0,255,232,255,180,255,180,0,0,255,181,0,0,255,197,255,222,255,215,255,192,255,189,255,171,255,186,255,198,255,215,255,193,0,0,0,0,255,190,255,217,0,0,255,230,0,0,0,0,0,0,255,187,255,229,255,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,255,221,255,214,0,0,0,0,0,0,0,0,255,248,0,13,0,13,0,7,0,0,255,215,255,216,0,33,255,230,0,33,255,228,0,0,0,0,0,0,0,0,0,0,0,31,255,225,0,0,255,223,255,223,255,235,255,235,255,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,229,0,0,0,0,0,0,0,0,255,251,255,217,0,0,0,0,255,246,255,227,255,245,255,214,0,0,255,234,0,0,0,0,255,224,255,242,0,0,255,238,0,0,0,0,0,0,255,235,255,248,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,255,241,0,23,255,233,0,24,255,237,0,0,0,0,0,0,255,250,0,0,0,23,0,0,0,0,255,246,255,246,0,0,0,0,255,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,255,218,255,213,0,0,0,0,0,0,255,214,0,0,0,36,255,215,255,216,0,0,255,226,0,0,0,0,0,0,255,214,0,0,255,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,255,220,255,201,0,0,255,219,0,0,255,236,0,0,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,0,0,0,0,255,236,255,240,255,237,0,0,0,0,0,0,0,0,0,0,0,0,255,186,255,183,0,0,0,0,0,0,0,0,0,0,255,251,255,246,0,0,0,0,0,0,0,0,0,0,0,0,255,231,255,229,255,210,0,0,255,238,255,243,255,231,255,248,255,230,0,0,0,0,0,0,0,0,0,0,255,246,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,255,240,0,0,0,0,0,0,0,0,255,246,0,0,255,234,0,0,0,0,255,245,255,237,255,246,0,0,0,0,0,0,0,0,255,246,0,0,255,181,255,178,0,0,0,0,0,0,0,0,0,0,255,251,255,250,255,238,0,0,0,0,0,0,0,0,0,0,255,232,255,224,255,217,0,0,255,247,255,251,255,226,0,0,255,234,0,0,0,0,0,0,0,0,0,0,255,227,255,217,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,219,0,0,0,0,0,0,255,249,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,255,247,255,244,0,0,0,0,0,0,0,0,0,0,0,0,255,216,255,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,228,255,240,0,0,0,0,0,0,255,239,0,0,255,245,0,0,0,0,0,0,0,0,0,0,255,244,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,242,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,0,0,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,255,251,255,241,255,250,0,0,0,0,0,0,0,0,0,0,0,0,255,189,255,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,0,0,0,0,0,0,0,0,0,0,255,238,255,223,255,220,0,0,255,252,0,0,255,227,0,0,255,237,0,0,0,0,0,0,0,0,0,0,255,230,255,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,232,255,229,255,211,255,251,255,246,0,0,255,239,255,229,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,223,255,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,250,0,0,0,0,0,0,0,0,0,0,0,0,255,238,255,163,0,0,255,242,255,238,255,243,255,238,255,241,255,231,0,0,0,0,0,0,255,187,255,184,255,162,255,198,255,214,255,249,255,245,255,251,255,248,0,0,255,248,0,0,0,0,0,0,0,0,255,235,255,224,255,214,0,0,255,243,255,248,255,225,0,0,255,235,0,0,0,0,0,0,0,0,0,0,255,232,255,216,0,0,255,233,0,0,0,0,0,0,0,0,0,0,255,248,255,231,255,238,0,0,0,0,255,244,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,255,242,255,244,255,242,255,244,255,238,0,0,0,0,0,0,0,0,0,0,255,242,255,247,255,246,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,255,251,255,234,0,0,255,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,255,229,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,0,0,255,247,0,0,0,0,255,247,0,0,0,0,255,249,255,240,255,237,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,255,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,167,0,0,255,245,255,237,255,246,255,237,255,238,255,238,0,0,255,246,0,0,255,182,255,179,255,173,255,192,255,212,255,218,255,227,255,251,255,249,255,237,255,248,0,0,0,0,0,0,0,0,255,234,255,222,255,214,0,0,255,247,255,251,255,222,0,0,255,236,0,0,0,0,0,0,0,0,0,0,255,224,255,213,255,247,255,223,0,0,0,0,0,0,0,0,0,0,0,0,255,230,255,237,255,229,0,0,255,244,0,0,0,0,0,0,0,0,0,0,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,183,0,0,0,0,255,242,255,244,255,242,255,243,255,235,0,0,0,0,0,0,255,211,255,209,255,164,255,216,255,218,255,246,255,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,255,223,255,228,0,0,0,0,0,0,255,226,0,0,255,239,0,0,0,0,0,0,0,0,0,0,255,233,255,215,0,0,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,255,227,255,211,255,249,255,243,0,0,255,237,255,227,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,233,255,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,255,244,0,0,0,0,0,0,0,0,0,0,0,0,255,203,255,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,241,255,224,255,225,0,0,0,0,0,0,255,229,0,0,255,235,0,0,0,0,0,0,0,0,0,0,255,231,255,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,234,255,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,255,216,255,250,255,247,255,252,0,0,255,227,0,0,0,0,0,0,0,0,0,0,255,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,223,255,252,255,251,0,0,0,0,255,235,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,255,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,255,252,255,238,0,0,255,236,0,0,0,0,0,0,0,0,0,0,0,0,255,247,255,240,0,0,0,0,0,0,0,0,0,0,0,0,255,224,255,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,238,255,225,255,220,0,0,0,0,0,0,0,0,255,250,0,0,0,0,0,0,0,0,0,0,0,0,255,225,255,214,255,250,255,246,255,252,0,0,255,225,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,255,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,205,0,0,0,0,0,0,0,0,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,231,255,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,255,251,0,0,0,0,0,0,0,0,0,0,255,240,0,0,0,0,0,0,255,245,0,0,255,232,0,0,0,0,0,0,0,0,0,0,0,0,255,242,255,244,0,0,0,0,0,0,0,0,0,0,0,0,255,219,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,221,255,242,0,0,0,0,0,0,255,232,0,0,255,242,0,0,0,0,0,0,0,0,0,0,255,246,255,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,244,255,229,255,222,255,229,0,0,0,0,255,223,0,0,0,34,255,225,255,227,0,0,255,231,0,0,0,0,0,0,255,227,255,232,255,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,255,248,0,0,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,229,255,197,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,255,240,255,238,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,0,0,255,241,255,198,0,0,255,248,0,0,0,0,0,0,255,234,0,0,0,0,255,233,0,0,0,0,255,204,255,195,255,220,255,230,255,224,255,223,0,0,255,247,255,236,255,248,255,226,255,227,255,223,255,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,240,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,233,255,241,255,243,255,241,0,0,0,0,255,246,0,0,255,219,255,243,0,0,255,247,0,0,255,247,0,0,255,245,255,241,255,241,255,246,0,0,0,0,0,0,0,0,0,0,0,0,255,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,255,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,177,255,235,0,0,0,0,0,0,0,0,255,177,0,0,0,0,255,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,255,247,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,255,237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,123,0,0,0,0,0,0,0,0,255,236,255,189,255,190,255,235,255,217,255,209,255,241,0,0,255,124,255,205,255,194,255,182,255,193,0,0,0,0,255,228,0,0,0,0,255,213,255,227,0,0,0,0,0,0,0,0,0,0,255,211,255,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,248,255,225,255,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,226,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,245,0,0,0,0,0,0,0,0,0,0,0,0,255,110,0,0,0,0,0,0,0,0,255,234,255,174,255,184,255,237,255,210,255,203,255,234,255,181,255,110,255,200,255,179,255,167,255,178,255,192,255,110,255,223,0,0,0,6,255,200,255,215,0,0,255,234,0,0,0,0,0,0,255,198,255,204,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,244,255,213,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,214,255,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,220,0,0,255,248,255,248,0,0,0,0,255,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,146,255,215,0,0,255,222,0,0,255,242,0,0,0,0,255,243,0,0,0,0,0,0,0,0,255,121,255,214,255,213,255,226,0,0,0,0,255,241,255,239,0,0,255,242,255,222,0,0,255,221,0,0,0,0,0,0,0,0,0,0,255,227,255,236,0,0,0,0,0,0,255,248,255,223,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,240,0,0,255,248,255,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,217,255,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,240,255,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,197,0,0,0,0,0,0,0,0,0,0,255,233,0,0,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,227,255,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,199,0,0,0,0,0,0,0,0,0,0,255,199,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,237,255,243,0,0,0,0,0,0,255,233,0,0,255,243,0,0,0,0,0,0,0,0,0,0,255,235,255,217,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,0,0,0,255,227,0,0,255,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,208,0,0,0,0,0,0,0,0,0,0,255,221,0,0,255,244,255,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,203,255,201,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,251,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252,255,241,255,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,248,255,232,255,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,228,255,227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,255,234,255,235,255,244,255,244,255,223,255,222,0,0,0,0,0,0,255,223,0,0,255,240,0,0,255,247,255,250,0,0,0,0,255,224,255,214,255,248,255,223,0,0,0,0,0,0,0,0,0,0,0,0,255,242,0,0,255,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,188,0,0,0,0,0,0,0,0,0,0,255,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,225,255,222,0,0,0,0,0,0,0,0,255,226,255,222,255,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,223,0,0,0,0,0,0,0,0,255,240,255,223,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,232,0,0,0,0,0,0,0,0,255,247,255,231,255,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,243,0,0,0,0,0,0,0,0,0,0,255,227,0,0,255,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,238,255,221,0,0,0,0,0,0,0,0,255,223,255,221,255,235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,236,0,0,0,0,0,0,0,0,0,0,255,226,0,0,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,28,0,3,0,3,0,0,0,7,0,9,0,1,0,11,0,13,0,4,0,15,0,26,0,7,0,30,0,30,0,19,0,33,0,40,0,20,0,43,0,46,0,28,0,49,0,49,0,32,0,51,0,61,0,33,0,66,0,72,0,44,0,76,0,77,0,51,0,83,0,85,0,53,0,87,0,92,0,56,0,97,0,97,0,62,0,110,0,111,0,63,0,126,0,126,0,65,0,157,0,158,0,66,0,161,0,163,0,68,0,171,0,175,0,71,0,209,0,210,0,76,0,212,0,213,0,78,0,221,0,221,0,80,0,240,0,246,0,81,0,249,0,252,0,88,1,0,1,0,0,92,1,2,1,10,0,93,1,12,1,12,0,102,255,255,255,255,0,103,0,2,0,22,0,3,0,3,0,0,0,7,0,7,0,1,0,9,0,9,0,2,0,13,0,16,0,3,0,21,0,21,0,7,0,24,0,24,0,8,0,33,0,61,0,9,0,66,0,92,0,38,0,97,0,97,0,65,0,107,0,107,0,66,0,110,0,110,0,67,0,122,0,122,0,68,0,126,0,149,0,69,0,151,0,181,0,93,0,183,0,190,0,124,0,193,0,200,0,132,0,207,0,214,0,140,0,220,0,221,0,148,0,240,0,245,0,150,0,247,0,248,0,156,0,250,1,2,0,158,1,4,1,12,0,167,0,1,0,7,1,6,0,1,0,0,0,2,0,0,0,0,0,0,0,3,0,4,0,5,0,6,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,17,0,18,0,19,0,20,0,21,0,17,0,22,0,23,0,22,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,0,0,0,0,0,0,0,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,43,0,44,0,45,0,42,0,42,0,46,0,46,0,47,0,48,0,49,0,50,0,47,0,51,0,52,0,53,0,54,0,55,0,56,0,0,0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,61,0,10,0,10,0,10,0,10,0,10,0,10,0,14,0,12,0,14,0,14,0,14,0,14,0,17,0,17,0,17,0,17,0,13,0,17,0,22,0,22,0,22,0,22,0,22,0,0,0,22,0,27,0,27,0,27,0,27,0,31,0,62,0,63,0,35,0,35,0,35,0,35,0,35,0,35,0,39,0,37,0,39,0,39,0,39,0,39,0,43,0,43,0,43,0,43,0,64,0,42,0,46,0,46,0,46,0,46,0,46,0,0,0,46,0,47,0,47,0,47,0,47,0,54,0,36,0,54,0,0,0,0,0,43,0,14,0,39,0,25,0,49,0,31,0,32,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,65,0,66,0,67,0,65,0,66,0,67,0,0,0,0,0,0,0,0,0,0,0,58,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,71,0,72,0,73,0,70,0,74,0,0,0,75,0,75,0,0,0,76,0,69,0,78,0,75,0,79,0,70,0,80,0,79,0,81,0,0,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,70,0,77,0,1,0,2,1,11,0,73,0,23,0,0,0,0,0,0,0,1,0,23,0,0,0,64,0,50,0,0,0,2,0,14,0,15,0,3,0,0,0,74,0,76,0,0,0,4,0,0,0,5,0,67,0,0,0,0,0,70,0,71,0,0,0,0,0,0,0,51,0,6,0,16,0,27,0,28,0,27,0,29,0,27,0,28,0,27,0,27,0,75,0,27,0,27,0,7,0,27,0,28,0,27,0,28,0,27,0,30,0,37,0,31,0,38,0,39,0,40,0,24,0,41,0,0,0,52,0,65,0,0,0,0,0,0,0,17,0,62,0,18,0,18,0,18,0,42,0,8,0,62,0,63,0,63,0,62,0,53,0,32,0,32,0,18,0,32,0,18,0,32,0,19,0,43,0,25,0,54,0,55,0,44,0,26,0,33,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,0,0,16,0,16,0,16,0,16,0,16,0,16,0,9,0,28,0,29,0,29,0,29,0,29,0,27,0,27,0,27,0,27,0,27,0,27,0,28,0,28,0,28,0,28,0,28,0,0,0,28,0,31,0,31,0,31,0,31,0,24,0,27,0,45,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,18,0,18,0,18,0,18,0,18,0,63,0,63,0,63,0,63,0,10,0,32,0,18,0,18,0,18,0,18,0,18,0,0,0,18,0,25,0,25,0,25,0,25,0,26,0,32,0,26,0,0,0,0,0,63,0,28,0,18,0,30,0,19,0,24,0,41,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,0,35,0,36,0,21,0,35,0,36,0,21,0,0,0,0,0,0,0,15,0,0,0,20,0,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,34,0,22,0,34,0,68,0,34,0,22,0,34,0,34,0,69,0,34,0,11,0,13,0,34,0,22,0,12,0,34,0,22,0,34,0,72,0,46,0,59,0,60,0,61,0,47,0,48,0,49,0,22,0,34,0,1,0,0,0,10,0,32,0,58,0,1,108,97,116,110,0,8,0,4,0,0,0,0,255,255,0,2,0,0,0,1,0,2,97,97,108,116,0,14,115,109,99,112,0,20,0,0,0,1,0,0,0,0,0,1,0,1,0,2,0,6,0,14,0,1,0,0,0,1,0,78,0,1,0,0,0,1,0,8,0,2,0,124,0,28,0,251,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,249,0,250,1,12,0,252,0,253,0,254,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,0,255,1,11,0,2,0,62,0,28,0,251,0,241,0,242,0,243,0,244,0,245,0,246,0,247,0,248,0,249,0,250,1,12,0,252,0,253,0,254,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,0,255,1,11,0,2,0,3,0,66,0,91,0,0,0,165,0,165,0,26,0,195,0,195,0,27,0,0,0,3,1,245,1,144,0,5,0,0,2,188,2,138,0,0,0,140,2,188,2,138,0,0,1,221,0,50,0,250,8,2,2,11,8,3,5,2,2,2,0,4,128,0,0,47,0,0,0,11,0,0,0,0,0,0,0,0,80,89,82,83,0,64,0,32,33,34,3,197,255,6,0,0,3,197,0,250,0,0,0,1,0,0,0,0,1,234,2,188,0,0,0,32,0,2,0,0,0,3,0,0,0,3,0,0,2,222,0,1,0,0,0,0,0,28,0,3,0,1,0,0,1,230,0,6,1,202,0,0,0,32,0,224,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,58,0,59,0,60,0,61,0,62,0,63,0,64,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,91,0,92,0,93,0,94,0,95,0,0,0,239,0,0,0,211,0,201,0,214,0,218,0,215,0,216,0,203,0,219,0,196,0,220,0,194,0,0,0,199,0,0,0,0,0,209,0,210,0,212,0,213,0,217,0,207,0,208,0,206,0,240,0,197,0,221,0,195,0,0,0,200,0,198,0,96,0,97,0,98,0,99,0,100,0,101,0,102,0,103,0,104,0,105,0,106,0,107,0,108,0,109,0,110,0,0,0,111,0,112,0,113,0,114,0,115,0,116,0,117,0,118,0,119,0,120,0,121,0,122,0,123,0,124,0,125,0,126,0,127,0,128,0,129,0,130,0,131,0,132,0,133,0,134,0,135,0,136,0,137,0,138,0,139,0,140,0,141,0,142,0,143,0,144,0,145,0,146,0,147,0,148,0,149,0,150,0,151,0,152,0,153,0,154,0,155,0,156,0,157,0,158,0,159,0,160,0,161,0,162,0,163,0,164,0,165,0,166,0,167,0,168,0,169,0,170,0,171,0,172,0,173,0,174,0,175,0,176,0,177,0,178,0,179,0,180,0,181,0,182,0,183,0,184,0,185,0,186,0,187,0,188,0,189,0,190,0,4,0,248,0,0,0,58,0,32,0,4,0,26,0,126,0,142,0,158,0,174,0,255,1,13,1,49,1,83,1,97,1,120,1,126,1,146,2,55,2,199,2,218,2,220,32,20,32,26,32,30,32,34,32,38,32,48,32,58,32,112,32,121,32,137,32,172,33,34,255,255,0,0,0,32,0,142,0,158,0,160,0,176,1,12,1,49,1,82,1,96,1,120,1,125,1,146,2,55,2,198,2,218,2,220,32,19,32,24,32,28,32,32,32,38,32,48,32,57,32,112,32,116,32,128,32,172,33,34,255,255,255,225,0,57,0,42,255,192,255,191,255,179,255,144,255,112,255,100,255,78,255,74,255,55,254,147,254,5,253,243,253,242,224,188,224,185,224,184,224,183,224,180,224,171,224,163,224,110,224,107,224,101,224,67,223,206,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,248,0,0,0,58,0,32,0,4,0,26,0,126,0,142,0,158,0,174,0,255,1,13,1,49,1,83,1,97,1,120,1,126,1,146,2,55,2,199,2,218,2,220,32,20,32,26,32,30,32,34,32,38,32,48,32,58,32,112,32,121,32,137,32,172,33,34,255,255,0,0,0,32,0,142,0,158,0,160,0,176,1,12,1,49,1,82,1,96,1,120,1,125,1,146,2,55,2,198,2,218,2,220,32,19,32,24,32,28,32,32,32,38,32,48,32,57,32,112,32,116,32,128,32,172,33,34,255,255,255,225,0,57,0,42,255,192,255,191,255,179,255,144,255,112,255,100,255,78,255,74,255,55,254,147,254,5,253,243,253,242,224,188,224,185,224,184,224,183,224,180,224,171,224,163,224,110,224,107,224,101,224,67,223,206,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,70,0,84,0,58,0,96,0,72,0,0,0,14,255,14,0,8,1,64,0,8,1,234,0,10,2,188,0,14,2,48,0,11,2,238,0,5,184,0,0,44,75,184,0,9,80,88,177,1,1,142,89,184,1,255,133,184,0,68,29,185,0,9,0,3,95,94,45,184,0,1,44,32,32,69,105,68,176,1,96,45,184,0,2,44,184,0,1,42,33,45,184,0,3,44,32,70,176,3,37,70,82,88,35,89,32,138,32,138,73,100,138,32,70,32,104,97,100,176,4,37,70,32,104,97,100,82,88,35,101,138,89,47,32,176,0,83,88,105,32,176,0,84,88,33,176,64,89,27,105,32,176,0,84,88,33,176,64,101,89,89,58,45,184,0,4,44,32,70,176,4,37,70,82,88,35,138,89,32,70,32,106,97,100,176,4,37,70,32,106,97,100,82,88,35,138,89,47,253,45,184,0,5,44,75,32,176,3,38,80,88,81,88,176,128,68,27,176,64,68,89,27,33,33,32,69,176,192,80,88,176,192,68,27,33,89,89,45,184,0,6,44,32,32,69,105,68,176,1,96,32,32,69,125,105,24,68,176,1,96,45,184,0,7,44,184,0,6,42,45,184,0,8,44,75,32,176,3,38,83,88,176,64,27,176,0,89,138,138,32,176,3,38,83,88,35,33,176,128,138,138,27,138,35,89,32,176,3,38,83,88,35,33,184,0,192,138,138,27,138,35,89,32,176,3,38,83,88,35,33,184,1,0,138,138,27,138,35,89,32,176,3,38,83,88,35,33,184,1,64,138,138,27,138,35,89,32,184,0,3,38,83,88,176,3,37,69,184,1,128,80,88,35,33,184,1,128,35,33,27,176,3,37,69,35,33,35,33,89,27,33,89,68,45,184,0,9,44,75,83,88,69,68,27,33,33,89,45,0,0,0,0,2,0,8,0,2,255,255,0,3,0,1,0,72,0,250,0,162,1,104,0,3,0,28,184,0,2,47,65,3,0,0,0,2,0,1,93,184,0,3,220,0,184,0,1,47,184,0,2,220,48,49,55,35,53,51,162,90,90,250,110,0,0,2,0,59,0,0,0,183,2,238,0,3,0,7,0,164,187,0,7,0,4,0,6,0,4,43,65,5,0,0,0,7,0,16,0,7,0,2,93,184,0,7,16,184,0,0,208,65,13,0,6,0,0,0,22,0,0,0,38,0,0,0,54,0,0,0,70,0,0,0,86,0,0,0,6,113,65,5,0,0,0,6,0,16,0,6,0,2,93,184,0,6,16,184,0,3,208,65,13,0,9,0,3,0,25,0,3,0,41,0,3,0,57,0,3,0,73,0,3,0,89,0,3,0,6,113,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,18,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,7,220,65,3,0,63,0,7,0,1,113,184,0,1,220,48,49,19,3,35,3,19,35,53,51,183,30,64,30,104,84,84,2,238,253,218,2,38,253,18,86,0,2,0,40,1,194,1,106,2,238,0,3,0,7,0,60,184,0,7,47,184,0,3,220,185,0,0,0,4,244,184,0,7,16,185,0,4,0,4,244,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,18,62,89,184,0,6,220,184,0,2,208,184,0,7,16,184,0,3,208,48,49,1,3,35,3,35,3,35,3,1,106,20,52,20,136,20,54,20,2,238,254,212,1,44,254,212,1,44,0,0,2,0,33,255,245,2,160,2,188,0,27,0,31,1,239,184,0,12,47,65,3,0,137,0,12,0,1,93,65,5,0,0,0,12,0,16,0,12,0,2,93,184,0,8,220,184,0,7,220,184,0,26,208,65,3,0,71,0,26,0,1,93,186,0,27,0,26,0,7,17,18,57,184,0,27,16,184,0,0,208,184,0,0,47,186,0,2,0,26,0,7,17,18,57,186,0,3,0,26,0,7,17,18,57,184,0,3,16,184,0,4,208,184,0,4,47,186,0,6,0,7,0,26,17,18,57,184,0,8,16,184,0,25,208,65,3,0,71,0,25,0,1,93,186,0,9,0,8,0,25,17,18,57,184,0,12,16,184,0,11,220,184,0,22,208,65,3,0,71,0,22,0,1,93,186,0,10,0,11,0,22,17,18,57,184,0,12,16,184,0,21,208,65,3,0,71,0,21,0,1,93,186,0,13,0,12,0,21,17,18,57,184,0,13,16,184,0,14,208,184,0,14,47,186,0,16,0,12,0,21,17,18,57,186,0,17,0,21,0,12,17,18,57,184,0,17,16,184,0,18,208,184,0,18,47,186,0,20,0,21,0,12,17,18,57,186,0,23,0,22,0,11,17,18,57,186,0,24,0,25,0,8,17,18,57,186,0,28,0,25,0,8,17,18,57,186,0,29,0,22,0,11,17,18,57,186,0,30,0,11,0,22,17,18,57,186,0,31,0,8,0,25,17,18,57,0,184,0,0,69,88,184,0,22,47,27,185,0,22,0,14,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,6,62,89,186,0,23,0,22,0,11,17,18,57,184,0,23,47,65,3,0,15,0,23,0,1,93,185,0,29,0,2,244,65,3,0,159,0,29,0,1,93,184,0,2,208,186,0,30,0,11,0,22,17,18,57,184,0,30,47,65,3,0,144,0,30,0,1,93,184,0,3,208,184,0,30,16,185,0,10,0,2,244,65,3,0,159,0,10,0,1,93,184,0,6,208,184,0,11,16,184,0,8,208,184,0,10,16,184,0,13,208,184,0,30,16,184,0,16,208,184,0,29,16,184,0,17,208,184,0,23,16,184,0,20,208,184,0,22,16,184,0,25,208,184,0,23,16,184,0,27,208,48,49,1,7,35,7,51,7,35,7,35,55,35,7,35,55,35,55,51,55,35,55,51,55,51,7,51,55,51,15,1,35,7,51,2,160,29,116,48,128,38,122,87,80,87,133,87,80,86,120,37,115,48,126,29,129,74,80,74,133,75,80,74,113,132,48,132,1,251,84,123,84,227,227,227,227,84,123,84,193,193,193,193,84,123,0,0,0,1,0,42,255,224,1,222,2,236,0,43,2,240,186,0,39,0,17,0,3,43,65,3,0,16,0,39,0,1,93,65,3,0,208,0,39,0,1,93,65,3,0,144,0,39,0,1,93,65,3,0,176,0,39,0,1,93,65,3,0,111,0,17,0,1,93,65,3,0,79,0,17,0,1,93,65,3,0,16,0,17,0,1,93,186,0,2,0,39,0,17,17,18,57,184,0,2,47,185,0,1,0,4,244,186,0,0,0,1,0,2,17,18,57,186,0,3,0,2,0,1,17,18,57,186,0,5,0,17,0,39,17,18,57,184,0,5,47,184,0,39,16,184,0,10,220,65,11,0,79,0,10,0,95,0,10,0,111,0,10,0,127,0,10,0,143,0,10,0,5,93,65,3,0,223,0,10,0,1,93,184,0,3,16,184,0,22,208,184,0,2,16,184,0,23,208,184,0,1,16,184,0,24,208,184,0,0,16,184,0,25,208,186,0,27,0,39,0,17,17,18,57,184,0,27,47,184,0,17,16,184,0,32,220,65,3,0,239,0,32,0,1,93,65,9,0,80,0,32,0,96,0,32,0,112,0,32,0,128,0,32,0,4,93,0,184,0,2,47,184,0,0,69,88,184,0,23,47,27,185,0,23,0,18,62,89,65,5,0,80,0,2,0,96,0,2,0,2,93,186,0,3,0,2,0,23,17,18,57,184,0,3,47,184,0,0,208,184,0,3,16,184,0,6,220,65,3,0,128,0,6,0,1,93,65,3,0,32,0,6,0,1,93,184,0,3,16,185,0,8,0,2,244,186,0,22,0,23,0,2,17,18,57,184,0,22,47,186,0,13,0,3,0,22,17,18,57,65,9,0,90,0,13,0,106,0,13,0,122,0,13,0,138,0,13,0,4,93,184,0,25,208,184,0,22,16,184,0,28,220,184,0,22,16,185,0,30,0,2,244,186,0,35,0,22,0,3,17,18,57,48,49,1,65,3,0,135,0,5,0,1,93,65,3,0,25,0,15,0,1,93,65,3,0,27,0,16,0,1,93,65,3,0,139,0,16,0,1,93,65,3,0,8,0,20,0,1,93,65,11,0,53,0,34,0,69,0,34,0,85,0,34,0,101,0,34,0,117,0,34,0,5,93,65,3,0,21,0,37,0,1,93,65,3,0,117,0,37,0,1,93,65,3,0,38,0,37,0,1,93,65,7,0,71,0,37,0,87,0,37,0,103,0,37,0,3,93,65,3,0,118,0,38,0,1,93,65,3,0,22,0,42,0,1,93,65,3,0,7,0,42,0,1,93,0,65,3,0,139,0,4,0,1,93,65,11,0,60,0,4,0,76,0,4,0,92,0,4,0,108,0,4,0,124,0,4,0,5,93,65,3,0,139,0,5,0,1,93,65,3,0,137,0,12,0,1,93,65,3,0,24,0,15,0,1,93,65,3,0,41,0,15,0,1,93,65,3,0,6,0,20,0,1,93,65,3,0,131,0,26,0,1,93,65,11,0,52,0,26,0,68,0,26,0,84,0,26,0,100,0,26,0,116,0,26,0,5,93,65,11,0,55,0,34,0,71,0,34,0,87,0,34,0,103,0,34,0,119,0,34,0,5,93,65,3,0,69,0,37,0,1,93,65,5,0,22,0,37,0,38,0,37,0,2,93,65,7,0,86,0,37,0,102,0,37,0,118,0,37,0,3,93,65,5,0,9,0,42,0,25,0,42,0,2,93,37,23,35,55,38,39,55,22,51,50,53,52,46,4,53,52,62,2,55,39,51,7,22,23,7,38,35,34,21,20,30,4,21,20,14,2,1,29,15,89,17,117,59,12,70,116,110,47,71,82,71,47,21,45,71,49,17,90,16,108,53,9,102,65,121,49,73,85,73,49,14,42,76,82,114,113,6,32,109,58,63,29,36,26,24,34,52,42,28,53,41,28,5,117,117,6,31,96,48,58,27,32,23,24,38,61,49,22,49,43,33,0,0,0,0,5,0,35,255,242,3,37,2,193,0,3,0,21,0,37,0,55,0,71,2,46,184,0,7,47,184,0,41,47,65,7,0,0,0,41,0,16,0,41,0,32,0,41,0,3,93,184,0,51,220,186,0,1,0,7,0,51,17,18,57,184,0,1,47,184,0,0,220,184,0,1,16,184,0,3,220,184,0,2,220,184,0,7,16,184,0,17,220,184,0,7,16,184,0,27,220,65,3,0,31,0,27,0,1,113,184,0,17,16,184,0,33,220,65,3,0,16,0,33,0,1,113,184,0,41,16,184,0,61,220,65,3,0,31,0,61,0,1,113,184,0,51,16,184,0,67,220,65,3,0,16,0,67,0,1,113,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,14,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,14,62,89,184,0,0,69,88,184,0,38,47,27,185,0,38,0,6,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,12,16,184,0,4,220,184,0,12,16,184,0,22,220,184,0,4,16,184,0,30,220,184,0,38,16,184,0,46,220,184,0,56,220,184,0,38,16,184,0,64,220,48,49,1,65,3,0,87,0,0,0,1,93,65,7,0,10,0,6,0,26,0,6,0,42,0,6,0,3,93,65,7,0,10,0,9,0,26,0,9,0,42,0,9,0,3,93,65,3,0,200,0,10,0,1,93,65,3,0,199,0,14,0,1,93,65,7,0,5,0,15,0,21,0,15,0,37,0,15,0,3,93,65,7,0,5,0,19,0,21,0,19,0,37,0,19,0,3,93,65,3,0,199,0,20,0,1,93,65,5,0,118,0,24,0,134,0,24,0,2,93,65,3,0,201,0,39,0,1,93,65,7,0,10,0,40,0,26,0,40,0,42,0,40,0,3,93,65,7,0,10,0,43,0,26,0,43,0,42,0,43,0,3,93,65,3,0,200,0,44,0,1,93,65,3,0,199,0,48,0,1,93,65,7,0,5,0,49,0,21,0,49,0,37,0,49,0,3,93,65,7,0,5,0,53,0,21,0,53,0,37,0,53,0,3,93,65,3,0,199,0,54,0,1,93,65,5,0,118,0,58,0,134,0,58,0,2,93,0,65,3,0,203,0,5,0,1,93,65,3,0,197,0,10,0,1,93,65,3,0,195,0,14,0,1,93,65,3,0,202,0,20,0,1,93,65,3,0,201,0,39,0,1,93,65,3,0,199,0,44,0,1,93,65,3,0,198,0,48,0,1,93,65,3,0,202,0,54,0,1,93,23,35,1,51,1,34,38,53,52,62,2,51,50,30,2,21,20,14,2,3,34,14,2,21,20,22,51,50,54,53,52,46,2,1,34,38,53,52,62,2,51,50,30,2,21,20,14,2,3,34,14,2,21,20,22,51,50,54,53,52,46,2,237,75,1,165,74,254,36,64,82,24,42,55,30,31,53,39,23,23,40,55,29,19,34,26,15,54,37,40,54,14,26,33,1,195,64,82,24,42,55,30,31,53,39,23,23,40,55,29,19,34,26,15,54,37,40,54,14,26,33,12,2,200,254,145,94,88,46,71,48,25,24,46,67,44,46,71,49,25,1,64,19,36,52,31,60,70,75,64,29,48,34,18,253,101,94,88,46,71,48,25,24,46,67,44,46,71,49,25,1,64,19,36,52,31,60,70,75,64,29,48,34,18,0,3,0,36,255,233,2,81,2,191,0,30,0,43,0,51,3,97,186,0,28,0,10,0,3,43,65,3,0,127,0,10,0,1,93,65,3,0,16,0,10,0,1,93,184,0,10,16,185,0,47,0,4,244,65,3,0,16,0,28,0,1,93,184,0,28,16,185,0,27,0,5,244,186,0,44,0,47,0,27,17,18,57,65,3,0,105,0,44,0,1,93,186,0,30,0,28,0,10,17,18,57,65,3,0,103,0,30,0,1,93,186,0,2,0,44,0,30,17,18,57,186,0,14,0,10,0,28,17,18,57,184,0,14,47,184,0,22,220,65,3,0,128,0,22,0,1,93,186,0,12,0,14,0,22,17,18,57,65,3,0,25,0,12,0,1,93,65,3,0,8,0,12,0,1,93,186,0,24,0,22,0,14,17,18,57,65,3,0,135,0,24,0,1,93,65,3,0,10,0,24,0,1,93,65,3,0,153,0,24,0,1,93,65,3,0,102,0,24,0,1,93,65,3,0,117,0,24,0,1,93,186,0,25,0,44,0,30,17,18,57,65,3,0,136,0,25,0,1,93,184,0,14,16,184,0,34,220,65,3,0,159,0,34,0,1,93,65,7,0,63,0,34,0,79,0,34,0,95,0,34,0,3,113,186,0,36,0,12,0,24,17,18,57,184,0,22,16,184,0,41,220,65,3,0,161,0,41,0,1,93,65,3,0,144,0,41,0,1,93,186,0,45,0,12,0,24,17,18,57,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,14,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,6,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,186,0,27,0,19,0,5,17,18,57,184,0,27,47,186,0,2,0,5,0,27,17,18,57,186,0,36,0,19,0,5,17,18,57,65,3,0,101,0,36,0,1,93,65,3,0,133,0,36,0,1,93,186,0,45,0,19,0,5,17,18,57,65,3,0,105,0,45,0,1,93,186,0,12,0,36,0,45,17,18,57,186,0,24,0,36,0,45,17,18,57,186,0,25,0,27,0,5,17,18,57,65,7,0,101,0,25,0,117,0,25,0,133,0,25,0,3,93,186,0,30,0,25,0,2,17,18,57,184,0,19,16,185,0,31,0,1,244,186,0,44,0,25,0,2,17,18,57,65,3,0,103,0,44,0,1,93,184,0,5,16,185,0,50,0,1,244,48,49,1,65,3,0,22,0,3,0,1,93,65,7,0,88,0,7,0,104,0,7,0,120,0,7,0,3,93,65,3,0,105,0,8,0,1,93,65,3,0,137,0,8,0,1,93,65,3,0,10,0,8,0,1,93,65,3,0,90,0,8,0,1,93,65,3,0,122,0,8,0,1,93,65,3,0,89,0,9,0,1,93,65,3,0,9,0,16,0,1,93,65,3,0,27,0,16,0,1,93,65,5,0,6,0,20,0,22,0,20,0,2,93,65,3,0,4,0,21,0,1,93,65,5,0,38,0,21,0,54,0,21,0,2,93,65,3,0,88,0,25,0,1,93,0,65,3,0,25,0,3,0,1,93,65,3,0,89,0,3,0,1,93,65,3,0,122,0,3,0,1,93,65,7,0,89,0,7,0,105,0,7,0,121,0,7,0,3,93,65,3,0,88,0,8,0,1,93,65,3,0,120,0,8,0,1,93,65,3,0,9,0,8,0,1,93,65,3,0,105,0,8,0,1,93,65,3,0,88,0,9,0,1,93,65,3,0,21,0,16,0,1,93,65,3,0,6,0,16,0,1,93,65,3,0,20,0,20,0,1,93,65,3,0,68,0,20,0,1,93,65,3,0,5,0,20,0,1,93,65,3,0,37,0,20,0,1,93,65,3,0,54,0,20,0,1,93,65,3,0,86,0,20,0,1,93,65,3,0,85,0,25,0,1,93,65,3,0,71,0,25,0,1,93,65,3,0,137,0,45,0,1,93,33,35,39,14,1,35,34,46,2,53,52,55,38,53,52,62,2,51,50,22,21,20,7,23,54,55,51,6,7,3,34,6,21,20,23,63,1,62,1,53,52,38,19,39,6,21,20,22,51,50,2,81,92,44,44,86,58,60,87,58,28,126,75,31,53,71,40,72,71,164,190,32,7,81,4,61,236,43,59,55,53,20,29,24,43,106,208,81,75,73,88,46,38,31,27,49,68,41,115,89,91,79,39,61,44,23,69,57,119,102,195,41,149,156,95,2,22,52,48,61,67,41,17,25,44,26,36,39,253,239,208,57,87,55,69,0,0,0,1,0,41,1,194,0,141,2,238,0,3,0,34,184,0,3,47,185,0,0,0,4,244,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,18,62,89,184,0,2,220,48,49,19,3,35,3,141,18,64,18,2,238,254,212,1,44,0,0,0,1,0,42,255,120,0,237,2,238,0,15,0,150,184,0,6,47,184,0,12,220,184,0,0,208,184,0,12,16,184,0,11,220,184,0,1,208,184,0,6,16,185,0,14,0,5,244,65,3,0,15,0,17,0,1,93,0,184,0,0,47,184,0,0,69,88,184,0,12,47,27,185,0,12,0,18,62,89,48,49,1,65,3,0,134,0,13,0,1,93,65,3,0,55,0,13,0,1,93,65,3,0,151,0,13,0,1,93,65,3,0,134,0,15,0,1,93,65,3,0,151,0,15,0,1,93,0,65,3,0,152,0,13,0,1,93,65,3,0,137,0,13,0,1,93,65,3,0,150,0,15,0,1,93,65,3,0,135,0,15,0,1,93,23,35,46,3,53,52,62,2,55,51,6,21,20,237,79,30,44,28,14,14,29,44,29,79,123,136,45,93,106,124,75,76,124,106,92,45,200,243,244,0,0,1,0,24,255,120,0,219,2,238,0,15,0,149,184,0,11,47,65,3,0,48,0,11,0,1,93,65,3,0,112,0,11,0,1,93,184,0,5,220,184,0,6,220,184,0,0,208,184,0,5,16,184,0,1,208,184,0,11,16,185,0,3,0,5,244,65,3,0,15,0,17,0,1,93,0,184,0,0,47,184,0,0,69,88,184,0,6,47,27,185,0,6,0,18,62,89,48,49,1,65,3,0,152,0,2,0,1,93,65,3,0,137,0,2,0,1,93,65,3,0,56,0,4,0,1,93,65,5,0,137,0,4,0,153,0,4,0,2,93,0,65,3,0,151,0,2,0,1,93,65,5,0,136,0,4,0,152,0,4,0,2,93,23,35,54,53,52,39,51,30,3,21,20,14,2,103,79,123,123,79,29,44,29,14,14,29,43,136,199,244,243,200,45,92,106,124,76,75,124,106,93,0,0,0,1,0,33,1,168,1,137,2,237,0,14,0,193,186,0,9,0,8,0,3,43,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,18,62,89,184,0,2,220,65,3,0,64,0,2,0,1,93,65,3,0,64,0,2,0,1,113,184,0,0,208,184,0,0,47,48,49,1,65,5,0,40,0,3,0,56,0,3,0,2,113,65,3,0,56,0,4,0,1,113,65,3,0,228,0,5,0,1,93,65,3,0,121,0,5,0,1,93,65,5,0,137,0,11,0,153,0,11,0,2,93,65,3,0,55,0,14,0,1,113,65,3,0,73,0,14,0,1,93,0,65,3,0,7,0,0,0,1,113,65,3,0,53,0,1,0,1,93,65,3,0,167,0,1,0,1,93,65,3,0,230,0,5,0,1,93,65,3,0,231,0,6,0,1,93,65,7,0,184,0,11,0,200,0,11,0,216,0,11,0,3,93,1,39,7,39,55,39,55,23,39,51,7,55,23,7,23,1,59,102,100,32,108,156,23,148,13,46,16,149,23,158,113,1,171,133,136,32,117,65,41,86,156,156,86,42,63,115,0,0,0,0,1,0,46,0,102,1,160,1,196,0,11,0,177,184,0,4,47,65,3,0,143,0,4,0,1,93,65,3,0,160,0,4,0,1,93,65,3,0,0,0,4,0,1,93,184,0,1,220,65,3,0,159,0,1,0,1,93,184,0,0,220,65,3,0,144,0,0,0,1,93,184,0,4,16,184,0,5,220,65,3,0,159,0,5,0,1,93,184,0,4,16,184,0,7,208,184,0,1,16,184,0,10,208,0,184,0,4,47,184,0,1,208,184,0,4,16,184,0,3,220,184,0,4,16,184,0,7,220,65,7,0,64,0,7,0,80,0,7,0,96,0,7,0,3,113,184,0,8,220,65,3,0,47,0,8,0,1,93,65,5,0,31,0,8,0,47,0,8,0,2,113,65,3,0,175,0,8,0,1,93,184,0,7,16,184,0,10,208,48,49,37,35,21,35,53,35,53,51,53,51,21,51,1,160,145,80,145,145,80,145,238,136,136,86,128,128,0,0,0,0,1,0,57,255,147,0,158,0,86,0,6,0,95,187,0,6,0,4,0,5,0,4,43,65,3,0,16,0,5,0,1,93,184,0,5,16,184,0,2,208,65,3,0,16,0,6,0,1,93,186,0,3,0,5,0,6,17,18,57,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,0,208,184,0,4,16,184,0,1,220,184,0,4,16,184,0,5,220,65,3,0,63,0,5,0,1,113,48,49,51,7,39,55,39,53,51,158,78,23,35,34,100,109,13,87,9,86,0,0,1,0,57,0,238,1,111,1,68,0,3,0,37,184,0,1,47,65,3,0,0,0,1,0,1,93,184,0,0,220,65,3,0,96,0,0,0,1,93,0,184,0,1,47,184,0,2,220,48,49,37,33,53,33,1,111,254,202,1,54,238,86,0,0,1,0,57,0,0,0,147,0,86,0,3,0,61,187,0,0,0,4,0,1,0,4,43,65,3,0,16,0,0,0,1,93,65,3,0,16,0,1,0,1,93,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,184,0,2,220,65,3,0,63,0,2,0,1,113,48,49,51,35,53,51,147,90,90,86,0,0,1,0,19,255,171,1,241,2,188,0,3,0,61,184,0,2,47,184,0,0,220,65,3,0,128,0,0,0,1,93,184,0,2,16,185,0,1,0,4,244,184,0,0,16,185,0,3,0,4,244,0,184,0,1,47,184,0,0,69,88,184,0,3,47,27,185,0,3,0,14,62,89,48,49,9,1,35,1,1,241,254,134,100,1,122,2,188,252,239,3,17,0,2,0,63,255,242,2,139,2,202,0,19,0,35,2,48,186,0,15,0,5,0,3,43,65,3,0,15,0,5,0,1,113,65,3,0,143,0,5,0,1,93,65,3,0,239,0,5,0,1,93,65,5,0,0,0,5,0,16,0,5,0,2,93,65,3,0,32,0,15,0,1,113,65,3,0,80,0,15,0,1,113,65,3,0,64,0,15,0,1,93,65,5,0,0,0,15,0,16,0,15,0,2,93,184,0,5,16,185,0,25,0,4,244,184,0,15,16,185,0,31,0,4,244,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,10,16,185,0,20,0,2,244,184,0,0,16,185,0,28,0,2,244,48,49,1,65,3,0,25,0,2,0,1,93,65,7,0,105,0,2,0,121,0,2,0,137,0,2,0,3,93,65,3,0,42,0,2,0,1,93,65,3,0,24,0,3,0,1,93,65,7,0,89,0,3,0,105,0,3,0,121,0,3,0,3,93,65,3,0,104,0,8,0,1,93,65,3,0,25,0,8,0,1,93,65,3,0,121,0,8,0,1,93,65,5,0,22,0,12,0,38,0,12,0,2,93,65,3,0,102,0,12,0,1,93,65,3,0,22,0,13,0,1,93,65,7,0,102,0,13,0,118,0,13,0,134,0,13,0,3,93,65,3,0,87,0,13,0,1,93,65,3,0,86,0,17,0,1,93,65,3,0,38,0,18,0,1,93,65,3,0,23,0,18,0,1,93,65,7,0,103,0,18,0,119,0,18,0,135,0,18,0,3,93,65,3,0,89,0,26,0,1,93,0,65,3,0,137,0,1,0,1,93,65,3,0,40,0,2,0,1,93,65,3,0,25,0,2,0,1,93,65,7,0,105,0,2,0,121,0,2,0,137,0,2,0,3,93,65,3,0,24,0,3,0,1,93,65,3,0,104,0,3,0,1,93,65,3,0,121,0,3,0,1,93,65,3,0,22,0,8,0,1,93,65,3,0,118,0,8,0,1,93,65,3,0,103,0,8,0,1,93,65,7,0,103,0,12,0,119,0,12,0,135,0,12,0,3,93,65,3,0,117,0,13,0,1,93,65,3,0,23,0,13,0,1,93,65,3,0,103,0,13,0,1,93,65,3,0,88,0,17,0,1,93,65,5,0,25,0,18,0,41,0,18,0,2,93,65,5,0,105,0,18,0,121,0,18,0,2,93,65,3,0,138,0,18,0,1,93,65,3,0,87,0,26,0,1,93,5,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,3,34,14,2,21,20,22,51,50,54,53,52,46,2,1,95,65,106,75,42,46,81,110,63,62,106,77,43,43,79,111,57,41,72,53,31,102,87,91,108,29,51,70,14,50,92,130,80,83,139,99,55,53,94,132,78,84,137,97,53,2,130,39,74,108,69,132,134,143,142,64,101,69,37,0,0,0,1,0,34,0,0,0,254,2,188,0,11,0,150,187,0,0,0,4,0,1,0,4,43,65,3,0,16,0,0,0,1,93,65,3,0,16,0,1,0,1,93,184,0,1,16,184,0,5,220,186,0,10,0,1,0,0,17,18,57,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,14,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,184,0,10,16,184,0,4,220,186,0,2,0,10,0,4,17,18,57,65,5,0,235,0,2,0,251,0,2,0,2,93,65,7,0,11,0,2,0,27,0,2,0,43,0,2,0,3,113,65,5,0,202,0,2,0,218,0,2,0,2,93,185,0,5,0,2,244,48,49,51,35,17,6,7,39,62,3,55,51,254,100,54,50,16,21,43,39,33,11,73,2,51,45,16,89,7,23,29,33,17,0,0,1,0,50,0,0,1,214,2,202,0,28,1,188,186,0,22,0,12,0,3,43,65,3,0,95,0,12,0,1,93,184,0,12,16,184,0,1,208,65,3,0,42,0,1,0,1,113,65,3,0,67,0,1,0,1,113,184,0,22,16,185,0,6,0,4,244,184,0,1,16,184,0,27,208,65,3,0,114,0,27,0,1,93,65,3,0,19,0,27,0,1,113,65,3,0,69,0,27,0,1,93,65,3,0,245,0,27,0,1,93,65,3,0,5,0,27,0,1,113,65,5,0,83,0,27,0,99,0,27,0,2,93,65,5,0,67,0,27,0,83,0,27,0,2,113,65,3,0,33,0,27,0,1,113,65,3,0,128,0,27,0,1,93,184,0,22,16,184,0,28,208,184,0,28,47,0,184,0,0,69,88,184,0,17,47,27,185,0,17,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,186,0,4,0,17,0,0,17,18,57,184,0,17,16,185,0,9,0,2,244,184,0,17,16,184,0,11,220,185,0,12,0,2,244,65,3,0,86,0,12,0,1,93,186,0,25,0,0,0,17,17,18,57,184,0,0,16,185,0,28,0,2,244,48,49,1,65,5,0,105,0,3,0,121,0,3,0,2,93,65,3,0,89,0,4,0,1,93,65,3,0,149,0,19,0,1,93,65,7,0,103,0,19,0,119,0,19,0,135,0,19,0,3,93,65,7,0,101,0,20,0,117,0,20,0,133,0,20,0,3,93,65,3,0,6,0,20,0,1,93,65,3,0,150,0,20,0,1,93,0,65,3,0,118,0,3,0,1,93,65,3,0,133,0,4,0,1,93,65,3,0,22,0,4,0,1,93,65,3,0,87,0,4,0,1,93,65,3,0,133,0,14,0,1,93,65,7,0,6,0,14,0,22,0,14,0,38,0,14,0,3,93,65,7,0,101,0,19,0,117,0,19,0,133,0,19,0,3,93,65,3,0,6,0,20,0,1,93,65,3,0,151,0,20,0,1,93,41,1,62,1,55,54,53,52,38,35,34,7,39,62,3,51,50,30,2,21,20,14,2,7,51,1,214,254,98,91,116,28,56,65,57,93,70,12,7,35,51,67,39,55,75,45,19,23,51,82,59,242,129,179,52,104,48,54,59,93,85,13,34,30,20,35,55,69,33,36,83,103,130,84,0,1,0,40,255,242,1,228,2,202,0,49,2,46,186,0,45,0,5,0,3,43,65,3,0,79,0,5,0,1,93,65,3,0,143,0,5,0,1,93,65,3,0,16,0,5,0,1,93,65,3,0,16,0,45,0,1,113,65,3,0,16,0,45,0,1,93,184,0,45,16,185,0,16,0,4,244,186,0,22,0,45,0,5,17,18,57,184,0,22,47,186,0,40,0,45,0,5,17,18,57,184,0,40,47,185,0,27,0,4,244,186,0,32,0,5,0,45,17,18,57,184,0,32,47,186,0,43,0,22,0,40,17,18,57,65,3,0,117,0,43,0,1,93,65,3,0,86,0,43,0,1,93,65,3,0,100,0,43,0,1,93,65,3,0,132,0,43,0,1,93,0,184,0,0,69,88,184,0,35,47,27,185,0,35,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,6,220,65,3,0,32,0,6,0,1,93,184,0,5,208,65,7,0,10,0,5,0,26,0,5,0,42,0,5,0,3,113,184,0,0,16,185,0,11,0,2,244,186,0,24,0,35,0,0,17,18,57,184,0,24,47,185,0,21,0,2,244,184,0,35,16,185,0,29,0,2,244,184,0,35,16,184,0,31,220,65,5,0,144,0,31,0,160,0,31,0,2,93,186,0,43,0,24,0,21,17,18,57,48,49,1,65,3,0,137,0,3,0,1,93,65,13,0,56,0,33,0,72,0,33,0,88,0,33,0,104,0,33,0,120,0,33,0,136,0,33,0,6,93,65,3,0,7,0,37,0,1,93,65,7,0,87,0,42,0,103,0,42,0,119,0,42,0,3,93,65,5,0,85,0,44,0,101,0,44,0,2,93,65,3,0,133,0,44,0,1,93,65,3,0,118,0,44,0,1,93,65,3,0,87,0,47,0,1,93,0,65,11,0,57,0,3,0,73,0,3,0,89,0,3,0,105,0,3,0,121,0,3,0,5,93,65,3,0,138,0,3,0,1,93,65,13,0,54,0,33,0,70,0,33,0,86,0,33,0,102,0,33,0,118,0,33,0,134,0,33,0,6,93,65,3,0,6,0,37,0,1,93,65,3,0,88,0,42,0,1,93,65,3,0,105,0,42,0,1,93,65,3,0,122,0,42,0,1,93,65,3,0,86,0,44,0,1,93,65,3,0,118,0,44,0,1,93,65,3,0,103,0,44,0,1,93,65,3,0,135,0,44,0,1,93,65,3,0,90,0,47,0,1,93,65,3,0,89,0,48,0,1,93,23,34,46,2,39,55,30,3,51,50,62,2,53,52,46,2,43,1,55,51,50,54,53,52,35,34,7,39,62,1,51,50,30,2,21,20,6,7,22,21,20,14,2,230,30,61,53,39,7,23,28,42,37,38,23,30,55,40,24,17,39,63,47,73,10,37,91,76,119,85,50,17,16,83,63,66,83,47,17,40,51,116,40,69,93,14,11,17,18,7,88,15,20,14,6,15,34,54,38,30,48,34,18,76,58,57,94,41,81,16,30,35,53,63,29,42,69,35,39,135,54,85,59,30,0,2,0,14,0,0,1,244,2,188,0,9,0,12,1,7,186,0,1,0,5,0,3,43,184,0,1,16,184,0,0,220,184,0,1,16,185,0,4,0,4,244,65,3,0,143,0,5,0,1,93,184,0,10,208,184,0,1,16,184,0,8,208,186,0,6,0,10,0,8,17,18,57,65,3,0,137,0,6,0,1,93,184,0,5,16,184,0,12,208,65,3,0,116,0,12,0,1,93,65,3,0,22,0,12,0,1,113,65,3,0,37,0,12,0,1,113,65,3,0,99,0,12,0,1,93,65,3,0,130,0,12,0,1,93,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,14,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,186,0,1,0,6,0,3,17,18,57,184,0,1,47,65,3,0,144,0,1,0,1,93,184,0,4,208,184,0,1,16,185,0,8,0,2,244,184,0,10,208,184,0,6,16,184,0,11,208,65,3,0,252,0,11,0,1,93,65,3,0,46,0,11,0,1,113,65,5,0,125,0,11,0,141,0,11,0,2,93,65,3,0,11,0,11,0,1,113,65,3,0,106,0,11,0,1,93,48,49,65,3,0,92,0,11,0,1,93,37,35,21,35,53,33,1,51,17,51,35,53,7,1,244,85,100,254,211,1,66,79,85,185,153,190,190,190,1,254,254,88,254,254,0,0,0,0,1,0,51,255,242,1,233,2,188,0,31,1,213,186,0,27,0,5,0,3,43,65,3,0,79,0,5,0,1,113,65,3,0,47,0,5,0,1,93,65,3,0,47,0,5,0,1,113,65,3,0,16,0,5,0,1,93,65,3,0,16,0,27,0,1,93,65,3,0,64,0,27,0,1,93,65,3,0,96,0,27,0,1,93,184,0,27,16,185,0,13,0,4,244,186,0,17,0,5,0,27,17,18,57,184,0,17,47,184,0,16,220,65,3,0,86,0,16,0,1,113,184,0,17,16,184,0,18,208,186,0,19,0,17,0,27,17,18,57,184,0,19,47,184,0,16,16,184,0,21,208,186,0,22,0,21,0,16,17,18,57,65,3,0,39,0,22,0,1,113,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,6,220,65,3,0,48,0,6,0,1,93,185,0,5,0,2,244,184,0,0,16,185,0,8,0,2,244,186,0,22,0,19,0,0,17,18,57,184,0,22,47,185,0,16,0,2,244,184,0,19,16,185,0,20,0,2,244,48,49,1,65,3,0,72,0,3,0,1,93,65,3,0,137,0,11,0,1,93,65,3,0,70,0,24,0,1,93,65,3,0,102,0,24,0,1,93,65,3,0,55,0,24,0,1,93,65,3,0,100,0,25,0,1,93,65,3,0,69,0,25,0,1,93,65,3,0,54,0,25,0,1,93,65,3,0,86,0,25,0,1,93,65,3,0,119,0,25,0,1,93,65,3,0,55,0,29,0,1,93,65,3,0,71,0,30,0,1,93,0,65,3,0,73,0,3,0,1,93,65,3,0,135,0,11,0,1,93,65,3,0,67,0,24,0,1,93,65,3,0,53,0,24,0,1,93,65,5,0,85,0,24,0,101,0,24,0,2,93,65,9,0,53,0,25,0,69,0,25,0,85,0,25,0,101,0,25,0,4,93,65,3,0,119,0,25,0,1,93,65,3,0,56,0,29,0,1,93,65,3,0,57,0,30,0,1,93,65,3,0,76,0,30,0,1,93,23,34,46,2,39,55,22,51,50,62,2,53,52,38,43,1,19,33,7,35,7,50,30,2,21,20,14,2,220,22,54,50,37,6,23,72,73,35,60,45,26,99,112,85,42,1,62,9,233,20,81,115,72,34,44,73,98,14,7,12,14,6,89,42,25,43,58,34,63,60,1,89,86,174,25,50,77,52,56,92,66,36,0,0,0,0,2,0,62,255,242,2,12,2,188,0,27,0,47,2,74,186,0,23,0,5,0,3,43,65,3,0,239,0,5,0,1,93,65,3,0,31,0,5,0,1,93,65,3,0,143,0,5,0,1,93,65,3,0,0,0,5,0,1,93,65,3,0,0,0,23,0,1,93,65,3,0,192,0,23,0,1,93,65,5,0,48,0,23,0,64,0,23,0,2,93,186,0,11,0,23,0,5,17,18,57,184,0,11,47,184,0,5,16,185,0,33,0,4,244,184,0,16,208,184,0,23,16,185,0,43,0,4,244,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,10,16,184,0,12,208,65,3,0,249,0,12,0,1,93,184,0,0,16,184,0,18,220,65,3,0,64,0,18,0,1,93,186,0,16,0,18,0,0,17,18,57,65,3,0,243,0,16,0,1,93,185,0,28,0,2,244,184,0,0,16,185,0,38,0,2,244,48,49,1,65,7,0,89,0,2,0,105,0,2,0,121,0,2,0,3,93,65,3,0,138,0,2,0,1,93,65,3,0,91,0,3,0,1,93,65,3,0,136,0,8,0,1,93,65,3,0,247,0,11,0,1,93,65,3,0,69,0,13,0,1,93,65,3,0,117,0,13,0,1,93,65,3,0,54,0,13,0,1,93,65,3,0,103,0,13,0,1,93,65,5,0,102,0,14,0,118,0,14,0,2,93,65,5,0,102,0,20,0,118,0,20,0,2,93,65,5,0,7,0,20,0,23,0,20,0,2,93,65,3,0,135,0,20,0,1,93,65,3,0,102,0,21,0,1,93,65,3,0,134,0,21,0,1,93,65,3,0,119,0,21,0,1,93,65,3,0,87,0,25,0,1,93,65,3,0,86,0,26,0,1,93,0,65,3,0,136,0,2,0,1,93,65,7,0,89,0,2,0,105,0,2,0,121,0,2,0,3,93,65,3,0,135,0,8,0,1,93,65,3,0,6,0,9,0,1,93,65,3,0,250,0,11,0,1,93,65,3,0,72,0,13,0,1,93,65,3,0,120,0,13,0,1,93,65,3,0,107,0,13,0,1,93,65,3,0,122,0,14,0,1,93,65,3,0,87,0,17,0,1,93,65,3,0,117,0,20,0,1,93,65,5,0,6,0,20,0,22,0,20,0,2,93,65,3,0,102,0,20,0,1,93,65,3,0,134,0,20,0,1,93,65,3,0,102,0,21,0,1,93,65,3,0,134,0,21,0,1,93,65,3,0,119,0,21,0,1,93,65,3,0,88,0,25,0,1,93,65,3,0,90,0,26,0,1,93,5,34,46,2,53,52,62,2,55,23,14,3,7,54,51,50,30,2,21,20,14,2,3,34,14,2,21,20,30,2,51,50,62,2,53,52,46,2,1,25,50,80,58,31,61,91,105,43,65,40,76,66,55,19,46,95,45,78,57,32,35,64,89,33,29,51,38,23,20,36,48,27,33,50,34,17,13,30,47,14,30,62,96,66,98,168,123,70,1,38,18,46,69,100,72,63,27,51,76,48,49,84,63,36,1,97,20,36,51,31,33,49,33,17,24,40,52,29,24,45,35,21,0,1,0,39,0,0,1,236,2,188,0,5,0,190,186,0,0,0,5,0,3,43,65,3,0,55,0,0,0,1,93,65,3,0,87,0,0,0,1,93,184,0,0,16,184,0,1,208,184,0,0,16,184,0,3,208,65,7,0,41,0,3,0,57,0,3,0,73,0,3,0,3,93,65,3,0,90,0,3,0,1,93,65,5,0,108,0,3,0,124,0,3,0,2,93,65,3,0,141,0,3,0,1,93,65,5,0,26,0,3,0,42,0,3,0,2,113,65,3,0,249,0,3,0,1,93,65,3,0,9,0,3,0,1,113,65,3,0,232,0,3,0,1,93,65,3,0,151,0,3,0,1,93,184,0,2,208,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,14,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,6,62,89,184,0,5,16,185,0,4,0,2,244,48,49,9,1,35,1,33,53,1,236,254,209,100,1,9,254,197,2,188,253,68,2,102,86,0,0,0,3,0,59,255,242,2,37,2,201,0,31,0,43,0,57,2,65,186,0,27,0,5,0,3,43,65,3,0,31,0,5,0,1,113,65,3,0,0,0,5,0,1,93,65,5,0,0,0,27,0,16,0,27,0,2,93,65,3,0,80,0,27,0,1,113,65,3,0,32,0,27,0,1,113,186,0,9,0,5,0,27,17,18,57,184,0,9,47,186,0,19,0,27,0,5,17,18,57,184,0,19,47,186,0,7,0,9,0,19,17,18,57,186,0,24,0,19,0,9,17,18,57,184,0,9,16,185,0,32,0,4,244,184,0,19,16,185,0,38,0,4,244,184,0,5,16,185,0,47,0,4,244,184,0,27,16,185,0,55,0,4,244,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,186,0,35,0,14,0,0,17,18,57,65,3,0,134,0,35,0,1,93,65,3,0,170,0,35,0,1,93,65,3,0,185,0,35,0,1,93,65,3,0,86,0,35,0,1,93,65,5,0,101,0,35,0,117,0,35,0,2,93,186,0,44,0,0,0,14,17,18,57,65,3,0,138,0,44,0,1,93,65,3,0,185,0,44,0,1,93,65,3,0,41,0,44,0,1,93,186,0,7,0,35,0,44,17,18,57,186,0,24,0,35,0,44,17,18,57,184,0,14,16,185,0,41,0,2,244,184,0,0,16,185,0,50,0,2,244,48,49,1,65,3,0,104,0,2,0,1,93,65,3,0,90,0,2,0,1,93,65,3,0,89,0,3,0,1,93,65,3,0,10,0,3,0,1,93,65,3,0,122,0,3,0,1,93,65,3,0,107,0,3,0,1,93,65,5,0,57,0,8,0,73,0,8,0,2,93,65,3,0,24,0,11,0,1,93,65,3,0,9,0,11,0,1,93,65,5,0,6,0,17,0,22,0,17,0,2,93,65,3,0,100,0,26,0,1,93,65,3,0,117,0,26,0,1,93,65,5,0,86,0,29,0,102,0,29,0,2,93,65,3,0,133,0,42,0,1,93,65,5,0,56,0,53,0,72,0,53,0,2,93,0,65,5,0,89,0,2,0,105,0,2,0,2,93,65,7,0,89,0,3,0,105,0,3,0,121,0,3,0,3,93,65,3,0,6,0,11,0,1,93,65,3,0,23,0,11,0,1,93,65,3,0,7,0,17,0,1,93,65,3,0,119,0,26,0,1,93,65,5,0,88,0,29,0,104,0,29,0,2,93,65,3,0,89,0,30,0,1,93,65,3,0,69,0,53,0,1,93,65,3,0,55,0,53,0,1,93,5,34,46,2,53,52,55,38,53,52,62,2,51,50,30,2,21,20,14,2,7,30,1,21,20,14,2,3,20,22,23,62,1,53,52,38,35,34,6,23,14,1,21,20,22,51,50,62,2,53,52,38,1,40,60,89,59,29,134,93,24,50,78,56,54,76,49,23,11,27,45,34,81,75,33,64,95,170,60,51,58,59,58,54,54,62,119,66,77,71,66,32,54,40,22,79,14,33,56,73,41,116,71,72,92,36,64,46,27,25,43,58,32,27,41,38,38,24,28,89,72,40,76,60,36,2,36,34,60,19,17,67,40,39,44,49,241,13,73,63,58,59,19,34,47,27,51,73,0,0,2,0,45,0,0,1,251,2,202,0,26,0,46,2,23,186,0,5,0,22,0,3,43,65,3,0,224,0,5,0,1,93,65,3,0,64,0,5,0,1,93,65,3,0,192,0,5,0,1,93,65,3,0,128,0,5,0,1,93,65,3,0,63,0,22,0,1,93,65,3,0,31,0,22,0,1,93,186,0,11,0,22,0,5,17,18,57,184,0,11,47,184,0,5,16,185,0,32,0,4,244,184,0,16,208,184,0,22,16,185,0,42,0,4,244,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,14,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,6,62,89,184,0,12,208,65,3,0,246,0,12,0,1,93,184,0,0,16,184,0,19,220,65,3,0,79,0,19,0,1,93,186,0,16,0,0,0,19,17,18,57,185,0,27,0,2,244,184,0,0,16,185,0,37,0,2,244,48,49,1,65,3,0,117,0,2,0,1,93,65,3,0,86,0,2,0,1,93,65,3,0,134,0,2,0,1,93,65,3,0,86,0,3,0,1,93,65,3,0,134,0,6,0,1,93,65,3,0,6,0,8,0,1,93,65,3,0,134,0,8,0,1,93,65,3,0,23,0,8,0,1,93,65,5,0,57,0,13,0,73,0,13,0,2,93,65,5,0,106,0,13,0,122,0,13,0,2,93,65,3,0,88,0,16,0,1,93,65,3,0,87,0,17,0,1,93,65,3,0,136,0,20,0,1,93,65,3,0,121,0,20,0,1,93,65,5,0,9,0,21,0,25,0,21,0,2,93,65,3,0,105,0,21,0,1,93,65,3,0,138,0,21,0,1,93,65,3,0,89,0,24,0,1,93,65,3,0,89,0,25,0,1,93,0,65,3,0,102,0,2,0,1,93,65,3,0,134,0,2,0,1,93,65,3,0,87,0,2,0,1,93,65,3,0,119,0,2,0,1,93,65,3,0,86,0,3,0,1,93,65,3,0,24,0,8,0,1,93,65,3,0,137,0,8,0,1,93,65,3,0,9,0,9,0,1,93,65,3,0,101,0,13,0,1,93,65,3,0,118,0,13,0,1,93,65,3,0,71,0,13,0,1,93,65,3,0,88,0,16,0,1,93,65,3,0,89,0,17,0,1,93,65,3,0,104,0,20,0,1,93,65,5,0,122,0,20,0,138,0,20,0,2,93,65,3,0,86,0,24,0,1,93,65,3,0,85,0,25,0,1,93,1,50,30,2,21,20,14,2,35,39,62,3,55,14,1,35,34,38,53,52,62,2,19,50,62,2,53,52,46,2,35,34,14,2,21,20,30,2,1,32,42,79,61,37,61,89,101,40,73,41,83,70,50,9,20,76,43,100,112,36,64,89,32,30,51,38,22,21,35,48,27,33,50,34,17,13,29,47,2,202,24,58,97,73,110,172,118,62,38,19,51,71,94,63,27,30,102,100,51,85,62,35,254,159,20,37,51,32,31,49,33,17,24,40,53,28,24,46,34,21,0,0,2,0,57,0,0,0,147,1,184,0,3,0,7,0,102,187,0,7,0,4,0,6,0,4,43,65,3,0,16,0,7,0,1,93,184,0,7,16,184,0,0,208,65,3,0,16,0,6,0,1,93,184,0,6,16,184,0,1,208,0,184,0,2,47,184,0,0,69,88,184,0,5,47,27,185,0,5,0,6,62,89,184,0,2,16,184,0,1,220,65,3,0,48,0,1,0,1,113,184,0,5,16,184,0,6,220,65,3,0,63,0,6,0,1,113,48,49,19,35,53,51,17,35,53,51,147,90,90,90,90,1,98,86,254,72,86,0,0,0,0,2,0,57,255,147,0,158,1,184,0,3,0,10,0,136,187,0,10,0,4,0,9,0,4,43,65,3,0,16,0,10,0,1,93,184,0,10,16,184,0,0,208,65,3,0,16,0,9,0,1,93,184,0,9,16,184,0,1,208,184,0,9,16,184,0,6,208,186,0,7,0,9,0,10,17,18,57,0,184,0,2,47,184,0,0,69,88,184,0,8,47,27,185,0,8,0,6,62,89,184,0,2,16,184,0,1,220,65,3,0,48,0,1,0,1,113,184,0,8,16,184,0,4,208,184,0,8,16,184,0,5,220,184,0,8,16,184,0,9,220,65,3,0,63,0,9,0,1,113,48,49,19,35,53,51,17,7,39,55,39,53,51,158,100,100,78,23,35,34,100,1,98,86,254,71,108,13,87,9,86,0,0,0,0,1,0,33,0,78,1,88,1,234,0,5,0,73,184,0,2,47,184,0,4,220,184,0,0,208,184,0,4,16,185,0,3,0,4,244,184,0,1,208,184,0,2,16,185,0,5,0,4,244,0,25,184,0,2,47,24,184,0,1,208,184,0,1,47,184,0,2,16,184,0,3,208,184,0,3,47,184,0,2,16,184,0,5,208,48,49,37,35,39,55,51,7,1,88,95,216,216,95,216,78,206,206,206,0,2,0,66,0,160,1,180,1,138,0,3,0,7,0,61,184,0,5,47,65,3,0,16,0,5,0,1,93,184,0,4,220,184,0,0,208,184,0,5,16,184,0,1,208,0,184,0,5,47,184,0,1,220,65,3,0,15,0,1,0,1,93,184,0,2,220,184,0,5,16,184,0,6,220,48,49,1,33,53,33,21,33,53,33,1,180,254,142,1,114,254,142,1,114,1,62,76,234,76,0,1,0,60,0,78,1,115,1,234,0,5,0,82,184,0,0,47,65,3,0,16,0,0,0,1,93,184,0,4,220,185,0,5,0,4,244,184,0,1,208,184,0,4,16,184,0,2,208,184,0,0,16,185,0,3,0,4,244,0,25,184,0,0,47,24,184,0,1,208,184,0,1,47,184,0,0,16,184,0,3,208,184,0,0,16,184,0,5,208,184,0,5,47,48,49,1,7,35,55,39,51,1,115,216,95,216,216,95,1,28,206,206,206,0,0,0,2,0,30,0,0,1,141,2,238,0,36,0,40,1,93,186,0,29,0,21,0,3,43,65,3,0,16,0,21,0,1,93,65,3,0,16,0,29,0,1,93,186,0,1,0,21,0,29,17,18,57,184,0,1,47,65,5,0,16,0,1,0,32,0,1,0,2,113,65,7,0,16,0,1,0,32,0,1,0,48,0,1,0,3,93,184,0,0,220,184,0,29,16,184,0,10,220,65,7,0,48,0,10,0,64,0,10,0,80,0,10,0,3,113,186,0,39,0,21,0,29,17,18,57,184,0,39,47,185,0,40,0,4,244,0,184,0,0,69,88,184,0,24,47,27,185,0,24,0,18,62,89,184,0,0,69,88,184,0,38,47,27,185,0,38,0,6,62,89,184,0,39,220,65,3,0,63,0,39,0,1,113,184,0,1,220,184,0,24,16,185,0,15,0,1,244,184,0,24,16,184,0,20,220,48,49,1,65,3,0,121,0,8,0,1,93,65,3,0,6,0,26,0,1,93,65,3,0,102,0,26,0,1,93,65,3,0,101,0,27,0,1,93,65,3,0,119,0,27,0,1,93,65,3,0,39,0,33,0,1,93,65,3,0,134,0,34,0,1,93,65,3,0,23,0,34,0,1,93,0,65,7,0,54,0,22,0,70,0,22,0,86,0,22,0,3,93,65,3,0,7,0,26,0,1,93,65,3,0,103,0,26,0,1,93,65,5,0,103,0,27,0,119,0,27,0,2,93,65,3,0,40,0,33,0,1,93,65,3,0,137,0,33,0,1,93,65,3,0,25,0,34,0,1,93,65,3,0,138,0,34,0,1,93,55,35,38,53,52,62,4,53,52,46,2,35,34,14,2,7,39,62,1,51,50,30,2,21,20,6,15,1,14,1,31,1,35,53,51,226,59,3,22,34,38,34,22,21,35,46,26,22,43,35,26,5,25,19,86,54,48,77,54,29,35,25,51,26,35,1,18,91,91,200,40,5,31,53,49,47,49,55,32,30,46,31,16,13,20,24,11,67,29,38,33,54,67,33,35,76,32,65,33,66,29,227,86,0,2,0,49,255,169,2,163,2,41,0,61,0,76,1,131,184,0,38,47,65,3,0,48,0,38,0,1,93,184,0,48,220,186,0,7,0,38,0,48,17,18,57,184,0,7,47,184,0,0,208,65,3,0,102,0,0,0,1,93,65,3,0,70,0,0,0,1,93,184,0,64,208,65,3,0,68,0,64,0,1,93,65,3,0,197,0,64,0,1,93,65,3,0,54,0,64,0,1,93,65,3,0,53,0,64,0,1,113,65,3,0,5,0,64,0,1,93,65,3,0,212,0,64,0,1,93,65,3,0,19,0,64,0,1,93,184,0,15,208,65,3,0,55,0,15,0,1,93,186,0,28,0,38,0,48,17,18,57,186,0,52,0,48,0,38,17,18,57,184,0,0,16,184,0,57,208,184,0,7,16,184,0,72,220,65,3,0,176,0,72,0,1,93,0,184,0,0,69,88,184,0,43,47,27,185,0,43,0,16,62,89,184,0,33,220,186,0,2,0,33,0,43,17,18,57,184,0,2,47,186,0,10,0,43,0,33,17,18,57,184,0,10,47,186,0,15,0,2,0,10,17,18,57,65,3,0,129,0,15,0,1,93,65,3,0,100,0,15,0,1,93,65,3,0,195,0,15,0,1,93,65,3,0,49,0,15,0,1,93,65,7,0,0,0,15,0,16,0,15,0,32,0,15,0,3,93,184,0,23,208,184,0,23,47,186,0,28,0,33,0,43,17,18,57,65,5,0,19,0,28,0,35,0,28,0,2,93,65,3,0,1,0,28,0,1,93,186,0,52,0,43,0,33,17,18,57,184,0,55,220,184,0,2,16,184,0,62,220,184,0,10,16,184,0,69,220,48,49,1,65,5,0,57,0,5,0,73,0,5,0,2,93,0,65,3,0,54,0,5,0,1,93,1,38,35,34,14,2,21,20,22,51,50,62,2,55,20,14,2,21,20,22,51,50,62,2,55,14,3,35,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,7,6,35,34,53,52,62,2,39,50,23,14,3,35,34,38,53,52,62,2,2,33,51,71,46,91,72,45,44,51,21,50,48,43,14,1,1,1,26,29,15,36,36,34,12,24,70,86,97,51,57,92,65,34,60,104,136,77,58,93,64,34,5,16,33,28,39,27,37,10,16,19,111,47,7,6,41,54,59,25,22,22,34,53,61,1,123,53,50,79,101,51,48,63,17,31,42,26,1,9,10,10,1,32,51,11,18,23,12,43,71,51,28,35,66,96,60,80,140,103,60,36,66,94,58,26,56,51,42,13,17,53,13,48,61,72,30,22,39,85,72,47,36,28,39,73,55,34,0,0,0,2,0,7,0,0,2,97,2,188,0,7,0,10,1,97,187,0,7,0,4,0,6,0,4,43,65,3,0,16,0,7,0,1,93,184,0,7,16,184,0,0,208,65,3,0,246,0,0,0,1,93,65,3,0,86,0,0,0,1,93,65,3,0,22,0,0,0,1,93,185,0,1,0,4,244,65,3,0,16,0,6,0,1,93,186,0,9,0,6,0,7,17,18,57,186,0,2,0,1,0,9,17,18,57,184,0,6,16,184,0,5,208,65,3,0,249,0,5,0,1,93,65,3,0,25,0,5,0,1,93,65,3,0,89,0,5,0,1,93,185,0,4,0,4,244,186,0,3,0,4,0,9,17,18,57,186,0,8,0,9,0,1,17,18,57,186,0,10,0,9,0,4,17,18,57,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,14,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,1,208,186,0,8,0,7,0,4,17,18,57,184,0,8,47,185,0,2,0,2,244,184,0,7,16,184,0,9,208,48,49,1,65,3,0,56,0,0,0,1,93,65,5,0,72,0,6,0,88,0,6,0,2,93,65,3,0,57,0,6,0,1,93,65,7,0,105,0,6,0,121,0,6,0,137,0,6,0,3,93,65,7,0,102,0,7,0,118,0,7,0,134,0,7,0,3,93,65,7,0,55,0,7,0,71,0,7,0,87,0,7,0,3,93,0,65,3,0,22,0,9,0,1,93,65,3,0,250,0,9,0,1,93,65,5,0,10,0,9,0,26,0,9,0,2,113,65,3,0,43,0,9,0,1,113,33,35,39,33,7,35,19,51,19,11,1,2,97,100,67,254,244,67,100,251,100,54,104,104,189,189,2,188,254,87,1,36,254,220,0,0,3,0,80,0,0,2,50,2,188,0,20,0,33,0,46,2,71,186,0,16,0,1,0,3,43,65,3,0,191,0,1,0,1,93,65,5,0,0,0,1,0,16,0,1,0,2,93,65,3,0,80,0,1,0,1,113,65,3,0,240,0,16,0,1,93,65,5,0,0,0,16,0,16,0,16,0,2,93,65,3,0,208,0,16,0,1,93,65,3,0,80,0,16,0,1,113,65,3,0,16,0,16,0,1,113,186,0,8,0,16,0,1,17,18,57,184,0,8,47,184,0,1,16,185,0,36,0,4,244,184,0,23,208,186,0,13,0,8,0,23,17,18,57,65,3,0,5,0,13,0,1,93,184,0,8,16,185,0,29,0,4,244,184,0,16,16,185,0,42,0,4,244,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,186,0,23,0,3,0,0,17,18,57,184,0,23,47,185,0,35,0,2,244,186,0,13,0,23,0,35,17,18,57,184,0,3,16,185,0,21,0,2,244,184,0,0,16,185,0,37,0,2,244,48,49,1,65,3,0,119,0,5,0,1,93,65,3,0,117,0,6,0,1,93,65,3,0,6,0,6,0,1,93,65,3,0,38,0,6,0,1,93,65,3,0,134,0,6,0,1,93,65,3,0,23,0,6,0,1,93,65,5,0,118,0,11,0,134,0,11,0,2,93,65,3,0,118,0,12,0,1,93,65,3,0,135,0,12,0,1,93,65,3,0,85,0,14,0,1,93,65,3,0,102,0,14,0,1,93,65,3,0,134,0,14,0,1,93,65,3,0,117,0,15,0,1,93,65,3,0,116,0,18,0,1,93,65,3,0,6,0,18,0,1,93,65,5,0,86,0,18,0,102,0,18,0,2,93,65,5,0,87,0,19,0,103,0,19,0,2,93,0,65,3,0,133,0,5,0,1,93,65,3,0,118,0,5,0,1,93,65,3,0,133,0,6,0,1,93,65,3,0,118,0,6,0,1,93,65,7,0,7,0,6,0,23,0,6,0,39,0,6,0,3,93,65,3,0,136,0,11,0,1,93,65,3,0,121,0,11,0,1,93,65,3,0,136,0,12,0,1,93,65,3,0,122,0,12,0,1,93,65,3,0,101,0,14,0,1,93,65,3,0,86,0,14,0,1,93,65,3,0,134,0,14,0,1,93,65,3,0,119,0,15,0,1,93,65,3,0,9,0,18,0,1,93,65,5,0,90,0,18,0,106,0,18,0,2,93,65,3,0,123,0,18,0,1,93,65,3,0,106,0,19,0,1,93,65,3,0,91,0,19,0,1,93,33,35,17,51,50,30,2,21,20,14,2,7,30,1,21,20,14,2,3,35,21,51,50,62,2,53,52,46,2,19,35,21,51,50,62,2,53,52,46,2,1,64,240,158,65,99,66,34,3,12,23,19,65,52,43,69,87,98,90,118,24,40,30,17,23,38,50,30,148,98,45,70,49,26,20,36,52,2,188,14,39,67,53,27,40,34,33,20,25,80,60,67,82,44,15,2,103,206,7,22,44,38,33,38,19,5,254,220,237,7,24,44,38,35,47,29,13,0,0,0,1,0,39,255,242,2,71,2,202,0,38,1,174,186,0,12,0,5,0,3,43,65,3,0,95,0,5,0,1,93,65,3,0,127,0,5,0,1,93,65,3,0,63,0,5,0,1,93,65,3,0,16,0,5,0,1,93,65,3,0,0,0,12,0,1,113,65,5,0,0,0,12,0,16,0,12,0,2,93,65,3,0,224,0,12,0,1,93,65,3,0,176,0,12,0,1,93,184,0,5,16,185,0,21,0,4,244,184,0,12,16,184,0,37,208,65,3,0,0,0,40,0,1,93,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,65,3,0,25,0,5,0,1,93,184,0,10,16,184,0,13,220,65,5,0,144,0,13,0,160,0,13,0,2,93,185,0,12,0,2,244,184,0,10,16,185,0,16,0,2,244,184,0,0,16,185,0,26,0,2,244,184,0,0,16,184,0,36,220,65,5,0,159,0,36,0,175,0,36,0,2,93,185,0,37,0,2,244,48,49,1,65,3,0,104,0,2,0,1,93,65,3,0,25,0,2,0,1,93,65,3,0,121,0,2,0,1,93,65,3,0,90,0,2,0,1,93,65,3,0,90,0,3,0,1,93,65,3,0,24,0,7,0,1,93,65,3,0,88,0,7,0,1,93,65,3,0,24,0,8,0,1,93,65,3,0,88,0,8,0,1,93,65,3,0,121,0,8,0,1,93,65,3,0,106,0,8,0,1,93,65,3,0,71,0,19,0,1,93,0,65,3,0,24,0,2,0,1,93,65,5,0,88,0,2,0,104,0,2,0,2,93,65,3,0,121,0,2,0,1,93,65,3,0,88,0,3,0,1,93,65,3,0,23,0,7,0,1,93,65,3,0,87,0,7,0,1,93,65,5,0,85,0,8,0,101,0,8,0,2,93,65,3,0,118,0,8,0,1,93,65,3,0,23,0,8,0,1,93,5,34,46,2,53,52,62,2,51,50,23,7,39,38,35,34,14,2,21,20,30,2,51,50,54,63,1,54,63,1,54,63,1,23,6,1,134,77,129,93,52,52,93,128,77,107,87,10,57,57,70,59,91,63,33,32,63,93,60,15,28,15,25,8,19,23,5,21,23,10,87,14,52,96,134,82,81,134,96,53,41,88,20,23,42,74,102,60,59,102,75,42,2,3,5,1,7,7,1,8,8,88,40,0,0,2,0,80,0,0,2,175,2,188,0,12,0,25,1,67,186,0,8,0,1,0,3,43,65,3,0,47,0,1,0,1,113,65,3,0,127,0,1,0,1,93,65,3,0,175,0,1,0,1,93,65,3,0,16,0,1,0,1,93,65,3,0,128,0,8,0,1,93,65,3,0,224,0,8,0,1,93,65,3,0,16,0,8,0,1,113,65,3,0,192,0,8,0,1,93,65,5,0,64,0,8,0,80,0,8,0,2,93,65,5,0,16,0,8,0,32,0,8,0,2,93,184,0,1,16,185,0,15,0,4,244,184,0,8,16,185,0,21,0,4,244,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,3,16,185,0,13,0,2,244,184,0,0,16,185,0,16,0,2,244,48,49,1,65,7,0,86,0,5,0,102,0,5,0,118,0,5,0,3,93,65,3,0,86,0,6,0,1,93,65,3,0,86,0,10,0,1,93,65,3,0,86,0,11,0,1,93,65,3,0,118,0,11,0,1,93,65,3,0,103,0,11,0,1,93,65,3,0,8,0,18,0,1,93,0,65,3,0,86,0,5,0,1,93,65,5,0,103,0,5,0,119,0,5,0,2,93,65,3,0,87,0,6,0,1,93,65,3,0,89,0,10,0,1,93,65,3,0,105,0,11,0,1,93,65,3,0,90,0,11,0,1,93,65,3,0,123,0,11,0,1,93,41,1,17,33,50,30,2,21,20,14,2,3,35,17,51,50,62,2,53,52,46,2,1,83,254,253,1,3,76,128,93,51,51,91,128,78,164,164,58,91,63,32,32,63,91,2,188,48,91,130,81,81,130,90,49,2,102,253,240,37,69,98,60,60,98,69,37,0,0,0,1,0,80,0,0,2,4,2,188,0,11,0,168,186,0,11,0,1,0,3,43,65,3,0,191,0,1,0,1,93,65,3,0,0,0,1,0,1,93,65,3,0,0,0,11,0,1,93,65,3,0,208,0,11,0,1,93,65,3,0,64,0,11,0,1,93,184,0,11,16,184,0,4,208,184,0,4,47,184,0,1,16,185,0,10,0,4,244,184,0,6,208,184,0,11,16,184,0,8,208,184,0,8,47,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,14,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,184,0,2,16,185,0,5,0,2,244,186,0,6,0,2,0,1,17,18,57,184,0,6,47,185,0,9,0,2,244,184,0,1,16,185,0,10,0,2,244,48,49,41,1,17,33,21,33,21,33,21,33,21,33,2,4,254,76,1,171,254,180,1,8,254,248,1,85,2,188,86,205,86,237,0,0,0,1,0,80,0,0,1,251,2,188,0,9,0,163,186,0,0,0,7,0,3,43,65,3,0,143,0,0,0,1,93,65,5,0,0,0,0,0,16,0,0,0,2,93,65,3,0,64,0,0,0,1,93,65,3,0,143,0,7,0,1,93,65,3,0,191,0,7,0,1,93,65,5,0,0,0,7,0,16,0,7,0,2,93,184,0,7,16,185,0,6,0,4,244,184,0,2,208,184,0,0,16,184,0,3,208,184,0,3,47,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,14,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,6,62,89,184,0,8,16,185,0,1,0,2,244,186,0,2,0,8,0,6,17,18,57,184,0,2,47,185,0,5,0,2,244,48,49,1,33,21,33,21,33,17,35,17,33,1,251,254,180,1,0,255,0,95,1,171,2,102,205,86,254,189,2,188,0,0,0,1,0,39,255,242,2,109,2,202,0,36,1,79,186,0,31,0,5,0,3,43,65,5,0,63,0,5,0,79,0,5,0,2,93,65,3,0,32,0,5,0,1,93,65,3,0,128,0,31,0,1,93,65,3,0,32,0,31,0,1,113,65,3,0,63,0,31,0,1,93,65,3,0,0,0,31,0,1,113,65,3,0,80,0,31,0,1,93,65,3,0,32,0,31,0,1,93,186,0,12,0,31,0,5,17,18,57,184,0,12,47,184,0,5,16,185,0,20,0,4,244,184,0,31,16,185,0,28,0,4,244,184,0,31,16,184,0,30,220,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,10,16,184,0,13,220,184,0,10,16,185,0,15,0,2,244,184,0,0,16,185,0,25,0,2,244,186,0,30,0,10,0,0,17,18,57,184,0,30,47,185,0,29,0,2,244,48,49,1,65,3,0,90,0,2,0,1,93,65,3,0,91,0,3,0,1,93,65,3,0,89,0,8,0,1,93,65,3,0,6,0,17,0,1,93,65,3,0,7,0,23,0,1,93,0,65,3,0,90,0,2,0,1,93,65,3,0,83,0,8,0,1,93,65,11,0,70,0,11,0,86,0,11,0,102,0,11,0,118,0,11,0,134,0,11,0,5,93,65,11,0,70,0,12,0,86,0,12,0,102,0,12,0,118,0,12,0,134,0,12,0,5,93,65,3,0,7,0,23,0,1,93,5,34,46,2,53,52,62,2,51,50,23,7,38,35,34,14,2,21,20,30,2,51,50,55,53,35,53,51,17,14,3,1,126,74,126,92,51,52,93,129,77,118,90,9,105,91,61,94,63,32,34,67,99,66,72,45,110,205,20,59,65,67,14,53,96,134,82,82,134,95,52,40,83,37,41,73,103,61,63,103,72,40,19,174,86,254,200,11,19,15,8,0,1,0,80,0,0,2,154,2,188,0,11,0,209,186,0,0,0,5,0,3,43,65,3,0,208,0,0,0,1,93,65,3,0,80,0,0,0,1,113,65,3,0,32,0,0,0,1,113,65,3,0,64,0,0,0,1,93,65,3,0,16,0,0,0,1,93,184,0,0,16,185,0,1,0,4,244,65,3,0,191,0,5,0,1,93,65,3,0,15,0,5,0,1,113,65,3,0,143,0,5,0,1,93,65,3,0,16,0,5,0,1,93,184,0,5,16,185,0,4,0,4,244,184,0,8,208,184,0,1,16,184,0,9,208,65,3,0,64,0,13,0,1,93,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,14,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,1,208,186,0,8,0,7,0,4,17,18,57,184,0,8,47,185,0,3,0,2,244,184,0,7,16,184,0,10,208,48,49,1,65,3,0,15,0,12,0,1,93,33,35,17,33,17,35,17,51,17,33,17,51,2,154,95,254,116,95,95,1,140,95,1,65,254,191,2,188,254,223,1,33,0,0,1,0,80,0,0,0,175,2,188,0,3,0,118,187,0,0,0,4,0,1,0,4,43,65,5,0,159,0,0,0,175,0,0,0,2,93,65,3,0,0,0,0,0,1,93,65,3,0,112,0,0,0,1,93,65,5,0,159,0,1,0,175,0,1,0,2,93,65,3,0,112,0,1,0,1,93,65,3,0,0,0,1,0,1,93,65,3,0,80,0,5,0,1,93,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,14,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,48,49,51,35,17,51,175,95,95,2,188,0,0,0,0,1,255,239,255,84,0,175,2,188,0,12,0,104,187,0,10,0,4,0,9,0,4,43,65,3,0,95,0,9,0,1,93,65,5,0,159,0,9,0,175,0,9,0,2,93,65,3,0,0,0,9,0,1,93,65,5,0,159,0,10,0,175,0,10,0,2,93,65,3,0,95,0,10,0,1,93,65,3,0,0,0,10,0,1,93,0,184,0,1,47,184,0,0,69,88,184,0,9,47,27,185,0,9,0,14,62,89,184,0,1,16,184,0,3,220,48,49,23,35,39,51,50,62,2,53,17,51,17,20,9,16,10,4,27,36,21,9,95,172,56,12,27,43,31,2,191,253,36,140,0,0,0,2,0,80,0,0,2,61,2,188,0,5,0,9,1,44,186,0,1,0,7,0,3,43,65,3,0,80,0,1,0,1,93,65,5,0,0,0,1,0,16,0,1,0,2,93,65,3,0,176,0,1,0,1,93,184,0,1,16,184,0,0,208,65,5,0,85,0,0,0,101,0,0,0,2,93,65,3,0,70,0,0,0,1,93,65,7,0,153,0,0,0,169,0,0,0,185,0,0,0,3,93,65,3,0,57,0,0,0,1,113,65,3,0,39,0,0,0,1,93,65,5,0,22,0,0,0,38,0,0,0,2,113,65,3,0,116,0,0,0,1,93,65,3,0,131,0,0,0,1,93,184,0,1,16,184,0,2,208,65,3,0,70,0,2,0,1,93,184,0,1,16,184,0,3,208,65,3,0,8,0,3,0,1,93,184,0,0,16,184,0,4,208,65,3,0,8,0,4,0,1,93,184,0,0,16,184,0,5,208,65,3,0,70,0,5,0,1,93,65,3,0,143,0,7,0,1,93,65,3,0,16,0,7,0,1,93,184,0,7,16,185,0,6,0,4,244,0,184,0,0,69,88,184,0,9,47,27,185,0,9,0,14,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,6,62,89,184,0,1,208,184,0,9,16,184,0,3,208,186,0,5,0,3,0,1,17,18,57,25,184,0,5,47,24,184,0,2,208,48,49,33,35,9,1,51,1,3,35,17,51,2,61,100,254,253,1,3,100,254,253,139,95,95,1,115,1,73,254,183,254,141,2,188,0,0,0,0,1,0,80,0,0,1,240,2,188,0,5,0,114,186,0,5,0,1,0,3,43,65,3,0,175,0,1,0,1,93,65,5,0,0,0,1,0,16,0,1,0,2,93,65,3,0,144,0,1,0,1,93,184,0,1,16,185,0,4,0,4,244,65,3,0,175,0,5,0,1,93,65,5,0,0,0,5,0,16,0,5,0,2,93,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,185,0,5,0,2,244,48,49,41,1,17,51,17,33,1,240,254,96,95,1,65,2,188,253,154,0,0,0,0,1,0,48,0,0,2,252,2,188,0,11,2,149,186,0,0,0,6,0,3,43,65,3,0,80,0,0,0,1,113,65,3,0,63,0,0,0,1,93,65,5,0,160,0,0,0,176,0,0,0,2,113,65,5,0,80,0,0,0,96,0,0,0,2,93,65,5,0,0,0,0,0,16,0,0,0,2,93,184,0,0,16,185,0,1,0,4,244,184,0,2,208,65,3,0,7,0,2,0,1,113,65,5,0,22,0,2,0,38,0,2,0,2,113,65,3,0,47,0,6,0,1,113,65,3,0,143,0,6,0,1,93,65,5,0,47,0,6,0,63,0,6,0,2,93,65,3,0,15,0,6,0,1,113,65,3,0,80,0,6,0,1,113,65,5,0,0,0,6,0,16,0,6,0,2,93,186,0,3,0,6,0,0,17,18,57,184,0,6,16,185,0,5,0,4,244,184,0,4,208,65,5,0,25,0,4,0,41,0,4,0,2,113,65,3,0,8,0,4,0,1,113,184,0,6,16,184,0,7,208,65,7,0,57,0,7,0,73,0,7,0,89,0,7,0,3,113,65,3,0,152,0,7,0,1,93,186,0,8,0,4,0,7,17,18,57,65,3,0,7,0,8,0,1,113,184,0,3,16,184,0,9,208,184,0,0,16,184,0,11,208,65,3,0,136,0,11,0,1,93,65,3,0,151,0,11,0,1,93,65,7,0,54,0,11,0,70,0,11,0,86,0,11,0,3,113,186,0,10,0,2,0,11,17,18,57,65,3,0,8,0,10,0,1,113,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,14,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,6,62,89,184,0,1,208,184,0,8,16,184,0,4,208,65,5,0,91,0,4,0,107,0,4,0,2,113,65,5,0,60,0,4,0,76,0,4,0,2,113,65,3,0,45,0,4,0,1,113,65,3,0,31,0,4,0,1,113,65,3,0,142,0,4,0,1,93,65,3,0,13,0,4,0,1,113,65,3,0,252,0,4,0,1,93,65,5,0,107,0,4,0,123,0,4,0,2,93,65,3,0,89,0,4,0,1,93,184,0,2,208,186,0,3,0,8,0,5,17,18,57,65,5,0,89,0,3,0,105,0,3,0,2,93,184,0,3,16,184,0,9,208,65,7,0,84,0,9,0,100,0,9,0,116,0,9,0,3,93,65,3,0,244,0,9,0,1,93,65,3,0,154,0,9,0,1,93,65,3,0,69,0,9,0,1,93,65,5,0,84,0,9,0,100,0,9,0,2,113,65,3,0,67,0,9,0,1,113,65,3,0,130,0,9,0,1,93,184,0,8,16,184,0,10,208,48,49,1,65,3,0,117,0,8,0,1,93,65,3,0,122,0,10,0,1,93,0,65,3,0,124,0,2,0,1,93,65,3,0,41,0,3,0,1,113,65,3,0,10,0,3,0,1,93,65,3,0,123,0,4,0,1,93,65,5,0,20,0,9,0,36,0,9,0,2,113,33,35,11,3,35,19,51,27,1,51,2,252,100,66,190,194,66,100,94,81,184,182,82,2,17,254,149,1,107,253,239,2,188,254,165,1,91,0,1,0,80,0,0,2,112,2,188,0,9,1,47,186,0,9,0,4,0,3,43,65,3,0,0,0,9,0,1,93,65,3,0,112,0,9,0,1,93,65,3,0,48,0,9,0,1,93,65,3,0,32,0,9,0,1,113,65,3,0,0,0,9,0,1,113,184,0,9,16,185,0,8,0,4,244,184,0,1,208,65,5,0,0,0,4,0,16,0,4,0,2,93,184,0,4,16,185,0,3,0,4,244,184,0,6,208,65,3,0,134,0,6,0,1,93,65,5,0,20,0,6,0,36,0,6,0,2,113,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,14,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,184,0,1,208,184,0,5,16,184,0,2,208,65,3,0,57,0,2,0,1,93,184,0,1,16,184,0,7,208,184,0,5,16,184,0,8,208,48,49,1,65,3,0,89,0,1,0,1,93,65,3,0,85,0,6,0,1,93,0,65,5,0,74,0,2,0,90,0,2,0,2,93,65,3,0,43,0,2,0,1,113,65,5,0,108,0,2,0,124,0,2,0,2,93,65,3,0,143,0,2,0,1,93,65,3,0,128,0,7,0,1,93,65,3,0,67,0,7,0,1,93,65,5,0,99,0,7,0,115,0,7,0,2,93,65,3,0,35,0,7,0,1,113,65,3,0,84,0,7,0,1,93,33,35,1,17,35,17,51,1,17,51,2,112,81,254,144,95,103,1,89,96,2,41,253,215,2,188,253,244,2,12,0,0,2,0,39,255,242,2,217,2,202,0,18,0,37,1,177,186,0,17,0,7,0,3,43,65,3,0,15,0,7,0,1,93,65,5,0,79,0,7,0,95,0,7,0,2,93,65,5,0,176,0,17,0,192,0,17,0,2,93,65,3,0,32,0,17,0,1,113,65,3,0,113,0,17,0,1,93,65,5,0,224,0,17,0,240,0,17,0,2,93,65,3,0,128,0,17,0,1,93,65,3,0,32,0,17,0,1,93,184,0,7,16,185,0,26,0,4,244,184,0,17,16,185,0,36,0,4,244,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,14,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,6,62,89,184,0,12,16,185,0,21,0,2,244,184,0,2,16,185,0,31,0,2,244,48,49,1,65,3,0,86,0,0,0,1,93,65,5,0,103,0,0,0,119,0,0,0,2,93,65,3,0,88,0,4,0,1,93,65,5,0,105,0,4,0,121,0,4,0,2,93,65,3,0,88,0,5,0,1,93,65,3,0,88,0,9,0,1,93,65,3,0,120,0,9,0,1,93,65,3,0,105,0,10,0,1,93,65,3,0,90,0,10,0,1,93,65,7,0,87,0,14,0,103,0,14,0,119,0,14,0,3,93,65,3,0,86,0,15,0,1,93,65,3,0,118,0,15,0,1,93,65,3,0,15,0,38,0,1,93,0,65,3,0,104,0,0,0,1,93,65,3,0,90,0,0,0,1,93,65,3,0,122,0,0,0,1,93,65,5,0,89,0,4,0,105,0,4,0,2,93,65,3,0,123,0,4,0,1,93,65,3,0,89,0,5,0,1,93,65,3,0,86,0,9,0,1,93,65,3,0,119,0,9,0,1,93,65,5,0,86,0,10,0,102,0,10,0,2,93,65,3,0,86,0,14,0,1,93,65,5,0,103,0,14,0,119,0,14,0,2,93,65,3,0,86,0,15,0,1,93,65,3,0,119,0,15,0,1,93,37,6,35,34,46,2,53,52,62,2,51,50,30,2,21,20,3,38,35,34,14,2,21,20,30,2,51,50,62,2,53,52,2,120,96,152,76,127,91,51,52,91,127,75,75,127,92,51,167,62,116,58,90,61,32,32,61,90,58,58,90,62,31,85,99,52,95,134,83,83,134,95,52,52,96,134,82,165,1,109,78,42,74,102,60,60,102,74,42,42,75,101,60,122,0,0,2,0,80,0,0,2,36,2,188,0,14,0,25,1,63,186,0,9,0,2,0,3,43,65,5,0,0,0,2,0,16,0,2,0,2,93,65,3,0,143,0,2,0,1,93,65,3,0,175,0,2,0,1,93,65,3,0,144,0,2,0,1,93,65,3,0,112,0,2,0,1,93,184,0,2,16,185,0,1,0,4,244,65,3,0,80,0,9,0,1,93,65,3,0,144,0,9,0,1,93,65,3,0,0,0,9,0,1,113,65,3,0,175,0,9,0,1,93,65,3,0,224,0,9,0,1,93,65,3,0,112,0,9,0,1,93,65,5,0,0,0,9,0,16,0,9,0,2,93,65,3,0,32,0,9,0,1,113,184,0,16,208,184,0,9,16,185,0,20,0,4,244,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,14,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,186,0,0,0,4,0,1,17,18,57,184,0,0,47,185,0,16,0,2,244,184,0,4,16,185,0,25,0,2,244,48,49,1,65,3,0,135,0,6,0,1,93,65,5,0,101,0,7,0,117,0,7,0,2,93,65,3,0,6,0,7,0,1,93,65,3,0,134,0,7,0,1,93,0,65,3,0,134,0,6,0,1,93,65,5,0,103,0,6,0,119,0,6,0,2,93,65,5,0,101,0,7,0,117,0,7,0,2,93,65,3,0,6,0,7,0,1,93,65,3,0,135,0,7,0,1,93,55,21,35,17,51,50,30,2,21,20,14,2,35,3,17,51,50,54,53,52,46,2,35,180,100,224,49,88,67,40,41,64,76,35,152,134,73,62,16,38,63,46,245,245,2,188,15,47,86,70,68,91,55,23,1,114,254,227,77,71,37,53,32,15,0,0,2,0,39,255,242,2,217,2,202,0,21,0,43,2,27,186,0,19,0,9,0,3,43,65,5,0,224,0,19,0,240,0,19,0,2,93,65,3,0,32,0,19,0,1,93,65,3,0,32,0,19,0,1,113,65,5,0,176,0,19,0,192,0,19,0,2,93,65,3,0,112,0,19,0,1,93,65,5,0,79,0,9,0,95,0,9,0,2,93,65,3,0,15,0,9,0,1,93,186,0,21,0,19,0,9,17,18,57,184,0,21,16,184,0,0,208,186,0,2,0,9,0,19,17,18,57,184,0,2,16,184,0,1,208,65,3,0,88,0,1,0,1,113,184,0,9,16,185,0,27,0,4,244,184,0,19,16,185,0,39,0,4,244,186,0,34,0,27,0,39,17,18,57,65,3,0,121,0,34,0,1,93,184,0,34,16,184,0,35,208,65,3,0,56,0,35,0,1,113,65,3,0,72,0,35,0,1,93,186,0,37,0,39,0,27,17,18,57,184,0,37,16,184,0,36,208,65,3,0,15,0,44,0,1,93,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,14,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,186,0,2,0,4,0,14,17,18,57,184,0,2,16,184,0,1,208,184,0,1,47,186,0,21,0,14,0,4,17,18,57,184,0,14,16,185,0,22,0,2,244,184,0,4,16,185,0,32,0,2,244,186,0,34,0,32,0,22,17,18,57,186,0,37,0,22,0,32,17,18,57,184,0,37,16,184,0,36,208,184,0,36,47,48,49,1,65,3,0,104,0,1,0,1,93,65,3,0,89,0,6,0,1,93,65,3,0,121,0,6,0,1,93,65,3,0,89,0,7,0,1,93,65,3,0,89,0,11,0,1,93,65,3,0,123,0,11,0,1,93,65,5,0,89,0,12,0,105,0,12,0,2,93,65,7,0,86,0,16,0,102,0,16,0,118,0,16,0,3,93,65,3,0,86,0,17,0,1,93,65,3,0,105,0,35,0,1,93,0,65,3,0,89,0,2,0,1,93,65,3,0,89,0,6,0,1,93,65,3,0,121,0,6,0,1,93,65,3,0,106,0,6,0,1,93,65,3,0,89,0,7,0,1,93,65,3,0,87,0,11,0,1,93,65,3,0,119,0,11,0,1,93,65,5,0,86,0,12,0,102,0,12,0,2,93,65,3,0,86,0,16,0,1,93,65,3,0,118,0,16,0,1,93,37,7,39,6,35,34,46,2,53,52,62,2,51,50,30,2,21,20,7,1,34,14,2,21,20,30,2,51,50,55,39,55,23,54,53,52,46,2,2,203,50,65,100,116,76,127,91,51,52,91,127,75,75,127,92,51,74,254,241,59,89,62,31,31,60,90,60,96,55,103,50,105,48,34,65,93,62,59,54,71,52,95,134,83,83,134,95,52,52,96,134,82,129,110,2,5,41,74,102,61,60,102,74,42,40,84,61,93,75,111,60,101,75,42,0,0,0,0,2,0,80,0,0,2,72,2,188,0,15,0,26,1,159,186,0,12,0,5,0,3,43,65,3,0,15,0,5,0,1,113,65,5,0,0,0,5,0,16,0,5,0,2,93,65,3,0,144,0,5,0,1,93,65,3,0,224,0,12,0,1,93,65,5,0,0,0,12,0,16,0,12,0,2,93,65,3,0,112,0,12,0,1,93,65,3,0,80,0,12,0,1,93,186,0,15,0,5,0,12,17,18,57,65,3,0,38,0,15,0,1,93,65,3,0,23,0,15,0,1,93,65,3,0,135,0,15,0,1,93,65,3,0,102,0,15,0,1,93,65,3,0,85,0,15,0,1,93,65,3,0,117,0,15,0,1,93,184,0,15,16,184,0,0,208,184,0,15,16,185,0,2,0,4,244,65,3,0,136,0,2,0,1,93,184,0,1,208,184,0,5,16,185,0,4,0,4,244,184,0,18,208,184,0,12,16,185,0,24,0,4,244,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,14,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,1,208,186,0,3,0,7,0,4,17,18,57,184,0,3,47,186,0,15,0,3,0,7,17,18,57,184,0,7,16,185,0,16,0,2,244,184,0,3,16,185,0,18,0,2,244,48,49,1,65,3,0,102,0,9,0,1,93,65,3,0,100,0,10,0,1,93,65,3,0,134,0,10,0,1,93,65,3,0,22,0,10,0,1,113,65,3,0,7,0,10,0,1,93,65,3,0,119,0,10,0,1,93,65,3,0,89,0,22,0,1,93,65,3,0,89,0,26,0,1,93,0,65,5,0,101,0,9,0,117,0,9,0,2,93,65,3,0,117,0,10,0,1,93,65,3,0,102,0,10,0,1,93,65,3,0,7,0,10,0,1,93,65,3,0,23,0,10,0,1,113,65,3,0,85,0,22,0,1,93,33,35,3,35,17,35,17,51,50,30,2,21,20,6,7,3,35,17,51,50,62,2,53,52,38,2,72,102,155,147,100,227,58,91,61,32,67,61,115,126,151,24,43,33,19,72,1,17,254,239,2,188,22,49,78,56,66,103,28,1,69,254,254,16,32,49,33,61,67,0,1,0,40,255,242,2,41,2,202,0,57,3,109,186,0,53,0,19,0,3,43,65,3,0,79,0,19,0,1,93,65,3,0,111,0,19,0,1,93,65,3,0,80,0,53,0,1,93,65,3,0,160,0,53,0,1,93,65,3,0,224,0,53,0,1,93,65,3,0,192,0,53,0,1,93,65,5,0,112,0,53,0,128,0,53,0,2,93,65,3,0,32,0,53,0,1,93,65,3,0,0,0,53,0,1,93,186,0,2,0,19,0,53,17,18,57,184,0,2,47,184,0,53,16,185,0,10,0,4,244,186,0,29,0,53,0,19,17,18,57,184,0,29,47,184,0,19,16,185,0,37,0,4,244,0,184,0,0,69,88,184,0,24,47,27,185,0,24,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,3,220,65,5,0,112,0,3,0,128,0,3,0,2,93,65,3,0,16,0,3,0,1,93,65,3,0,240,0,3,0,1,93,184,0,0,16,185,0,5,0,2,244,186,0,15,0,0,0,24,17,18,57,65,3,0,137,0,15,0,1,93,184,0,24,16,184,0,30,220,65,3,0,143,0,30,0,1,93,65,3,0,255,0,30,0,1,93,184,0,24,16,185,0,32,0,2,244,186,0,40,0,24,0,0,17,18,57,48,49,1,65,11,0,40,0,2,0,56,0,2,0,72,0,2,0,88,0,2,0,104,0,2,0,5,93,65,3,0,136,0,2,0,1,93,65,5,0,56,0,12,0,72,0,12,0,2,93,65,3,0,138,0,12,0,1,93,65,3,0,105,0,16,0,1,93,65,3,0,72,0,17,0,1,93,65,3,0,72,0,18,0,1,93,65,3,0,58,0,18,0,1,93,65,3,0,138,0,18,0,1,93,65,3,0,105,0,21,0,1,93,65,3,0,137,0,21,0,1,93,65,3,0,121,0,22,0,1,93,65,3,0,106,0,22,0,1,93,65,3,0,120,0,39,0,1,93,65,3,0,6,0,49,0,1,93,65,3,0,101,0,50,0,1,93,65,3,0,6,0,50,0,1,93,65,3,0,38,0,50,0,1,93,65,3,0,118,0,50,0,1,93,65,3,0,100,0,55,0,1,93,65,3,0,132,0,55,0,1,93,65,3,0,117,0,55,0,1,93,65,3,0,6,0,56,0,1,93,65,3,0,102,0,56,0,1,93,65,3,0,119,0,56,0,1,93,0,65,11,0,41,0,1,0,57,0,1,0,73,0,1,0,89,0,1,0,105,0,1,0,5,93,65,11,0,40,0,2,0,56,0,2,0,72,0,2,0,88,0,2,0,104,0,2,0,5,93,65,3,0,138,0,2,0,1,93,65,3,0,123,0,2,0,1,93,65,3,0,136,0,12,0,1,93,65,5,0,57,0,12,0,73,0,12,0,2,93,65,3,0,90,0,14,0,1,93,65,3,0,105,0,16,0,1,93,65,3,0,10,0,17,0,1,93,65,3,0,74,0,17,0,1,93,65,3,0,135,0,18,0,1,93,65,3,0,72,0,18,0,1,93,65,3,0,133,0,21,0,1,93,65,3,0,103,0,21,0,1,93,65,3,0,116,0,22,0,1,93,65,3,0,101,0,22,0,1,93,65,11,0,38,0,27,0,54,0,27,0,70,0,27,0,86,0,27,0,102,0,27,0,5,93,65,3,0,132,0,28,0,1,93,65,13,0,38,0,28,0,54,0,28,0,70,0,28,0,86,0,28,0,102,0,28,0,118,0,28,0,6,93,65,3,0,116,0,39,0,1,93,65,3,0,7,0,49,0,1,93,65,3,0,102,0,50,0,1,93,65,3,0,7,0,50,0,1,93,65,3,0,39,0,50,0,1,93,65,3,0,105,0,55,0,1,93,65,3,0,137,0,55,0,1,93,65,3,0,122,0,55,0,1,93,65,3,0,9,0,56,0,1,93,65,3,0,106,0,56,0,1,93,65,3,0,123,0,56,0,1,93,5,34,39,55,22,51,50,62,2,53,52,46,2,47,1,46,1,53,52,62,2,51,50,30,2,23,7,38,35,34,14,2,21,20,22,23,30,3,31,1,30,1,31,1,30,1,23,20,14,2,1,24,145,84,13,94,124,36,61,45,25,26,47,67,41,70,85,73,24,57,97,74,30,64,59,50,17,10,126,75,29,57,44,27,75,76,21,19,18,31,34,34,13,17,5,25,23,15,3,18,58,107,14,45,111,70,13,27,41,27,28,41,32,26,14,23,28,83,57,30,71,61,40,8,13,18,9,101,63,12,26,38,27,44,49,24,7,4,5,11,15,18,7,10,5,26,24,56,39,30,67,58,39,0,1,0,15,0,0,2,6,2,188,0,7,0,86,187,0,1,0,4,0,4,0,4,43,184,0,1,16,184,0,0,220,184,0,4,16,184,0,5,220,65,3,0,31,0,9,0,1,93,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,14,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,184,0,6,16,185,0,5,0,2,244,184,0,1,208,48,49,1,35,17,35,17,35,53,33,2,6,204,95,204,1,247,2,102,253,154,2,102,86,0,0,0,1,0,72,255,242,2,140,2,188,0,21,1,207,186,0,15,0,1,0,3,43,65,3,0,223,0,1,0,1,93,65,3,0,143,0,1,0,1,93,65,5,0,175,0,1,0,191,0,1,0,2,93,65,3,0,16,0,1,0,1,93,184,0,1,16,185,0,2,0,4,244,65,3,0,64,0,15,0,1,93,65,3,0,175,0,15,0,1,93,65,3,0,240,0,15,0,1,93,65,3,0,0,0,15,0,1,113,65,3,0,16,0,15,0,1,93,65,3,0,32,0,15,0,1,113,184,0,15,16,185,0,14,0,4,244,65,3,0,15,0,22,0,1,93,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,14,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,6,62,89,185,0,8,0,2,244,184,0,2,16,184,0,14,208,48,49,1,65,3,0,103,0,5,0,1,93,65,3,0,135,0,5,0,1,93,65,3,0,136,0,10,0,1,93,65,3,0,104,0,11,0,1,93,65,3,0,136,0,11,0,1,93,65,3,0,36,0,17,0,1,93,65,3,0,22,0,17,0,1,93,65,3,0,118,0,17,0,1,93,65,3,0,23,0,18,0,1,93,65,3,0,71,0,18,0,1,93,65,3,0,24,0,20,0,1,93,65,3,0,72,0,20,0,1,93,65,3,0,58,0,20,0,1,93,65,3,0,25,0,21,0,1,93,65,3,0,122,0,21,0,1,93,65,3,0,43,0,21,0,1,93,0,65,3,0,133,0,5,0,1,93,65,3,0,102,0,5,0,1,93,65,3,0,133,0,6,0,1,93,65,3,0,134,0,10,0,1,93,65,3,0,101,0,11,0,1,93,65,3,0,135,0,11,0,1,93,65,3,0,120,0,17,0,1,93,65,3,0,56,0,18,0,1,93,65,3,0,41,0,18,0,1,93,65,3,0,73,0,18,0,1,93,65,3,0,27,0,18,0,1,93,65,3,0,25,0,20,0,1,93,65,3,0,57,0,20,0,1,93,65,3,0,42,0,20,0,1,93,65,3,0,74,0,20,0,1,93,19,17,51,17,20,30,2,51,50,62,2,53,17,51,17,20,6,35,34,38,72,95,14,41,77,63,63,77,42,13,95,145,145,145,145,1,41,1,147,254,155,51,97,77,46,48,76,97,50,1,101,254,109,148,163,163,0,0,0,0,1,0,4,0,0,2,128,2,188,0,6,1,95,187,0,1,0,4,0,2,0,4,43,65,3,0,16,0,1,0,1,93,65,3,0,112,0,1,0,1,93,65,5,0,32,0,1,0,48,0,1,0,2,113,184,0,1,16,184,0,0,208,65,3,0,24,0,0,0,1,93,65,3,0,71,0,0,0,1,93,65,3,0,134,0,0,0,1,93,65,3,0,112,0,2,0,1,93,65,3,0,16,0,2,0,1,93,65,5,0,32,0,2,0,48,0,2,0,2,113,184,0,2,16,184,0,3,208,65,3,0,137,0,3,0,1,93,65,3,0,72,0,3,0,1,93,185,0,4,0,4,244,186,0,5,0,2,0,1,17,18,57,184,0,0,16,185,0,6,0,4,244,65,3,0,79,0,8,0,1,93,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,14,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,6,62,89,184,0,5,208,184,0,4,16,184,0,6,208,48,49,1,65,3,0,134,0,1,0,1,93,65,13,0,167,0,1,0,183,0,1,0,199,0,1,0,215,0,1,0,231,0,1,0,247,0,1,0,6,93,65,7,0,7,0,1,0,23,0,1,0,39,0,1,0,3,113,65,13,0,168,0,2,0,184,0,2,0,200,0,2,0,216,0,2,0,232,0,2,0,248,0,2,0,6,93,65,7,0,8,0,2,0,24,0,2,0,40,0,2,0,3,113,65,3,0,137,0,2,0,1,93,0,65,5,0,100,0,5,0,116,0,5,0,2,93,65,3,0,85,0,5,0,1,93,9,1,35,1,51,27,1,2,128,254,244,100,254,244,100,219,217,2,188,253,68,2,188,253,177,2,79,0,1,0,14,0,0,3,193,2,188,0,12,1,221,186,0,10,0,9,0,3,43,65,3,0,63,0,10,0,1,93,184,0,10,16,184,0,1,220,65,3,0,47,0,1,0,1,93,184,0,0,208,184,0,1,16,185,0,2,0,4,244,65,3,0,63,0,9,0,1,93,186,0,3,0,9,0,10,17,18,57,184,0,9,16,184,0,5,220,185,0,4,0,4,244,184,0,5,16,184,0,6,208,65,3,0,71,0,6,0,1,93,185,0,7,0,4,244,186,0,8,0,5,0,4,17,18,57,186,0,11,0,2,0,1,17,18,57,184,0,0,16,185,0,12,0,4,244,65,3,0,191,0,14,0,1,93,65,3,0,159,0,14,0,1,93,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,14,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,6,62,89,184,0,2,208,184,0,7,16,184,0,9,208,184,0,9,47,184,0,3,208,184,0,5,16,184,0,8,208,184,0,11,208,184,0,7,16,184,0,12,208,48,49,1,65,3,0,40,0,1,0,1,93,65,3,0,8,0,2,0,1,93,65,5,0,56,0,2,0,72,0,2,0,2,93,65,3,0,137,0,2,0,1,93,65,3,0,122,0,2,0,1,93,65,7,0,102,0,4,0,118,0,4,0,134,0,4,0,3,93,65,3,0,71,0,4,0,1,93,65,3,0,247,0,4,0,1,93,65,3,0,135,0,7,0,1,93,65,3,0,104,0,9,0,1,93,65,3,0,136,0,9,0,1,93,65,3,0,248,0,9,0,1,93,65,3,0,7,0,10,0,1,93,65,3,0,71,0,10,0,1,93,65,3,0,135,0,10,0,1,93,65,3,0,56,0,10,0,1,93,65,3,0,41,0,10,0,1,93,0,65,3,0,4,0,3,0,1,93,65,3,0,21,0,3,0,1,93,65,3,0,70,0,3,0,1,93,65,3,0,123,0,3,0,1,93,65,3,0,26,0,8,0,1,93,65,3,0,11,0,8,0,1,93,65,3,0,57,0,11,0,1,93,65,3,0,26,0,11,0,1,93,65,3,0,12,0,11,0,1,93,1,3,35,11,1,35,3,51,27,1,51,27,1,3,193,205,105,165,171,105,196,100,155,175,86,177,154,2,188,253,68,2,62,253,194,2,188,253,176,2,66,253,191,2,79,0,1,0,9,0,0,2,82,2,188,0,11,1,205,187,0,11,0,4,0,5,0,4,43,184,0,11,16,184,0,0,208,65,3,0,182,0,0,0,1,93,65,3,0,22,0,0,0,1,113,65,3,0,215,0,0,0,1,93,65,3,0,87,0,0,0,1,93,65,3,0,136,0,0,0,1,93,65,3,0,151,0,0,0,1,93,65,3,0,23,0,0,0,1,93,65,3,0,54,0,0,0,1,113,65,3,0,246,0,0,0,1,93,65,3,0,101,0,0,0,1,93,65,3,0,36,0,0,0,1,93,185,0,1,0,4,244,65,3,0,39,0,1,0,1,93,186,0,2,0,5,0,11,17,18,57,184,0,5,16,184,0,4,208,65,3,0,54,0,4,0,1,93,65,3,0,215,0,4,0,1,93,65,3,0,41,0,4,0,1,93,65,3,0,105,0,4,0,1,93,65,3,0,230,0,4,0,1,93,65,5,0,118,0,4,0,134,0,4,0,2,93,65,3,0,166,0,4,0,1,93,185,0,3,0,4,244,184,0,4,16,184,0,6,208,184,0,3,16,184,0,7,208,65,3,0,118,0,7,0,1,93,186,0,8,0,5,0,11,17,18,57,184,0,1,16,184,0,9,208,184,0,0,16,184,0,10,208,65,3,0,15,0,13,0,1,93,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,14,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,184,0,1,208,186,0,2,0,3,0,7,17,18,57,65,3,0,150,0,2,0,1,93,186,0,8,0,7,0,3,17,18,57,186,0,5,0,8,0,2,17,18,57,184,0,7,16,184,0,9,208,186,0,11,0,2,0,8,17,18,57,48,49,65,3,0,74,0,2,0,1,93,65,3,0,106,0,2,0,1,93,65,3,0,138,0,2,0,1,93,65,3,0,123,0,2,0,1,93,65,3,0,116,0,8,0,1,93,65,3,0,101,0,8,0,1,93,65,3,0,133,0,8,0,1,93,65,7,0,54,0,8,0,70,0,8,0,86,0,8,0,3,93,33,35,11,1,35,19,3,51,27,1,51,3,2,82,100,202,183,100,235,235,110,180,194,100,250,1,30,254,226,1,93,1,95,254,239,1,17,254,173,0,0,0,1,255,253,0,0,2,57,2,188,0,8,0,233,187,0,1,0,4,0,4,0,4,43,65,3,0,175,0,1,0,1,93,65,3,0,32,0,1,0,1,93,184,0,1,16,184,0,0,208,65,3,0,121,0,0,0,1,93,65,3,0,102,0,0,0,1,93,65,3,0,38,0,0,0,1,93,65,3,0,175,0,4,0,1,93,65,3,0,32,0,4,0,1,93,184,0,4,16,184,0,5,208,65,3,0,105,0,5,0,1,93,65,3,0,41,0,5,0,1,93,65,3,0,118,0,5,0,1,93,185,0,6,0,4,244,186,0,7,0,4,0,1,17,18,57,184,0,0,16,185,0,8,0,4,244,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,14,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,6,62,89,186,0,7,0,6,0,2,17,18,57,184,0,6,16,184,0,8,208,48,49,65,3,0,88,0,1,0,1,93,65,3,0,89,0,4,0,1,93,65,3,0,131,0,7,0,1,93,65,3,0,116,0,7,0,1,93,1,3,17,35,17,3,51,27,1,2,57,236,99,237,100,186,186,2,188,254,135,254,189,1,67,1,121,254,221,1,35,0,0,0,1,0,9,0,0,2,30,2,188,0,7,1,200,186,0,2,0,6,0,3,43,65,3,0,64,0,2,0,1,93,65,3,0,175,0,2,0,1,93,65,3,0,96,0,2,0,1,93,65,5,0,16,0,2,0,32,0,2,0,2,93,65,3,0,128,0,2,0,1,93,184,0,2,16,184,0,0,208,65,3,0,16,0,6,0,1,93,184,0,6,16,184,0,4,208,184,0,1,208,65,3,0,99,0,1,0,1,93,65,3,0,69,0,1,0,1,93,65,5,0,85,0,1,0,101,0,1,0,2,113,65,3,0,38,0,1,0,1,93,65,3,0,184,0,1,0,1,93,65,5,0,153,0,1,0,169,0,1,0,2,93,65,5,0,54,0,1,0,70,0,1,0,2,113,65,3,0,246,0,1,0,1,93,65,3,0,6,0,1,0,1,113,65,3,0,21,0,1,0,1,113,65,3,0,36,0,1,0,1,113,65,3,0,114,0,1,0,1,93,65,3,0,128,0,1,0,1,93,184,0,0,16,184,0,5,208,65,3,0,24,0,5,0,1,93,65,3,0,41,0,5,0,1,93,65,3,0,58,0,5,0,1,113,65,3,0,74,0,5,0,1,93,65,3,0,43,0,5,0,1,113,65,3,0,125,0,5,0,1,93,65,3,0,143,0,5,0,1,93,65,3,0,108,0,5,0,1,93,65,3,0,26,0,5,0,1,113,65,5,0,90,0,5,0,106,0,5,0,2,113,65,3,0,249,0,5,0,1,93,65,3,0,9,0,5,0,1,113,65,3,0,73,0,5,0,1,113,65,3,0,183,0,5,0,1,93,65,5,0,150,0,5,0,166,0,5,0,2,93,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,14,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,185,0,2,0,2,244,184,0,7,16,185,0,6,0,2,244,48,49,1,65,3,0,84,0,1,0,1,93,65,3,0,54,0,1,0,1,93,65,3,0,57,0,5,0,1,93,65,3,0,91,0,5,0,1,93,9,1,33,21,33,1,33,53,2,30,254,135,1,76,254,24,1,120,254,181,2,188,253,154,86,2,102,86,0,0,0,1,0,70,255,121,1,71,2,238,0,7,0,78,184,0,1,47,65,3,0,143,0,1,0,1,93,65,5,0,0,0,1,0,16,0,1,0,2,93,184,0,0,220,184,0,4,208,184,0,1,16,184,0,6,220,0,184,0,0,47,184,0,0,69,88,184,0,3,47,27,185,0,3,0,18,62,89,184,0,4,220,184,0,0,16,184,0,7,220,48,49,5,33,17,33,21,35,17,51,1,71,254,255,1,1,174,174,135,3,117,68,253,19,0,0,0,1,0,35,255,171,1,250,2,188,0,3,0,61,184,0,2,47,184,0,0,220,65,5,0,112,0,0,0,128,0,0,0,2,93,185,0,1,0,4,244,184,0,2,16,185,0,3,0,4,244,0,184,0,1,47,184,0,0,69,88,184,0,3,47,27,185,0,3,0,14,62,89,48,49,5,35,1,51,1,250,93,254,134,93,85,3,17,0,1,0,0,255,121,1,1,2,238,0,7,0,82,184,0,2,47,65,3,0,208,0,2,0,1,93,65,3,0,16,0,2,0,1,93,184,0,4,220,184,0,2,16,184,0,5,220,184,0,4,16,184,0,7,208,0,184,0,3,47,184,0,0,69,88,184,0,0,47,27,185,0,0,0,18,62,89,184,0,3,16,184,0,4,220,184,0,0,16,184,0,7,220,48,49,17,33,17,33,53,51,17,35,1,1,254,255,174,174,2,238,252,139,68,2,237,0,0,0,0,1,0,49,1,181,1,205,2,247,0,5,0,95,25,184,0,4,47,24,184,0,1,208,184,0,4,16,184,0,3,208,184,0,3,47,184,0,4,16,184,0,5,208,184,0,5,47,0,184,0,4,47,184,0,2,220,184,0,0,208,184,0,4,16,184,0,1,208,65,7,0,107,0,1,0,123,0,1,0,139,0,1,0,3,93,184,0,2,16,184,0,3,208,65,3,0,181,0,3,0,1,93,184,0,5,208,48,49,1,39,7,53,55,23,1,205,206,206,206,206,1,181,216,216,106,216,216,0,1,0,3,255,134,2,51,255,220,0,3,0,64,184,0,4,47,184,0,5,47,184,0,4,16,184,0,2,208,184,0,2,47,184,0,5,16,184,0,3,208,184,0,3,47,0,184,0,4,47,184,0,2,220,184,0,1,220,65,7,0,79,0,1,0,95,0,1,0,111,0,1,0,3,113,48,49,5,33,53,33,2,51,253,208,2,48,122,86,0,0,0,1,0,58,2,84,0,245,2,220,0,3,0,126,184,0,1,47,65,7,0,0,0,1,0,16,0,1,0,32,0,1,0,3,93,65,5,0,16,0,1,0,32,0,1,0,2,113,184,0,3,220,0,184,0,0,47,65,3,0,16,0,0,0,1,113,65,3,0,64,0,0,0,1,93,65,3,0,32,0,0,0,1,93,184,0,2,220,65,5,0,15,0,2,0,31,0,2,0,2,93,184,0,1,220,184,0,0,16,184,0,3,220,65,11,0,86,0,3,0,102,0,3,0,118,0,3,0,134,0,3,0,150,0,3,0,5,93,48,49,19,39,53,23,245,187,187,2,84,64,72,95,0,2,0,24,255,246,1,216,1,244,0,34,0,43,2,22,186,0,30,0,12,0,3,43,65,3,0,160,0,30,0,1,93,65,3,0,159,0,30,0,1,93,65,3,0,127,0,30,0,1,93,65,3,0,48,0,30,0,1,113,65,3,0,192,0,30,0,1,93,65,3,0,16,0,30,0,1,113,184,0,30,16,184,0,0,208,184,0,0,47,65,3,0,0,0,0,0,1,93,184,0,30,16,185,0,36,0,4,244,186,0,7,0,36,0,30,17,18,57,65,9,0,111,0,12,0,127,0,12,0,143,0,12,0,159,0,12,0,4,93,65,3,0,15,0,12,0,1,113,65,3,0,63,0,12,0,1,93,65,3,0,31,0,12,0,1,93,65,3,0,191,0,12,0,1,93,65,3,0,192,0,12,0,1,93,65,3,0,160,0,12,0,1,93,184,0,17,208,186,0,23,0,12,0,30,17,18,57,184,0,23,47,184,0,12,16,185,0,39,0,4,244,0,184,0,0,69,88,184,0,25,47,27,185,0,25,0,12,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,6,62,89,186,0,17,0,25,0,9,17,18,57,184,0,17,47,186,0,7,0,17,0,9,17,18,57,184,0,25,16,185,0,20,0,2,244,184,0,25,16,184,0,22,220,65,3,0,79,0,22,0,1,93,184,0,1,16,185,0,34,0,1,244,184,0,17,16,185,0,36,0,1,244,184,0,9,16,185,0,41,0,1,244,48,49,1,65,3,0,56,0,10,0,1,93,65,3,0,25,0,10,0,1,93,65,3,0,41,0,11,0,1,93,65,3,0,26,0,11,0,1,93,65,3,0,24,0,14,0,1,93,65,3,0,136,0,14,0,1,93,65,5,0,120,0,24,0,136,0,24,0,2,93,65,7,0,7,0,27,0,23,0,27,0,39,0,27,0,3,93,65,3,0,6,0,28,0,1,93,0,65,3,0,56,0,10,0,1,93,65,3,0,25,0,10,0,1,93,65,3,0,42,0,10,0,1,93,65,3,0,118,0,14,0,1,93,65,3,0,135,0,14,0,1,93,65,3,0,117,0,24,0,1,93,65,5,0,86,0,24,0,102,0,24,0,2,93,65,3,0,135,0,24,0,1,93,65,5,0,6,0,27,0,22,0,27,0,2,93,65,3,0,39,0,27,0,1,93,37,7,35,34,46,2,39,6,35,34,38,53,52,62,2,55,52,38,35,34,7,39,54,51,50,30,2,29,1,20,22,51,39,53,14,1,21,20,51,50,54,1,216,14,7,30,40,28,19,9,62,88,69,82,55,85,104,49,51,56,64,65,13,66,100,47,66,41,19,20,36,146,108,93,76,36,67,62,72,7,17,28,20,72,79,63,51,66,40,17,1,66,47,44,73,51,25,55,90,65,100,58,45,66,117,4,49,55,75,36,0,2,0,60,255,246,2,11,2,238,0,21,0,41,1,57,186,0,17,0,7,0,3,43,65,3,0,15,0,7,0,1,113,65,3,0,31,0,7,0,1,93,65,3,0,47,0,7,0,1,113,65,3,0,0,0,7,0,1,93,65,3,0,32,0,7,0,1,93,184,0,7,16,185,0,10,0,4,244,184,0,5,208,65,3,0,0,0,17,0,1,93,65,7,0,32,0,17,0,48,0,17,0,64,0,17,0,3,93,65,3,0,96,0,17,0,1,93,65,3,0,16,0,17,0,1,113,184,0,10,16,184,0,27,208,184,0,17,16,185,0,37,0,4,244,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,12,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,18,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,6,62,89,186,0,5,0,0,0,12,17,18,57,186,0,10,0,12,0,0,17,18,57,184,0,12,16,185,0,22,0,2,244,184,0,0,16,185,0,32,0,2,244,48,49,1,65,3,0,87,0,11,0,1,93,65,3,0,102,0,20,0,1,93,65,3,0,87,0,20,0,1,93,0,65,5,0,85,0,11,0,101,0,11,0,2,93,65,3,0,86,0,14,0,1,93,65,3,0,103,0,14,0,1,93,65,5,0,89,0,20,0,105,0,20,0,2,93,5,34,46,2,39,7,35,17,51,17,54,51,50,30,2,21,20,14,2,3,34,14,2,21,20,30,2,51,50,62,2,53,52,46,2,1,45,18,42,42,37,12,10,80,90,52,100,49,82,58,32,34,60,81,57,29,53,40,24,23,40,53,30,32,52,36,20,20,37,52,10,10,18,27,17,62,2,238,254,199,63,41,70,93,51,53,93,69,40,1,174,23,45,65,42,43,66,44,22,28,48,64,35,37,64,47,27,0,1,0,33,255,246,1,171,1,244,0,25,1,133,186,0,12,0,5,0,3,43,65,3,0,143,0,5,0,1,93,65,3,0,31,0,5,0,1,93,65,9,0,63,0,5,0,79,0,5,0,95,0,5,0,111,0,5,0,4,93,65,3,0,32,0,5,0,1,93,65,3,0,176,0,12,0,1,93,65,3,0,0,0,12,0,1,113,65,3,0,32,0,12,0,1,113,65,3,0,208,0,12,0,1,93,65,3,0,32,0,12,0,1,93,65,3,0,0,0,12,0,1,93,184,0,5,16,185,0,18,0,4,244,184,0,12,16,184,0,24,208,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,12,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,10,16,184,0,13,220,184,0,10,16,185,0,15,0,2,244,184,0,0,16,185,0,21,0,2,244,184,0,0,16,184,0,23,220,48,49,1,65,5,0,90,0,2,0,106,0,2,0,2,93,65,5,0,89,0,8,0,105,0,8,0,2,93,65,3,0,104,0,11,0,1,93,65,3,0,104,0,24,0,1,93,65,3,0,104,0,25,0,1,93,0,65,3,0,89,0,2,0,1,93,65,3,0,106,0,2,0,1,93,65,3,0,84,0,8,0,1,93,65,3,0,101,0,8,0,1,93,65,3,0,132,0,11,0,1,93,65,5,0,85,0,11,0,101,0,11,0,2,93,65,3,0,84,0,12,0,1,93,65,3,0,116,0,12,0,1,93,65,3,0,101,0,12,0,1,93,65,3,0,133,0,12,0,1,93,65,7,0,90,0,24,0,106,0,24,0,122,0,24,0,3,93,65,3,0,140,0,24,0,1,93,65,5,0,89,0,25,0,105,0,25,0,2,93,5,34,46,2,53,52,62,2,51,50,23,7,38,35,34,6,21,20,22,51,50,55,23,6,1,21,59,90,63,32,32,61,91,59,98,53,14,62,65,81,80,80,81,66,62,12,55,10,39,69,93,55,56,93,68,37,29,81,30,90,84,84,93,30,72,37,0,0,0,0,2,0,32,255,246,1,239,2,238,0,21,0,41,1,39,186,0,21,0,12,0,3,43,65,3,0,143,0,21,0,1,93,65,7,0,0,0,21,0,16,0,21,0,32,0,21,0,3,113,184,0,21,16,185,0,20,0,4,244,184,0,2,208,65,3,0,31,0,12,0,1,93,65,5,0,63,0,12,0,79,0,12,0,2,93,65,3,0,111,0,12,0,1,93,65,3,0,143,0,12,0,1,93,184,0,12,16,185,0,27,0,4,244,184,0,20,16,184,0,37,208,0,184,0,0,69,88,184,0,21,47,27,185,0,21,0,18,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,12,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,6,62,89,186,0,2,0,7,0,17,17,18,57,186,0,19,0,17,0,7,17,18,57,184,0,17,16,185,0,22,0,2,244,184,0,7,16,185,0,32,0,2,244,48,49,1,65,3,0,88,0,9,0,1,93,65,3,0,105,0,9,0,1,93,65,3,0,104,0,15,0,1,93,0,65,5,0,88,0,9,0,104,0,9,0,2,93,65,3,0,103,0,15,0,1,93,65,3,0,85,0,16,0,1,93,65,3,0,101,0,18,0,1,93,65,3,0,86,0,18,0,1,93,33,35,39,14,3,35,34,46,2,53,52,62,2,51,50,23,17,51,3,34,14,2,21,20,30,2,51,50,62,2,53,52,46,2,1,239,80,10,12,37,41,42,18,47,82,60,34,32,59,82,50,99,51,90,233,32,51,36,19,19,35,51,33,30,55,43,25,26,43,55,62,17,26,19,10,40,69,93,53,51,93,70,41,62,1,56,254,182,26,46,64,39,36,64,47,28,21,43,65,43,42,66,46,24,0,0,2,0,31,255,246,1,226,1,244,0,24,0,30,2,2,186,0,23,0,13,0,3,43,65,3,0,175,0,13,0,1,93,65,3,0,79,0,13,0,1,93,65,3,0,47,0,13,0,1,113,65,3,0,143,0,13,0,1,93,65,3,0,111,0,13,0,1,93,184,0,13,16,185,0,1,0,4,244,65,3,0,80,0,23,0,1,93,65,3,0,144,0,23,0,1,93,65,3,0,208,0,23,0,1,93,65,3,0,16,0,23,0,1,113,65,3,0,48,0,23,0,1,113,65,3,0,240,0,23,0,1,93,65,3,0,176,0,23,0,1,93,65,3,0,112,0,23,0,1,93,65,3,0,16,0,23,0,1,93,65,3,0,80,0,23,0,1,113,186,0,6,0,23,0,13,17,18,57,184,0,6,47,184,0,23,16,185,0,28,0,4,244,186,0,27,0,1,0,28,17,18,57,0,184,0,0,69,88,184,0,18,47,27,185,0,18,0,12,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,6,62,89,186,0,1,0,18,0,8,17,18,57,184,0,1,47,65,5,0,144,0,1,0,160,0,1,0,2,93,65,5,0,16,0,1,0,32,0,1,0,2,93,65,5,0,80,0,1,0,96,0,1,0,2,113,184,0,8,16,185,0,3,0,2,244,184,0,8,16,184,0,5,220,184,0,18,16,185,0,25,0,2,244,184,0,1,16,184,0,27,220,65,3,0,255,0,27,0,1,113,65,15,0,159,0,27,0,175,0,27,0,191,0,27,0,207,0,27,0,223,0,27,0,239,0,27,0,255,0,27,0,7,93,48,49,1,65,3,0,69,0,2,0,1,93,65,3,0,54,0,2,0,1,93,65,3,0,135,0,6,0,1,93,65,3,0,103,0,7,0,1,93,65,3,0,120,0,7,0,1,93,65,3,0,88,0,10,0,1,93,65,3,0,135,0,20,0,1,93,65,3,0,132,0,21,0,1,93,65,3,0,6,0,21,0,1,93,0,65,3,0,54,0,2,0,1,93,65,3,0,71,0,2,0,1,93,65,3,0,137,0,6,0,1,93,65,5,0,105,0,7,0,121,0,7,0,2,93,65,3,0,90,0,7,0,1,93,65,3,0,89,0,10,0,1,93,65,3,0,134,0,20,0,1,93,65,3,0,135,0,21,0,1,93,37,33,22,51,50,55,23,6,35,34,46,2,53,52,62,2,51,50,30,2,21,20,39,34,7,33,52,38,1,222,254,157,16,168,75,66,12,87,77,62,99,68,36,34,62,89,55,47,78,55,31,213,109,29,1,2,60,245,175,29,71,38,40,69,95,55,53,92,67,39,28,54,77,48,28,155,113,54,59,0,0,0,0,1,0,10,0,0,1,61,2,238,0,23,0,236,186,0,13,0,4,0,3,43,65,3,0,143,0,4,0,1,93,65,3,0,47,0,4,0,1,113,184,0,4,16,185,0,1,0,4,244,184,0,4,16,184,0,5,208,184,0,5,47,184,0,4,16,184,0,7,208,65,3,0,47,0,13,0,1,113,184,0,1,16,184,0,22,208,184,0,13,16,184,0,23,208,184,0,23,47,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,18,62,89,184,0,0,69,88,184,0,22,47,27,185,0,22,0,12,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,184,0,22,16,185,0,1,0,1,244,184,0,4,208,184,0,22,16,184,0,7,208,184,0,11,16,185,0,16,0,2,244,48,49,1,65,9,0,73,0,9,0,89,0,9,0,105,0,9,0,121,0,9,0,4,93,65,9,0,10,0,9,0,26,0,9,0,42,0,9,0,58,0,9,0,4,93,0,65,9,0,5,0,10,0,21,0,10,0,37,0,10,0,53,0,10,0,4,93,1,35,17,35,17,35,55,51,53,52,54,51,50,23,7,38,35,34,14,2,29,1,51,1,61,132,90,85,12,73,59,55,64,38,14,29,31,17,20,11,4,132,1,164,254,92,1,164,70,124,61,75,13,76,9,7,25,48,40,60,0,0,0,3,0,26,255,6,1,245,1,244,0,53,0,65,0,78,3,224,186,0,30,0,14,0,3,43,65,3,0,95,0,14,0,1,93,65,3,0,32,0,14,0,1,93,65,3,0,160,0,14,0,1,93,184,0,14,16,184,0,5,208,184,0,5,47,184,0,14,16,184,0,9,208,184,0,9,47,65,3,0,0,0,30,0,1,93,65,3,0,96,0,30,0,1,93,65,3,0,160,0,30,0,1,93,65,3,0,128,0,30,0,1,93,65,3,0,32,0,30,0,1,93,65,3,0,192,0,30,0,1,93,65,3,0,16,0,30,0,1,113,186,0,12,0,14,0,30,17,18,57,186,0,21,0,14,0,30,17,18,57,184,0,30,16,184,0,24,208,184,0,24,47,186,0,28,0,30,0,14,17,18,57,186,0,37,0,30,0,14,17,18,57,184,0,9,16,185,0,39,0,4,244,184,0,30,16,184,0,49,208,184,0,49,47,184,0,14,16,185,0,57,0,4,244,184,0,30,16,185,0,63,0,4,244,184,0,5,16,185,0,71,0,4,244,184,0,49,16,185,0,77,0,4,244,65,3,0,79,0,80,0,1,93,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,12,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,12,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,8,62,89,65,3,0,0,0,0,0,1,93,186,0,44,0,19,0,0,17,18,57,65,5,0,58,0,44,0,74,0,44,0,2,93,65,3,0,101,0,44,0,1,93,184,0,44,16,185,0,66,0,1,244,186,0,7,0,44,0,66,17,18,57,184,0,19,16,184,0,35,220,65,3,0,111,0,35,0,1,93,65,5,0,63,0,35,0,79,0,35,0,2,93,65,3,0,143,0,35,0,1,93,65,3,0,15,0,35,0,1,113,186,0,12,0,35,0,19,17,18,57,186,0,21,0,19,0,35,17,18,57,184,0,24,16,185,0,25,0,1,244,186,0,28,0,19,0,35,17,18,57,186,0,37,0,35,0,19,17,18,57,184,0,19,16,185,0,54,0,1,244,184,0,35,16,185,0,60,0,1,244,186,0,68,0,66,0,44,17,18,57,184,0,0,16,185,0,74,0,1,244,48,49,1,65,3,0,9,0,3,0,1,93,65,5,0,122,0,8,0,138,0,8,0,2,93,65,3,0,121,0,12,0,1,93,65,3,0,120,0,13,0,1,93,65,3,0,138,0,13,0,1,93,65,3,0,9,0,16,0,1,93,65,3,0,123,0,16,0,1,93,65,3,0,140,0,16,0,1,93,65,3,0,136,0,17,0,1,93,65,3,0,121,0,17,0,1,93,65,3,0,117,0,21,0,1,93,65,3,0,134,0,21,0,1,93,65,3,0,117,0,28,0,1,93,65,3,0,134,0,28,0,1,93,65,3,0,117,0,32,0,1,93,65,3,0,134,0,32,0,1,93,65,3,0,134,0,33,0,1,93,65,3,0,7,0,33,0,1,93,65,3,0,119,0,33,0,1,93,65,3,0,134,0,47,0,1,93,65,5,0,23,0,47,0,39,0,47,0,2,93,65,3,0,119,0,47,0,1,93,65,5,0,118,0,51,0,134,0,51,0,2,93,65,3,0,6,0,52,0,1,93,65,3,0,135,0,52,0,1,93,65,3,0,119,0,69,0,1,93,0,65,3,0,8,0,3,0,1,93,65,3,0,120,0,8,0,1,93,65,3,0,120,0,12,0,1,93,65,3,0,120,0,13,0,1,93,65,3,0,6,0,16,0,1,93,65,3,0,119,0,16,0,1,93,65,3,0,133,0,17,0,1,93,65,3,0,119,0,17,0,1,93,65,3,0,134,0,21,0,1,93,65,3,0,119,0,21,0,1,93,65,5,0,118,0,28,0,134,0,28,0,2,93,65,3,0,137,0,32,0,1,93,65,3,0,122,0,32,0,1,93,65,3,0,9,0,33,0,1,93,65,3,0,121,0,33,0,1,93,65,3,0,138,0,33,0,1,93,65,3,0,102,0,42,0,1,93,65,3,0,134,0,47,0,1,93,65,5,0,23,0,47,0,39,0,47,0,2,93,65,3,0,119,0,47,0,1,93,65,5,0,122,0,51,0,138,0,51,0,2,93,65,3,0,9,0,52,0,1,93,65,3,0,121,0,52,0,1,93,65,3,0,138,0,52,0,1,93,65,3,0,121,0,69,0,1,93,65,3,0,138,0,69,0,1,93,23,34,46,2,53,52,55,38,53,52,54,55,38,53,52,62,2,51,50,23,54,59,1,7,35,34,7,22,21,20,14,2,35,34,39,6,21,20,30,2,23,30,3,23,20,14,2,3,34,6,21,20,22,51,50,54,53,52,38,3,34,39,14,1,21,20,22,51,50,54,53,52,255,58,86,57,28,87,50,27,31,85,27,51,75,47,66,59,52,67,8,11,23,31,27,45,28,51,73,46,39,31,24,11,33,59,49,33,70,57,38,2,34,63,92,75,55,60,65,52,54,62,64,12,17,72,34,44,78,69,72,79,250,24,41,54,29,78,32,24,38,17,41,15,61,99,42,72,53,30,36,28,60,7,54,63,39,70,54,32,9,14,16,9,13,10,11,9,6,18,30,47,35,31,56,42,25,2,166,67,55,57,67,72,55,57,62,254,58,12,10,50,26,35,45,47,31,52,0,1,0,60,0,0,1,230,2,238,0,16,1,44,186,0,0,0,9,0,3,43,65,3,0,223,0,0,0,1,93,65,3,0,32,0,0,0,1,93,65,3,0,64,0,0,0,1,93,184,0,0,16,185,0,1,0,4,244,65,3,0,223,0,9,0,1,93,65,3,0,15,0,9,0,1,113,65,3,0,47,0,9,0,1,113,65,3,0,32,0,9,0,1,93,184,0,9,16,185,0,8,0,4,244,184,0,12,208,65,3,0,128,0,17,0,1,93,65,3,0,239,0,18,0,1,93,65,3,0,31,0,18,0,1,93,65,3,0,207,0,18,0,1,93,65,3,0,175,0,18,0,1,93,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,18,62,89,184,0,0,69,88,184,0,14,47,27,185,0,14,0,12,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,6,62,89,184,0,1,208,184,0,14,16,185,0,5,0,2,244,65,3,0,6,0,9,0,1,113,186,0,12,0,14,0,8,17,18,57,48,49,1,65,7,0,118,0,15,0,134,0,15,0,150,0,15,0,3,93,65,3,0,7,0,15,0,1,93,0,65,3,0,150,0,4,0,1,93,65,3,0,118,0,15,0,1,93,65,3,0,150,0,15,0,1,93,65,3,0,7,0,15,0,1,93,65,3,0,135,0,15,0,1,93,33,35,17,52,38,35,34,7,17,35,17,51,17,54,51,50,21,1,230,90,52,65,88,40,91,91,49,93,193,1,6,87,71,64,254,156,2,238,254,199,63,238,0,2,0,61,0,0,0,151,2,188,0,3,0,7,0,165,187,0,7,0,4,0,6,0,4,43,65,3,0,143,0,7,0,1,93,65,3,0,223,0,7,0,1,93,65,3,0,63,0,7,0,1,113,65,3,0,32,0,7,0,1,93,184,0,7,16,184,0,0,208,65,3,0,223,0,6,0,1,93,65,3,0,63,0,6,0,1,113,65,3,0,143,0,6,0,1,93,65,3,0,32,0,6,0,1,93,184,0,6,16,184,0,1,208,0,184,0,1,47,184,0,0,69,88,184,0,6,47,27,185,0,6,0,12,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,6,62,89,65,3,0,32,0,1,0,1,93,65,3,0,64,0,1,0,1,93,184,0,1,16,184,0,2,220,48,49,19,35,53,51,17,35,17,51,151,90,90,90,90,2,88,100,253,68,1,234,0,0,0,0,2,255,244,255,14,0,151,2,188,0,14,0,18,0,209,187,0,9,0,4,0,8,0,4,43,65,3,0,63,0,8,0,1,113,65,3,0,143,0,8,0,1,93,65,3,0,223,0,8,0,1,93,65,3,0,32,0,8,0,1,93,184,0,8,16,184,0,2,208,184,0,2,47,65,3,0,143,0,9,0,1,93,65,3,0,223,0,9,0,1,93,65,3,0,63,0,9,0,1,113,65,3,0,32,0,9,0,1,93,184,0,9,16,184,0,15,208,184,0,8,16,184,0,16,208,0,184,0,16,47,184,0,0,69,88,184,0,8,47,27,185,0,8,0,12,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,8,62,89,185,0,2,0,1,244,65,3,0,64,0,16,0,1,93,65,3,0,32,0,16,0,1,93,184,0,16,16,184,0,17,220,48,49,1,65,11,0,5,0,12,0,21,0,12,0,37,0,12,0,53,0,12,0,69,0,12,0,5,93,23,7,39,62,3,53,17,51,17,20,14,2,19,35,53,51,28,30,10,22,28,16,7,90,20,33,45,98,90,90,237,5,69,2,10,21,37,30,2,51,253,171,32,45,31,18,3,65,100,0,0,0,1,0,60,0,0,1,189,2,238,0,10,1,129,186,0,8,0,1,0,3,43,65,3,0,15,0,1,0,1,113,65,3,0,143,0,1,0,1,93,65,3,0,0,0,1,0,1,93,65,3,0,32,0,1,0,1,93,184,0,1,16,185,0,0,0,4,244,184,0,4,208,65,3,0,51,0,8,0,1,93,65,3,0,37,0,8,0,1,93,65,3,0,73,0,8,0,1,93,65,3,0,138,0,8,0,1,93,65,3,0,90,0,8,0,1,93,65,3,0,121,0,8,0,1,93,65,3,0,19,0,8,0,1,93,65,3,0,99,0,8,0,1,93,65,3,0,0,0,8,0,1,93,184,0,8,16,184,0,9,208,65,5,0,73,0,9,0,89,0,9,0,2,93,65,3,0,106,0,9,0,1,93,65,5,0,123,0,9,0,139,0,9,0,2,93,65,3,0,41,0,9,0,1,113,65,7,0,166,0,9,0,182,0,9,0,198,0,9,0,3,93,65,3,0,149,0,9,0,1,93,184,0,5,208,65,3,0,134,0,5,0,1,93,184,0,8,16,184,0,6,208,65,3,0,134,0,6,0,1,93,184,0,4,16,184,0,7,208,65,3,0,38,0,7,0,1,113,65,7,0,101,0,7,0,117,0,7,0,133,0,7,0,3,93,65,3,0,63,0,12,0,1,93,65,3,0,31,0,12,0,1,93,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,18,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,12,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,9,208,186,0,7,0,5,0,9,17,18,57,25,184,0,7,47,24,184,0,4,208,184,0,7,16,184,0,10,208,48,49,51,35,17,51,17,55,51,7,19,35,39,150,90,90,180,110,202,207,110,185,2,238,254,31,221,226,254,248,249,0,1,0,60,255,246,0,229,2,238,0,12,0,111,186,0,0,0,5,0,3,43,65,3,0,255,0,0,0,1,93,65,3,0,32,0,0,0,1,93,65,3,0,47,0,5,0,1,113,65,3,0,255,0,5,0,1,93,65,3,0,32,0,5,0,1,93,184,0,5,16,185,0,8,0,4,244,65,3,0,16,0,13,0,1,93,65,3,0,175,0,14,0,1,93,0,184,0,7,47,184,0,0,69,88,184,0,2,47,27,185,0,2,0,6,62,89,185,0,0,0,1,244,48,49,55,7,35,34,38,53,17,51,17,20,30,2,229,13,29,66,61,90,5,16,31,62,72,67,51,2,130,253,178,31,39,21,7,0,0,0,1,0,61,0,0,3,53,1,244,0,29,2,14,186,0,9,0,17,0,3,43,65,3,0,0,0,9,0,1,93,65,3,0,255,0,9,0,1,93,65,3,0,32,0,9,0,1,93,65,3,0,64,0,9,0,1,113,184,0,9,16,184,0,1,220,65,3,0,64,0,1,0,1,113,185,0,0,0,4,244,184,0,9,16,185,0,8,0,4,244,65,3,0,255,0,17,0,1,93,65,3,0,32,0,17,0,1,93,65,3,0,0,0,17,0,1,93,184,0,17,16,185,0,16,0,4,244,186,0,20,0,16,0,17,17,18,57,186,0,25,0,8,0,9,17,18,57,65,3,0,95,0,31,0,1,93,0,184,0,0,69,88,184,0,23,47,27,185,0,23,0,12,62,89,184,0,0,69,88,184,0,27,47,27,185,0,27,0,12,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,12,62,89,184,0,0,69,88,184,0,16,47,27,185,0,16,0,6,62,89,184,0,9,208,184,0,1,208,184,0,27,16,185,0,5,0,2,244,184,0,23,16,185,0,13,0,2,244,186,0,20,0,23,0,16,17,18,57,186,0,25,0,27,0,9,17,18,57,48,49,1,65,3,0,168,0,11,0,1,93,65,3,0,154,0,12,0,1,93,65,3,0,123,0,12,0,1,93,65,3,0,87,0,14,0,1,93,65,5,0,88,0,21,0,104,0,21,0,2,93,65,5,0,120,0,25,0,136,0,25,0,2,93,65,3,0,88,0,26,0,1,93,65,3,0,165,0,28,0,1,93,65,3,0,134,0,28,0,1,93,65,5,0,7,0,28,0,23,0,28,0,2,93,65,3,0,151,0,28,0,1,93,0,65,3,0,171,0,11,0,1,93,65,3,0,119,0,12,0,1,93,65,7,0,86,0,14,0,102,0,14,0,118,0,14,0,3,93,65,3,0,85,0,21,0,1,93,65,3,0,102,0,21,0,1,93,65,3,0,119,0,21,0,1,93,65,3,0,164,0,25,0,1,93,65,5,0,133,0,25,0,149,0,25,0,2,93,65,3,0,118,0,25,0,1,93,65,3,0,86,0,26,0,1,93,65,3,0,103,0,26,0,1,93,65,3,0,133,0,28,0,1,93,65,3,0,6,0,28,0,1,93,65,5,0,150,0,28,0,166,0,28,0,2,93,65,3,0,23,0,28,0,1,93,33,35,17,52,38,35,34,21,17,35,17,52,38,35,34,7,17,35,17,51,23,62,1,51,50,23,54,51,50,21,3,53,90,54,61,130,90,59,56,94,36,90,70,10,40,66,41,112,54,51,128,188,1,32,69,63,136,254,228,1,14,84,66,64,254,156,1,234,52,36,26,98,98,211,0,0,0,1,0,61,0,0,1,247,1,244,0,16,1,95,186,0,0,0,9,0,3,43,65,3,0,96,0,0,0,1,93,65,3,0,32,0,0,0,1,113,65,3,0,0,0,0,0,1,93,65,3,0,64,0,0,0,1,113,65,3,0,0,0,0,0,1,113,65,3,0,64,0,0,0,1,93,65,3,0,32,0,0,0,1,93,184,0,0,16,185,0,1,0,4,244,65,3,0,143,0,9,0,1,93,65,3,0,255,0,9,0,1,93,65,3,0,223,0,9,0,1,93,65,3,0,0,0,9,0,1,93,65,3,0,32,0,9,0,1,93,184,0,9,16,185,0,8,0,4,244,184,0,12,208,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,12,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,12,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,6,62,89,184,0,1,208,184,0,14,16,185,0,5,0,2,244,186,0,7,0,8,0,5,17,18,57,186,0,12,0,14,0,8,17,18,57,48,49,1,65,3,0,117,0,15,0,1,93,65,5,0,6,0,15,0,22,0,15,0,2,93,65,3,0,150,0,15,0,1,93,65,3,0,135,0,15,0,1,93,65,3,0,167,0,15,0,1,93,0,65,3,0,91,0,3,0,1,113,65,3,0,84,0,6,0,1,93,65,3,0,84,0,13,0,1,93,65,3,0,22,0,15,0,1,93,65,3,0,134,0,15,0,1,93,65,3,0,7,0,15,0,1,93,65,3,0,119,0,15,0,1,93,65,3,0,151,0,15,0,1,93,33,35,17,52,38,35,34,7,17,35,17,51,23,54,51,50,21,1,247,90,59,69,98,36,90,70,10,70,92,200,1,14,79,71,64,254,156,1,234,52,62,230,0,0,2,0,32,255,246,2,6,1,244,0,18,0,31,1,107,186,0,17,0,7,0,3,43,65,3,0,31,0,7,0,1,93,65,3,0,95,0,7,0,1,93,65,3,0,159,0,7,0,1,93,65,3,0,47,0,7,0,1,113,65,3,0,127,0,7,0,1,93,65,3,0,63,0,7,0,1,93,65,3,0,32,0,7,0,1,93,65,3,0,160,0,7,0,1,93,65,5,0,160,0,17,0,176,0,17,0,2,93,65,3,0,240,0,17,0,1,93,65,3,0,48,0,17,0,1,113,65,3,0,32,0,17,0,1,93,65,3,0,16,0,17,0,1,113,65,3,0,208,0,17,0,1,93,65,3,0,96,0,17,0,1,93,65,3,0,64,0,17,0,1,93,184,0,7,16,185,0,24,0,4,244,184,0,17,16,185,0,30,0,4,244,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,12,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,6,62,89,184,0,12,16,185,0,21,0,2,244,184,0,2,16,185,0,27,0,2,244,48,49,1,65,3,0,101,0,0,0,1,93,65,3,0,86,0,0,0,1,93,65,5,0,88,0,4,0,104,0,4,0,2,93,65,3,0,89,0,5,0,1,93,65,5,0,89,0,10,0,105,0,10,0,2,93,65,5,0,86,0,14,0,102,0,14,0,2,93,0,65,5,0,89,0,0,0,105,0,0,0,2,93,65,3,0,88,0,4,0,1,93,65,3,0,105,0,4,0,1,93,65,5,0,87,0,10,0,103,0,10,0,2,93,65,3,0,86,0,14,0,1,93,65,3,0,103,0,14,0,1,93,37,6,35,34,46,2,53,52,62,2,51,50,30,2,21,20,39,38,35,34,6,21,20,22,51,50,54,53,52,1,196,65,112,57,90,63,33,34,63,90,56,56,90,63,34,132,39,72,72,79,79,72,73,78,62,72,39,68,94,54,55,93,68,39,39,69,93,54,110,239,46,91,84,84,91,94,81,83,0,0,0,0,2,0,61,255,14,2,12,1,244,0,22,0,42,1,129,186,0,18,0,7,0,3,43,65,3,0,15,0,7,0,1,113,65,3,0,31,0,7,0,1,93,65,3,0,47,0,7,0,1,113,65,3,0,0,0,7,0,1,93,65,3,0,32,0,7,0,1,93,184,0,7,16,185,0,6,0,4,244,184,0,10,208,65,3,0,0,0,18,0,1,93,65,7,0,32,0,18,0,48,0,18,0,64,0,18,0,3,93,65,3,0,96,0,18,0,1,93,65,3,0,16,0,18,0,1,113,184,0,6,16,184,0,28,208,184,0,18,16,185,0,38,0,4,244,0,184,0,0,69,88,184,0,9,47,27,185,0,9,0,12,62,89,184,0,0,69,88,184,0,13,47,27,185,0,13,0,12,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,8,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,186,0,5,0,0,0,13,17,18,57,65,3,0,34,0,7,0,1,113,186,0,10,0,13,0,0,17,18,57,184,0,13,16,185,0,23,0,2,244,184,0,0,16,185,0,33,0,2,244,48,49,1,65,3,0,104,0,11,0,1,93,65,3,0,91,0,11,0,1,93,65,3,0,86,0,15,0,1,93,65,3,0,103,0,15,0,1,93,65,5,0,86,0,20,0,102,0,20,0,2,93,65,3,0,102,0,21,0,1,93,65,3,0,87,0,21,0,1,93,0,65,3,0,85,0,11,0,1,93,65,3,0,103,0,11,0,1,93,65,5,0,87,0,15,0,103,0,15,0,2,93,65,3,0,104,0,20,0,1,93,65,3,0,89,0,20,0,1,93,65,3,0,89,0,21,0,1,93,65,3,0,106,0,21,0,1,93,5,34,46,2,39,17,35,17,51,23,62,1,51,50,30,2,21,20,14,2,3,34,14,2,21,20,30,2,51,50,62,2,53,52,46,2,1,49,18,43,42,38,13,90,70,10,34,74,57,50,80,57,31,29,55,82,63,29,54,41,25,24,41,54,30,31,51,36,19,19,36,51,10,10,18,27,17,254,208,2,220,70,41,39,41,71,92,51,55,94,68,38,1,174,24,45,65,41,44,65,44,22,27,46,64,38,39,64,46,26,0,0,2,0,33,255,14,1,240,1,244,0,22,0,42,1,65,186,0,16,0,5,0,3,43,65,3,0,31,0,5,0,1,93,65,3,0,111,0,5,0,1,93,65,5,0,63,0,5,0,79,0,5,0,2,93,65,7,0,0,0,16,0,16,0,16,0,32,0,16,0,3,113,184,0,16,16,185,0,17,0,4,244,184,0,13,208,184,0,5,16,185,0,28,0,4,244,184,0,17,16,184,0,38,208,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,12,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,12,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,0,69,88,184,0,16,47,27,185,0,16,0,8,62,89,65,3,0,69,0,5,0,1,93,186,0,13,0,10,0,0,17,18,57,65,3,0,47,0,16,0,1,113,186,0,18,0,0,0,10,17,18,57,184,0,10,16,185,0,23,0,2,244,184,0,0,16,185,0,33,0,2,244,48,49,1,65,3,0,90,0,2,0,1,93,65,3,0,107,0,2,0,1,93,65,3,0,90,0,3,0,1,93,65,5,0,88,0,8,0,104,0,8,0,2,93,65,3,0,85,0,12,0,1,93,65,3,0,103,0,12,0,1,93,0,65,5,0,89,0,2,0,105,0,2,0,2,93,65,5,0,86,0,8,0,102,0,8,0,2,93,65,3,0,102,0,12,0,1,93,65,3,0,87,0,12,0,1,93,23,34,46,2,53,52,62,2,51,50,22,23,55,51,17,35,17,14,3,3,34,14,2,21,20,30,2,51,50,62,2,53,52,46,2,252,53,82,56,28,31,57,80,50,57,74,34,10,70,90,12,38,42,43,9,32,50,36,19,19,36,50,32,30,55,40,24,25,41,54,10,38,68,94,55,52,92,70,41,39,41,70,253,36,1,48,16,27,19,10,1,174,26,46,64,39,38,64,46,27,23,44,66,42,41,65,45,24,0,0,0,0,1,0,61,0,0,1,64,1,252,0,15,0,166,186,0,0,0,9,0,3,43,65,3,0,0,0,0,0,1,93,65,3,0,32,0,0,0,1,93,65,3,0,31,0,9,0,1,93,65,3,0,0,0,9,0,1,93,65,3,0,32,0,9,0,1,93,184,0,9,16,185,0,8,0,4,244,184,0,12,208,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,12,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,6,62,89,184,0,10,16,184,0,0,208,184,0,0,47,184,0,1,220,65,5,0,127,0,1,0,143,0,1,0,2,93,65,5,0,31,0,1,0,47,0,1,0,2,113,186,0,7,0,9,0,1,17,18,57,186,0,12,0,0,0,9,17,18,57,48,49,1,7,35,34,14,2,7,17,35,17,51,23,62,1,51,1,64,20,31,15,34,31,26,6,96,74,11,46,75,45,1,252,99,11,18,22,12,254,166,1,234,81,52,47,0,1,0,32,255,246,1,131,1,244,0,39,2,81,186,0,35,0,15,0,3,43,65,3,0,127,0,15,0,1,93,184,0,15,16,184,0,2,208,184,0,2,47,65,3,0,208,0,35,0,1,93,65,3,0,0,0,35,0,1,113,65,3,0,160,0,35,0,1,93,65,3,0,128,0,35,0,1,93,184,0,35,16,185,0,8,0,4,244,186,0,20,0,35,0,15,17,18,57,184,0,20,47,184,0,15,16,185,0,25,0,4,244,65,3,0,31,0,41,0,1,93,65,3,0,79,0,41,0,1,93,0,184,0,0,69,88,184,0,18,47,27,185,0,18,0,12,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,3,220,65,5,0,48,0,3,0,64,0,3,0,2,93,184,0,0,16,185,0,6,0,2,244,186,0,10,0,0,0,18,17,18,57,65,3,0,121,0,10,0,1,93,65,3,0,10,0,10,0,1,93,65,3,0,138,0,10,0,1,93,65,5,0,166,0,10,0,182,0,10,0,2,93,65,3,0,149,0,10,0,1,93,184,0,18,16,184,0,21,220,65,5,0,176,0,21,0,192,0,21,0,2,93,184,0,18,16,185,0,23,0,1,244,186,0,29,0,18,0,0,17,18,57,65,3,0,10,0,29,0,1,93,48,49,1,65,9,0,87,0,1,0,103,0,1,0,119,0,1,0,135,0,1,0,4,93,65,3,0,57,0,13,0,1,93,65,3,0,75,0,13,0,1,93,65,3,0,25,0,16,0,1,93,65,3,0,42,0,16,0,1,93,65,3,0,11,0,16,0,1,93,65,5,0,54,0,33,0,70,0,33,0,2,93,65,5,0,118,0,33,0,134,0,33,0,2,93,65,3,0,37,0,38,0,1,93,65,3,0,22,0,38,0,1,93,65,3,0,7,0,38,0,1,93,0,65,9,0,89,0,1,0,105,0,1,0,121,0,1,0,137,0,1,0,4,93,65,9,0,89,0,2,0,105,0,2,0,121,0,2,0,137,0,2,0,4,93,65,3,0,72,0,13,0,1,93,65,3,0,57,0,13,0,1,93,65,3,0,37,0,16,0,1,93,65,3,0,6,0,16,0,1,93,65,3,0,23,0,16,0,1,93,65,9,0,84,0,19,0,100,0,19,0,116,0,19,0,132,0,19,0,4,93,65,9,0,85,0,20,0,101,0,20,0,117,0,20,0,133,0,20,0,4,93,65,5,0,53,0,33,0,69,0,33,0,2,93,65,3,0,134,0,33,0,1,93,65,3,0,119,0,33,0,1,93,65,3,0,9,0,38,0,1,93,65,5,0,26,0,38,0,42,0,38,0,2,93,23,34,39,55,30,1,51,50,53,52,39,46,3,39,52,54,51,50,23,7,38,35,34,21,20,30,2,23,30,3,21,20,14,2,200,107,61,11,20,83,50,98,98,30,53,42,27,2,90,94,67,66,11,52,68,95,10,26,44,34,21,49,42,28,16,42,73,10,43,87,18,32,61,55,26,7,19,31,48,36,63,84,32,82,43,66,16,22,17,16,10,6,21,34,50,35,24,52,42,28,0,0,1,0,18,255,246,1,65,2,108,0,21,0,215,186,0,14,0,6,0,3,43,65,3,0,95,0,14,0,1,93,65,3,0,0,0,14,0,1,93,184,0,14,16,184,0,0,208,184,0,0,47,65,3,0,95,0,6,0,1,93,65,3,0,0,0,6,0,1,93,184,0,6,16,184,0,7,208,184,0,7,47,184,0,6,16,184,0,9,208,184,0,9,47,184,0,6,16,185,0,15,0,4,244,184,0,12,208,184,0,12,47,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,12,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,185,0,0,0,1,244,184,0,12,16,185,0,15,0,1,244,184,0,6,208,184,0,12,16,184,0,9,208,184,0,12,16,184,0,11,220,48,49,1,65,9,0,57,0,4,0,73,0,4,0,89,0,4,0,105,0,4,0,4,93,0,65,9,0,57,0,3,0,73,0,3,0,89,0,3,0,105,0,3,0,4,93,37,7,35,34,38,53,17,35,55,51,53,55,21,51,21,35,17,20,30,2,51,1,62,7,81,65,63,84,8,76,90,129,129,4,19,42,38,62,72,68,49,1,57,70,121,9,130,70,254,254,35,40,20,5,0,0,1,0,56,255,246,1,207,1,234,0,15,1,48,186,0,15,0,7,0,3,43,65,3,0,32,0,15,0,1,113,65,3,0,255,0,15,0,1,93,65,3,0,223,0,15,0,1,93,65,3,0,80,0,15,0,1,93,65,3,0,112,0,15,0,1,93,184,0,15,16,185,0,14,0,4,244,184,0,2,208,65,3,0,31,0,7,0,1,113,65,3,0,223,0,7,0,1,93,65,3,0,143,0,7,0,1,93,65,3,0,255,0,7,0,1,93,65,3,0,32,0,7,0,1,93,184,0,7,16,185,0,8,0,4,244,65,3,0,31,0,17,0,1,93,65,3,0,63,0,17,0,1,93,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,12,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,184,0,8,16,184,0,14,208,186,0,2,0,4,0,14,17,18,57,184,0,4,16,185,0,11,0,2,244,48,49,1,65,5,0,168,0,5,0,184,0,5,0,2,93,65,3,0,102,0,10,0,1,93,65,3,0,134,0,10,0,1,93,65,3,0,119,0,10,0,1,93,0,65,3,0,185,0,5,0,1,93,65,3,0,170,0,5,0,1,93,65,5,0,102,0,10,0,118,0,10,0,2,93,65,3,0,135,0,10,0,1,93,33,35,39,6,35,34,53,17,51,17,20,51,50,55,17,51,1,207,80,10,46,90,181,90,114,78,35,90,54,64,215,1,29,254,252,160,56,1,108,0,0,0,0,1,0,9,0,0,1,227,1,234,0,6,1,25,187,0,1,0,4,0,2,0,4,43,65,3,0,64,0,1,0,1,93,65,3,0,160,0,1,0,1,93,65,3,0,0,0,1,0,1,93,65,3,0,224,0,1,0,1,93,184,0,1,16,184,0,0,208,65,3,0,89,0,0,0,1,93,65,3,0,151,0,0,0,1,93,65,3,0,5,0,0,0,1,93,65,3,0,160,0,2,0,1,93,65,3,0,224,0,2,0,1,93,65,3,0,64,0,2,0,1,93,65,3,0,0,0,2,0,1,93,184,0,2,16,184,0,3,208,65,3,0,10,0,3,0,1,93,65,3,0,152,0,3,0,1,93,65,3,0,86,0,3,0,1,93,185,0,4,0,4,244,65,3,0,184,0,4,0,1,93,186,0,5,0,2,0,1,17,18,57,184,0,0,16,185,0,6,0,4,244,65,3,0,183,0,6,0,1,93,65,3,0,47,0,8,0,1,93,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,12,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,6,62,89,184,0,5,208,184,0,4,16,184,0,6,208,48,49,65,3,0,132,0,5,0,1,93,65,3,0,117,0,5,0,1,93,65,3,0,12,0,5,0,1,93,1,3,35,3,51,27,1,1,227,186,101,187,100,137,136,1,234,254,22,1,234,254,121,1,135,0,1,0,12,0,0,2,202,1,234,0,12,1,215,187,0,10,0,4,0,9,0,4,43,65,3,0,144,0,10,0,1,93,184,0,10,16,184,0,1,220,184,0,0,208,65,3,0,134,0,0,0,1,93,65,3,0,38,0,0,0,1,93,184,0,1,16,185,0,2,0,4,244,65,3,0,144,0,9,0,1,93,186,0,3,0,9,0,10,17,18,57,184,0,9,16,184,0,5,220,185,0,4,0,4,244,184,0,5,16,184,0,6,208,65,3,0,41,0,6,0,1,93,65,3,0,137,0,6,0,1,93,185,0,7,0,4,244,186,0,8,0,5,0,4,17,18,57,186,0,11,0,2,0,1,17,18,57,184,0,0,16,185,0,12,0,4,244,65,3,0,15,0,13,0,1,93,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,12,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,2,208,184,0,2,47,184,0,7,16,184,0,9,208,184,0,9,47,184,0,3,208,184,0,4,16,184,0,8,208,184,0,11,208,184,0,7,16,184,0,12,208,48,49,1,65,3,0,56,0,1,0,1,93,65,3,0,72,0,2,0,1,93,65,5,0,25,0,2,0,41,0,2,0,2,93,65,5,0,121,0,2,0,137,0,2,0,2,93,65,5,0,22,0,4,0,38,0,4,0,2,93,65,5,0,118,0,4,0,134,0,4,0,2,93,65,3,0,71,0,4,0,1,93,65,3,0,72,0,9,0,1,93,65,5,0,121,0,9,0,137,0,9,0,2,93,65,5,0,118,0,10,0,134,0,10,0,2,93,0,65,3,0,3,0,3,0,1,93,65,3,0,54,0,3,0,1,93,65,3,0,71,0,3,0,1,93,65,3,0,41,0,3,0,1,113,65,3,0,89,0,8,0,1,93,65,3,0,74,0,8,0,1,93,65,3,0,27,0,8,0,1,93,65,3,0,12,0,8,0,1,93,65,3,0,44,0,8,0,1,93,65,5,0,73,0,11,0,89,0,11,0,2,93,65,7,0,12,0,11,0,28,0,11,0,44,0,11,0,3,93,1,3,35,11,1,35,3,51,27,1,51,27,1,2,202,148,101,102,103,101,147,106,94,104,93,105,94,1,234,254,22,1,106,254,150,1,234,254,121,1,120,254,136,1,135,0,0,0,1,0,11,0,0,1,207,1,234,0,11,1,236,186,0,11,0,5,0,3,43,65,3,0,160,0,11,0,1,93,65,3,0,0,0,11,0,1,93,65,3,0,208,0,11,0,1,93,65,5,0,96,0,11,0,112,0,11,0,2,93,65,3,0,64,0,11,0,1,93,184,0,11,16,184,0,0,208,65,3,0,22,0,0,0,1,93,65,3,0,200,0,0,0,1,93,65,3,0,137,0,0,0,1,93,65,3,0,122,0,0,0,1,93,65,3,0,41,0,0,0,1,93,65,3,0,103,0,0,0,1,93,65,3,0,245,0,0,0,1,93,65,3,0,5,0,0,0,1,93,185,0,1,0,4,244,65,3,0,64,0,5,0,1,93,65,3,0,143,0,5,0,1,93,65,3,0,95,0,5,0,1,93,65,3,0,111,0,5,0,1,113,65,3,0,160,0,5,0,1,93,65,3,0,0,0,5,0,1,93,186,0,2,0,5,0,11,17,18,57,184,0,5,16,184,0,4,208,65,3,0,25,0,4,0,1,93,65,3,0,10,0,4,0,1,93,65,3,0,250,0,4,0,1,93,65,3,0,104,0,4,0,1,93,65,3,0,118,0,4,0,1,93,185,0,3,0,4,244,65,3,0,184,0,3,0,1,93,184,0,4,16,184,0,6,208,65,3,0,39,0,6,0,1,93,185,0,7,0,4,244,186,0,8,0,5,0,11,17,18,57,184,0,0,16,184,0,10,208,185,0,9,0,4,244,65,3,0,47,0,13,0,1,93,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,12,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,184,0,1,208,186,0,2,0,3,0,7,17,18,57,65,3,0,214,0,2,0,1,93,65,3,0,165,0,2,0,1,93,186,0,8,0,7,0,3,17,18,57,65,3,0,170,0,8,0,1,93,65,3,0,217,0,8,0,1,93,186,0,5,0,8,0,2,17,18,57,184,0,7,16,184,0,9,208,186,0,11,0,2,0,8,17,18,57,48,49,65,3,0,149,0,2,0,1,93,65,3,0,6,0,2,0,1,93,65,3,0,9,0,8,0,1,93,65,3,0,153,0,8,0,1,93,33,35,39,7,35,55,39,51,23,55,51,7,1,207,101,124,126,101,171,167,101,123,113,105,161,193,193,244,246,194,194,238,0,0,0,1,0,7,255,14,1,242,1,234,0,7,0,254,186,0,0,0,4,0,3,43,65,3,0,80,0,0,0,1,93,65,3,0,127,0,4,0,1,93,65,3,0,140,0,4,0,1,93,186,0,1,0,4,0,0,17,18,57,65,3,0,57,0,1,0,1,93,65,3,0,11,0,1,0,1,93,65,3,0,89,0,1,0,1,93,65,3,0,71,0,1,0,1,93,65,3,0,133,0,1,0,1,93,184,0,1,16,185,0,2,0,4,244,184,0,0,16,185,0,7,0,4,244,186,0,3,0,2,0,7,17,18,57,65,3,0,89,0,3,0,1,93,65,3,0,137,0,3,0,1,93,184,0,4,16,185,0,5,0,4,244,186,0,6,0,7,0,2,17,18,57,65,3,0,119,0,6,0,1,93,65,3,0,134,0,6,0,1,93,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,12,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,8,62,89,186,0,3,0,5,0,1,17,18,57,186,0,6,0,1,0,5,17,18,57,65,5,0,115,0,6,0,131,0,6,0,2,93,184,0,5,16,184,0,7,208,48,49,9,1,35,19,3,51,27,1,1,242,254,212,100,113,204,100,153,138,1,234,253,36,1,8,1,212,254,148,1,108,0,0,0,1,0,22,0,0,1,190,1,234,0,7,1,238,186,0,2,0,6,0,3,43,65,3,0,32,0,2,0,1,93,65,3,0,128,0,2,0,1,93,65,3,0,0,0,2,0,1,93,65,3,0,16,0,2,0,1,113,65,3,0,64,0,2,0,1,93,184,0,2,16,184,0,0,208,65,3,0,70,0,0,0,1,113,65,3,0,207,0,6,0,1,93,65,3,0,95,0,6,0,1,93,65,3,0,175,0,6,0,1,93,65,3,0,127,0,6,0,1,93,65,3,0,32,0,6,0,1,93,65,3,0,64,0,6,0,1,93,184,0,6,16,184,0,4,208,65,3,0,10,0,4,0,1,113,65,3,0,73,0,4,0,1,113,65,3,0,249,0,4,0,1,93,184,0,1,208,65,5,0,19,0,1,0,35,0,1,0,2,113,65,3,0,4,0,1,0,1,113,65,5,0,229,0,1,0,245,0,1,0,2,93,65,7,0,38,0,1,0,54,0,1,0,70,0,1,0,3,93,65,3,0,214,0,1,0,1,93,65,3,0,153,0,1,0,1,93,65,5,0,54,0,1,0,70,0,1,0,2,113,65,3,0,101,0,1,0,1,113,65,3,0,84,0,1,0,1,113,65,5,0,84,0,1,0,100,0,1,0,2,93,65,3,0,113,0,1,0,1,93,65,3,0,128,0,1,0,1,93,184,0,0,16,184,0,5,208,65,3,0,233,0,5,0,1,93,65,3,0,10,0,5,0,1,113,65,3,0,202,0,5,0,1,93,65,3,0,107,0,5,0,1,93,65,3,0,92,0,5,0,1,93,65,3,0,30,0,5,0,1,113,65,3,0,143,0,5,0,1,93,65,3,0,124,0,5,0,1,93,65,3,0,44,0,5,0,1,113,65,3,0,91,0,5,0,1,113,65,3,0,106,0,5,0,1,113,65,5,0,57,0,5,0,73,0,5,0,2,113,65,7,0,41,0,5,0,57,0,5,0,73,0,5,0,3,93,65,3,0,150,0,5,0,1,93,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,12,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,185,0,2,0,1,244,184,0,7,16,185,0,6,0,1,244,48,49,9,1,33,21,33,1,35,53,1,190,254,251,1,0,254,93,1,5,251,1,234,254,92,70,1,164,70,0,0,1,0,19,255,121,1,41,2,238,0,53,0,163,184,0,0,47,184,0,8,220,184,0,0,16,184,0,16,208,184,0,0,16,184,0,50,220,184,0,20,208,184,0,0,16,184,0,45,220,65,7,0,159,0,45,0,175,0,45,0,191,0,45,0,3,93,184,0,30,208,184,0,8,16,184,0,35,208,0,184,0,51,47,184,0,0,69,88,184,0,19,47,27,185,0,19,0,18,62,89,186,0,35,0,19,0,51,17,18,57,25,184,0,35,47,24,184,0,8,208,184,0,19,16,184,0,20,220,184,0,51,16,184,0,50,220,48,49,1,65,3,0,134,0,22,0,1,93,65,3,0,133,0,48,0,1,93,0,65,3,0,136,0,22,0,1,93,65,3,0,134,0,48,0,1,93,55,52,62,2,53,52,38,39,62,1,53,52,46,2,53,52,54,55,21,14,3,21,20,30,2,21,20,14,2,7,30,3,21,20,14,2,21,20,30,2,23,21,46,1,83,2,3,3,32,40,38,34,3,3,2,97,117,53,57,26,5,1,1,1,7,18,32,26,26,33,18,6,1,1,1,8,29,56,48,115,99,14,7,40,46,42,10,54,69,25,26,69,54,10,42,45,40,7,71,75,4,69,1,20,40,64,46,5,24,27,24,6,18,31,27,26,15,14,25,25,28,16,5,25,29,28,7,54,64,36,14,3,69,4,73,0,1,0,70,255,47,0,159,2,238,0,3,0,54,184,0,1,47,65,5,0,0,0,1,0,16,0,1,0,2,93,184,0,0,220,65,3,0,128,0,0,0,1,93,0,184,0,1,47,184,0,0,69,88,184,0,2,47,27,185,0,2,0,18,62,89,48,49,23,35,17,51,159,89,89,209,3,191,0,0,0,1,0,2,255,121,1,24,2,238,0,53,0,171,184,0,38,47,184,0,0,208,184,0,38,16,184,0,35,220,184,0,4,208,184,0,38,16,184,0,29,220,65,7,0,144,0,29,0,160,0,29,0,176,0,29,0,3,93,184,0,9,208,184,0,38,16,184,0,46,220,184,0,19,208,0,184,0,3,47,184,0,0,69,88,184,0,35,47,27,185,0,35,0,18,62,89,184,0,3,16,184,0,4,220,186,0,19,0,35,0,3,17,18,57,25,184,0,19,47,24,184,0,35,16,184,0,34,220,184,0,19,16,184,0,46,208,48,49,1,65,5,0,136,0,6,0,152,0,6,0,2,93,0,65,3,0,149,0,6,0,1,93,65,3,0,134,0,6,0,1,93,65,5,0,138,0,31,0,154,0,31,0,2,93,55,20,6,7,53,62,3,53,52,46,2,53,52,62,2,55,46,3,53,52,62,2,53,52,46,2,39,53,30,1,21,20,14,2,21,20,22,23,14,1,21,20,30,2,216,99,115,54,58,25,4,1,1,1,7,18,32,26,26,32,18,7,1,1,1,8,29,56,48,117,97,3,3,2,34,38,40,32,2,3,3,14,72,73,4,69,1,20,42,64,44,7,27,29,25,6,17,28,24,25,14,15,26,27,31,18,6,24,27,24,5,54,64,36,14,3,69,4,75,71,7,40,45,42,10,54,69,26,25,69,54,10,42,46,40,0,1,0,54,0,179,1,144,1,26,0,23,0,156,184,0,8,47,184,0,7,220,184,0,8,16,184,0,21,220,184,0,20,220,0,184,0,0,47,184,0,13,220,65,9,0,47,0,13,0,63,0,13,0,79,0,13,0,95,0,13,0,4,93,184,0,5,220,65,3,0,128,0,5,0,1,114,184,0,0,16,184,0,7,208,184,0,7,47,184,0,0,16,184,0,18,220,65,3,0,112,0,18,0,1,114,65,3,0,64,0,18,0,1,113,184,0,13,16,184,0,20,208,184,0,20,47,48,49,1,65,5,0,41,0,10,0,57,0,10,0,2,93,65,5,0,38,0,22,0,54,0,22,0,2,93,0,65,5,0,38,0,10,0,54,0,10,0,2,93,37,34,46,2,35,34,7,39,62,3,51,50,30,2,51,50,55,23,14,1,1,37,12,34,44,32,10,53,18,36,6,22,28,32,15,13,36,46,32,13,42,27,34,11,58,179,16,19,16,49,9,22,34,23,11,15,19,15,51,9,43,51,0,2,0,50,255,6,0,174,1,244,0,3,0,7,0,168,187,0,5,0,4,0,4,0,4,43,65,5,0,0,0,4,0,16,0,4,0,2,93,184,0,4,16,184,0,0,208,65,13,0,9,0,0,0,25,0,0,0,41,0,0,0,57,0,0,0,73,0,0,0,89,0,0,0,6,113,65,5,0,0,0,5,0,16,0,5,0,2,93,184,0,5,16,184,0,3,208,65,13,0,6,0,3,0,22,0,3,0,38,0,3,0,54,0,3,0,70,0,3,0,86,0,3,0,6,113,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,12,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,8,62,89,184,0,4,16,184,0,7,220,65,3,0,48,0,7,0,1,113,184,0,1,220,48,49,23,19,51,19,3,51,21,35,50,30,64,30,104,84,84,250,2,38,253,218,2,238,86,0,0,1,0,34,255,225,1,170,2,236,0,36,1,110,186,0,18,0,7,0,3,43,65,5,0,63,0,7,0,79,0,7,0,2,93,65,3,0,143,0,7,0,1,93,65,3,0,32,0,18,0,1,113,65,3,0,208,0,18,0,1,93,65,3,0,0,0,18,0,1,93,186,0,1,0,7,0,18,17,18,57,184,0,1,47,65,3,0,0,0,1,0,1,93,185,0,0,0,4,244,184,0,1,16,184,0,13,208,184,0,0,16,184,0,14,208,184,0,7,16,185,0,27,0,4,244,184,0,18,16,184,0,33,208,0,184,0,0,47,184,0,0,69,88,184,0,13,47,27,185,0,13,0,18,62,89,65,3,0,16,0,13,0,1,93,65,5,0,96,0,13,0,112,0,13,0,2,93,65,5,0,48,0,13,0,64,0,13,0,2,93,186,0,36,0,13,0,0,17,18,57,184,0,36,47,65,3,0,79,0,36,0,1,113,65,7,0,159,0,36,0,175,0,36,0,191,0,36,0,3,93,65,3,0,96,0,36,0,1,93,184,0,2,208,184,0,36,16,184,0,15,220,65,3,0,160,0,15,0,1,93,184,0,12,208,184,0,15,16,184,0,19,220,185,0,18,0,2,244,184,0,15,16,185,0,22,0,2,244,184,0,36,16,185,0,30,0,2,244,184,0,36,16,184,0,32,220,185,0,33,0,2,244,48,49,1,65,3,0,9,0,5,0,1,93,65,3,0,9,0,10,0,1,93,65,3,0,69,0,24,0,1,93,65,3,0,69,0,29,0,1,93,0,65,3,0,8,0,5,0,1,93,65,3,0,6,0,10,0,1,93,65,3,0,72,0,29,0,1,93,5,35,55,46,3,53,52,62,2,55,39,51,7,30,1,23,7,46,1,35,34,14,2,21,20,22,51,50,55,23,14,1,7,1,63,90,17,46,78,56,32,28,54,79,51,17,90,16,43,57,23,8,30,62,32,41,61,41,21,88,78,61,61,8,17,48,57,31,120,6,42,66,89,54,49,89,69,46,7,142,140,3,15,14,78,16,17,29,50,67,38,82,100,32,78,11,18,3,0,0,0,1,0,34,0,0,1,224,2,202,0,37,1,125,186,0,37,0,29,0,3,43,65,3,0,16,0,37,0,1,93,184,0,37,16,184,0,0,208,65,3,0,139,0,0,0,1,93,65,3,0,143,0,29,0,1,93,65,3,0,16,0,29,0,1,93,184,0,29,16,185,0,8,0,4,244,186,0,10,0,37,0,29,17,18,57,184,0,10,47,184,0,8,16,184,0,12,208,184,0,17,208,65,5,0,101,0,17,0,117,0,17,0,2,93,65,7,0,53,0,17,0,69,0,17,0,85,0,17,0,3,113,65,3,0,53,0,17,0,1,93,65,3,0,132,0,17,0,1,93,184,0,37,16,184,0,18,208,184,0,18,47,184,0,29,16,184,0,25,208,184,0,20,208,184,0,29,16,184,0,26,208,184,0,26,47,0,184,0,0,69,88,184,0,34,47,27,185,0,34,0,14,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,6,62,89,184,0,34,16,184,0,0,220,184,0,34,16,185,0,3,0,2,244,186,0,9,0,34,0,19,17,18,57,184,0,9,47,65,3,0,15,0,9,0,1,93,185,0,12,0,2,244,184,0,19,16,185,0,18,0,2,244,184,0,12,16,184,0,25,208,184,0,9,16,184,0,28,208,48,49,1,65,3,0,8,0,31,0,1,93,65,3,0,26,0,31,0,1,93,65,3,0,9,0,32,0,1,93,65,5,0,37,0,36,0,53,0,36,0,2,93,65,3,0,70,0,36,0,1,93,0,65,5,0,7,0,31,0,23,0,31,0,2,93,65,5,0,6,0,32,0,22,0,32,0,2,93,65,5,0,54,0,36,0,70,0,36,0,2,93,65,3,0,39,0,36,0,1,93,1,46,1,35,34,14,2,29,1,51,7,35,14,3,7,33,21,33,62,3,55,35,55,51,53,52,62,2,51,50,22,23,1,160,14,45,27,31,35,18,4,192,15,183,3,5,10,17,13,1,5,254,97,25,36,24,16,5,95,14,87,13,38,69,55,69,76,14,2,57,29,27,16,34,51,36,93,86,38,54,49,49,33,86,35,68,73,83,50,86,115,40,73,57,34,49,37,0,2,0,61,0,29,2,53,2,155,0,27,0,46,1,77,184,0,11,47,65,7,0,0,0,11,0,16,0,11,0,32,0,11,0,3,93,184,0,25,220,184,0,11,16,185,0,35,0,4,244,184,0,25,16,185,0,45,0,4,244,0,184,0,4,47,184,0,18,220,185,0,30,0,3,244,184,0,4,16,185,0,40,0,3,244,48,49,1,65,5,0,10,0,1,0,26,0,1,0,2,113,65,5,0,73,0,6,0,89,0,6,0,2,93,65,5,0,73,0,16,0,89,0,16,0,2,93,65,5,0,10,0,21,0,26,0,21,0,2,113,65,5,0,40,0,28,0,56,0,28,0,2,93,65,3,0,137,0,28,0,1,93,65,3,0,134,0,32,0,1,93,65,5,0,39,0,32,0,55,0,32,0,2,93,65,5,0,38,0,38,0,54,0,38,0,2,93,65,3,0,135,0,38,0,1,93,65,3,0,136,0,42,0,1,93,65,5,0,41,0,42,0,57,0,42,0,2,93,65,3,0,136,0,43,0,1,93,0,65,5,0,71,0,6,0,87,0,6,0,2,93,65,3,0,229,0,15,0,1,93,65,5,0,72,0,16,0,88,0,16,0,2,93,65,3,0,229,0,21,0,1,93,65,5,0,40,0,32,0,56,0,32,0,2,93,65,3,0,137,0,32,0,1,93,65,5,0,39,0,38,0,55,0,38,0,2,93,65,3,0,135,0,38,0,1,93,65,5,0,38,0,42,0,54,0,42,0,2,93,65,3,0,134,0,42,0,1,93,37,7,39,6,35,34,39,7,39,55,38,53,52,55,39,55,23,54,51,50,23,55,23,7,22,21,20,7,3,38,35,34,14,2,21,20,30,2,51,50,62,2,53,52,2,52,29,79,70,73,74,69,79,28,77,79,80,78,28,78,76,68,71,72,80,28,78,79,80,53,42,77,39,60,41,22,22,41,60,39,39,60,41,22,53,24,103,38,38,103,24,102,82,111,110,83,102,24,103,38,39,104,24,103,82,110,108,86,1,76,54,29,51,70,42,42,71,51,28,29,52,70,41,85,0,0,0,0,1,0,30,0,0,2,134,2,188,0,22,1,100,187,0,9,0,4,0,10,0,4,43,65,3,0,0,0,9,0,1,93,184,0,9,16,184,0,5,208,184,0,1,208,184,0,0,208,65,3,0,40,0,0,0,1,93,65,3,0,23,0,0,0,1,93,65,3,0,86,0,0,0,1,93,184,0,5,16,184,0,6,208,184,0,6,47,184,0,2,208,184,0,2,47,65,3,0,0,0,10,0,1,93,184,0,10,16,184,0,14,208,184,0,12,208,184,0,12,47,184,0,16,208,184,0,16,47,184,0,14,16,184,0,18,208,184,0,19,208,65,3,0,89,0,19,0,1,93,65,3,0,24,0,19,0,1,93,65,3,0,39,0,19,0,1,93,185,0,20,0,4,244,186,0,21,0,18,0,1,17,18,57,184,0,0,16,185,0,22,0,4,244,0,184,0,0,69,88,184,0,20,47,27,185,0,20,0,14,62,89,184,0,0,69,88,184,0,10,47,27,185,0,10,0,6,62,89,186,0,17,0,20,0,10,17,18,57,184,0,17,47,184,0,1,208,184,0,17,16,184,0,16,220,184,0,4,208,184,0,17,16,184,0,13,220,65,5,0,32,0,13,0,48,0,13,0,2,93,184,0,5,208,184,0,13,16,184,0,12,220,184,0,8,208,186,0,21,0,20,0,10,17,18,57,65,3,0,102,0,21,0,1,93,65,3,0,41,0,21,0,1,93,65,3,0,54,0,21,0,1,93,65,3,0,131,0,21,0,1,93,184,0,20,16,184,0,22,208,48,49,65,3,0,134,0,21,0,1,93,65,3,0,9,0,21,0,1,93,9,1,51,7,35,21,51,7,35,21,35,53,35,55,51,53,35,55,51,1,51,27,1,2,134,254,253,177,21,157,178,21,157,96,178,21,157,178,21,156,254,253,93,215,215,2,188,254,128,54,62,54,146,146,54,62,54,1,128,254,205,1,51,0,0,0,0,2,0,72,255,46,0,160,2,238,0,3,0,7,0,78,184,0,6,47,65,5,0,0,0,6,0,16,0,6,0,2,93,184,0,7,220,65,3,0,128,0,7,0,1,93,184,0,0,208,184,0,6,16,184,0,1,208,0,184,0,5,47,184,0,0,69,88,184,0,2,47,27,185,0,2,0,18,62,89,184,0,1,220,184,0,5,16,184,0,6,220,48,49,19,35,17,51,17,35,17,51,160,88,88,88,88,1,52,1,186,252,64,1,117,0,0,2,0,37,255,172,1,163,2,238,0,52,0,64,3,51,186,0,51,0,26,0,3,43,65,3,0,0,0,51,0,1,93,65,3,0,143,0,26,0,1,93,65,3,0,0,0,26,0,1,93,186,0,5,0,51,0,26,17,18,57,184,0,5,47,184,0,26,16,185,0,58,0,5,244,186,0,0,0,5,0,58,17,18,57,186,0,13,0,26,0,51,17,18,57,184,0,13,47,184,0,5,16,185,0,19,0,5,244,186,0,31,0,26,0,51,17,18,57,184,0,31,47,184,0,51,16,185,0,63,0,5,244,186,0,28,0,31,0,63,17,18,57,65,3,0,25,0,28,0,1,93,65,7,0,53,0,28,0,69,0,28,0,85,0,28,0,3,93,65,3,0,116,0,28,0,1,93,186,0,38,0,51,0,26,17,18,57,184,0,38,47,184,0,31,16,185,0,44,0,5,244,186,0,53,0,63,0,31,17,18,57,186,0,60,0,58,0,5,17,18,57,0,184,0,10,47,184,0,0,69,88,184,0,36,47,27,185,0,36,0,18,62,89,186,0,60,0,10,0,36,17,18,57,184,0,60,47,184,0,22,208,65,5,0,121,0,22,0,137,0,22,0,2,93,65,3,0,72,0,22,0,1,93,186,0,0,0,60,0,22,17,18,57,184,0,10,16,184,0,14,220,184,0,10,16,185,0,16,0,3,244,186,0,53,0,36,0,10,17,18,57,184,0,53,47,184,0,47,208,65,5,0,118,0,47,0,134,0,47,0,2,93,65,3,0,22,0,47,0,1,93,65,3,0,69,0,47,0,1,93,186,0,28,0,47,0,53,17,18,57,184,0,36,16,184,0,39,220,184,0,36,16,185,0,41,0,3,244,48,49,1,65,3,0,21,0,7,0,1,93,65,3,0,38,0,7,0,1,93,65,3,0,104,0,13,0,1,93,65,3,0,72,0,23,0,1,93,65,3,0,25,0,24,0,1,93,65,3,0,73,0,24,0,1,93,65,7,0,105,0,24,0,121,0,24,0,137,0,24,0,3,93,65,3,0,73,0,25,0,1,93,65,3,0,26,0,25,0,1,93,65,3,0,139,0,27,0,1,93,65,3,0,40,0,34,0,1,93,65,3,0,25,0,34,0,1,93,65,3,0,133,0,46,0,1,93,65,5,0,103,0,48,0,119,0,48,0,2,93,65,3,0,21,0,49,0,1,93,65,5,0,118,0,49,0,134,0,49,0,2,93,65,3,0,71,0,49,0,1,93,65,3,0,103,0,49,0,1,93,65,3,0,85,0,59,0,1,93,0,65,5,0,24,0,7,0,40,0,7,0,2,93,65,5,0,121,0,12,0,137,0,12,0,2,93,65,3,0,122,0,13,0,1,93,65,3,0,107,0,13,0,1,93,65,3,0,73,0,23,0,1,93,65,3,0,25,0,24,0,1,93,65,3,0,73,0,24,0,1,93,65,5,0,105,0,24,0,121,0,24,0,2,93,65,3,0,138,0,24,0,1,93,65,3,0,133,0,27,0,1,93,65,3,0,20,0,34,0,1,93,65,3,0,37,0,34,0,1,93,65,3,0,101,0,38,0,1,93,65,3,0,133,0,38,0,1,93,65,3,0,118,0,38,0,1,93,65,3,0,135,0,46,0,1,93,65,3,0,117,0,48,0,1,93,65,3,0,102,0,48,0,1,93,65,3,0,116,0,49,0,1,93,65,3,0,21,0,49,0,1,93,65,3,0,70,0,49,0,1,93,65,3,0,102,0,49,0,1,93,65,3,0,134,0,49,0,1,93,65,3,0,83,0,59,0,1,93,65,3,0,37,0,59,0,1,93,65,3,0,41,0,64,0,1,93,65,3,0,91,0,64,0,1,93,37,30,3,21,20,14,2,35,34,38,39,55,22,51,50,54,53,52,46,4,53,52,55,46,1,53,52,62,2,51,50,23,7,38,35,34,6,21,20,30,4,21,20,39,14,3,21,20,23,62,1,53,52,1,59,21,23,12,3,20,41,64,43,43,80,20,13,68,63,48,55,40,61,71,61,40,109,39,25,19,41,62,43,86,61,13,68,62,45,52,39,59,69,59,39,215,14,35,30,20,162,36,42,188,16,26,27,30,20,30,56,42,25,22,17,63,41,41,42,35,39,24,21,37,61,53,116,33,28,51,29,35,60,43,25,40,63,43,50,36,31,37,26,25,40,63,51,99,206,1,11,23,36,25,81,42,10,58,37,81,0,0,2,0,87,2,88,1,79,2,188,0,3,0,7,0,70,184,0,5,47,65,3,0,0,0,5,0,1,93,184,0,1,220,184,0,0,220,184,0,5,16,184,0,4,220,0,184,0,5,47,65,3,0,32,0,5,0,1,93,65,3,0,64,0,5,0,1,93,184,0,1,208,184,0,5,16,184,0,6,220,184,0,2,208,48,49,1,35,53,51,7,35,53,51,1,79,70,70,178,70,70,2,88,100,100,100,0,0,0,3,0,49,0,37,2,158,2,181,0,19,0,39,0,65,3,127,184,0,0,47,184,0,10,220,65,3,0,239,0,10,0,1,93,65,3,0,111,0,10,0,1,93,65,3,0,80,0,10,0,1,93,184,0,0,16,184,0,25,220,184,0,10,16,184,0,35,220,186,0,45,0,0,0,10,17,18,57,184,0,45,47,184,0,52,220,184,0,45,16,184,0,58,220,184,0,52,16,184,0,64,208,0,184,0,5,47,184,0,15,220,184,0,5,16,184,0,20,220,184,0,15,16,184,0,30,220,186,0,40,0,5,0,15,17,18,57,184,0,40,47,65,3,0,15,0,40,0,1,93,65,3,0,111,0,40,0,1,93,184,0,50,220,65,3,0,32,0,50,0,1,93,65,3,0,0,0,50,0,1,93,184,0,53,220,184,0,50,16,184,0,55,220,65,3,0,15,0,55,0,1,113,184,0,40,16,184,0,61,220,184,0,40,16,184,0,63,220,48,49,1,65,5,0,9,0,2,0,25,0,2,0,2,93,65,3,0,41,0,2,0,1,113,65,5,0,106,0,2,0,122,0,2,0,2,93,65,5,0,8,0,3,0,24,0,3,0,2,93,65,3,0,183,0,6,0,1,93,65,3,0,37,0,7,0,1,113,65,5,0,7,0,7,0,23,0,7,0,2,93,65,5,0,101,0,8,0,117,0,8,0,2,93,65,5,0,6,0,8,0,22,0,8,0,2,93,65,5,0,7,0,12,0,23,0,12,0,2,93,65,5,0,6,0,13,0,22,0,13,0,2,93,65,5,0,103,0,13,0,119,0,13,0,2,93,65,3,0,39,0,13,0,1,113,65,5,0,9,0,17,0,25,0,17,0,2,93,65,5,0,106,0,17,0,122,0,17,0,2,93,65,3,0,42,0,17,0,1,113,65,5,0,10,0,18,0,26,0,18,0,2,93,65,9,0,169,0,42,0,185,0,42,0,201,0,42,0,217,0,42,0,4,93,65,9,0,169,0,43,0,185,0,43,0,201,0,43,0,217,0,43,0,4,93,65,3,0,42,0,43,0,1,93,65,9,0,169,0,47,0,185,0,47,0,201,0,47,0,217,0,47,0,4,93,65,3,0,42,0,47,0,1,93,65,9,0,169,0,48,0,185,0,48,0,201,0,48,0,217,0,48,0,4,93,65,9,0,167,0,52,0,183,0,52,0,199,0,52,0,215,0,52,0,4,93,0,65,5,0,6,0,2,0,22,0,2,0,2,93,65,5,0,102,0,2,0,118,0,2,0,2,93,65,3,0,38,0,2,0,1,113,65,5,0,6,0,3,0,22,0,3,0,2,93,65,3,0,182,0,6,0,1,93,65,5,0,7,0,7,0,23,0,7,0,2,93,65,3,0,39,0,7,0,1,113,65,5,0,6,0,8,0,22,0,8,0,2,93,65,5,0,103,0,8,0,119,0,8,0,2,93,65,5,0,8,0,12,0,24,0,12,0,2,93,65,3,0,41,0,13,0,1,113,65,5,0,10,0,13,0,26,0,13,0,2,93,65,5,0,106,0,13,0,122,0,13,0,2,93,65,5,0,9,0,17,0,25,0,17,0,2,93,65,5,0,105,0,17,0,121,0,17,0,2,93,65,3,0,42,0,17,0,1,113,65,5,0,8,0,18,0,24,0,18,0,2,93,65,9,0,168,0,42,0,184,0,42,0,200,0,42,0,216,0,42,0,4,93,65,3,0,40,0,43,0,1,93,65,9,0,169,0,43,0,185,0,43,0,201,0,43,0,217,0,43,0,4,93,65,3,0,38,0,47,0,1,93,65,9,0,167,0,47,0,183,0,47,0,199,0,47,0,215,0,47,0,4,93,65,9,0,165,0,48,0,181,0,48,0,197,0,48,0,213,0,48,0,4,93,65,9,0,165,0,51,0,181,0,51,0,197,0,51,0,213,0,51,0,4,93,65,9,0,165,0,52,0,181,0,52,0,197,0,52,0,213,0,52,0,4,93,65,9,0,172,0,64,0,188,0,64,0,204,0,64,0,220,0,64,0,4,93,19,52,62,2,51,50,30,2,21,20,14,2,35,34,46,2,1,34,14,2,21,20,30,2,51,50,62,2,53,52,46,2,3,34,46,2,53,52,62,2,51,50,23,7,38,35,34,6,21,20,22,51,50,55,23,6,49,46,83,114,68,68,114,82,46,46,82,114,68,68,115,82,46,1,55,63,96,66,34,33,66,97,63,63,96,66,33,34,65,96,54,35,58,42,23,23,42,58,35,48,42,7,45,38,45,46,46,45,37,46,7,38,1,109,74,121,86,47,47,87,121,73,73,120,87,48,48,86,121,1,100,41,75,104,63,63,104,75,41,42,75,104,62,62,104,75,42,254,61,24,43,61,38,38,62,43,24,19,60,19,59,48,48,59,20,59,20,0,2,0,33,1,178,1,57,2,213,0,27,0,35,1,120,184,0,9,47,65,3,0,96,0,9,0,1,93,184,0,24,220,65,3,0,159,0,24,0,1,93,184,0,0,208,184,0,0,47,184,0,24,16,185,0,29,0,5,244,184,0,4,208,184,0,29,16,184,0,14,208,186,0,19,0,24,0,9,17,18,57,184,0,19,47,184,0,9,16,185,0,32,0,5,244,0,184,0,21,47,184,0,6,220,65,3,0,96,0,6,0,1,93,65,3,0,48,0,6,0,1,93,65,3,0,208,0,6,0,1,93,184,0,2,208,186,0,14,0,21,0,6,17,18,57,184,0,14,47,184,0,21,16,185,0,16,0,3,244,184,0,21,16,184,0,18,220,184,0,6,16,185,0,34,0,3,244,184,0,27,208,184,0,14,16,184,0,29,220,48,49,1,65,3,0,151,0,7,0,1,93,65,3,0,183,0,7,0,1,93,65,3,0,217,0,7,0,1,93,65,13,0,59,0,8,0,75,0,8,0,91,0,8,0,107,0,8,0,123,0,8,0,139,0,8,0,6,93,65,3,0,40,0,11,0,1,93,65,3,0,34,0,22,0,1,93,65,13,0,53,0,22,0,69,0,22,0,85,0,22,0,101,0,22,0,117,0,22,0,133,0,22,0,6,93,65,3,0,151,0,22,0,1,93,0,65,7,0,170,0,7,0,186,0,7,0,202,0,7,0,3,93,65,3,0,155,0,7,0,1,93,65,3,0,220,0,7,0,1,93,65,3,0,38,0,11,0,1,93,65,3,0,36,0,22,0,1,93,65,15,0,53,0,22,0,69,0,22,0,85,0,22,0,101,0,22,0,117,0,22,0,133,0,22,0,149,0,22,0,7,93,1,7,35,34,39,6,35,34,38,53,52,62,2,55,38,35,34,7,39,54,51,50,29,1,20,22,51,39,53,14,1,21,20,51,50,1,57,7,27,48,19,31,61,37,50,35,52,58,23,2,51,32,51,6,54,55,109,9,17,101,35,55,40,27,1,239,61,31,31,46,39,29,38,23,10,1,42,20,60,23,108,80,30,12,12,63,1,25,22,32,0,0,0,2,0,15,0,78,2,11,1,234,0,5,0,11,0,156,184,0,8,47,65,3,0,31,0,8,0,1,93,65,3,0,143,0,8,0,1,93,184,0,2,220,184,0,4,220,184,0,0,208,185,0,1,0,4,244,184,0,3,208,184,0,2,16,185,0,5,0,4,244,184,0,8,16,184,0,10,220,184,0,6,208,184,0,10,16,185,0,9,0,4,244,184,0,7,208,184,0,8,16,185,0,11,0,4,244,65,3,0,47,0,13,0,1,93,0,25,184,0,8,47,24,184,0,7,208,184,0,7,47,184,0,1,208,184,0,8,16,184,0,11,208,184,0,2,208,184,0,8,16,184,0,9,208,184,0,9,47,184,0,3,208,184,0,2,16,184,0,5,208,48,49,37,35,39,55,51,15,1,35,39,55,51,7,2,11,101,147,147,101,148,113,100,147,147,100,147,78,206,206,206,206,206,206,206,0,0,0,0,1,0,66,0,151,2,14,1,150,0,5,0,66,184,0,0,47,65,3,0,0,0,0,0,1,93,65,3,0,208,0,0,0,1,93,184,0,1,220,65,7,0,0,0,1,0,16,0,1,0,32,0,1,0,3,113,184,0,0,16,184,0,3,220,0,184,0,3,47,184,0,4,220,184,0,1,220,48,49,37,35,53,33,53,33,2,14,55,254,107,1,204,151,195,60,0,1,0,57,0,230,1,111,1,68,0,3,0,72,184,0,1,47,65,5,0,0,0,1,0,16,0,1,0,2,93,65,3,0,48,0,1,0,1,113,184,0,0,220,65,3,0,96,0,0,0,1,93,0,184,0,1,47,184,0,2,220,65,3,0,32,0,2,0,1,113,65,5,0,112,0,2,0,128,0,2,0,2,93,48,49,37,33,53,33,1,111,254,202,1,54,230,94,0,0,0,4,0,49,0,37,2,158,2,181,0,19,0,39,0,52,0,60,2,254,184,0,0,47,184,0,10,220,65,3,0,239,0,10,0,1,93,65,3,0,111,0,10,0,1,93,65,3,0,80,0,10,0,1,93,184,0,0,16,184,0,25,220,65,3,0,79,0,25,0,1,113,184,0,10,16,184,0,35,220,65,3,0,64,0,35,0,1,113,186,0,45,0,0,0,10,17,18,57,184,0,45,47,65,3,0,64,0,45,0,1,93,184,0,50,220,184,0,45,16,184,0,44,220,65,5,0,239,0,44,0,255,0,44,0,2,93,186,0,52,0,50,0,44,17,18,57,65,5,0,69,0,52,0,85,0,52,0,2,93,65,3,0,100,0,52,0,1,93,184,0,52,16,184,0,40,208,65,5,0,233,0,40,0,249,0,40,0,2,93,184,0,52,16,184,0,42,208,184,0,41,208,184,0,44,16,184,0,55,208,184,0,50,16,184,0,58,220,0,184,0,5,47,184,0,15,220,184,0,5,16,184,0,20,220,184,0,15,16,184,0,30,220,186,0,45,0,5,0,15,17,18,57,184,0,45,47,184,0,41,208,184,0,45,16,184,0,46,220,65,3,0,32,0,46,0,1,93,65,3,0,0,0,46,0,1,93,186,0,43,0,46,0,45,17,18,57,184,0,43,47,186,0,52,0,46,0,43,17,18,57,65,3,0,88,0,52,0,1,93,184,0,46,16,184,0,54,220,184,0,43,16,184,0,55,220,48,49,1,65,5,0,9,0,2,0,25,0,2,0,2,93,65,5,0,106,0,2,0,122,0,2,0,2,93,65,5,0,9,0,3,0,25,0,3,0,2,93,65,3,0,41,0,3,0,1,113,65,5,0,6,0,7,0,22,0,7,0,2,93,65,3,0,38,0,7,0,1,113,65,5,0,6,0,8,0,22,0,8,0,2,93,65,5,0,102,0,8,0,118,0,8,0,2,93,65,3,0,35,0,12,0,1,113,65,5,0,6,0,12,0,22,0,12,0,2,93,65,5,0,102,0,12,0,118,0,12,0,2,93,65,5,0,7,0,13,0,23,0,13,0,2,93,65,5,0,103,0,13,0,119,0,13,0,2,93,65,5,0,8,0,17,0,24,0,17,0,2,93,65,5,0,9,0,18,0,25,0,18,0,2,93,65,3,0,41,0,18,0,1,113,65,5,0,25,0,40,0,41,0,40,0,2,113,65,3,0,90,0,40,0,1,113,0,65,5,0,102,0,2,0,118,0,2,0,2,93,65,5,0,7,0,2,0,23,0,2,0,2,93,65,3,0,39,0,2,0,1,113,65,5,0,6,0,3,0,22,0,3,0,2,93,65,3,0,38,0,3,0,1,113,65,3,0,37,0,7,0,1,113,65,3,0,182,0,7,0,1,93,65,5,0,7,0,7,0,23,0,7,0,2,93,65,5,0,102,0,8,0,118,0,8,0,2,93,65,5,0,7,0,8,0,23,0,8,0,2,93,65,5,0,8,0,12,0,24,0,12,0,2,93,65,5,0,104,0,12,0,120,0,12,0,2,93,65,3,0,40,0,12,0,1,113,65,5,0,9,0,13,0,25,0,13,0,2,93,65,5,0,105,0,13,0,121,0,13,0,2,93,65,5,0,8,0,17,0,24,0,17,0,2,93,65,5,0,106,0,17,0,122,0,17,0,2,93,65,5,0,8,0,18,0,24,0,18,0,2,93,65,3,0,24,0,40,0,1,113,65,3,0,41,0,40,0,1,113,19,52,62,2,51,50,30,2,21,20,14,2,35,34,46,2,1,34,14,2,21,20,30,2,51,50,62,2,53,52,46,2,19,35,39,35,21,35,17,51,50,22,21,20,7,39,35,21,51,50,53,52,38,49,46,83,114,68,68,114,82,46,46,82,114,68,68,115,82,46,1,55,63,97,66,34,33,66,97,64,63,97,65,34,34,66,96,66,63,65,55,62,118,54,56,54,70,42,40,61,26,1,109,74,121,86,47,47,87,121,73,73,120,87,48,48,86,121,1,101,42,75,105,62,62,105,76,41,41,76,105,62,62,105,75,42,254,73,117,117,1,65,45,55,51,36,138,99,50,24,25,0,0,0,0,2,0,34,1,226,1,43,2,243,0,16,0,34,1,110,184,0,5,47,65,3,0,246,0,2,0,1,93,184,0,15,220,65,3,0,79,0,15,0,1,93,65,3,0,15,0,15,0,1,93,184,0,5,16,184,0,22,220,65,3,0,143,0,22,0,1,113,65,5,0,239,0,22,0,255,0,22,0,2,114,184,0,15,16,184,0,30,220,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,18,62,89,184,0,2,220,65,3,0,255,0,2,0,1,93,65,3,0,0,0,2,0,1,93,184,0,10,16,184,0,17,220,184,0,2,16,184,0,25,220,48,49,1,65,7,0,21,0,0,0,37,0,0,0,53,0,0,0,3,93,65,3,0,6,0,0,0,1,93,65,7,0,26,0,4,0,42,0,4,0,58,0,4,0,3,93,65,3,0,11,0,4,0,1,93,65,7,0,25,0,7,0,41,0,7,0,57,0,7,0,3,93,65,3,0,10,0,7,0,1,93,65,7,0,24,0,8,0,40,0,8,0,56,0,8,0,3,93,65,7,0,22,0,12,0,38,0,12,0,54,0,12,0,3,93,65,3,0,7,0,12,0,1,93,65,3,0,6,0,13,0,1,93,0,65,9,0,9,0,0,0,25,0,0,0,41,0,0,0,57,0,0,0,4,93,65,9,0,9,0,3,0,25,0,3,0,41,0,3,0,57,0,3,0,4,93,65,3,0,6,0,7,0,1,93,65,7,0,23,0,8,0,39,0,8,0,55,0,8,0,3,93,65,7,0,22,0,12,0,38,0,12,0,54,0,12,0,3,93,65,3,0,7,0,12,0,1,93,65,3,0,7,0,13,0,1,93,1,6,35,34,38,53,52,62,2,51,50,30,2,21,20,39,34,14,2,21,20,22,51,50,62,2,53,52,46,2,1,7,36,61,63,69,18,35,49,30,30,50,34,19,133,21,32,23,12,49,44,21,30,21,10,11,22,32,2,8,38,77,59,30,50,36,21,21,37,50,29,59,170,18,30,41,22,48,62,19,31,36,24,22,40,31,18,0,0,0,0,2,0,64,0,42,1,178,2,20,0,11,0,15,0,121,184,0,4,47,65,3,0,0,0,4,0,1,93,184,0,1,220,65,3,0,239,0,1,0,1,93,184,0,0,220,184,0,4,16,184,0,5,220,184,0,4,16,184,0,7,208,184,0,1,16,184,0,10,208,184,0,5,16,184,0,14,208,184,0,0,16,184,0,15,208,0,184,0,13,47,184,0,5,220,184,0,1,208,184,0,5,16,184,0,3,220,184,0,5,16,184,0,6,220,184,0,8,220,184,0,6,16,184,0,10,208,184,0,13,16,184,0,14,220,48,49,1,35,21,35,53,35,53,51,53,51,21,51,17,33,53,33,1,178,153,64,153,153,64,153,254,142,1,114,1,71,144,144,67,138,138,254,160,67,0,0,1,0,25,1,64,1,17,2,194,0,23,1,117,186,0,20,0,12,0,3,43,65,3,0,80,0,12,0,1,93,184,0,12,16,184,0,1,208,65,3,0,80,0,20,0,1,93,65,3,0,32,0,20,0,1,93,184,0,20,16,185,0,6,0,5,244,184,0,1,16,184,0,22,208,65,3,0,102,0,22,0,1,93,65,3,0,38,0,22,0,1,93,65,7,0,21,0,22,0,37,0,22,0,53,0,22,0,3,113,184,0,20,16,184,0,23,208,184,0,23,47,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,10,62,89,185,0,23,0,1,244,184,0,2,208,184,0,15,16,185,0,9,0,3,244,184,0,15,16,184,0,11,220,65,3,0,239,0,11,0,1,93,184,0,12,220,48,49,1,65,3,0,136,0,3,0,1,93,65,11,0,72,0,13,0,88,0,13,0,104,0,13,0,120,0,13,0,136,0,13,0,5,93,65,11,0,55,0,17,0,71,0,17,0,87,0,17,0,103,0,17,0,119,0,17,0,5,93,65,11,0,54,0,18,0,70,0,18,0,86,0,18,0,102,0,18,0,118,0,18,0,5,93,65,7,0,150,0,22,0,166,0,22,0,182,0,22,0,3,93,0,65,3,0,135,0,3,0,1,93,65,11,0,70,0,13,0,86,0,13,0,102,0,13,0,118,0,13,0,134,0,13,0,5,93,65,11,0,55,0,17,0,71,0,17,0,87,0,17,0,103,0,17,0,119,0,17,0,5,93,65,11,0,55,0,18,0,71,0,18,0,87,0,18,0,103,0,18,0,119,0,18,0,5,93,1,35,62,3,53,52,38,35,34,7,39,62,1,51,50,30,2,21,20,7,51,1,17,248,57,66,33,8,30,27,51,42,9,11,61,45,30,42,27,13,106,120,1,64,77,97,60,30,9,25,28,59,65,19,35,16,28,37,21,68,146,0,1,0,19,1,56,1,21,2,194,0,38,1,205,186,0,34,0,5,0,3,43,65,3,0,159,0,5,0,1,93,65,3,0,111,0,5,0,1,93,65,3,0,95,0,5,0,1,113,65,3,0,240,0,5,0,1,93,65,3,0,32,0,5,0,1,113,65,5,0,16,0,34,0,32,0,34,0,2,93,65,3,0,159,0,34,0,1,93,65,3,0,240,0,34,0,1,93,65,3,0,80,0,34,0,1,93,65,3,0,32,0,34,0,1,113,184,0,34,16,185,0,10,0,5,244,186,0,14,0,5,0,34,17,18,57,184,0,14,47,65,3,0,15,0,14,0,1,93,186,0,30,0,34,0,5,17,18,57,184,0,30,47,185,0,18,0,5,244,186,0,23,0,5,0,34,17,18,57,184,0,23,47,186,0,32,0,14,0,30,17,18,57,65,7,0,38,0,32,0,54,0,32,0,70,0,32,0,3,93,65,5,0,85,0,32,0,101,0,32,0,2,93,0,184,0,0,69,88,184,0,25,47,27,185,0,25,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,10,62,89,184,0,6,220,65,5,0,112,0,6,0,128,0,6,0,2,93,184,0,0,16,185,0,8,0,1,244,186,0,16,0,25,0,0,17,18,57,184,0,16,47,65,3,0,31,0,16,0,1,93,185,0,13,0,3,244,184,0,25,16,185,0,20,0,3,244,184,0,25,16,184,0,22,220,186,0,32,0,16,0,13,17,18,57,48,49,1,65,3,0,38,0,27,0,1,93,65,3,0,70,0,27,0,1,93,65,3,0,55,0,27,0,1,93,65,3,0,87,0,27,0,1,93,65,3,0,104,0,27,0,1,93,65,3,0,38,0,37,0,1,93,65,3,0,71,0,37,0,1,93,0,65,3,0,101,0,27,0,1,93,65,9,0,38,0,27,0,54,0,27,0,70,0,27,0,86,0,27,0,4,93,65,3,0,118,0,27,0,1,93,65,3,0,41,0,37,0,1,93,65,3,0,73,0,37,0,1,93,65,3,0,58,0,37,0,1,93,19,34,46,2,39,55,22,51,50,53,52,38,43,1,55,51,50,53,52,35,34,7,39,54,51,50,30,2,21,20,7,22,21,20,14,2,128,17,35,30,23,4,18,32,56,78,31,43,52,6,27,77,60,49,22,11,26,65,36,48,29,13,39,54,24,41,54,1,56,6,9,10,5,66,26,52,30,34,55,48,44,17,53,25,18,28,36,19,53,22,32,61,30,46,32,17,0,0,1,0,58,2,84,0,245,2,220,0,3,0,105,184,0,2,47,65,3,0,0,0,2,0,1,93,184,0,0,220,0,184,0,1,47,65,3,0,64,0,1,0,1,93,65,3,0,32,0,1,0,1,93,65,3,0,16,0,1,0,1,113,184,0,3,220,65,5,0,15,0,3,0,31,0,3,0,2,93,184,0,0,220,65,11,0,89,0,0,0,105,0,0,0,121,0,0,0,137,0,0,0,153,0,0,0,5,93,184,0,1,16,184,0,2,220,48,49,19,7,53,55,245,187,187,2,148,64,41,95,0,0,1,0,73,255,14,2,44,1,234,0,27,0,252,186,0,23,0,13,0,3,43,65,3,0,143,0,23,0,1,93,65,3,0,0,0,23,0,1,93,65,3,0,32,0,23,0,1,93,184,0,23,16,185,0,22,0,4,244,186,0,4,0,22,0,23,17,18,57,65,3,0,143,0,13,0,1,93,65,3,0,0,0,13,0,1,93,65,3,0,32,0,13,0,1,93,184,0,13,16,185,0,14,0,4,244,184,0,10,208,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,12,62,89,184,0,0,69,88,184,0,7,47,27,185,0,7,0,6,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,8,62,89,184,0,1,16,185,0,0,0,1,244,184,0,14,16,184,0,22,208,186,0,4,0,7,0,22,17,18,57,186,0,10,0,14,0,7,17,18,57,65,5,0,122,0,10,0,138,0,10,0,2,93,184,0,7,16,185,0,18,0,2,244,48,49,1,65,5,0,85,0,17,0,101,0,17,0,2,93,0,65,3,0,88,0,17,0,1,93,37,7,35,34,39,14,1,35,34,38,39,17,35,17,51,17,20,22,51,50,54,55,17,51,17,20,22,51,2,44,16,26,79,28,33,57,44,32,47,33,88,89,53,69,38,50,28,87,19,28,62,72,73,38,36,15,23,254,243,2,220,254,254,84,79,26,32,1,107,254,192,57,51,0,0,1,0,33,0,0,2,68,2,188,0,19,0,140,184,0,7,47,65,5,0,0,0,7,0,16,0,7,0,2,93,184,0,3,220,65,5,0,15,0,3,0,31,0,3,0,2,93,184,0,2,220,184,0,0,220,184,0,7,16,184,0,6,220,184,0,7,16,184,0,13,220,65,5,0,15,0,13,0,31,0,13,0,2,93,0,184,0,0,69,88,184,0,19,47,27,185,0,19,0,14,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,6,62,89,184,0,19,16,184,0,0,220,184,0,6,16,184,0,3,208,184,0,0,16,184,0,4,208,184,0,19,16,184,0,8,220,48,49,1,35,17,35,17,35,17,35,53,46,3,53,52,62,2,51,33,2,68,75,48,101,41,70,105,71,36,38,73,108,69,1,3,2,121,253,135,2,121,253,135,243,4,40,63,80,44,45,82,62,37,0,0,0,0,1,0,57,0,213,0,181,1,87,0,3,0,76,184,0,1,47,65,5,0,32,0,1,0,48,0,1,0,2,113,65,5,0,0,0,1,0,16,0,1,0,2,93,184,0,0,220,65,3,0,191,0,0,0,1,93,65,3,0,63,0,0,0,1,93,65,5,0,47,0,0,0,63,0,0,0,2,113,0,184,0,1,47,184,0,2,220,48,49,55,35,53,51,181,124,124,213,130,0,0,1,0,144,255,64,1,22,255,202,0,3,0,54,184,0,2,47,65,3,0,32,0,2,0,1,93,184,0,0,220,65,5,0,31,0,0,0,47,0,0,0,2,93,0,184,0,4,47,184,0,0,220,184,0,2,220,65,3,0,16,0,2,0,1,93,48,49,5,15,1,55,1,22,88,46,68,54,133,5,132,0,0,0,0,1,0,23,1,64,0,155,2,186,0,11,0,171,187,0,0,0,5,0,1,0,4,43,65,5,0,143,0,0,0,159,0,0,0,2,93,65,3,0,207,0,0,0,1,93,65,7,0,0,0,0,0,16,0,0,0,32,0,0,0,3,93,65,5,0,143,0,1,0,159,0,1,0,2,93,65,3,0,207,0,1,0,1,93,65,7,0,0,0,1,0,16,0,1,0,32,0,1,0,3,93,184,0,1,16,184,0,5,208,184,0,5,47,186,0,10,0,1,0,0,17,18,57,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,10,62,89,184,0,11,16,184,0,4,220,186,0,2,0,4,0,11,17,18,57,185,0,5,0,3,244,48,49,19,35,17,6,7,39,62,3,55,51,155,75,32,19,6,9,24,21,18,3,57,1,64,1,20,14,3,60,1,13,16,20,9,0,0,0,2,0,33,1,178,1,81,2,213,0,18,0,31,0,233,184,0,7,47,65,3,0,96,0,7,0,1,93,184,0,17,220,184,0,7,16,185,0,24,0,5,244,184,0,17,16,185,0,30,0,5,244,0,184,0,12,47,184,0,2,220,65,3,0,208,0,2,0,1,93,65,3,0,96,0,2,0,1,93,65,3,0,48,0,2,0,1,93,184,0,12,16,185,0,21,0,3,244,184,0,2,16,185,0,27,0,3,244,48,49,1,65,7,0,6,0,0,0,22,0,0,0,38,0,0,0,3,93,65,7,0,9,0,5,0,25,0,5,0,41,0,5,0,3,93,65,7,0,8,0,10,0,24,0,10,0,40,0,10,0,3,93,65,7,0,6,0,14,0,22,0,14,0,38,0,14,0,3,93,0,65,7,0,9,0,0,0,25,0,0,0,41,0,0,0,3,93,65,7,0,8,0,5,0,24,0,5,0,40,0,5,0,3,93,65,7,0,6,0,10,0,22,0,10,0,38,0,10,0,3,93,65,7,0,6,0,14,0,22,0,14,0,38,0,14,0,3,93,1,6,35,34,46,2,53,52,62,2,51,50,30,2,21,20,39,38,35,34,6,21,20,22,51,50,54,53,52,1,39,41,69,35,56,39,22,21,39,57,35,35,56,40,21,97,20,35,35,40,40,35,35,40,1,220,42,23,39,53,31,30,53,39,23,23,39,53,30,61,123,24,49,37,38,48,48,38,37,0,2,0,41,0,78,2,36,1,234,0,5,0,11,0,195,184,0,0,47,65,3,0,0,0,0,0,1,93,184,0,4,220,184,0,5,220,65,7,0,96,0,5,0,112,0,5,0,128,0,5,0,3,93,65,7,0,0,0,5,0,16,0,5,0,32,0,5,0,3,113,184,0,1,208,184,0,4,16,184,0,2,208,184,0,0,16,185,0,3,0,4,244,184,0,0,16,184,0,6,220,184,0,10,220,185,0,11,0,4,244,184,0,7,208,184,0,10,16,184,0,8,208,184,0,6,16,185,0,9,0,4,244,65,3,0,47,0,13,0,1,93,0,25,184,0,0,47,24,184,0,1,208,184,0,1,47,184,0,0,16,184,0,3,208,184,0,0,16,184,0,5,208,184,0,5,47,184,0,3,16,184,0,6,208,184,0,1,16,184,0,7,208,184,0,6,16,184,0,9,208,184,0,5,16,184,0,11,208,48,49,1,7,35,55,39,51,15,1,35,55,39,51,2,36,147,100,147,147,100,112,147,101,148,148,101,1,28,206,206,206,206,206,206,206,0,0,0,255,255,0,39,255,171,2,171,2,188,0,38,0,120,16,0,0,38,0,16,42,0,1,7,0,223,1,124,254,193,0,58,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,14,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,14,62,89,184,0,0,69,88,184,0,18,47,27,185,0,18,0,6,62,89,184,0,26,208,48,49,0,0,255,255,0,36,255,171,2,182,2,188,0,38,0,120,13,0,0,38,0,16,39,0,1,7,0,113,1,165,254,192,0,54,0,184,0,0,69,88,184,0,11,47,27,185,0,11,0,14,62,89,184,0,0,69,88,184,0,15,47,27,185,0,15,0,14,62,89,184,0,0,69,88,184,0,16,47,27,185,0,16,0,6,62,89,48,49,0,0,255,255,0,32,255,171,3,83,2,194,0,38,0,114,13,0,0,39,0,16,0,212,0,0,1,7,0,223,2,36,254,193,0,58,0,184,0,0,69,88,184,0,25,47,27,185,0,25,0,14,62,89,184,0,0,69,88,184,0,42,47,27,185,0,42,0,14,62,89,184,0,0,69,88,184,0,45,47,27,185,0,45,0,6,62,89,184,0,53,208,48,49,0,2,0,62,255,6,1,173,1,244,0,36,0,40,1,65,186,0,21,0,29,0,3,43,186,0,1,0,21,0,29,17,18,57,184,0,1,47,65,5,0,31,0,1,0,47,0,1,0,2,113,184,0,0,220,184,0,29,16,184,0,10,220,65,7,0,63,0,10,0,79,0,10,0,95,0,10,0,3,113,186,0,39,0,29,0,21,17,18,57,184,0,39,47,185,0,40,0,4,244,0,184,0,0,69,88,184,0,37,47,27,185,0,37,0,12,62,89,184,0,0,69,88,184,0,24,47,27,185,0,24,0,8,62,89,184,0,37,16,184,0,40,220,65,3,0,48,0,40,0,1,113,184,0,0,220,184,0,24,16,185,0,15,0,1,244,184,0,24,16,184,0,20,220,48,49,1,65,3,0,118,0,8,0,1,93,65,3,0,135,0,8,0,1,93,65,7,0,54,0,22,0,70,0,22,0,86,0,22,0,3,93,65,3,0,9,0,26,0,1,93,65,7,0,105,0,27,0,121,0,27,0,137,0,27,0,3,93,65,3,0,40,0,33,0,1,93,65,3,0,25,0,33,0,1,93,0,65,3,0,120,0,8,0,1,93,65,3,0,137,0,8,0,1,93,65,7,0,57,0,22,0,73,0,22,0,89,0,22,0,3,93,65,3,0,9,0,26,0,1,93,65,3,0,104,0,27,0,1,93,65,3,0,136,0,27,0,1,93,65,3,0,22,0,33,0,1,93,65,3,0,39,0,33,0,1,93,19,51,22,21,20,14,4,21,20,30,2,51,50,62,2,55,23,14,1,35,34,46,2,53,52,54,63,1,62,1,47,1,51,21,35,233,59,3,22,34,38,34,22,21,35,46,26,22,42,36,26,5,25,19,86,54,47,77,54,30,35,25,50,26,36,1,18,91,91,1,44,41,4,31,53,49,47,49,55,32,30,46,31,16,13,20,24,11,67,29,38,33,52,67,35,35,76,32,65,33,65,30,227,86,0,0,0,255,255,0,7,0,0,2,97,3,173,2,38,0,34,0,0,1,7,0,65,0,157,0,209,0,70,65,5,0,64,0,12,0,80,0,12,0,2,113,65,3,0,16,0,12,0,1,93,65,3,0,112,0,12,0,1,93,65,3,0,48,0,12,0,1,93,0,65,3,0,47,0,11,0,1,93,65,3,0,31,0,11,0,1,113,65,3,0,255,0,11,0,1,93,48,49,255,255,0,7,0,0,2,97,3,173,2,38,0,34,0,0,1,7,0,115,0,157,0,209,0,48,65,3,0,159,0,12,0,1,93,65,3,0,15,0,12,0,1,93,65,3,0,79,0,12,0,1,93,65,3,0,16,0,12,0,1,93,0,65,3,0,47,0,12,0,1,93,48,49,0,0,255,255,0,7,0,0,2,97,3,186,2,38,0,34,0,0,1,7,0,203,0,86,0,209,0,39,65,3,0,79,0,14,0,1,93,65,3,0,143,0,14,0,1,93,65,3,0,16,0,14,0,1,93,0,65,3,0,47,0,14,0,1,93,48,49,0,0,0,255,255,0,7,0,0,2,97,3,143,2,38,0,34,0,0,1,7,0,206,0,44,0,209,0,39,65,3,0,15,0,19,0,1,93,65,3,0,47,0,19,0,1,113,65,3,0,47,0,19,0,1,93,0,65,3,0,47,0,11,0,1,93,48,49,0,0,0,255,255,0,7,0,0,2,97,3,141,2,38,0,34,0,0,1,7,0,104,0,98,0,209,0,77,184,0,16,47,65,3,0,15,0,16,0,1,113,65,5,0,79,0,16,0,95,0,16,0,2,93,65,3,0,16,0,16,0,1,93,65,3,0,64,0,16,0,1,113,184,0,12,208,0,184,0,15,47,65,3,0,47,0,15,0,1,93,65,3,0,175,0,15,0,1,93,184,0,12,208,48,49,0,255,255,0,7,0,0,2,97,3,196,2,38,0,34,0,0,1,7,0,205,0,163,0,209,0,91,184,0,14,47,65,3,0,15,0,14,0,1,93,65,3,0,47,0,14,0,1,93,65,3,0,112,0,14,0,1,93,184,0,26,208,0,184,0,25,47,65,3,0,111,0,25,0,1,93,65,3,0,47,0,25,0,1,93,65,3,0,15,0,25,0,1,113,65,3,0,32,0,25,0,1,113,65,3,0,224,0,25,0,1,93,184,0,29,208,48,49,0,0,0,0,2,255,249,0,0,3,60,2,188,0,15,0,18,1,163,186,0,0,0,1,0,3,43,65,3,0,64,0,0,0,1,93,65,3,0,176,0,0,0,1,93,65,3,0,96,0,0,0,1,93,65,3,0,223,0,1,0,1,93,184,0,1,16,184,0,16,208,184,0,1,16,184,0,5,208,65,3,0,89,0,5,0,1,93,65,3,0,9,0,5,0,1,93,65,3,0,245,0,5,0,1,93,185,0,4,0,4,244,186,0,3,0,16,0,4,17,18,57,65,3,0,138,0,3,0,1,93,184,0,16,16,184,0,6,208,65,3,0,139,0,6,0,1,93,65,3,0,42,0,6,0,1,113,65,3,0,249,0,6,0,1,93,65,5,0,9,0,6,0,25,0,6,0,2,113,184,0,0,16,184,0,8,208,184,0,8,47,184,0,1,16,184,0,14,220,65,5,0,96,0,14,0,112,0,14,0,2,113,65,7,0,208,0,14,0,224,0,14,0,240,0,14,0,3,93,65,7,0,0,0,14,0,16,0,14,0,32,0,14,0,3,113,65,9,0,80,0,14,0,96,0,14,0,112,0,14,0,128,0,14,0,4,93,184,0,10,208,184,0,0,16,184,0,12,208,184,0,12,47,186,0,18,0,16,0,4,17,18,57,65,3,0,22,0,18,0,1,113,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,14,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,186,0,16,0,1,0,6,17,18,57,184,0,16,47,185,0,2,0,2,244,184,0,1,16,184,0,4,208,184,0,6,16,185,0,9,0,2,244,186,0,10,0,6,0,1,17,18,57,184,0,10,47,185,0,13,0,2,244,184,0,1,16,185,0,14,0,2,244,184,0,9,16,184,0,17,208,48,49,1,65,5,0,105,0,6,0,121,0,6,0,2,93,65,3,0,117,0,18,0,1,93,41,1,53,35,7,35,1,33,21,33,21,51,21,35,21,33,37,17,3,3,60,254,76,214,92,93,1,86,1,227,254,200,241,241,1,66,254,76,171,180,180,2,188,87,204,86,237,186,1,83,254,173,0,255,255,0,39,255,64,2,71,2,202,2,38,0,36,0,0,0,6,0,119,96,0,0,0,255,255,0,80,0,0,2,4,3,173,2,38,0,38,0,0,1,7,0,65,0,126,0,209,0,74,65,7,0,48,0,13,0,64,0,13,0,80,0,13,0,3,93,65,3,0,47,0,13,0,1,93,65,3,0,80,0,13,0,1,113,65,3,0,48,0,13,0,1,113,0,65,3,0,47,0,12,0,1,93,65,3,0,31,0,12,0,1,113,65,3,0,255,0,12,0,1,93,48,49,255,255,0,80,0,0,2,4,3,173,2,38,0,38,0,0,1,7,0,115,0,125,0,209,0,60,65,7,0,143,0,14,0,159,0,14,0,175,0,14,0,3,93,65,3,0,255,0,14,0,1,93,65,3,0,15,0,14,0,1,113,65,5,0,48,0,14,0,64,0,14,0,2,113,0,65,3,0,47,0,13,0,1,93,48,49,0,0,255,255,0,80,0,0,2,4,3,186,2,38,0,38,0,0,1,7,0,203,0,53,0,209,0,30,65,3,0,143,0,15,0,1,93,65,3,0,16,0,15,0,1,93,0,65,3,0,47,0,15,0,1,93,48,49,255,255,0,80,0,0,2,4,3,141,2,38,0,38,0,0,1,7,0,104,0,65,0,209,0,55,184,0,17,47,65,3,0,143,0,17,0,1,93,65,3,0,175,0,17,0,1,93,184,0,13,208,0,184,0,16,47,65,3,0,47,0,16,0,1,93,65,3,0,175,0,16,0,1,93,184,0,13,208,48,49,0,0,0,255,255,0,35,0,0,0,222,3,173,2,38,0,42,0,0,1,7,0,65,255,233,0,209,0,86,65,5,0,239,0,5,0,255,0,5,0,2,93,65,3,0,15,0,5,0,1,113,65,3,0,0,0,5,0,1,93,65,11,0,48,0,5,0,64,0,5,0,80,0,5,0,96,0,5,0,112,0,5,0,5,93,0,65,3,0,47,0,4,0,1,93,65,3,0,31,0,4,0,1,113,65,3,0,255,0,4,0,1,93,48,49,255,255,0,36,0,0,0,223,3,173,2,38,0,42,0,0,1,7,0,115,255,234,0,209,0,12,0,65,3,0,47,0,5,0,1,93,48,49,0,0,255,255,255,240,0,0,1,22,3,186,2,38,0,42,0,0,1,7,0,203,255,164,0,209,0,47,65,3,0,143,0,7,0,1,93,65,7,0,80,0,7,0,96,0,7,0,112,0,7,0,3,93,65,3,0,32,0,7,0,1,113,0,65,3,0,47,0,7,0,1,93,48,49,0,0,0,255,255,0,5,0,0,0,253,3,141,2,38,0,42,0,0,1,7,0,104,255,174,0,209,0,59,184,0,9,47,65,3,0,175,0,9,0,1,93,65,5,0,64,0,9,0,80,0,9,0,2,113,184,0,5,208,0,184,0,8,47,65,3,0,47,0,8,0,1,93,65,3,0,175,0,8,0,1,93,184,0,5,208,48,49,0,0,0,0,2,255,245,0,0,2,175,2,188,0,16,0,31,1,145,186,0,12,0,1,0,3,43,65,3,0,127,0,1,0,1,93,65,3,0,47,0,1,0,1,113,65,3,0,16,0,1,0,1,93,184,0,1,16,184,0,3,208,184,0,3,47,184,0,1,16,184,0,5,208,65,5,0,16,0,12,0,32,0,12,0,2,93,65,3,0,128,0,12,0,1,93,65,3,0,192,0,12,0,1,93,65,3,0,64,0,12,0,1,93,65,3,0,224,0,12,0,1,93,65,3,0,16,0,12,0,1,113,184,0,1,16,185,0,23,0,4,244,184,0,19,208,184,0,23,16,184,0,21,208,184,0,21,47,184,0,12,16,185,0,27,0,4,244,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,186,0,19,0,7,0,0,17,18,57,184,0,19,47,65,3,0,47,0,19,0,1,93,65,3,0,15,0,19,0,1,93,65,3,0,95,0,19,0,1,93,185,0,22,0,1,244,184,0,2,208,184,0,19,16,184,0,5,208,184,0,7,16,185,0,17,0,2,244,184,0,0,16,185,0,24,0,2,244,48,49,1,65,3,0,86,0,9,0,1,93,65,3,0,103,0,9,0,1,93,65,3,0,86,0,10,0,1,93,65,3,0,119,0,10,0,1,93,65,3,0,87,0,14,0,1,93,65,3,0,86,0,15,0,1,93,65,5,0,103,0,15,0,119,0,15,0,2,93,0,65,5,0,86,0,9,0,102,0,9,0,2,93,65,3,0,87,0,10,0,1,93,65,3,0,119,0,10,0,1,93,65,3,0,88,0,14,0,1,93,65,3,0,120,0,15,0,1,93,65,3,0,105,0,15,0,1,93,65,3,0,90,0,15,0,1,93,41,1,17,35,53,51,17,33,50,30,2,21,20,14,2,3,35,21,51,21,35,21,51,50,54,53,52,46,2,1,86,255,0,97,97,1,0,76,127,92,50,50,90,127,78,166,133,133,166,118,125,32,61,91,1,57,64,1,67,49,90,130,81,81,129,91,49,2,102,237,64,226,140,123,61,98,68,37,0,255,255,0,80,0,0,2,112,3,143,2,38,0,47,0,0,1,7,0,206,0,87,0,209,0,25,65,5,0,144,0,18,0,160,0,18,0,2,93,0,65,3,0,47,0,10,0,1,93,48,49,0,255,255,0,39,255,242,2,217,3,173,2,38,0,48,0,0,1,7,0,65,0,233,0,209,0,30,0,65,3,0,47,0,38,0,1,93,65,3,0,31,0,38,0,1,113,65,3,0,255,0,38,0,1,93,48,49,255,255,0,39,255,242,2,217,3,173,2,38,0,48,0,0,1,7,0,115,0,232,0,209,0,48,65,3,0,239,0,40,0,1,93,65,3,0,15,0,40,0,1,93,65,3,0,175,0,40,0,1,93,65,3,0,32,0,40,0,1,93,0,65,3,0,47,0,39,0,1,93,48,49,0,0,255,255,0,39,255,242,2,217,3,186,2,38,0,48,0,0,1,7,0,203,0,161,0,209,0,34,65,3,0,15,0,41,0,1,93,65,5,0,16,0,41,0,32,0,41,0,2,93,0,65,3,0,47,0,41,0,1,93,48,49,255,255,0,39,255,242,2,217,3,143,2,38,0,48,0,0,1,7,0,206,0,119,0,209,0,30,65,3,0,15,0,46,0,1,93,65,3,0,63,0,46,0,1,93,0,65,3,0,47,0,38,0,1,93,48,49,255,255,0,39,255,242,2,217,3,141,2,38,0,48,0,0,1,7,0,104,0,173,0,209,0,59,184,0,43,47,65,3,0,95,0,43,0,1,93,65,5,0,16,0,43,0,32,0,43,0,2,93,184,0,39,208,0,184,0,42,47,65,3,0,47,0,42,0,1,93,65,3,0,175,0,42,0,1,93,184,0,39,208,48,49,0,0,0,0,1,0,61,0,119,1,122,1,179,0,11,0,109,184,0,4,47,65,3,0,239,0,4,0,1,93,65,5,0,0,0,4,0,16,0,4,0,2,93,184,0,0,220,186,0,5,0,4,0,0,17,18,57,184,0,4,16,184,0,6,208,184,0,0,16,184,0,10,208,186,0,11,0,0,0,4,17,18,57,0,184,0,3,47,184,0,1,208,184,0,3,16,184,0,7,220,186,0,2,0,3,0,7,17,18,57,186,0,8,0,7,0,3,17,18,57,184,0,9,208,48,49,37,7,39,7,39,55,39,55,23,55,23,7,1,122,36,123,122,36,123,123,36,122,123,36,124,155,36,123,123,36,122,122,36,123,123,36,122,0,3,0,39,255,226,2,217,2,204,0,23,0,33,0,43,3,133,186,0,19,0,7,0,3,43,65,3,0,15,0,7,0,1,93,65,5,0,79,0,7,0,95,0,7,0,2,93,65,3,0,32,0,19,0,1,93,65,5,0,176,0,19,0,192,0,19,0,2,93,65,5,0,224,0,19,0,240,0,19,0,2,93,65,5,0,112,0,19,0,128,0,19,0,2,93,65,3,0,32,0,19,0,1,113,186,0,2,0,7,0,19,17,18,57,184,0,2,16,184,0,3,208,186,0,5,0,7,0,19,17,18,57,65,3,0,121,0,5,0,1,93,184,0,5,16,184,0,4,208,65,3,0,25,0,4,0,1,93,186,0,14,0,19,0,7,17,18,57,184,0,14,16,184,0,15,208,65,3,0,138,0,15,0,1,93,186,0,17,0,19,0,7,17,18,57,65,3,0,118,0,17,0,1,93,184,0,17,16,184,0,16,208,65,3,0,57,0,16,0,1,93,184,0,19,16,185,0,32,0,4,244,184,0,7,16,185,0,39,0,4,244,186,0,24,0,32,0,39,17,18,57,186,0,25,0,39,0,32,17,18,57,65,5,0,54,0,25,0,70,0,25,0,2,93,65,7,0,6,0,25,0,22,0,25,0,38,0,25,0,3,113,65,5,0,117,0,25,0,133,0,25,0,2,93,186,0,41,0,39,0,32,17,18,57,186,0,42,0,32,0,39,17,18,57,65,3,0,122,0,42,0,1,93,65,3,0,139,0,42,0,1,93,65,5,0,57,0,42,0,73,0,42,0,2,93,65,7,0,9,0,42,0,25,0,42,0,41,0,42,0,3,113,65,3,0,15,0,44,0,1,93,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,186,0,2,0,0,0,12,17,18,57,184,0,3,208,184,0,3,47,186,0,5,0,0,0,12,17,18,57,186,0,14,0,12,0,0,17,18,57,65,7,0,6,0,14,0,22,0,14,0,38,0,14,0,3,113,184,0,12,16,184,0,15,208,184,0,15,47,186,0,17,0,12,0,0,17,18,57,184,0,12,16,185,0,34,0,2,244,184,0,0,16,185,0,27,0,2,244,186,0,24,0,34,0,27,17,18,57,65,3,0,138,0,24,0,1,93,65,7,0,9,0,24,0,25,0,24,0,41,0,24,0,3,113,65,3,0,121,0,24,0,1,93,186,0,25,0,27,0,34,17,18,57,186,0,41,0,27,0,34,17,18,57,65,7,0,6,0,41,0,22,0,41,0,38,0,41,0,3,113,65,5,0,118,0,41,0,134,0,41,0,2,93,186,0,42,0,34,0,27,17,18,57,48,49,1,65,3,0,105,0,4,0,1,93,65,3,0,137,0,4,0,1,93,65,3,0,90,0,4,0,1,93,65,3,0,89,0,9,0,1,93,65,3,0,121,0,9,0,1,93,65,5,0,88,0,10,0,104,0,10,0,2,93,65,3,0,137,0,14,0,1,93,65,3,0,86,0,17,0,1,93,65,5,0,86,0,21,0,102,0,21,0,2,93,65,3,0,117,0,22,0,1,93,65,3,0,86,0,22,0,1,93,65,3,0,103,0,24,0,1,93,65,3,0,138,0,30,0,1,93,65,3,0,133,0,37,0,1,93,65,3,0,105,0,41,0,1,93,65,3,0,89,0,42,0,1,93,0,65,3,0,90,0,2,0,1,93,65,3,0,85,0,9,0,1,93,65,3,0,118,0,9,0,1,93,65,3,0,101,0,10,0,1,93,65,3,0,86,0,10,0,1,93,65,3,0,86,0,14,0,1,93,65,3,0,135,0,14,0,1,93,65,3,0,87,0,17,0,1,93,65,3,0,88,0,21,0,1,93,65,3,0,105,0,21,0,1,93,65,3,0,90,0,22,0,1,93,65,3,0,122,0,22,0,1,93,65,3,0,107,0,24,0,1,93,65,3,0,136,0,37,0,1,93,65,3,0,101,0,41,0,1,93,65,3,0,87,0,42,0,1,93,5,34,39,7,35,55,38,53,52,62,2,51,50,23,55,51,7,22,21,20,14,2,19,1,22,51,50,62,2,53,52,39,34,14,2,21,20,23,1,38,1,127,91,85,42,93,73,106,52,91,127,75,86,86,31,92,61,111,51,91,128,104,254,209,69,55,58,89,60,30,238,57,88,60,31,55,1,45,66,12,43,61,105,113,162,83,134,95,52,42,44,89,111,167,81,133,95,52,2,48,254,69,29,41,74,101,60,126,147,41,74,101,60,98,95,1,185,28,0,0,0,255,255,0,72,255,242,2,140,3,173,0,38,0,54,0,0,1,7,0,65,0,211,0,209,0,56,65,3,0,47,0,23,0,1,93,65,7,0,48,0,23,0,64,0,23,0,80,0,23,0,3,93,0,65,3,0,47,0,22,0,1,93,65,3,0,31,0,22,0,1,113,65,3,0,255,0,22,0,1,93,48,49,0,0,255,255,0,72,255,242,2,140,3,173,0,38,0,54,0,0,1,7,0,115,0,211,0,209,0,47,65,3,0,15,0,23,0,1,93,65,7,0,175,0,24,0,191,0,24,0,207,0,24,0,3,93,65,3,0,15,0,24,0,1,113,0,65,3,0,47,0,22,0,1,93,48,49,0,0,0,255,255,0,72,255,242,2,140,3,186,0,38,0,54,0,0,1,7,0,203,0,139,0,209,0,39,65,3,0,15,0,25,0,1,93,65,3,0,143,0,25,0,1,93,65,3,0,32,0,25,0,1,113,0,65,3,0,47,0,25,0,1,93,48,49,0,0,0,255,255,0,72,255,242,2,140,3,141,0,38,0,54,0,0,1,7,0,104,0,152,0,209,0,64,184,0,27,47,65,3,0,15,0,27,0,1,93,65,3,0,16,0,27,0,1,93,65,3,0,80,0,27,0,1,113,184,0,23,208,0,184,0,26,47,65,3,0,47,0,26,0,1,93,65,3,0,175,0,26,0,1,93,184,0,23,208,48,49,0,0,255,255,255,253,0,0,2,57,3,173,2,38,0,58,0,0,1,7,0,115,0,144,0,209,0,52,65,5,0,239,0,11,0,255,0,11,0,2,93,65,3,0,15,0,11,0,1,93,65,3,0,175,0,11,0,1,93,65,3,0,32,0,11,0,1,93,0,65,3,0,47,0,10,0,1,93,48,49,0,0,0,2,0,80,0,0,2,36,2,188,0,16,0,27,1,80,186,0,11,0,2,0,3,43,65,5,0,0,0,2,0,16,0,2,0,2,93,65,3,0,143,0,2,0,1,93,65,3,0,144,0,2,0,1,93,65,3,0,112,0,2,0,1,93,184,0,2,16,185,0,1,0,4,244,184,0,18,208,184,0,5,208,65,3,0,192,0,11,0,1,93,65,3,0,80,0,11,0,1,93,65,3,0,112,0,11,0,1,93,65,5,0,0,0,11,0,16,0,11,0,2,93,65,3,0,224,0,11,0,1,93,65,3,0,32,0,11,0,1,113,184,0,11,16,185,0,22,0,4,244,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,14,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,186,0,0,0,4,0,1,17,18,57,184,0,0,47,65,7,0,15,0,0,0,31,0,0,0,47,0,0,0,3,113,65,3,0,143,0,0,0,1,93,65,3,0,47,0,0,0,1,93,186,0,5,0,4,0,1,17,18,57,184,0,5,47,185,0,17,0,2,244,184,0,0,16,185,0,18,0,2,244,48,49,1,65,5,0,118,0,8,0,134,0,8,0,2,93,65,7,0,102,0,9,0,118,0,9,0,134,0,9,0,3,93,65,3,0,7,0,9,0,1,93,0,65,3,0,116,0,8,0,1,93,65,3,0,133,0,8,0,1,93,65,3,0,5,0,9,0,1,93,65,3,0,101,0,9,0,1,93,65,3,0,135,0,9,0,1,93,55,21,35,17,51,21,51,50,30,2,21,20,14,2,35,3,17,51,50,54,53,52,46,2,35,180,100,100,124,49,88,67,40,41,64,76,35,152,134,73,62,16,38,63,46,125,125,2,188,120,15,47,86,70,68,91,55,23,1,114,254,227,77,71,37,53,32,15,0,1,0,16,255,120,2,39,2,238,0,62,2,25,186,0,58,0,31,0,3,43,65,3,0,0,0,31,0,1,93,65,3,0,31,0,31,0,1,113,65,3,0,80,0,31,0,1,93,65,3,0,32,0,31,0,1,93,184,0,31,16,185,0,30,0,4,244,65,3,0,32,0,58,0,1,93,65,3,0,160,0,58,0,1,93,65,3,0,80,0,58,0,1,113,65,11,0,64,0,58,0,80,0,58,0,96,0,58,0,112,0,58,0,128,0,58,0,5,93,65,3,0,0,0,58,0,1,93,65,3,0,48,0,58,0,1,113,184,0,58,16,185,0,9,0,4,244,186,0,3,0,30,0,9,17,18,57,184,0,3,47,186,0,16,0,30,0,9,17,18,57,184,0,16,47,186,0,46,0,58,0,31,17,18,57,184,0,46,47,185,0,21,0,4,244,184,0,31,16,184,0,35,208,184,0,33,220,184,0,16,16,185,0,51,0,4,244,0,184,0,30,47,184,0,0,69,88,184,0,41,47,27,185,0,41,0,18,62,89,184,0,0,69,88,184,0,34,47,27,185,0,34,0,12,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,185,0,4,0,1,244,186,0,16,0,41,0,3,17,18,57,25,184,0,16,47,24,184,0,41,16,185,0,26,0,2,244,184,0,34,16,185,0,33,0,1,244,184,0,16,16,184,0,51,208,48,49,1,65,3,0,72,0,12,0,1,93,65,3,0,73,0,19,0,1,93,65,3,0,138,0,19,0,1,93,65,3,0,123,0,19,0,1,93,65,3,0,9,0,38,0,1,93,65,3,0,7,0,43,0,1,93,65,3,0,39,0,43,0,1,93,65,5,0,6,0,44,0,22,0,44,0,2,93,65,3,0,54,0,49,0,1,93,65,7,0,87,0,55,0,103,0,55,0,119,0,55,0,3,93,65,3,0,7,0,60,0,1,93,65,3,0,6,0,61,0,1,93,0,65,3,0,119,0,19,0,1,93,65,3,0,5,0,38,0,1,93,65,3,0,6,0,43,0,1,93,65,3,0,38,0,43,0,1,93,65,5,0,7,0,44,0,23,0,44,0,2,93,65,3,0,57,0,49,0,1,93,65,3,0,101,0,55,0,1,93,65,3,0,86,0,55,0,1,93,65,3,0,119,0,56,0,1,93,65,3,0,8,0,60,0,1,93,65,3,0,9,0,61,0,1,93,5,34,38,39,53,50,62,2,53,52,46,4,53,52,62,2,53,52,46,2,35,34,6,21,17,35,17,35,55,51,53,52,62,2,51,50,30,2,21,20,14,2,21,20,30,4,21,20,14,2,1,72,18,20,12,42,68,46,25,25,38,44,38,25,33,41,33,16,27,36,20,54,52,90,85,12,73,31,54,72,41,35,68,53,32,31,36,31,24,36,42,36,24,38,62,81,10,2,1,77,3,13,29,27,28,47,41,35,33,30,15,18,42,51,63,39,26,33,20,7,51,71,253,84,2,44,70,87,42,64,44,23,18,39,62,45,45,69,50,34,10,8,23,29,38,47,56,34,42,58,36,17,0,255,255,0,24,255,246,1,216,2,220,2,38,0,66,0,0,1,6,0,65,89,0,0,29,65,3,0,0,0,45,0,1,93,65,3,0,80,0,45,0,1,113,65,3,0,160,0,45,0,1,93,48,49,0,0,0,255,255,0,24,255,246,1,216,2,220,2,38,0,66,0,0,1,6,0,115,88,0,0,29,65,3,0,127,0,46,0,1,93,65,3,0,255,0,46,0,1,93,65,3,0,80,0,46,0,1,113,48,49,0,0,0,255,255,0,24,255,246,1,216,2,233,2,38,0,66,0,0,1,6,0,203,17,0,0,24,65,5,0,127,0,47,0,143,0,47,0,2,93,65,3,0,223,0,47,0,1,93,48,49,255,255,0,24,255,246,1,216,2,190,2,38,0,66,0,0,1,6,0,206,228,0,0,29,65,3,0,255,0,52,0,1,93,65,3,0,32,0,52,0,1,93,65,3,0,64,0,52,0,1,93,48,49,0,0,0,255,255,0,24,255,246,1,216,2,188,2,38,0,66,0,0,1,6,0,104,29,0,0,62,184,0,49,47,65,3,0,160,0,49,0,1,93,65,7,0,95,0,49,0,111,0,49,0,127,0,49,0,3,93,65,3,0,64,0,49,0,1,113,65,7,0,192,0,49,0,208,0,49,0,224,0,49,0,3,93,184,0,45,208,48,49,0,0,255,255,0,24,255,246,1,216,2,243,2,38,0,66,0,0,1,6,0,205,95,0,0,37,184,0,47,47,65,3,0,0,0,47,0,1,93,65,3,0,160,0,47,0,1,93,65,3,0,64,0,47,0,1,93,184,0,59,208,48,49,0,0,0,0,3,0,22,255,242,3,0,1,244,0,45,0,50,0,65,3,170,186,0,43,0,20,0,3,43,65,3,0,255,0,20,0,1,93,65,3,0,15,0,20,0,1,113,65,5,0,63,0,20,0,79,0,20,0,2,93,65,3,0,79,0,20,0,1,113,65,5,0,191,0,20,0,207,0,20,0,2,93,65,7,0,111,0,20,0,127,0,20,0,143,0,20,0,3,93,65,3,0,160,0,43,0,1,93,65,3,0,48,0,43,0,1,113,65,3,0,224,0,43,0,1,93,65,5,0,64,0,43,0,80,0,43,0,2,93,65,3,0,0,0,43,0,1,93,186,0,63,0,20,0,43,17,18,57,184,0,63,47,185,0,1,0,4,244,186,0,10,0,63,0,43,17,18,57,184,0,10,47,186,0,14,0,1,0,63,17,18,57,184,0,63,16,184,0,22,208,186,0,28,0,20,0,1,17,18,57,184,0,28,47,186,0,35,0,63,0,1,17,18,57,184,0,1,16,184,0,48,208,184,0,43,16,185,0,49,0,4,244,184,0,20,16,185,0,56,0,4,244,0,184,0,0,69,88,184,0,30,47,27,185,0,30,0,12,62,89,184,0,0,69,88,184,0,40,47,27,185,0,40,0,12,62,89,184,0,0,69,88,184,0,12,47,27,185,0,12,0,6,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,6,62,89,186,0,1,0,40,0,12,17,18,57,184,0,1,47,65,5,0,144,0,1,0,160,0,1,0,2,93,65,5,0,16,0,1,0,32,0,1,0,2,93,184,0,12,16,185,0,4,0,1,244,184,0,12,16,184,0,9,220,186,0,14,0,12,0,40,17,18,57,186,0,22,0,30,0,17,17,18,57,184,0,22,47,65,3,0,0,0,22,0,1,93,184,0,30,16,185,0,25,0,2,244,184,0,30,16,184,0,27,220,186,0,35,0,40,0,12,17,18,57,65,3,0,135,0,35,0,1,93,184,0,40,16,185,0,46,0,2,244,184,0,1,16,184,0,48,220,65,15,0,159,0,48,0,175,0,48,0,191,0,48,0,207,0,48,0,223,0,48,0,239,0,48,0,255,0,48,0,7,93,184,0,22,16,184,0,51,220,65,15,0,144,0,51,0,160,0,51,0,176,0,51,0,192,0,51,0,208,0,51,0,224,0,51,0,240,0,51,0,7,93,184,0,17,16,185,0,58,0,1,244,48,49,1,65,5,0,52,0,3,0,68,0,3,0,2,93,65,5,0,89,0,13,0,105,0,13,0,2,93,65,5,0,85,0,15,0,101,0,15,0,2,93,65,3,0,72,0,18,0,1,93,65,3,0,26,0,19,0,1,93,65,3,0,43,0,19,0,1,93,65,3,0,120,0,21,0,1,93,65,3,0,137,0,21,0,1,93,65,3,0,120,0,23,0,1,93,65,9,0,87,0,28,0,103,0,28,0,119,0,28,0,135,0,28,0,4,93,65,3,0,134,0,33,0,1,93,65,3,0,135,0,41,0,1,93,65,3,0,133,0,42,0,1,93,65,3,0,101,0,54,0,1,93,65,3,0,86,0,54,0,1,93,0,65,3,0,72,0,3,0,1,93,65,9,0,91,0,10,0,107,0,10,0,123,0,10,0,139,0,10,0,4,93,65,9,0,91,0,11,0,107,0,11,0,123,0,11,0,139,0,11,0,4,93,65,3,0,89,0,13,0,1,93,65,3,0,106,0,13,0,1,93,65,3,0,25,0,18,0,1,93,65,3,0,105,0,18,0,1,93,65,7,0,58,0,18,0,74,0,18,0,90,0,18,0,3,93,65,3,0,134,0,21,0,1,93,65,3,0,119,0,21,0,1,93,65,3,0,88,0,23,0,1,93,65,3,0,121,0,23,0,1,93,65,3,0,106,0,23,0,1,93,65,9,0,84,0,28,0,100,0,28,0,116,0,28,0,132,0,28,0,4,93,65,9,0,86,0,29,0,102,0,29,0,118,0,29,0,134,0,29,0,4,93,65,3,0,134,0,33,0,1,93,65,3,0,101,0,35,0,1,93,65,3,0,101,0,37,0,1,93,65,3,0,133,0,41,0,1,93,65,3,0,135,0,42,0,1,93,65,3,0,104,0,54,0,1,93,37,33,20,22,51,50,62,2,55,23,6,35,34,39,14,1,35,34,38,53,52,37,46,1,35,34,7,39,54,51,50,30,2,23,62,3,51,50,22,21,20,6,39,34,7,51,52,5,34,14,2,21,20,51,50,62,2,53,52,38,2,252,254,176,90,75,18,26,29,35,26,17,87,76,148,53,26,110,72,75,75,1,45,9,53,56,53,69,8,84,72,20,50,47,36,6,10,37,49,59,32,88,103,2,193,107,30,246,254,161,36,76,64,41,78,28,51,39,23,1,245,90,93,3,9,14,11,69,40,113,57,60,69,63,174,15,61,52,29,70,39,11,27,46,36,31,45,30,14,104,96,11,28,159,113,113,175,12,29,45,33,64,17,34,51,34,14,24,255,255,0,33,255,64,1,171,1,244,2,38,0,68,0,0,1,6,0,119,48,0,0,19,65,7,0,32,0,28,0,48,0,28,0,64,0,28,0,3,93,48,49,0,255,255,0,31,255,246,1,226,2,220,2,38,0,70,0,0,1,6,0,65,103,0,0,24,65,5,0,239,0,32,0,255,0,32,0,2,93,65,3,0,80,0,32,0,1,113,48,49,255,255,0,31,255,246,1,226,2,220,2,38,0,70,0,0,1,6,0,115,104,0,0,24,65,3,0,79,0,33,0,1,93,65,5,0,223,0,33,0,239,0,33,0,2,93,48,49,255,255,0,31,255,246,1,226,2,233,2,38,0,70,0,0,1,6,0,203,32,0,0,33,65,3,0,15,0,34,0,1,93,65,5,0,63,0,34,0,79,0,34,0,2,93,65,3,0,144,0,34,0,1,93,48,49,0,0,0,255,255,0,31,255,246,1,226,2,188,2,38,0,70,0,0,1,6,0,104,44,0,0,19,184,0,36,47,65,3,0,47,0,36,0,1,113,184,0,32,208,48,49,0,255,255,0,13,0,0,0,200,2,220,2,38,0,193,0,0,1,6,0,65,211,0,0,56,65,3,0,0,0,5,0,1,93,65,3,0,255,0,5,0,1,93,65,3,0,143,0,5,0,1,93,65,3,0,223,0,5,0,1,93,65,3,0,80,0,5,0,1,113,65,3,0,32,0,5,0,1,93,48,49,255,255,0,14,0,0,0,201,2,220,2,38,0,193,0,0,1,6,0,115,212,0,0,55,65,3,0,223,0,6,0,1,93,65,5,0,63,0,6,0,79,0,6,0,2,93,65,3,0,255,0,6,0,1,93,65,5,0,143,0,6,0,159,0,6,0,2,93,65,3,0,32,0,6,0,1,93,48,49,0,255,255,255,217,0,0,0,255,2,233,2,38,0,193,0,0,1,6,0,203,141,0,0,29,65,3,0,223,0,7,0,1,93,65,3,0,32,0,7,0,1,93,65,3,0,143,0,8,0,1,93,48,49,0,0,0,255,255,255,239,0,0,0,231,2,188,2,38,0,193,0,0,1,6,0,104,152,0,0,55,184,0,9,47,65,3,0,15,0,9,0,1,113,65,3,0,143,0,9,0,1,93,65,3,0,63,0,9,0,1,113,65,3,0,32,0,9,0,1,93,65,3,0,224,0,9,0,1,93,184,0,5,208,48,49,0,0,2,0,28,255,244,1,228,2,198,0,41,0,57,2,47,186,0,37,0,5,0,3,43,65,3,0,207,0,5,0,1,93,65,3,0,79,0,5,0,1,93,65,3,0,143,0,5,0,1,93,65,3,0,111,0,5,0,1,93,65,3,0,112,0,37,0,1,93,65,3,0,16,0,37,0,1,93,65,3,0,16,0,37,0,1,113,65,3,0,80,0,37,0,1,93,184,0,37,16,185,0,55,0,4,244,184,0,12,208,186,0,24,0,5,0,37,17,18,57,184,0,24,47,186,0,22,0,24,0,12,17,18,57,186,0,32,0,37,0,24,17,18,57,65,3,0,54,0,32,0,1,93,186,0,17,0,22,0,32,17,18,57,184,0,22,16,184,0,20,208,184,0,20,47,186,0,27,0,22,0,32,17,18,57,65,3,0,55,0,27,0,1,93,65,3,0,86,0,27,0,1,93,65,3,0,69,0,27,0,1,93,184,0,32,16,184,0,30,208,184,0,30,47,184,0,5,16,185,0,47,0,4,244,0,184,0,0,69,88,184,0,25,47,27,185,0,25,0,14,62,89,184,0,0,69,88,184,0,29,47,27,185,0,29,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,65,3,0,200,0,5,0,1,93,184,0,10,220,186,0,17,0,10,0,25,17,18,57,184,0,17,16,184,0,19,208,184,0,19,47,186,0,27,0,25,0,10,17,18,57,65,3,0,55,0,27,0,1,93,65,5,0,70,0,27,0,86,0,27,0,2,93,186,0,22,0,27,0,17,17,18,57,184,0,25,16,184,0,24,220,186,0,32,0,17,0,27,17,18,57,184,0,10,16,185,0,42,0,2,244,184,0,0,16,185,0,52,0,2,244,48,49,1,65,3,0,121,0,2,0,1,93,65,3,0,107,0,2,0,1,93,65,5,0,105,0,8,0,121,0,8,0,2,93,65,3,0,103,0,11,0,1,93,65,3,0,120,0,11,0,1,93,65,3,0,136,0,17,0,1,93,65,3,0,135,0,18,0,1,93,65,3,0,119,0,40,0,1,93,0,65,3,0,122,0,2,0,1,93,65,3,0,107,0,2,0,1,93,65,5,0,102,0,8,0,118,0,8,0,2,93,65,3,0,115,0,11,0,1,93,65,3,0,100,0,11,0,1,93,65,3,0,133,0,11,0,1,93,65,3,0,140,0,17,0,1,93,65,3,0,138,0,18,0,1,93,65,3,0,121,0,40,0,1,93,65,3,0,106,0,40,0,1,93,23,34,46,2,53,52,62,2,51,50,23,46,3,39,6,7,39,54,55,38,35,55,50,23,54,55,23,6,7,30,3,21,20,14,2,3,34,14,2,21,20,30,2,51,50,54,53,52,38,249,48,81,59,33,28,53,79,51,86,49,4,16,23,28,15,77,64,30,65,63,60,61,32,72,77,31,28,46,23,46,32,53,37,21,43,68,84,35,29,46,33,18,18,33,46,28,54,66,65,12,32,57,78,46,42,81,63,39,55,24,55,53,45,12,53,9,55,9,43,54,42,55,28,36,12,33,51,29,81,94,102,51,77,104,62,26,1,99,21,37,48,27,30,50,38,21,77,60,60,75,0,0,0,255,255,0,61,0,0,1,247,2,190,2,38,0,79,0,0,1,6,0,206,15,0,0,11,65,3,0,255,0,25,0,1,93,48,49,0,255,255,0,32,255,246,2,6,2,220,2,38,0,80,0,0,1,6,0,65,123,0,0,24,65,3,0,47,0,33,0,1,113,65,5,0,64,0,33,0,80,0,33,0,2,93,48,49,255,255,0,32,255,246,2,6,2,220,2,38,0,80,0,0,1,6,0,115,123,0,0,51,65,3,0,255,0,34,0,1,93,65,3,0,15,0,34,0,1,113,65,3,0,63,0,34,0,1,93,65,3,0,191,0,34,0,1,93,65,5,0,143,0,34,0,159,0,34,0,2,93,48,49,0,255,255,0,32,255,246,2,6,2,233,2,38,0,80,0,0,1,6,0,203,52,0,0,29,65,3,0,15,0,35,0,1,93,65,3,0,32,0,35,0,1,93,65,3,0,160,0,35,0,1,93,48,49,0,0,0,255,255,0,32,255,246,2,6,2,190,2,38,0,80,0,0,1,6,0,206,10,0,0,24,65,5,0,15,0,40,0,31,0,40,0,2,93,65,3,0,47,0,40,0,1,113,48,49,255,255,0,32,255,246,2,6,2,188,2,38,0,80,0,0,1,6,0,104,64,0,0,28,184,0,37,47,65,3,0,143,0,37,0,1,93,65,3,0,32,0,37,0,1,93,184,0,33,208,48,49,0,3,0,66,0,20,2,14,2,22,0,3,0,7,0,11,0,76,184,0,10,47,184,0,11,220,184,0,0,208,184,0,10,16,184,0,1,208,184,0,11,16,184,0,4,220,184,0,10,16,184,0,5,220,0,184,0,5,47,184,0,6,220,184,0,2,220,184,0,1,220,184,0,5,16,184,0,9,220,65,3,0,191,0,9,0,1,93,184,0,10,220,48,49,1,35,53,51,19,33,53,33,3,35,53,51,1,80,89,89,190,254,52,1,204,190,89,89,1,184,94,254,223,74,254,213,94,0,0,3,0,33,255,216,2,27,2,17,0,23,0,36,0,46,2,114,186,0,19,0,7,0,3,43,65,3,0,143,0,7,0,1,93,65,3,0,31,0,7,0,1,93,65,3,0,175,0,7,0,1,93,65,3,0,111,0,7,0,1,93,65,5,0,63,0,7,0,79,0,7,0,2,93,65,3,0,80,0,19,0,1,93,65,3,0,144,0,19,0,1,93,65,3,0,224,0,19,0,1,93,65,3,0,32,0,19,0,1,113,65,3,0,0,0,19,0,1,113,65,3,0,192,0,19,0,1,93,65,3,0,112,0,19,0,1,93,65,3,0,32,0,19,0,1,93,65,3,0,0,0,19,0,1,93,186,0,2,0,7,0,19,17,18,57,186,0,5,0,7,0,19,17,18,57,186,0,14,0,19,0,7,17,18,57,186,0,17,0,19,0,7,17,18,57,184,0,19,16,185,0,32,0,4,244,184,0,7,16,185,0,42,0,4,244,186,0,24,0,32,0,42,17,18,57,186,0,25,0,42,0,32,17,18,57,65,3,0,102,0,25,0,1,93,65,3,0,134,0,25,0,1,93,186,0,44,0,42,0,32,17,18,57,186,0,45,0,32,0,42,17,18,57,65,3,0,105,0,45,0,1,93,65,3,0,137,0,45,0,1,93,65,3,0,128,0,48,0,1,93,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,12,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,186,0,2,0,0,0,12,17,18,57,184,0,3,208,184,0,3,47,186,0,5,0,0,0,12,17,18,57,186,0,14,0,12,0,0,17,18,57,184,0,12,16,184,0,15,208,184,0,15,47,65,3,0,144,0,15,0,1,93,186,0,17,0,12,0,0,17,18,57,184,0,12,16,185,0,37,0,1,244,184,0,0,16,185,0,27,0,1,244,186,0,24,0,37,0,27,17,18,57,65,3,0,137,0,24,0,1,93,65,3,0,105,0,24,0,1,93,65,3,0,38,0,24,0,1,93,186,0,25,0,27,0,37,17,18,57,186,0,44,0,27,0,37,17,18,57,65,3,0,102,0,44,0,1,93,65,3,0,134,0,44,0,1,93,186,0,45,0,37,0,27,17,18,57,48,49,1,65,3,0,92,0,6,0,1,93,65,3,0,90,0,10,0,1,93,65,3,0,86,0,17,0,1,93,65,3,0,85,0,22,0,1,93,65,3,0,73,0,24,0,1,93,65,3,0,70,0,25,0,1,93,65,3,0,87,0,25,0,1,93,65,3,0,74,0,30,0,1,93,65,3,0,69,0,39,0,1,93,65,5,0,73,0,45,0,89,0,45,0,2,93,0,65,3,0,85,0,10,0,1,93,65,3,0,86,0,17,0,1,93,65,3,0,91,0,22,0,1,93,65,3,0,87,0,25,0,1,93,5,34,39,7,35,55,38,53,52,62,2,51,50,23,55,51,7,22,21,20,14,2,19,3,22,51,50,62,2,53,52,46,2,39,34,14,2,21,20,23,19,38,1,30,33,53,19,71,32,109,35,66,93,58,36,48,19,74,34,111,35,66,94,51,163,42,13,37,58,39,21,6,12,17,123,36,57,40,21,46,161,38,13,11,38,66,81,137,54,94,69,40,12,40,66,84,136,54,94,69,39,1,150,254,182,6,29,50,68,39,21,46,41,33,47,28,50,69,41,68,80,1,73,7,255,255,0,56,255,246,1,207,2,220,2,38,0,86,0,0,1,6,0,65,127,0,0,37,65,3,0,255,0,17,0,1,93,65,7,0,48,0,17,0,64,0,17,0,80,0,17,0,3,93,65,3,0,176,0,17,0,1,93,48,49,0,0,0,255,255,0,56,255,246,1,207,2,220,2,38,0,86,0,0,1,6,0,115,127,0,0,59,65,3,0,255,0,17,0,1,93,65,3,0,15,0,17,0,1,113,65,5,0,15,0,17,0,31,0,17,0,2,93,65,3,0,223,0,17,0,1,93,65,7,0,143,0,17,0,159,0,17,0,175,0,17,0,3,93,48,49,0,255,255,0,56,255,246,1,207,2,233,2,38,0,86,0,0,1,6,0,203,56,0,0,56,65,3,0,32,0,19,0,1,113,65,3,0,223,0,19,0,1,93,65,3,0,143,0,19,0,1,93,65,3,0,32,0,19,0,1,93,65,3,0,144,0,19,0,1,93,65,3,0,80,0,19,0,1,93,48,49,255,255,0,56,255,246,1,207,2,188,2,38,0,86,0,0,1,6,0,104,68,0,0,46,184,0,21,47,65,3,0,32,0,21,0,1,93,65,3,0,143,0,21,0,1,93,65,3,0,0,0,21,0,1,113,65,3,0,224,0,21,0,1,93,184,0,17,208,48,49,0,0,255,255,0,7,255,14,1,242,2,220,2,38,0,90,0,0,1,6,0,115,101,0,0,11,65,3,0,79,0,9,0,1,93,48,49,0,0,2,0,60,255,15,2,36,2,238,0,18,0,30,1,158,186,0,14,0,4,0,3,43,65,3,0,255,0,4,0,1,93,65,3,0,223,0,4,0,1,93,65,3,0,31,0,4,0,1,113,65,3,0,0,0,4,0,1,93,65,3,0,32,0,4,0,1,93,184,0,4,16,185,0,3,0,4,244,184,0,6,208,65,17,0,0,0,14,0,16,0,14,0,32,0,14,0,48,0,14,0,64,0,14,0,80,0,14,0,96,0,14,0,112,0,14,0,8,93,65,3,0,0,0,14,0,1,113,65,3,0,144,0,14,0,1,93,65,5,0,32,0,14,0,48,0,14,0,2,113,65,3,0,80,0,14,0,1,113,184,0,3,16,184,0,19,208,184,0,14,16,185,0,25,0,4,244,65,3,0,64,0,32,0,1,93,65,3,0,96,0,32,0,1,93,65,3,0,128,0,32,0,1,93,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,18,62,89,184,0,0,69,88,184,0,9,47,27,185,0,9,0,12,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,8,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,186,0,2,0,0,0,9,17,18,57,186,0,7,0,9,0,0,17,18,57,185,0,22,0,1,244,184,0,9,16,185,0,28,0,2,244,48,49,1,65,3,0,105,0,1,0,1,93,65,3,0,102,0,11,0,1,93,65,3,0,87,0,11,0,1,93,65,3,0,102,0,17,0,1,93,65,3,0,87,0,17,0,1,93,0,65,3,0,105,0,1,0,1,93,65,3,0,91,0,1,0,1,93,65,5,0,85,0,8,0,101,0,8,0,2,93,65,3,0,86,0,11,0,1,93,65,3,0,103,0,11,0,1,93,65,5,0,89,0,17,0,105,0,17,0,2,93,65,3,0,149,0,29,0,1,93,5,34,39,17,35,17,51,17,54,51,50,30,2,21,20,14,2,39,20,22,51,50,54,53,52,38,35,34,6,1,46,103,49,90,90,62,96,55,88,63,34,33,63,92,217,74,77,78,85,85,78,78,73,10,66,254,215,3,223,254,200,62,40,69,93,53,53,93,69,40,255,82,101,101,82,81,94,94,255,255,0,7,255,14,1,242,2,188,2,38,0,90,0,0,1,6,0,104,40,0,0,28,184,0,13,47,65,3,0,15,0,13,0,1,93,65,3,0,63,0,13,0,1,93,184,0,9,208,48,49,255,255,0,39,255,242,2,71,3,181,2,38,0,36,0,0,1,7,0,204,0,178,0,209,0,34,65,5,0,0,0,41,0,16,0,41,0,2,93,65,3,0,176,0,41,0,1,93,0,65,3,0,47,0,40,0,1,93,48,49,255,255,0,33,255,246,1,171,2,228,2,38,0,68,0,0,1,6,0,204,45,0,0,20,65,3,0,31,0,28,0,1,93,65,3,0,32,0,28,0,1,93,48,49,0,1,0,61,0,0,0,151,1,234,0,3,0,119,187,0,3,0,4,0,2,0,4,43,65,3,0,63,0,2,0,1,113,65,3,0,143,0,2,0,1,93,65,3,0,223,0,2,0,1,93,65,3,0,32,0,2,0,1,93,65,3,0,63,0,3,0,1,113,65,3,0,143,0,3,0,1,93,65,3,0,223,0,3,0,1,93,65,3,0,32,0,3,0,1,93,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,12,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,48,49,51,35,17,51,151,90,90,1,234,0,0,0,2,0,40,255,242,4,10,2,202,0,28,0,48,2,150,186,0,28,0,1,0,3,43,65,3,0,176,0,1,0,1,93,184,0,1,16,184,0,10,208,184,0,10,47,65,5,0,63,0,10,0,79,0,10,0,2,93,65,3,0,159,0,10,0,1,93,65,3,0,47,0,10,0,1,113,65,3,0,111,0,10,0,1,93,65,3,0,15,0,10,0,1,93,65,3,0,191,0,10,0,1,93,184,0,1,16,184,0,18,208,65,3,0,176,0,28,0,1,93,184,0,28,16,184,0,21,208,184,0,21,47,184,0,1,16,185,0,27,0,4,244,184,0,23,208,184,0,28,16,184,0,25,208,184,0,25,47,184,0,10,16,185,0,34,0,4,244,184,0,1,16,184,0,44,208,65,3,0,137,0,44,0,1,93,65,7,0,9,0,44,0,25,0,44,0,41,0,44,0,3,113,65,3,0,169,0,44,0,1,93,65,3,0,72,0,44,0,1,93,0,184,0,0,69,88,184,0,15,47,27,185,0,15,0,14,62,89,184,0,0,69,88,184,0,19,47,27,185,0,19,0,14,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,6,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,186,0,2,0,5,0,15,17,18,57,65,3,0,92,0,2,0,1,93,65,7,0,12,0,2,0,28,0,2,0,44,0,2,0,3,113,65,3,0,107,0,2,0,1,93,65,5,0,122,0,2,0,138,0,2,0,2,93,65,3,0,66,0,10,0,1,93,186,0,18,0,15,0,5,17,18,57,65,3,0,100,0,18,0,1,93,65,3,0,118,0,18,0,1,93,65,3,0,133,0,18,0,1,93,65,3,0,83,0,18,0,1,93,65,7,0,3,0,18,0,19,0,18,0,35,0,18,0,3,113,184,0,19,16,185,0,22,0,2,244,186,0,23,0,19,0,1,17,18,57,184,0,23,47,185,0,26,0,2,244,184,0,1,16,185,0,27,0,2,244,184,0,15,16,185,0,29,0,2,244,184,0,5,16,185,0,39,0,2,244,48,49,1,65,3,0,120,0,3,0,1,93,65,7,0,89,0,7,0,105,0,7,0,121,0,7,0,3,93,65,3,0,90,0,8,0,1,93,65,3,0,89,0,12,0,1,93,65,3,0,121,0,12,0,1,93,65,3,0,104,0,13,0,1,93,65,3,0,89,0,13,0,1,93,65,3,0,120,0,17,0,1,93,0,65,5,0,89,0,3,0,105,0,3,0,2,93,65,3,0,122,0,3,0,1,93,65,5,0,104,0,7,0,120,0,7,0,2,93,65,3,0,89,0,7,0,1,93,65,3,0,88,0,8,0,1,93,65,3,0,86,0,12,0,1,93,65,3,0,118,0,12,0,1,93,65,5,0,86,0,13,0,102,0,13,0,2,93,65,3,0,84,0,17,0,1,93,65,5,0,102,0,17,0,118,0,17,0,2,93,65,3,0,114,0,18,0,1,93,41,1,53,14,1,35,34,46,2,53,52,62,2,51,50,22,23,53,33,21,33,21,51,21,35,21,33,1,34,14,2,21,20,30,2,51,50,62,2,53,52,46,2,4,10,254,102,69,115,62,75,124,90,49,50,90,124,74,62,115,69,1,145,254,202,238,238,1,63,253,112,58,89,60,31,30,60,89,59,58,89,60,30,31,60,89,83,53,44,52,96,134,82,82,135,95,52,44,53,82,85,205,86,237,2,30,41,74,102,61,60,102,74,42,42,74,102,60,61,102,74,41,0,3,0,32,255,246,3,104,1,244,0,43,0,49,0,61,3,73,186,0,42,0,22,0,3,43,65,9,0,63,0,22,0,79,0,22,0,95,0,22,0,111,0,22,0,4,93,65,3,0,207,0,22,0,1,93,65,5,0,96,0,42,0,112,0,42,0,2,93,65,3,0,240,0,42,0,1,93,65,7,0,16,0,42,0,32,0,42,0,48,0,42,0,3,113,65,7,0,144,0,42,0,160,0,42,0,176,0,42,0,3,93,65,3,0,64,0,42,0,1,93,65,5,0,0,0,42,0,16,0,42,0,2,93,186,0,59,0,22,0,42,17,18,57,184,0,59,47,185,0,1,0,4,244,184,0,42,16,184,0,9,208,184,0,9,47,186,0,14,0,1,0,59,17,18,57,186,0,32,0,59,0,1,17,18,57,184,0,1,16,184,0,46,208,184,0,42,16,185,0,47,0,4,244,184,0,22,16,185,0,53,0,4,244,65,3,0,64,0,63,0,1,93,65,3,0,96,0,63,0,1,93,65,3,0,240,0,63,0,1,93,0,184,0,0,69,88,184,0,27,47,27,185,0,27,0,12,62,89,184,0,0,69,88,184,0,37,47,27,185,0,37,0,12,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,6,62,89,184,0,0,69,88,184,0,11,47,27,185,0,11,0,6,62,89,186,0,1,0,37,0,11,17,18,57,184,0,1,47,65,5,0,16,0,1,0,32,0,1,0,2,93,65,5,0,144,0,1,0,160,0,1,0,2,93,184,0,11,16,185,0,6,0,1,244,184,0,11,16,184,0,8,220,186,0,14,0,11,0,37,17,18,57,186,0,32,0,37,0,11,17,18,57,184,0,37,16,185,0,44,0,2,244,184,0,1,16,184,0,46,220,65,15,0,159,0,46,0,175,0,46,0,191,0,46,0,207,0,46,0,223,0,46,0,239,0,46,0,255,0,46,0,7,93,184,0,27,16,185,0,50,0,2,244,184,0,17,16,185,0,56,0,2,244,48,49,1,65,3,0,54,0,3,0,1,93,65,3,0,71,0,3,0,1,93,65,3,0,89,0,13,0,1,93,65,3,0,106,0,13,0,1,93,65,3,0,123,0,13,0,1,93,65,3,0,84,0,15,0,1,93,65,3,0,102,0,15,0,1,93,65,3,0,105,0,19,0,1,93,65,3,0,90,0,19,0,1,93,65,3,0,105,0,25,0,1,93,65,3,0,90,0,25,0,1,93,65,3,0,85,0,30,0,1,93,65,3,0,102,0,30,0,1,93,65,3,0,104,0,34,0,1,93,65,3,0,121,0,34,0,1,93,65,3,0,118,0,39,0,1,93,65,3,0,135,0,39,0,1,93,65,3,0,118,0,40,0,1,93,65,3,0,135,0,40,0,1,93,65,3,0,105,0,45,0,1,93,0,65,5,0,55,0,3,0,71,0,3,0,2,93,65,9,0,91,0,9,0,107,0,9,0,123,0,9,0,139,0,9,0,4,93,65,5,0,104,0,13,0,120,0,13,0,2,93,65,3,0,89,0,13,0,1,93,65,5,0,90,0,14,0,106,0,14,0,2,93,65,3,0,104,0,15,0,1,93,65,3,0,89,0,15,0,1,93,65,5,0,89,0,19,0,105,0,19,0,2,93,65,3,0,85,0,25,0,1,93,65,3,0,102,0,25,0,1,93,65,3,0,85,0,30,0,1,93,65,3,0,102,0,30,0,1,93,65,3,0,101,0,32,0,1,93,65,5,0,118,0,32,0,134,0,32,0,2,93,65,3,0,100,0,34,0,1,93,65,3,0,118,0,34,0,1,93,65,5,0,118,0,39,0,134,0,39,0,2,93,65,3,0,118,0,40,0,1,93,65,3,0,135,0,40,0,1,93,65,3,0,102,0,45,0,1,93,37,33,20,30,2,51,50,55,23,6,35,34,38,39,14,1,35,34,46,2,53,52,62,2,51,50,30,2,23,62,3,51,50,30,2,21,20,39,34,7,51,46,1,33,34,6,21,20,22,51,50,54,53,52,38,3,100,254,169,32,48,55,23,84,71,10,72,81,93,102,23,22,110,67,57,91,64,34,35,65,93,57,28,59,53,40,11,13,42,49,55,27,48,79,55,31,214,107,24,253,4,64,254,82,78,80,79,78,75,77,79,245,57,71,41,14,37,77,32,53,54,51,56,40,70,95,55,54,92,66,38,13,26,38,25,24,38,26,14,28,53,75,48,31,155,113,54,59,91,84,85,90,99,79,78,94,0,255,255,0,40,255,242,2,41,3,181,2,38,0,52,0,0,1,7,0,204,0,69,0,209,0,38,65,3,0,79,0,60,0,1,93,65,7,0,0,0,60,0,16,0,60,0,32,0,60,0,3,93,0,65,3,0,47,0,59,0,1,93,48,49,255,255,0,32,255,246,1,131,2,228,2,38,0,84,0,0,1,6,0,204,232,0,0,29,65,3,0,79,0,42,0,1,93,65,3,0,63,0,43,0,1,93,65,3,0,0,0,43,0,1,93,48,49,0,0,0,255,255,255,253,0,0,2,57,3,141,2,38,0,58,0,0,1,7,0,104,0,85,0,209,0,68,184,0,14,47,65,5,0,16,0,14,0,32,0,14,0,2,93,65,3,0,80,0,14,0,1,113,65,3,0,144,0,14,0,1,93,184,0,10,208,0,184,0,13,47,65,3,0,47,0,13,0,1,93,65,3,0,175,0,13,0,1,93,184,0,10,208,48,49,0,0,255,255,0,9,0,0,2,30,3,181,2,38,0,59,0,0,1,7,0,204,0,60,0,209,0,34,65,5,0,0,0,10,0,16,0,10,0,2,93,65,3,0,32,0,10,0,1,113,0,65,3,0,47,0,9,0,1,93,48,49,255,255,0,22,0,0,1,190,2,228,2,38,0,91,0,0,1,6,0,204,14,0,0,33,65,5,0,111,0,10,0,127,0,10,0,2,93,65,3,0,223,0,10,0,1,93,65,3,0,0,0,10,0,1,93,48,49,0,0,0,0,1,255,222,255,15,1,115,2,202,0,32,1,43,187,0,11,0,5,0,22,0,4,43,184,0,22,16,184,0,25,208,184,0,0,208,184,0,0,47,184,0,11,16,184,0,8,208,184,0,9,208,184,0,9,47,184,0,11,16,184,0,12,208,184,0,19,208,184,0,19,47,184,0,22,16,184,0,21,208,184,0,25,16,184,0,24,208,184,0,24,47,0,184,0,0,69,88,184,0,31,47,27,185,0,31,0,14,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,12,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,8,62,89,184,0,31,16,185,0,3,0,3,244,184,0,8,16,185,0,11,0,3,244,184,0,17,16,185,0,19,0,3,244,184,0,11,16,184,0,22,208,184,0,8,16,184,0,25,208,48,49,1,65,3,0,133,0,6,0,1,93,65,7,0,38,0,6,0,54,0,6,0,70,0,6,0,3,93,65,3,0,102,0,6,0,1,93,65,5,0,119,0,15,0,135,0,15,0,2,93,65,3,0,89,0,28,0,1,93,65,3,0,122,0,28,0,1,93,0,65,3,0,135,0,6,0,1,93,65,5,0,57,0,6,0,73,0,6,0,2,93,65,5,0,121,0,15,0,137,0,15,0,2,93,65,3,0,116,0,28,0,1,93,65,3,0,87,0,28,0,1,93,1,7,38,35,34,14,2,7,51,7,35,3,14,3,43,1,39,54,55,19,35,55,51,55,62,3,51,50,1,115,7,13,19,30,43,30,20,8,148,6,153,86,6,27,32,34,13,13,13,57,14,80,94,7,96,9,6,33,49,61,35,17,2,191,55,8,16,39,64,47,56,253,242,40,56,36,17,63,12,89,1,255,56,61,39,60,42,22,0,0,0,0,1,255,244,255,14,0,151,1,234,0,14,0,163,187,0,9,0,4,0,8,0,4,43,65,3,0,63,0,8,0,1,113,65,3,0,143,0,8,0,1,93,65,3,0,223,0,8,0,1,93,65,3,0,32,0,8,0,1,93,184,0,8,16,184,0,2,208,184,0,2,47,65,3,0,143,0,9,0,1,93,65,3,0,223,0,9,0,1,93,65,3,0,63,0,9,0,1,113,65,3,0,32,0,9,0,1,93,0,184,0,0,69,88,184,0,9,47,27,185,0,9,0,12,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,8,62,89,185,0,2,0,1,244,48,49,1,65,11,0,5,0,12,0,21,0,12,0,37,0,12,0,53,0,12,0,69,0,12,0,5,93,23,7,39,62,3,53,17,51,17,20,14,2,28,30,10,22,28,16,7,90,20,33,45,237,5,69,2,10,21,37,30,2,51,253,171,32,45,31,18,0,1,0,76,2,91,1,114,2,233,0,5,0,130,25,184,0,4,47,24,65,3,0,0,0,4,0,1,93,184,0,1,208,184,0,4,16,184,0,3,208,184,0,3,47,184,0,4,16,184,0,5,208,184,0,5,47,0,184,0,2,47,65,3,0,64,0,2,0,1,93,65,3,0,32,0,2,0,1,93,184,0,0,208,184,0,2,16,184,0,4,220,65,5,0,15,0,4,0,31,0,4,0,2,93,65,9,0,95,0,4,0,111,0,4,0,127,0,4,0,143,0,4,0,4,93,184,0,1,220,184,0,2,16,184,0,3,220,184,0,5,208,48,49,1,39,7,53,55,23,1,114,147,147,147,147,2,91,82,82,36,106,106,0,0,1,0,76,2,88,1,114,2,228,0,5,0,130,25,184,0,1,47,24,184,0,0,208,184,0,0,47,184,0,1,16,184,0,2,208,184,0,2,47,184,0,1,16,184,0,4,208,0,184,0,1,47,65,3,0,64,0,1,0,1,93,65,3,0,32,0,1,0,1,93,184,0,3,220,65,9,0,95,0,3,0,111,0,3,0,127,0,3,0,143,0,3,0,4,93,65,5,0,15,0,3,0,31,0,3,0,2,93,184,0,2,220,184,0,0,208,184,0,1,16,184,0,4,220,65,3,0,240,0,4,0,1,93,184,0,3,16,184,0,5,208,48,49,1,7,39,53,23,55,1,114,147,147,147,147,2,187,99,99,41,76,76,0,0,2,0,42,2,64,0,249,2,243,0,14,0,26,1,101,184,0,3,47,184,0,11,220,65,3,0,32,0,11,0,1,113,65,3,0,208,0,11,0,1,93,184,0,3,16,184,0,15,220,184,0,11,16,184,0,21,220,0,184,0,14,47,65,3,0,95,0,14,0,1,113,65,3,0,239,0,14,0,1,93,65,3,0,207,0,14,0,1,93,65,3,0,128,0,14,0,1,93,65,3,0,96,0,14,0,1,93,184,0,6,220,65,3,0,15,0,6,0,1,113,65,7,0,143,0,6,0,159,0,6,0,175,0,6,0,3,93,65,3,0,79,0,6,0,1,93,184,0,14,16,184,0,18,220,184,0,6,16,184,0,24,220,48,49,1,65,9,0,74,0,2,0,90,0,2,0,106,0,2,0,122,0,2,0,4,93,65,9,0,73,0,4,0,89,0,4,0,105,0,4,0,121,0,4,0,4,93,65,9,0,70,0,9,0,86,0,9,0,102,0,9,0,118,0,9,0,4,93,65,9,0,70,0,12,0,86,0,12,0,102,0,12,0,118,0,12,0,4,93,0,65,9,0,73,0,1,0,89,0,1,0,105,0,1,0,121,0,1,0,4,93,65,9,0,70,0,5,0,86,0,5,0,102,0,5,0,118,0,5,0,4,93,65,9,0,70,0,8,0,86,0,8,0,102,0,8,0,118,0,8,0,4,93,65,9,0,72,0,12,0,88,0,12,0,104,0,12,0,120,0,12,0,4,93,65,9,0,73,0,13,0,89,0,13,0,105,0,13,0,121,0,13,0,4,93,65,7,0,53,0,16,0,69,0,16,0,85,0,16,0,3,113,19,34,38,53,52,54,51,50,30,2,21,20,6,35,39,20,22,51,50,54,53,52,38,35,34,6,146,49,55,58,52,24,37,24,12,48,48,67,36,24,24,36,35,25,25,35,2,64,52,37,39,51,15,26,32,17,34,55,89,27,33,33,27,26,33,33,0,0,1,0,92,2,87,1,182,2,190,0,23,1,42,184,0,8,47,65,3,0,0,0,8,0,1,93,184,0,7,220,184,0,8,16,184,0,21,220,184,0,20,220,0,184,0,0,47,65,3,0,64,0,0,0,1,93,65,3,0,32,0,0,0,1,93,184,0,13,220,65,9,0,47,0,13,0,63,0,13,0,79,0,13,0,95,0,13,0,4,93,184,0,5,220,65,5,0,48,0,5,0,64,0,5,0,2,113,184,0,0,16,184,0,7,208,184,0,7,47,184,0,0,16,184,0,18,220,65,3,0,63,0,18,0,1,113,184,0,13,16,184,0,20,208,184,0,20,47,48,49,1,65,7,0,6,0,6,0,22,0,6,0,38,0,6,0,3,113,65,5,0,40,0,10,0,56,0,10,0,2,93,65,5,0,40,0,11,0,56,0,11,0,2,93,65,7,0,11,0,19,0,27,0,19,0,43,0,19,0,3,113,65,5,0,37,0,22,0,53,0,22,0,2,93,0,65,7,0,9,0,6,0,25,0,6,0,41,0,6,0,3,113,65,5,0,37,0,10,0,53,0,10,0,2,93,65,5,0,38,0,11,0,54,0,11,0,2,93,65,7,0,7,0,19,0,23,0,19,0,39,0,19,0,3,113,65,5,0,40,0,22,0,56,0,22,0,2,93,65,5,0,41,0,23,0,57,0,23,0,2,93,1,34,46,2,35,34,7,39,62,3,51,50,30,2,51,50,55,23,14,1,1,75,12,36,41,32,11,53,18,36,6,20,30,32,15,13,36,46,35,10,42,27,34,11,58,2,87,16,19,16,49,9,22,34,23,11,15,19,15,51,9,43,51,0,0,1,0,57,0,238,1,189,1,68,0,3,0,19,184,0,1,47,184,0,0,220,0,184,0,1,47,184,0,2,220,48,49,37,33,53,33,1,189,254,124,1,132,238,86,0,0,0,0,1,0,57,0,238,2,25,1,68,0,3,0,28,184,0,1,47,65,3,0,0,0,1,0,1,93,184,0,0,220,0,184,0,1,47,184,0,2,220,48,49,37,33,53,33,2,25,254,32,1,224,238,86,0,0,0,1,0,43,2,43,0,144,2,238,0,6,0,58,184,0,0,47,184,0,4,220,184,0,2,208,186,0,3,0,0,0,4,17,18,57,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,18,62,89,184,0,4,220,184,0,0,208,184,0,4,16,184,0,5,220,48,49,19,55,23,7,23,21,35,43,78,23,35,34,100,2,129,109,13,87,9,86,0,1,0,42,2,43,0,143,2,238,0,6,0,58,184,0,0,47,184,0,4,220,184,0,2,208,186,0,3,0,4,0,0,17,18,57,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,18,62,89,184,0,4,220,184,0,0,208,184,0,4,16,184,0,1,220,48,49,19,7,39,55,39,53,51,143,78,23,35,34,100,2,152,109,13,87,9,86,0,1,0,57,255,147,0,158,0,86,0,6,0,62,184,0,0,47,184,0,4,220,184,0,2,208,186,0,3,0,4,0,0,17,18,57,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,0,208,184,0,4,16,184,0,1,220,184,0,4,16,184,0,5,220,48,49,51,7,39,55,39,53,51,158,78,23,35,34,100,109,13,87,9,86,0,0,0,2,0,43,2,43,1,98,2,238,0,6,0,13,0,116,184,0,6,47,184,0,5,220,184,0,2,208,186,0,3,0,6,0,5,17,18,57,184,0,6,16,184,0,13,220,184,0,12,220,184,0,9,208,186,0,10,0,13,0,12,17,18,57,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,18,62,89,184,0,4,220,184,0,0,208,184,0,4,16,184,0,5,220,184,0,4,16,184,0,7,208,184,0,1,16,184,0,8,208,184,0,7,16,184,0,11,208,184,0,5,16,184,0,13,208,48,49,19,55,23,7,23,21,35,63,1,23,7,23,21,35,43,78,23,35,34,100,210,78,23,35,34,100,2,129,109,13,87,9,86,86,109,13,87,9,86,0,0,2,0,42,2,43,1,97,2,238,0,6,0,13,0,118,184,0,6,47,184,0,5,220,184,0,2,208,186,0,3,0,5,0,6,17,18,57,184,0,6,16,184,0,13,220,184,0,12,220,184,0,9,208,186,0,10,0,12,0,13,17,18,57,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,18,62,89,184,0,11,220,184,0,4,208,184,0,0,208,184,0,11,16,184,0,8,220,184,0,1,208,184,0,12,16,184,0,5,208,184,0,11,16,184,0,7,208,48,49,1,65,3,0,89,0,1,0,1,93,1,7,39,55,39,53,51,15,1,39,55,39,53,51,1,97,78,23,35,34,100,210,78,23,35,34,100,2,152,109,13,87,9,86,86,109,13,87,9,86,0,0,0,2,0,57,255,147,1,132,0,86,0,6,0,13,0,138,184,0,7,47,65,3,0,80,0,7,0,1,113,184,0,0,220,65,5,0,79,0,0,0,95,0,0,0,2,113,184,0,4,220,184,0,2,208,186,0,3,0,4,0,0,17,18,57,184,0,7,16,184,0,11,220,184,0,9,208,186,0,10,0,11,0,7,17,18,57,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,0,208,184,0,4,16,184,0,1,220,184,0,4,16,184,0,5,220,184,0,4,16,184,0,11,208,184,0,7,208,184,0,1,16,184,0,8,208,184,0,5,16,184,0,12,208,48,49,51,7,39,55,39,53,51,23,7,39,55,39,53,51,158,78,23,35,34,100,230,78,23,35,34,100,109,13,87,9,86,86,109,13,87,9,86,0,0,1,0,35,0,0,1,133,2,95,0,13,0,196,184,0,10,47,65,3,0,16,0,10,0,1,93,184,0,11,220,65,9,0,80,0,11,0,96,0,11,0,112,0,11,0,128,0,11,0,4,93,186,0,12,0,11,0,10,17,18,57,184,0,12,16,184,0,1,208,184,0,11,16,184,0,2,208,184,0,10,16,184,0,5,208,186,0,9,0,10,0,11,17,18,57,184,0,9,16,184,0,6,208,184,0,10,16,184,0,8,220,184,0,11,16,184,0,13,220,0,184,0,10,47,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,186,0,8,0,10,0,4,17,18,57,184,0,8,47,184,0,7,220,184,0,0,208,186,0,6,0,7,0,8,17,18,57,184,0,6,16,184,0,1,208,186,0,9,0,8,0,7,17,18,57,184,0,9,16,184,0,12,208,184,0,8,16,184,0,13,208,48,49,1,39,23,7,35,39,55,7,53,23,39,51,7,55,1,133,158,41,31,58,31,41,158,156,34,110,34,156,1,117,30,151,252,252,151,30,85,31,180,180,31,0,0,1,0,53,255,197,1,151,2,95,0,21,1,61,184,0,13,47,65,3,0,0,0,13,0,1,93,184,0,14,220,65,9,0,80,0,14,0,96,0,14,0,112,0,14,0,128,0,14,0,4,93,186,0,15,0,14,0,13,17,18,57,184,0,15,16,184,0,1,208,184,0,14,16,184,0,2,208,184,0,13,16,184,0,3,208,186,0,12,0,13,0,14,17,18,57,184,0,12,16,184,0,4,208,184,0,13,16,184,0,11,220,184,0,6,208,184,0,4,16,184,0,7,208,184,0,13,16,184,0,8,208,184,0,12,16,184,0,9,208,184,0,14,16,184,0,16,220,184,0,15,16,184,0,18,208,184,0,14,16,184,0,19,208,184,0,1,16,184,0,20,208,184,0,16,16,184,0,21,208,0,184,0,14,47,184,0,3,47,186,0,0,0,3,0,14,17,18,57,184,0,0,47,184,0,21,220,186,0,1,0,0,0,21,17,18,57,184,0,1,16,184,0,4,208,184,0,0,16,184,0,5,208,184,0,21,16,184,0,6,208,186,0,20,0,21,0,0,17,18,57,184,0,20,16,184,0,7,208,186,0,16,0,14,0,3,17,18,57,184,0,16,47,184,0,17,220,186,0,18,0,17,0,16,17,18,57,184,0,18,16,184,0,9,208,184,0,17,16,184,0,10,208,184,0,16,16,184,0,11,208,186,0,15,0,16,0,17,17,18,57,184,0,15,16,184,0,12,208,48,49,37,39,23,35,55,7,53,23,39,55,7,53,23,39,51,7,55,21,39,23,7,55,1,151,156,34,110,34,156,160,43,43,160,156,34,110,34,156,160,43,43,160,88,30,177,177,30,84,30,132,133,30,84,30,176,176,30,84,30,133,132,30,0,0,0,0,1,0,44,0,169,1,6,1,131,0,20,0,19,184,0,8,47,184,0,18,220,0,184,0,3,47,184,0,13,220,48,49,55,14,1,35,34,46,2,53,52,62,2,51,50,30,2,21,20,6,230,17,39,21,22,39,30,18,18,30,39,22,22,39,30,18,16,201,17,15,18,30,39,22,22,39,30,18,18,30,39,22,21,40,0,0,0,0,3,0,57,0,0,2,107,0,86,0,3,0,7,0,11,0,121,184,0,1,47,65,3,0,0,0,1,0,1,93,65,3,0,32,0,1,0,1,93,185,0,0,0,4,244,184,0,1,16,184,0,5,220,185,0,4,0,4,244,184,0,5,16,184,0,9,220,185,0,8,0,4,244,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,184,0,2,220,65,3,0,63,0,2,0,1,113,184,0,1,16,184,0,5,208,184,0,2,16,184,0,6,208,184,0,5,16,184,0,9,208,184,0,6,16,184,0,10,208,48,49,51,35,53,51,23,35,53,51,23,35,53,51,147,90,90,236,90,90,236,90,90,86,86,86,86,86,0,0,0,0,7,0,36,255,242,4,141,2,193,0,3,0,21,0,37,0,55,0,71,0,89,0,105,3,55,184,0,7,47,184,0,41,47,65,7,0,0,0,41,0,16,0,41,0,32,0,41,0,3,93,184,0,51,220,186,0,1,0,7,0,51,17,18,57,184,0,1,47,184,0,0,220,184,0,1,16,184,0,3,220,184,0,2,220,184,0,7,16,184,0,17,220,184,0,7,16,184,0,27,220,65,3,0,31,0,27,0,1,113,184,0,17,16,184,0,33,220,65,3,0,16,0,33,0,1,113,184,0,41,16,184,0,61,220,65,3,0,31,0,61,0,1,113,184,0,51,16,184,0,67,220,65,3,0,16,0,67,0,1,113,184,0,41,16,184,0,75,220,184,0,85,220,184,0,75,16,184,0,95,220,65,3,0,31,0,95,0,1,113,184,0,85,16,184,0,101,220,65,3,0,16,0,101,0,1,113,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,14,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,14,62,89,184,0,0,69,88,184,0,38,47,27,185,0,38,0,6,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,12,16,184,0,4,220,184,0,12,16,184,0,22,220,184,0,4,16,184,0,30,220,184,0,38,16,184,0,46,220,184,0,56,220,184,0,38,16,184,0,64,220,184,0,38,16,184,0,72,208,184,0,46,16,184,0,80,208,184,0,56,16,184,0,90,208,184,0,64,16,184,0,98,208,48,49,1,65,3,0,87,0,0,0,1,93,65,3,0,202,0,5,0,1,93,65,7,0,10,0,6,0,26,0,6,0,42,0,6,0,3,93,65,7,0,10,0,9,0,26,0,9,0,42,0,9,0,3,93,65,3,0,202,0,10,0,1,93,65,3,0,198,0,14,0,1,93,65,7,0,6,0,15,0,22,0,15,0,38,0,15,0,3,93,65,7,0,5,0,19,0,21,0,19,0,37,0,19,0,3,93,65,3,0,198,0,20,0,1,93,65,5,0,118,0,24,0,134,0,24,0,2,93,65,7,0,10,0,40,0,26,0,40,0,42,0,40,0,3,93,65,7,0,9,0,43,0,25,0,43,0,41,0,43,0,3,93,65,3,0,201,0,44,0,1,93,65,3,0,197,0,48,0,1,93,65,7,0,5,0,49,0,21,0,49,0,37,0,49,0,3,93,65,7,0,5,0,53,0,21,0,53,0,37,0,53,0,3,93,65,3,0,198,0,54,0,1,93,65,5,0,118,0,58,0,134,0,58,0,2,93,65,3,0,200,0,73,0,1,93,65,7,0,10,0,74,0,26,0,74,0,42,0,74,0,3,93,65,7,0,10,0,77,0,26,0,77,0,42,0,77,0,3,93,65,3,0,201,0,78,0,1,93,65,3,0,197,0,82,0,1,93,65,7,0,5,0,83,0,21,0,83,0,37,0,83,0,3,93,65,7,0,5,0,87,0,21,0,87,0,37,0,87,0,3,93,65,3,0,198,0,88,0,1,93,65,5,0,118,0,92,0,134,0,92,0,2,93,0,65,3,0,202,0,5,0,1,93,65,7,0,5,0,9,0,21,0,9,0,37,0,9,0,3,93,65,3,0,197,0,10,0,1,93,65,3,0,198,0,14,0,1,93,65,7,0,7,0,15,0,23,0,15,0,39,0,15,0,3,93,65,3,0,200,0,20,0,1,93,65,3,0,202,0,39,0,1,93,65,3,0,198,0,44,0,1,93,65,3,0,198,0,48,0,1,93,65,3,0,203,0,54,0,1,93,65,3,0,201,0,73,0,1,93,65,3,0,199,0,78,0,1,93,65,3,0,198,0,82,0,1,93,65,3,0,202,0,88,0,1,93,23,35,1,51,1,34,38,53,52,62,2,51,50,30,2,21,20,14,2,3,34,14,2,21,20,22,51,50,54,53,52,46,2,1,34,38,53,52,62,2,51,50,30,2,21,20,14,2,3,34,14,2,21,20,22,51,50,54,53,52,46,2,1,34,38,53,52,62,2,51,50,30,2,21,20,14,2,3,34,14,2,21,20,22,51,50,54,53,52,46,2,238,75,1,165,74,254,36,64,82,24,42,55,30,31,53,39,23,23,40,55,29,19,34,26,15,54,37,40,54,14,26,33,1,195,64,82,24,42,55,30,31,53,39,23,23,40,55,29,19,34,26,15,54,37,40,54,14,26,33,1,81,64,82,24,42,55,30,31,53,39,23,23,40,55,29,19,34,26,15,54,37,40,54,14,26,33,12,2,200,254,145,94,88,46,71,48,25,24,46,67,44,46,71,49,25,1,64,19,36,52,31,60,70,75,64,29,48,34,18,253,101,94,88,46,71,48,25,24,46,67,44,46,71,49,25,1,64,19,36,52,31,60,70,75,64,29,48,34,18,254,192,94,88,46,71,48,25,24,46,67,44,46,71,49,25,1,64,19,36,52,31,60,70,75,64,29,48,34,18,0,0,1,0,14,0,78,1,26,1,234,0,5,0,219,184,0,2,47,65,9,0,95,0,2,0,111,0,2,0,127,0,2,0,143,0,2,0,4,93,65,3,0,255,0,2,0,1,93,184,0,4,220,65,3,0,128,0,4,0,1,93,65,3,0,80,0,4,0,1,93,184,0,0,208,184,0,4,16,184,0,3,220,65,9,0,95,0,3,0,111,0,3,0,127,0,3,0,143,0,3,0,4,93,65,5,0,239,0,3,0,255,0,3,0,2,93,65,7,0,15,0,3,0,31,0,3,0,47,0,3,0,3,113,184,0,1,208,184,0,2,16,184,0,5,220,65,9,0,80,0,5,0,96,0,5,0,112,0,5,0,128,0,5,0,4,93,65,5,0,224,0,5,0,240,0,5,0,2,93,65,7,0,0,0,5,0,16,0,5,0,32,0,5,0,3,113,0,25,184,0,2,47,24,184,0,1,208,184,0,1,47,184,0,2,16,184,0,3,208,184,0,3,47,184,0,2,16,184,0,5,208,48,49,37,35,39,55,51,7,1,26,109,159,159,109,159,78,206,206,206,0,0,0,1,0,41,0,78,1,53,1,234,0,5,0,207,184,0,0,47,65,3,0,0,0,0,0,1,93,65,3,0,160,0,0,0,1,93,184,0,4,220,65,3,0,143,0,4,0,1,93,65,3,0,95,0,4,0,1,93,184,0,5,220,65,9,0,80,0,5,0,96,0,5,0,112,0,5,0,128,0,5,0,4,93,65,5,0,224,0,5,0,240,0,5,0,2,93,65,7,0,0,0,5,0,16,0,5,0,32,0,5,0,3,113,184,0,1,208,184,0,4,16,184,0,2,208,184,0,0,16,184,0,3,220,65,9,0,95,0,3,0,111,0,3,0,127,0,3,0,143,0,3,0,4,93,65,5,0,239,0,3,0,255,0,3,0,2,93,65,7,0,15,0,3,0,31,0,3,0,47,0,3,0,3,113,0,25,184,0,0,47,24,184,0,1,208,184,0,1,47,184,0,0,16,184,0,3,208,184,0,0,16,184,0,5,208,184,0,5,47,48,49,1,7,35,55,39,51,1,53,159,109,159,159,109,1,28,206,206,206,0,0,2,0,33,1,56,1,118,2,194,0,19,0,31,2,137,186,0,15,0,5,0,3,43,65,3,0,223,0,5,0,1,93,65,3,0,143,0,5,0,1,93,65,3,0,16,0,5,0,1,93,65,3,0,64,0,5,0,1,93,65,3,0,176,0,15,0,1,93,65,3,0,0,0,15,0,1,113,65,3,0,48,0,15,0,1,113,65,3,0,224,0,15,0,1,93,65,3,0,64,0,15,0,1,93,65,5,0,16,0,15,0,32,0,15,0,2,93,184,0,5,16,185,0,20,0,5,244,184,0,15,16,185,0,26,0,5,244,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,10,62,89,65,3,0,135,0,5,0,1,93,185,0,23,0,1,244,184,0,10,16,185,0,29,0,1,244,48,49,1,65,3,0,152,0,1,0,1,93,65,3,0,184,0,2,0,1,93,65,3,0,169,0,2,0,1,93,65,3,0,24,0,3,0,1,93,65,3,0,9,0,3,0,1,93,65,3,0,41,0,3,0,1,93,65,5,0,74,0,3,0,90,0,3,0,2,113,65,5,0,73,0,7,0,89,0,7,0,2,113,65,3,0,10,0,7,0,1,93,65,5,0,166,0,12,0,182,0,12,0,2,93,65,3,0,39,0,12,0,1,93,65,3,0,151,0,12,0,1,93,65,5,0,68,0,13,0,84,0,13,0,2,113,65,5,0,6,0,13,0,22,0,13,0,2,93,65,3,0,6,0,18,0,1,93,65,3,0,182,0,18,0,1,93,65,5,0,23,0,18,0,39,0,18,0,2,93,65,5,0,151,0,18,0,167,0,18,0,2,93,65,3,0,217,0,21,0,1,93,65,3,0,234,0,21,0,1,93,65,5,0,75,0,21,0,91,0,21,0,2,113,65,3,0,138,0,24,0,1,93,65,3,0,138,0,28,0,1,93,65,3,0,132,0,30,0,1,93,65,5,0,71,0,30,0,87,0,30,0,2,113,0,65,3,0,153,0,1,0,1,93,65,3,0,168,0,2,0,1,93,65,3,0,186,0,2,0,1,93,65,5,0,71,0,3,0,87,0,3,0,2,113,65,7,0,8,0,3,0,24,0,3,0,40,0,3,0,3,93,65,3,0,7,0,7,0,1,93,65,3,0,181,0,12,0,1,93,65,3,0,38,0,12,0,1,93,65,5,0,150,0,12,0,166,0,12,0,2,93,65,5,0,7,0,13,0,23,0,13,0,2,93,65,5,0,71,0,13,0,87,0,13,0,2,113,65,5,0,72,0,17,0,88,0,17,0,2,113,65,3,0,184,0,18,0,1,93,65,7,0,9,0,18,0,25,0,18,0,41,0,18,0,3,93,65,5,0,153,0,18,0,169,0,18,0,2,93,65,3,0,231,0,21,0,1,93,65,3,0,216,0,21,0,1,93,65,3,0,135,0,24,0,1,93,19,34,46,2,53,52,62,2,51,50,30,2,21,20,14,2,39,20,22,51,50,54,53,52,38,35,34,6,200,38,61,44,24,27,46,64,37,36,61,45,25,25,46,64,132,52,42,45,55,55,40,40,59,1,56,27,50,71,43,44,74,54,31,29,52,71,42,45,74,52,29,191,64,62,66,69,63,67,72,0,2,0,5,1,64,1,47,2,186,0,9,0,12,0,160,186,0,2,0,5,0,3,43,65,3,0,159,0,2,0,1,93,65,3,0,16,0,2,0,1,93,184,0,2,16,185,0,3,0,5,244,184,0,10,208,184,0,2,16,184,0,8,208,186,0,6,0,10,0,8,17,18,57,184,0,9,208,184,0,9,47,184,0,5,16,184,0,12,208,65,3,0,70,0,12,0,1,93,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,14,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,10,62,89,186,0,1,0,6,0,2,17,18,57,184,0,1,47,184,0,4,208,184,0,1,16,185,0,8,0,3,244,184,0,10,208,184,0,6,16,184,0,11,208,48,49,1,35,21,35,53,35,19,51,21,51,35,53,7,1,47,49,74,175,187,62,49,123,74,1,167,103,103,1,19,218,110,110,0,1,0,24,1,57,1,22,2,186,0,24,1,71,186,0,20,0,4,0,3,43,65,5,0,111,0,4,0,127,0,4,0,2,93,65,5,0,159,0,4,0,175,0,4,0,2,93,65,3,0,80,0,20,0,1,113,65,3,0,127,0,20,0,1,93,65,5,0,16,0,20,0,32,0,20,0,2,93,65,3,0,32,0,20,0,1,113,65,3,0,80,0,20,0,1,93,184,0,20,16,185,0,9,0,5,244,186,0,12,0,4,0,20,17,18,57,184,0,12,47,184,0,11,208,184,0,12,16,184,0,13,208,186,0,14,0,4,0,20,17,18,57,184,0,14,47,184,0,11,16,184,0,16,208,186,0,17,0,16,0,11,17,18,57,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,10,62,89,184,0,5,220,65,5,0,112,0,5,0,128,0,5,0,2,93,184,0,0,16,185,0,7,0,1,244,186,0,17,0,14,0,0,17,18,57,184,0,17,47,185,0,11,0,3,244,184,0,14,16,185,0,15,0,1,244,48,49,1,65,5,0,52,0,19,0,68,0,19,0,2,93,65,5,0,86,0,19,0,102,0,19,0,2,93,65,3,0,68,0,22,0,1,93,65,3,0,52,0,23,0,1,93,65,3,0,22,0,23,0,1,93,65,3,0,39,0,23,0,1,93,0,65,3,0,41,0,23,0,1,93,65,3,0,26,0,23,0,1,93,19,34,46,1,39,55,22,51,50,53,52,43,1,55,51,7,35,7,30,1,21,20,14,2,130,17,36,31,22,17,35,52,78,99,62,25,187,8,123,10,85,77,24,41,53,1,57,7,10,15,65,29,61,55,201,70,71,1,54,58,32,48,34,17,0,0,0,0,2,0,32,1,56,1,44,2,186,0,23,0,35,1,231,186,0,19,0,3,0,3,43,65,3,0,207,0,3,0,1,93,65,3,0,111,0,3,0,1,93,65,5,0,143,0,3,0,159,0,3,0,2,93,65,3,0,64,0,3,0,1,93,65,3,0,64,0,19,0,1,93,65,3,0,207,0,19,0,1,93,65,3,0,111,0,19,0,1,93,65,3,0,159,0,19,0,1,93,65,3,0,16,0,19,0,1,93,65,5,0,48,0,19,0,64,0,19,0,2,113,65,3,0,0,0,19,0,1,113,186,0,9,0,19,0,3,17,18,57,184,0,9,47,184,0,3,16,185,0,27,0,5,244,184,0,14,208,65,7,0,39,0,14,0,55,0,14,0,71,0,14,0,3,93,184,0,19,16,185,0,33,0,5,244,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,10,62,89,184,0,8,16,185,0,11,0,3,244,184,0,0,16,184,0,16,220,65,3,0,95,0,16,0,1,93,65,3,0,47,0,16,0,1,113,186,0,14,0,16,0,0,17,18,57,185,0,24,0,3,244,184,0,0,16,185,0,30,0,1,244,48,49,1,65,7,0,42,0,2,0,58,0,2,0,74,0,2,0,3,93,65,3,0,104,0,6,0,1,93,65,3,0,136,0,6,0,1,93,65,3,0,89,0,6,0,1,93,65,3,0,121,0,6,0,1,93,65,5,0,87,0,17,0,103,0,17,0,2,93,65,7,0,37,0,18,0,53,0,18,0,69,0,18,0,3,93,65,3,0,118,0,18,0,1,93,65,3,0,135,0,18,0,1,93,65,7,0,37,0,21,0,53,0,21,0,69,0,21,0,3,93,0,65,3,0,116,0,6,0,1,93,65,3,0,101,0,6,0,1,93,65,3,0,87,0,6,0,1,93,65,3,0,135,0,6,0,1,93,65,3,0,86,0,7,0,1,93,65,7,0,37,0,17,0,53,0,17,0,69,0,17,0,3,93,65,3,0,102,0,17,0,1,93,65,3,0,87,0,17,0,1,93,65,3,0,118,0,18,0,1,93,65,3,0,135,0,18,0,1,93,19,34,38,53,52,62,2,51,23,34,14,2,7,54,51,50,22,21,20,14,2,39,34,6,21,20,22,51,50,54,53,52,38,158,57,69,36,53,61,24,49,16,49,45,32,3,18,50,54,68,21,37,53,16,31,38,39,23,29,36,30,1,56,71,75,48,87,66,39,28,29,43,49,21,19,55,54,26,45,35,20,177,30,29,24,29,37,26,19,30,0,0,0,0,1,0,23,1,64,1,34,2,186,0,5,0,150,186,0,0,0,5,0,3,43,65,3,0,175,0,0,0,1,93,65,5,0,10,0,0,0,26,0,0,0,2,93,65,3,0,118,0,0,0,1,93,184,0,0,16,184,0,1,208,184,0,0,16,184,0,3,208,65,3,0,138,0,3,0,1,93,65,5,0,105,0,3,0,121,0,3,0,2,93,65,5,0,73,0,3,0,89,0,3,0,2,113,184,0,2,208,65,3,0,175,0,5,0,1,93,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,14,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,10,62,89,184,0,5,16,185,0,4,0,1,244,48,49,1,3,35,19,35,53,1,34,170,77,139,159,2,186,254,134,1,52,70,0,0,3,0,31,1,56,1,59,2,194,0,22,0,30,0,42,2,97,186,0,18,0,3,0,3,43,65,5,0,127,0,3,0,143,0,3,0,2,93,65,3,0,191,0,3,0,1,93,65,3,0,48,0,3,0,1,93,65,3,0,80,0,18,0,1,113,65,5,0,0,0,18,0,16,0,18,0,2,93,65,3,0,192,0,18,0,1,93,65,3,0,48,0,18,0,1,93,186,0,7,0,3,0,18,17,18,57,184,0,7,47,186,0,13,0,18,0,3,17,18,57,184,0,13,47,186,0,5,0,7,0,13,17,18,57,65,3,0,25,0,5,0,1,113,65,7,0,40,0,5,0,56,0,5,0,72,0,5,0,3,93,186,0,15,0,13,0,7,17,18,57,184,0,7,16,185,0,25,0,5,244,184,0,13,16,185,0,29,0,5,244,184,0,3,16,185,0,34,0,5,244,184,0,18,16,185,0,40,0,5,244,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,14,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,10,62,89,186,0,27,0,10,0,0,17,18,57,184,0,27,47,65,5,0,223,0,27,0,239,0,27,0,2,93,65,3,0,31,0,27,0,1,93,185,0,31,0,3,244,186,0,5,0,27,0,31,17,18,57,186,0,15,0,27,0,31,17,18,57,184,0,10,16,185,0,23,0,3,244,184,0,0,16,185,0,37,0,3,244,48,49,1,65,3,0,104,0,1,0,1,93,65,3,0,89,0,2,0,1,93,65,7,0,42,0,2,0,58,0,2,0,74,0,2,0,3,93,65,7,0,41,0,8,0,57,0,8,0,73,0,8,0,3,93,65,5,0,105,0,8,0,121,0,8,0,2,93,65,3,0,90,0,8,0,1,93,65,3,0,103,0,9,0,1,93,65,7,0,40,0,9,0,56,0,9,0,72,0,9,0,3,93,65,3,0,103,0,11,0,1,93,65,3,0,116,0,12,0,1,93,65,9,0,37,0,12,0,53,0,12,0,69,0,12,0,85,0,12,0,4,93,65,7,0,39,0,21,0,55,0,21,0,71,0,21,0,3,93,0,65,7,0,42,0,1,0,58,0,1,0,74,0,1,0,3,93,65,7,0,106,0,1,0,122,0,1,0,138,0,1,0,3,93,65,3,0,100,0,9,0,1,93,65,3,0,133,0,9,0,1,93,65,7,0,38,0,9,0,54,0,9,0,70,0,9,0,3,93,65,3,0,118,0,9,0,1,93,65,7,0,37,0,11,0,53,0,11,0,69,0,11,0,3,93,65,3,0,101,0,11,0,1,93,65,3,0,133,0,11,0,1,93,65,3,0,87,0,12,0,1,93,65,7,0,41,0,21,0,57,0,21,0,73,0,21,0,3,93,19,34,38,53,52,55,38,53,52,54,51,50,22,21,20,7,30,1,21,20,14,2,3,34,21,20,23,54,53,52,7,14,1,21,20,22,51,50,54,53,52,38,167,67,69,63,40,57,64,63,55,50,32,40,19,37,56,30,54,51,55,50,30,43,36,32,34,38,38,1,56,62,46,60,44,28,58,42,54,49,39,54,36,13,52,32,23,43,33,20,1,82,47,41,12,13,42,45,151,4,39,30,27,30,32,27,29,36,0,0,2,0,22,1,64,1,35,2,194,0,23,0,34,1,99,186,0,3,0,19,0,3,43,65,3,0,16,0,3,0,1,93,65,3,0,111,0,3,0,1,93,65,3,0,159,0,3,0,1,93,65,3,0,64,0,3,0,1,113,65,3,0,64,0,3,0,1,93,65,3,0,15,0,19,0,1,113,65,3,0,63,0,19,0,1,113,65,5,0,143,0,19,0,159,0,19,0,2,93,65,3,0,111,0,19,0,1,93,186,0,9,0,19,0,3,17,18,57,184,0,9,47,184,0,3,16,185,0,27,0,5,244,184,0,14,208,184,0,19,16,185,0,32,0,5,244,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,14,62,89,184,0,0,69,88,184,0,8,47,27,185,0,8,0,10,62,89,185,0,11,0,3,244,184,0,0,16,184,0,16,220,65,3,0,80,0,16,0,1,93,65,3,0,32,0,16,0,1,113,186,0,14,0,0,0,16,17,18,57,185,0,24,0,3,244,184,0,0,16,185,0,29,0,1,244,48,49,1,65,7,0,41,0,18,0,57,0,18,0,73,0,18,0,3,93,65,9,0,90,0,18,0,106,0,18,0,122,0,18,0,138,0,18,0,4,93,65,7,0,41,0,22,0,57,0,22,0,73,0,22,0,3,93,0,65,7,0,36,0,1,0,52,0,1,0,68,0,1,0,3,93,65,9,0,90,0,7,0,106,0,7,0,122,0,7,0,138,0,7,0,4,93,65,7,0,42,0,17,0,58,0,17,0,74,0,17,0,3,93,65,7,0,37,0,22,0,53,0,22,0,69,0,22,0,3,93,19,50,22,21,20,14,2,35,39,50,62,2,55,6,35,34,38,53,52,62,2,23,50,54,53,52,35,34,6,21,20,22,164,57,70,31,53,62,29,47,16,49,46,33,2,19,52,55,67,21,38,52,18,31,38,61,30,34,27,2,194,72,73,47,87,67,40,28,25,40,51,26,19,55,52,27,46,35,20,177,29,29,54,36,24,22,30,0,0,255,255,0,45,255,249,1,130,1,131,1,7,0,222,0,12,254,193,0,24,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,23,208,48,49,255,255,0,38,0,1,0,170,1,123,1,7,0,120,0,15,254,193,0,20,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,48,49,255,255,0,38,0,1,1,30,1,131,1,7,0,113,0,13,254,193,0,20,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,48,49,255,255,0,32,255,249,1,34,1,131,1,7,0,114,0,13,254,193,0,20,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,48,49,255,255,0,18,0,1,1,60,1,123,1,7,0,223,0,13,254,193,0,24,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,6,62,89,184,0,10,208,48,49,255,255,0,35,255,250,1,33,1,123,1,7,0,224,0,11,254,193,0,20,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,48,49,255,255,0,45,255,249,1,57,1,123,1,7,0,225,0,13,254,193,0,24,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,30,208,48,49,255,255,0,42,0,1,1,53,1,123,1,7,0,226,0,19,254,193,0,20,0,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,48,49,255,255,0,44,255,249,1,72,1,131,1,7,0,227,0,13,254,193,0,32,0,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,27,208,184,0,0,16,184,0,37,208,48,49,255,255,0,32,0,1,1,45,1,131,1,7,0,228,0,10,254,193,0,24,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,6,62,89,184,0,24,208,48,49,0,1,0,33,0,17,2,134,2,171,0,41,2,76,186,0,17,0,6,0,3,43,65,5,0,127,0,6,0,143,0,6,0,2,93,65,3,0,95,0,6,0,1,113,65,3,0,0,0,6,0,1,93,184,0,6,16,184,0,0,208,184,0,6,16,184,0,1,208,184,0,1,47,184,0,6,16,184,0,8,208,184,0,8,47,65,3,0,112,0,8,0,1,93,184,0,6,16,184,0,10,208,65,3,0,0,0,17,0,1,93,184,0,6,16,184,0,26,220,65,3,0,208,0,26,0,1,93,65,11,0,64,0,26,0,80,0,26,0,96,0,26,0,112,0,26,0,128,0,26,0,5,93,184,0,22,208,186,0,23,0,26,0,17,17,18,57,184,0,23,47,186,0,30,0,17,0,26,17,18,57,184,0,30,47,184,0,26,16,184,0,32,208,65,3,0,7,0,32,0,1,93,65,5,0,22,0,32,0,38,0,32,0,2,93,65,7,0,69,0,32,0,85,0,32,0,101,0,32,0,3,93,65,3,0,56,0,34,0,1,113,184,0,17,16,184,0,37,208,0,184,0,15,47,184,0,39,47,186,0,23,0,15,0,39,17,18,57,184,0,23,47,65,3,0,175,0,23,0,1,93,65,3,0,31,0,23,0,1,93,65,7,0,223,0,23,0,239,0,23,0,255,0,23,0,3,93,65,3,0,47,0,23,0,1,113,184,0,30,220,65,3,0,95,0,30,0,1,113,185,0,31,0,1,244,184,0,0,208,184,0,30,16,184,0,3,208,184,0,23,16,185,0,24,0,1,244,184,0,7,208,184,0,23,16,184,0,10,208,184,0,15,16,184,0,18,220,65,5,0,47,0,18,0,63,0,18,0,2,113,184,0,15,16,184,0,20,220,65,5,0,127,0,20,0,143,0,20,0,2,93,65,5,0,47,0,20,0,63,0,20,0,2,113,184,0,39,16,184,0,34,220,65,5,0,32,0,34,0,48,0,34,0,2,113,65,5,0,112,0,34,0,128,0,34,0,2,93,184,0,39,16,184,0,36,220,65,5,0,32,0,36,0,48,0,36,0,2,113,48,49,1,65,3,0,105,0,12,0,1,93,65,3,0,90,0,12,0,1,93,0,65,5,0,117,0,12,0,133,0,12,0,2,93,65,5,0,86,0,12,0,102,0,12,0,2,93,65,11,0,53,0,16,0,69,0,16,0,85,0,16,0,101,0,16,0,117,0,16,0,5,93,65,11,0,53,0,17,0,69,0,17,0,85,0,17,0,101,0,17,0,117,0,17,0,5,93,65,11,0,59,0,37,0,75,0,37,0,91,0,37,0,107,0,37,0,123,0,37,0,5,93,55,35,55,51,46,1,61,1,35,55,51,62,3,51,50,23,7,38,35,34,7,33,7,35,21,20,22,23,51,7,35,22,51,50,55,23,6,35,34,38,174,141,24,99,2,2,89,22,76,14,57,80,101,57,104,72,12,91,73,146,46,1,2,24,244,3,2,243,24,198,59,117,73,91,12,72,104,102,156,215,69,19,33,14,19,69,57,91,63,34,34,98,38,151,69,19,17,33,16,69,104,38,98,34,104,0,0,2,0,31,1,81,2,156,2,188,0,12,0,20,1,63,184,0,17,47,184,0,4,220,184,0,10,220,65,3,0,16,0,10,0,1,93,65,3,0,32,0,10,0,1,113,186,0,7,0,4,0,10,17,18,57,184,0,7,16,184,0,1,208,184,0,4,16,184,0,3,220,65,3,0,63,0,3,0,1,113,184,0,2,208,184,0,4,16,184,0,5,208,186,0,6,0,2,0,5,17,18,57,184,0,10,16,184,0,11,220,184,0,12,208,184,0,10,16,184,0,9,208,65,3,0,56,0,9,0,1,93,186,0,8,0,12,0,9,17,18,57,184,0,17,16,184,0,16,220,65,5,0,63,0,16,0,79,0,16,0,2,113,184,0,14,220,184,0,17,16,184,0,19,220,0,184,0,0,69,88,184,0,20,47,27,185,0,20,0,14,62,89,184,0,5,208,184,0,20,16,184,0,17,220,184,0,4,208,186,0,1,0,5,0,4,17,18,57,184,0,1,47,184,0,5,16,184,0,2,208,65,3,0,85,0,2,0,1,93,65,3,0,67,0,2,0,1,93,184,0,1,16,184,0,7,208,65,3,0,77,0,7,0,1,93,65,3,0,92,0,7,0,1,93,184,0,5,16,184,0,8,208,184,0,4,16,184,0,11,208,184,0,2,16,184,0,12,208,184,0,20,16,184,0,19,220,65,5,0,48,0,19,0,64,0,19,0,2,113,184,0,15,208,48,49,65,3,0,107,0,7,0,1,93,1,35,39,3,35,19,51,23,55,51,19,35,3,37,7,35,17,35,17,35,53,1,233,6,92,33,52,47,29,105,104,29,48,54,31,254,219,6,100,51,102,1,187,163,254,243,1,107,179,179,254,149,1,12,95,50,254,199,1,57,50,0,3,0,74,0,0,1,242,2,48,0,17,0,25,0,33,1,115,186,0,13,0,1,0,3,43,65,3,0,16,0,1,0,1,93,65,3,0,176,0,1,0,1,93,65,3,0,64,0,13,0,1,93,65,5,0,0,0,13,0,16,0,13,0,2,93,65,3,0,0,0,13,0,1,113,65,3,0,224,0,13,0,1,93,186,0,8,0,13,0,1,17,18,57,184,0,8,47,184,0,1,16,185,0,28,0,4,244,184,0,20,208,186,0,10,0,20,0,8,17,18,57,65,5,0,4,0,10,0,20,0,10,0,2,93,184,0,8,16,185,0,23,0,4,244,184,0,13,16,185,0,32,0,4,244,65,3,0,79,0,35,0,1,113,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,16,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,186,0,20,0,3,0,0,17,18,57,184,0,20,47,185,0,27,0,2,244,186,0,10,0,20,0,27,17,18,57,184,0,3,16,185,0,18,0,2,244,184,0,0,16,185,0,29,0,2,244,48,49,1,65,3,0,4,0,6,0,1,93,65,7,0,22,0,6,0,38,0,6,0,54,0,6,0,3,93,65,3,0,71,0,6,0,1,93,65,7,0,89,0,10,0,105,0,10,0,121,0,10,0,3,93,65,3,0,135,0,11,0,1,93,65,3,0,5,0,15,0,1,93,65,3,0,133,0,15,0,1,93,0,65,3,0,70,0,6,0,1,93,65,9,0,7,0,6,0,23,0,6,0,39,0,6,0,55,0,6,0,4,93,65,3,0,133,0,11,0,1,93,65,3,0,8,0,15,0,1,93,65,3,0,138,0,15,0,1,93,33,35,17,51,50,30,2,21,20,7,30,1,21,20,14,2,3,35,21,51,50,53,52,38,7,35,21,51,50,54,53,52,1,34,216,146,57,85,56,28,49,54,47,36,59,75,75,86,103,85,52,16,120,95,70,69,2,48,12,32,55,43,80,39,19,63,52,49,64,37,15,1,224,148,74,44,30,224,175,36,49,90,0,0,1,0,39,255,245,1,245,2,59,0,29,1,180,186,0,12,0,5,0,3,43,65,3,0,15,0,5,0,1,93,65,3,0,47,0,5,0,1,93,65,3,0,128,0,5,0,1,93,65,3,0,128,0,12,0,1,93,65,3,0,192,0,12,0,1,93,65,3,0,0,0,12,0,1,113,65,3,0,224,0,12,0,1,93,65,3,0,160,0,12,0,1,93,65,3,0,48,0,12,0,1,93,65,3,0,16,0,12,0,1,93,184,0,5,16,185,0,20,0,4,244,184,0,12,16,184,0,28,208,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,16,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,10,16,184,0,13,220,65,3,0,95,0,13,0,1,113,184,0,10,16,185,0,15,0,2,244,184,0,0,16,185,0,25,0,2,244,184,0,0,16,184,0,27,220,65,3,0,80,0,27,0,1,113,48,49,1,65,3,0,137,0,2,0,1,93,65,3,0,56,0,8,0,1,93,65,3,0,136,0,8,0,1,93,65,11,0,71,0,11,0,87,0,11,0,103,0,11,0,119,0,11,0,135,0,11,0,5,93,65,5,0,23,0,11,0,39,0,11,0,2,113,0,65,3,0,56,0,2,0,1,93,65,3,0,138,0,2,0,1,93,65,3,0,131,0,8,0,1,93,65,3,0,54,0,8,0,1,93,65,5,0,17,0,11,0,33,0,11,0,2,113,65,11,0,70,0,11,0,86,0,11,0,102,0,11,0,118,0,11,0,134,0,11,0,5,93,65,11,0,70,0,12,0,86,0,12,0,102,0,12,0,118,0,12,0,134,0,12,0,5,93,65,11,0,73,0,28,0,89,0,28,0,105,0,28,0,121,0,28,0,137,0,28,0,5,93,65,11,0,74,0,29,0,90,0,29,0,106,0,29,0,122,0,29,0,138,0,29,0,5,93,65,5,0,27,0,29,0,43,0,29,0,2,113,5,34,46,2,53,52,62,2,51,50,23,7,38,35,34,14,2,21,20,30,2,51,50,55,23,6,1,79,65,109,78,44,44,78,109,65,97,69,10,91,65,47,72,49,26,26,49,73,47,64,91,10,73,11,42,76,108,65,65,107,77,42,33,87,32,30,53,75,45,45,75,53,30,32,88,32,0,0,0,2,0,74,0,0,2,78,2,48,0,12,0,21,0,235,186,0,8,0,1,0,3,43,65,3,0,207,0,1,0,1,93,65,3,0,15,0,1,0,1,93,65,3,0,175,0,1,0,1,93,65,3,0,16,0,1,0,1,93,65,3,0,96,0,8,0,1,93,65,3,0,224,0,8,0,1,93,65,3,0,32,0,8,0,1,113,65,3,0,0,0,8,0,1,113,65,3,0,176,0,8,0,1,93,65,3,0,64,0,8,0,1,93,65,5,0,16,0,8,0,32,0,8,0,2,93,184,0,1,16,185,0,15,0,4,244,184,0,8,16,185,0,19,0,4,244,0,184,0,0,69,88,184,0,3,47,27,185,0,3,0,16,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,3,16,185,0,13,0,2,244,184,0,0,16,185,0,16,0,2,244,48,49,1,65,3,0,135,0,5,0,1,93,65,3,0,133,0,10,0,1,93,0,65,3,0,133,0,5,0,1,93,65,3,0,136,0,10,0,1,93,65,3,0,138,0,11,0,1,93,33,35,17,51,50,30,2,21,20,14,2,3,35,17,51,50,54,53,52,38,1,39,221,221,64,110,78,43,44,78,109,64,128,128,94,99,99,2,48,39,72,104,65,66,104,72,38,1,216,254,128,102,90,90,102,0,0,0,1,0,74,0,0,1,197,2,48,0,11,0,152,186,0,0,0,1,0,3,43,65,3,0,16,0,0,0,1,93,65,3,0,224,0,0,0,1,93,65,3,0,16,0,1,0,1,93,184,0,0,16,184,0,4,208,184,0,4,47,184,0,1,16,185,0,10,0,4,244,184,0,6,208,186,0,8,0,0,0,1,17,18,57,184,0,8,47,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,16,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,184,0,2,16,185,0,5,0,2,244,186,0,6,0,2,0,1,17,18,57,184,0,6,47,185,0,9,0,2,244,184,0,1,16,185,0,10,0,2,244,48,49,41,1,17,33,21,33,21,51,21,35,21,33,1,197,254,133,1,115,254,236,217,217,1,28,2,48,88,136,88,160,0,1,0,74,0,0,1,182,2,48,0,9,0,166,186,0,0,0,7,0,3,43,65,3,0,175,0,0,0,1,93,65,3,0,16,0,0,0,1,93,65,3,0,176,0,0,0,1,93,65,3,0,175,0,7,0,1,93,65,3,0,16,0,7,0,1,93,65,3,0,176,0,7,0,1,93,184,0,7,16,185,0,6,0,4,244,184,0,2,208,186,0,3,0,0,0,7,17,18,57,184,0,3,47,0,184,0,0,69,88,184,0,8,47,27,185,0,8,0,16,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,6,62,89,184,0,8,16,185,0,1,0,2,244,186,0,2,0,8,0,6,17,18,57,184,0,2,47,185,0,5,0,2,244,65,3,0,165,0,7,0,1,93,48,49,1,33,21,51,21,35,21,35,17,33,1,182,254,241,210,210,93,1,108,1,216,136,88,248,2,48,0,0,0,1,0,39,255,245,2,22,2,59,0,32,1,48,186,0,27,0,5,0,3,43,65,3,0,80,0,27,0,1,93,65,3,0,112,0,27,0,1,93,186,0,12,0,27,0,5,17,18,57,184,0,12,47,184,0,5,16,185,0,18,0,4,244,184,0,27,16,185,0,24,0,4,244,184,0,27,16,184,0,26,208,184,0,26,47,0,184,0,0,69,88,184,0,10,47,27,185,0,10,0,16,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,10,16,184,0,13,220,184,0,10,16,185,0,15,0,2,244,184,0,0,16,185,0,21,0,2,244,186,0,26,0,10,0,0,17,18,57,184,0,26,47,185,0,25,0,2,244,48,49,1,65,3,0,137,0,2,0,1,93,65,3,0,136,0,7,0,1,93,65,3,0,136,0,8,0,1,93,65,5,0,21,0,16,0,37,0,16,0,2,93,65,3,0,21,0,20,0,1,93,65,3,0,38,0,20,0,1,93,0,65,3,0,138,0,2,0,1,93,65,3,0,135,0,7,0,1,93,65,3,0,134,0,8,0,1,93,65,9,0,85,0,11,0,101,0,11,0,117,0,11,0,133,0,11,0,4,93,65,3,0,69,0,12,0,1,93,65,9,0,86,0,12,0,102,0,12,0,118,0,12,0,134,0,12,0,4,93,65,3,0,23,0,16,0,1,93,5,34,46,2,53,52,62,2,51,50,23,7,38,35,34,6,21,20,22,51,50,55,53,35,53,51,21,14,3,1,74,63,107,77,44,43,79,110,66,102,75,9,87,79,98,100,105,103,49,42,81,175,17,49,56,57,11,42,76,108,66,65,107,76,42,32,87,31,111,90,94,111,11,114,79,250,8,15,12,7,0,0,0,1,0,74,0,0,2,60,2,48,0,11,0,127,186,0,0,0,5,0,3,43,65,3,0,16,0,0,0,1,93,184,0,0,16,185,0,1,0,4,244,65,3,0,16,0,5,0,1,93,184,0,5,16,185,0,4,0,4,244,184,0,8,208,184,0,1,16,184,0,9,208,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,16,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,1,208,186,0,8,0,7,0,4,17,18,57,184,0,8,47,185,0,3,0,2,244,184,0,7,16,184,0,10,208,48,49,33,35,53,33,21,35,17,51,21,33,53,51,2,60,93,254,200,93,93,1,56,93,248,248,2,48,223,223,0,0,0,0,1,0,74,0,0,0,167,2,48,0,3,0,109,187,0,0,0,4,0,1,0,4,43,65,3,0,175,0,0,0,1,93,65,5,0,0,0,0,0,16,0,0,0,2,93,65,3,0,128,0,0,0,1,93,65,3,0,175,0,1,0,1,93,65,3,0,128,0,1,0,1,93,65,5,0,0,0,1,0,16,0,1,0,2,93,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,16,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,48,49,51,35,17,51,167,93,93,2,48,0,1,255,254,255,118,0,167,2,48,0,10,0,119,187,0,8,0,4,0,7,0,4,43,65,3,0,175,0,7,0,1,93,65,3,0,16,0,7,0,1,93,65,3,0,128,0,7,0,1,93,184,0,7,16,184,0,2,208,184,0,2,47,65,3,0,175,0,8,0,1,93,65,3,0,16,0,8,0,1,93,65,3,0,128,0,8,0,1,93,65,3,0,15,0,12,0,1,93,0,184,0,1,47,184,0,0,69,88,184,0,8,47,27,185,0,8,0,16,62,89,184,0,1,16,185,0,2,0,1,244,48,49,23,35,39,51,50,54,53,17,51,17,20,28,21,9,12,37,27,93,138,66,34,39,2,47,253,186,116,0,2,0,74,0,0,2,0,2,48,0,5,0,9,1,0,186,0,0,0,7,0,3,43,65,5,0,96,0,0,0,112,0,0,0,2,93,65,3,0,32,0,0,0,1,113,65,3,0,217,0,0,0,1,93,65,3,0,240,0,0,0,1,93,65,3,0,0,0,0,0,1,113,65,3,0,64,0,0,0,1,93,65,5,0,16,0,0,0,32,0,0,0,2,93,184,0,0,16,185,0,1,0,4,244,65,11,0,182,0,1,0,198,0,1,0,214,0,1,0,230,0,1,0,246,0,1,0,5,93,65,7,0,6,0,1,0,22,0,1,0,38,0,1,0,3,113,184,0,2,208,184,0,1,16,184,0,3,208,184,0,0,16,184,0,4,208,184,0,0,16,184,0,5,208,65,3,0,223,0,7,0,1,93,65,3,0,16,0,7,0,1,93,184,0,7,16,185,0,6,0,4,244,0,184,0,0,69,88,184,0,9,47,27,185,0,9,0,16,62,89,184,0,0,69,88,184,0,6,47,27,185,0,6,0,6,62,89,184,0,1,208,184,0,9,16,184,0,3,208,186,0,2,0,3,0,1,17,18,57,25,184,0,2,47,24,184,0,5,208,48,49,33,35,3,19,51,11,1,35,17,51,2,0,102,215,215,102,215,130,93,93,1,40,1,8,254,248,254,216,2,48,0,0,0,2,0,8,0,0,2,14,2,48,0,7,0,10,2,64,187,0,7,0,4,0,6,0,4,43,65,3,0,255,0,7,0,1,93,65,3,0,0,0,7,0,1,113,65,3,0,96,0,7,0,1,93,184,0,7,16,184,0,0,208,65,3,0,136,0,0,0,1,93,65,3,0,23,0,0,0,1,113,65,3,0,55,0,0,0,1,93,185,0,1,0,4,244,65,3,0,255,0,6,0,1,93,65,3,0,0,0,6,0,1,113,65,3,0,96,0,6,0,1,93,186,0,9,0,6,0,7,17,18,57,186,0,2,0,1,0,9,17,18,57,184,0,6,16,184,0,5,208,65,3,0,56,0,5,0,1,93,65,3,0,24,0,5,0,1,113,65,3,0,135,0,5,0,1,93,185,0,4,0,4,244,186,0,3,0,4,0,9,17,18,57,186,0,8,0,9,0,1,17,18,57,186,0,10,0,9,0,4,17,18,57,65,3,0,63,0,12,0,1,93,65,3,0,31,0,12,0,1,93,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,16,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,1,208,186,0,10,0,6,0,4,17,18,57,184,0,10,47,185,0,3,0,2,244,184,0,6,16,184,0,9,208,65,3,0,42,0,9,0,1,113,48,49,1,65,3,0,167,0,1,0,1,93,65,3,0,120,0,3,0,1,93,65,3,0,168,0,4,0,1,93,65,3,0,136,0,6,0,1,93,65,7,0,216,0,6,0,232,0,6,0,248,0,6,0,3,93,65,13,0,8,0,6,0,24,0,6,0,40,0,6,0,56,0,6,0,72,0,6,0,88,0,6,0,6,113,65,7,0,89,0,6,0,105,0,6,0,121,0,6,0,3,93,65,5,0,86,0,7,0,102,0,7,0,2,93,65,5,0,119,0,7,0,135,0,7,0,2,93,65,7,0,215,0,7,0,231,0,7,0,247,0,7,0,3,93,65,13,0,7,0,7,0,23,0,7,0,39,0,7,0,55,0,7,0,71,0,7,0,87,0,7,0,6,113,65,3,0,136,0,8,0,1,93,65,3,0,89,0,8,0,1,93,65,3,0,86,0,10,0,1,93,65,3,0,135,0,10,0,1,93,0,65,3,0,41,0,9,0,1,93,65,3,0,74,0,9,0,1,93,65,7,0,218,0,9,0,234,0,9,0,250,0,9,0,3,93,65,5,0,10,0,9,0,26,0,9,0,2,113,65,3,0,59,0,9,0,1,93,65,3,0,43,0,9,0,1,113,65,3,0,140,0,9,0,1,93,33,35,39,35,7,35,19,51,19,39,7,2,14,97,55,214,54,98,213,93,29,76,76,141,141,2,48,254,181,189,189,0,0,1,0,46,0,0,2,154,2,48,0,11,2,50,186,0,0,0,6,0,3,43,65,3,0,0,0,0,0,1,113,65,3,0,47,0,0,0,1,93,65,3,0,16,0,0,0,1,93,65,5,0,112,0,0,0,128,0,0,0,2,93,65,3,0,64,0,0,0,1,93,184,0,0,16,185,0,1,0,4,244,184,0,2,208,65,3,0,87,0,2,0,1,93,65,5,0,31,0,6,0,47,0,6,0,2,113,65,3,0,47,0,6,0,1,93,65,3,0,16,0,6,0,1,93,186,0,3,0,6,0,0,17,18,57,184,0,6,16,185,0,5,0,4,244,184,0,4,208,65,3,0,88,0,4,0,1,93,184,0,6,16,184,0,7,208,186,0,8,0,7,0,4,17,18,57,65,3,0,39,0,8,0,1,93,65,3,0,102,0,8,0,1,93,184,0,3,16,184,0,9,208,65,3,0,232,0,9,0,1,93,184,0,0,16,184,0,11,208,186,0,10,0,2,0,11,17,18,57,65,3,0,40,0,10,0,1,93,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,16,62,89,184,0,0,69,88,184,0,5,47,27,185,0,5,0,6,62,89,184,0,1,208,184,0,7,16,184,0,4,208,65,5,0,27,0,4,0,43,0,4,0,2,113,65,3,0,139,0,4,0,1,93,65,3,0,12,0,4,0,1,113,65,5,0,108,0,4,0,124,0,4,0,2,93,65,5,0,76,0,4,0,92,0,4,0,2,113,65,3,0,251,0,4,0,1,93,65,3,0,91,0,4,0,1,93,65,3,0,234,0,4,0,1,93,65,3,0,73,0,4,0,1,93,184,0,2,208,186,0,3,0,7,0,5,17,18,57,184,0,3,47,184,0,9,208,65,5,0,66,0,9,0,82,0,9,0,2,113,65,7,0,83,0,9,0,99,0,9,0,115,0,9,0,3,93,65,3,0,52,0,9,0,1,113,65,5,0,53,0,9,0,69,0,9,0,2,93,65,3,0,230,0,9,0,1,93,65,5,0,197,0,9,0,213,0,9,0,2,93,65,3,0,132,0,9,0,1,93,65,3,0,4,0,9,0,1,113,65,3,0,243,0,9,0,1,93,65,3,0,18,0,9,0,1,113,65,3,0,33,0,9,0,1,113,184,0,7,16,184,0,10,208,48,49,1,65,3,0,200,0,7,0,1,93,65,3,0,54,0,8,0,1,93,65,3,0,57,0,10,0,1,93,65,3,0,199,0,11,0,1,93,0,65,3,0,38,0,9,0,1,113,33,35,11,3,35,19,51,27,1,51,2,154,98,54,157,159,54,98,81,78,152,150,78,1,136,254,243,1,13,254,120,2,48,254,249,1,7,0,0,0,0,1,0,74,0,0,2,28,2,48,0,9,2,14,186,0,9,0,4,0,3,43,65,3,0,16,0,9,0,1,93,65,5,0,80,0,9,0,96,0,9,0,2,93,65,3,0,176,0,9,0,1,93,65,3,0,175,0,9,0,1,93,65,3,0,224,0,9,0,1,93,65,5,0,128,0,9,0,144,0,9,0,2,93,65,3,0,48,0,9,0,1,93,65,3,0,32,0,9,0,1,113,65,3,0,0,0,9,0,1,113,184,0,9,16,185,0,8,0,4,244,184,0,1,208,65,3,0,176,0,4,0,1,93,65,3,0,207,0,4,0,1,93,65,3,0,175,0,4,0,1,93,65,3,0,16,0,4,0,1,93,65,3,0,144,0,4,0,1,93,184,0,4,16,185,0,3,0,4,244,184,0,6,208,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,16,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,184,0,1,208,184,0,6,16,184,0,2,208,65,3,0,74,0,2,0,1,113,65,3,0,27,0,2,0,1,113,65,3,0,44,0,2,0,1,113,65,3,0,142,0,2,0,1,93,65,5,0,108,0,2,0,124,0,2,0,2,93,65,3,0,91,0,2,0,1,113,65,5,0,74,0,2,0,90,0,2,0,2,93,65,3,0,250,0,2,0,1,93,65,3,0,10,0,2,0,1,113,65,5,0,41,0,2,0,57,0,2,0,2,93,65,3,0,167,0,4,0,1,93,184,0,1,16,184,0,7,208,65,3,0,83,0,7,0,1,113,65,3,0,68,0,7,0,1,93,65,3,0,85,0,7,0,1,93,65,3,0,53,0,7,0,1,93,65,3,0,38,0,7,0,1,93,65,3,0,245,0,7,0,1,93,65,7,0,4,0,7,0,20,0,7,0,36,0,7,0,3,113,65,3,0,68,0,7,0,1,113,65,3,0,131,0,7,0,1,93,65,5,0,98,0,7,0,114,0,7,0,2,93,184,0,6,16,184,0,8,208,48,49,1,65,3,0,85,0,6,0,1,93,65,3,0,71,0,6,0,1,93,0,65,5,0,122,0,2,0,138,0,2,0,2,93,65,3,0,43,0,2,0,1,113,65,3,0,69,0,7,0,1,93,65,3,0,117,0,7,0,1,93,65,3,0,37,0,7,0,1,113,65,3,0,87,0,7,0,1,93,33,35,1,17,35,17,51,1,17,51,2,28,78,254,217,93,96,1,20,94,1,149,254,107,2,48,254,130,1,126,0,0,0,2,0,39,255,245,2,114,2,59,0,18,0,37,2,43,186,0,17,0,7,0,3,43,65,3,0,79,0,7,0,1,93,65,3,0,159,0,7,0,1,93,65,3,0,111,0,7,0,1,93,65,3,0,15,0,7,0,1,93,65,3,0,128,0,7,0,1,93,65,3,0,0,0,17,0,1,113,65,3,0,128,0,17,0,1,93,65,3,0,32,0,17,0,1,113,65,3,0,224,0,17,0,1,93,65,3,0,176,0,17,0,1,93,184,0,7,16,185,0,26,0,4,244,184,0,17,16,185,0,36,0,4,244,65,3,0,47,0,39,0,1,93,65,3,0,95,0,39,0,1,93,0,184,0,0,69,88,184,0,12,47,27,185,0,12,0,16,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,6,62,89,184,0,12,16,185,0,21,0,2,244,184,0,2,16,185,0,31,0,2,244,48,49,1,65,3,0,134,0,0,0,1,93,65,3,0,138,0,5,0,1,93,65,3,0,137,0,9,0,1,93,65,3,0,135,0,14,0,1,93,65,3,0,135,0,15,0,1,93,65,3,0,181,0,19,0,1,93,65,3,0,166,0,19,0,1,93,65,5,0,24,0,19,0,40,0,19,0,2,93,65,3,0,121,0,19,0,1,93,65,5,0,23,0,23,0,39,0,23,0,2,93,65,3,0,168,0,24,0,1,93,65,3,0,185,0,24,0,1,93,65,5,0,22,0,29,0,38,0,29,0,2,93,65,3,0,168,0,29,0,1,93,65,3,0,185,0,29,0,1,93,65,3,0,120,0,33,0,1,93,65,5,0,25,0,33,0,41,0,33,0,2,93,65,3,0,165,0,34,0,1,93,65,3,0,182,0,34,0,1,93,0,65,3,0,137,0,0,0,1,93,65,3,0,136,0,5,0,1,93,65,3,0,134,0,9,0,1,93,65,3,0,135,0,14,0,1,93,65,3,0,134,0,15,0,1,93,65,3,0,166,0,19,0,1,93,65,3,0,183,0,19,0,1,93,65,5,0,24,0,19,0,40,0,19,0,2,93,65,3,0,182,0,24,0,1,93,65,3,0,167,0,24,0,1,93,65,5,0,24,0,24,0,40,0,24,0,2,93,65,5,0,23,0,29,0,39,0,29,0,2,93,65,3,0,169,0,29,0,1,93,65,3,0,186,0,29,0,1,93,65,5,0,22,0,33,0,38,0,33,0,2,93,65,3,0,118,0,33,0,1,93,65,5,0,168,0,34,0,184,0,34,0,2,93,37,6,35,34,46,2,53,52,62,2,51,50,30,2,21,20,3,38,35,34,14,2,21,20,30,2,51,50,62,2,53,52,2,31,83,128,64,108,78,43,43,78,108,64,64,108,78,44,153,50,91,46,71,49,25,25,49,71,46,46,71,49,25,69,80,42,76,108,65,65,107,77,42,42,77,107,65,131,1,22,56,29,54,75,45,45,75,54,29,30,53,75,45,91,0,0,0,0,2,255,248,0,0,2,193,2,48,0,15,0,18,1,118,186,0,0,0,1,0,3,43,65,3,0,16,0,0,0,1,93,65,3,0,15,0,0,0,1,113,65,3,0,144,0,0,0,1,93,65,3,0,96,0,0,0,1,93,65,3,0,15,0,1,0,1,113,65,3,0,127,0,1,0,1,93,184,0,1,16,184,0,5,208,65,3,0,170,0,5,0,1,93,65,3,0,26,0,5,0,1,93,65,3,0,38,0,5,0,1,93,185,0,4,0,4,244,184,0,1,16,184,0,16,208,186,0,3,0,4,0,16,17,18,57,65,3,0,250,0,3,0,1,93,184,0,6,208,65,5,0,234,0,6,0,250,0,6,0,2,93,65,7,0,106,0,6,0,122,0,6,0,138,0,6,0,3,93,65,5,0,25,0,6,0,41,0,6,0,2,113,65,3,0,89,0,6,0,1,93,184,0,0,16,184,0,8,208,184,0,8,47,184,0,1,16,185,0,14,0,4,244,184,0,10,208,184,0,0,16,184,0,12,208,184,0,12,47,186,0,18,0,16,0,4,17,18,57,65,3,0,86,0,18,0,1,93,65,3,0,38,0,18,0,1,93,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,16,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,186,0,16,0,1,0,6,17,18,57,184,0,16,47,185,0,2,0,2,244,184,0,1,16,184,0,4,208,184,0,6,16,185,0,9,0,2,244,186,0,10,0,6,0,1,17,18,57,184,0,10,47,185,0,13,0,2,244,184,0,1,16,185,0,14,0,2,244,184,0,9,16,184,0,17,208,65,3,0,42,0,17,0,1,113,48,49,41,1,53,35,7,35,1,33,21,33,21,51,21,35,21,33,37,53,7,2,193,254,142,175,74,94,1,34,1,159,254,253,200,200,1,11,254,142,132,138,138,2,48,89,135,88,160,140,241,241,0,2,0,74,0,0,1,227,2,48,0,14,0,23,1,63,186,0,10,0,3,0,3,43,65,3,0,16,0,3,0,1,93,65,3,0,207,0,3,0,1,93,65,3,0,176,0,3,0,1,93,65,3,0,48,0,3,0,1,93,184,0,3,16,185,0,2,0,4,244,65,3,0,48,0,10,0,1,93,65,3,0,176,0,10,0,1,93,65,3,0,112,0,10,0,1,93,65,3,0,16,0,10,0,1,93,65,5,0,16,0,10,0,32,0,10,0,2,113,184,0,17,208,184,0,10,16,185,0,21,0,4,244,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,16,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,6,62,89,186,0,1,0,4,0,2,17,18,57,184,0,1,47,184,0,4,16,185,0,16,0,2,244,184,0,1,16,185,0,17,0,2,244,48,49,1,65,3,0,135,0,7,0,1,93,65,5,0,165,0,8,0,181,0,8,0,2,93,65,3,0,6,0,8,0,1,93,65,3,0,134,0,8,0,1,93,65,3,0,198,0,8,0,1,93,65,3,0,23,0,8,0,1,93,65,3,0,6,0,12,0,1,93,0,65,3,0,134,0,7,0,1,93,65,3,0,134,0,8,0,1,93,65,3,0,198,0,8,0,1,93,65,5,0,7,0,8,0,23,0,8,0,2,93,65,5,0,167,0,8,0,183,0,8,0,2,93,65,3,0,9,0,12,0,1,93,37,35,21,35,17,51,50,30,2,21,20,14,2,3,35,21,51,50,54,53,52,38,1,33,119,96,180,54,86,60,29,36,56,69,62,90,104,60,53,55,188,188,2,48,15,39,68,54,56,75,45,20,1,37,207,51,57,54,45,0,0,0,2,0,39,255,245,2,114,2,59,0,21,0,43,2,248,186,0,19,0,9,0,3,43,65,3,0,224,0,19,0,1,93,65,3,0,32,0,19,0,1,113,65,3,0,0,0,19,0,1,113,65,3,0,176,0,19,0,1,93,65,3,0,128,0,19,0,1,93,65,3,0,111,0,9,0,1,93,65,3,0,15,0,9,0,1,93,65,3,0,159,0,9,0,1,93,65,3,0,79,0,9,0,1,93,65,3,0,128,0,9,0,1,93,186,0,21,0,19,0,9,17,18,57,184,0,21,16,184,0,0,208,184,0,0,47,186,0,2,0,9,0,19,17,18,57,184,0,9,16,185,0,27,0,4,244,184,0,19,16,185,0,39,0,4,244,186,0,34,0,27,0,39,17,18,57,65,3,0,106,0,34,0,1,93,65,3,0,121,0,34,0,1,93,184,0,34,16,184,0,35,208,184,0,35,47,65,3,0,47,0,35,0,1,113,65,3,0,127,0,35,0,1,93,65,5,0,31,0,35,0,47,0,35,0,2,93,186,0,37,0,39,0,27,17,18,57,65,3,0,47,0,45,0,1,93,65,3,0,95,0,45,0,1,93,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,16,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,186,0,2,0,4,0,14,17,18,57,184,0,2,16,184,0,1,208,184,0,1,47,186,0,21,0,14,0,4,17,18,57,65,3,0,135,0,21,0,1,93,184,0,14,16,185,0,22,0,2,244,184,0,4,16,185,0,32,0,2,244,186,0,34,0,32,0,22,17,18,57,186,0,37,0,22,0,32,17,18,57,184,0,37,16,184,0,36,208,184,0,36,47,48,49,1,65,5,0,23,0,2,0,39,0,2,0,2,113,65,3,0,137,0,2,0,1,93,65,3,0,136,0,3,0,1,93,65,3,0,137,0,6,0,1,93,65,3,0,137,0,7,0,1,93,65,3,0,138,0,11,0,1,93,65,3,0,133,0,17,0,1,93,65,3,0,19,0,21,0,1,113,65,3,0,36,0,21,0,1,113,65,5,0,20,0,24,0,36,0,24,0,2,93,65,5,0,22,0,29,0,38,0,29,0,2,93,65,3,0,117,0,30,0,1,93,65,3,0,184,0,30,0,1,93,65,3,0,169,0,30,0,1,93,65,3,0,24,0,34,0,1,113,65,3,0,43,0,34,0,1,113,65,3,0,138,0,35,0,1,93,65,3,0,23,0,37,0,1,113,65,3,0,40,0,37,0,1,113,65,3,0,121,0,42,0,1,93,65,5,0,26,0,42,0,42,0,42,0,2,93,0,65,3,0,25,0,2,0,1,113,65,3,0,42,0,2,0,1,113,65,3,0,138,0,3,0,1,93,65,3,0,136,0,7,0,1,93,65,3,0,134,0,11,0,1,93,65,3,0,134,0,16,0,1,93,65,3,0,39,0,21,0,1,113,65,3,0,182,0,24,0,1,93,65,3,0,167,0,24,0,1,93,65,5,0,24,0,24,0,40,0,24,0,2,93,65,3,0,118,0,30,0,1,93,65,5,0,168,0,30,0,184,0,30,0,2,93,65,5,0,24,0,34,0,40,0,34,0,2,113,65,3,0,37,0,36,0,1,113,65,3,0,20,0,37,0,1,113,65,3,0,117,0,37,0,1,93,65,3,0,37,0,37,0,1,113,65,3,0,121,0,42,0,1,93,37,7,39,6,35,34,46,2,53,52,62,2,51,50,30,2,21,20,7,3,34,14,2,21,20,30,2,51,50,55,39,55,23,54,53,52,46,2,2,107,52,57,78,100,64,108,78,43,43,78,108,64,64,108,78,44,59,235,46,71,49,25,25,49,71,46,65,44,80,51,83,33,26,51,73,58,62,44,51,42,76,108,65,65,107,77,42,42,77,107,65,101,80,1,128,29,54,75,45,45,75,54,29,23,60,64,65,46,75,45,75,54,29,0,0,0,0,2,0,74,0,0,2,3,2,48,0,11,0,19,1,143,186,0,9,0,5,0,3,43,65,7,0,16,0,9,0,32,0,9,0,48,0,9,0,3,93,65,3,0,144,0,9,0,1,93,65,3,0,176,0,9,0,1,93,65,3,0,112,0,9,0,1,93,65,3,0,240,0,9,0,1,93,65,5,0,16,0,9,0,32,0,9,0,2,113,65,3,0,16,0,5,0,1,93,65,3,0,175,0,5,0,1,93,65,3,0,48,0,5,0,1,93,65,3,0,176,0,5,0,1,93,65,3,0,144,0,5,0,1,93,186,0,11,0,9,0,5,17,18,57,65,3,0,54,0,11,0,1,93,65,9,0,86,0,11,0,102,0,11,0,118,0,11,0,134,0,11,0,4,93,184,0,11,16,184,0,0,208,65,3,0,70,0,0,0,1,93,184,0,11,16,185,0,2,0,4,244,184,0,1,208,184,0,5,16,185,0,4,0,4,244,184,0,14,208,184,0,9,16,185,0,18,0,4,244,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,16,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,1,208,186,0,3,0,7,0,4,17,18,57,184,0,3,47,186,0,11,0,3,0,7,17,18,57,184,0,7,16,185,0,12,0,2,244,184,0,3,16,185,0,14,0,2,244,48,49,1,65,3,0,132,0,8,0,1,93,65,7,0,7,0,8,0,23,0,8,0,39,0,8,0,3,93,65,3,0,133,0,10,0,1,93,65,3,0,118,0,10,0,1,93,65,3,0,122,0,19,0,1,93,0,65,3,0,5,0,8,0,1,93,65,3,0,134,0,8,0,1,93,65,3,0,23,0,8,0,1,93,65,3,0,138,0,10,0,1,93,65,3,0,120,0,19,0,1,93,33,35,39,35,21,35,17,51,50,21,20,7,39,35,21,51,50,54,53,52,2,3,99,128,118,96,204,205,105,112,96,106,52,58,212,212,2,48,162,110,52,247,183,48,45,90,0,0,0,0,1,0,41,255,245,1,221,2,59,0,48,2,215,186,0,44,0,16,0,3,43,65,3,0,47,0,16,0,1,93,65,3,0,111,0,16,0,1,93,65,3,0,15,0,16,0,1,93,65,3,0,79,0,16,0,1,93,65,3,0,16,0,16,0,1,93,65,3,0,48,0,16,0,1,93,65,3,0,80,0,44,0,1,93,65,3,0,176,0,44,0,1,93,65,3,0,208,0,44,0,1,93,65,7,0,112,0,44,0,128,0,44,0,144,0,44,0,3,93,65,3,0,48,0,44,0,1,93,65,3,0,16,0,44,0,1,93,186,0,2,0,16,0,44,17,18,57,184,0,2,47,184,0,44,16,185,0,7,0,4,244,186,0,26,0,44,0,16,17,18,57,184,0,26,47,184,0,16,16,185,0,34,0,4,244,0,184,0,0,69,88,184,0,21,47,27,185,0,21,0,16,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,184,0,3,220,65,3,0,32,0,3,0,1,93,184,0,0,16,185,0,5,0,2,244,186,0,11,0,0,0,21,17,18,57,65,3,0,138,0,11,0,1,93,65,7,0,89,0,11,0,105,0,11,0,121,0,11,0,3,93,184,0,21,16,184,0,27,220,65,3,0,47,0,27,0,1,93,65,3,0,144,0,27,0,1,93,184,0,21,16,185,0,29,0,2,244,186,0,37,0,21,0,0,17,18,57,48,49,1,65,3,0,121,0,9,0,1,93,65,3,0,25,0,14,0,1,93,65,3,0,121,0,14,0,1,93,65,3,0,43,0,14,0,1,93,65,3,0,9,0,19,0,1,93,65,13,0,55,0,25,0,71,0,25,0,87,0,25,0,103,0,25,0,119,0,25,0,135,0,25,0,6,93,65,3,0,133,0,36,0,1,93,65,3,0,135,0,39,0,1,93,65,3,0,6,0,41,0,1,93,65,3,0,38,0,41,0,1,93,65,3,0,23,0,41,0,1,93,65,3,0,87,0,41,0,1,93,65,3,0,37,0,42,0,1,93,65,3,0,101,0,42,0,1,93,65,3,0,22,0,42,0,1,93,65,5,0,6,0,47,0,22,0,47,0,2,93,0,65,15,0,58,0,1,0,74,0,1,0,90,0,1,0,106,0,1,0,122,0,1,0,138,0,1,0,154,0,1,0,7,93,65,3,0,43,0,1,0,1,113,65,3,0,28,0,1,0,1,113,65,13,0,58,0,2,0,74,0,2,0,90,0,2,0,106,0,2,0,122,0,2,0,138,0,2,0,6,93,65,3,0,121,0,9,0,1,93,65,3,0,41,0,14,0,1,93,65,3,0,121,0,14,0,1,93,65,3,0,26,0,14,0,1,93,65,3,0,5,0,19,0,1,93,65,13,0,53,0,25,0,69,0,25,0,85,0,25,0,101,0,25,0,117,0,25,0,133,0,25,0,6,93,65,3,0,134,0,39,0,1,93,65,3,0,84,0,41,0,1,93,65,3,0,6,0,41,0,1,93,65,5,0,23,0,41,0,39,0,41,0,2,93,65,3,0,22,0,42,0,1,93,65,3,0,102,0,42,0,1,93,65,3,0,39,0,42,0,1,93,65,3,0,40,0,47,0,1,93,65,5,0,10,0,47,0,26,0,47,0,2,93,23,34,39,55,22,51,50,53,52,46,2,47,1,46,1,53,52,62,2,51,50,30,2,23,7,38,35,34,14,2,21,20,30,2,23,30,3,21,20,14,2,246,129,67,12,71,115,126,29,53,75,46,48,35,47,26,52,81,56,27,55,49,42,15,10,102,70,24,45,34,20,26,53,78,53,23,46,36,23,15,49,91,11,39,107,58,70,24,34,26,23,14,21,15,54,48,31,60,46,28,7,11,15,8,96,50,8,16,26,18,24,26,20,22,20,9,24,35,51,36,24,56,48,32,0,0,0,0,1,0,17,0,0,1,197,2,48,0,7,0,113,187,0,1,0,4,0,4,0,4,43,65,3,0,176,0,1,0,1,93,184,0,1,16,184,0,0,220,65,3,0,176,0,4,0,1,93,184,0,4,16,184,0,5,220,65,3,0,15,0,9,0,1,93,65,3,0,112,0,9,0,1,93,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,16,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,184,0,6,16,185,0,5,0,2,244,184,0,1,208,48,49,1,35,17,35,17,35,53,33,1,197,171,94,171,1,180,1,216,254,40,1,216,88,0,0,0,0,1,0,67,255,245,2,48,2,48,0,21,1,39,186,0,18,0,4,0,3,43,65,3,0,175,0,4,0,1,93,65,3,0,223,0,4,0,1,93,65,3,0,16,0,4,0,1,93,184,0,4,16,185,0,5,0,4,244,65,3,0,240,0,18,0,1,93,65,3,0,223,0,18,0,1,93,65,3,0,175,0,18,0,1,93,65,3,0,16,0,18,0,1,93,65,3,0,16,0,18,0,1,113,184,0,18,16,185,0,17,0,4,244,0,184,0,0,69,88,184,0,5,47,27,185,0,5,0,16,62,89,184,0,0,69,88,184,0,0,47,27,185,0,0,0,6,62,89,185,0,11,0,2,244,184,0,5,16,184,0,17,208,48,49,1,65,3,0,88,0,1,0,1,93,65,5,0,55,0,9,0,71,0,9,0,2,93,65,5,0,57,0,13,0,73,0,13,0,2,93,65,3,0,85,0,20,0,1,93,65,3,0,103,0,20,0,1,93,65,5,0,88,0,21,0,104,0,21,0,2,93,0,65,3,0,105,0,1,0,1,93,65,3,0,90,0,1,0,1,93,65,3,0,54,0,9,0,1,93,65,3,0,71,0,9,0,1,93,65,3,0,70,0,13,0,1,93,65,3,0,55,0,13,0,1,93,65,3,0,104,0,20,0,1,93,65,5,0,89,0,21,0,105,0,21,0,2,93,5,34,38,53,17,51,17,20,30,2,51,50,62,2,53,17,51,17,20,6,1,58,123,124,93,14,36,59,45,47,60,34,12,93,123,11,133,117,1,65,254,226,46,73,51,27,30,53,72,42,1,30,254,191,118,132,0,0,0,0,1,0,6,0,0,2,42,2,48,0,6,1,51,187,0,1,0,4,0,2,0,4,43,65,3,0,176,0,1,0,1,93,65,3,0,96,0,1,0,1,93,184,0,1,16,184,0,0,208,65,3,0,56,0,0,0,1,93,65,3,0,118,0,0,0,1,93,65,3,0,96,0,2,0,1,93,65,3,0,176,0,2,0,1,93,184,0,2,16,184,0,3,208,65,3,0,121,0,3,0,1,93,65,3,0,55,0,3,0,1,93,185,0,4,0,4,244,186,0,5,0,2,0,1,17,18,57,184,0,0,16,185,0,6,0,4,244,0,184,0,0,69,88,184,0,4,47,27,185,0,4,0,16,62,89,184,0,0,69,88,184,0,2,47,27,185,0,2,0,6,62,89,184,0,5,208,65,3,0,70,0,5,0,1,93,65,5,0,85,0,5,0,101,0,5,0,2,93,184,0,4,16,184,0,6,208,48,49,1,65,13,0,167,0,1,0,183,0,1,0,199,0,1,0,215,0,1,0,231,0,1,0,247,0,1,0,6,93,65,7,0,7,0,1,0,23,0,1,0,39,0,1,0,3,113,65,13,0,168,0,2,0,184,0,2,0,200,0,2,0,216,0,2,0,232,0,2,0,248,0,2,0,6,93,65,7,0,8,0,2,0,24,0,2,0,40,0,2,0,3,113,0,65,3,0,130,0,5,0,1,93,65,3,0,116,0,5,0,1,93,1,3,35,3,51,27,1,2,42,220,106,222,98,177,175,2,48,253,208,2,48,254,70,1,186,0,0,0,1,0,17,0,0,3,54,2,48,0,12,2,97,186,0,10,0,9,0,3,43,65,3,0,175,0,10,0,1,93,65,3,0,39,0,10,0,1,93,65,3,0,16,0,10,0,1,93,184,0,10,16,184,0,1,220,184,0,0,208,65,3,0,103,0,0,0,1,93,65,3,0,6,0,0,0,1,93,184,0,1,16,185,0,2,0,4,244,65,3,0,41,0,2,0,1,93,65,3,0,175,0,9,0,1,93,65,3,0,16,0,9,0,1,93,186,0,3,0,9,0,10,17,18,57,184,0,9,16,184,0,5,220,185,0,4,0,4,244,184,0,5,16,184,0,6,208,65,3,0,9,0,6,0,1,93,65,3,0,104,0,6,0,1,93,185,0,7,0,4,244,186,0,8,0,5,0,4,17,18,57,186,0,11,0,2,0,1,17,18,57,184,0,0,16,185,0,12,0,4,244,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,16,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,2,208,184,0,7,16,184,0,9,208,184,0,9,47,184,0,3,208,65,9,0,74,0,3,0,90,0,3,0,106,0,3,0,122,0,3,0,4,93,184,0,4,16,184,0,8,208,65,3,0,70,0,8,0,1,93,65,3,0,85,0,8,0,1,93,65,3,0,37,0,8,0,1,113,184,0,11,208,184,0,7,16,184,0,12,208,48,49,1,65,3,0,69,0,1,0,1,113,65,3,0,246,0,1,0,1,93,65,7,0,6,0,1,0,22,0,1,0,38,0,1,0,3,113,65,3,0,200,0,2,0,1,93,65,7,0,73,0,2,0,89,0,2,0,105,0,2,0,3,93,65,3,0,70,0,4,0,1,93,65,3,0,102,0,4,0,1,93,65,3,0,87,0,4,0,1,93,65,3,0,199,0,4,0,1,93,65,3,0,249,0,5,0,1,93,65,7,0,9,0,5,0,25,0,5,0,41,0,5,0,3,113,65,3,0,74,0,5,0,1,113,65,3,0,135,0,7,0,1,93,65,3,0,135,0,8,0,1,93,65,5,0,232,0,9,0,248,0,9,0,2,93,65,7,0,8,0,9,0,24,0,9,0,40,0,9,0,3,113,65,5,0,231,0,10,0,247,0,10,0,2,93,65,7,0,7,0,10,0,23,0,10,0,39,0,10,0,3,113,65,3,0,136,0,12,0,1,93,0,65,5,0,74,0,3,0,90,0,3,0,2,93,65,3,0,138,0,3,0,1,93,65,3,0,107,0,3,0,1,93,65,3,0,251,0,3,0,1,93,65,7,0,11,0,3,0,27,0,3,0,43,0,3,0,3,113,65,3,0,75,0,3,0,1,113,65,3,0,125,0,3,0,1,93,1,3,35,11,1,35,3,51,27,1,51,27,1,3,54,174,93,136,140,95,167,98,126,141,74,145,123,2,48,253,208,1,148,254,108,2,48,254,87,1,165,254,98,1,162,0,1,0,14,0,0,2,17,2,48,0,11,1,176,187,0,11,0,4,0,5,0,4,43,65,5,0,87,0,11,0,103,0,11,0,2,93,65,3,0,48,0,11,0,1,93,184,0,11,16,184,0,0,208,65,3,0,5,0,0,0,1,113,65,3,0,166,0,0,0,1,93,65,3,0,135,0,0,0,1,93,65,3,0,89,0,0,0,1,93,65,3,0,8,0,0,0,1,93,65,3,0,55,0,0,0,1,93,65,3,0,214,0,0,0,1,93,65,3,0,181,0,0,0,1,93,65,3,0,69,0,0,0,1,93,185,0,1,0,4,244,65,3,0,7,0,1,0,1,113,65,3,0,48,0,5,0,1,93,186,0,2,0,5,0,11,17,18,57,184,0,5,16,184,0,4,208,65,3,0,103,0,4,0,1,93,65,3,0,40,0,4,0,1,113,65,3,0,73,0,4,0,1,93,65,3,0,185,0,4,0,1,93,65,3,0,168,0,4,0,1,93,65,3,0,6,0,4,0,1,93,65,3,0,86,0,4,0,1,93,185,0,3,0,4,244,184,0,4,16,184,0,6,208,184,0,3,16,184,0,7,208,186,0,8,0,5,0,11,17,18,57,184,0,1,16,184,0,9,208,184,0,0,16,184,0,10,208,65,3,0,31,0,13,0,1,93,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,16,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,184,0,1,208,186,0,2,0,3,0,7,17,18,57,186,0,8,0,7,0,3,17,18,57,65,3,0,54,0,8,0,1,93,65,3,0,69,0,8,0,1,93,186,0,5,0,8,0,2,17,18,57,184,0,7,16,184,0,9,208,186,0,11,0,2,0,8,17,18,57,48,49,1,65,3,0,119,0,11,0,1,93,0,65,3,0,122,0,2,0,1,93,65,3,0,139,0,2,0,1,93,65,5,0,117,0,8,0,133,0,8,0,2,93,33,35,39,7,35,19,3,51,23,55,51,3,2,17,104,159,149,103,204,200,108,146,148,103,205,214,214,1,23,1,25,205,205,254,242,0,0,0,0,1,0,1,0,0,1,247,2,48,0,8,1,20,187,0,1,0,4,0,4,0,4,43,65,3,0,48,0,1,0,1,93,65,3,0,144,0,1,0,1,93,184,0,1,16,184,0,0,208,65,3,0,9,0,0,0,1,93,65,3,0,89,0,0,0,1,93,65,3,0,135,0,0,0,1,93,65,3,0,70,0,0,0,1,93,65,3,0,144,0,4,0,1,93,65,3,0,48,0,4,0,1,93,184,0,4,16,184,0,5,208,65,3,0,136,0,5,0,1,93,65,3,0,73,0,5,0,1,93,65,3,0,6,0,5,0,1,93,65,3,0,86,0,5,0,1,93,185,0,6,0,4,244,186,0,7,0,4,0,1,17,18,57,184,0,0,16,185,0,8,0,4,244,0,184,0,0,69,88,184,0,6,47,27,185,0,6,0,16,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,186,0,7,0,6,0,3,17,18,57,65,3,0,38,0,7,0,1,93,184,0,6,16,184,0,8,208,48,49,65,3,0,132,0,7,0,1,93,65,7,0,85,0,7,0,101,0,7,0,117,0,7,0,3,93,65,3,0,246,0,7,0,1,93,65,7,0,6,0,7,0,22,0,7,0,38,0,7,0,3,113,1,3,21,35,53,3,51,23,55,1,247,203,96,203,99,152,152,2,48,254,204,252,252,1,52,225,225,0,0,0,0,1,0,15,0,0,1,212,2,48,0,7,1,79,186,0,2,0,6,0,3,43,65,3,0,64,0,2,0,1,93,65,3,0,223,0,2,0,1,93,65,3,0,176,0,2,0,1,93,65,3,0,96,0,2,0,1,93,184,0,2,16,184,0,0,208,184,0,6,16,184,0,4,208,184,0,1,208,65,3,0,99,0,1,0,1,93,65,3,0,36,0,1,0,1,113,65,3,0,85,0,1,0,1,113,65,3,0,70,0,1,0,1,113,65,3,0,154,0,1,0,1,93,65,3,0,246,0,1,0,1,93,65,5,0,5,0,1,0,21,0,1,0,2,113,65,5,0,68,0,1,0,84,0,1,0,2,93,65,3,0,114,0,1,0,1,93,65,3,0,128,0,1,0,1,93,184,0,0,16,184,0,5,208,65,3,0,249,0,5,0,1,93,65,3,0,90,0,5,0,1,113,65,3,0,43,0,5,0,1,113,65,3,0,108,0,5,0,1,93,65,3,0,143,0,5,0,1,93,65,3,0,125,0,5,0,1,93,65,3,0,91,0,5,0,1,93,65,3,0,74,0,5,0,1,93,65,5,0,10,0,5,0,26,0,5,0,2,113,65,3,0,73,0,5,0,1,113,65,3,0,149,0,5,0,1,93,65,3,0,47,0,9,0,1,93,0,184,0,0,69,88,184,0,7,47,27,185,0,7,0,16,62,89,184,0,0,69,88,184,0,3,47,27,185,0,3,0,6,62,89,185,0,2,0,2,244,184,0,7,16,185,0,6,0,2,244,48,49,9,1,33,21,33,1,33,53,1,212,254,213,1,5,254,97,1,43,254,251,2,48,254,40,88,1,216,88,0,0,0,0,2,0,39,255,245,3,116,2,59,0,26,0,45,2,173,186,0,0,0,1,0,3,43,65,3,0,95,0,0,0,1,93,65,5,0,0,0,0,0,16,0,0,0,2,93,65,3,0,176,0,0,0,1,93,65,5,0,0,0,1,0,16,0,1,0,2,93,65,3,0,255,0,1,0,1,93,65,3,0,95,0,1,0,1,93,65,3,0,176,0,1,0,1,93,65,3,0,144,0,1,0,1,93,184,0,1,16,184,0,9,220,65,3,0,159,0,9,0,1,93,65,3,0,191,0,9,0,1,93,65,3,0,127,0,9,0,1,93,65,5,0,15,0,9,0,31,0,9,0,2,93,184,0,1,16,184,0,16,208,184,0,0,16,184,0,19,208,184,0,19,47,184,0,1,16,185,0,25,0,4,244,184,0,21,208,186,0,23,0,0,0,1,17,18,57,184,0,23,47,184,0,9,16,185,0,34,0,4,244,184,0,1,16,184,0,44,208,65,5,0,121,0,44,0,137,0,44,0,2,93,0,184,0,0,69,88,184,0,14,47,27,185,0,14,0,16,62,89,184,0,0,69,88,184,0,17,47,27,185,0,17,0,16,62,89,184,0,0,69,88,184,0,4,47,27,185,0,4,0,6,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,186,0,2,0,4,0,14,17,18,57,65,5,0,27,0,2,0,43,0,2,0,2,113,65,5,0,58,0,2,0,74,0,2,0,2,113,186,0,16,0,14,0,4,17,18,57,65,9,0,20,0,16,0,36,0,16,0,52,0,16,0,68,0,16,0,4,113,184,0,17,16,185,0,20,0,2,244,186,0,21,0,17,0,1,17,18,57,184,0,21,47,185,0,24,0,2,244,184,0,1,16,185,0,25,0,2,244,184,0,14,16,185,0,29,0,2,244,184,0,4,16,185,0,39,0,2,244,48,49,1,65,3,0,136,0,6,0,1,93,65,3,0,138,0,7,0,1,93,65,3,0,137,0,11,0,1,93,65,3,0,136,0,12,0,1,93,65,3,0,56,0,15,0,1,93,65,3,0,41,0,27,0,1,93,65,3,0,137,0,27,0,1,93,65,3,0,169,0,27,0,1,93,65,3,0,38,0,31,0,1,93,65,3,0,39,0,37,0,1,93,65,3,0,40,0,41,0,1,93,65,3,0,136,0,41,0,1,93,65,3,0,168,0,41,0,1,93,65,3,0,169,0,42,0,1,93,0,65,3,0,73,0,3,0,1,93,65,3,0,58,0,3,0,1,93,65,3,0,137,0,6,0,1,93,65,3,0,136,0,7,0,1,93,65,3,0,134,0,11,0,1,93,65,3,0,134,0,12,0,1,93,65,3,0,51,0,15,0,1,93,65,3,0,69,0,15,0,1,93,65,3,0,168,0,27,0,1,93,65,3,0,41,0,27,0,1,93,65,3,0,137,0,27,0,1,93,65,3,0,40,0,31,0,1,93,65,3,0,38,0,37,0,1,93,65,3,0,38,0,41,0,1,93,65,3,0,134,0,41,0,1,93,65,3,0,166,0,41,0,1,93,41,1,53,6,35,34,46,2,53,52,62,2,51,50,23,53,33,21,33,21,51,21,35,21,33,1,38,35,34,14,2,21,20,30,2,51,50,62,2,53,52,3,116,254,153,98,98,64,106,77,43,43,77,106,64,98,98,1,95,254,254,199,199,1,10,254,97,48,92,46,71,48,25,25,48,71,46,46,71,48,24,52,63,42,76,108,65,65,107,77,42,63,52,88,136,88,160,1,83,56,29,54,75,45,45,75,54,29,30,53,75,45,92,0,0,0,1,0,74,0,0,1,172,2,48,0,5,0,124,186,0,5,0,1,0,3,43,65,3,0,16,0,1,0,1,93,65,3,0,175,0,1,0,1,93,65,3,0,176,0,1,0,1,93,65,3,0,144,0,1,0,1,93,184,0,1,16,185,0,4,0,4,244,65,3,0,144,0,5,0,1,93,65,3,0,16,0,5,0,1,93,65,3,0,176,0,5,0,1,93,0,184,0,0,69,88,184,0,2,47,27,185,0,2,0,16,62,89,184,0,0,69,88,184,0,1,47,27,185,0,1,0,6,62,89,185,0,4,0,2,244,48,49,41,1,17,51,17,33,1,172,254,158,93,1,5,2,48,254,40,0,0,1,0,0,0,1,1,72,59,245,254,62,95,15,60,245,0,31,3,232,0,0,0,0,202,233,78,152,0,0,0,0,202,233,79,52,255,217,255,6,4,141,3,196,0,0,0,9,0,2,0,0,0,0,0,0,0,1,0,0,3,197,255,6,0,0,4,177,255,217,255,213,4,141,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,13,0,250,0,72,0,225,0,0,0,242,0,59,1,146,0,40,2,192,0,33,2,2,0,42,3,72,0,35,2,99,0,36,0,182,0,41,1,5,0,42,1,5,0,24,1,170,0,33,1,207,0,46,0,216,0,57,1,168,0,57,0,204,0,57,2,20,0,19,2,202,0,63,1,99,0,34,2,12,0,50,2,35,0,40,2,47,0,14,2,29,0,51,2,56,0,62,1,246,0,39,2,97,0,59,2,58,0,45,0,204,0,57,0,216,0,57,1,149,0,33,1,246,0,66,1,148,0,60,1,185,0,30,2,210,0,49,2,104,0,7,2,85,0,80,2,104,0,39,2,215,0,80,2,42,0,80,2,11,0,80,2,160,0,39,2,234,0,80,0,255,0,80,0,255,255,239,2,65,0,80,1,245,0,80,3,44,0,48,2,192,0,80,3,0,0,39,2,60,0,80,3,0,0,39,2,91,0,80,2,72,0,40,2,21,0,15,2,212,0,72,2,132,0,4,3,203,0,14,2,87,0,9,2,55,255,253,2,37,0,9,1,71,0,70,2,13,0,35,1,71,0,0,1,255,0,49,2,54,0,3,1,47,0,58,1,224,0,24,2,43,0,60,1,198,0,33,2,43,0,32,2,0,0,31,1,75,0,10,1,242,0,26,2,30,0,60,0,212,0,61,0,212,255,244,1,192,0,60,0,236,0,60,3,109,0,61,2,47,0,61,2,38,0,32,2,45,0,61,2,45,0,33,1,65,0,61,1,158,0,32,1,81,0,18,2,12,0,56,1,236,0,9,2,213,0,12,1,218,0,11,1,249,0,7,1,215,0,22,1,43,0,19,0,229,0,70,1,43,0,2,1,199,0,54,0,225,0,0,0,224,0,50,1,221,0,34,1,244,0,34,2,114,0,61,2,162,0,30,0,232,0,72,1,200,0,37,1,166,0,87,2,208,0,49,1,93,0,33,2,51,0,15,2,84,0,66,1,168,0,57,2,208,0,49,1,77,0,34,1,242,0,64,1,48,0,25,1,54,0,19,1,47,0,58,2,79,0,73,2,110,0,33,0,238,0,57,1,47,0,144,0,216,0,23,1,114,0,33,2,51,0,41,2,205,0,39,2,217,0,36,3,117,0,32,1,193,0,62,2,104,0,7,2,104,0,7,2,104,0,7,2,104,0,7,2,104,0,7,2,104,0,7,3,97,255,249,2,104,0,39,2,42,0,80,2,42,0,80,2,42,0,80,2,42,0,80,0,255,0,35,0,255,0,36,0,255,255,240,0,255,0,5,2,215,255,245,2,192,0,80,3,0,0,39,3,0,0,39,3,0,0,39,3,0,0,39,3,0,0,39,1,183,0,61,3,0,0,39,2,214,0,72,2,214,0,72,2,214,0,72,2,214,0,72,2,55,255,253,2,58,0,80,2,45,0,16,1,224,0,24,1,224,0,24,1,224,0,24,1,224,0,24,1,224,0,24,1,224,0,24,3,30,0,22,1,198,0,33,2,0,0,31,2,0,0,31,2,0,0,31,2,0,0,31,0,212,0,13,0,212,0,14,0,212,255,217,0,212,255,239,2,5,0,28,2,47,0,61,2,38,0,32,2,38,0,32,2,38,0,32,2,38,0,32,2,38,0,32,2,80,0,66,2,58,0,33,2,12,0,56,2,12,0,56,2,12,0,56,2,12,0,56,1,249,0,7,2,68,0,60,1,249,0,7,2,104,0,39,1,198,0,33,0,212,0,61,4,47,0,40,3,134,0,32,2,72,0,40,1,158,0,32,2,55,255,253,2,37,0,9,1,215,0,22,1,95,255,222,0,212,255,244,1,190,0,76,1,190,0,76,1,36,0,42,2,16,0,92,1,246,0,57,2,82,0,57,0,186,0,43,0,169,0,42,0,216,0,57,1,140,0,43,1,123,0,42,1,190,0,57,1,168,0,35,1,204,0,53,1,50,0,44,2,164,0,57,4,177,0,36,1,66,0,14,1,67,0,41,1,151,0,33,1,74,0,5,1,51,0,24,1,66,0,32,1,34,0,23,1,90,0,31,1,68,0,22,1,175,0,45,0,237,0,38,1,76,0,38,1,81,0,32,1,101,0,18,1,76,0,35,1,91,0,45,1,76,0,42,1,116,0,44,1,90,0,32,2,191,0,33,2,215,0,31,2,22,0,74,2,25,0,39,2,117,0,74,1,234,0,74,1,203,0,74,2,71,0,39,2,134,0,74,0,241,0,74,0,241,255,254,2,13,0,74,2,22,0,8,2,200,0,46,2,102,0,74,2,153,0,39,2,230,255,248,1,254,0,74,2,153,0,39,2,25,0,74,1,255,0,41,1,214,0,17,2,115,0,67,2,49,0,6,3,67,0,17,2,28,0,14,1,248,0,1,1,227,0,15,3,153,0,39,1,184,0,74,0,0,0,1,0,0,248,0,0,1,41,83,192,0,0,13,55,242,0,3,0,7,255,248,0,3,0,13,255,146,0,3,0,14,255,234,0,3,0,15,255,146,0,3,0,16,255,220,0,3,0,21,255,237,0,3,0,23,255,245,0,3,0,33,255,234,0,3,0,34,255,213,0,3,0,46,255,238,0,3,0,66,255,243,0,3,0,68,255,236,0,3,0,69,255,236,0,3,0,70,255,236,0,3,0,72,255,241,0,3,0,80,255,236,0,3,0,82,255,236,0,3,0,84,255,244,0,3,0,107,255,241,0,3,0,127,255,213,0,3,0,128,255,213,0,3,0,129,255,213,0,3,0,130,255,213,0,3,0,131,255,213,0,3,0,132,255,213,0,3,0,133,255,203,0,3,0,159,255,243,0,3,0,160,255,243,0,3,0,161,255,243,0,3,0,162,255,243,0,3,0,163,255,243,0,3,0,164,255,243,0,3,0,165,255,243,0,3,0,166,255,236,0,3,0,167,255,236,0,3,0,168,255,236,0,3,0,169,255,236,0,3,0,170,255,236,0,3,0,173,0,29,0,3,0,175,255,237,0,3,0,177,255,236,0,3,0,178,255,236,0,3,0,179,255,236,0,3,0,180,255,236,0,3,0,181,255,236,0,3,0,183,255,236,0,3,0,195,255,236,0,3,0,197,255,244,0,3,0,207,255,234,0,3,0,208,255,234,0,3,0,211,255,146,0,3,0,214,255,146,0,3,0,218,255,146,0,3,0,220,255,241,0,7,0,3,255,210,0,7,0,8,255,210,0,7,0,53,255,202,0,7,0,55,255,217,0,7,0,56,255,233,0,7,0,58,255,203,0,7,0,71,255,242,0,7,0,77,255,251,0,7,0,85,255,235,0,7,0,86,255,250,0,7,0,87,255,243,0,7,0,88,255,247,0,7,0,90,255,240,0,7,0,156,255,203,0,7,0,158,255,243,0,7,0,184,255,250,0,7,0,185,255,250,0,7,0,186,255,250,0,7,0,187,255,250,0,7,0,188,255,240,0,7,0,190,255,240,0,7,0,198,255,203,0,7,0,210,255,210,0,7,0,213,255,210,0,8,0,173,0,29,0,9,0,17,255,230,0,9,0,21,255,234,0,9,0,23,255,229,0,9,0,25,255,237,0,9,0,26,255,245,0,9,0,35,255,243,0,9,0,36,255,229,0,9,0,37,255,243,0,9,0,38,255,243,0,9,0,39,255,243,0,9,0,40,255,229,0,9,0,41,255,243,0,9,0,42,255,243,0,9,0,43,0,22,0,9,0,44,255,243,0,9,0,45,255,243,0,9,0,46,255,239,0,9,0,47,255,243,0,9,0,48,255,229,0,9,0,49,255,243,0,9,0,50,255,229,0,9,0,51,255,243,0,9,0,52,255,245,0,9,0,54,255,243,0,9,0,66,255,231,0,9,0,68,255,224,0,9,0,69,255,224,0,9,0,70,255,224,0,9,0,71,255,239,0,9,0,72,255,232,0,9,0,78,255,233,0,9,0,79,255,233,0,9,0,80,255,224,0,9,0,81,255,233,0,9,0,82,255,224,0,9,0,83,255,233,0,9,0,84,255,233,0,9,0,85,255,231,0,9,0,86,255,227,0,9,0,87,255,231,0,9,0,88,255,232,0,9,0,90,255,231,0,9,0,91,255,247,0,9,0,134,255,229,0,9,0,135,255,243,0,9,0,136,255,243,0,9,0,137,255,243,0,9,0,138,255,243,0,9,0,139,255,243,0,9,0,140,255,243,0,9,0,141,255,243,0,9,0,142,255,243,0,9,0,143,255,243,0,9,0,144,255,243,0,9,0,145,255,229,0,9,0,146,255,229,0,9,0,147,255,229,0,9,0,148,255,229,0,9,0,149,255,229,0,9,0,151,255,229,0,9,0,152,255,243,0,9,0,153,255,243,0,9,0,154,255,243,0,9,0,155,255,243,0,9,0,157,255,243,0,9,0,158,255,236,0,9,0,159,255,231,0,9,0,160,255,231,0,9,0,161,255,231,0,9,0,162,255,231,0,9,0,163,255,231,0,9,0,164,255,231,0,9,0,165,255,231,0,9,0,166,255,224,0,9,0,167,255,224,0,9,0,168,255,224,0,9,0,169,255,224,0,9,0,170,255,224,0,9,0,175,255,232,0,9,0,176,255,233,0,9,0,177,255,224,0,9,0,178,255,224,0,9,0,179,255,224,0,9,0,180,255,224,0,9,0,181,255,224,0,9,0,183,255,224,0,9,0,184,255,227,0,9,0,185,255,227,0,9,0,186,255,227,0,9,0,187,255,227,0,9,0,188,255,231,0,9,0,189,255,233,0,9,0,190,255,231,0,9,0,194,255,229,0,9,0,195,255,224,0,9,0,196,255,245,0,9,0,197,255,244,0,9,0,200,255,247,0,11,0,46,255,238,0,11,0,53,0,11,0,11,0,55,0,16,0,11,0,56,0,9,0,11,0,72,255,238,0,11,0,133,255,203,0,11,0,171,0,16,0,11,0,172,0,12,0,11,0,173,0,65,0,11,0,174,0,43,0,11,0,175,255,232,0,12,0,18,255,229,0,12,0,19,255,218,0,12,0,20,255,238,0,12,0,24,255,216,0,13,0,3,255,146,0,13,0,8,255,146,0,13,0,17,255,239,0,13,0,18,255,242,0,13,0,209,255,124,0,13,0,210,255,121,0,13,0,212,255,124,0,13,0,213,255,121,0,14,0,3,255,234,0,14,0,8,255,234,0,14,0,52,255,243,0,14,0,53,255,216,0,14,0,55,255,238,0,14,0,56,255,248,0,14,0,57,255,242,0,14,0,58,255,222,0,14,0,59,255,237,0,14,0,71,255,247,0,14,0,85,255,248,0,14,0,89,255,247,0,14,0,91,255,231,0,14,0,156,255,222,0,14,0,158,255,248,0,14,0,196,255,243,0,14,0,198,255,222,0,14,0,199,255,237,0,14,0,200,255,231,0,14,0,210,255,193,0,14,0,213,255,193,0,15,0,3,255,146,0,15,0,8,255,146,0,15,0,17,255,239,0,15,0,18,255,242,0,15,0,36,255,242,0,15,0,40,255,242,0,15,0,48,255,242,0,15,0,50,255,242,0,15,0,53,255,214,0,15,0,54,255,243,0,15,0,55,255,213,0,15,0,56,255,226,0,15,0,58,255,215,0,15,0,71,255,241,0,15,0,85,255,239,0,15,0,87,255,227,0,15,0,88,255,236,0,15,0,90,255,222,0,15,0,134,255,242,0,15,0,145,255,242,0,15,0,146,255,242,0,15,0,147,255,242,0,15,0,148,255,242,0,15,0,149,255,242,0,15,0,151,255,242,0,15,0,152,255,243,0,15,0,153,255,243,0,15,0,154,255,243,0,15,0,155,255,243,0,15,0,156,255,215,0,15,0,158,255,243,0,15,0,188,255,222,0,15,0,190,255,222,0,15,0,194,255,242,0,15,0,198,255,215,0,15,0,209,255,124,0,15,0,210,255,121,0,15,0,212,255,124,0,15,0,213,255,121,0,16,0,16,255,197,0,16,0,17,255,246,0,16,0,21,255,217,0,16,0,23,255,228,0,16,0,34,255,208,0,16,0,36,255,243,0,16,0,40,255,243,0,16,0,46,255,237,0,16,0,48,255,243,0,16,0,50,255,243,0,16,0,58,0,7,0,16,0,66,255,218,0,16,0,68,255,214,0,16,0,69,255,214,0,16,0,70,255,214,0,16,0,72,255,218,0,16,0,78,255,228,0,16,0,79,255,228,0,16,0,80,255,214,0,16,0,81,255,228,0,16,0,82,255,214,0,16,0,83,255,228,0,16,0,84,255,221,0,16,0,86,255,230,0,16,0,91,255,241,0,16,0,127,255,208,0,16,0,128,255,208,0,16,0,129,255,208,0,16,0,130,255,208,0,16,0,131,255,208,0,16,0,132,255,208,0,16,0,133,255,202,0,16,0,134,255,243,0,16,0,145,255,243,0,16,0,146,255,243,0,16,0,147,255,243,0,16,0,148,255,243,0,16,0,149,255,243,0,16,0,151,255,243,0,16,0,156,0,7,0,16,0,159,255,218,0,16,0,160,255,218,0,16,0,161,255,218,0,16,0,162,255,218,0,16,0,163,255,218,0,16,0,164,255,218,0,16,0,165,255,218,0,16,0,166,255,214,0,16,0,167,255,214,0,16,0,168,255,214,0,16,0,169,255,214,0,16,0,170,255,214,0,16,0,173,0,13,0,16,0,174,0,14,0,16,0,175,255,234,0,16,0,176,255,228,0,16,0,177,255,214,0,16,0,178,255,214,0,16,0,179,255,214,0,16,0,180,255,214,0,16,0,181,255,214,0,16,0,183,255,214,0,16,0,184,255,230,0,16,0,185,255,230,0,16,0,186,255,230,0,16,0,187,255,230,0,16,0,189,255,228,0,16,0,194,255,243,0,16,0,195,255,214,0,16,0,197,255,231,0,16,0,198,0,7,0,16,0,200,255,241,0,17,0,10,255,230,0,17,0,13,255,238,0,17,0,15,255,238,0,17,0,16,255,243,0,17,0,24,255,245,0,17,0,34,255,246,0,17,0,53,255,236,0,17,0,55,255,246,0,17,0,57,255,246,0,17,0,58,255,233,0,17,0,59,255,241,0,17,0,61,255,248,0,17,0,62,255,237,0,17,0,94,255,240,0,17,0,127,255,246,0,17,0,128,255,246,0,17,0,129,255,246,0,17,0,130,255,246,0,17,0,131,255,246,0,17,0,132,255,246,0,17,0,156,255,233,0,17,0,198,255,233,0,17,0,199,255,241,0,17,0,218,255,238,0,18,0,10,255,245,0,18,0,12,255,248,0,19,0,12,255,239,0,20,0,10,255,239,0,21,0,3,255,244,0,21,0,8,255,244,0,21,0,10,255,235,0,21,0,13,255,240,0,21,0,15,255,241,0,21,0,53,255,238,0,21,0,55,255,244,0,21,0,56,255,245,0,21,0,58,255,242,0,21,0,59,255,248,0,21,0,61,255,247,0,21,0,91,255,247,0,21,0,111,255,245,0,21,0,156,255,242,0,21,0,198,255,242,0,21,0,199,255,248,0,21,0,200,255,247,0,21,0,218,255,241,0,23,0,10,255,239,0,23,0,18,255,248,0,23,0,24,255,248,0,23,0,53,255,231,0,23,0,55,255,240,0,23,0,56,255,244,0,23,0,58,255,235,0,23,0,61,255,244,0,23,0,90,255,247,0,23,0,111,255,245,0,23,0,156,255,235,0,23,0,188,255,247,0,23,0,190,255,247,0,23,0,198,255,235,0,24,0,4,255,228,0,24,0,12,255,220,0,24,0,13,255,217,0,24,0,15,255,217,0,24,0,16,255,200,0,24,0,17,255,247,0,24,0,21,255,221,0,24,0,23,255,232,0,24,0,34,255,210,0,24,0,36,255,246,0,24,0,40,255,246,0,24,0,46,255,236,0,24,0,48,255,246,0,24,0,50,255,246,0,24,0,53,0,17,0,24,0,55,0,30,0,24,0,56,0,19,0,24,0,57,0,22,0,24,0,58,0,33,0,24,0,62,0,25,0,24,0,66,255,223,0,24,0,68,255,218,0,24,0,69,255,218,0,24,0,70,255,218,0,24,0,72,255,222,0,24,0,78,255,232,0,24,0,79,255,232,0,24,0,80,255,218,0,24,0,81,255,232,0,24,0,82,255,218,0,24,0,83,255,232,0,24,0,84,255,224,0,24,0,86,255,233,0,24,0,91,255,245,0,24,0,94,0,28,0,24,0,127,255,210,0,24,0,128,255,210,0,24,0,129,255,210,0,24,0,130,255,210,0,24,0,131,255,210,0,24,0,132,255,210,0,24,0,134,255,246,0,24,0,145,255,246,0,24,0,146,255,246,0,24,0,147,255,246,0,24,0,148,255,246,0,24,0,149,255,246,0,24,0,151,255,246,0,24,0,156,0,33,0,24,0,159,255,223,0,24,0,160,255,223,0,24,0,161,255,223,0,24,0,162,255,223,0,24,0,163,255,223,0,24,0,164,255,223,0,24,0,165,255,223,0,24,0,166,255,218,0,24,0,167,255,218,0,24,0,168,255,218,0,24,0,169,255,218,0,24,0,170,255,218,0,24,0,176,255,232,0,24,0,177,255,218,0,24,0,178,255,218,0,24,0,179,255,218,0,24,0,180,255,218,0,24,0,181,255,218,0,24,0,183,255,218,0,24,0,184,255,233,0,24,0,185,255,233,0,24,0,186,255,233,0,24,0,187,255,233,0,24,0,189,255,232,0,24,0,194,255,246,0,24,0,195,255,218,0,24,0,197,255,224,0,24,0,198,0,33,0,24,0,200,255,245,0,24,0,218,255,217,0,25,0,10,255,238,0,25,0,53,255,248,0,25,0,58,255,246,0,25,0,156,255,246,0,25,0,198,255,246,0,26,0,10,255,236,0,26,0,13,255,234,0,26,0,15,255,234,0,26,0,16,255,225,0,26,0,34,255,232,0,26,0,46,255,246,0,26,0,59,255,246,0,26,0,127,255,232,0,26,0,128,255,232,0,26,0,129,255,232,0,26,0,130,255,232,0,26,0,131,255,232,0,26,0,132,255,232,0,26,0,199,255,246,0,26,0,218,255,234,0,30,0,19,255,246,0,30,0,24,255,238,0,33,0,3,255,247,0,33,0,8,255,247,0,33,0,53,255,203,0,33,0,55,255,227,0,33,0,56,255,236,0,33,0,57,255,240,0,33,0,58,255,211,0,33,0,59,255,236,0,33,0,156,255,211,0,33,0,198,255,211,0,33,0,199,255,236,0,33,0,210,255,236,0,33,0,213,255,236,0,34,0,3,255,213,0,34,0,8,255,213,0,34,0,11,255,212,0,34,0,18,255,239,0,34,0,26,255,242,0,34,0,32,255,239,0,34,0,36,255,245,0,34,0,40,255,245,0,34,0,48,255,245,0,34,0,50,255,245,0,34,0,53,255,202,0,34,0,54,255,240,0,34,0,55,255,207,0,34,0,56,255,219,0,34,0,58,255,192,0,34,0,61,255,208,0,34,0,68,255,245,0,34,0,69,255,245,0,34,0,70,255,245,0,34,0,71,255,241,0,34,0,72,255,248,0,34,0,77,255,249,0,34,0,80,255,245,0,34,0,82,255,245,0,34,0,85,255,229,0,34,0,86,255,244,0,34,0,87,255,221,0,34,0,88,255,228,0,34,0,90,255,217,0,34,0,94,255,246,0,34,0,107,255,247,0,34,0,110,255,241,0,34,0,134,255,245,0,34,0,145,255,245,0,34,0,146,255,245,0,34,0,147,255,245,0,34,0,148,255,245,0,34,0,149,255,245,0,34,0,151,255,245,0,34,0,152,255,240,0,34,0,153,255,240,0,34,0,154,255,240,0,34,0,155,255,240,0,34,0,156,255,192,0,34,0,158,255,242,0,34,0,166,255,245,0,34,0,167,255,245,0,34,0,168,255,245,0,34,0,169,255,245,0,34,0,170,255,245,0,34,0,175,255,250,0,34,0,177,255,245,0,34,0,178,255,245,0,34,0,179,255,245,0,34,0,180,255,245,0,34,0,181,255,245,0,34,0,183,255,245,0,34,0,184,255,244,0,34,0,185,255,244,0,34,0,186,255,244,0,34,0,187,255,244,0,34,0,188,255,217,0,34,0,190,255,217,0,34,0,194,255,245,0,34,0,195,255,245,0,34,0,198,255,192,0,34,0,209,255,205,0,34,0,210,255,204,0,34,0,212,255,205,0,34,0,213,255,204,0,34,0,220,255,247,0,34,0,240,255,212,0,35,0,10,255,231,0,35,0,11,255,247,0,35,0,19,255,247,0,35,0,24,255,243,0,35,0,32,255,240,0,35,0,52,255,251,0,35,0,53,255,228,0,35,0,55,255,240,0,35,0,56,255,245,0,35,0,57,255,241,0,35,0,58,255,229,0,35,0,59,255,248,0,35,0,61,255,241,0,35,0,62,255,227,0,35,0,67,255,250,0,35,0,71,255,242,0,35,0,72,255,249,0,35,0,73,255,250,0,35,0,74,255,250,0,35,0,75,255,250,0,35,0,76,255,250,0,35,0,77,255,250,0,35,0,78,255,250,0,35,0,79,255,250,0,35,0,81,255,250,0,35,0,83,255,250,0,35,0,84,255,251,0,35,0,85,255,239,0,35,0,86,255,251,0,35,0,87,255,239,0,35,0,88,255,243,0,35,0,89,255,234,0,35,0,90,255,236,0,35,0,91,255,242,0,35,0,94,255,231,0,35,0,133,255,248,0,35,0,156,255,229,0,35,0,158,255,242,0,35,0,171,255,250,0,35,0,172,255,250,0,35,0,173,255,250,0,35,0,174,255,250,0,35,0,176,255,250,0,35,0,184,255,251,0,35,0,185,255,251,0,35,0,186,255,251,0,35,0,187,255,251,0,35,0,188,255,236,0,35,0,189,255,250,0,35,0,190,255,236,0,35,0,193,255,250,0,35,0,196,255,251,0,35,0,197,255,251,0,35,0,198,255,229,0,35,0,199,255,248,0,35,0,200,255,242,0,35,0,240,255,244,0,36,0,14,255,195,0,36,0,21,255,207,0,36,0,36,255,242,0,36,0,40,255,242,0,36,0,48,255,242,0,36,0,50,255,242,0,36,0,68,255,242,0,36,0,69,255,242,0,36,0,70,255,242,0,36,0,71,255,249,0,36,0,72,255,241,0,36,0,78,255,249,0,36,0,79,255,249,0,36,0,80,255,242,0,36,0,81,255,249,0,36,0,82,255,242,0,36,0,83,255,249,0,36,0,85,255,249,0,36,0,86,255,241,0,36,0,87,255,249,0,36,0,88,255,250,0,36,0,90,255,249,0,36,0,107,255,226,0,36,0,134,255,242,0,36,0,145,255,242,0,36,0,146,255,242,0,36,0,147,255,242,0,36,0,148,255,242,0,36,0,149,255,242,0,36,0,151,255,242,0,36,0,158,255,250,0,36,0,166,255,242,0,36,0,167,255,242,0,36,0,168,255,242,0,36,0,169,255,242,0,36,0,170,255,242,0,36,0,173,0,31,0,36,0,174,0,12,0,36,0,175,255,249,0,36,0,176,255,249,0,36,0,177,255,242,0,36,0,178,255,242,0,36,0,179,255,242,0,36,0,180,255,242,0,36,0,181,255,242,0,36,0,183,255,242,0,36,0,184,255,241,0,36,0,185,255,241,0,36,0,186,255,241,0,36,0,187,255,241,0,36,0,188,255,249,0,36,0,189,255,249,0,36,0,190,255,249,0,36,0,194,255,242,0,36,0,195,255,242,0,36,0,207,255,195,0,36,0,208,255,195,0,36,0,220,255,226,0,37,0,10,255,228,0,37,0,13,255,241,0,37,0,15,255,242,0,37,0,16,255,237,0,37,0,20,255,248,0,37,0,24,255,240,0,37,0,32,255,237,0,37,0,34,255,244,0,37,0,46,255,250,0,37,0,53,255,228,0,37,0,55,255,243,0,37,0,56,255,248,0,37,0,57,255,225,0,37,0,58,255,227,0,37,0,59,255,235,0,37,0,61,255,244,0,37,0,62,255,224,0,37,0,66,255,248,0,37,0,67,255,249,0,37,0,68,255,250,0,37,0,69,255,250,0,37,0,70,255,250,0,37,0,72,255,250,0,37,0,73,255,249,0,37,0,74,255,249,0,37,0,75,255,249,0,37,0,76,255,249,0,37,0,77,255,249,0,37,0,78,255,249,0,37,0,79,255,249,0,37,0,80,255,250,0,37,0,81,255,249,0,37,0,82,255,250,0,37,0,83,255,249,0,37,0,84,255,250,0,37,0,86,255,250,0,37,0,89,255,244,0,37,0,91,255,250,0,37,0,94,255,229,0,37,0,127,255,244,0,37,0,128,255,244,0,37,0,129,255,244,0,37,0,130,255,244,0,37,0,131,255,244,0,37,0,132,255,244,0,37,0,133,255,226,0,37,0,156,255,227,0,37,0,158,255,250,0,37,0,159,255,248,0,37,0,160,255,248,0,37,0,161,255,248,0,37,0,162,255,248,0,37,0,163,255,248,0,37,0,164,255,248,0,37,0,165,255,248,0,37,0,166,255,250,0,37,0,167,255,250,0,37,0,168,255,250,0,37,0,169,255,250,0,37,0,170,255,250,0,37,0,171,255,249,0,37,0,172,255,249,0,37,0,173,255,249,0,37,0,174,255,249,0,37,0,175,255,249,0,37,0,176,255,249,0,37,0,177,255,250,0,37,0,178,255,250,0,37,0,179,255,250,0,37,0,180,255,250,0,37,0,181,255,250,0,37,0,183,255,250,0,37,0,184,255,250,0,37,0,185,255,250,0,37,0,186,255,250,0,37,0,187,255,250,0,37,0,189,255,249,0,37,0,193,255,249,0,37,0,195,255,250,0,37,0,197,255,250,0,37,0,198,255,227,0,37,0,199,255,235,0,37,0,200,255,250,0,37,0,210,255,247,0,37,0,211,255,241,0,37,0,213,255,247,0,37,0,214,255,241,0,37,0,218,255,242,0,37,0,240,255,246,0,38,0,14,255,244,0,38,0,21,255,220,0,38,0,36,255,245,0,38,0,40,255,245,0,38,0,48,255,245,0,38,0,50,255,245,0,38,0,68,255,240,0,38,0,69,255,240,0,38,0,70,255,240,0,38,0,71,255,243,0,38,0,72,255,241,0,38,0,78,255,247,0,38,0,79,255,247,0,38,0,80,255,240,0,38,0,81,255,247,0,38,0,82,255,240,0,38,0,83,255,247,0,38,0,84,255,251,0,38,0,85,255,242,0,38,0,86,255,238,0,38,0,87,255,241,0,38,0,88,255,243,0,38,0,90,255,240,0,38,0,107,255,235,0,38,0,110,255,248,0,38,0,134,255,245,0,38,0,145,255,245,0,38,0,146,255,245,0,38,0,147,255,245,0,38,0,148,255,245,0,38,0,149,255,245,0,38,0,151,255,245,0,38,0,158,255,243,0,38,0,166,255,240,0,38,0,167,255,240,0,38,0,168,255,240,0,38,0,169,255,240,0,38,0,170,255,240,0,38,0,173,0,21,0,38,0,175,255,246,0,38,0,176,255,247,0,38,0,177,255,240,0,38,0,178,255,240,0,38,0,179,255,240,0,38,0,180,255,240,0,38,0,181,255,240,0,38,0,183,255,240,0,38,0,184,255,238,0,38,0,185,255,238,0,38,0,186,255,238,0,38,0,187,255,238,0,38,0,188,255,240,0,38,0,189,255,247,0,38,0,190,255,240,0,38,0,194,255,245,0,38,0,195,255,240,0,38,0,197,255,251,0,38,0,207,255,244,0,38,0,208,255,244,0,38,0,220,255,235,0,39,0,7,255,245,0,39,0,11,0,11,0,39,0,13,255,186,0,39,0,15,255,186,0,39,0,16,255,199,0,39,0,21,255,223,0,39,0,23,255,243,0,39,0,27,255,243,0,39,0,28,255,243,0,39,0,33,255,222,0,39,0,34,255,203,0,39,0,36,255,248,0,39,0,40,255,248,0,39,0,46,255,239,0,39,0,48,255,248,0,39,0,50,255,248,0,39,0,53,0,5,0,39,0,62,0,16,0,39,0,66,255,199,0,39,0,67,255,251,0,39,0,68,255,212,0,39,0,69,255,212,0,39,0,70,255,212,0,39,0,71,255,244,0,39,0,72,255,216,0,39,0,73,255,251,0,39,0,74,255,249,0,39,0,75,255,249,0,39,0,76,255,251,0,39,0,78,255,211,0,39,0,79,255,211,0,39,0,80,255,212,0,39,0,81,255,211,0,39,0,82,255,212,0,39,0,83,255,211,0,39,0,84,255,217,0,39,0,85,255,247,0,39,0,86,255,217,0,39,0,87,255,247,0,39,0,88,255,248,0,39,0,89,255,239,0,39,0,90,255,248,0,39,0,91,255,236,0,39,0,94,0,19,0,39,0,107,255,236,0,39,0,122,255,217,0,39,0,127,255,203,0,39,0,128,255,203,0,39,0,129,255,203,0,39,0,130,255,203,0,39,0,131,255,203,0,39,0,132,255,203,0,39,0,133,255,155,0,39,0,134,255,248,0,39,0,145,255,248,0,39,0,146,255,248,0,39,0,147,255,248,0,39,0,148,255,248,0,39,0,149,255,248,0,39,0,151,255,248,0,39,0,158,255,241,0,39,0,159,255,199,0,39,0,160,255,199,0,39,0,161,255,199,0,39,0,162,255,206,0,39,0,163,255,199,0,39,0,164,255,199,0,39,0,165,255,199,0,39,0,166,255,212,0,39,0,167,255,212,0,39,0,168,255,212,0,39,0,169,255,212,0,39,0,170,255,212,0,39,0,171,255,249,0,39,0,172,255,249,0,39,0,173,0,52,0,39,0,174,0,28,0,39,0,175,255,222,0,39,0,176,255,211,0,39,0,177,255,212,0,39,0,178,255,212,0,39,0,179,255,212,0,39,0,180,255,212,0,39,0,181,255,212,0,39,0,183,255,212,0,39,0,184,255,217,0,39,0,185,255,217,0,39,0,186,255,217,0,39,0,187,255,217,0,39,0,188,255,248,0,39,0,189,255,211,0,39,0,190,255,248,0,39,0,193,255,249,0,39,0,194,255,248,0,39,0,195,255,212,0,39,0,197,255,217,0,39,0,200,255,236,0,39,0,211,255,186,0,39,0,214,255,186,0,39,0,218,255,186,0,39,0,220,255,236,0,39,0,221,255,217,0,39,0,240,0,16,0,40,0,10,255,248,0,40,0,53,255,251,0,40,0,67,255,250,0,40,0,68,255,251,0,40,0,69,255,251,0,40,0,70,255,251,0,40,0,71,255,246,0,40,0,72,255,250,0,40,0,73,255,250,0,40,0,74,255,250,0,40,0,75,255,250,0,40,0,76,255,250,0,40,0,77,255,250,0,40,0,78,255,250,0,40,0,79,255,250,0,40,0,80,255,251,0,40,0,81,255,250,0,40,0,82,255,251,0,40,0,83,255,250,0,40,0,85,255,244,0,40,0,86,255,249,0,40,0,87,255,244,0,40,0,88,255,247,0,40,0,90,255,242,0,40,0,91,255,249,0,40,0,158,255,244,0,40,0,166,255,251,0,40,0,167,255,251,0,40,0,168,255,251,0,40,0,169,255,251,0,40,0,170,255,251,0,40,0,171,255,250,0,40,0,172,255,250,0,40,0,173,255,250,0,40,0,174,255,250,0,40,0,176,255,250,0,40,0,177,255,251,0,40,0,178,255,251,0,40,0,179,255,251,0,40,0,180,255,251,0,40,0,181,255,251,0,40,0,183,255,251,0,40,0,184,255,249,0,40,0,185,255,249,0,40,0,186,255,249,0,40,0,187,255,249,0,40,0,188,255,242,0,40,0,189,255,250,0,40,0,190,255,242,0,40,0,193,255,250,0,40,0,195,255,251,0,40,0,200,255,249,0,41,0,10,255,246,0,41,0,46,255,251,0,41,0,66,255,246,0,41,0,67,255,247,0,41,0,68,255,242,0,41,0,69,255,242,0,41,0,70,255,242,0,41,0,71,255,247,0,41,0,72,255,241,0,41,0,73,255,247,0,41,0,74,255,247,0,41,0,75,255,247,0,41,0,76,255,247,0,41,0,77,255,246,0,41,0,78,255,247,0,41,0,79,255,247,0,41,0,80,255,242,0,41,0,81,255,247,0,41,0,82,255,242,0,41,0,83,255,247,0,41,0,84,255,246,0,41,0,85,255,247,0,41,0,86,255,245,0,41,0,87,255,247,0,41,0,88,255,248,0,41,0,90,255,247,0,41,0,91,255,246,0,41,0,158,255,244,0,41,0,159,255,246,0,41,0,160,255,246,0,41,0,161,255,246,0,41,0,162,255,246,0,41,0,163,255,246,0,41,0,164,255,246,0,41,0,165,255,246,0,41,0,166,255,242,0,41,0,167,255,242,0,41,0,168,255,242,0,41,0,169,255,242,0,41,0,170,255,242,0,41,0,171,255,247,0,41,0,172,255,247,0,41,0,173,255,247,0,41,0,174,255,247,0,41,0,175,255,243,0,41,0,176,255,247,0,41,0,177,255,242,0,41,0,178,255,242,0,41,0,179,255,242,0,41,0,180,255,242,0,41,0,181,255,242,0,41,0,183,255,242,0,41,0,184,255,245,0,41,0,185,255,245,0,41,0,186,255,245,0,41,0,187,255,245,0,41,0,188,255,247,0,41,0,189,255,247,0,41,0,190,255,247,0,41,0,193,255,247,0,41,0,195,255,242,0,41,0,197,255,246,0,41,0,200,255,246,0,42,0,10,255,246,0,42,0,46,255,251,0,42,0,66,255,246,0,42,0,67,255,247,0,42,0,68,255,242,0,42,0,69,255,242,0,42,0,70,255,242,0,42,0,71,255,247,0,42,0,72,255,241,0,42,0,73,255,247,0,42,0,74,255,247,0,42,0,75,255,247,0,42,0,76,255,247,0,42,0,77,255,246,0,42,0,78,255,247,0,42,0,79,255,247,0,42,0,80,255,242,0,42,0,81,255,247,0,42,0,82,255,242,0,42,0,83,255,247,0,42,0,84,255,246,0,42,0,85,255,247,0,42,0,86,255,245,0,42,0,87,255,247,0,42,0,88,255,248,0,42,0,90,255,247,0,42,0,91,255,246,0,42,0,158,255,244,0,42,0,159,255,246,0,42,0,160,255,246,0,42,0,161,255,246,0,42,0,162,255,246,0,42,0,163,255,246,0,42,0,164,255,246,0,42,0,165,255,246,0,42,0,166,255,242,0,42,0,167,255,242,0,42,0,168,255,242,0,42,0,169,255,242,0,42,0,170,255,242,0,42,0,171,255,247,0,42,0,172,255,247,0,42,0,173,255,247,0,42,0,174,255,247,0,42,0,175,255,243,0,42,0,176,255,247,0,42,0,177,255,242,0,42,0,178,255,242,0,42,0,179,255,242,0,42,0,180,255,242,0,42,0,181,255,242,0,42,0,183,255,242,0,42,0,184,255,245,0,42,0,185,255,245,0,42,0,186,255,245,0,42,0,187,255,245,0,42,0,188,255,247,0,42,0,189,255,247,0,42,0,190,255,247,0,42,0,193,255,247,0,42,0,195,255,242,0,42,0,197,255,246,0,42,0,200,255,246,0,43,0,10,255,246,0,43,0,46,255,251,0,43,0,66,255,246,0,43,0,67,255,247,0,43,0,68,255,242,0,43,0,69,255,242,0,43,0,70,255,242,0,43,0,71,255,247,0,43,0,72,255,241,0,43,0,73,255,247,0,43,0,74,255,247,0,43,0,75,255,247,0,43,0,76,255,247,0,43,0,77,255,246,0,43,0,78,255,247,0,43,0,79,255,247,0,43,0,80,255,242,0,43,0,81,255,247,0,43,0,82,255,242,0,43,0,83,255,247,0,43,0,84,255,246,0,43,0,85,255,247,0,43,0,86,255,245,0,43,0,87,255,247,0,43,0,88,255,248,0,43,0,90,255,247,0,43,0,91,255,246,0,43,0,158,255,244,0,43,0,159,255,246,0,43,0,160,255,246,0,43,0,161,255,246,0,43,0,162,255,246,0,43,0,163,255,246,0,43,0,164,255,246,0,43,0,165,255,246,0,43,0,166,255,242,0,43,0,167,255,242,0,43,0,168,255,242,0,43,0,169,255,242,0,43,0,170,255,242,0,43,0,171,255,247,0,43,0,172,255,247,0,43,0,173,255,247,0,43,0,174,255,247,0,43,0,175,255,243,0,43,0,176,255,247,0,43,0,177,255,242,0,43,0,178,255,242,0,43,0,179,255,242,0,43,0,180,255,242,0,43,0,181,255,242,0,43,0,183,255,242,0,43,0,184,255,245,0,43,0,185,255,245,0,43,0,186,255,245,0,43,0,187,255,245,0,43,0,188,255,247,0,43,0,189,255,247,0,43,0,190,255,247,0,43,0,193,255,247,0,43,0,195,255,242,0,43,0,197,255,246,0,43,0,200,255,246,0,44,0,7,255,247,0,44,0,11,0,9,0,44,0,14,255,244,0,44,0,36,255,228,0,44,0,40,255,228,0,44,0,48,255,228,0,44,0,50,255,228,0,44,0,52,255,250,0,44,0,62,0,33,0,44,0,68,255,222,0,44,0,69,255,222,0,44,0,70,255,222,0,44,0,71,255,246,0,44,0,72,255,238,0,44,0,80,255,222,0,44,0,82,255,222,0,44,0,85,255,229,0,44,0,86,255,232,0,44,0,87,255,201,0,44,0,88,255,211,0,44,0,90,255,199,0,44,0,94,0,33,0,44,0,107,255,227,0,44,0,110,255,238,0,44,0,134,255,228,0,44,0,145,255,228,0,44,0,146,255,228,0,44,0,147,255,228,0,44,0,148,255,228,0,44,0,149,255,228,0,44,0,151,255,228,0,44,0,158,255,245,0,44,0,166,255,222,0,44,0,167,255,222,0,44,0,168,255,222,0,44,0,169,255,222,0,44,0,170,255,222,0,44,0,171,0,10,0,44,0,173,0,24,0,44,0,174,0,41,0,44,0,175,255,239,0,44,0,177,255,222,0,44,0,178,255,222,0,44,0,179,255,222,0,44,0,180,255,222,0,44,0,181,255,222,0,44,0,183,255,222,0,44,0,184,255,232,0,44,0,185,255,232,0,44,0,186,255,232,0,44,0,187,255,232,0,44,0,188,255,199,0,44,0,190,255,199,0,44,0,194,255,228,0,44,0,195,255,222,0,44,0,196,255,250,0,44,0,207,255,244,0,44,0,208,255,244,0,44,0,220,255,227,0,44,0,240,0,27,0,45,0,3,255,166,0,45,0,8,255,166,0,45,0,11,255,166,0,45,0,14,255,196,0,45,0,17,255,243,0,45,0,18,255,236,0,45,0,21,255,194,0,45,0,26,255,227,0,45,0,32,255,231,0,45,0,36,255,232,0,45,0,40,255,232,0,45,0,48,255,232,0,45,0,50,255,232,0,45,0,53,255,189,0,45,0,54,255,238,0,45,0,55,255,154,0,45,0,56,255,203,0,45,0,58,255,158,0,45,0,61,255,187,0,45,0,62,255,240,0,45,0,68,255,246,0,45,0,69,255,246,0,45,0,70,255,246,0,45,0,71,255,241,0,45,0,72,255,249,0,45,0,80,255,246,0,45,0,82,255,246,0,45,0,85,255,232,0,45,0,86,255,249,0,45,0,87,255,199,0,45,0,88,255,212,0,45,0,90,255,181,0,45,0,94,255,241,0,45,0,107,255,222,0,45,0,110,255,220,0,45,0,134,255,232,0,45,0,145,255,232,0,45,0,146,255,232,0,45,0,147,255,232,0,45,0,148,255,232,0,45,0,149,255,232,0,45,0,151,255,232,0,45,0,152,255,238,0,45,0,153,255,238,0,45,0,154,255,238,0,45,0,155,255,238,0,45,0,156,255,158,0,45,0,158,255,243,0,45,0,166,255,246,0,45,0,167,255,246,0,45,0,168,255,246,0,45,0,169,255,246,0,45,0,170,255,246,0,45,0,177,255,246,0,45,0,178,255,246,0,45,0,179,255,246,0,45,0,180,255,246,0,45,0,181,255,246,0,45,0,183,255,246,0,45,0,184,255,249,0,45,0,185,255,249,0,45,0,186,255,249,0,45,0,187,255,249,0,45,0,188,255,181,0,45,0,190,255,181,0,45,0,194,255,232,0,45,0,195,255,246,0,45,0,198,255,158,0,45,0,207,255,196,0,45,0,208,255,196,0,45,0,209,255,167,0,45,0,210,255,167,0,45,0,212,255,167,0,45,0,213,255,167,0,45,0,220,255,222,0,45,0,240,255,166,0,46,0,3,255,238,0,46,0,8,255,238,0,46,0,10,255,242,0,46,0,11,255,238,0,46,0,18,255,247,0,46,0,32,255,242,0,46,0,35,255,251,0,46,0,36,255,251,0,46,0,37,255,251,0,46,0,38,255,251,0,46,0,39,255,251,0,46,0,40,255,251,0,46,0,41,255,251,0,46,0,42,255,251,0,46,0,43,255,251,0,46,0,44,255,251,0,46,0,45,255,251,0,46,0,47,255,251,0,46,0,48,255,251,0,46,0,49,255,251,0,46,0,50,255,251,0,46,0,51,255,251,0,46,0,53,255,231,0,46,0,54,255,248,0,46,0,55,255,236,0,46,0,56,255,238,0,46,0,58,255,233,0,46,0,61,255,239,0,46,0,66,255,250,0,46,0,67,255,245,0,46,0,68,255,244,0,46,0,69,255,244,0,46,0,70,255,244,0,46,0,71,255,240,0,46,0,72,255,243,0,46,0,73,255,245,0,46,0,74,255,246,0,46,0,75,255,246,0,46,0,76,255,245,0,46,0,77,255,245,0,46,0,78,255,246,0,46,0,79,255,246,0,46,0,80,255,244,0,46,0,81,255,246,0,46,0,82,255,244,0,46,0,83,255,246,0,46,0,84,255,250,0,46,0,85,255,236,0,46,0,86,255,244,0,46,0,87,255,234,0,46,0,88,255,236,0,46,0,90,255,233,0,46,0,91,255,249,0,46,0,134,255,251,0,46,0,135,255,251,0,46,0,136,255,251,0,46,0,137,255,251,0,46,0,138,255,251,0,46,0,139,255,251,0,46,0,140,255,251,0,46,0,141,255,251,0,46,0,142,255,251,0,46,0,143,255,251,0,46,0,144,255,251,0,46,0,145,255,251,0,46,0,146,255,251,0,46,0,147,255,251,0,46,0,148,255,251,0,46,0,149,255,251,0,46,0,151,255,251,0,46,0,152,255,248,0,46,0,153,255,248,0,46,0,154,255,248,0,46,0,155,255,248,0,46,0,156,255,233,0,46,0,157,255,251,0,46,0,158,255,238,0,46,0,159,255,250,0,46,0,160,255,250,0,46,0,161,255,250,0,46,0,162,255,250,0,46,0,163,255,250,0,46,0,164,255,250,0,46,0,165,255,250,0,46,0,166,255,244,0,46,0,167,255,244,0,46,0,168,255,244,0,46,0,169,255,244,0,46,0,170,255,244,0,46,0,171,255,246,0,46,0,172,255,246,0,46,0,173,255,246,0,46,0,174,255,246,0,46,0,175,255,247,0,46,0,176,255,246,0,46,0,177,255,244,0,46,0,178,255,244,0,46,0,179,255,244,0,46,0,180,255,244,0,46,0,181,255,244,0,46,0,183,255,244,0,46,0,184,255,244,0,46,0,185,255,244,0,46,0,186,255,244,0,46,0,187,255,244,0,46,0,188,255,233,0,46,0,189,255,246,0,46,0,190,255,233,0,46,0,193,255,246,0,46,0,194,255,251,0,46,0,195,255,244,0,46,0,197,255,250,0,46,0,198,255,233,0,46,0,200,255,249,0,46,0,209,255,236,0,46,0,210,255,236,0,46,0,212,255,236,0,46,0,213,255,236,0,46,0,240,255,237,0,47,0,10,255,246,0,47,0,46,255,251,0,47,0,66,255,246,0,47,0,67,255,247,0,47,0,68,255,242,0,47,0,69,255,242,0,47,0,70,255,242,0,47,0,71,255,247,0,47,0,72,255,241,0,47,0,73,255,247,0,47,0,74,255,247,0,47,0,75,255,247,0,47,0,76,255,247,0,47,0,77,255,246,0,47,0,78,255,247,0,47,0,79,255,247,0,47,0,80,255,242,0,47,0,81,255,247,0,47,0,82,255,242,0,47,0,83,255,247,0,47,0,84,255,246,0,47,0,85,255,247,0,47,0,86,255,245,0,47,0,87,255,247,0,47,0,88,255,248,0,47,0,90,255,247,0,47,0,91,255,246,0,47,0,158,255,244,0,47,0,159,255,246,0,47,0,160,255,246,0,47,0,161,255,246,0,47,0,162,255,246,0,47,0,163,255,246,0,47,0,164,255,246,0,47,0,165,255,246,0,47,0,166,255,242,0,47,0,167,255,242,0,47,0,168,255,242,0,47,0,169,255,242,0,47,0,170,255,242,0,47,0,171,255,247,0,47,0,172,255,247,0,47,0,173,255,247,0,47,0,174,255,247,0,47,0,175,255,243,0,47,0,176,255,247,0,47,0,177,255,242,0,47,0,178,255,242,0,47,0,179,255,242,0,47,0,180,255,242,0,47,0,181,255,242,0,47,0,183,255,242,0,47,0,184,255,245,0,47,0,185,255,245,0,47,0,186,255,245,0,47,0,187,255,245,0,47,0,188,255,247,0,47,0,189,255,247,0,47,0,190,255,247,0,47,0,193,255,247,0,47,0,195,255,242,0,47,0,197,255,246,0,47,0,200,255,246,0,48,0,10,255,229,0,48,0,13,255,242,0,48,0,15,255,242,0,48,0,16,255,239,0,48,0,24,255,243,0,48,0,32,255,240,0,48,0,34,255,245,0,48,0,46,255,251,0,48,0,53,255,232,0,48,0,55,255,244,0,48,0,56,255,248,0,48,0,57,255,229,0,48,0,58,255,230,0,48,0,59,255,238,0,48,0,61,255,245,0,48,0,62,255,227,0,48,0,66,255,247,0,48,0,67,255,250,0,48,0,68,255,250,0,48,0,69,255,250,0,48,0,70,255,250,0,48,0,72,255,250,0,48,0,73,255,250,0,48,0,74,255,249,0,48,0,75,255,249,0,48,0,76,255,250,0,48,0,77,255,250,0,48,0,78,255,249,0,48,0,79,255,249,0,48,0,80,255,250,0,48,0,81,255,249,0,48,0,82,255,250,0,48,0,83,255,249,0,48,0,84,255,250,0,48,0,86,255,251,0,48,0,89,255,245,0,48,0,91,255,250,0,48,0,94,255,231,0,48,0,127,255,245,0,48,0,128,255,245,0,48,0,129,255,245,0,48,0,130,255,245,0,48,0,131,255,245,0,48,0,132,255,245,0,48,0,133,255,229,0,48,0,156,255,230,0,48,0,158,255,251,0,48,0,159,255,247,0,48,0,160,255,247,0,48,0,161,255,247,0,48,0,162,255,247,0,48,0,163,255,247,0,48,0,164,255,247,0,48,0,165,255,247,0,48,0,166,255,250,0,48,0,167,255,250,0,48,0,168,255,250,0,48,0,169,255,250,0,48,0,170,255,250,0,48,0,171,255,249,0,48,0,172,255,249,0,48,0,173,255,249,0,48,0,174,255,249,0,48,0,175,255,250,0,48,0,176,255,249,0,48,0,177,255,250,0,48,0,178,255,250,0,48,0,179,255,250,0,48,0,180,255,250,0,48,0,181,255,250,0,48,0,183,255,250,0,48,0,184,255,251,0,48,0,185,255,251,0,48,0,186,255,251,0,48,0,187,255,251,0,48,0,189,255,249,0,48,0,193,255,249,0,48,0,195,255,250,0,48,0,197,255,250,0,48,0,198,255,230,0,48,0,199,255,238,0,48,0,200,255,250,0,48,0,210,255,247,0,48,0,211,255,242,0,48,0,213,255,247,0,48,0,214,255,242,0,48,0,218,255,242,0,48,0,240,255,246,0,49,0,7,255,250,0,49,0,10,255,241,0,49,0,13,255,175,0,49,0,15,255,175,0,49,0,16,255,210,0,49,0,20,255,248,0,49,0,21,255,242,0,49,0,33,255,241,0,49,0,34,255,216,0,49,0,46,255,246,0,49,0,57,255,242,0,49,0,59,255,248,0,49,0,66,255,242,0,49,0,67,255,251,0,49,0,68,255,243,0,49,0,69,255,243,0,49,0,70,255,243,0,49,0,72,255,246,0,49,0,73,255,251,0,49,0,74,255,250,0,49,0,75,255,250,0,49,0,76,255,251,0,49,0,77,255,251,0,49,0,78,255,248,0,49,0,79,255,248,0,49,0,80,255,243,0,49,0,81,255,248,0,49,0,82,255,243,0,49,0,83,255,248,0,49,0,84,255,248,0,49,0,86,255,250,0,49,0,127,255,216,0,49,0,128,255,216,0,49,0,129,255,216,0,49,0,130,255,216,0,49,0,131,255,216,0,49,0,132,255,216,0,49,0,133,255,187,0,49,0,159,255,242,0,49,0,160,255,242,0,49,0,161,255,242,0,49,0,162,255,242,0,49,0,163,255,242,0,49,0,164,255,242,0,49,0,165,255,242,0,49,0,166,255,243,0,49,0,167,255,243,0,49,0,168,255,243,0,49,0,169,255,243,0,49,0,170,255,243,0,49,0,171,255,250,0,49,0,172,255,250,0,49,0,173,0,25,0,49,0,174,0,4,0,49,0,175,255,234,0,49,0,176,255,248,0,49,0,177,255,243,0,49,0,178,255,243,0,49,0,179,255,243,0,49,0,180,255,243,0,49,0,181,255,243,0,49,0,183,255,243,0,49,0,184,255,250,0,49,0,185,255,250,0,49,0,186,255,250,0,49,0,187,255,250,0,49,0,189,255,248,0,49,0,193,255,250,0,49,0,195,255,243,0,49,0,197,255,248,0,49,0,199,255,248,0,49,0,211,255,175,0,49,0,214,255,175,0,49,0,218,255,175,0,50,0,10,255,229,0,50,0,13,255,242,0,50,0,15,255,242,0,50,0,16,255,239,0,50,0,24,255,243,0,50,0,32,255,240,0,50,0,34,255,245,0,50,0,46,255,251,0,50,0,53,255,232,0,50,0,55,255,244,0,50,0,56,255,248,0,50,0,57,255,229,0,50,0,58,255,230,0,50,0,59,255,238,0,50,0,61,255,245,0,50,0,62,255,227,0,50,0,66,255,247,0,50,0,67,255,250,0,50,0,68,255,250,0,50,0,69,255,250,0,50,0,70,255,250,0,50,0,72,255,250,0,50,0,73,255,250,0,50,0,74,255,249,0,50,0,75,255,249,0,50,0,76,255,250,0,50,0,77,255,250,0,50,0,78,255,249,0,50,0,79,255,249,0,50,0,80,255,250,0,50,0,81,255,249,0,50,0,82,255,250,0,50,0,83,255,249,0,50,0,84,255,250,0,50,0,86,255,251,0,50,0,89,255,245,0,50,0,91,255,250,0,50,0,94,255,231,0,50,0,127,255,245,0,50,0,128,255,245,0,50,0,129,255,245,0,50,0,130,255,245,0,50,0,131,255,245,0,50,0,132,255,245,0,50,0,133,255,229,0,50,0,156,255,230,0,50,0,158,255,251,0,50,0,159,255,247,0,50,0,160,255,247,0,50,0,161,255,247,0,50,0,162,255,247,0,50,0,163,255,247,0,50,0,164,255,247,0,50,0,165,255,247,0,50,0,166,255,250,0,50,0,167,255,250,0,50,0,168,255,250,0,50,0,169,255,250,0,50,0,170,255,250,0,50,0,171,255,249,0,50,0,172,255,249,0,50,0,173,255,249,0,50,0,174,255,249,0,50,0,175,255,250,0,50,0,176,255,249,0,50,0,177,255,250,0,50,0,178,255,250,0,50,0,179,255,250,0,50,0,180,255,250,0,50,0,181,255,250,0,50,0,183,255,250,0,50,0,184,255,251,0,50,0,185,255,251,0,50,0,186,255,251,0,50,0,187,255,251,0,50,0,189,255,249,0,50,0,193,255,249,0,50,0,195,255,250,0,50,0,197,255,250,0,50,0,198,255,230,0,50,0,199,255,238,0,50,0,200,255,250,0,50,0,210,255,247,0,50,0,211,255,242,0,50,0,213,255,247,0,50,0,214,255,242,0,50,0,218,255,242,0,50,0,240,255,246,0,51,0,21,255,234,0,51,0,53,255,243,0,51,0,55,255,251,0,51,0,58,255,245,0,51,0,62,255,240,0,51,0,66,255,251,0,51,0,67,255,250,0,51,0,68,255,237,0,51,0,69,255,237,0,51,0,70,255,237,0,51,0,71,255,249,0,51,0,72,255,243,0,51,0,73,255,250,0,51,0,74,255,249,0,51,0,75,255,249,0,51,0,76,255,250,0,51,0,77,255,248,0,51,0,78,255,248,0,51,0,79,255,248,0,51,0,80,255,237,0,51,0,81,255,248,0,51,0,82,255,237,0,51,0,83,255,248,0,51,0,85,255,248,0,51,0,86,255,244,0,51,0,87,255,248,0,51,0,88,255,250,0,51,0,90,255,248,0,51,0,94,255,247,0,51,0,107,255,242,0,51,0,156,255,245,0,51,0,158,255,247,0,51,0,159,255,251,0,51,0,160,255,251,0,51,0,161,255,251,0,51,0,162,255,251,0,51,0,163,255,251,0,51,0,164,255,251,0,51,0,165,255,251,0,51,0,166,255,237,0,51,0,167,255,237,0,51,0,168,255,237,0,51,0,169,255,237,0,51,0,170,255,237,0,51,0,171,255,249,0,51,0,172,255,249,0,51,0,173,255,249,0,51,0,174,255,249,0,51,0,175,255,242,0,51,0,176,255,248,0,51,0,177,255,237,0,51,0,178,255,237,0,51,0,179,255,237,0,51,0,180,255,237,0,51,0,181,255,237,0,51,0,183,255,237,0,51,0,184,255,244,0,51,0,185,255,244,0,51,0,186,255,244,0,51,0,187,255,244,0,51,0,188,255,248,0,51,0,189,255,248,0,51,0,190,255,248,0,51,0,193,255,249,0,51,0,195,255,237,0,51,0,198,255,245,0,51,0,220,255,242,0,52,0,10,255,246,0,52,0,57,255,251,0,52,0,67,255,250,0,52,0,71,255,243,0,52,0,72,255,250,0,52,0,73,255,250,0,52,0,74,255,250,0,52,0,75,255,250,0,52,0,76,255,250,0,52,0,77,255,250,0,52,0,78,255,250,0,52,0,79,255,250,0,52,0,81,255,250,0,52,0,83,255,250,0,52,0,84,255,251,0,52,0,85,255,241,0,52,0,86,255,250,0,52,0,87,255,241,0,52,0,88,255,244,0,52,0,89,255,242,0,52,0,90,255,240,0,52,0,91,255,244,0,52,0,158,255,244,0,52,0,171,255,250,0,52,0,172,255,250,0,52,0,173,255,250,0,52,0,174,255,250,0,52,0,176,255,250,0,52,0,184,255,250,0,52,0,185,255,250,0,52,0,186,255,250,0,52,0,187,255,250,0,52,0,188,255,240,0,52,0,189,255,250,0,52,0,190,255,240,0,52,0,193,255,250,0,52,0,197,255,251,0,52,0,200,255,244,0,53,0,7,255,241,0,53,0,11,0,12,0,53,0,13,255,213,0,53,0,14,255,216,0,53,0,15,255,214,0,53,0,16,255,205,0,53,0,17,255,235,0,53,0,21,255,211,0,53,0,23,255,218,0,53,0,25,255,248,0,53,0,27,255,222,0,53,0,28,255,222,0,53,0,33,255,197,0,53,0,34,255,202,0,53,0,36,255,232,0,53,0,40,255,232,0,53,0,46,255,230,0,53,0,48,255,232,0,53,0,50,255,232,0,53,0,62,0,18,0,53,0,66,255,195,0,53,0,67,255,250,0,53,0,68,255,177,0,53,0,69,255,177,0,53,0,70,255,177,0,53,0,71,255,231,0,53,0,72,255,175,0,53,0,73,255,250,0,53,0,74,255,247,0,53,0,75,255,247,0,53,0,76,255,250,0,53,0,77,255,250,0,53,0,78,255,168,0,53,0,79,255,168,0,53,0,80,255,177,0,53,0,81,255,168,0,53,0,82,255,177,0,53,0,83,255,168,0,53,0,84,255,197,0,53,0,85,255,230,0,53,0,86,255,169,0,53,0,87,255,173,0,53,0,88,255,182,0,53,0,89,255,170,0,53,0,90,255,171,0,53,0,91,255,208,0,53,0,94,0,21,0,53,0,107,255,195,0,53,0,110,255,232,0,53,0,122,255,197,0,53,0,127,255,202,0,53,0,128,255,202,0,53,0,129,255,202,0,53,0,130,255,202,0,53,0,131,255,202,0,53,0,132,255,202,0,53,0,133,255,183,0,53,0,134,255,232,0,53,0,145,255,232,0,53,0,146,255,232,0,53,0,147,255,232,0,53,0,148,255,232,0,53,0,149,255,232,0,53,0,151,255,232,0,53,0,158,255,227,0,53,0,159,255,195,0,53,0,160,255,195,0,53,0,161,255,195,0,53,0,162,255,203,0,53,0,163,255,195,0,53,0,164,255,195,0,53,0,165,255,195,0,53,0,166,255,177,0,53,0,167,255,177,0,53,0,168,255,177,0,53,0,169,255,177,0,53,0,170,255,177,0,53,0,171,255,254,0,53,0,172,255,254,0,53,0,173,0,52,0,53,0,174,0,30,0,53,0,175,255,215,0,53,0,176,255,168,0,53,0,177,255,177,0,53,0,178,255,177,0,53,0,179,255,177,0,53,0,180,255,177,0,53,0,181,255,177,0,53,0,183,255,177,0,53,0,184,255,169,0,53,0,185,255,169,0,53,0,186,255,169,0,53,0,187,255,169,0,53,0,188,255,171,0,53,0,189,255,208,0,53,0,190,255,171,0,53,0,193,255,247,0,53,0,194,255,232,0,53,0,195,255,177,0,53,0,197,255,216,0,53,0,200,255,208,0,53,0,207,255,216,0,53,0,208,255,216,0,53,0,211,255,213,0,53,0,214,255,213,0,53,0,218,255,214,0,53,0,220,255,195,0,53,0,221,255,197,0,53,0,240,0,16,0,54,0,10,255,245,0,54,0,13,255,243,0,54,0,15,255,243,0,54,0,16,255,234,0,54,0,34,255,240,0,54,0,46,255,248,0,54,0,59,255,251,0,54,0,66,255,242,0,54,0,67,255,245,0,54,0,68,255,243,0,54,0,69,255,243,0,54,0,70,255,243,0,54,0,71,255,250,0,54,0,72,255,242,0,54,0,73,255,245,0,54,0,74,255,243,0,54,0,75,255,243,0,54,0,76,255,245,0,54,0,77,255,244,0,54,0,78,255,240,0,54,0,79,255,240,0,54,0,80,255,243,0,54,0,81,255,240,0,54,0,82,255,243,0,54,0,83,255,240,0,54,0,84,255,243,0,54,0,85,255,249,0,54,0,86,255,242,0,54,0,87,255,250,0,54,0,88,255,250,0,54,0,89,255,250,0,54,0,90,255,250,0,54,0,91,255,244,0,54,0,127,255,240,0,54,0,128,255,240,0,54,0,129,255,240,0,54,0,130,255,240,0,54,0,131,255,240,0,54,0,132,255,240,0,54,0,133,255,240,0,54,0,158,255,248,0,54,0,159,255,242,0,54,0,160,255,242,0,54,0,161,255,242,0,54,0,162,255,242,0,54,0,163,255,242,0,54,0,164,255,242,0,54,0,165,255,242,0,54,0,166,255,243,0,54,0,167,255,243,0,54,0,168,255,243,0,54,0,169,255,243,0,54,0,170,255,243,0,54,0,171,255,243,0,54,0,172,255,243,0,54,0,173,255,251,0,54,0,174,255,243,0,54,0,175,255,242,0,54,0,176,255,240,0,54,0,177,255,243,0,54,0,178,255,243,0,54,0,179,255,243,0,54,0,180,255,243,0,54,0,181,255,243,0,54,0,183,255,243,0,54,0,184,255,242,0,54,0,185,255,242,0,54,0,186,255,242,0,54,0,187,255,242,0,54,0,188,255,250,0,54,0,189,255,240,0,54,0,190,255,250,0,54,0,193,255,243,0,54,0,195,255,243,0,54,0,197,255,243,0,54,0,199,255,251,0,54,0,200,255,244,0,54,0,211,255,243,0,54,0,214,255,243,0,54,0,218,255,243,0,55,0,7,255,243,0,55,0,11,0,16,0,55,0,13,255,213,0,55,0,14,255,238,0,55,0,15,255,213,0,55,0,16,255,201,0,55,0,17,255,246,0,55,0,21,255,220,0,55,0,23,255,230,0,55,0,28,255,248,0,55,0,33,255,213,0,55,0,34,255,207,0,55,0,36,255,244,0,55,0,40,255,244,0,55,0,46,255,235,0,55,0,48,255,244,0,55,0,50,255,244,0,55,0,62,0,29,0,55,0,66,255,216,0,55,0,68,255,196,0,55,0,69,255,196,0,55,0,70,255,196,0,55,0,71,255,244,0,55,0,72,255,203,0,55,0,78,255,220,0,55,0,79,255,220,0,55,0,80,255,196,0,55,0,81,255,220,0,55,0,82,255,196,0,55,0,83,255,220,0,55,0,84,255,217,0,55,0,85,255,239,0,55,0,86,255,220,0,55,0,87,255,242,0,55,0,88,255,241,0,55,0,89,255,243,0,55,0,90,255,243,0,55,0,91,255,243,0,55,0,94,0,29,0,55,0,107,255,220,0,55,0,110,255,245,0,55,0,122,255,244,0,55,0,127,255,207,0,55,0,128,255,207,0,55,0,129,255,207,0,55,0,130,255,207,0,55,0,131,255,207,0,55,0,132,255,207,0,55,0,133,255,196,0,55,0,134,255,244,0,55,0,145,255,244,0,55,0,146,255,244,0,55,0,147,255,244,0,55,0,148,255,244,0,55,0,149,255,244,0,55,0,151,255,244,0,55,0,158,255,242,0,55,0,159,255,216,0,55,0,160,255,216,0,55,0,161,255,216,0,55,0,162,255,216,0,55,0,163,255,216,0,55,0,164,255,216,0,55,0,165,255,216,0,55,0,166,255,196,0,55,0,167,255,196,0,55,0,168,255,196,0,55,0,169,255,196,0,55,0,170,255,196,0,55,0,171,0,9,0,55,0,173,0,44,0,55,0,174,0,40,0,55,0,175,255,216,0,55,0,176,255,220,0,55,0,177,255,196,0,55,0,178,255,196,0,55,0,179,255,196,0,55,0,180,255,196,0,55,0,181,255,196,0,55,0,183,255,196,0,55,0,184,255,220,0,55,0,185,255,220,0,55,0,186,255,220,0,55,0,187,255,220,0,55,0,188,255,243,0,55,0,189,255,220,0,55,0,190,255,243,0,55,0,194,255,244,0,55,0,195,255,196,0,55,0,197,255,227,0,55,0,200,255,243,0,55,0,207,255,238,0,55,0,208,255,238,0,55,0,211,255,213,0,55,0,214,255,213,0,55,0,218,255,213,0,55,0,220,255,220,0,55,0,221,255,244,0,55,0,240,0,26,0,56,0,7,255,247,0,56,0,11,0,17,0,56,0,13,255,225,0,56,0,14,255,248,0,56,0,15,255,226,0,56,0,16,255,215,0,56,0,21,255,233,0,56,0,23,255,241,0,56,0,33,255,223,0,56,0,34,255,219,0,56,0,36,255,249,0,56,0,40,255,249,0,56,0,46,255,239,0,56,0,48,255,249,0,56,0,50,255,249,0,56,0,62,0,26,0,56,0,66,255,216,0,56,0,68,255,217,0,56,0,69,255,217,0,56,0,70,255,217,0,56,0,71,255,247,0,56,0,72,255,216,0,56,0,74,255,251,0,56,0,75,255,251,0,56,0,78,255,224,0,56,0,79,255,224,0,56,0,80,255,217,0,56,0,81,255,224,0,56,0,82,255,217,0,56,0,83,255,224,0,56,0,84,255,219,0,56,0,85,255,243,0,56,0,86,255,227,0,56,0,87,255,247,0,56,0,88,255,247,0,56,0,89,255,249,0,56,0,90,255,248,0,56,0,91,255,247,0,56,0,94,0,28,0,56,0,107,255,230,0,56,0,127,255,219,0,56,0,128,255,219,0,56,0,129,255,219,0,56,0,130,255,219,0,56,0,131,255,219,0,56,0,132,255,219,0,56,0,133,255,209,0,56,0,134,255,249,0,56,0,145,255,249,0,56,0,146,255,249,0,56,0,147,255,249,0,56,0,148,255,249,0,56,0,149,255,249,0,56,0,151,255,249,0,56,0,158,255,245,0,56,0,159,255,216,0,56,0,160,255,216,0,56,0,161,255,216,0,56,0,162,255,216,0,56,0,163,255,216,0,56,0,164,255,216,0,56,0,165,255,216,0,56,0,166,255,217,0,56,0,167,255,217,0,56,0,168,255,217,0,56,0,169,255,217,0,56,0,170,255,217,0,56,0,171,0,4,0,56,0,172,255,251,0,56,0,173,0,44,0,56,0,174,0,36,0,56,0,175,255,222,0,56,0,176,255,224,0,56,0,177,255,217,0,56,0,178,255,217,0,56,0,179,255,217,0,56,0,180,255,217,0,56,0,181,255,217,0,56,0,183,255,217,0,56,0,184,255,227,0,56,0,185,255,227,0,56,0,186,255,227,0,56,0,187,255,227,0,56,0,188,255,248,0,56,0,189,255,224,0,56,0,190,255,248,0,56,0,193,255,251,0,56,0,194,255,249,0,56,0,195,255,217,0,56,0,197,255,219,0,56,0,200,255,247,0,56,0,207,255,248,0,56,0,208,255,248,0,56,0,211,255,225,0,56,0,214,255,225,0,56,0,218,255,226,0,56,0,220,255,230,0,56,0,240,0,23,0,57,0,7,255,246,0,57,0,14,255,243,0,57,0,36,255,229,0,57,0,40,255,229,0,57,0,48,255,229,0,57,0,50,255,229,0,57,0,52,255,251,0,57,0,62,0,31,0,57,0,68,255,223,0,57,0,69,255,223,0,57,0,70,255,223,0,57,0,71,255,245,0,57,0,72,255,238,0,57,0,80,255,223,0,57,0,82,255,223,0,57,0,85,255,228,0,57,0,86,255,232,0,57,0,87,255,207,0,57,0,88,255,213,0,57,0,90,255,206,0,57,0,94,0,31,0,57,0,107,255,226,0,57,0,110,255,238,0,57,0,134,255,229,0,57,0,145,255,229,0,57,0,146,255,229,0,57,0,147,255,229,0,57,0,148,255,229,0,57,0,149,255,229,0,57,0,151,255,229,0,57,0,158,255,243,0,57,0,166,255,223,0,57,0,167,255,223,0,57,0,168,255,223,0,57,0,169,255,223,0,57,0,170,255,223,0,57,0,171,0,7,0,57,0,173,0,23,0,57,0,174,0,38,0,57,0,175,255,239,0,57,0,177,255,223,0,57,0,178,255,223,0,57,0,179,255,223,0,57,0,180,255,223,0,57,0,181,255,223,0,57,0,183,255,223,0,57,0,184,255,232,0,57,0,185,255,232,0,57,0,186,255,232,0,57,0,187,255,232,0,57,0,188,255,206,0,57,0,190,255,206,0,57,0,194,255,229,0,57,0,195,255,223,0,57,0,196,255,251,0,57,0,207,255,243,0,57,0,208,255,243,0,57,0,220,255,226,0,57,0,240,0,24,0,58,0,7,255,237,0,58,0,11,0,13,0,58,0,13,255,215,0,58,0,14,255,222,0,58,0,15,255,215,0,58,0,16,255,201,0,58,0,17,255,233,0,58,0,21,255,206,0,58,0,23,255,218,0,58,0,25,255,246,0,58,0,27,255,235,0,58,0,28,255,235,0,58,0,32,0,13,0,58,0,33,255,198,0,58,0,34,255,192,0,58,0,36,255,230,0,58,0,40,255,230,0,58,0,46,255,232,0,58,0,48,255,230,0,58,0,50,255,230,0,58,0,61,0,7,0,58,0,62,0,31,0,58,0,66,255,189,0,58,0,68,255,171,0,58,0,69,255,171,0,58,0,70,255,171,0,58,0,71,255,237,0,58,0,72,255,180,0,58,0,78,255,187,0,58,0,79,255,187,0,58,0,80,255,171,0,58,0,81,255,187,0,58,0,82,255,171,0,58,0,83,255,187,0,58,0,84,255,186,0,58,0,85,255,221,0,58,0,86,255,190,0,58,0,87,255,215,0,58,0,88,255,216,0,58,0,89,255,214,0,58,0,90,255,217,0,58,0,91,255,229,0,58,0,94,0,33,0,58,0,107,255,198,0,58,0,110,255,230,0,58,0,122,255,225,0,58,0,127,255,192,0,58,0,128,255,192,0,58,0,129,255,192,0,58,0,130,255,192,0,58,0,131,255,192,0,58,0,132,255,192,0,58,0,133,255,180,0,58,0,134,255,230,0,58,0,145,255,230,0,58,0,146,255,230,0,58,0,147,255,230,0,58,0,148,255,230,0,58,0,149,255,230,0,58,0,151,255,230,0,58,0,158,255,230,0,58,0,159,255,189,0,58,0,160,255,189,0,58,0,161,255,189,0,58,0,162,255,189,0,58,0,163,255,189,0,58,0,164,255,189,0,58,0,165,255,189,0,58,0,166,255,171,0,58,0,167,255,171,0,58,0,168,255,171,0,58,0,169,255,171,0,58,0,170,255,171,0,58,0,171,0,16,0,58,0,173,0,38,0,58,0,174,0,47,0,58,0,175,255,216,0,58,0,176,255,187,0,58,0,177,255,171,0,58,0,178,255,171,0,58,0,179,255,171,0,58,0,180,255,171,0,58,0,181,255,171,0,58,0,183,255,171,0,58,0,184,255,190,0,58,0,185,255,190,0,58,0,186,255,190,0,58,0,187,255,190,0,58,0,188,255,217,0,58,0,189,255,225,0,58,0,190,255,217,0,58,0,194,255,230,0,58,0,195,255,171,0,58,0,197,255,234,0,58,0,200,255,229,0,58,0,207,255,222,0,58,0,208,255,222,0,58,0,211,255,215,0,58,0,214,255,215,0,58,0,218,255,215,0,58,0,220,255,198,0,58,0,221,255,225,0,58,0,240,0,33,0,59,0,14,255,217,0,59,0,17,255,243,0,59,0,21,255,199,0,59,0,23,255,247,0,59,0,36,255,238,0,59,0,40,255,238,0,59,0,48,255,238,0,59,0,50,255,238,0,59,0,62,0,23,0,59,0,66,255,246,0,59,0,68,255,227,0,59,0,69,255,227,0,59,0,70,255,227,0,59,0,71,255,241,0,59,0,72,255,229,0,59,0,74,255,250,0,59,0,75,255,250,0,59,0,78,255,235,0,59,0,79,255,235,0,59,0,80,255,227,0,59,0,81,255,235,0,59,0,82,255,227,0,59,0,83,255,235,0,59,0,84,255,245,0,59,0,85,255,241,0,59,0,86,255,224,0,59,0,87,255,241,0,59,0,88,255,241,0,59,0,90,255,242,0,59,0,91,255,248,0,59,0,94,0,23,0,59,0,107,255,214,0,59,0,110,255,233,0,59,0,134,255,238,0,59,0,145,255,238,0,59,0,146,255,238,0,59,0,147,255,238,0,59,0,148,255,238,0,59,0,149,255,238,0,59,0,151,255,238,0,59,0,158,255,239,0,59,0,159,255,246,0,59,0,160,255,246,0,59,0,161,255,246,0,59,0,162,255,246,0,59,0,163,255,246,0,59,0,164,255,246,0,59,0,165,255,246,0,59,0,166,255,227,0,59,0,167,255,227,0,59,0,168,255,227,0,59,0,169,255,227,0,59,0,170,255,227,0,59,0,171,0,6,0,59,0,172,255,250,0,59,0,173,0,29,0,59,0,174,0,37,0,59,0,175,255,235,0,59,0,176,255,235,0,59,0,177,255,227,0,59,0,178,255,227,0,59,0,179,255,227,0,59,0,180,255,227,0,59,0,181,255,227,0,59,0,183,255,227,0,59,0,184,255,224,0,59,0,185,255,224,0,59,0,186,255,224,0,59,0,187,255,224,0,59,0,188,255,242,0,59,0,189,255,235,0,59,0,190,255,242,0,59,0,193,255,250,0,59,0,194,255,238,0,59,0,195,255,227,0,59,0,197,255,245,0,59,0,200,255,248,0,59,0,207,255,217,0,59,0,208,255,217,0,59,0,220,255,214,0,59,0,240,0,24,0,60,0,17,255,232,0,60,0,21,255,228,0,60,0,23,255,229,0,60,0,25,255,248,0,60,0,34,255,227,0,60,0,36,255,226,0,60,0,40,255,226,0,60,0,43,0,49,0,60,0,46,255,244,0,60,0,48,255,226,0,60,0,50,255,226,0,60,0,53,0,22,0,60,0,55,0,31,0,60,0,56,0,27,0,60,0,57,0,28,0,60,0,58,0,36,0,60,0,66,255,218,0,60,0,68,255,213,0,60,0,69,255,213,0,60,0,70,255,213,0,60,0,75,0,7,0,60,0,78,255,214,0,60,0,79,255,214,0,60,0,80,255,213,0,60,0,81,255,223,0,60,0,82,255,213,0,60,0,83,255,214,0,60,0,84,255,218,0,60,0,85,255,224,0,60,0,86,255,215,0,60,0,87,255,216,0,60,0,88,255,218,0,60,0,89,255,226,0,60,0,90,255,216,0,60,0,91,255,219,0,60,0,127,255,227,0,60,0,128,255,227,0,60,0,129,255,227,0,60,0,130,255,227,0,60,0,131,255,227,0,60,0,132,255,227,0,60,0,133,255,243,0,60,0,134,255,226,0,60,0,145,255,226,0,60,0,146,255,226,0,60,0,147,255,226,0,60,0,148,255,226,0,60,0,149,255,226,0,60,0,151,255,226,0,60,0,156,0,36,0,60,0,158,255,244,0,60,0,159,255,218,0,60,0,160,255,218,0,60,0,161,255,218,0,60,0,162,255,228,0,60,0,163,255,218,0,60,0,164,255,218,0,60,0,165,255,218,0,60,0,166,255,213,0,60,0,167,255,213,0,60,0,168,255,213,0,60,0,169,255,213,0,60,0,170,255,213,0,60,0,171,0,15,0,60,0,173,0,34,0,60,0,174,0,45,0,60,0,175,255,231,0,60,0,176,255,214,0,60,0,177,255,213,0,60,0,178,255,213,0,60,0,179,255,213,0,60,0,180,255,213,0,60,0,181,255,213,0,60,0,183,255,213,0,60,0,184,255,215,0,60,0,185,255,215,0,60,0,186,255,215,0,60,0,187,255,215,0,60,0,188,255,216,0,60,0,189,255,252,0,60,0,190,255,216,0,60,0,194,255,226,0,60,0,195,255,213,0,60,0,197,255,232,0,60,0,198,0,36,0,60,0,200,255,246,0,61,0,3,255,220,0,61,0,8,255,220,0,61,0,17,255,244,0,61,0,18,255,241,0,61,0,26,255,242,0,61,0,36,255,236,0,61,0,40,255,236,0,61,0,43,0,16,0,61,0,48,255,236,0,61,0,50,255,236,0,61,0,53,255,205,0,61,0,54,255,234,0,61,0,55,255,201,0,61,0,56,255,216,0,61,0,58,255,201,0,61,0,85,255,240,0,61,0,87,255,222,0,61,0,88,255,231,0,61,0,90,255,219,0,61,0,134,255,236,0,61,0,145,255,236,0,61,0,146,255,236,0,61,0,147,255,236,0,61,0,148,255,236,0,61,0,149,255,236,0,61,0,151,255,236,0,61,0,152,255,234,0,61,0,153,255,234,0,61,0,154,255,234,0,61,0,155,255,234,0,61,0,156,255,201,0,61,0,188,255,219,0,61,0,190,255,219,0,61,0,194,255,236,0,61,0,198,255,201,0,61,0,210,255,214,0,61,0,213,255,214,0,66,0,3,255,234,0,66,0,7,255,245,0,66,0,8,255,234,0,66,0,10,255,246,0,66,0,11,255,231,0,66,0,18,255,234,0,66,0,26,255,247,0,66,0,32,255,229,0,66,0,35,255,240,0,66,0,36,255,237,0,66,0,37,255,240,0,66,0,38,255,240,0,66,0,39,255,240,0,66,0,40,255,237,0,66,0,41,255,240,0,66,0,42,255,240,0,66,0,43,255,240,0,66,0,44,255,240,0,66,0,45,255,240,0,66,0,46,255,248,0,66,0,47,255,240,0,66,0,48,255,237,0,66,0,49,255,240,0,66,0,50,255,237,0,66,0,51,255,240,0,66,0,52,255,250,0,66,0,53,255,173,0,66,0,54,255,227,0,66,0,55,255,193,0,66,0,56,255,210,0,66,0,58,255,165,0,66,0,61,255,210,0,66,0,62,255,227,0,66,0,71,255,251,0,66,0,85,255,246,0,66,0,87,255,238,0,66,0,88,255,243,0,66,0,90,255,236,0,66,0,94,255,231,0,66,0,110,255,248,0,66,0,134,255,237,0,66,0,135,255,240,0,66,0,136,255,240,0,66,0,137,255,240,0,66,0,138,255,240,0,66,0,139,255,240,0,66,0,140,255,240,0,66,0,141,255,240,0,66,0,142,255,240,0,66,0,143,255,240,0,66,0,144,255,240,0,66,0,145,255,237,0,66,0,146,255,237,0,66,0,147,255,237,0,66,0,148,255,237,0,66,0,149,255,237,0,66,0,151,255,237,0,66,0,152,255,227,0,66,0,153,255,227,0,66,0,154,255,227,0,66,0,155,255,227,0,66,0,156,255,165,0,66,0,157,255,240,0,66,0,158,255,249,0,66,0,188,255,236,0,66,0,190,255,236,0,66,0,194,255,237,0,66,0,196,255,250,0,66,0,198,255,165,0,66,0,209,255,186,0,66,0,210,255,183,0,66,0,212,255,186,0,66,0,213,255,183,0,66,0,240,255,230,0,67,0,3,255,234,0,67,0,7,255,246,0,67,0,8,255,234,0,67,0,10,255,227,0,67,0,11,255,232,0,67,0,13,255,246,0,67,0,15,255,247,0,67,0,18,255,235,0,67,0,19,255,232,0,67,0,24,255,226,0,67,0,32,255,224,0,67,0,34,255,240,0,67,0,35,255,237,0,67,0,36,255,246,0,67,0,37,255,237,0,67,0,38,255,237,0,67,0,39,255,237,0,67,0,40,255,246,0,67,0,41,255,237,0,67,0,42,255,237,0,67,0,43,255,237,0,67,0,44,255,237,0,67,0,45,255,237,0,67,0,46,255,239,0,67,0,47,255,237,0,67,0,48,255,246,0,67,0,49,255,237,0,67,0,50,255,246,0,67,0,51,255,237,0,67,0,52,255,237,0,67,0,53,255,171,0,67,0,54,255,238,0,67,0,55,255,193,0,67,0,56,255,212,0,67,0,57,255,217,0,67,0,58,255,167,0,67,0,59,255,227,0,67,0,61,255,217,0,67,0,62,255,217,0,67,0,71,255,251,0,67,0,85,255,250,0,67,0,87,255,247,0,67,0,88,255,251,0,67,0,89,255,238,0,67,0,90,255,245,0,67,0,91,255,246,0,67,0,94,255,226,0,67,0,122,255,247,0,67,0,127,255,240,0,67,0,128,255,240,0,67,0,129,255,240,0,67,0,130,255,240,0,67,0,131,255,240,0,67,0,132,255,240,0,67,0,134,255,246,0,67,0,135,255,237,0,67,0,136,255,237,0,67,0,137,255,237,0,67,0,138,255,237,0,67,0,139,255,237,0,67,0,140,255,237,0,67,0,141,255,237,0,67,0,142,255,237,0,67,0,143,255,237,0,67,0,144,255,237,0,67,0,145,255,246,0,67,0,146,255,246,0,67,0,147,255,246,0,67,0,148,255,246,0,67,0,149,255,246,0,67,0,151,255,246,0,67,0,152,255,238,0,67,0,153,255,238,0,67,0,154,255,238,0,67,0,155,255,238,0,67,0,156,255,167,0,67,0,157,255,237,0,67,0,158,255,248,0,67,0,188,255,245,0,67,0,190,255,245,0,67,0,194,255,246,0,67,0,196,255,237,0,67,0,198,255,167,0,67,0,199,255,227,0,67,0,200,255,246,0,67,0,209,255,181,0,67,0,210,255,178,0,67,0,211,255,246,0,67,0,212,255,181,0,67,0,213,255,178,0,67,0,214,255,246,0,67,0,218,255,247,0,67,0,221,255,247,0,67,0,240,255,234,0,68,0,7,255,240,0,68,0,10,255,244,0,68,0,14,255,219,0,68,0,21,255,231,0,68,0,24,255,245,0,68,0,32,255,228,0,68,0,35,255,247,0,68,0,36,255,244,0,68,0,37,255,247,0,68,0,38,255,247,0,68,0,39,255,247,0,68,0,40,255,244,0,68,0,41,255,247,0,68,0,42,255,247,0,68,0,43,255,247,0,68,0,44,255,247,0,68,0,45,255,247,0,68,0,46,255,251,0,68,0,47,255,247,0,68,0,48,255,244,0,68,0,49,255,247,0,68,0,50,255,244,0,68,0,51,255,247,0,68,0,52,255,244,0,68,0,53,255,190,0,68,0,54,255,243,0,68,0,55,255,236,0,68,0,56,255,241,0,68,0,58,255,218,0,68,0,61,255,240,0,68,0,62,255,232,0,68,0,68,255,249,0,68,0,69,255,249,0,68,0,70,255,249,0,68,0,80,255,249,0,68,0,82,255,249,0,68,0,94,255,239,0,68,0,107,255,243,0,68,0,134,255,244,0,68,0,135,255,247,0,68,0,136,255,247,0,68,0,137,255,247,0,68,0,138,255,247,0,68,0,139,255,247,0,68,0,140,255,247,0,68,0,141,255,247,0,68,0,142,255,247,0,68,0,143,255,247,0,68,0,144,255,247,0,68,0,145,255,244,0,68,0,146,255,244,0,68,0,147,255,244,0,68,0,148,255,244,0,68,0,149,255,244,0,68,0,151,255,244,0,68,0,152,255,243,0,68,0,153,255,243,0,68,0,154,255,243,0,68,0,155,255,243,0,68,0,156,255,218,0,68,0,157,255,247,0,68,0,166,255,249,0,68,0,167,255,249,0,68,0,168,255,249,0,68,0,169,255,249,0,68,0,170,255,249,0,68,0,175,255,251,0,68,0,177,255,249,0,68,0,178,255,249,0,68,0,179,255,249,0,68,0,180,255,249,0,68,0,181,255,249,0,68,0,183,255,249,0,68,0,194,255,244,0,68,0,195,255,249,0,68,0,196,255,244,0,68,0,198,255,218,0,68,0,207,255,219,0,68,0,208,255,219,0,68,0,209,255,216,0,68,0,210,255,213,0,68,0,212,255,216,0,68,0,213,255,213,0,68,0,220,255,243,0,68,0,240,255,245,0,69,0,7,255,244,0,69,0,34,255,249,0,69,0,35,255,242,0,69,0,36,255,245,0,69,0,37,255,242,0,69,0,38,255,242,0,69,0,39,255,242,0,69,0,40,255,245,0,69,0,41,255,242,0,69,0,42,255,242,0,69,0,43,255,242,0,69,0,44,255,242,0,69,0,45,255,242,0,69,0,46,255,240,0,69,0,47,255,242,0,69,0,48,255,245,0,69,0,49,255,242,0,69,0,50,255,245,0,69,0,51,255,242,0,69,0,52,255,246,0,69,0,53,255,245,0,69,0,54,255,240,0,69,0,55,255,250,0,69,0,56,255,248,0,69,0,58,255,251,0,69,0,59,255,245,0,69,0,127,255,249,0,69,0,128,255,249,0,69,0,129,255,249,0,69,0,130,255,249,0,69,0,131,255,249,0,69,0,132,255,249,0,69,0,134,255,245,0,69,0,135,255,242,0,69,0,136,255,242,0,69,0,137,255,242,0,69,0,138,255,242,0,69,0,139,255,242,0,69,0,140,255,242,0,69,0,141,255,242,0,69,0,142,255,242,0,69,0,143,255,242,0,69,0,144,255,242,0,69,0,145,255,245,0,69,0,146,255,245,0,69,0,147,255,245,0,69,0,148,255,245,0,69,0,149,255,245,0,69,0,151,255,245,0,69,0,152,255,240,0,69,0,153,255,240,0,69,0,154,255,240,0,69,0,155,255,240,0,69,0,156,255,251,0,69,0,157,255,242,0,69,0,194,255,245,0,69,0,196,255,246,0,69,0,198,255,251,0,69,0,199,255,245,0,70,0,3,255,241,0,70,0,7,255,246,0,70,0,8,255,241,0,70,0,10,255,230,0,70,0,11,255,238,0,70,0,18,255,235,0,70,0,19,255,245,0,70,0,24,255,230,0,70,0,32,255,223,0,70,0,34,255,251,0,70,0,35,255,241,0,70,0,36,255,250,0,70,0,37,255,241,0,70,0,38,255,241,0,70,0,39,255,241,0,70,0,40,255,250,0,70,0,41,255,241,0,70,0,42,255,241,0,70,0,43,255,241,0,70,0,44,255,241,0,70,0,45,255,241,0,70,0,46,255,243,0,70,0,47,255,241,0,70,0,48,255,250,0,70,0,49,255,241,0,70,0,50,255,250,0,70,0,51,255,241,0,70,0,52,255,241,0,70,0,53,255,187,0,70,0,54,255,240,0,70,0,55,255,209,0,70,0,56,255,213,0,70,0,57,255,243,0,70,0,58,255,174,0,70,0,59,255,243,0,70,0,61,255,220,0,70,0,62,255,220,0,70,0,87,255,252,0,70,0,89,255,251,0,70,0,90,255,251,0,70,0,94,255,227,0,70,0,127,255,251,0,70,0,128,255,251,0,70,0,129,255,251,0,70,0,130,255,251,0,70,0,131,255,251,0,70,0,132,255,251,0,70,0,134,255,250,0,70,0,135,255,241,0,70,0,136,255,241,0,70,0,137,255,241,0,70,0,138,255,241,0,70,0,139,255,241,0,70,0,140,255,241,0,70,0,141,255,241,0,70,0,142,255,241,0,70,0,143,255,241,0,70,0,144,255,241,0,70,0,145,255,250,0,70,0,146,255,250,0,70,0,147,255,250,0,70,0,148,255,250,0,70,0,149,255,250,0,70,0,151,255,250,0,70,0,152,255,240,0,70,0,153,255,240,0,70,0,154,255,240,0,70,0,155,255,240,0,70,0,156,255,174,0,70,0,157,255,241,0,70,0,188,255,251,0,70,0,190,255,251,0,70,0,194,255,250,0,70,0,196,255,241,0,70,0,198,255,174,0,70,0,199,255,243,0,70,0,209,255,189,0,70,0,210,255,186,0,70,0,212,255,189,0,70,0,213,255,186,0,70,0,240,255,237,0,71,0,7,255,235,0,71,0,13,255,229,0,71,0,14,255,232,0,71,0,15,255,229,0,71,0,16,255,234,0,71,0,21,255,244,0,71,0,33,255,239,0,71,0,34,255,211,0,71,0,35,255,244,0,71,0,37,255,244,0,71,0,38,255,244,0,71,0,39,255,244,0,71,0,41,255,244,0,71,0,42,255,244,0,71,0,43,255,244,0,71,0,44,255,244,0,71,0,45,255,244,0,71,0,46,255,229,0,71,0,47,255,244,0,71,0,49,255,244,0,71,0,51,255,244,0,71,0,54,255,247,0,71,0,59,255,243,0,71,0,66,255,251,0,71,0,68,255,246,0,71,0,69,255,246,0,71,0,70,255,246,0,71,0,72,255,252,0,71,0,80,255,246,0,71,0,82,255,246,0,71,0,94,0,8,0,71,0,107,255,239,0,71,0,127,255,211,0,71,0,128,255,211,0,71,0,129,255,211,0,71,0,130,255,211,0,71,0,131,255,211,0,71,0,132,255,211,0,71,0,135,255,244,0,71,0,136,255,244,0,71,0,137,255,244,0,71,0,138,255,244,0,71,0,139,255,244,0,71,0,140,255,244,0,71,0,141,255,244,0,71,0,142,255,244,0,71,0,143,255,244,0,71,0,144,255,244,0,71,0,152,255,247,0,71,0,153,255,247,0,71,0,154,255,247,0,71,0,155,255,247,0,71,0,157,255,244,0,71,0,159,255,251,0,71,0,160,255,251,0,71,0,161,255,251,0,71,0,162,255,251,0,71,0,163,255,251,0,71,0,164,255,251,0,71,0,165,255,251,0,71,0,166,255,246,0,71,0,167,255,246,0,71,0,168,255,246,0,71,0,169,255,246,0,71,0,170,255,246,0,71,0,175,255,224,0,71,0,177,255,246,0,71,0,178,255,246,0,71,0,179,255,246,0,71,0,180,255,246,0,71,0,181,255,246,0,71,0,183,255,246,0,71,0,195,255,246,0,71,0,199,255,243,0,71,0,207,255,232,0,71,0,208,255,232,0,71,0,211,255,229,0,71,0,214,255,229,0,71,0,218,255,229,0,71,0,220,255,239,0,72,0,7,255,244,0,72,0,10,0,5,0,72,0,16,0,14,0,72,0,24,255,225,0,72,0,32,255,217,0,72,0,34,255,249,0,72,0,35,255,245,0,72,0,37,255,245,0,72,0,38,255,245,0,72,0,39,255,245,0,72,0,41,255,245,0,72,0,42,255,245,0,72,0,43,0,45,0,72,0,44,255,245,0,72,0,45,255,245,0,72,0,46,255,242,0,72,0,47,255,245,0,72,0,49,255,245,0,72,0,51,255,245,0,72,0,53,255,208,0,72,0,54,255,246,0,72,0,55,255,247,0,72,0,56,255,250,0,72,0,57,255,250,0,72,0,58,255,238,0,72,0,59,255,245,0,72,0,62,0,25,0,72,0,75,0,19,0,72,0,94,0,29,0,72,0,127,255,249,0,72,0,128,255,249,0,72,0,129,255,249,0,72,0,130,255,249,0,72,0,131,255,249,0,72,0,132,255,249,0,72,0,135,255,245,0,72,0,136,255,245,0,72,0,137,255,245,0,72,0,138,255,245,0,72,0,139,255,245,0,72,0,140,255,245,0,72,0,141,255,245,0,72,0,142,255,245,0,72,0,143,255,245,0,72,0,144,255,245,0,72,0,152,255,246,0,72,0,153,255,246,0,72,0,154,255,246,0,72,0,155,255,246,0,72,0,156,255,238,0,72,0,157,255,245,0,72,0,175,255,250,0,72,0,198,255,238,0,72,0,199,255,245,0,72,0,209,255,223,0,72,0,210,255,221,0,72,0,212,255,223,0,72,0,213,255,221,0,73,0,2,255,248,0,73,0,3,255,238,0,73,0,7,255,245,0,73,0,8,255,238,0,73,0,10,255,232,0,73,0,11,255,235,0,73,0,18,255,231,0,73,0,24,255,233,0,73,0,32,255,224,0,73,0,34,255,250,0,73,0,35,255,238,0,73,0,36,255,243,0,73,0,37,255,238,0,73,0,38,255,238,0,73,0,39,255,238,0,73,0,40,255,243,0,73,0,41,255,238,0,73,0,42,255,238,0,73,0,43,255,238,0,73,0,44,255,238,0,73,0,45,255,238,0,73,0,46,255,241,0,73,0,47,255,238,0,73,0,48,255,243,0,73,0,49,255,238,0,73,0,50,255,243,0,73,0,51,255,238,0,73,0,52,255,241,0,73,0,53,255,162,0,73,0,54,255,231,0,73,0,55,255,198,0,73,0,56,255,214,0,73,0,57,255,249,0,73,0,58,255,163,0,73,0,59,255,245,0,73,0,61,255,214,0,73,0,62,255,216,0,73,0,71,255,251,0,73,0,85,255,248,0,73,0,87,255,243,0,73,0,88,255,248,0,73,0,90,255,242,0,73,0,94,255,225,0,73,0,127,255,250,0,73,0,128,255,250,0,73,0,129,255,250,0,73,0,130,255,250,0,73,0,131,255,250,0,73,0,132,255,250,0,73,0,134,255,243,0,73,0,135,255,238,0,73,0,136,255,238,0,73,0,137,255,238,0,73,0,138,255,238,0,73,0,139,255,238,0,73,0,140,255,238,0,73,0,141,255,238,0,73,0,142,255,238,0,73,0,143,255,238,0,73,0,144,255,238,0,73,0,145,255,243,0,73,0,146,255,243,0,73,0,147,255,243,0,73,0,148,255,243,0,73,0,149,255,243,0,73,0,151,255,243,0,73,0,152,255,231,0,73,0,153,255,231,0,73,0,154,255,231,0,73,0,155,255,231,0,73,0,156,255,163,0,73,0,157,255,238,0,73,0,158,255,248,0,73,0,188,255,242,0,73,0,190,255,242,0,73,0,194,255,243,0,73,0,196,255,241,0,73,0,198,255,163,0,73,0,199,255,245,0,73,0,209,255,187,0,73,0,210,255,184,0,73,0,212,255,187,0,73,0,213,255,184,0,73,0,240,255,235,0,74,0,7,255,244,0,74,0,34,255,248,0,74,0,35,255,242,0,74,0,36,255,244,0,74,0,37,255,242,0,74,0,38,255,242,0,74,0,39,255,242,0,74,0,40,255,244,0,74,0,41,255,242,0,74,0,42,255,242,0,74,0,43,255,242,0,74,0,44,255,242,0,74,0,45,255,242,0,74,0,46,255,241,0,74,0,47,255,242,0,74,0,48,255,244,0,74,0,49,255,242,0,74,0,50,255,244,0,74,0,51,255,242,0,74,0,52,255,244,0,74,0,53,255,242,0,74,0,54,255,238,0,74,0,55,255,247,0,74,0,56,255,246,0,74,0,58,255,247,0,74,0,59,255,245,0,74,0,127,255,248,0,74,0,128,255,248,0,74,0,129,255,248,0,74,0,130,255,248,0,74,0,131,255,248,0,74,0,132,255,248,0,74,0,134,255,244,0,74,0,135,255,242,0,74,0,136,255,242,0,74,0,137,255,242,0,74,0,138,255,242,0,74,0,139,255,242,0,74,0,140,255,242,0,74,0,141,255,242,0,74,0,142,255,242,0,74,0,143,255,242,0,74,0,144,255,242,0,74,0,145,255,244,0,74,0,146,255,244,0,74,0,147,255,244,0,74,0,148,255,244,0,74,0,149,255,244,0,74,0,151,255,244,0,74,0,152,255,238,0,74,0,153,255,238,0,74,0,154,255,238,0,74,0,155,255,238,0,74,0,156,255,247,0,74,0,157,255,242,0,74,0,194,255,244,0,74,0,196,255,244,0,74,0,198,255,247,0,74,0,199,255,245,0,75,0,7,255,244,0,75,0,34,255,248,0,75,0,35,255,242,0,75,0,36,255,244,0,75,0,37,255,242,0,75,0,38,255,242,0,75,0,39,255,242,0,75,0,40,255,244,0,75,0,41,255,242,0,75,0,42,255,242,0,75,0,43,255,242,0,75,0,44,255,242,0,75,0,45,255,242,0,75,0,46,255,241,0,75,0,47,255,242,0,75,0,48,255,244,0,75,0,49,255,242,0,75,0,50,255,244,0,75,0,51,255,242,0,75,0,52,255,244,0,75,0,53,255,242,0,75,0,54,255,238,0,75,0,55,255,247,0,75,0,56,255,246,0,75,0,58,255,247,0,75,0,59,255,245,0,75,0,127,255,248,0,75,0,128,255,248,0,75,0,129,255,248,0,75,0,130,255,248,0,75,0,131,255,248,0,75,0,132,255,248,0,75,0,134,255,244,0,75,0,135,255,242,0,75,0,136,255,242,0,75,0,137,255,242,0,75,0,138,255,242,0,75,0,139,255,242,0,75,0,140,255,242,0,75,0,141,255,242,0,75,0,142,255,242,0,75,0,143,255,242,0,75,0,144,255,242,0,75,0,145,255,244,0,75,0,146,255,244,0,75,0,147,255,244,0,75,0,148,255,244,0,75,0,149,255,244,0,75,0,151,255,244,0,75,0,152,255,238,0,75,0,153,255,238,0,75,0,154,255,238,0,75,0,155,255,238,0,75,0,156,255,247,0,75,0,157,255,242,0,75,0,194,255,244,0,75,0,196,255,244,0,75,0,198,255,247,0,75,0,199,255,245,0,76,0,7,255,242,0,76,0,14,255,241,0,76,0,32,255,237,0,76,0,36,255,234,0,76,0,40,255,234,0,76,0,48,255,234,0,76,0,50,255,234,0,76,0,53,255,166,0,76,0,54,255,251,0,76,0,55,255,245,0,76,0,56,255,251,0,76,0,58,255,217,0,76,0,62,255,239,0,76,0,66,255,251,0,76,0,68,255,234,0,76,0,69,255,234,0,76,0,70,255,234,0,76,0,72,255,238,0,76,0,80,255,234,0,76,0,82,255,234,0,76,0,107,255,238,0,76,0,134,255,234,0,76,0,145,255,234,0,76,0,146,255,234,0,76,0,147,255,234,0,76,0,148,255,234,0,76,0,149,255,234,0,76,0,151,255,234,0,76,0,152,255,251,0,76,0,153,255,251,0,76,0,154,255,251,0,76,0,155,255,251,0,76,0,156,255,217,0,76,0,159,255,251,0,76,0,160,255,251,0,76,0,161,255,251,0,76,0,162,255,251,0,76,0,163,255,251,0,76,0,164,255,251,0,76,0,165,255,251,0,76,0,166,255,234,0,76,0,167,255,234,0,76,0,168,255,234,0,76,0,169,255,234,0,76,0,170,255,234,0,76,0,175,255,230,0,76,0,177,255,234,0,76,0,178,255,234,0,76,0,179,255,234,0,76,0,180,255,234,0,76,0,181,255,234,0,76,0,183,255,234,0,76,0,194,255,234,0,76,0,195,255,234,0,76,0,198,255,217,0,76,0,207,255,241,0,76,0,208,255,241,0,76,0,209,255,229,0,76,0,210,255,227,0,76,0,212,255,229,0,76,0,213,255,227,0,76,0,220,255,238,0,77,0,3,255,247,0,77,0,7,255,244,0,77,0,8,255,247,0,77,0,11,255,246,0,77,0,35,255,240,0,77,0,36,255,237,0,77,0,37,255,240,0,77,0,38,255,240,0,77,0,39,255,240,0,77,0,40,255,237,0,77,0,41,255,240,0,77,0,42,255,240,0,77,0,43,255,240,0,77,0,44,255,240,0,77,0,45,255,240,0,77,0,46,255,248,0,77,0,47,255,240,0,77,0,48,255,237,0,77,0,49,255,240,0,77,0,50,255,237,0,77,0,51,255,240,0,77,0,53,255,234,0,77,0,54,255,228,0,77,0,55,255,239,0,77,0,56,255,237,0,77,0,58,255,241,0,77,0,68,255,251,0,77,0,69,255,251,0,77,0,70,255,251,0,77,0,80,255,251,0,77,0,82,255,251,0,77,0,85,255,251,0,77,0,87,255,249,0,77,0,88,255,251,0,77,0,90,255,249,0,77,0,107,255,247,0,77,0,134,255,237,0,77,0,135,255,240,0,77,0,136,255,240,0,77,0,137,255,240,0,77,0,138,255,240,0,77,0,139,255,240,0,77,0,140,255,240,0,77,0,141,255,240,0,77,0,142,255,240,0,77,0,143,255,240,0,77,0,144,255,240,0,77,0,145,255,237,0,77,0,146,255,237,0,77,0,147,255,237,0,77,0,148,255,237,0,77,0,149,255,237,0,77,0,151,255,237,0,77,0,152,255,228,0,77,0,153,255,228,0,77,0,154,255,228,0,77,0,155,255,228,0,77,0,156,255,241,0,77,0,157,255,240,0,77,0,166,255,251,0,77,0,167,255,251,0,77,0,168,255,251,0,77,0,169,255,251,0,77,0,170,255,251,0,77,0,177,255,251,0,77,0,178,255,251,0,77,0,179,255,251,0,77,0,180,255,251,0,77,0,181,255,251,0,77,0,183,255,251,0,77,0,188,255,249,0,77,0,190,255,249,0,77,0,194,255,237,0,77,0,195,255,251,0,77,0,198,255,241,0,77,0,209,255,245,0,77,0,210,255,246,0,77,0,212,255,245,0,77,0,213,255,246,0,77,0,220,255,247,0,78,0,2,255,248,0,78,0,3,255,238,0,78,0,7,255,245,0,78,0,8,255,238,0,78,0,10,255,232,0,78,0,11,255,235,0,78,0,18,255,231,0,78,0,24,255,233,0,78,0,32,255,224,0,78,0,34,255,250,0,78,0,35,255,238,0,78,0,36,255,243,0,78,0,37,255,238,0,78,0,38,255,238,0,78,0,39,255,238,0,78,0,40,255,243,0,78,0,41,255,238,0,78,0,42,255,238,0,78,0,43,255,238,0,78,0,44,255,238,0,78,0,45,255,238,0,78,0,46,255,241,0,78,0,47,255,238,0,78,0,48,255,243,0,78,0,49,255,238,0,78,0,50,255,243,0,78,0,51,255,238,0,78,0,52,255,241,0,78,0,53,255,162,0,78,0,54,255,231,0,78,0,55,255,198,0,78,0,56,255,214,0,78,0,57,255,249,0,78,0,58,255,163,0,78,0,59,255,245,0,78,0,61,255,214,0,78,0,62,255,216,0,78,0,71,255,251,0,78,0,85,255,248,0,78,0,87,255,243,0,78,0,88,255,248,0,78,0,90,255,242,0,78,0,94,255,225,0,78,0,127,255,250,0,78,0,128,255,250,0,78,0,129,255,250,0,78,0,130,255,250,0,78,0,131,255,250,0,78,0,132,255,250,0,78,0,134,255,243,0,78,0,135,255,238,0,78,0,136,255,238,0,78,0,137,255,238,0,78,0,138,255,238,0,78,0,139,255,238,0,78,0,140,255,238,0,78,0,141,255,238,0,78,0,142,255,238,0,78,0,143,255,238,0,78,0,144,255,238,0,78,0,145,255,243,0,78,0,146,255,243,0,78,0,147,255,243,0,78,0,148,255,243,0,78,0,149,255,243,0,78,0,151,255,243,0,78,0,152,255,231,0,78,0,153,255,231,0,78,0,154,255,231,0,78,0,155,255,231,0,78,0,156,255,163,0,78,0,157,255,238,0,78,0,158,255,248,0,78,0,188,255,242,0,78,0,190,255,242,0,78,0,194,255,243,0,78,0,196,255,241,0,78,0,198,255,163,0,78,0,199,255,245,0,78,0,209,255,187,0,78,0,210,255,184,0,78,0,212,255,187,0,78,0,213,255,184,0,78,0,240,255,235,0,79,0,2,255,248,0,79,0,3,255,238,0,79,0,7,255,245,0,79,0,8,255,238,0,79,0,10,255,232,0,79,0,11,255,235,0,79,0,18,255,231,0,79,0,24,255,233,0,79,0,32,255,224,0,79,0,34,255,250,0,79,0,35,255,238,0,79,0,36,255,243,0,79,0,37,255,238,0,79,0,38,255,238,0,79,0,39,255,238,0,79,0,40,255,243,0,79,0,41,255,238,0,79,0,42,255,238,0,79,0,43,255,238,0,79,0,44,255,238,0,79,0,45,255,238,0,79,0,46,255,241,0,79,0,47,255,238,0,79,0,48,255,243,0,79,0,49,255,238,0,79,0,50,255,243,0,79,0,51,255,238,0,79,0,52,255,241,0,79,0,53,255,162,0,79,0,54,255,231,0,79,0,55,255,198,0,79,0,56,255,214,0,79,0,57,255,249,0,79,0,58,255,163,0,79,0,59,255,245,0,79,0,61,255,214,0,79,0,62,255,216,0,79,0,71,255,251,0,79,0,85,255,248,0,79,0,87,255,243,0,79,0,88,255,248,0,79,0,90,255,242,0,79,0,94,255,225,0,79,0,127,255,250,0,79,0,128,255,250,0,79,0,129,255,250,0,79,0,130,255,250,0,79,0,131,255,250,0,79,0,132,255,250,0,79,0,134,255,243,0,79,0,135,255,238,0,79,0,136,255,238,0,79,0,137,255,238,0,79,0,138,255,238,0,79,0,139,255,238,0,79,0,140,255,238,0,79,0,141,255,238,0,79,0,142,255,238,0,79,0,143,255,238,0,79,0,144,255,238,0,79,0,145,255,243,0,79,0,146,255,243,0,79,0,147,255,243,0,79,0,148,255,243,0,79,0,149,255,243,0,79,0,151,255,243,0,79,0,152,255,231,0,79,0,153,255,231,0,79,0,154,255,231,0,79,0,155,255,231,0,79,0,156,255,163,0,79,0,157,255,238,0,79,0,158,255,248,0,79,0,188,255,242,0,79,0,190,255,242,0,79,0,194,255,243,0,79,0,196,255,241,0,79,0,198,255,163,0,79,0,199,255,245,0,79,0,209,255,187,0,79,0,210,255,184,0,79,0,212,255,187,0,79,0,213,255,184,0,79,0,240,255,235,0,80,0,3,255,236,0,80,0,7,255,246,0,80,0,8,255,236,0,80,0,10,255,224,0,80,0,11,255,234,0,80,0,18,255,230,0,80,0,19,255,229,0,80,0,24,255,223,0,80,0,32,255,222,0,80,0,34,255,240,0,80,0,35,255,237,0,80,0,36,255,246,0,80,0,37,255,237,0,80,0,38,255,237,0,80,0,39,255,237,0,80,0,40,255,246,0,80,0,41,255,237,0,80,0,42,255,237,0,80,0,43,255,237,0,80,0,44,255,237,0,80,0,45,255,237,0,80,0,46,255,239,0,80,0,47,255,237,0,80,0,48,255,246,0,80,0,49,255,237,0,80,0,50,255,246,0,80,0,51,255,237,0,80,0,52,255,238,0,80,0,53,255,173,0,80,0,54,255,238,0,80,0,55,255,192,0,80,0,56,255,212,0,80,0,57,255,218,0,80,0,58,255,167,0,80,0,59,255,227,0,80,0,61,255,214,0,80,0,62,255,213,0,80,0,71,255,251,0,80,0,85,255,249,0,80,0,87,255,247,0,80,0,88,255,251,0,80,0,89,255,237,0,80,0,90,255,245,0,80,0,91,255,246,0,80,0,94,255,222,0,80,0,122,255,247,0,80,0,127,255,240,0,80,0,128,255,240,0,80,0,129,255,240,0,80,0,130,255,240,0,80,0,131,255,240,0,80,0,132,255,240,0,80,0,134,255,246,0,80,0,135,255,237,0,80,0,136,255,237,0,80,0,137,255,237,0,80,0,138,255,237,0,80,0,139,255,237,0,80,0,140,255,237,0,80,0,141,255,237,0,80,0,142,255,237,0,80,0,143,255,237,0,80,0,144,255,237,0,80,0,145,255,246,0,80,0,146,255,246,0,80,0,147,255,246,0,80,0,148,255,246,0,80,0,149,255,246,0,80,0,151,255,246,0,80,0,152,255,238,0,80,0,153,255,238,0,80,0,154,255,238,0,80,0,155,255,238,0,80,0,156,255,167,0,80,0,157,255,237,0,80,0,158,255,248,0,80,0,188,255,245,0,80,0,190,255,245,0,80,0,194,255,246,0,80,0,196,255,238,0,80,0,198,255,167,0,80,0,199,255,227,0,80,0,200,255,246,0,80,0,209,255,182,0,80,0,210,255,179,0,80,0,212,255,182,0,80,0,213,255,179,0,80,0,221,255,247,0,80,0,240,255,236,0,81,0,3,255,236,0,81,0,7,255,246,0,81,0,8,255,236,0,81,0,10,255,224,0,81,0,11,255,234,0,81,0,18,255,230,0,81,0,19,255,229,0,81,0,24,255,223,0,81,0,32,255,222,0,81,0,34,255,240,0,81,0,35,255,237,0,81,0,36,255,246,0,81,0,37,255,237,0,81,0,38,255,237,0,81,0,39,255,237,0,81,0,40,255,246,0,81,0,41,255,237,0,81,0,42,255,237,0,81,0,43,255,237,0,81,0,44,255,237,0,81,0,45,255,237,0,81,0,46,255,239,0,81,0,47,255,237,0,81,0,48,255,246,0,81,0,49,255,237,0,81,0,50,255,246,0,81,0,51,255,237,0,81,0,52,255,238,0,81,0,53,255,173,0,81,0,54,255,238,0,81,0,55,255,192,0,81,0,56,255,212,0,81,0,57,255,218,0,81,0,58,255,167,0,81,0,59,255,227,0,81,0,61,255,214,0,81,0,62,255,213,0,81,0,71,255,251,0,81,0,85,255,249,0,81,0,87,255,247,0,81,0,88,255,251,0,81,0,89,255,237,0,81,0,90,255,245,0,81,0,91,255,246,0,81,0,94,255,222,0,81,0,122,255,247,0,81,0,127,255,240,0,81,0,128,255,240,0,81,0,129,255,240,0,81,0,130,255,240,0,81,0,131,255,240,0,81,0,132,255,240,0,81,0,134,255,246,0,81,0,135,255,237,0,81,0,136,255,237,0,81,0,137,255,237,0,81,0,138,255,237,0,81,0,139,255,237,0,81,0,140,255,237,0,81,0,141,255,237,0,81,0,142,255,237,0,81,0,143,255,237,0,81,0,144,255,237,0,81,0,145,255,246,0,81,0,146,255,246,0,81,0,147,255,246,0,81,0,148,255,246,0,81,0,149,255,246,0,81,0,151,255,246,0,81,0,152,255,238,0,81,0,153,255,238,0,81,0,154,255,238,0,81,0,155,255,238,0,81,0,156,255,167,0,81,0,157,255,237,0,81,0,158,255,248,0,81,0,188,255,245,0,81,0,190,255,245,0,81,0,194,255,246,0,81,0,196,255,238,0,81,0,198,255,167,0,81,0,199,255,227,0,81,0,200,255,246,0,81,0,209,255,182,0,81,0,210,255,179,0,81,0,212,255,182,0,81,0,213,255,179,0,81,0,221,255,247,0,81,0,240,255,236,0,82,0,7,255,244,0,82,0,10,255,233,0,82,0,11,255,244,0,82,0,24,255,232,0,82,0,32,255,223,0,82,0,34,255,248,0,82,0,35,255,242,0,82,0,36,255,244,0,82,0,37,255,242,0,82,0,38,255,242,0,82,0,39,255,242,0,82,0,40,255,244,0,82,0,41,255,242,0,82,0,42,255,242,0,82,0,43,255,242,0,82,0,44,255,242,0,82,0,45,255,242,0,82,0,46,255,241,0,82,0,47,255,242,0,82,0,48,255,244,0,82,0,49,255,242,0,82,0,50,255,244,0,82,0,51,255,242,0,82,0,52,255,243,0,82,0,53,255,164,0,82,0,54,255,235,0,82,0,55,255,216,0,82,0,56,255,218,0,82,0,57,255,246,0,82,0,58,255,183,0,82,0,59,255,242,0,82,0,61,255,228,0,82,0,62,255,215,0,82,0,94,255,226,0,82,0,127,255,248,0,82,0,128,255,248,0,82,0,129,255,248,0,82,0,130,255,248,0,82,0,131,255,248,0,82,0,132,255,248,0,82,0,134,255,244,0,82,0,135,255,242,0,82,0,136,255,242,0,82,0,137,255,242,0,82,0,138,255,242,0,82,0,139,255,242,0,82,0,140,255,242,0,82,0,141,255,242,0,82,0,142,255,242,0,82,0,143,255,242,0,82,0,144,255,242,0,82,0,145,255,244,0,82,0,146,255,244,0,82,0,147,255,244,0,82,0,148,255,244,0,82,0,149,255,244,0,82,0,151,255,244,0,82,0,152,255,235,0,82,0,153,255,235,0,82,0,154,255,235,0,82,0,155,255,235,0,82,0,156,255,183,0,82,0,157,255,242,0,82,0,194,255,244,0,82,0,196,255,243,0,82,0,198,255,183,0,82,0,199,255,242,0,82,0,209,255,211,0,82,0,210,255,209,0,82,0,212,255,211,0,82,0,213,255,209,0,82,0,240,255,239,0,83,0,7,255,237,0,83,0,10,255,232,0,83,0,13,255,227,0,83,0,14,255,234,0,83,0,15,255,227,0,83,0,16,255,225,0,83,0,20,255,231,0,83,0,21,255,238,0,83,0,24,255,200,0,83,0,32,255,202,0,83,0,33,255,232,0,83,0,34,255,211,0,83,0,35,255,243,0,83,0,37,255,243,0,83,0,38,255,243,0,83,0,39,255,243,0,83,0,41,255,243,0,83,0,42,255,243,0,83,0,43,255,243,0,83,0,44,255,243,0,83,0,45,255,243,0,83,0,46,255,230,0,83,0,47,255,243,0,83,0,49,255,243,0,83,0,51,255,243,0,83,0,53,255,163,0,83,0,54,255,247,0,83,0,55,255,243,0,83,0,56,255,247,0,83,0,57,255,214,0,83,0,58,255,225,0,83,0,59,255,227,0,83,0,62,255,217,0,83,0,66,255,249,0,83,0,68,255,243,0,83,0,69,255,243,0,83,0,70,255,243,0,83,0,72,255,250,0,83,0,80,255,243,0,83,0,82,255,243,0,83,0,94,255,228,0,83,0,107,255,237,0,83,0,127,255,211,0,83,0,128,255,211,0,83,0,129,255,211,0,83,0,130,255,211,0,83,0,131,255,211,0,83,0,132,255,211,0,83,0,135,255,243,0,83,0,136,255,243,0,83,0,137,255,243,0,83,0,138,255,243,0,83,0,139,255,243,0,83,0,140,255,243,0,83,0,141,255,243,0,83,0,142,255,243,0,83,0,143,255,243,0,83,0,144,255,243,0,83,0,152,255,247,0,83,0,153,255,247,0,83,0,154,255,247,0,83,0,155,255,247,0,83,0,156,255,225,0,83,0,157,255,243,0,83,0,159,255,249,0,83,0,160,255,249,0,83,0,161,255,249,0,83,0,162,255,249,0,83,0,163,255,249,0,83,0,164,255,249,0,83,0,165,255,249,0,83,0,166,255,243,0,83,0,167,255,243,0,83,0,168,255,243,0,83,0,169,255,243,0,83,0,170,255,243,0,83,0,175,255,218,0,83,0,177,255,243,0,83,0,178,255,243,0,83,0,179,255,243,0,83,0,180,255,243,0,83,0,181,255,243,0,83,0,183,255,243,0,83,0,195,255,243,0,83,0,198,255,225,0,83,0,199,255,227,0,83,0,207,255,234,0,83,0,208,255,234,0,83,0,209,255,233,0,83,0,210,255,230,0,83,0,211,255,227,0,83,0,212,255,233,0,83,0,213,255,230,0,83,0,214,255,227,0,83,0,218,255,227,0,83,0,220,255,237,0,84,0,10,255,231,0,84,0,11,255,241,0,84,0,24,255,234,0,84,0,32,255,224,0,84,0,35,255,241,0,84,0,36,255,244,0,84,0,37,255,241,0,84,0,38,255,241,0,84,0,39,255,241,0,84,0,40,255,244,0,84,0,41,255,241,0,84,0,42,255,241,0,84,0,43,255,241,0,84,0,44,255,241,0,84,0,45,255,241,0,84,0,46,255,245,0,84,0,47,255,241,0,84,0,48,255,244,0,84,0,49,255,241,0,84,0,50,255,244,0,84,0,51,255,241,0,84,0,52,255,248,0,84,0,53,255,202,0,84,0,54,255,238,0,84,0,55,255,216,0,84,0,56,255,224,0,84,0,57,255,244,0,84,0,58,255,209,0,84,0,59,255,245,0,84,0,61,255,225,0,84,0,62,255,220,0,84,0,94,255,229,0,84,0,134,255,244,0,84,0,135,255,241,0,84,0,136,255,241,0,84,0,137,255,241,0,84,0,138,255,241,0,84,0,139,255,241,0,84,0,140,255,241,0,84,0,141,255,241,0,84,0,142,255,241,0,84,0,143,255,241,0,84,0,144,255,241,0,84,0,145,255,244,0,84,0,146,255,244,0,84,0,147,255,244,0,84,0,148,255,244,0,84,0,149,255,244,0,84,0,151,255,244,0,84,0,152,255,238,0,84,0,153,255,238,0,84,0,154,255,238,0,84,0,155,255,238,0,84,0,156,255,209,0,84,0,157,255,241,0,84,0,194,255,244,0,84,0,196,255,248,0,84,0,198,255,209,0,84,0,199,255,245,0,84,0,209,255,203,0,84,0,210,255,200,0,84,0,212,255,203,0,84,0,213,255,200,0,84,0,240,255,235,0,85,0,7,255,246,0,85,0,21,255,234,0,85,0,24,255,246,0,85,0,32,255,229,0,85,0,35,255,248,0,85,0,37,255,248,0,85,0,38,255,248,0,85,0,39,255,248,0,85,0,41,255,248,0,85,0,42,255,248,0,85,0,43,255,248,0,85,0,44,255,248,0,85,0,45,255,248,0,85,0,46,255,248,0,85,0,47,255,248,0,85,0,49,255,248,0,85,0,51,255,248,0,85,0,53,255,209,0,85,0,54,255,246,0,85,0,55,255,237,0,85,0,56,255,243,0,85,0,58,255,211,0,85,0,62,255,230,0,85,0,68,255,252,0,85,0,69,255,252,0,85,0,70,255,252,0,85,0,80,255,252,0,85,0,82,255,252,0,85,0,94,255,242,0,85,0,107,255,244,0,85,0,135,255,248,0,85,0,136,255,248,0,85,0,137,255,248,0,85,0,138,255,248,0,85,0,139,255,248,0,85,0,140,255,248,0,85,0,141,255,248,0,85,0,142,255,248,0,85,0,143,255,248,0,85,0,144,255,248,0,85,0,152,255,246,0,85,0,153,255,246,0,85,0,154,255,246,0,85,0,155,255,246,0,85,0,156,255,211,0,85,0,157,255,248,0,85,0,166,255,252,0,85,0,167,255,252,0,85,0,168,255,252,0,85,0,169,255,252,0,85,0,170,255,252,0,85,0,175,255,251,0,85,0,177,255,252,0,85,0,178,255,252,0,85,0,179,255,252,0,85,0,180,255,252,0,85,0,181,255,252,0,85,0,183,255,252,0,85,0,195,255,252,0,85,0,198,255,211,0,85,0,209,255,234,0,85,0,210,255,233,0,85,0,212,255,234,0,85,0,213,255,233,0,85,0,220,255,244,0,86,0,7,255,244,0,86,0,10,255,233,0,86,0,11,255,244,0,86,0,24,255,232,0,86,0,32,255,223,0,86,0,34,255,248,0,86,0,35,255,242,0,86,0,36,255,244,0,86,0,37,255,242,0,86,0,38,255,242,0,86,0,39,255,242,0,86,0,40,255,244,0,86,0,41,255,242,0,86,0,42,255,242,0,86,0,43,255,242,0,86,0,44,255,242,0,86,0,45,255,242,0,86,0,46,255,241,0,86,0,47,255,242,0,86,0,48,255,244,0,86,0,49,255,242,0,86,0,50,255,244,0,86,0,51,255,242,0,86,0,52,255,243,0,86,0,53,255,164,0,86,0,54,255,235,0,86,0,55,255,216,0,86,0,56,255,218,0,86,0,57,255,246,0,86,0,58,255,183,0,86,0,59,255,242,0,86,0,61,255,228,0,86,0,62,255,215,0,86,0,94,255,226,0,86,0,127,255,248,0,86,0,128,255,248,0,86,0,129,255,248,0,86,0,130,255,248,0,86,0,131,255,248,0,86,0,132,255,248,0,86,0,134,255,244,0,86,0,135,255,242,0,86,0,136,255,242,0,86,0,137,255,242,0,86,0,138,255,242,0,86,0,139,255,242,0,86,0,140,255,242,0,86,0,141,255,242,0,86,0,142,255,242,0,86,0,143,255,242,0,86,0,144,255,242,0,86,0,145,255,244,0,86,0,146,255,244,0,86,0,147,255,244,0,86,0,148,255,244,0,86,0,149,255,244,0,86,0,151,255,244,0,86,0,152,255,235,0,86,0,153,255,235,0,86,0,154,255,235,0,86,0,155,255,235,0,86,0,156,255,183,0,86,0,157,255,242,0,86,0,194,255,244,0,86,0,196,255,243,0,86,0,198,255,183,0,86,0,199,255,242,0,86,0,209,255,211,0,86,0,210,255,209,0,86,0,212,255,211,0,86,0,213,255,209,0,86,0,240,255,239,0,87,0,7,255,238,0,87,0,10,255,231,0,87,0,13,255,227,0,87,0,15,255,227,0,87,0,16,255,223,0,87,0,20,255,231,0,87,0,24,255,200,0,87,0,32,255,206,0,87,0,33,255,240,0,87,0,34,255,216,0,87,0,35,255,242,0,87,0,37,255,242,0,87,0,38,255,242,0,87,0,39,255,242,0,87,0,41,255,242,0,87,0,42,255,242,0,87,0,43,255,242,0,87,0,44,255,242,0,87,0,45,255,242,0,87,0,46,255,229,0,87,0,47,255,242,0,87,0,49,255,242,0,87,0,51,255,242,0,87,0,53,255,170,0,87,0,54,255,245,0,87,0,55,255,237,0,87,0,56,255,242,0,87,0,57,255,208,0,87,0,58,255,210,0,87,0,59,255,224,0,87,0,62,255,214,0,87,0,66,255,250,0,87,0,68,255,247,0,87,0,69,255,247,0,87,0,70,255,247,0,87,0,72,255,250,0,87,0,80,255,247,0,87,0,82,255,247,0,87,0,84,255,252,0,87,0,94,255,227,0,87,0,127,255,216,0,87,0,128,255,216,0,87,0,129,255,216,0,87,0,130,255,216,0,87,0,131,255,216,0,87,0,132,255,216,0,87,0,135,255,242,0,87,0,136,255,242,0,87,0,137,255,242,0,87,0,138,255,242,0,87,0,139,255,242,0,87,0,140,255,242,0,87,0,141,255,242,0,87,0,142,255,242,0,87,0,143,255,242,0,87,0,144,255,242,0,87,0,152,255,245,0,87,0,153,255,245,0,87,0,154,255,245,0,87,0,155,255,245,0,87,0,156,255,210,0,87,0,157,255,242,0,87,0,159,255,250,0,87,0,160,255,250,0,87,0,161,255,250,0,87,0,162,255,250,0,87,0,163,255,250,0,87,0,164,255,250,0,87,0,165,255,250,0,87,0,166,255,247,0,87,0,167,255,247,0,87,0,168,255,247,0,87,0,169,255,247,0,87,0,170,255,247,0,87,0,175,255,238,0,87,0,177,255,247,0,87,0,178,255,247,0,87,0,179,255,247,0,87,0,180,255,247,0,87,0,181,255,247,0,87,0,183,255,247,0,87,0,195,255,247,0,87,0,197,255,252,0,87,0,198,255,210,0,87,0,199,255,224,0,87,0,209,255,226,0,87,0,210,255,224,0,87,0,211,255,227,0,87,0,212,255,226,0,87,0,213,255,224,0,87,0,214,255,227,0,87,0,218,255,227,0,88,0,7,255,240,0,88,0,10,255,232,0,88,0,13,255,235,0,88,0,15,255,236,0,88,0,16,255,231,0,88,0,20,255,240,0,88,0,24,255,207,0,88,0,32,255,211,0,88,0,33,255,247,0,88,0,34,255,223,0,88,0,35,255,243,0,88,0,37,255,243,0,88,0,38,255,243,0,88,0,39,255,243,0,88,0,41,255,243,0,88,0,42,255,243,0,88,0,43,255,243,0,88,0,44,255,243,0,88,0,45,255,243,0,88,0,46,255,232,0,88,0,47,255,243,0,88,0,49,255,243,0,88,0,51,255,243,0,88,0,53,255,178,0,88,0,54,255,246,0,88,0,55,255,236,0,88,0,56,255,242,0,88,0,57,255,213,0,88,0,58,255,211,0,88,0,59,255,228,0,88,0,62,255,218,0,88,0,66,255,252,0,88,0,68,255,251,0,88,0,69,255,251,0,88,0,70,255,251,0,88,0,80,255,251,0,88,0,82,255,251,0,88,0,94,255,229,0,88,0,127,255,223,0,88,0,128,255,223,0,88,0,129,255,223,0,88,0,130,255,223,0,88,0,131,255,223,0,88,0,132,255,223,0,88,0,135,255,243,0,88,0,136,255,243,0,88,0,137,255,243,0,88,0,138,255,243,0,88,0,139,255,243,0,88,0,140,255,243,0,88,0,141,255,243,0,88,0,142,255,243,0,88,0,143,255,243,0,88,0,144,255,243,0,88,0,152,255,246,0,88,0,153,255,246,0,88,0,154,255,246,0,88,0,155,255,246,0,88,0,156,255,211,0,88,0,157,255,243,0,88,0,159,255,252,0,88,0,160,255,252,0,88,0,161,255,252,0,88,0,162,255,252,0,88,0,163,255,252,0,88,0,164,255,252,0,88,0,165,255,252,0,88,0,166,255,251,0,88,0,167,255,251,0,88,0,168,255,251,0,88,0,169,255,251,0,88,0,170,255,251,0,88,0,175,255,246,0,88,0,177,255,251,0,88,0,178,255,251,0,88,0,179,255,251,0,88,0,180,255,251,0,88,0,181,255,251,0,88,0,183,255,251,0,88,0,195,255,251,0,88,0,198,255,211,0,88,0,199,255,228,0,88,0,209,255,227,0,88,0,210,255,225,0,88,0,211,255,235,0,88,0,212,255,227,0,88,0,213,255,225,0,88,0,214,255,235,0,88,0,218,255,236,0,89,0,7,255,238,0,89,0,14,255,247,0,89,0,32,255,227,0,89,0,35,255,247,0,89,0,36,255,240,0,89,0,37,255,247,0,89,0,38,255,247,0,89,0,39,255,247,0,89,0,40,255,240,0,89,0,41,255,247,0,89,0,42,255,247,0,89,0,43,255,247,0,89,0,44,255,247,0,89,0,45,255,247,0,89,0,46,255,250,0,89,0,47,255,247,0,89,0,48,255,240,0,89,0,49,255,247,0,89,0,50,255,240,0,89,0,51,255,247,0,89,0,52,255,248,0,89,0,53,255,167,0,89,0,54,255,244,0,89,0,55,255,236,0,89,0,56,255,242,0,89,0,58,255,208,0,89,0,61,255,247,0,89,0,62,255,230,0,89,0,66,255,252,0,89,0,68,255,238,0,89,0,69,255,238,0,89,0,70,255,238,0,89,0,72,255,247,0,89,0,80,255,238,0,89,0,82,255,238,0,89,0,94,255,237,0,89,0,107,255,236,0,89,0,134,255,240,0,89,0,135,255,247,0,89,0,136,255,247,0,89,0,137,255,247,0,89,0,138,255,247,0,89,0,139,255,247,0,89,0,140,255,247,0,89,0,141,255,247,0,89,0,142,255,247,0,89,0,143,255,247,0,89,0,144,255,247,0,89,0,145,255,240,0,89,0,146,255,240,0,89,0,147,255,240,0,89,0,148,255,240,0,89,0,149,255,240,0,89,0,151,255,240,0,89,0,152,255,244,0,89,0,153,255,244,0,89,0,154,255,244,0,89,0,155,255,244,0,89,0,156,255,208,0,89,0,157,255,247,0,89,0,159,255,252,0,89,0,160,255,252,0,89,0,161,255,252,0,89,0,162,255,252,0,89,0,163,255,252,0,89,0,164,255,252,0,89,0,165,255,252,0,89,0,166,255,238,0,89,0,167,255,238,0,89,0,168,255,238,0,89,0,169,255,238,0,89,0,170,255,238,0,89,0,175,255,240,0,89,0,177,255,238,0,89,0,178,255,238,0,89,0,179,255,238,0,89,0,180,255,238,0,89,0,181,255,238,0,89,0,183,255,238,0,89,0,194,255,240,0,89,0,195,255,238,0,89,0,196,255,248,0,89,0,198,255,208,0,89,0,207,255,247,0,89,0,208,255,247,0,89,0,209,255,224,0,89,0,210,255,222,0,89,0,212,255,224,0,89,0,213,255,222,0,89,0,220,255,236,0,89,0,240,255,248,0,90,0,7,255,238,0,90,0,10,255,231,0,90,0,13,255,225,0,90,0,15,255,225,0,90,0,16,255,220,0,90,0,19,255,227,0,90,0,20,255,230,0,90,0,24,255,198,0,90,0,32,255,205,0,90,0,33,255,238,0,90,0,34,255,214,0,90,0,35,255,243,0,90,0,37,255,243,0,90,0,38,255,243,0,90,0,39,255,243,0,90,0,41,255,243,0,90,0,42,255,243,0,90,0,43,255,243,0,90,0,44,255,243,0,90,0,45,255,243,0,90,0,46,255,229,0,90,0,47,255,243,0,90,0,49,255,243,0,90,0,51,255,243,0,90,0,53,255,168,0,90,0,54,255,245,0,90,0,55,255,238,0,90,0,56,255,242,0,90,0,57,255,208,0,90,0,58,255,211,0,90,0,59,255,225,0,90,0,62,255,214,0,90,0,66,255,250,0,90,0,68,255,246,0,90,0,69,255,246,0,90,0,70,255,246,0,90,0,72,255,250,0,90,0,80,255,246,0,90,0,82,255,246,0,90,0,84,255,252,0,90,0,94,255,227,0,90,0,127,255,214,0,90,0,128,255,214,0,90,0,129,255,214,0,90,0,130,255,214,0,90,0,131,255,214,0,90,0,132,255,214,0,90,0,135,255,243,0,90,0,136,255,243,0,90,0,137,255,243,0,90,0,138,255,243,0,90,0,139,255,243,0,90,0,140,255,243,0,90,0,141,255,243,0,90,0,142,255,243,0,90,0,143,255,243,0,90,0,144,255,243,0,90,0,152,255,245,0,90,0,153,255,245,0,90,0,154,255,245,0,90,0,155,255,245,0,90,0,156,255,211,0,90,0,157,255,243,0,90,0,159,255,250,0,90,0,160,255,250,0,90,0,161,255,250,0,90,0,162,255,250,0,90,0,163,255,250,0,90,0,164,255,250,0,90,0,165,255,250,0,90,0,166,255,246,0,90,0,167,255,246,0,90,0,168,255,246,0,90,0,169,255,246,0,90,0,170,255,246,0,90,0,175,255,236,0,90,0,177,255,246,0,90,0,178,255,246,0,90,0,179,255,246,0,90,0,180,255,246,0,90,0,181,255,246,0,90,0,183,255,246,0,90,0,195,255,246,0,90,0,197,255,252,0,90,0,198,255,211,0,90,0,199,255,225,0,90,0,209,255,227,0,90,0,210,255,225,0,90,0,211,255,225,0,90,0,212,255,227,0,90,0,213,255,225,0,90,0,214,255,225,0,90,0,218,255,225,0,91,0,7,255,245,0,91,0,10,255,246,0,91,0,14,255,240,0,91,0,21,255,225,0,91,0,24,255,244,0,91,0,32,255,221,0,91,0,35,255,242,0,91,0,36,255,244,0,91,0,37,255,242,0,91,0,38,255,242,0,91,0,39,255,242,0,91,0,40,255,244,0,91,0,41,255,242,0,91,0,42,255,242,0,91,0,43,255,242,0,91,0,44,255,242,0,91,0,45,255,242,0,91,0,46,255,245,0,91,0,47,255,242,0,91,0,48,255,244,0,91,0,49,255,242,0,91,0,50,255,244,0,91,0,51,255,242,0,91,0,53,255,203,0,91,0,54,255,239,0,91,0,55,255,240,0,91,0,56,255,243,0,91,0,58,255,227,0,91,0,61,255,242,0,91,0,62,255,222,0,91,0,68,255,245,0,91,0,69,255,245,0,91,0,70,255,245,0,91,0,72,255,251,0,91,0,80,255,245,0,91,0,82,255,245,0,91,0,94,255,232,0,91,0,107,255,232,0,91,0,134,255,244,0,91,0,135,255,242,0,91,0,136,255,242,0,91,0,137,255,242,0,91,0,138,255,242,0,91,0,139,255,242,0,91,0,140,255,242,0,91,0,141,255,242,0,91,0,142,255,242,0,91,0,143,255,242,0,91,0,144,255,242,0,91,0,145,255,244,0,91,0,146,255,244,0,91,0,147,255,244,0,91,0,148,255,244,0,91,0,149,255,244,0,91,0,151,255,244,0,91,0,152,255,239,0,91,0,153,255,239,0,91,0,154,255,239,0,91,0,155,255,239,0,91,0,156,255,227,0,91,0,157,255,242,0,91,0,166,255,245,0,91,0,167,255,245,0,91,0,168,255,245,0,91,0,169,255,245,0,91,0,170,255,245,0,91,0,175,255,247,0,91,0,177,255,245,0,91,0,178,255,245,0,91,0,179,255,245,0,91,0,180,255,245,0,91,0,181,255,245,0,91,0,183,255,245,0,91,0,194,255,244,0,91,0,195,255,245,0,91,0,198,255,227,0,91,0,207,255,240,0,91,0,208,255,240,0,91,0,209,255,219,0,91,0,210,255,216,0,91,0,212,255,219,0,91,0,213,255,216,0,91,0,220,255,232,0,91,0,240,255,242,0,92,0,17,255,238,0,92,0,21,255,238,0,92,0,23,255,235,0,92,0,34,255,244,0,92,0,36,255,231,0,92,0,40,255,231,0,92,0,43,0,47,0,92,0,46,255,247,0,92,0,48,255,231,0,92,0,50,255,231,0,92,0,53,0,21,0,92,0,55,0,29,0,92,0,56,0,25,0,92,0,57,0,28,0,92,0,58,0,34,0,92,0,66,255,229,0,92,0,68,255,222,0,92,0,69,255,222,0,92,0,70,255,222,0,92,0,78,255,227,0,92,0,79,255,227,0,92,0,80,255,222,0,92,0,81,255,227,0,92,0,82,255,222,0,92,0,83,255,227,0,92,0,84,255,229,0,92,0,85,255,231,0,92,0,86,255,225,0,92,0,87,255,227,0,92,0,88,255,228,0,92,0,89,255,238,0,92,0,90,255,227,0,92,0,91,255,232,0,92,0,127,255,244,0,92,0,128,255,244,0,92,0,129,255,244,0,92,0,130,255,244,0,92,0,131,255,244,0,92,0,132,255,244,0,92,0,134,255,231,0,92,0,145,255,231,0,92,0,146,255,231,0,92,0,147,255,231,0,92,0,148,255,231,0,92,0,149,255,231,0,92,0,151,255,231,0,92,0,156,0,34,0,92,0,158,255,247,0,92,0,159,255,229,0,92,0,160,255,229,0,92,0,161,255,229,0,92,0,162,255,229,0,92,0,163,255,229,0,92,0,164,255,229,0,92,0,165,255,229,0,92,0,166,255,222,0,92,0,167,255,222,0,92,0,168,255,222,0,92,0,169,255,222,0,92,0,170,255,222,0,92,0,171,0,12,0,92,0,173,0,33,0,92,0,174,0,44,0,92,0,175,255,234,0,92,0,176,255,227,0,92,0,177,255,222,0,92,0,178,255,222,0,92,0,179,255,222,0,92,0,180,255,222,0,92,0,181,255,222,0,92,0,183,255,222,0,92,0,184,255,225,0,92,0,185,255,225,0,92,0,186,255,225,0,92,0,187,255,225,0,92,0,188,255,227,0,92,0,189,255,249,0,92,0,190,255,227,0,92,0,194,255,231,0,92,0,195,255,222,0,92,0,197,255,229,0,92,0,198,0,34,0,92,0,200,255,232,0,97,0,53,255,200,0,97,0,55,255,236,0,97,0,56,255,244,0,97,0,58,255,224,0,97,0,156,255,224,0,97,0,198,255,224,0,107,0,53,255,197,0,107,0,55,255,245,0,107,0,58,255,226,0,107,0,68,255,247,0,107,0,69,255,247,0,107,0,70,255,247,0,107,0,80,255,247,0,107,0,82,255,247,0,107,0,156,255,226,0,107,0,166,255,247,0,107,0,167,255,247,0,107,0,168,255,247,0,107,0,169,255,247,0,107,0,170,255,247,0,107,0,177,255,247,0,107,0,178,255,247,0,107,0,179,255,247,0,107,0,180,255,247,0,107,0,181,255,247,0,107,0,183,255,247,0,107,0,195,255,247,0,107,0,198,255,226,0,107,0,210,255,229,0,107,0,213,255,229,0,110,0,34,255,237,0,110,0,46,255,247,0,110,0,53,255,230,0,110,0,55,255,243,0,110,0,56,255,248,0,110,0,57,255,236,0,110,0,58,255,229,0,110,0,59,255,231,0,110,0,127,255,237,0,110,0,128,255,237,0,110,0,129,255,237,0,110,0,130,255,237,0,110,0,131,255,237,0,110,0,132,255,237,0,110,0,133,255,236,0,110,0,156,255,229,0,110,0,198,255,229,0,110,0,199,255,231,0,111,0,21,255,229,0,111,0,23,255,239,0,122,0,3,255,241,0,122,0,8,255,241,0,122,0,34,255,247,0,122,0,52,255,234,0,122,0,53,255,195,0,122,0,55,255,220,0,122,0,56,255,230,0,122,0,57,255,224,0,122,0,58,255,198,0,122,0,59,255,223,0,122,0,85,255,247,0,122,0,89,255,236,0,122,0,90,255,248,0,122,0,91,255,233,0,122,0,127,255,247,0,122,0,128,255,247,0,122,0,129,255,247,0,122,0,130,255,247,0,122,0,131,255,247,0,122,0,132,255,247,0,122,0,133,255,243,0,122,0,156,255,198,0,122,0,158,255,248,0,122,0,188,255,248,0,122,0,190,255,248,0,122,0,196,255,234,0,122,0,198,255,198,0,122,0,199,255,223,0,122,0,200,255,233,0,122,0,210,255,204,0,122,0,213,255,204,0,126,0,34,255,233,0,126,0,35,255,247,0,126,0,37,255,247,0,126,0,38,255,247,0,126,0,39,255,247,0,126,0,41,255,247,0,126,0,42,255,247,0,126,0,43,0,19,0,126,0,44,255,247,0,126,0,45,255,247,0,126,0,46,255,238,0,126,0,47,255,247,0,126,0,49,255,247,0,126,0,51,255,247,0,126,0,53,255,192,0,126,0,54,255,245,0,126,0,55,255,233,0,126,0,56,255,241,0,126,0,57,255,231,0,126,0,58,255,219,0,126,0,59,255,220,0,126,0,66,255,241,0,126,0,67,255,247,0,126,0,68,255,243,0,126,0,69,255,243,0,126,0,70,255,243,0,126,0,72,255,243,0,126,0,73,255,247,0,126,0,74,255,242,0,126,0,75,0,20,0,126,0,76,255,247,0,126,0,77,255,247,0,126,0,78,255,241,0,126,0,79,255,241,0,126,0,80,255,243,0,126,0,81,255,241,0,126,0,82,255,243,0,126,0,83,255,241,0,126,0,84,255,241,0,126,0,86,255,243,0,126,0,89,255,248,0,126,0,91,255,241,0,126,0,127,255,233,0,126,0,128,255,233,0,126,0,129,255,233,0,126,0,130,255,233,0,126,0,131,255,233,0,126,0,132,255,233,0,126,0,133,255,235,0,126,0,135,255,247,0,126,0,136,255,247,0,126,0,137,255,247,0,126,0,138,255,247,0,126,0,139,255,247,0,126,0,140,255,247,0,126,0,141,255,247,0,126,0,142,255,247,0,126,0,143,255,247,0,126,0,144,255,247,0,126,0,152,255,245,0,126,0,153,255,245,0,126,0,154,255,245,0,126,0,155,255,245,0,126,0,156,255,219,0,126,0,157,255,247,0,126,0,159,255,241,0,126,0,160,255,241,0,126,0,161,255,241,0,126,0,162,255,241,0,126,0,163,255,241,0,126,0,164,255,241,0,126,0,165,255,241,0,126,0,166,255,243,0,126,0,167,255,243,0,126,0,168,255,243,0,126,0,169,255,243,0,126,0,170,255,243,0,126,0,171,255,242,0,126,0,172,255,242,0,126,0,173,255,242,0,126,0,174,255,242,0,126,0,175,255,240,0,126,0,176,255,241,0,126,0,177,255,243,0,126,0,178,255,243,0,126,0,179,255,243,0,126,0,180,255,243,0,126,0,181,255,243,0,126,0,183,255,243,0,126,0,184,255,243,0,126,0,185,255,243,0,126,0,186,255,243,0,126,0,187,255,243,0,126,0,189,255,241,0,126,0,193,255,242,0,126,0,195,255,243,0,126,0,197,255,241,0,126,0,198,255,219,0,126,0,199,255,220,0,126,0,200,255,241,0,127,0,3,255,213,0,127,0,8,255,213,0,127,0,11,255,212,0,127,0,18,255,239,0,127,0,26,255,242,0,127,0,32,255,239,0,127,0,36,255,245,0,127,0,40,255,245,0,127,0,48,255,245,0,127,0,50,255,245,0,127,0,53,255,202,0,127,0,54,255,240,0,127,0,55,255,207,0,127,0,56,255,219,0,127,0,58,255,192,0,127,0,61,255,208,0,127,0,68,255,245,0,127,0,69,255,245,0,127,0,70,255,245,0,127,0,71,255,241,0,127,0,72,255,248,0,127,0,77,255,249,0,127,0,80,255,245,0,127,0,82,255,245,0,127,0,85,255,229,0,127,0,86,255,244,0,127,0,87,255,221,0,127,0,88,255,228,0,127,0,90,255,217,0,127,0,94,255,246,0,127,0,107,255,247,0,127,0,110,255,241,0,127,0,134,255,245,0,127,0,145,255,245,0,127,0,146,255,245,0,127,0,147,255,245,0,127,0,148,255,245,0,127,0,149,255,245,0,127,0,151,255,245,0,127,0,152,255,240,0,127,0,153,255,240,0,127,0,154,255,240,0,127,0,155,255,240,0,127,0,156,255,192,0,127,0,158,255,242,0,127,0,166,255,245,0,127,0,167,255,245,0,127,0,168,255,245,0,127,0,169,255,245,0,127,0,170,255,245,0,127,0,175,255,250,0,127,0,177,255,245,0,127,0,178,255,245,0,127,0,179,255,245,0,127,0,180,255,245,0,127,0,181,255,245,0,127,0,183,255,245,0,127,0,184,255,244,0,127,0,185,255,244,0,127,0,186,255,244,0,127,0,187,255,244,0,127,0,188,255,217,0,127,0,190,255,217,0,127,0,194,255,245,0,127,0,195,255,245,0,127,0,198,255,192,0,127,0,209,255,205,0,127,0,210,255,204,0,127,0,212,255,205,0,127,0,213,255,204,0,127,0,220,255,247,0,127,0,240,255,212,0,128,0,3,255,213,0,128,0,8,255,213,0,128,0,11,255,212,0,128,0,18,255,239,0,128,0,26,255,242,0,128,0,32,255,239,0,128,0,36,255,245,0,128,0,40,255,245,0,128,0,48,255,245,0,128,0,50,255,245,0,128,0,53,255,202,0,128,0,54,255,240,0,128,0,55,255,207,0,128,0,56,255,219,0,128,0,58,255,192,0,128,0,61,255,208,0,128,0,68,255,245,0,128,0,69,255,245,0,128,0,70,255,245,0,128,0,71,255,241,0,128,0,72,255,248,0,128,0,77,255,249,0,128,0,80,255,245,0,128,0,82,255,245,0,128,0,85,255,229,0,128,0,86,255,244,0,128,0,87,255,221,0,128,0,88,255,228,0,128,0,90,255,217,0,128,0,94,255,246,0,128,0,107,255,247,0,128,0,110,255,241,0,128,0,134,255,245,0,128,0,145,255,245,0,128,0,146,255,245,0,128,0,147,255,245,0,128,0,148,255,245,0,128,0,149,255,245,0,128,0,151,255,245,0,128,0,152,255,240,0,128,0,153,255,240,0,128,0,154,255,240,0,128,0,155,255,240,0,128,0,156,255,192,0,128,0,158,255,242,0,128,0,166,255,245,0,128,0,167,255,245,0,128,0,168,255,245,0,128,0,169,255,245,0,128,0,170,255,245,0,128,0,175,255,250,0,128,0,177,255,245,0,128,0,178,255,245,0,128,0,179,255,245,0,128,0,180,255,245,0,128,0,181,255,245,0,128,0,183,255,245,0,128,0,184,255,244,0,128,0,185,255,244,0,128,0,186,255,244,0,128,0,187,255,244,0,128,0,188,255,217,0,128,0,190,255,217,0,128,0,194,255,245,0,128,0,195,255,245,0,128,0,198,255,192,0,128,0,209,255,205,0,128,0,210,255,204,0,128,0,212,255,205,0,128,0,213,255,204,0,128,0,220,255,247,0,128,0,240,255,212,0,129,0,3,255,213,0,129,0,8,255,213,0,129,0,11,255,212,0,129,0,18,255,239,0,129,0,26,255,242,0,129,0,32,255,239,0,129,0,36,255,245,0,129,0,40,255,245,0,129,0,48,255,245,0,129,0,50,255,245,0,129,0,53,255,202,0,129,0,54,255,240,0,129,0,55,255,207,0,129,0,56,255,219,0,129,0,58,255,192,0,129,0,61,255,208,0,129,0,68,255,245,0,129,0,69,255,245,0,129,0,70,255,245,0,129,0,71,255,241,0,129,0,72,255,248,0,129,0,77,255,249,0,129,0,80,255,245,0,129,0,82,255,245,0,129,0,85,255,229,0,129,0,86,255,244,0,129,0,87,255,221,0,129,0,88,255,228,0,129,0,90,255,217,0,129,0,94,255,246,0,129,0,107,255,247,0,129,0,110,255,241,0,129,0,134,255,245,0,129,0,145,255,245,0,129,0,146,255,245,0,129,0,147,255,245,0,129,0,148,255,245,0,129,0,149,255,245,0,129,0,151,255,245,0,129,0,152,255,240,0,129,0,153,255,240,0,129,0,154,255,240,0,129,0,155,255,240,0,129,0,156,255,192,0,129,0,158,255,242,0,129,0,166,255,245,0,129,0,167,255,245,0,129,0,168,255,245,0,129,0,169,255,245,0,129,0,170,255,245,0,129,0,175,255,250,0,129,0,177,255,245,0,129,0,178,255,245,0,129,0,179,255,245,0,129,0,180,255,245,0,129,0,181,255,245,0,129,0,183,255,245,0,129,0,184,255,244,0,129,0,185,255,244,0,129,0,186,255,244,0,129,0,187,255,244,0,129,0,188,255,217,0,129,0,190,255,217,0,129,0,194,255,245,0,129,0,195,255,245,0,129,0,198,255,192,0,129,0,209,255,205,0,129,0,210,255,204,0,129,0,212,255,205,0,129,0,213,255,204,0,129,0,220,255,247,0,129,0,240,255,212,0,130,0,3,255,213,0,130,0,8,255,213,0,130,0,11,255,212,0,130,0,18,255,239,0,130,0,26,255,242,0,130,0,32,255,239,0,130,0,36,255,245,0,130,0,40,255,245,0,130,0,48,255,245,0,130,0,50,255,245,0,130,0,53,255,202,0,130,0,54,255,240,0,130,0,55,255,207,0,130,0,56,255,219,0,130,0,58,255,192,0,130,0,61,255,208,0,130,0,68,255,245,0,130,0,69,255,245,0,130,0,70,255,245,0,130,0,71,255,241,0,130,0,72,255,248,0,130,0,77,255,249,0,130,0,80,255,245,0,130,0,82,255,245,0,130,0,85,255,229,0,130,0,86,255,244,0,130,0,87,255,221,0,130,0,88,255,228,0,130,0,90,255,217,0,130,0,94,255,246,0,130,0,107,255,247,0,130,0,110,255,241,0,130,0,134,255,245,0,130,0,145,255,245,0,130,0,146,255,245,0,130,0,147,255,245,0,130,0,148,255,245,0,130,0,149,255,245,0,130,0,151,255,245,0,130,0,152,255,240,0,130,0,153,255,240,0,130,0,154,255,240,0,130,0,155,255,240,0,130,0,156,255,192,0,130,0,158,255,242,0,130,0,166,255,245,0,130,0,167,255,245,0,130,0,168,255,245,0,130,0,169,255,245,0,130,0,170,255,245,0,130,0,175,255,250,0,130,0,177,255,245,0,130,0,178,255,245,0,130,0,179,255,245,0,130,0,180,255,245,0,130,0,181,255,245,0,130,0,183,255,245,0,130,0,184,255,244,0,130,0,185,255,244,0,130,0,186,255,244,0,130,0,187,255,244,0,130,0,188,255,217,0,130,0,190,255,217,0,130,0,194,255,245,0,130,0,195,255,245,0,130,0,198,255,192,0,130,0,209,255,205,0,130,0,210,255,204,0,130,0,212,255,205,0,130,0,213,255,204,0,130,0,220,255,247,0,130,0,240,255,212,0,131,0,3,255,213,0,131,0,8,255,213,0,131,0,11,255,212,0,131,0,18,255,239,0,131,0,26,255,242,0,131,0,32,255,239,0,131,0,36,255,245,0,131,0,40,255,245,0,131,0,48,255,245,0,131,0,50,255,245,0,131,0,53,255,202,0,131,0,54,255,240,0,131,0,55,255,207,0,131,0,56,255,219,0,131,0,58,255,192,0,131,0,61,255,208,0,131,0,68,255,245,0,131,0,69,255,245,0,131,0,70,255,245,0,131,0,71,255,241,0,131,0,72,255,248,0,131,0,77,255,249,0,131,0,80,255,245,0,131,0,82,255,245,0,131,0,85,255,229,0,131,0,86,255,244,0,131,0,87,255,221,0,131,0,88,255,228,0,131,0,90,255,217,0,131,0,94,255,246,0,131,0,107,255,247,0,131,0,110,255,241,0,131,0,134,255,245,0,131,0,145,255,245,0,131,0,146,255,245,0,131,0,147,255,245,0,131,0,148,255,245,0,131,0,149,255,245,0,131,0,151,255,245,0,131,0,152,255,240,0,131,0,153,255,240,0,131,0,154,255,240,0,131,0,155,255,240,0,131,0,156,255,192,0,131,0,158,255,242,0,131,0,166,255,245,0,131,0,167,255,245,0,131,0,168,255,245,0,131,0,169,255,245,0,131,0,170,255,245,0,131,0,175,255,250,0,131,0,177,255,245,0,131,0,178,255,245,0,131,0,179,255,245,0,131,0,180,255,245,0,131,0,181,255,245,0,131,0,183,255,245,0,131,0,184,255,244,0,131,0,185,255,244,0,131,0,186,255,244,0,131,0,187,255,244,0,131,0,188,255,217,0,131,0,190,255,217,0,131,0,194,255,245,0,131,0,195,255,245,0,131,0,198,255,192,0,131,0,209,255,205,0,131,0,210,255,204,0,131,0,212,255,205,0,131,0,213,255,204,0,131,0,220,255,247,0,131,0,240,255,212,0,132,0,3,255,213,0,132,0,8,255,213,0,132,0,11,255,212,0,132,0,18,255,239,0,132,0,26,255,242,0,132,0,32,255,239,0,132,0,36,255,245,0,132,0,40,255,245,0,132,0,48,255,245,0,132,0,50,255,245,0,132,0,53,255,202,0,132,0,54,255,240,0,132,0,55,255,207,0,132,0,56,255,219,0,132,0,58,255,192,0,132,0,61,255,208,0,132,0,68,255,245,0,132,0,69,255,245,0,132,0,70,255,245,0,132,0,71,255,241,0,132,0,72,255,248,0,132,0,77,255,249,0,132,0,80,255,245,0,132,0,82,255,245,0,132,0,85,255,229,0,132,0,86,255,244,0,132,0,87,255,221,0,132,0,88,255,228,0,132,0,90,255,217,0,132,0,94,255,246,0,132,0,107,255,247,0,132,0,110,255,241,0,132,0,134,255,245,0,132,0,145,255,245,0,132,0,146,255,245,0,132,0,147,255,245,0,132,0,148,255,245,0,132,0,149,255,245,0,132,0,151,255,245,0,132,0,152,255,240,0,132,0,153,255,240,0,132,0,154,255,240,0,132,0,155,255,240,0,132,0,156,255,192,0,132,0,158,255,242,0,132,0,166,255,245,0,132,0,167,255,245,0,132,0,168,255,245,0,132,0,169,255,245,0,132,0,170,255,245,0,132,0,175,255,250,0,132,0,177,255,245,0,132,0,178,255,245,0,132,0,179,255,245,0,132,0,180,255,245,0,132,0,181,255,245,0,132,0,183,255,245,0,132,0,184,255,244,0,132,0,185,255,244,0,132,0,186,255,244,0,132,0,187,255,244,0,132,0,188,255,217,0,132,0,190,255,217,0,132,0,194,255,245,0,132,0,195,255,245,0,132,0,198,255,192,0,132,0,209,255,205,0,132,0,210,255,204,0,132,0,212,255,205,0,132,0,213,255,204,0,132,0,220,255,247,0,132,0,240,255,212,0,133,0,14,255,244,0,133,0,21,255,220,0,133,0,36,255,245,0,133,0,40,255,245,0,133,0,48,255,245,0,133,0,50,255,245,0,133,0,68,255,240,0,133,0,69,255,240,0,133,0,70,255,240,0,133,0,71,255,243,0,133,0,72,255,241,0,133,0,78,255,247,0,133,0,79,255,247,0,133,0,80,255,240,0,133,0,81,255,247,0,133,0,82,255,240,0,133,0,83,255,247,0,133,0,84,255,251,0,133,0,85,255,242,0,133,0,86,255,238,0,133,0,87,255,241,0,133,0,88,255,243,0,133,0,90,255,240,0,133,0,107,255,235,0,133,0,110,255,248,0,133,0,134,255,245,0,133,0,145,255,245,0,133,0,146,255,245,0,133,0,147,255,245,0,133,0,148,255,245,0,133,0,149,255,245,0,133,0,151,255,245,0,133,0,158,255,243,0,133,0,166,255,240,0,133,0,167,255,240,0,133,0,168,255,240,0,133,0,169,255,240,0,133,0,170,255,240,0,133,0,173,0,21,0,133,0,175,255,246,0,133,0,176,255,247,0,133,0,177,255,240,0,133,0,178,255,240,0,133,0,179,255,240,0,133,0,180,255,240,0,133,0,181,255,240,0,133,0,183,255,240,0,133,0,184,255,238,0,133,0,185,255,238,0,133,0,186,255,238,0,133,0,187,255,238,0,133,0,188,255,240,0,133,0,189,255,247,0,133,0,190,255,240,0,133,0,194,255,245,0,133,0,195,255,240,0,133,0,197,255,251,0,133,0,207,255,244,0,133,0,208,255,244,0,133,0,220,255,235,0,134,0,14,255,195,0,134,0,21,255,207,0,134,0,36,255,242,0,134,0,40,255,242,0,134,0,48,255,242,0,134,0,50,255,242,0,134,0,68,255,242,0,134,0,69,255,242,0,134,0,70,255,242,0,134,0,71,255,249,0,134,0,72,255,241,0,134,0,78,255,249,0,134,0,79,255,249,0,134,0,80,255,242,0,134,0,81,255,249,0,134,0,82,255,242,0,134,0,83,255,249,0,134,0,85,255,249,0,134,0,86,255,241,0,134,0,87,255,249,0,134,0,88,255,250,0,134,0,90,255,249,0,134,0,107,255,226,0,134,0,134,255,242,0,134,0,145,255,242,0,134,0,146,255,242,0,134,0,147,255,242,0,134,0,148,255,242,0,134,0,149,255,242,0,134,0,151,255,242,0,134,0,158,255,250,0,134,0,166,255,242,0,134,0,167,255,242,0,134,0,168,255,242,0,134,0,169,255,242,0,134,0,170,255,242,0,134,0,173,0,31,0,134,0,174,0,12,0,134,0,175,255,249,0,134,0,176,255,249,0,134,0,177,255,242,0,134,0,178,255,242,0,134,0,179,255,242,0,134,0,180,255,242,0,134,0,181,255,242,0,134,0,183,255,242,0,134,0,184,255,241,0,134,0,185,255,241,0,134,0,186,255,241,0,134,0,187,255,241,0,134,0,188,255,249,0,134,0,189,255,249,0,134,0,190,255,249,0,134,0,194,255,242,0,134,0,195,255,242,0,134,0,207,255,195,0,134,0,208,255,195,0,134,0,220,255,226,0,135,0,14,255,244,0,135,0,21,255,220,0,135,0,36,255,245,0,135,0,40,255,245,0,135,0,48,255,245,0,135,0,50,255,245,0,135,0,68,255,240,0,135,0,69,255,240,0,135,0,70,255,240,0,135,0,71,255,243,0,135,0,72,255,241,0,135,0,78,255,247,0,135,0,79,255,247,0,135,0,80,255,240,0,135,0,81,255,247,0,135,0,82,255,240,0,135,0,83,255,247,0,135,0,84,255,251,0,135,0,85,255,242,0,135,0,86,255,238,0,135,0,87,255,241,0,135,0,88,255,243,0,135,0,90,255,240,0,135,0,107,255,235,0,135,0,110,255,248,0,135,0,134,255,245,0,135,0,145,255,245,0,135,0,146,255,245,0,135,0,147,255,245,0,135,0,148,255,245,0,135,0,149,255,245,0,135,0,151,255,245,0,135,0,158,255,243,0,135,0,166,255,240,0,135,0,167,255,240,0,135,0,168,255,240,0,135,0,169,255,240,0,135,0,170,255,240,0,135,0,173,0,21,0,135,0,175,255,246,0,135,0,176,255,247,0,135,0,177,255,240,0,135,0,178,255,240,0,135,0,179,255,240,0,135,0,180,255,240,0,135,0,181,255,240,0,135,0,183,255,240,0,135,0,184,255,238,0,135,0,185,255,238,0,135,0,186,255,238,0,135,0,187,255,238,0,135,0,188,255,240,0,135,0,189,255,247,0,135,0,190,255,240,0,135,0,194,255,245,0,135,0,195,255,240,0,135,0,197,255,251,0,135,0,207,255,244,0,135,0,208,255,244,0,135,0,220,255,235,0,136,0,14,255,244,0,136,0,21,255,220,0,136,0,36,255,245,0,136,0,40,255,245,0,136,0,48,255,245,0,136,0,50,255,245,0,136,0,68,255,240,0,136,0,69,255,240,0,136,0,70,255,240,0,136,0,71,255,243,0,136,0,72,255,241,0,136,0,78,255,247,0,136,0,79,255,247,0,136,0,80,255,240,0,136,0,81,255,247,0,136,0,82,255,240,0,136,0,83,255,247,0,136,0,84,255,251,0,136,0,85,255,242,0,136,0,86,255,238,0,136,0,87,255,241,0,136,0,88,255,243,0,136,0,90,255,240,0,136,0,107,255,235,0,136,0,110,255,248,0,136,0,134,255,245,0,136,0,145,255,245,0,136,0,146,255,245,0,136,0,147,255,245,0,136,0,148,255,245,0,136,0,149,255,245,0,136,0,151,255,245,0,136,0,158,255,243,0,136,0,166,255,240,0,136,0,167,255,240,0,136,0,168,255,240,0,136,0,169,255,240,0,136,0,170,255,240,0,136,0,173,0,21,0,136,0,175,255,246,0,136,0,176,255,247,0,136,0,177,255,240,0,136,0,178,255,240,0,136,0,179,255,240,0,136,0,180,255,240,0,136,0,181,255,240,0,136,0,183,255,240,0,136,0,184,255,238,0,136,0,185,255,238,0,136,0,186,255,238,0,136,0,187,255,238,0,136,0,188,255,240,0,136,0,189,255,247,0,136,0,190,255,240,0,136,0,194,255,245,0,136,0,195,255,240,0,136,0,197,255,251,0,136,0,207,255,244,0,136,0,208,255,244,0,136,0,220,255,235,0,137,0,14,255,244,0,137,0,21,255,220,0,137,0,36,255,245,0,137,0,40,255,245,0,137,0,48,255,245,0,137,0,50,255,245,0,137,0,68,255,240,0,137,0,69,255,240,0,137,0,70,255,240,0,137,0,71,255,243,0,137,0,72,255,241,0,137,0,78,255,247,0,137,0,79,255,247,0,137,0,80,255,240,0,137,0,81,255,247,0,137,0,82,255,240,0,137,0,83,255,247,0,137,0,84,255,251,0,137,0,85,255,242,0,137,0,86,255,238,0,137,0,87,255,241,0,137,0,88,255,243,0,137,0,90,255,240,0,137,0,107,255,235,0,137,0,110,255,248,0,137,0,134,255,245,0,137,0,145,255,245,0,137,0,146,255,245,0,137,0,147,255,245,0,137,0,148,255,245,0,137,0,149,255,245,0,137,0,151,255,245,0,137,0,158,255,243,0,137,0,166,255,240,0,137,0,167,255,240,0,137,0,168,255,240,0,137,0,169,255,240,0,137,0,170,255,240,0,137,0,173,0,21,0,137,0,175,255,246,0,137,0,176,255,247,0,137,0,177,255,240,0,137,0,178,255,240,0,137,0,179,255,240,0,137,0,180,255,240,0,137,0,181,255,240,0,137,0,183,255,240,0,137,0,184,255,238,0,137,0,185,255,238,0,137,0,186,255,238,0,137,0,187,255,238,0,137,0,188,255,240,0,137,0,189,255,247,0,137,0,190,255,240,0,137,0,194,255,245,0,137,0,195,255,240,0,137,0,197,255,251,0,137,0,207,255,244,0,137,0,208,255,244,0,137,0,220,255,235,0,138,0,14,255,244,0,138,0,21,255,220,0,138,0,36,255,245,0,138,0,40,255,245,0,138,0,48,255,245,0,138,0,50,255,245,0,138,0,68,255,240,0,138,0,69,255,240,0,138,0,70,255,240,0,138,0,71,255,243,0,138,0,72,255,241,0,138,0,78,255,247,0,138,0,79,255,247,0,138,0,80,255,240,0,138,0,81,255,247,0,138,0,82,255,240,0,138,0,83,255,247,0,138,0,84,255,251,0,138,0,85,255,242,0,138,0,86,255,238,0,138,0,87,255,241,0,138,0,88,255,243,0,138,0,90,255,240,0,138,0,107,255,235,0,138,0,110,255,248,0,138,0,134,255,245,0,138,0,145,255,245,0,138,0,146,255,245,0,138,0,147,255,245,0,138,0,148,255,245,0,138,0,149,255,245,0,138,0,151,255,245,0,138,0,158,255,243,0,138,0,166,255,240,0,138,0,167,255,240,0,138,0,168,255,240,0,138,0,169,255,240,0,138,0,170,255,240,0,138,0,173,0,21,0,138,0,175,255,246,0,138,0,176,255,247,0,138,0,177,255,240,0,138,0,178,255,240,0,138,0,179,255,240,0,138,0,180,255,240,0,138,0,181,255,240,0,138,0,183,255,240,0,138,0,184,255,238,0,138,0,185,255,238,0,138,0,186,255,238,0,138,0,187,255,238,0,138,0,188,255,240,0,138,0,189,255,247,0,138,0,190,255,240,0,138,0,194,255,245,0,138,0,195,255,240,0,138,0,197,255,251,0,138,0,207,255,244,0,138,0,208,255,244,0,138,0,220,255,235,0,139,0,10,255,246,0,139,0,46,255,251,0,139,0,66,255,246,0,139,0,67,255,247,0,139,0,68,255,242,0,139,0,69,255,242,0,139,0,70,255,242,0,139,0,71,255,247,0,139,0,72,255,241,0,139,0,73,255,247,0,139,0,74,255,247,0,139,0,75,255,247,0,139,0,76,255,247,0,139,0,77,255,246,0,139,0,78,255,247,0,139,0,79,255,247,0,139,0,80,255,242,0,139,0,81,255,247,0,139,0,82,255,242,0,139,0,83,255,247,0,139,0,84,255,246,0,139,0,85,255,247,0,139,0,86,255,245,0,139,0,87,255,247,0,139,0,88,255,248,0,139,0,90,255,247,0,139,0,91,255,246,0,139,0,158,255,244,0,139,0,159,255,246,0,139,0,160,255,246,0,139,0,161,255,246,0,139,0,162,255,246,0,139,0,163,255,246,0,139,0,164,255,246,0,139,0,165,255,246,0,139,0,166,255,242,0,139,0,167,255,242,0,139,0,168,255,242,0,139,0,169,255,242,0,139,0,170,255,242,0,139,0,171,255,247,0,139,0,172,255,247,0,139,0,173,255,247,0,139,0,174,255,247,0,139,0,175,255,243,0,139,0,176,255,247,0,139,0,177,255,242,0,139,0,178,255,242,0,139,0,179,255,242,0,139,0,180,255,242,0,139,0,181,255,242,0,139,0,183,255,242,0,139,0,184,255,245,0,139,0,185,255,245,0,139,0,186,255,245,0,139,0,187,255,245,0,139,0,188,255,247,0,139,0,189,255,247,0,139,0,190,255,247,0,139,0,193,255,247,0,139,0,195,255,242,0,139,0,197,255,246,0,139,0,200,255,246,0,140,0,10,255,246,0,140,0,46,255,251,0,140,0,66,255,246,0,140,0,67,255,247,0,140,0,68,255,242,0,140,0,69,255,242,0,140,0,70,255,242,0,140,0,71,255,247,0,140,0,72,255,241,0,140,0,73,255,247,0,140,0,74,255,247,0,140,0,75,255,247,0,140,0,76,255,247,0,140,0,77,255,246,0,140,0,78,255,247,0,140,0,79,255,247,0,140,0,80,255,242,0,140,0,81,255,247,0,140,0,82,255,242,0,140,0,83,255,247,0,140,0,84,255,246,0,140,0,85,255,247,0,140,0,86,255,245,0,140,0,87,255,247,0,140,0,88,255,248,0,140,0,90,255,247,0,140,0,91,255,246,0,140,0,158,255,244,0,140,0,159,255,246,0,140,0,160,255,246,0,140,0,161,255,246,0,140,0,162,255,246,0,140,0,163,255,246,0,140,0,164,255,246,0,140,0,165,255,246,0,140,0,166,255,242,0,140,0,167,255,242,0,140,0,168,255,242,0,140,0,169,255,242,0,140,0,170,255,242,0,140,0,171,255,247,0,140,0,172,255,247,0,140,0,173,255,247,0,140,0,174,255,247,0,140,0,175,255,243,0,140,0,176,255,247,0,140,0,177,255,242,0,140,0,178,255,242,0,140,0,179,255,242,0,140,0,180,255,242,0,140,0,181,255,242,0,140,0,183,255,242,0,140,0,184,255,245,0,140,0,185,255,245,0,140,0,186,255,245,0,140,0,187,255,245,0,140,0,188,255,247,0,140,0,189,255,247,0,140,0,190,255,247,0,140,0,193,255,247,0,140,0,195,255,242,0,140,0,197,255,246,0,140,0,200,255,246,0,141,0,10,255,246,0,141,0,46,255,251,0,141,0,66,255,246,0,141,0,67,255,247,0,141,0,68,255,242,0,141,0,69,255,242,0,141,0,70,255,242,0,141,0,71,255,247,0,141,0,72,255,241,0,141,0,73,255,247,0,141,0,74,255,247,0,141,0,75,255,247,0,141,0,76,255,247,0,141,0,77,255,246,0,141,0,78,255,247,0,141,0,79,255,247,0,141,0,80,255,242,0,141,0,81,255,247,0,141,0,82,255,242,0,141,0,83,255,247,0,141,0,84,255,246,0,141,0,85,255,247,0,141,0,86,255,245,0,141,0,87,255,247,0,141,0,88,255,248,0,141,0,90,255,247,0,141,0,91,255,246,0,141,0,158,255,244,0,141,0,159,255,246,0,141,0,160,255,246,0,141,0,161,255,246,0,141,0,162,255,246,0,141,0,163,255,246,0,141,0,164,255,246,0,141,0,165,255,246,0,141,0,166,255,242,0,141,0,167,255,242,0,141,0,168,255,242,0,141,0,169,255,242,0,141,0,170,255,242,0,141,0,171,255,247,0,141,0,172,255,247,0,141,0,173,255,247,0,141,0,174,255,247,0,141,0,175,255,243,0,141,0,176,255,247,0,141,0,177,255,242,0,141,0,178,255,242,0,141,0,179,255,242,0,141,0,180,255,242,0,141,0,181,255,242,0,141,0,183,255,242,0,141,0,184,255,245,0,141,0,185,255,245,0,141,0,186,255,245,0,141,0,187,255,245,0,141,0,188,255,247,0,141,0,189,255,247,0,141,0,190,255,247,0,141,0,193,255,247,0,141,0,195,255,242,0,141,0,197,255,246,0,141,0,200,255,246,0,142,0,10,255,246,0,142,0,46,255,251,0,142,0,66,255,246,0,142,0,67,255,247,0,142,0,68,255,242,0,142,0,69,255,242,0,142,0,70,255,242,0,142,0,71,255,247,0,142,0,72,255,241,0,142,0,73,255,247,0,142,0,74,255,247,0,142,0,75,255,247,0,142,0,76,255,247,0,142,0,77,255,246,0,142,0,78,255,247,0,142,0,79,255,247,0,142,0,80,255,242,0,142,0,81,255,247,0,142,0,82,255,242,0,142,0,83,255,247,0,142,0,84,255,246,0,142,0,85,255,247,0,142,0,86,255,245,0,142,0,87,255,247,0,142,0,88,255,248,0,142,0,90,255,247,0,142,0,91,255,246,0,142,0,158,255,244,0,142,0,159,255,246,0,142,0,160,255,246,0,142,0,161,255,246,0,142,0,162,255,246,0,142,0,163,255,246,0,142,0,164,255,246,0,142,0,165,255,246,0,142,0,166,255,242,0,142,0,167,255,242,0,142,0,168,255,242,0,142,0,169,255,242,0,142,0,170,255,242,0,142,0,171,255,247,0,142,0,172,255,247,0,142,0,173,255,247,0,142,0,174,255,247,0,142,0,175,255,243,0,142,0,176,255,247,0,142,0,177,255,242,0,142,0,178,255,242,0,142,0,179,255,242,0,142,0,180,255,242,0,142,0,181,255,242,0,142,0,183,255,242,0,142,0,184,255,245,0,142,0,185,255,245,0,142,0,186,255,245,0,142,0,187,255,245,0,142,0,188,255,247,0,142,0,189,255,247,0,142,0,190,255,247,0,142,0,193,255,247,0,142,0,195,255,242,0,142,0,197,255,246,0,142,0,200,255,246,0,143,0,10,255,228,0,143,0,13,255,241,0,143,0,15,255,242,0,143,0,16,255,237,0,143,0,20,255,248,0,143,0,24,255,240,0,143,0,32,255,237,0,143,0,34,255,244,0,143,0,46,255,250,0,143,0,53,255,228,0,143,0,55,255,243,0,143,0,56,255,248,0,143,0,57,255,225,0,143,0,58,255,227,0,143,0,59,255,235,0,143,0,61,255,244,0,143,0,62,255,224,0,143,0,66,255,248,0,143,0,67,255,249,0,143,0,68,255,250,0,143,0,69,255,250,0,143,0,70,255,250,0,143,0,72,255,250,0,143,0,73,255,249,0,143,0,74,255,249,0,143,0,75,255,249,0,143,0,76,255,249,0,143,0,77,255,249,0,143,0,78,255,249,0,143,0,79,255,249,0,143,0,80,255,250,0,143,0,81,255,249,0,143,0,82,255,250,0,143,0,83,255,249,0,143,0,84,255,250,0,143,0,86,255,250,0,143,0,89,255,244,0,143,0,91,255,250,0,143,0,94,255,229,0,143,0,127,255,244,0,143,0,128,255,244,0,143,0,129,255,244,0,143,0,130,255,244,0,143,0,131,255,244,0,143,0,132,255,244,0,143,0,133,255,226,0,143,0,156,255,227,0,143,0,158,255,250,0,143,0,159,255,248,0,143,0,160,255,248,0,143,0,161,255,248,0,143,0,162,255,248,0,143,0,163,255,248,0,143,0,164,255,248,0,143,0,165,255,248,0,143,0,166,255,250,0,143,0,167,255,250,0,143,0,168,255,250,0,143,0,169,255,250,0,143,0,170,255,250,0,143,0,171,255,249,0,143,0,172,255,249,0,143,0,173,255,249,0,143,0,174,255,249,0,143,0,175,255,249,0,143,0,176,255,249,0,143,0,177,255,250,0,143,0,178,255,250,0,143,0,179,255,250,0,143,0,180,255,250,0,143,0,181,255,250,0,143,0,183,255,250,0,143,0,184,255,250,0,143,0,185,255,250,0,143,0,186,255,250,0,143,0,187,255,250,0,143,0,189,255,249,0,143,0,193,255,249,0,143,0,195,255,250,0,143,0,197,255,250,0,143,0,198,255,227,0,143,0,199,255,235,0,143,0,200,255,250,0,143,0,210,255,247,0,143,0,211,255,241,0,143,0,213,255,247,0,143,0,214,255,241,0,143,0,218,255,242,0,143,0,240,255,246,0,144,0,10,255,246,0,144,0,46,255,251,0,144,0,66,255,246,0,144,0,67,255,247,0,144,0,68,255,242,0,144,0,69,255,242,0,144,0,70,255,242,0,144,0,71,255,247,0,144,0,72,255,241,0,144,0,73,255,247,0,144,0,74,255,247,0,144,0,75,255,247,0,144,0,76,255,247,0,144,0,77,255,246,0,144,0,78,255,247,0,144,0,79,255,247,0,144,0,80,255,242,0,144,0,81,255,247,0,144,0,82,255,242,0,144,0,83,255,247,0,144,0,84,255,246,0,144,0,85,255,247,0,144,0,86,255,245,0,144,0,87,255,247,0,144,0,88,255,248,0,144,0,90,255,247,0,144,0,91,255,246,0,144,0,158,255,244,0,144,0,159,255,246,0,144,0,160,255,246,0,144,0,161,255,246,0,144,0,162,255,246,0,144,0,163,255,246,0,144,0,164,255,246,0,144,0,165,255,246,0,144,0,166,255,242,0,144,0,167,255,242,0,144,0,168,255,242,0,144,0,169,255,242,0,144,0,170,255,242,0,144,0,171,255,247,0,144,0,172,255,247,0,144,0,173,255,247,0,144,0,174,255,247,0,144,0,175,255,243,0,144,0,176,255,247,0,144,0,177,255,242,0,144,0,178,255,242,0,144,0,179,255,242,0,144,0,180,255,242,0,144,0,181,255,242,0,144,0,183,255,242,0,144,0,184,255,245,0,144,0,185,255,245,0,144,0,186,255,245,0,144,0,187,255,245,0,144,0,188,255,247,0,144,0,189,255,247,0,144,0,190,255,247,0,144,0,193,255,247,0,144,0,195,255,242,0,144,0,197,255,246,0,144,0,200,255,246,0,145,0,10,255,229,0,145,0,13,255,242,0,145,0,15,255,242,0,145,0,16,255,239,0,145,0,24,255,243,0,145,0,32,255,240,0,145,0,34,255,245,0,145,0,46,255,251,0,145,0,53,255,232,0,145,0,55,255,244,0,145,0,56,255,248,0,145,0,57,255,229,0,145,0,58,255,230,0,145,0,59,255,238,0,145,0,61,255,245,0,145,0,62,255,227,0,145,0,66,255,247,0,145,0,67,255,250,0,145,0,68,255,250,0,145,0,69,255,250,0,145,0,70,255,250,0,145,0,72,255,250,0,145,0,73,255,250,0,145,0,74,255,249,0,145,0,75,255,249,0,145,0,76,255,250,0,145,0,77,255,250,0,145,0,78,255,249,0,145,0,79,255,249,0,145,0,80,255,250,0,145,0,81,255,249,0,145,0,82,255,250,0,145,0,83,255,249,0,145,0,84,255,250,0,145,0,86,255,251,0,145,0,89,255,245,0,145,0,91,255,250,0,145,0,94,255,231,0,145,0,127,255,245,0,145,0,128,255,245,0,145,0,129,255,245,0,145,0,130,255,245,0,145,0,131,255,245,0,145,0,132,255,245,0,145,0,133,255,229,0,145,0,156,255,230,0,145,0,158,255,251,0,145,0,159,255,247,0,145,0,160,255,247,0,145,0,161,255,247,0,145,0,162,255,247,0,145,0,163,255,247,0,145,0,164,255,247,0,145,0,165,255,247,0,145,0,166,255,250,0,145,0,167,255,250,0,145,0,168,255,250,0,145,0,169,255,250,0,145,0,170,255,250,0,145,0,171,255,249,0,145,0,172,255,249,0,145,0,173,255,249,0,145,0,174,255,249,0,145,0,175,255,250,0,145,0,176,255,249,0,145,0,177,255,250,0,145,0,178,255,250,0,145,0,179,255,250,0,145,0,180,255,250,0,145,0,181,255,250,0,145,0,183,255,250,0,145,0,184,255,251,0,145,0,185,255,251,0,145,0,186,255,251,0,145,0,187,255,251,0,145,0,189,255,249,0,145,0,193,255,249,0,145,0,195,255,250,0,145,0,197,255,250,0,145,0,198,255,230,0,145,0,199,255,238,0,145,0,200,255,250,0,145,0,210,255,247,0,145,0,211,255,242,0,145,0,213,255,247,0,145,0,214,255,242,0,145,0,218,255,242,0,145,0,240,255,246,0,146,0,10,255,229,0,146,0,13,255,242,0,146,0,15,255,242,0,146,0,16,255,239,0,146,0,24,255,243,0,146,0,32,255,240,0,146,0,34,255,245,0,146,0,46,255,251,0,146,0,53,255,232,0,146,0,55,255,244,0,146,0,56,255,248,0,146,0,57,255,229,0,146,0,58,255,230,0,146,0,59,255,238,0,146,0,61,255,245,0,146,0,62,255,227,0,146,0,66,255,247,0,146,0,67,255,250,0,146,0,68,255,250,0,146,0,69,255,250,0,146,0,70,255,250,0,146,0,72,255,250,0,146,0,73,255,250,0,146,0,74,255,249,0,146,0,75,255,249,0,146,0,76,255,250,0,146,0,77,255,250,0,146,0,78,255,249,0,146,0,79,255,249,0,146,0,80,255,250,0,146,0,81,255,249,0,146,0,82,255,250,0,146,0,83,255,249,0,146,0,84,255,250,0,146,0,86,255,251,0,146,0,89,255,245,0,146,0,91,255,250,0,146,0,94,255,231,0,146,0,127,255,245,0,146,0,128,255,245,0,146,0,129,255,245,0,146,0,130,255,245,0,146,0,131,255,245,0,146,0,132,255,245,0,146,0,133,255,229,0,146,0,156,255,230,0,146,0,158,255,251,0,146,0,159,255,247,0,146,0,160,255,247,0,146,0,161,255,247,0,146,0,162,255,247,0,146,0,163,255,247,0,146,0,164,255,247,0,146,0,165,255,247,0,146,0,166,255,250,0,146,0,167,255,250,0,146,0,168,255,250,0,146,0,169,255,250,0,146,0,170,255,250,0,146,0,171,255,249,0,146,0,172,255,249,0,146,0,173,255,249,0,146,0,174,255,249,0,146,0,175,255,250,0,146,0,176,255,249,0,146,0,177,255,250,0,146,0,178,255,250,0,146,0,179,255,250,0,146,0,180,255,250,0,146,0,181,255,250,0,146,0,183,255,250,0,146,0,184,255,251,0,146,0,185,255,251,0,146,0,186,255,251,0,146,0,187,255,251,0,146,0,189,255,249,0,146,0,193,255,249,0,146,0,195,255,250,0,146,0,197,255,250,0,146,0,198,255,230,0,146,0,199,255,238,0,146,0,200,255,250,0,146,0,210,255,247,0,146,0,211,255,242,0,146,0,213,255,247,0,146,0,214,255,242,0,146,0,218,255,242,0,146,0,240,255,246,0,147,0,10,255,229,0,147,0,13,255,242,0,147,0,15,255,242,0,147,0,16,255,239,0,147,0,24,255,243,0,147,0,32,255,240,0,147,0,34,255,245,0,147,0,46,255,251,0,147,0,53,255,232,0,147,0,55,255,244,0,147,0,56,255,248,0,147,0,57,255,229,0,147,0,58,255,230,0,147,0,59,255,238,0,147,0,61,255,245,0,147,0,62,255,227,0,147,0,66,255,247,0,147,0,67,255,250,0,147,0,68,255,250,0,147,0,69,255,250,0,147,0,70,255,250,0,147,0,72,255,250,0,147,0,73,255,250,0,147,0,74,255,249,0,147,0,75,255,249,0,147,0,76,255,250,0,147,0,77,255,250,0,147,0,78,255,249,0,147,0,79,255,249,0,147,0,80,255,250,0,147,0,81,255,249,0,147,0,82,255,250,0,147,0,83,255,249,0,147,0,84,255,250,0,147,0,86,255,251,0,147,0,89,255,245,0,147,0,91,255,250,0,147,0,94,255,231,0,147,0,127,255,245,0,147,0,128,255,245,0,147,0,129,255,245,0,147,0,130,255,245,0,147,0,131,255,245,0,147,0,132,255,245,0,147,0,133,255,229,0,147,0,156,255,230,0,147,0,158,255,251,0,147,0,159,255,247,0,147,0,160,255,247,0,147,0,161,255,247,0,147,0,162,255,247,0,147,0,163,255,247,0,147,0,164,255,247,0,147,0,165,255,247,0,147,0,166,255,250,0,147,0,167,255,250,0,147,0,168,255,250,0,147,0,169,255,250,0,147,0,170,255,250,0,147,0,171,255,249,0,147,0,172,255,249,0,147,0,173,255,249,0,147,0,174,255,249,0,147,0,175,255,250,0,147,0,176,255,249,0,147,0,177,255,250,0,147,0,178,255,250,0,147,0,179,255,250,0,147,0,180,255,250,0,147,0,181,255,250,0,147,0,183,255,250,0,147,0,184,255,251,0,147,0,185,255,251,0,147,0,186,255,251,0,147,0,187,255,251,0,147,0,189,255,249,0,147,0,193,255,249,0,147,0,195,255,250,0,147,0,197,255,250,0,147,0,198,255,230,0,147,0,199,255,238,0,147,0,200,255,250,0,147,0,210,255,247,0,147,0,211,255,242,0,147,0,213,255,247,0,147,0,214,255,242,0,147,0,218,255,242,0,147,0,240,255,246,0,148,0,10,255,229,0,148,0,13,255,242,0,148,0,15,255,242,0,148,0,16,255,239,0,148,0,24,255,243,0,148,0,32,255,240,0,148,0,34,255,245,0,148,0,46,255,251,0,148,0,53,255,232,0,148,0,55,255,244,0,148,0,56,255,248,0,148,0,57,255,229,0,148,0,58,255,230,0,148,0,59,255,238,0,148,0,61,255,245,0,148,0,62,255,227,0,148,0,66,255,247,0,148,0,67,255,250,0,148,0,68,255,250,0,148,0,69,255,250,0,148,0,70,255,250,0,148,0,72,255,250,0,148,0,73,255,250,0,148,0,74,255,249,0,148,0,75,255,249,0,148,0,76,255,250,0,148,0,77,255,250,0,148,0,78,255,249,0,148,0,79,255,249,0,148,0,80,255,250,0,148,0,81,255,249,0,148,0,82,255,250,0,148,0,83,255,249,0,148,0,84,255,250,0,148,0,86,255,251,0,148,0,89,255,245,0,148,0,91,255,250,0,148,0,94,255,231,0,148,0,127,255,245,0,148,0,128,255,245,0,148,0,129,255,245,0,148,0,130,255,245,0,148,0,131,255,245,0,148,0,132,255,245,0,148,0,133,255,229,0,148,0,156,255,230,0,148,0,158,255,251,0,148,0,159,255,247,0,148,0,160,255,247,0,148,0,161,255,247,0,148,0,162,255,247,0,148,0,163,255,247,0,148,0,164,255,247,0,148,0,165,255,247,0,148,0,166,255,250,0,148,0,167,255,250,0,148,0,168,255,250,0,148,0,169,255,250,0,148,0,170,255,250,0,148,0,171,255,249,0,148,0,172,255,249,0,148,0,173,255,249,0,148,0,174,255,249,0,148,0,175,255,250,0,148,0,176,255,249,0,148,0,177,255,250,0,148,0,178,255,250,0,148,0,179,255,250,0,148,0,180,255,250,0,148,0,181,255,250,0,148,0,183,255,250,0,148,0,184,255,251,0,148,0,185,255,251,0,148,0,186,255,251,0,148,0,187,255,251,0,148,0,189,255,249,0,148,0,193,255,249,0,148,0,195,255,250,0,148,0,197,255,250,0,148,0,198,255,230,0,148,0,199,255,238,0,148,0,200,255,250,0,148,0,210,255,247,0,148,0,211,255,242,0,148,0,213,255,247,0,148,0,214,255,242,0,148,0,218,255,242,0,148,0,240,255,246,0,149,0,10,255,229,0,149,0,13,255,242,0,149,0,15,255,242,0,149,0,16,255,239,0,149,0,24,255,243,0,149,0,32,255,240,0,149,0,34,255,245,0,149,0,46,255,251,0,149,0,53,255,232,0,149,0,55,255,244,0,149,0,56,255,248,0,149,0,57,255,229,0,149,0,58,255,230,0,149,0,59,255,238,0,149,0,61,255,245,0,149,0,62,255,227,0,149,0,66,255,247,0,149,0,67,255,250,0,149,0,68,255,250,0,149,0,69,255,250,0,149,0,70,255,250,0,149,0,72,255,250,0,149,0,73,255,250,0,149,0,74,255,249,0,149,0,75,255,249,0,149,0,76,255,250,0,149,0,77,255,250,0,149,0,78,255,249,0,149,0,79,255,249,0,149,0,80,255,250,0,149,0,81,255,249,0,149,0,82,255,250,0,149,0,83,255,249,0,149,0,84,255,250,0,149,0,86,255,251,0,149,0,89,255,245,0,149,0,91,255,250,0,149,0,94,255,231,0,149,0,127,255,245,0,149,0,128,255,245,0,149,0,129,255,245,0,149,0,130,255,245,0,149,0,131,255,245,0,149,0,132,255,245,0,149,0,133,255,229,0,149,0,156,255,230,0,149,0,158,255,251,0,149,0,159,255,247,0,149,0,160,255,247,0,149,0,161,255,247,0,149,0,162,255,247,0,149,0,163,255,247,0,149,0,164,255,247,0,149,0,165,255,247,0,149,0,166,255,250,0,149,0,167,255,250,0,149,0,168,255,250,0,149,0,169,255,250,0,149,0,170,255,250,0,149,0,171,255,249,0,149,0,172,255,249,0,149,0,173,255,249,0,149,0,174,255,249,0,149,0,175,255,250,0,149,0,176,255,249,0,149,0,177,255,250,0,149,0,178,255,250,0,149,0,179,255,250,0,149,0,180,255,250,0,149,0,181,255,250,0,149,0,183,255,250,0,149,0,184,255,251,0,149,0,185,255,251,0,149,0,186,255,251,0,149,0,187,255,251,0,149,0,189,255,249,0,149,0,193,255,249,0,149,0,195,255,250,0,149,0,197,255,250,0,149,0,198,255,230,0,149,0,199,255,238,0,149,0,200,255,250,0,149,0,210,255,247,0,149,0,211,255,242,0,149,0,213,255,247,0,149,0,214,255,242,0,149,0,218,255,242,0,149,0,240,255,246,0,151,0,10,255,229,0,151,0,13,255,242,0,151,0,15,255,242,0,151,0,16,255,239,0,151,0,24,255,243,0,151,0,32,255,240,0,151,0,34,255,245,0,151,0,46,255,251,0,151,0,53,255,232,0,151,0,55,255,244,0,151,0,56,255,248,0,151,0,57,255,229,0,151,0,58,255,230,0,151,0,59,255,238,0,151,0,61,255,245,0,151,0,62,255,227,0,151,0,66,255,247,0,151,0,67,255,250,0,151,0,68,255,250,0,151,0,69,255,250,0,151,0,70,255,250,0,151,0,72,255,250,0,151,0,73,255,250,0,151,0,74,255,249,0,151,0,75,255,249,0,151,0,76,255,250,0,151,0,77,255,250,0,151,0,78,255,249,0,151,0,79,255,249,0,151,0,80,255,250,0,151,0,81,255,249,0,151,0,82,255,250,0,151,0,83,255,249,0,151,0,84,255,250,0,151,0,86,255,251,0,151,0,89,255,245,0,151,0,91,255,250,0,151,0,94,255,231,0,151,0,127,255,245,0,151,0,128,255,245,0,151,0,129,255,245,0,151,0,130,255,245,0,151,0,131,255,245,0,151,0,132,255,245,0,151,0,133,255,229,0,151,0,156,255,230,0,151,0,158,255,251,0,151,0,159,255,247,0,151,0,160,255,247,0,151,0,161,255,247,0,151,0,162,255,247,0,151,0,163,255,247,0,151,0,164,255,247,0,151,0,165,255,247,0,151,0,166,255,250,0,151,0,167,255,250,0,151,0,168,255,250,0,151,0,169,255,250,0,151,0,170,255,250,0,151,0,171,255,249,0,151,0,172,255,249,0,151,0,173,255,249,0,151,0,174,255,249,0,151,0,175,255,250,0,151,0,176,255,249,0,151,0,177,255,250,0,151,0,178,255,250,0,151,0,179,255,250,0,151,0,180,255,250,0,151,0,181,255,250,0,151,0,183,255,250,0,151,0,184,255,251,0,151,0,185,255,251,0,151,0,186,255,251,0,151,0,187,255,251,0,151,0,189,255,249,0,151,0,193,255,249,0,151,0,195,255,250,0,151,0,197,255,250,0,151,0,198,255,230,0,151,0,199,255,238,0,151,0,200,255,250,0,151,0,210,255,247,0,151,0,211,255,242,0,151,0,213,255,247,0,151,0,214,255,242,0,151,0,218,255,242,0,151,0,240,255,246,0,152,0,10,255,245,0,152,0,13,255,243,0,152,0,15,255,243,0,152,0,16,255,234,0,152,0,34,255,240,0,152,0,46,255,248,0,152,0,59,255,251,0,152,0,66,255,242,0,152,0,67,255,245,0,152,0,68,255,243,0,152,0,69,255,243,0,152,0,70,255,243,0,152,0,71,255,250,0,152,0,72,255,242,0,152,0,73,255,245,0,152,0,74,255,243,0,152,0,75,255,243,0,152,0,76,255,245,0,152,0,77,255,244,0,152,0,78,255,240,0,152,0,79,255,240,0,152,0,80,255,243,0,152,0,81,255,240,0,152,0,82,255,243,0,152,0,83,255,240,0,152,0,84,255,243,0,152,0,85,255,249,0,152,0,86,255,242,0,152,0,87,255,250,0,152,0,88,255,250,0,152,0,89,255,250,0,152,0,90,255,250,0,152,0,91,255,244,0,152,0,127,255,240,0,152,0,128,255,240,0,152,0,129,255,240,0,152,0,130,255,240,0,152,0,131,255,240,0,152,0,132,255,240,0,152,0,133,255,240,0,152,0,158,255,248,0,152,0,159,255,242,0,152,0,160,255,242,0,152,0,161,255,242,0,152,0,162,255,242,0,152,0,163,255,242,0,152,0,164,255,242,0,152,0,165,255,242,0,152,0,166,255,243,0,152,0,167,255,243,0,152,0,168,255,243,0,152,0,169,255,243,0,152,0,170,255,243,0,152,0,171,255,243,0,152,0,172,255,243,0,152,0,173,255,251,0,152,0,174,255,243,0,152,0,175,255,242,0,152,0,176,255,240,0,152,0,177,255,243,0,152,0,178,255,243,0,152,0,179,255,243,0,152,0,180,255,243,0,152,0,181,255,243,0,152,0,183,255,243,0,152,0,184,255,242,0,152,0,185,255,242,0,152,0,186,255,242,0,152,0,187,255,242,0,152,0,188,255,250,0,152,0,189,255,240,0,152,0,190,255,250,0,152,0,193,255,243,0,152,0,195,255,243,0,152,0,197,255,243,0,152,0,199,255,251,0,152,0,200,255,244,0,152,0,211,255,243,0,152,0,214,255,243,0,152,0,218,255,243,0,153,0,10,255,245,0,153,0,13,255,243,0,153,0,15,255,243,0,153,0,16,255,234,0,153,0,34,255,240,0,153,0,46,255,248,0,153,0,59,255,251,0,153,0,66,255,242,0,153,0,67,255,245,0,153,0,68,255,243,0,153,0,69,255,243,0,153,0,70,255,243,0,153,0,71,255,250,0,153,0,72,255,242,0,153,0,73,255,245,0,153,0,74,255,243,0,153,0,75,255,243,0,153,0,76,255,245,0,153,0,77,255,244,0,153,0,78,255,240,0,153,0,79,255,240,0,153,0,80,255,243,0,153,0,81,255,240,0,153,0,82,255,243,0,153,0,83,255,240,0,153,0,84,255,243,0,153,0,85,255,249,0,153,0,86,255,242,0,153,0,87,255,250,0,153,0,88,255,250,0,153,0,89,255,250,0,153,0,90,255,250,0,153,0,91,255,244,0,153,0,127,255,240,0,153,0,128,255,240,0,153,0,129,255,240,0,153,0,130,255,240,0,153,0,131,255,240,0,153,0,132,255,240,0,153,0,133,255,240,0,153,0,158,255,248,0,153,0,159,255,242,0,153,0,160,255,242,0,153,0,161,255,242,0,153,0,162,255,242,0,153,0,163,255,242,0,153,0,164,255,242,0,153,0,165,255,242,0,153,0,166,255,243,0,153,0,167,255,243,0,153,0,168,255,243,0,153,0,169,255,243,0,153,0,170,255,243,0,153,0,171,255,243,0,153,0,172,255,243,0,153,0,173,255,251,0,153,0,174,255,243,0,153,0,175,255,242,0,153,0,176,255,240,0,153,0,177,255,243,0,153,0,178,255,243,0,153,0,179,255,243,0,153,0,180,255,243,0,153,0,181,255,243,0,153,0,183,255,243,0,153,0,184,255,242,0,153,0,185,255,242,0,153,0,186,255,242,0,153,0,187,255,242,0,153,0,188,255,250,0,153,0,189,255,240,0,153,0,190,255,250,0,153,0,193,255,243,0,153,0,195,255,243,0,153,0,197,255,243,0,153,0,199,255,251,0,153,0,200,255,244,0,153,0,211,255,243,0,153,0,214,255,243,0,153,0,218,255,243,0,154,0,10,255,245,0,154,0,13,255,243,0,154,0,15,255,243,0,154,0,16,255,234,0,154,0,34,255,240,0,154,0,46,255,248,0,154,0,59,255,251,0,154,0,66,255,242,0,154,0,67,255,245,0,154,0,68,255,243,0,154,0,69,255,243,0,154,0,70,255,243,0,154,0,71,255,250,0,154,0,72,255,242,0,154,0,73,255,245,0,154,0,74,255,243,0,154,0,75,255,243,0,154,0,76,255,245,0,154,0,77,255,244,0,154,0,78,255,240,0,154,0,79,255,240,0,154,0,80,255,243,0,154,0,81,255,240,0,154,0,82,255,243,0,154,0,83,255,240,0,154,0,84,255,243,0,154,0,85,255,249,0,154,0,86,255,242,0,154,0,87,255,250,0,154,0,88,255,250,0,154,0,89,255,250,0,154,0,90,255,250,0,154,0,91,255,244,0,154,0,127,255,240,0,154,0,128,255,240,0,154,0,129,255,240,0,154,0,130,255,240,0,154,0,131,255,240,0,154,0,132,255,240,0,154,0,133,255,240,0,154,0,158,255,248,0,154,0,159,255,242,0,154,0,160,255,242,0,154,0,161,255,242,0,154,0,162,255,242,0,154,0,163,255,242,0,154,0,164,255,242,0,154,0,165,255,242,0,154,0,166,255,243,0,154,0,167,255,243,0,154,0,168,255,243,0,154,0,169,255,243,0,154,0,170,255,243,0,154,0,171,255,243,0,154,0,172,255,243,0,154,0,173,255,251,0,154,0,174,255,243,0,154,0,175,255,242,0,154,0,176,255,240,0,154,0,177,255,243,0,154,0,178,255,243,0,154,0,179,255,243,0,154,0,180,255,243,0,154,0,181,255,243,0,154,0,183,255,243,0,154,0,184,255,242,0,154,0,185,255,242,0,154,0,186,255,242,0,154,0,187,255,242,0,154,0,188,255,250,0,154,0,189,255,240,0,154,0,190,255,250,0,154,0,193,255,243,0,154,0,195,255,243,0,154,0,197,255,243,0,154,0,199,255,251,0,154,0,200,255,244,0,154,0,211,255,243,0,154,0,214,255,243,0,154,0,218,255,243,0,155,0,10,255,245,0,155,0,13,255,243,0,155,0,15,255,243,0,155,0,16,255,234,0,155,0,34,255,240,0,155,0,46,255,248,0,155,0,59,255,251,0,155,0,66,255,242,0,155,0,67,255,245,0,155,0,68,255,243,0,155,0,69,255,243,0,155,0,70,255,243,0,155,0,71,255,250,0,155,0,72,255,242,0,155,0,73,255,245,0,155,0,74,255,243,0,155,0,75,255,243,0,155,0,76,255,245,0,155,0,77,255,244,0,155,0,78,255,240,0,155,0,79,255,240,0,155,0,80,255,243,0,155,0,81,255,240,0,155,0,82,255,243,0,155,0,83,255,240,0,155,0,84,255,243,0,155,0,85,255,249,0,155,0,86,255,242,0,155,0,87,255,250,0,155,0,88,255,250,0,155,0,89,255,250,0,155,0,90,255,250,0,155,0,91,255,244,0,155,0,127,255,240,0,155,0,128,255,240,0,155,0,129,255,240,0,155,0,130,255,240,0,155,0,131,255,240,0,155,0,132,255,240,0,155,0,133,255,240,0,155,0,158,255,248,0,155,0,159,255,242,0,155,0,160,255,242,0,155,0,161,255,242,0,155,0,162,255,242,0,155,0,163,255,242,0,155,0,164,255,242,0,155,0,165,255,242,0,155,0,166,255,243,0,155,0,167,255,243,0,155,0,168,255,243,0,155,0,169,255,243,0,155,0,170,255,243,0,155,0,171,255,243,0,155,0,172,255,243,0,155,0,173,255,251,0,155,0,174,255,243,0,155,0,175,255,242,0,155,0,176,255,240,0,155,0,177,255,243,0,155,0,178,255,243,0,155,0,179,255,243,0,155,0,180,255,243,0,155,0,181,255,243,0,155,0,183,255,243,0,155,0,184,255,242,0,155,0,185,255,242,0,155,0,186,255,242,0,155,0,187,255,242,0,155,0,188,255,250,0,155,0,189,255,240,0,155,0,190,255,250,0,155,0,193,255,243,0,155,0,195,255,243,0,155,0,197,255,243,0,155,0,199,255,251,0,155,0,200,255,244,0,155,0,211,255,243,0,155,0,214,255,243,0,155,0,218,255,243,0,156,0,7,255,237,0,156,0,11,0,13,0,156,0,13,255,215,0,156,0,14,255,222,0,156,0,15,255,215,0,156,0,16,255,201,0,156,0,17,255,233,0,156,0,21,255,206,0,156,0,23,255,218,0,156,0,25,255,246,0,156,0,27,255,235,0,156,0,28,255,235,0,156,0,32,0,13,0,156,0,33,255,198,0,156,0,34,255,192,0,156,0,36,255,230,0,156,0,40,255,230,0,156,0,46,255,232,0,156,0,48,255,230,0,156,0,50,255,230,0,156,0,61,0,7,0,156,0,62,0,31,0,156,0,66,255,189,0,156,0,68,255,171,0,156,0,69,255,171,0,156,0,70,255,171,0,156,0,71,255,237,0,156,0,72,255,180,0,156,0,78,255,187,0,156,0,79,255,187,0,156,0,80,255,171,0,156,0,81,255,187,0,156,0,82,255,171,0,156,0,83,255,187,0,156,0,84,255,186,0,156,0,85,255,221,0,156,0,86,255,190,0,156,0,87,255,215,0,156,0,88,255,216,0,156,0,89,255,214,0,156,0,90,255,217,0,156,0,91,255,229,0,156,0,94,0,33,0,156,0,107,255,198,0,156,0,110,255,230,0,156,0,122,255,225,0,156,0,127,255,192,0,156,0,128,255,192,0,156,0,129,255,192,0,156,0,130,255,192,0,156,0,131,255,192,0,156,0,132,255,192,0,156,0,133,255,180,0,156,0,134,255,230,0,156,0,145,255,230,0,156,0,146,255,230,0,156,0,147,255,230,0,156,0,148,255,230,0,156,0,149,255,230,0,156,0,151,255,230,0,156,0,158,255,230,0,156,0,159,255,189,0,156,0,160,255,189,0,156,0,161,255,189,0,156,0,162,255,189,0,156,0,163,255,189,0,156,0,164,255,189,0,156,0,165,255,189,0,156,0,166,255,171,0,156,0,167,255,171,0,156,0,168,255,171,0,156,0,169,255,171,0,156,0,170,255,171,0,156,0,171,0,16,0,156,0,173,0,38,0,156,0,174,0,47,0,156,0,175,255,216,0,156,0,176,255,187,0,156,0,177,255,171,0,156,0,178,255,171,0,156,0,179,255,171,0,156,0,180,255,171,0,156,0,181,255,171,0,156,0,183,255,171,0,156,0,184,255,190,0,156,0,185,255,190,0,156,0,186,255,190,0,156,0,187,255,190,0,156,0,188,255,217,0,156,0,189,255,225,0,156,0,190,255,217,0,156,0,194,255,230,0,156,0,195,255,171,0,156,0,197,255,234,0,156,0,200,255,229,0,156,0,207,255,222,0,156,0,208,255,222,0,156,0,211,255,215,0,156,0,214,255,215,0,156,0,218,255,215,0,156,0,220,255,198,0,156,0,221,255,225,0,156,0,240,0,33,0,157,0,10,255,228,0,157,0,13,255,177,0,157,0,15,255,177,0,157,0,16,255,221,0,157,0,32,255,223,0,157,0,34,255,235,0,157,0,46,255,251,0,157,0,53,255,202,0,157,0,55,255,248,0,157,0,57,255,205,0,157,0,58,255,228,0,157,0,59,255,203,0,157,0,61,255,247,0,157,0,62,255,214,0,157,0,66,255,247,0,157,0,89,255,250,0,157,0,94,255,226,0,157,0,127,255,235,0,157,0,128,255,235,0,157,0,129,255,235,0,157,0,130,255,235,0,157,0,131,255,235,0,157,0,132,255,235,0,157,0,133,255,201,0,157,0,156,255,228,0,157,0,159,255,247,0,157,0,160,255,247,0,157,0,161,255,247,0,157,0,162,255,247,0,157,0,163,255,247,0,157,0,164,255,247,0,157,0,165,255,247,0,157,0,198,255,228,0,157,0,199,255,203,0,157,0,211,255,177,0,157,0,214,255,177,0,157,0,218,255,177,0,158,0,3,255,243,0,158,0,8,255,243,0,158,0,10,255,239,0,158,0,11,255,241,0,158,0,71,255,250,0,158,0,85,255,247,0,158,0,87,255,245,0,158,0,88,255,248,0,158,0,89,255,251,0,158,0,90,255,245,0,158,0,188,255,245,0,158,0,190,255,245,0,158,0,209,255,245,0,158,0,210,255,243,0,158,0,212,255,245,0,158,0,213,255,243,0,158,0,240,255,242,0,159,0,3,255,234,0,159,0,7,255,245,0,159,0,8,255,234,0,159,0,10,255,246,0,159,0,11,255,231,0,159,0,18,255,234,0,159,0,26,255,247,0,159,0,32,255,229,0,159,0,35,255,240,0,159,0,36,255,237,0,159,0,37,255,240,0,159,0,38,255,240,0,159,0,39,255,240,0,159,0,40,255,237,0,159,0,41,255,240,0,159,0,42,255,240,0,159,0,43,255,240,0,159,0,44,255,240,0,159,0,45,255,240,0,159,0,46,255,248,0,159,0,47,255,240,0,159,0,48,255,237,0,159,0,49,255,240,0,159,0,50,255,237,0,159,0,51,255,240,0,159,0,52,255,250,0,159,0,53,255,173,0,159,0,54,255,227,0,159,0,55,255,193,0,159,0,56,255,210,0,159,0,58,255,165,0,159,0,61,255,210,0,159,0,62,255,227,0,159,0,71,255,251,0,159,0,85,255,246,0,159,0,87,255,238,0,159,0,88,255,243,0,159,0,90,255,236,0,159,0,94,255,231,0,159,0,110,255,248,0,159,0,134,255,237,0,159,0,135,255,240,0,159,0,136,255,240,0,159,0,137,255,240,0,159,0,138,255,240,0,159,0,139,255,240,0,159,0,140,255,240,0,159,0,141,255,240,0,159,0,142,255,240,0,159,0,143,255,240,0,159,0,144,255,240,0,159,0,145,255,237,0,159,0,146,255,237,0,159,0,147,255,237,0,159,0,148,255,237,0,159,0,149,255,237,0,159,0,151,255,237,0,159,0,152,255,227,0,159,0,153,255,227,0,159,0,154,255,227,0,159,0,155,255,227,0,159,0,156,255,165,0,159,0,157,255,240,0,159,0,158,255,249,0,159,0,188,255,236,0,159,0,190,255,236,0,159,0,194,255,237,0,159,0,196,255,250,0,159,0,198,255,165,0,159,0,209,255,186,0,159,0,210,255,183,0,159,0,212,255,186,0,159,0,213,255,183,0,159,0,240,255,230,0,160,0,3,255,234,0,160,0,7,255,245,0,160,0,8,255,234,0,160,0,10,255,246,0,160,0,11,255,231,0,160,0,18,255,234,0,160,0,26,255,247,0,160,0,32,255,229,0,160,0,35,255,240,0,160,0,36,255,237,0,160,0,37,255,240,0,160,0,38,255,240,0,160,0,39,255,240,0,160,0,40,255,237,0,160,0,41,255,240,0,160,0,42,255,240,0,160,0,43,255,240,0,160,0,44,255,240,0,160,0,45,255,240,0,160,0,46,255,248,0,160,0,47,255,240,0,160,0,48,255,237,0,160,0,49,255,240,0,160,0,50,255,237,0,160,0,51,255,240,0,160,0,52,255,250,0,160,0,53,255,173,0,160,0,54,255,227,0,160,0,55,255,193,0,160,0,56,255,210,0,160,0,58,255,165,0,160,0,61,255,210,0,160,0,62,255,227,0,160,0,71,255,251,0,160,0,85,255,246,0,160,0,87,255,238,0,160,0,88,255,243,0,160,0,90,255,236,0,160,0,94,255,231,0,160,0,110,255,248,0,160,0,134,255,237,0,160,0,135,255,240,0,160,0,136,255,240,0,160,0,137,255,240,0,160,0,138,255,240,0,160,0,139,255,240,0,160,0,140,255,240,0,160,0,141,255,240,0,160,0,142,255,240,0,160,0,143,255,240,0,160,0,144,255,240,0,160,0,145,255,237,0,160,0,146,255,237,0,160,0,147,255,237,0,160,0,148,255,237,0,160,0,149,255,237,0,160,0,151,255,237,0,160,0,152,255,227,0,160,0,153,255,227,0,160,0,154,255,227,0,160,0,155,255,227,0,160,0,156,255,165,0,160,0,157,255,240,0,160,0,158,255,249,0,160,0,188,255,236,0,160,0,190,255,236,0,160,0,194,255,237,0,160,0,196,255,250,0,160,0,198,255,165,0,160,0,209,255,186,0,160,0,210,255,183,0,160,0,212,255,186,0,160,0,213,255,183,0,160,0,240,255,230,0,161,0,3,255,234,0,161,0,7,255,245,0,161,0,8,255,234,0,161,0,10,255,246,0,161,0,11,255,231,0,161,0,18,255,234,0,161,0,26,255,247,0,161,0,32,255,229,0,161,0,35,255,240,0,161,0,36,255,237,0,161,0,37,255,240,0,161,0,38,255,240,0,161,0,39,255,240,0,161,0,40,255,237,0,161,0,41,255,240,0,161,0,42,255,240,0,161,0,43,255,240,0,161,0,44,255,240,0,161,0,45,255,240,0,161,0,46,255,248,0,161,0,47,255,240,0,161,0,48,255,237,0,161,0,49,255,240,0,161,0,50,255,237,0,161,0,51,255,240,0,161,0,52,255,250,0,161,0,53,255,173,0,161,0,54,255,227,0,161,0,55,255,193,0,161,0,56,255,210,0,161,0,58,255,165,0,161,0,61,255,210,0,161,0,62,255,246,0,161,0,71,255,251,0,161,0,85,255,246,0,161,0,87,255,238,0,161,0,88,255,243,0,161,0,90,255,236,0,161,0,94,255,248,0,161,0,110,255,248,0,161,0,134,255,237,0,161,0,135,255,240,0,161,0,136,255,240,0,161,0,137,255,240,0,161,0,138,255,240,0,161,0,139,255,240,0,161,0,140,255,240,0,161,0,141,255,240,0,161,0,142,255,240,0,161,0,143,255,240,0,161,0,144,255,240,0,161,0,145,255,237,0,161,0,146,255,237,0,161,0,147,255,237,0,161,0,148,255,237,0,161,0,149,255,237,0,161,0,151,255,237,0,161,0,152,255,227,0,161,0,153,255,227,0,161,0,154,255,227,0,161,0,155,255,227,0,161,0,156,255,165,0,161,0,157,255,240,0,161,0,158,255,249,0,161,0,188,255,236,0,161,0,190,255,236,0,161,0,194,255,237,0,161,0,196,255,250,0,161,0,198,255,165,0,161,0,209,255,186,0,161,0,210,255,183,0,161,0,212,255,186,0,161,0,213,255,183,0,161,0,240,255,230,0,162,0,3,255,234,0,162,0,7,255,245,0,162,0,8,255,234,0,162,0,10,255,246,0,162,0,11,255,231,0,162,0,18,255,234,0,162,0,26,255,247,0,162,0,32,255,229,0,162,0,35,255,240,0,162,0,36,255,237,0,162,0,37,255,240,0,162,0,38,255,240,0,162,0,39,255,240,0,162,0,40,255,237,0,162,0,41,255,240,0,162,0,42,255,240,0,162,0,43,255,240,0,162,0,44,255,240,0,162,0,45,255,240,0,162,0,46,255,248,0,162,0,47,255,240,0,162,0,48,255,237,0,162,0,49,255,240,0,162,0,50,255,237,0,162,0,51,255,240,0,162,0,52,255,250,0,162,0,53,255,173,0,162,0,54,255,227,0,162,0,55,255,193,0,162,0,56,255,210,0,162,0,58,255,165,0,162,0,61,255,220,0,162,0,62,255,227,0,162,0,71,255,251,0,162,0,85,255,246,0,162,0,87,255,238,0,162,0,88,255,243,0,162,0,90,255,236,0,162,0,94,255,248,0,162,0,110,255,248,0,162,0,134,255,237,0,162,0,135,255,240,0,162,0,136,255,240,0,162,0,137,255,240,0,162,0,138,255,240,0,162,0,139,255,240,0,162,0,140,255,240,0,162,0,141,255,240,0,162,0,142,255,240,0,162,0,143,255,240,0,162,0,144,255,240,0,162,0,145,255,237,0,162,0,146,255,237,0,162,0,147,255,237,0,162,0,148,255,237,0,162,0,149,255,237,0,162,0,151,255,237,0,162,0,152,255,227,0,162,0,153,255,227,0,162,0,154,255,227,0,162,0,155,255,227,0,162,0,156,255,165,0,162,0,157,255,240,0,162,0,158,255,249,0,162,0,188,255,236,0,162,0,190,255,236,0,162,0,194,255,237,0,162,0,196,255,250,0,162,0,198,255,165,0,162,0,209,255,186,0,162,0,210,255,195,0,162,0,212,255,186,0,162,0,213,255,195,0,162,0,240,255,230,0,163,0,3,255,234,0,163,0,7,255,245,0,163,0,8,255,234,0,163,0,10,255,246,0,163,0,11,255,231,0,163,0,18,255,234,0,163,0,26,255,247,0,163,0,32,255,229,0,163,0,35,255,240,0,163,0,36,255,237,0,163,0,37,255,240,0,163,0,38,255,240,0,163,0,39,255,240,0,163,0,40,255,237,0,163,0,41,255,240,0,163,0,42,255,240,0,163,0,43,255,240,0,163,0,44,255,240,0,163,0,45,255,240,0,163,0,46,255,248,0,163,0,47,255,240,0,163,0,48,255,237,0,163,0,49,255,240,0,163,0,50,255,237,0,163,0,51,255,240,0,163,0,52,255,250,0,163,0,53,255,173,0,163,0,54,255,227,0,163,0,55,255,193,0,163,0,56,255,210,0,163,0,58,255,165,0,163,0,61,255,210,0,163,0,62,255,245,0,163,0,71,255,251,0,163,0,85,255,246,0,163,0,87,255,238,0,163,0,88,255,243,0,163,0,90,255,236,0,163,0,94,255,248,0,163,0,110,255,248,0,163,0,134,255,237,0,163,0,135,255,240,0,163,0,136,255,240,0,163,0,137,255,240,0,163,0,138,255,240,0,163,0,139,255,240,0,163,0,140,255,240,0,163,0,141,255,240,0,163,0,142,255,240,0,163,0,143,255,240,0,163,0,144,255,240,0,163,0,145,255,237,0,163,0,146,255,237,0,163,0,147,255,237,0,163,0,148,255,237,0,163,0,149,255,237,0,163,0,151,255,237,0,163,0,152,255,227,0,163,0,153,255,227,0,163,0,154,255,227,0,163,0,155,255,227,0,163,0,156,255,165,0,163,0,157,255,240,0,163,0,158,255,249,0,163,0,188,255,236,0,163,0,190,255,236,0,163,0,194,255,237,0,163,0,196,255,250,0,163,0,198,255,165,0,163,0,209,255,186,0,163,0,210,255,183,0,163,0,212,255,186,0,163,0,213,255,183,0,163,0,240,255,230,0,164,0,3,255,234,0,164,0,7,255,245,0,164,0,8,255,234,0,164,0,10,255,246,0,164,0,11,255,231,0,164,0,18,255,234,0,164,0,26,255,247,0,164,0,32,255,229,0,164,0,35,255,240,0,164,0,36,255,237,0,164,0,37,255,240,0,164,0,38,255,240,0,164,0,39,255,240,0,164,0,40,255,237,0,164,0,41,255,240,0,164,0,42,255,240,0,164,0,43,255,240,0,164,0,44,255,240,0,164,0,45,255,240,0,164,0,46,255,248,0,164,0,47,255,240,0,164,0,48,255,237,0,164,0,49,255,240,0,164,0,50,255,237,0,164,0,51,255,240,0,164,0,52,255,250,0,164,0,53,255,173,0,164,0,54,255,227,0,164,0,55,255,193,0,164,0,56,255,210,0,164,0,58,255,165,0,164,0,61,255,210,0,164,0,62,255,227,0,164,0,71,255,251,0,164,0,85,255,246,0,164,0,87,255,238,0,164,0,88,255,243,0,164,0,90,255,236,0,164,0,94,255,231,0,164,0,110,255,248,0,164,0,134,255,237,0,164,0,135,255,240,0,164,0,136,255,240,0,164,0,137,255,240,0,164,0,138,255,240,0,164,0,139,255,240,0,164,0,140,255,240,0,164,0,141,255,240,0,164,0,142,255,240,0,164,0,143,255,240,0,164,0,144,255,240,0,164,0,145,255,237,0,164,0,146,255,237,0,164,0,147,255,237,0,164,0,148,255,237,0,164,0,149,255,237,0,164,0,151,255,237,0,164,0,152,255,227,0,164,0,153,255,227,0,164,0,154,255,227,0,164,0,155,255,227,0,164,0,156,255,165,0,164,0,157,255,240,0,164,0,158,255,249,0,164,0,188,255,236,0,164,0,190,255,236,0,164,0,194,255,237,0,164,0,196,255,250,0,164,0,198,255,165,0,164,0,209,255,186,0,164,0,210,255,183,0,164,0,212,255,186,0,164,0,213,255,183,0,164,0,240,255,230,0,165,0,3,255,241,0,165,0,7,255,246,0,165,0,8,255,241,0,165,0,10,255,230,0,165,0,11,255,238,0,165,0,18,255,235,0,165,0,19,255,245,0,165,0,24,255,230,0,165,0,32,255,223,0,165,0,34,255,251,0,165,0,35,255,241,0,165,0,36,255,250,0,165,0,37,255,241,0,165,0,38,255,241,0,165,0,39,255,241,0,165,0,40,255,250,0,165,0,41,255,241,0,165,0,42,255,241,0,165,0,43,255,241,0,165,0,44,255,241,0,165,0,45,255,241,0,165,0,46,255,243,0,165,0,47,255,241,0,165,0,48,255,250,0,165,0,49,255,241,0,165,0,50,255,250,0,165,0,51,255,241,0,165,0,52,255,241,0,165,0,53,255,187,0,165,0,54,255,240,0,165,0,55,255,209,0,165,0,56,255,213,0,165,0,57,255,243,0,165,0,58,255,174,0,165,0,59,255,243,0,165,0,61,255,220,0,165,0,62,255,220,0,165,0,87,255,252,0,165,0,89,255,251,0,165,0,90,255,251,0,165,0,94,255,227,0,165,0,127,255,251,0,165,0,128,255,251,0,165,0,129,255,251,0,165,0,130,255,251,0,165,0,131,255,251,0,165,0,132,255,251,0,165,0,134,255,250,0,165,0,135,255,241,0,165,0,136,255,241,0,165,0,137,255,241,0,165,0,138,255,241,0,165,0,139,255,241,0,165,0,140,255,241,0,165,0,141,255,241,0,165,0,142,255,241,0,165,0,143,255,241,0,165,0,144,255,241,0,165,0,145,255,250,0,165,0,146,255,250,0,165,0,147,255,250,0,165,0,148,255,250,0,165,0,149,255,250,0,165,0,151,255,250,0,165,0,152,255,240,0,165,0,153,255,240,0,165,0,154,255,240,0,165,0,155,255,240,0,165,0,156,255,174,0,165,0,157,255,241,0,165,0,188,255,251,0,165,0,190,255,251,0,165,0,194,255,250,0,165,0,196,255,241,0,165,0,198,255,174,0,165,0,199,255,243,0,165,0,209,255,189,0,165,0,210,255,186,0,165,0,212,255,189,0,165,0,213,255,186,0,165,0,240,255,237,0,166,0,7,255,240,0,166,0,10,255,244,0,166,0,14,255,219,0,166,0,21,255,231,0,166,0,24,255,245,0,166,0,32,255,228,0,166,0,35,255,247,0,166,0,36,255,244,0,166,0,37,255,247,0,166,0,38,255,247,0,166,0,39,255,247,0,166,0,40,255,244,0,166,0,41,255,247,0,166,0,42,255,247,0,166,0,43,255,247,0,166,0,44,255,247,0,166,0,45,255,247,0,166,0,46,255,251,0,166,0,47,255,247,0,166,0,48,255,244,0,166,0,49,255,247,0,166,0,50,255,244,0,166,0,51,255,247,0,166,0,52,255,244,0,166,0,53,255,190,0,166,0,54,255,243,0,166,0,55,255,236,0,166,0,56,255,241,0,166,0,58,255,218,0,166,0,61,255,240,0,166,0,62,255,232,0,166,0,68,255,249,0,166,0,69,255,249,0,166,0,70,255,249,0,166,0,80,255,249,0,166,0,82,255,249,0,166,0,94,255,239,0,166,0,107,255,243,0,166,0,134,255,244,0,166,0,135,255,247,0,166,0,136,255,247,0,166,0,137,255,247,0,166,0,138,255,247,0,166,0,139,255,247,0,166,0,140,255,247,0,166,0,141,255,247,0,166,0,142,255,247,0,166,0,143,255,247,0,166,0,144,255,247,0,166,0,145,255,244,0,166,0,146,255,244,0,166,0,147,255,244,0,166,0,148,255,244,0,166,0,149,255,244,0,166,0,151,255,244,0,166,0,152,255,243,0,166,0,153,255,243,0,166,0,154,255,243,0,166,0,155,255,243,0,166,0,156,255,218,0,166,0,157,255,247,0,166,0,166,255,249,0,166,0,167,255,249,0,166,0,168,255,249,0,166,0,169,255,249,0,166,0,170,255,249,0,166,0,175,255,251,0,166,0,177,255,249,0,166,0,178,255,249,0,166,0,179,255,249,0,166,0,180,255,249,0,166,0,181,255,249,0,166,0,183,255,249,0,166,0,194,255,244,0,166,0,195,255,249,0,166,0,196,255,244,0,166,0,198,255,218,0,166,0,207,255,219,0,166,0,208,255,219,0,166,0,209,255,216,0,166,0,210,255,213,0,166,0,212,255,216,0,166,0,213,255,213,0,166,0,220,255,243,0,166,0,240,255,245,0,167,0,3,255,241,0,167,0,7,255,246,0,167,0,8,255,241,0,167,0,10,255,230,0,167,0,11,255,238,0,167,0,18,255,235,0,167,0,19,255,245,0,167,0,24,255,230,0,167,0,32,255,223,0,167,0,34,255,251,0,167,0,35,255,241,0,167,0,36,255,250,0,167,0,37,255,241,0,167,0,38,255,241,0,167,0,39,255,241,0,167,0,40,255,250,0,167,0,41,255,241,0,167,0,42,255,241,0,167,0,43,255,241,0,167,0,44,255,241,0,167,0,45,255,241,0,167,0,46,255,243,0,167,0,47,255,241,0,167,0,48,255,250,0,167,0,49,255,241,0,167,0,50,255,250,0,167,0,51,255,241,0,167,0,52,255,241,0,167,0,53,255,187,0,167,0,54,255,240,0,167,0,55,255,209,0,167,0,56,255,213,0,167,0,57,255,243,0,167,0,58,255,174,0,167,0,59,255,243,0,167,0,61,255,220,0,167,0,62,255,220,0,167,0,87,255,252,0,167,0,89,255,251,0,167,0,90,255,251,0,167,0,94,255,227,0,167,0,127,255,251,0,167,0,128,255,251,0,167,0,129,255,251,0,167,0,130,255,251,0,167,0,131,255,251,0,167,0,132,255,251,0,167,0,134,255,250,0,167,0,135,255,241,0,167,0,136,255,241,0,167,0,137,255,241,0,167,0,138,255,241,0,167,0,139,255,241,0,167,0,140,255,241,0,167,0,141,255,241,0,167,0,142,255,241,0,167,0,143,255,241,0,167,0,144,255,241,0,167,0,145,255,250,0,167,0,146,255,250,0,167,0,147,255,250,0,167,0,148,255,250,0,167,0,149,255,250,0,167,0,151,255,250,0,167,0,152,255,240,0,167,0,153,255,240,0,167,0,154,255,240,0,167,0,155,255,240,0,167,0,156,255,174,0,167,0,157,255,241,0,167,0,188,255,251,0,167,0,190,255,251,0,167,0,194,255,250,0,167,0,196,255,241,0,167,0,198,255,174,0,167,0,199,255,243,0,167,0,209,255,189,0,167,0,210,255,186,0,167,0,212,255,189,0,167,0,213,255,186,0,167,0,240,255,237,0,168,0,3,255,241,0,168,0,7,255,246,0,168,0,8,255,241,0,168,0,10,255,230,0,168,0,11,255,238,0,168,0,18,255,235,0,168,0,19,255,245,0,168,0,24,255,230,0,168,0,32,255,223,0,168,0,34,255,251,0,168,0,35,255,241,0,168,0,36,255,250,0,168,0,37,255,241,0,168,0,38,255,241,0,168,0,39,255,241,0,168,0,40,255,250,0,168,0,41,255,241,0,168,0,42,255,241,0,168,0,43,255,241,0,168,0,44,255,241,0,168,0,45,255,241,0,168,0,46,255,243,0,168,0,47,255,241,0,168,0,48,255,250,0,168,0,49,255,241,0,168,0,50,255,250,0,168,0,51,255,241,0,168,0,52,255,241,0,168,0,53,255,187,0,168,0,54,255,240,0,168,0,55,255,209,0,168,0,56,255,213,0,168,0,57,255,243,0,168,0,58,255,174,0,168,0,59,255,243,0,168,0,61,255,220,0,168,0,62,255,220,0,168,0,87,255,252,0,168,0,89,255,251,0,168,0,90,255,251,0,168,0,94,255,227,0,168,0,127,255,251,0,168,0,128,255,251,0,168,0,129,255,251,0,168,0,130,255,251,0,168,0,131,255,251,0,168,0,132,255,251,0,168,0,134,255,250,0,168,0,135,255,241,0,168,0,136,255,241,0,168,0,137,255,241,0,168,0,138,255,241,0,168,0,139,255,241,0,168,0,140,255,241,0,168,0,141,255,241,0,168,0,142,255,241,0,168,0,143,255,241,0,168,0,144,255,241,0,168,0,145,255,250,0,168,0,146,255,250,0,168,0,147,255,250,0,168,0,148,255,250,0,168,0,149,255,250,0,168,0,151,255,250,0,168,0,152,255,240,0,168,0,153,255,240,0,168,0,154,255,240,0,168,0,155,255,240,0,168,0,156,255,174,0,168,0,157,255,241,0,168,0,188,255,251,0,168,0,190,255,251,0,168,0,194,255,250,0,168,0,196,255,241,0,168,0,198,255,174,0,168,0,199,255,243,0,168,0,209,255,189,0,168,0,210,255,186,0,168,0,212,255,189,0,168,0,213,255,186,0,168,0,240,255,237,0,169,0,3,255,241,0,169,0,7,255,246,0,169,0,8,255,241,0,169,0,10,255,230,0,169,0,11,255,238,0,169,0,18,255,235,0,169,0,19,255,245,0,169,0,24,255,230,0,169,0,32,255,223,0,169,0,34,255,251,0,169,0,35,255,241,0,169,0,36,255,250,0,169,0,37,255,241,0,169,0,38,255,241,0,169,0,39,255,241,0,169,0,40,255,250,0,169,0,41,255,241,0,169,0,42,255,241,0,169,0,43,255,241,0,169,0,44,255,241,0,169,0,45,255,241,0,169,0,46,255,243,0,169,0,47,255,241,0,169,0,48,255,250,0,169,0,49,255,241,0,169,0,50,255,250,0,169,0,51,255,241,0,169,0,52,255,241,0,169,0,53,255,187,0,169,0,54,255,240,0,169,0,55,255,209,0,169,0,56,255,213,0,169,0,57,255,243,0,169,0,58,255,174,0,169,0,59,255,243,0,169,0,61,255,220,0,169,0,62,255,220,0,169,0,87,255,252,0,169,0,89,255,251,0,169,0,90,255,251,0,169,0,94,255,227,0,169,0,127,255,251,0,169,0,128,255,251,0,169,0,129,255,251,0,169,0,130,255,251,0,169,0,131,255,251,0,169,0,132,255,251,0,169,0,134,255,250,0,169,0,135,255,241,0,169,0,136,255,241,0,169,0,137,255,241,0,169,0,138,255,241,0,169,0,139,255,241,0,169,0,140,255,241,0,169,0,141,255,241,0,169,0,142,255,241,0,169,0,143,255,241,0,169,0,144,255,241,0,169,0,145,255,250,0,169,0,146,255,250,0,169,0,147,255,250,0,169,0,148,255,250,0,169,0,149,255,250,0,169,0,151,255,250,0,169,0,152,255,240,0,169,0,153,255,240,0,169,0,154,255,240,0,169,0,155,255,240,0,169,0,156,255,174,0,169,0,157,255,241,0,169,0,188,255,251,0,169,0,190,255,251,0,169,0,194,255,250,0,169,0,196,255,241,0,169,0,198,255,174,0,169,0,199,255,243,0,169,0,209,255,189,0,169,0,210,255,186,0,169,0,212,255,189,0,169,0,213,255,186,0,169,0,240,255,237,0,170,0,3,255,241,0,170,0,7,255,246,0,170,0,8,255,241,0,170,0,10,255,230,0,170,0,11,255,238,0,170,0,18,255,235,0,170,0,19,255,245,0,170,0,24,255,230,0,170,0,32,255,223,0,170,0,34,255,251,0,170,0,35,255,241,0,170,0,36,255,250,0,170,0,37,255,241,0,170,0,38,255,241,0,170,0,39,255,241,0,170,0,40,255,250,0,170,0,41,255,241,0,170,0,42,255,241,0,170,0,43,255,241,0,170,0,44,255,241,0,170,0,45,255,241,0,170,0,46,255,243,0,170,0,47,255,241,0,170,0,48,255,250,0,170,0,49,255,241,0,170,0,50,255,250,0,170,0,51,255,241,0,170,0,52,255,241,0,170,0,53,255,187,0,170,0,54,255,240,0,170,0,55,255,209,0,170,0,56,255,213,0,170,0,57,255,243,0,170,0,58,255,174,0,170,0,59,255,243,0,170,0,61,255,220,0,170,0,62,255,220,0,170,0,87,255,252,0,170,0,89,255,251,0,170,0,90,255,251,0,170,0,94,255,227,0,170,0,127,255,251,0,170,0,128,255,251,0,170,0,129,255,251,0,170,0,130,255,251,0,170,0,131,255,251,0,170,0,132,255,251,0,170,0,134,255,250,0,170,0,135,255,241,0,170,0,136,255,241,0,170,0,137,255,241,0,170,0,138,255,241,0,170,0,139,255,241,0,170,0,140,255,241,0,170,0,141,255,241,0,170,0,142,255,241,0,170,0,143,255,241,0,170,0,144,255,241,0,170,0,145,255,250,0,170,0,146,255,250,0,170,0,147,255,250,0,170,0,148,255,250,0,170,0,149,255,250,0,170,0,151,255,250,0,170,0,152,255,240,0,170,0,153,255,240,0,170,0,154,255,240,0,170,0,155,255,240,0,170,0,156,255,174,0,170,0,157,255,241,0,170,0,188,255,251,0,170,0,190,255,251,0,170,0,194,255,250,0,170,0,196,255,241,0,170,0,198,255,174,0,170,0,199,255,243,0,170,0,209,255,189,0,170,0,210,255,186,0,170,0,212,255,189,0,170,0,213,255,186,0,170,0,240,255,237,0,171,0,7,255,244,0,171,0,11,0,30,0,171,0,34,255,248,0,171,0,35,255,242,0,171,0,36,255,244,0,171,0,37,255,242,0,171,0,38,255,242,0,171,0,39,255,242,0,171,0,40,255,244,0,171,0,41,255,242,0,171,0,42,255,242,0,171,0,43,255,242,0,171,0,44,255,242,0,171,0,45,255,242,0,171,0,46,255,241,0,171,0,47,255,242,0,171,0,48,255,244,0,171,0,49,255,242,0,171,0,50,255,244,0,171,0,51,255,242,0,171,0,52,255,244,0,171,0,53,255,242,0,171,0,54,255,238,0,171,0,55,255,247,0,171,0,56,255,246,0,171,0,58,255,247,0,171,0,59,255,245,0,171,0,127,255,248,0,171,0,128,255,248,0,171,0,129,255,248,0,171,0,130,255,248,0,171,0,131,255,248,0,171,0,132,255,248,0,171,0,134,255,244,0,171,0,135,255,242,0,171,0,136,255,242,0,171,0,137,255,242,0,171,0,138,255,242,0,171,0,139,255,242,0,171,0,140,255,242,0,171,0,141,255,242,0,171,0,142,255,242,0,171,0,143,255,242,0,171,0,144,255,242,0,171,0,145,255,244,0,171,0,146,255,244,0,171,0,147,255,244,0,171,0,148,255,244,0,171,0,149,255,244,0,171,0,151,255,244,0,171,0,152,255,238,0,171,0,153,255,238,0,171,0,154,255,238,0,171,0,155,255,238,0,171,0,156,255,247,0,171,0,157,255,242,0,171,0,194,255,244,0,171,0,196,255,244,0,171,0,198,255,247,0,171,0,199,255,245,0,171,0,240,0,28,0,172,0,7,255,244,0,172,0,11,0,18,0,172,0,34,255,248,0,172,0,35,255,242,0,172,0,36,255,244,0,172,0,37,255,242,0,172,0,38,255,242,0,172,0,39,255,242,0,172,0,40,255,244,0,172,0,41,255,242,0,172,0,42,255,242,0,172,0,43,255,242,0,172,0,44,255,242,0,172,0,45,255,242,0,172,0,46,255,241,0,172,0,47,255,242,0,172,0,48,255,244,0,172,0,49,255,242,0,172,0,50,255,244,0,172,0,51,255,242,0,172,0,52,255,244,0,172,0,53,255,242,0,172,0,54,255,238,0,172,0,55,255,247,0,172,0,56,255,246,0,172,0,58,255,247,0,172,0,59,255,245,0,172,0,62,0,9,0,172,0,94,0,14,0,172,0,127,255,248,0,172,0,128,255,248,0,172,0,129,255,248,0,172,0,130,255,248,0,172,0,131,255,248,0,172,0,132,255,248,0,172,0,134,255,244,0,172,0,135,255,242,0,172,0,136,255,242,0,172,0,137,255,242,0,172,0,138,255,242,0,172,0,139,255,242,0,172,0,140,255,242,0,172,0,141,255,242,0,172,0,142,255,242,0,172,0,143,255,242,0,172,0,144,255,242,0,172,0,145,255,244,0,172,0,146,255,244,0,172,0,147,255,244,0,172,0,148,255,244,0,172,0,149,255,244,0,172,0,151,255,244,0,172,0,152,255,238,0,172,0,153,255,238,0,172,0,154,255,238,0,172,0,155,255,238,0,172,0,156,255,247,0,172,0,157,255,242,0,172,0,194,255,244,0,172,0,196,255,244,0,172,0,198,255,247,0,172,0,199,255,245,0,172,0,240,0,18,0,173,0,3,0,29,0,173,0,7,255,244,0,173,0,8,0,29,0,173,0,11,0,76,0,173,0,32,0,39,0,173,0,34,255,248,0,173,0,35,255,242,0,173,0,36,255,244,0,173,0,37,255,242,0,173,0,38,255,242,0,173,0,39,255,242,0,173,0,40,255,244,0,173,0,41,255,242,0,173,0,42,255,242,0,173,0,43,255,242,0,173,0,44,255,242,0,173,0,45,255,242,0,173,0,46,255,241,0,173,0,47,255,242,0,173,0,48,255,244,0,173,0,49,255,242,0,173,0,50,255,244,0,173,0,51,255,242,0,173,0,52,255,244,0,173,0,53,255,242,0,173,0,54,255,238,0,173,0,55,255,247,0,173,0,56,255,246,0,173,0,58,255,247,0,173,0,59,255,245,0,173,0,61,0,13,0,173,0,62,0,44,0,173,0,94,0,33,0,173,0,127,255,248,0,173,0,128,255,248,0,173,0,129,255,248,0,173,0,130,255,248,0,173,0,131,255,248,0,173,0,132,255,248,0,173,0,134,255,244,0,173,0,135,255,242,0,173,0,136,255,242,0,173,0,137,255,242,0,173,0,138,255,242,0,173,0,139,255,242,0,173,0,140,255,242,0,173,0,141,255,242,0,173,0,142,255,242,0,173,0,143,255,242,0,173,0,144,255,242,0,173,0,145,255,244,0,173,0,146,255,244,0,173,0,147,255,244,0,173,0,148,255,244,0,173,0,149,255,244,0,173,0,151,255,244,0,173,0,152,255,238,0,173,0,153,255,238,0,173,0,154,255,238,0,173,0,155,255,238,0,173,0,156,255,247,0,173,0,157,255,242,0,173,0,194,255,244,0,173,0,196,255,244,0,173,0,198,255,247,0,173,0,199,255,245,0,173,0,209,0,37,0,173,0,210,0,24,0,173,0,212,0,37,0,173,0,213,0,24,0,173,0,240,0,81,0,174,0,7,255,244,0,174,0,11,0,43,0,174,0,32,0,27,0,174,0,34,255,248,0,174,0,35,255,242,0,174,0,36,255,244,0,174,0,37,255,242,0,174,0,38,255,242,0,174,0,39,255,242,0,174,0,40,255,244,0,174,0,41,255,242,0,174,0,42,255,242,0,174,0,43,255,242,0,174,0,44,255,242,0,174,0,45,255,242,0,174,0,46,255,241,0,174,0,47,255,242,0,174,0,48,255,244,0,174,0,49,255,242,0,174,0,50,255,244,0,174,0,51,255,242,0,174,0,52,255,244,0,174,0,53,255,242,0,174,0,54,255,238,0,174,0,55,255,247,0,174,0,56,255,246,0,174,0,58,255,247,0,174,0,59,255,245,0,174,0,61,0,14,0,174,0,62,0,39,0,174,0,94,0,44,0,174,0,127,255,248,0,174,0,128,255,248,0,174,0,129,255,248,0,174,0,130,255,248,0,174,0,131,255,248,0,174,0,132,255,248,0,174,0,134,255,244,0,174,0,135,255,242,0,174,0,136,255,242,0,174,0,137,255,242,0,174,0,138,255,242,0,174,0,139,255,242,0,174,0,140,255,242,0,174,0,141,255,242,0,174,0,142,255,242,0,174,0,143,255,242,0,174,0,144,255,242,0,174,0,145,255,244,0,174,0,146,255,244,0,174,0,147,255,244,0,174,0,148,255,244,0,174,0,149,255,244,0,174,0,151,255,244,0,174,0,152,255,238,0,174,0,153,255,238,0,174,0,154,255,238,0,174,0,155,255,238,0,174,0,156,255,247,0,174,0,157,255,242,0,174,0,194,255,244,0,174,0,196,255,244,0,174,0,198,255,247,0,174,0,199,255,245,0,174,0,240,0,48,0,175,0,3,255,245,0,175,0,7,255,247,0,175,0,8,255,245,0,175,0,10,255,232,0,175,0,11,255,240,0,175,0,13,255,247,0,175,0,15,255,247,0,175,0,32,255,242,0,175,0,61,255,246,0,175,0,62,255,240,0,175,0,89,255,248,0,175,0,94,255,243,0,175,0,209,255,236,0,175,0,210,255,237,0,175,0,211,255,247,0,175,0,212,255,236,0,175,0,213,255,237,0,175,0,214,255,247,0,175,0,218,255,247,0,175,0,240,255,241,0,176,0,2,255,248,0,176,0,3,255,238,0,176,0,7,255,245,0,176,0,8,255,238,0,176,0,10,255,232,0,176,0,11,255,235,0,176,0,18,255,231,0,176,0,24,255,233,0,176,0,32,255,224,0,176,0,34,255,250,0,176,0,35,255,238,0,176,0,36,255,243,0,176,0,37,255,238,0,176,0,38,255,238,0,176,0,39,255,238,0,176,0,40,255,243,0,176,0,41,255,238,0,176,0,42,255,238,0,176,0,43,255,238,0,176,0,44,255,238,0,176,0,45,255,238,0,176,0,46,255,241,0,176,0,47,255,238,0,176,0,48,255,243,0,176,0,49,255,238,0,176,0,50,255,243,0,176,0,51,255,238,0,176,0,52,255,241,0,176,0,53,255,162,0,176,0,54,255,231,0,176,0,55,255,198,0,176,0,56,255,214,0,176,0,57,255,249,0,176,0,58,255,163,0,176,0,59,255,245,0,176,0,61,255,214,0,176,0,62,255,216,0,176,0,71,255,251,0,176,0,85,255,248,0,176,0,87,255,243,0,176,0,88,255,248,0,176,0,90,255,242,0,176,0,94,255,225,0,176,0,127,255,250,0,176,0,128,255,250,0,176,0,129,255,250,0,176,0,130,255,250,0,176,0,131,255,250,0,176,0,132,255,250,0,176,0,134,255,243,0,176,0,135,255,238,0,176,0,136,255,238,0,176,0,137,255,238,0,176,0,138,255,238,0,176,0,139,255,238,0,176,0,140,255,238,0,176,0,141,255,238,0,176,0,142,255,238,0,176,0,143,255,238,0,176,0,144,255,238,0,176,0,145,255,243,0,176,0,146,255,243,0,176,0,147,255,243,0,176,0,148,255,243,0,176,0,149,255,243,0,176,0,151,255,243,0,176,0,152,255,231,0,176,0,153,255,231,0,176,0,154,255,231,0,176,0,155,255,231,0,176,0,156,255,163,0,176,0,157,255,238,0,176,0,158,255,248,0,176,0,188,255,242,0,176,0,190,255,242,0,176,0,194,255,243,0,176,0,196,255,241,0,176,0,198,255,163,0,176,0,199,255,245,0,176,0,209,255,187,0,176,0,210,255,184,0,176,0,212,255,187,0,176,0,213,255,184,0,176,0,240,255,235,0,177,0,3,255,236,0,177,0,7,255,246,0,177,0,8,255,236,0,177,0,10,255,224,0,177,0,11,255,234,0,177,0,18,255,230,0,177,0,19,255,229,0,177,0,24,255,223,0,177,0,32,255,222,0,177,0,34,255,240,0,177,0,35,255,237,0,177,0,36,255,246,0,177,0,37,255,237,0,177,0,38,255,237,0,177,0,39,255,237,0,177,0,40,255,246,0,177,0,41,255,237,0,177,0,42,255,237,0,177,0,43,255,237,0,177,0,44,255,237,0,177,0,45,255,237,0,177,0,46,255,239,0,177,0,47,255,237,0,177,0,48,255,246,0,177,0,49,255,237,0,177,0,50,255,246,0,177,0,51,255,237,0,177,0,52,255,238,0,177,0,53,255,173,0,177,0,54,255,238,0,177,0,55,255,192,0,177,0,56,255,212,0,177,0,57,255,218,0,177,0,58,255,167,0,177,0,59,255,227,0,177,0,61,255,214,0,177,0,62,255,213,0,177,0,71,255,251,0,177,0,85,255,249,0,177,0,87,255,247,0,177,0,88,255,251,0,177,0,89,255,237,0,177,0,90,255,245,0,177,0,91,255,246,0,177,0,94,255,222,0,177,0,122,255,247,0,177,0,127,255,240,0,177,0,128,255,240,0,177,0,129,255,240,0,177,0,130,255,240,0,177,0,131,255,240,0,177,0,132,255,240,0,177,0,134,255,246,0,177,0,135,255,237,0,177,0,136,255,237,0,177,0,137,255,237,0,177,0,138,255,237,0,177,0,139,255,237,0,177,0,140,255,237,0,177,0,141,255,237,0,177,0,142,255,237,0,177,0,143,255,237,0,177,0,144,255,237,0,177,0,145,255,246,0,177,0,146,255,246,0,177,0,147,255,246,0,177,0,148,255,246,0,177,0,149,255,246,0,177,0,151,255,246,0,177,0,152,255,238,0,177,0,153,255,238,0,177,0,154,255,238,0,177,0,155,255,238,0,177,0,156,255,167,0,177,0,157,255,237,0,177,0,158,255,248,0,177,0,188,255,245,0,177,0,190,255,245,0,177,0,194,255,246,0,177,0,196,255,238,0,177,0,198,255,167,0,177,0,199,255,227,0,177,0,200,255,246,0,177,0,209,255,182,0,177,0,210,255,179,0,177,0,212,255,182,0,177,0,213,255,179,0,177,0,221,255,247,0,177,0,240,255,236,0,178,0,3,255,236,0,178,0,7,255,246,0,178,0,8,255,236,0,178,0,10,255,224,0,178,0,11,255,234,0,178,0,18,255,230,0,178,0,19,255,229,0,178,0,24,255,223,0,178,0,32,255,222,0,178,0,34,255,240,0,178,0,35,255,237,0,178,0,36,255,246,0,178,0,37,255,237,0,178,0,38,255,237,0,178,0,39,255,237,0,178,0,40,255,246,0,178,0,41,255,237,0,178,0,42,255,237,0,178,0,43,255,237,0,178,0,44,255,237,0,178,0,45,255,237,0,178,0,46,255,239,0,178,0,47,255,237,0,178,0,48,255,246,0,178,0,49,255,237,0,178,0,50,255,246,0,178,0,51,255,237,0,178,0,52,255,238,0,178,0,53,255,173,0,178,0,54,255,238,0,178,0,55,255,192,0,178,0,56,255,212,0,178,0,57,255,218,0,178,0,58,255,167,0,178,0,59,255,227,0,178,0,61,255,214,0,178,0,62,255,213,0,178,0,71,255,251,0,178,0,85,255,249,0,178,0,87,255,247,0,178,0,88,255,251,0,178,0,89,255,237,0,178,0,90,255,245,0,178,0,91,255,246,0,178,0,94,255,222,0,178,0,122,255,247,0,178,0,127,255,240,0,178,0,128,255,240,0,178,0,129,255,240,0,178,0,130,255,240,0,178,0,131,255,240,0,178,0,132,255,240,0,178,0,134,255,246,0,178,0,135,255,237,0,178,0,136,255,237,0,178,0,137,255,237,0,178,0,138,255,237,0,178,0,139,255,237,0,178,0,140,255,237,0,178,0,141,255,237,0,178,0,142,255,237,0,178,0,143,255,237,0,178,0,144,255,237,0,178,0,145,255,246,0,178,0,146,255,246,0,178,0,147,255,246,0,178,0,148,255,246,0,178,0,149,255,246,0,178,0,151,255,246,0,178,0,152,255,238,0,178,0,153,255,238,0,178,0,154,255,238,0,178,0,155,255,238,0,178,0,156,255,167,0,178,0,157,255,237,0,178,0,158,255,248,0,178,0,188,255,245,0,178,0,190,255,245,0,178,0,194,255,246,0,178,0,196,255,238,0,178,0,198,255,167,0,178,0,199,255,227,0,178,0,200,255,246,0,178,0,209,255,182,0,178,0,210,255,179,0,178,0,212,255,182,0,178,0,213,255,179,0,178,0,221,255,247,0,178,0,240,255,236,0,179,0,3,255,236,0,179,0,7,255,246,0,179,0,8,255,236,0,179,0,10,255,224,0,179,0,11,255,234,0,179,0,18,255,230,0,179,0,19,255,229,0,179,0,24,255,223,0,179,0,32,255,222,0,179,0,34,255,240,0,179,0,35,255,237,0,179,0,36,255,246,0,179,0,37,255,237,0,179,0,38,255,237,0,179,0,39,255,237,0,179,0,40,255,246,0,179,0,41,255,237,0,179,0,42,255,237,0,179,0,43,255,237,0,179,0,44,255,237,0,179,0,45,255,237,0,179,0,46,255,239,0,179,0,47,255,237,0,179,0,48,255,246,0,179,0,49,255,237,0,179,0,50,255,246,0,179,0,51,255,237,0,179,0,52,255,238,0,179,0,53,255,173,0,179,0,54,255,238,0,179,0,55,255,192,0,179,0,56,255,212,0,179,0,57,255,218,0,179,0,58,255,167,0,179,0,59,255,227,0,179,0,61,255,214,0,179,0,62,255,213,0,179,0,71,255,251,0,179,0,85,255,249,0,179,0,87,255,247,0,179,0,88,255,251,0,179,0,89,255,237,0,179,0,90,255,245,0,179,0,91,255,246,0,179,0,94,255,222,0,179,0,122,255,247,0,179,0,127,255,240,0,179,0,128,255,240,0,179,0,129,255,240,0,179,0,130,255,240,0,179,0,131,255,240,0,179,0,132,255,240,0,179,0,134,255,246,0,179,0,135,255,237,0,179,0,136,255,237,0,179,0,137,255,237,0,179,0,138,255,237,0,179,0,139,255,237,0,179,0,140,255,237,0,179,0,141,255,237,0,179,0,142,255,237,0,179,0,143,255,237,0,179,0,144,255,237,0,179,0,145,255,246,0,179,0,146,255,246,0,179,0,147,255,246,0,179,0,148,255,246,0,179,0,149,255,246,0,179,0,151,255,246,0,179,0,152,255,238,0,179,0,153,255,238,0,179,0,154,255,238,0,179,0,155,255,238,0,179,0,156,255,167,0,179,0,157,255,237,0,179,0,158,255,248,0,179,0,188,255,245,0,179,0,190,255,245,0,179,0,194,255,246,0,179,0,196,255,238,0,179,0,198,255,167,0,179,0,199,255,227,0,179,0,200,255,246,0,179,0,209,255,182,0,179,0,210,255,179,0,179,0,212,255,182,0,179,0,213,255,179,0,179,0,221,255,247,0,179,0,240,255,236,0,180,0,3,255,236,0,180,0,7,255,246,0,180,0,8,255,236,0,180,0,10,255,224,0,180,0,11,255,234,0,180,0,18,255,230,0,180,0,19,255,229,0,180,0,24,255,223,0,180,0,32,255,222,0,180,0,34,255,240,0,180,0,35,255,237,0,180,0,36,255,246,0,180,0,37,255,237,0,180,0,38,255,237,0,180,0,39,255,237,0,180,0,40,255,246,0,180,0,41,255,237,0,180,0,42,255,237,0,180,0,43,255,237,0,180,0,44,255,237,0,180,0,45,255,237,0,180,0,46,255,239,0,180,0,47,255,237,0,180,0,48,255,246,0,180,0,49,255,237,0,180,0,50,255,246,0,180,0,51,255,237,0,180,0,52,255,238,0,180,0,53,255,173,0,180,0,54,255,238,0,180,0,55,255,192,0,180,0,56,255,212,0,180,0,57,255,218,0,180,0,58,255,167,0,180,0,59,255,227,0,180,0,61,255,214,0,180,0,62,255,213,0,180,0,71,255,251,0,180,0,85,255,249,0,180,0,87,255,247,0,180,0,88,255,251,0,180,0,89,255,237,0,180,0,90,255,245,0,180,0,91,255,246,0,180,0,94,255,222,0,180,0,122,255,247,0,180,0,127,255,240,0,180,0,128,255,240,0,180,0,129,255,240,0,180,0,130,255,240,0,180,0,131,255,240,0,180,0,132,255,240,0,180,0,134,255,246,0,180,0,135,255,237,0,180,0,136,255,237,0,180,0,137,255,237,0,180,0,138,255,237,0,180,0,139,255,237,0,180,0,140,255,237,0,180,0,141,255,237,0,180,0,142,255,237,0,180,0,143,255,237,0,180,0,144,255,237,0,180,0,145,255,246,0,180,0,146,255,246,0,180,0,147,255,246,0,180,0,148,255,246,0,180,0,149,255,246,0,180,0,151,255,246,0,180,0,152,255,238,0,180,0,153,255,238,0,180,0,154,255,238,0,180,0,155,255,238,0,180,0,156,255,167,0,180,0,157,255,237,0,180,0,158,255,248,0,180,0,188,255,245,0,180,0,190,255,245,0,180,0,194,255,246,0,180,0,196,255,238,0,180,0,198,255,167,0,180,0,199,255,227,0,180,0,200,255,246,0,180,0,209,255,182,0,180,0,210,255,179,0,180,0,212,255,182,0,180,0,213,255,179,0,180,0,221,255,247,0,180,0,240,255,236,0,181,0,3,255,236,0,181,0,7,255,246,0,181,0,8,255,236,0,181,0,10,255,224,0,181,0,11,255,234,0,181,0,18,255,230,0,181,0,19,255,229,0,181,0,24,255,223,0,181,0,32,255,222,0,181,0,34,255,240,0,181,0,35,255,237,0,181,0,36,255,246,0,181,0,37,255,237,0,181,0,38,255,237,0,181,0,39,255,237,0,181,0,40,255,246,0,181,0,41,255,237,0,181,0,42,255,237,0,181,0,43,255,237,0,181,0,44,255,237,0,181,0,45,255,237,0,181,0,46,255,239,0,181,0,47,255,237,0,181,0,48,255,246,0,181,0,49,255,237,0,181,0,50,255,246,0,181,0,51,255,237,0,181,0,52,255,238,0,181,0,53,255,173,0,181,0,54,255,238,0,181,0,55,255,192,0,181,0,56,255,212,0,181,0,57,255,218,0,181,0,58,255,167,0,181,0,59,255,227,0,181,0,61,255,214,0,181,0,62,255,213,0,181,0,71,255,251,0,181,0,85,255,249,0,181,0,87,255,247,0,181,0,88,255,251,0,181,0,89,255,237,0,181,0,90,255,245,0,181,0,91,255,246,0,181,0,94,255,222,0,181,0,122,255,247,0,181,0,127,255,240,0,181,0,128,255,240,0,181,0,129,255,240,0,181,0,130,255,240,0,181,0,131,255,240,0,181,0,132,255,240,0,181,0,134,255,246,0,181,0,135,255,237,0,181,0,136,255,237,0,181,0,137,255,237,0,181,0,138,255,237,0,181,0,139,255,237,0,181,0,140,255,237,0,181,0,141,255,237,0,181,0,142,255,237,0,181,0,143,255,237,0,181,0,144,255,237,0,181,0,145,255,246,0,181,0,146,255,246,0,181,0,147,255,246,0,181,0,148,255,246,0,181,0,149,255,246,0,181,0,151,255,246,0,181,0,152,255,238,0,181,0,153,255,238,0,181,0,154,255,238,0,181,0,155,255,238,0,181,0,156,255,167,0,181,0,157,255,237,0,181,0,158,255,248,0,181,0,188,255,245,0,181,0,190,255,245,0,181,0,194,255,246,0,181,0,196,255,238,0,181,0,198,255,167,0,181,0,199,255,227,0,181,0,200,255,246,0,181,0,209,255,182,0,181,0,210,255,179,0,181,0,212,255,182,0,181,0,213,255,179,0,181,0,221,255,247,0,181,0,240,255,236,0,183,0,3,255,236,0,183,0,7,255,246,0,183,0,8,255,236,0,183,0,10,255,224,0,183,0,11,255,234,0,183,0,18,255,230,0,183,0,19,255,229,0,183,0,24,255,223,0,183,0,32,255,222,0,183,0,34,255,240,0,183,0,35,255,237,0,183,0,36,255,246,0,183,0,37,255,237,0,183,0,38,255,237,0,183,0,39,255,237,0,183,0,40,255,246,0,183,0,41,255,237,0,183,0,42,255,237,0,183,0,43,255,237,0,183,0,44,255,237,0,183,0,45,255,237,0,183,0,46,255,239,0,183,0,47,255,237,0,183,0,48,255,246,0,183,0,49,255,237,0,183,0,50,255,246,0,183,0,51,255,237,0,183,0,52,255,238,0,183,0,53,255,173,0,183,0,54,255,238,0,183,0,55,255,192,0,183,0,56,255,212,0,183,0,57,255,218,0,183,0,58,255,167,0,183,0,59,255,227,0,183,0,61,255,214,0,183,0,62,255,213,0,183,0,71,255,251,0,183,0,85,255,249,0,183,0,87,255,247,0,183,0,88,255,251,0,183,0,89,255,237,0,183,0,90,255,245,0,183,0,91,255,246,0,183,0,94,255,222,0,183,0,122,255,247,0,183,0,127,255,240,0,183,0,128,255,240,0,183,0,129,255,240,0,183,0,130,255,240,0,183,0,131,255,240,0,183,0,132,255,240,0,183,0,134,255,246,0,183,0,135,255,237,0,183,0,136,255,237,0,183,0,137,255,237,0,183,0,138,255,237,0,183,0,139,255,237,0,183,0,140,255,237,0,183,0,141,255,237,0,183,0,142,255,237,0,183,0,143,255,237,0,183,0,144,255,237,0,183,0,145,255,246,0,183,0,146,255,246,0,183,0,147,255,246,0,183,0,148,255,246,0,183,0,149,255,246,0,183,0,151,255,246,0,183,0,152,255,238,0,183,0,153,255,238,0,183,0,154,255,238,0,183,0,155,255,238,0,183,0,156,255,167,0,183,0,157,255,237,0,183,0,158,255,248,0,183,0,188,255,245,0,183,0,190,255,245,0,183,0,194,255,246,0,183,0,196,255,238,0,183,0,198,255,167,0,183,0,199,255,227,0,183,0,200,255,246,0,183,0,209,255,182,0,183,0,210,255,179,0,183,0,212,255,182,0,183,0,213,255,179,0,183,0,221,255,247,0,183,0,240,255,236,0,184,0,7,255,244,0,184,0,10,255,233,0,184,0,11,255,244,0,184,0,24,255,232,0,184,0,32,255,223,0,184,0,34,255,248,0,184,0,35,255,242,0,184,0,36,255,244,0,184,0,37,255,242,0,184,0,38,255,242,0,184,0,39,255,242,0,184,0,40,255,244,0,184,0,41,255,242,0,184,0,42,255,242,0,184,0,43,255,242,0,184,0,44,255,242,0,184,0,45,255,242,0,184,0,46,255,241,0,184,0,47,255,242,0,184,0,48,255,244,0,184,0,49,255,242,0,184,0,50,255,244,0,184,0,51,255,242,0,184,0,52,255,243,0,184,0,53,255,164,0,184,0,54,255,235,0,184,0,55,255,216,0,184,0,56,255,218,0,184,0,57,255,246,0,184,0,58,255,183,0,184,0,59,255,242,0,184,0,61,255,228,0,184,0,62,255,215,0,184,0,94,255,226,0,184,0,127,255,248,0,184,0,128,255,248,0,184,0,129,255,248,0,184,0,130,255,248,0,184,0,131,255,248,0,184,0,132,255,248,0,184,0,134,255,244,0,184,0,135,255,242,0,184,0,136,255,242,0,184,0,137,255,242,0,184,0,138,255,242,0,184,0,139,255,242,0,184,0,140,255,242,0,184,0,141,255,242,0,184,0,142,255,242,0,184,0,143,255,242,0,184,0,144,255,242,0,184,0,145,255,244,0,184,0,146,255,244,0,184,0,147,255,244,0,184,0,148,255,244,0,184,0,149,255,244,0,184,0,151,255,244,0,184,0,152,255,235,0,184,0,153,255,235,0,184,0,154,255,235,0,184,0,155,255,235,0,184,0,156,255,183,0,184,0,157,255,242,0,184,0,194,255,244,0,184,0,196,255,243,0,184,0,198,255,183,0,184,0,199,255,242,0,184,0,209,255,211,0,184,0,210,255,209,0,184,0,212,255,211,0,184,0,213,255,209,0,184,0,240,255,239,0,185,0,7,255,244,0,185,0,10,255,233,0,185,0,11,255,244,0,185,0,24,255,232,0,185,0,32,255,223,0,185,0,34,255,248,0,185,0,35,255,242,0,185,0,36,255,244,0,185,0,37,255,242,0,185,0,38,255,242,0,185,0,39,255,242,0,185,0,40,255,244,0,185,0,41,255,242,0,185,0,42,255,242,0,185,0,43,255,242,0,185,0,44,255,242,0,185,0,45,255,242,0,185,0,46,255,241,0,185,0,47,255,242,0,185,0,48,255,244,0,185,0,49,255,242,0,185,0,50,255,244,0,185,0,51,255,242,0,185,0,52,255,243,0,185,0,53,255,164,0,185,0,54,255,235,0,185,0,55,255,216,0,185,0,56,255,218,0,185,0,57,255,246,0,185,0,58,255,183,0,185,0,59,255,242,0,185,0,61,255,228,0,185,0,62,255,215,0,185,0,94,255,226,0,185,0,127,255,248,0,185,0,128,255,248,0,185,0,129,255,248,0,185,0,130,255,248,0,185,0,131,255,248,0,185,0,132,255,248,0,185,0,134,255,244,0,185,0,135,255,242,0,185,0,136,255,242,0,185,0,137,255,242,0,185,0,138,255,242,0,185,0,139,255,242,0,185,0,140,255,242,0,185,0,141,255,242,0,185,0,142,255,242,0,185,0,143,255,242,0,185,0,144,255,242,0,185,0,145,255,244,0,185,0,146,255,244,0,185,0,147,255,244,0,185,0,148,255,244,0,185,0,149,255,244,0,185,0,151,255,244,0,185,0,152,255,235,0,185,0,153,255,235,0,185,0,154,255,235,0,185,0,155,255,235,0,185,0,156,255,183,0,185,0,157,255,242,0,185,0,194,255,244,0,185,0,196,255,243,0,185,0,198,255,183,0,185,0,199,255,242,0,185,0,209,255,211,0,185,0,210,255,209,0,185,0,212,255,211,0,185,0,213,255,209,0,185,0,240,255,239,0,186,0,7,255,244,0,186,0,10,255,233,0,186,0,11,255,244,0,186,0,24,255,232,0,186,0,32,255,223,0,186,0,34,255,248,0,186,0,35,255,242,0,186,0,36,255,244,0,186,0,37,255,242,0,186,0,38,255,242,0,186,0,39,255,242,0,186,0,40,255,244,0,186,0,41,255,242,0,186,0,42,255,242,0,186,0,43,255,242,0,186,0,44,255,242,0,186,0,45,255,242,0,186,0,46,255,241,0,186,0,47,255,242,0,186,0,48,255,244,0,186,0,49,255,242,0,186,0,50,255,244,0,186,0,51,255,242,0,186,0,52,255,243,0,186,0,53,255,164,0,186,0,54,255,235,0,186,0,55,255,216,0,186,0,56,255,218,0,186,0,57,255,246,0,186,0,58,255,183,0,186,0,59,255,242,0,186,0,61,255,228,0,186,0,62,255,215,0,186,0,94,255,226,0,186,0,127,255,248,0,186,0,128,255,248,0,186,0,129,255,248,0,186,0,130,255,248,0,186,0,131,255,248,0,186,0,132,255,248,0,186,0,134,255,244,0,186,0,135,255,242,0,186,0,136,255,242,0,186,0,137,255,242,0,186,0,138,255,242,0,186,0,139,255,242,0,186,0,140,255,242,0,186,0,141,255,242,0,186,0,142,255,242,0,186,0,143,255,242,0,186,0,144,255,242,0,186,0,145,255,244,0,186,0,146,255,244,0,186,0,147,255,244,0,186,0,148,255,244,0,186,0,149,255,244,0,186,0,151,255,244,0,186,0,152,255,235,0,186,0,153,255,235,0,186,0,154,255,235,0,186,0,155,255,235,0,186,0,156,255,183,0,186,0,157,255,242,0,186,0,194,255,244,0,186,0,196,255,243,0,186,0,198,255,183,0,186,0,199,255,242,0,186,0,209,255,211,0,186,0,210,255,209,0,186,0,212,255,211,0,186,0,213,255,209,0,186,0,240,255,239,0,187,0,7,255,244,0,187,0,10,255,233,0,187,0,11,255,244,0,187,0,24,255,232,0,187,0,32,255,223,0,187,0,34,255,248,0,187,0,35,255,242,0,187,0,36,255,244,0,187,0,37,255,242,0,187,0,38,255,242,0,187,0,39,255,242,0,187,0,40,255,244,0,187,0,41,255,242,0,187,0,42,255,242,0,187,0,43,255,242,0,187,0,44,255,242,0,187,0,45,255,242,0,187,0,46,255,241,0,187,0,47,255,242,0,187,0,48,255,244,0,187,0,49,255,242,0,187,0,50,255,244,0,187,0,51,255,242,0,187,0,52,255,243,0,187,0,53,255,164,0,187,0,54,255,235,0,187,0,55,255,216,0,187,0,56,255,218,0,187,0,57,255,246,0,187,0,58,255,183,0,187,0,59,255,242,0,187,0,61,255,228,0,187,0,62,255,215,0,187,0,94,255,226,0,187,0,127,255,248,0,187,0,128,255,248,0,187,0,129,255,248,0,187,0,130,255,248,0,187,0,131,255,248,0,187,0,132,255,248,0,187,0,134,255,244,0,187,0,135,255,242,0,187,0,136,255,242,0,187,0,137,255,242,0,187,0,138,255,242,0,187,0,139,255,242,0,187,0,140,255,242,0,187,0,141,255,242,0,187,0,142,255,242,0,187,0,143,255,242,0,187,0,144,255,242,0,187,0,145,255,244,0,187,0,146,255,244,0,187,0,147,255,244,0,187,0,148,255,244,0,187,0,149,255,244,0,187,0,151,255,244,0,187,0,152,255,235,0,187,0,153,255,235,0,187,0,154,255,235,0,187,0,155,255,235,0,187,0,156,255,183,0,187,0,157,255,242,0,187,0,194,255,244,0,187,0,196,255,243,0,187,0,198,255,183,0,187,0,199,255,242,0,187,0,209,255,211,0,187,0,210,255,209,0,187,0,212,255,211,0,187,0,213,255,209,0,187,0,240,255,239,0,188,0,7,255,238,0,188,0,10,255,231,0,188,0,13,255,225,0,188,0,15,255,225,0,188,0,16,255,220,0,188,0,19,255,227,0,188,0,20,255,230,0,188,0,24,255,198,0,188,0,32,255,205,0,188,0,33,255,238,0,188,0,34,255,214,0,188,0,35,255,243,0,188,0,37,255,243,0,188,0,38,255,243,0,188,0,39,255,243,0,188,0,41,255,243,0,188,0,42,255,243,0,188,0,43,255,243,0,188,0,44,255,243,0,188,0,45,255,243,0,188,0,46,255,229,0,188,0,47,255,243,0,188,0,49,255,243,0,188,0,51,255,243,0,188,0,53,255,168,0,188,0,54,255,245,0,188,0,55,255,238,0,188,0,56,255,242,0,188,0,57,255,208,0,188,0,58,255,211,0,188,0,59,255,225,0,188,0,62,255,214,0,188,0,66,255,250,0,188,0,68,255,246,0,188,0,69,255,246,0,188,0,70,255,246,0,188,0,72,255,250,0,188,0,80,255,246,0,188,0,82,255,246,0,188,0,84,255,252,0,188,0,94,255,227,0,188,0,127,255,214,0,188,0,128,255,214,0,188,0,129,255,214,0,188,0,130,255,214,0,188,0,131,255,214,0,188,0,132,255,214,0,188,0,135,255,243,0,188,0,136,255,243,0,188,0,137,255,243,0,188,0,138,255,243,0,188,0,139,255,243,0,188,0,140,255,243,0,188,0,141,255,243,0,188,0,142,255,243,0,188,0,143,255,243,0,188,0,144,255,243,0,188,0,152,255,245,0,188,0,153,255,245,0,188,0,154,255,245,0,188,0,155,255,245,0,188,0,156,255,211,0,188,0,157,255,243,0,188,0,159,255,250,0,188,0,160,255,250,0,188,0,161,255,250,0,188,0,162,255,250,0,188,0,163,255,250,0,188,0,164,255,250,0,188,0,165,255,250,0,188,0,166,255,246,0,188,0,167,255,246,0,188,0,168,255,246,0,188,0,169,255,246,0,188,0,170,255,246,0,188,0,175,255,236,0,188,0,177,255,246,0,188,0,178,255,246,0,188,0,179,255,246,0,188,0,180,255,246,0,188,0,181,255,246,0,188,0,183,255,246,0,188,0,195,255,246,0,188,0,197,255,252,0,188,0,198,255,211,0,188,0,199,255,225,0,188,0,209,255,227,0,188,0,210,255,225,0,188,0,211,255,225,0,188,0,212,255,227,0,188,0,213,255,225,0,188,0,214,255,225,0,188,0,218,255,225,0,189,0,3,255,234,0,189,0,7,255,246,0,189,0,8,255,234,0,189,0,10,255,227,0,189,0,11,255,232,0,189,0,13,255,246,0,189,0,15,255,247,0,189,0,18,255,235,0,189,0,19,255,232,0,189,0,24,255,226,0,189,0,32,255,224,0,189,0,34,255,240,0,189,0,35,255,237,0,189,0,36,255,246,0,189,0,37,255,237,0,189,0,38,255,237,0,189,0,39,255,237,0,189,0,40,255,246,0,189,0,41,255,237,0,189,0,42,255,237,0,189,0,43,255,237,0,189,0,44,255,237,0,189,0,45,255,237,0,189,0,46,255,239,0,189,0,47,255,237,0,189,0,48,255,246,0,189,0,49,255,237,0,189,0,50,255,246,0,189,0,51,255,237,0,189,0,52,255,237,0,189,0,53,255,171,0,189,0,54,255,238,0,189,0,55,255,193,0,189,0,56,255,212,0,189,0,57,255,217,0,189,0,58,255,167,0,189,0,59,255,227,0,189,0,61,255,217,0,189,0,62,255,217,0,189,0,71,255,251,0,189,0,85,255,250,0,189,0,87,255,247,0,189,0,88,255,251,0,189,0,89,255,238,0,189,0,90,255,245,0,189,0,91,255,246,0,189,0,94,255,226,0,189,0,122,255,247,0,189,0,127,255,240,0,189,0,128,255,240,0,189,0,129,255,240,0,189,0,130,255,240,0,189,0,131,255,240,0,189,0,132,255,240,0,189,0,134,255,246,0,189,0,135,255,237,0,189,0,136,255,237,0,189,0,137,255,237,0,189,0,138,255,237,0,189,0,139,255,237,0,189,0,140,255,237,0,189,0,141,255,237,0,189,0,142,255,237,0,189,0,143,255,237,0,189,0,144,255,237,0,189,0,145,255,246,0,189,0,146,255,246,0,189,0,147,255,246,0,189,0,148,255,246,0,189,0,149,255,246,0,189,0,151,255,246,0,189,0,152,255,238,0,189,0,153,255,238,0,189,0,154,255,238,0,189,0,155,255,238,0,189,0,156,255,167,0,189,0,157,255,237,0,189,0,158,255,248,0,189,0,188,255,245,0,189,0,190,255,245,0,189,0,194,255,246,0,189,0,196,255,237,0,189,0,198,255,167,0,189,0,199,255,227,0,189,0,200,255,246,0,189,0,209,255,181,0,189,0,210,255,178,0,189,0,211,255,246,0,189,0,212,255,181,0,189,0,213,255,178,0,189,0,214,255,246,0,189,0,218,255,247,0,189,0,221,255,247,0,189,0,240,255,234,0,190,0,7,255,238,0,190,0,10,255,231,0,190,0,13,255,225,0,190,0,15,255,225,0,190,0,16,255,220,0,190,0,19,255,227,0,190,0,20,255,230,0,190,0,24,255,198,0,190,0,32,255,205,0,190,0,33,255,238,0,190,0,34,255,214,0,190,0,35,255,243,0,190,0,37,255,243,0,190,0,38,255,243,0,190,0,39,255,243,0,190,0,41,255,243,0,190,0,42,255,243,0,190,0,43,255,243,0,190,0,44,255,243,0,190,0,45,255,243,0,190,0,46,255,229,0,190,0,47,255,243,0,190,0,49,255,243,0,190,0,51,255,243,0,190,0,53,255,168,0,190,0,54,255,245,0,190,0,55,255,238,0,190,0,56,255,242,0,190,0,57,255,208,0,190,0,58,255,211,0,190,0,59,255,225,0,190,0,62,255,214,0,190,0,66,255,250,0,190,0,68,255,246,0,190,0,69,255,246,0,190,0,70,255,246,0,190,0,72,255,250,0,190,0,80,255,246,0,190,0,82,255,246,0,190,0,84,255,252,0,190,0,94,255,227,0,190,0,127,255,214,0,190,0,128,255,214,0,190,0,129,255,214,0,190,0,130,255,214,0,190,0,131,255,214,0,190,0,132,255,214,0,190,0,135,255,243,0,190,0,136,255,243,0,190,0,137,255,243,0,190,0,138,255,243,0,190,0,139,255,243,0,190,0,140,255,243,0,190,0,141,255,243,0,190,0,142,255,243,0,190,0,143,255,243,0,190,0,144,255,243,0,190,0,152,255,245,0,190,0,153,255,245,0,190,0,154,255,245,0,190,0,155,255,245,0,190,0,156,255,211,0,190,0,157,255,243,0,190,0,159,255,250,0,190,0,160,255,250,0,190,0,161,255,250,0,190,0,162,255,250,0,190,0,163,255,250,0,190,0,164,255,250,0,190,0,165,255,250,0,190,0,166,255,246,0,190,0,167,255,246,0,190,0,168,255,246,0,190,0,169,255,246,0,190,0,170,255,246,0,190,0,175,255,236,0,190,0,177,255,246,0,190,0,178,255,246,0,190,0,179,255,246,0,190,0,180,255,246,0,190,0,181,255,246,0,190,0,183,255,246,0,190,0,195,255,246,0,190,0,197,255,252,0,190,0,198,255,211,0,190,0,199,255,225,0,190,0,209,255,227,0,190,0,210,255,225,0,190,0,211,255,225,0,190,0,212,255,227,0,190,0,213,255,225,0,190,0,214,255,225,0,190,0,218,255,225,0,193,0,7,255,244,0,193,0,34,255,248,0,193,0,35,255,242,0,193,0,36,255,244,0,193,0,37,255,242,0,193,0,38,255,242,0,193,0,39,255,242,0,193,0,40,255,244,0,193,0,41,255,242,0,193,0,42,255,242,0,193,0,43,255,242,0,193,0,44,255,242,0,193,0,45,255,242,0,193,0,46,255,241,0,193,0,47,255,242,0,193,0,48,255,244,0,193,0,49,255,242,0,193,0,50,255,244,0,193,0,51,255,242,0,193,0,52,255,244,0,193,0,53,255,242,0,193,0,54,255,238,0,193,0,55,255,247,0,193,0,56,255,246,0,193,0,58,255,247,0,193,0,59,255,245,0,193,0,127,255,248,0,193,0,128,255,248,0,193,0,129,255,248,0,193,0,130,255,248,0,193,0,131,255,248,0,193,0,132,255,248,0,193,0,134,255,244,0,193,0,135,255,242,0,193,0,136,255,242,0,193,0,137,255,242,0,193,0,138,255,242,0,193,0,139,255,242,0,193,0,140,255,242,0,193,0,141,255,242,0,193,0,142,255,242,0,193,0,143,255,242,0,193,0,144,255,242,0,193,0,145,255,244,0,193,0,146,255,244,0,193,0,147,255,244,0,193,0,148,255,244,0,193,0,149,255,244,0,193,0,151,255,244,0,193,0,152,255,238,0,193,0,153,255,238,0,193,0,154,255,238,0,193,0,155,255,238,0,193,0,156,255,247,0,193,0,157,255,242,0,193,0,194,255,244,0,193,0,196,255,244,0,193,0,198,255,247,0,193,0,199,255,245,0,194,0,14,255,244,0,194,0,21,255,220,0,194,0,36,255,245,0,194,0,40,255,245,0,194,0,48,255,245,0,194,0,50,255,245,0,194,0,68,255,240,0,194,0,69,255,240,0,194,0,70,255,240,0,194,0,71,255,243,0,194,0,72,255,241,0,194,0,78,255,247,0,194,0,79,255,247,0,194,0,80,255,240,0,194,0,81,255,247,0,194,0,82,255,240,0,194,0,83,255,247,0,194,0,84,255,251,0,194,0,85,255,242,0,194,0,86,255,238,0,194,0,87,255,241,0,194,0,88,255,243,0,194,0,90,255,240,0,194,0,107,255,235,0,194,0,110,255,248,0,194,0,134,255,245,0,194,0,145,255,245,0,194,0,146,255,245,0,194,0,147,255,245,0,194,0,148,255,245,0,194,0,149,255,245,0,194,0,151,255,245,0,194,0,158,255,243,0,194,0,166,255,240,0,194,0,167,255,240,0,194,0,168,255,240,0,194,0,169,255,240,0,194,0,170,255,240,0,194,0,173,0,21,0,194,0,175,255,246,0,194,0,176,255,247,0,194,0,177,255,240,0,194,0,178,255,240,0,194,0,179,255,240,0,194,0,180,255,240,0,194,0,181,255,240,0,194,0,183,255,240,0,194,0,184,255,238,0,194,0,185,255,238,0,194,0,186,255,238,0,194,0,187,255,238,0,194,0,188,255,240,0,194,0,189,255,247,0,194,0,190,255,240,0,194,0,194,255,245,0,194,0,195,255,240,0,194,0,197,255,251,0,194,0,207,255,244,0,194,0,208,255,244,0,194,0,220,255,235,0,195,0,3,255,241,0,195,0,7,255,246,0,195,0,8,255,241,0,195,0,10,255,230,0,195,0,11,255,238,0,195,0,18,255,235,0,195,0,19,255,245,0,195,0,24,255,230,0,195,0,32,255,223,0,195,0,34,255,251,0,195,0,35,255,241,0,195,0,36,255,250,0,195,0,37,255,241,0,195,0,38,255,241,0,195,0,39,255,241,0,195,0,40,255,250,0,195,0,41,255,241,0,195,0,42,255,241,0,195,0,43,255,241,0,195,0,44,255,241,0,195,0,45,255,241,0,195,0,46,255,243,0,195,0,47,255,241,0,195,0,48,255,250,0,195,0,49,255,241,0,195,0,50,255,250,0,195,0,51,255,241,0,195,0,52,255,241,0,195,0,53,255,187,0,195,0,54,255,240,0,195,0,55,255,209,0,195,0,56,255,213,0,195,0,57,255,243,0,195,0,58,255,174,0,195,0,59,255,243,0,195,0,61,255,220,0,195,0,62,255,220,0,195,0,87,255,252,0,195,0,89,255,251,0,195,0,90,255,251,0,195,0,94,255,227,0,195,0,127,255,251,0,195,0,128,255,251,0,195,0,129,255,251,0,195,0,130,255,251,0,195,0,131,255,251,0,195,0,132,255,251,0,195,0,134,255,250,0,195,0,135,255,241,0,195,0,136,255,241,0,195,0,137,255,241,0,195,0,138,255,241,0,195,0,139,255,241,0,195,0,140,255,241,0,195,0,141,255,241,0,195,0,142,255,241,0,195,0,143,255,241,0,195,0,144,255,241,0,195,0,145,255,250,0,195,0,146,255,250,0,195,0,147,255,250,0,195,0,148,255,250,0,195,0,149,255,250,0,195,0,151,255,250,0,195,0,152,255,240,0,195,0,153,255,240,0,195,0,154,255,240,0,195,0,155,255,240,0,195,0,156,255,174,0,195,0,157,255,241,0,195,0,188,255,251,0,195,0,190,255,251,0,195,0,194,255,250,0,195,0,196,255,241,0,195,0,198,255,174,0,195,0,199,255,243,0,195,0,209,255,189,0,195,0,210,255,186,0,195,0,212,255,189,0,195,0,213,255,186,0,195,0,240,255,237,0,196,0,10,255,246,0,196,0,57,255,251,0,196,0,67,255,250,0,196,0,71,255,243,0,196,0,72,255,250,0,196,0,73,255,250,0,196,0,74,255,250,0,196,0,75,255,250,0,196,0,76,255,250,0,196,0,77,255,250,0,196,0,78,255,250,0,196,0,79,255,250,0,196,0,81,255,250,0,196,0,83,255,250,0,196,0,84,255,251,0,196,0,85,255,241,0,196,0,86,255,250,0,196,0,87,255,241,0,196,0,88,255,244,0,196,0,89,255,242,0,196,0,90,255,240,0,196,0,91,255,244,0,196,0,158,255,244,0,196,0,171,255,250,0,196,0,172,255,250,0,196,0,173,255,250,0,196,0,174,255,250,0,196,0,176,255,250,0,196,0,184,255,250,0,196,0,185,255,250,0,196,0,186,255,250,0,196,0,187,255,250,0,196,0,188,255,240,0,196,0,189,255,250,0,196,0,190,255,240,0,196,0,193,255,250,0,196,0,197,255,251,0,196,0,200,255,244,0,197,0,10,255,231,0,197,0,11,255,241,0,197,0,24,255,234,0,197,0,32,255,224,0,197,0,35,255,241,0,197,0,36,255,244,0,197,0,37,255,241,0,197,0,38,255,241,0,197,0,39,255,241,0,197,0,40,255,244,0,197,0,41,255,241,0,197,0,42,255,241,0,197,0,43,255,241,0,197,0,44,255,241,0,197,0,45,255,241,0,197,0,46,255,245,0,197,0,47,255,241,0,197,0,48,255,244,0,197,0,49,255,241,0,197,0,50,255,244,0,197,0,51,255,241,0,197,0,52,255,248,0,197,0,53,255,202,0,197,0,54,255,238,0,197,0,55,255,216,0,197,0,56,255,224,0,197,0,57,255,244,0,197,0,58,255,209,0,197,0,59,255,245,0,197,0,61,255,225,0,197,0,62,255,220,0,197,0,94,255,229,0,197,0,134,255,244,0,197,0,135,255,241,0,197,0,136,255,241,0,197,0,137,255,241,0,197,0,138,255,241,0,197,0,139,255,241,0,197,0,140,255,241,0,197,0,141,255,241,0,197,0,142,255,241,0,197,0,143,255,241,0,197,0,144,255,241,0,197,0,145,255,244,0,197,0,146,255,244,0,197,0,147,255,244,0,197,0,148,255,244,0,197,0,149,255,244,0,197,0,151,255,244,0,197,0,152,255,238,0,197,0,153,255,238,0,197,0,154,255,238,0,197,0,155,255,238,0,197,0,156,255,209,0,197,0,157,255,241,0,197,0,194,255,244,0,197,0,196,255,248,0,197,0,198,255,209,0,197,0,199,255,245,0,197,0,209,255,203,0,197,0,210,255,200,0,197,0,212,255,203,0,197,0,213,255,200,0,197,0,240,255,235,0,198,0,7,255,237,0,198,0,11,0,13,0,198,0,13,255,215,0,198,0,14,255,222,0,198,0,15,255,215,0,198,0,16,255,201,0,198,0,17,255,233,0,198,0,21,255,206,0,198,0,23,255,218,0,198,0,25,255,246,0,198,0,27,255,235,0,198,0,28,255,235,0,198,0,32,0,13,0,198,0,33,255,198,0,198,0,34,255,192,0,198,0,36,255,230,0,198,0,40,255,230,0,198,0,46,255,232,0,198,0,48,255,230,0,198,0,50,255,230,0,198,0,61,0,7,0,198,0,62,0,31,0,198,0,66,255,189,0,198,0,68,255,171,0,198,0,69,255,171,0,198,0,70,255,171,0,198,0,71,255,237,0,198,0,72,255,180,0,198,0,78,255,187,0,198,0,79,255,187,0,198,0,80,255,171,0,198,0,81,255,187,0,198,0,82,255,171,0,198,0,83,255,187,0,198,0,84,255,186,0,198,0,85,255,221,0,198,0,86,255,190,0,198,0,87,255,215,0,198,0,88,255,216,0,198,0,89,255,214,0,198,0,90,255,217,0,198,0,91,255,229,0,198,0,94,0,33,0,198,0,107,255,198,0,198,0,110,255,230,0,198,0,122,255,225,0,198,0,127,255,192,0,198,0,128,255,192,0,198,0,129,255,192,0,198,0,130,255,192,0,198,0,131,255,192,0,198,0,132,255,192,0,198,0,133,255,180,0,198,0,134,255,230,0,198,0,145,255,230,0,198,0,146,255,230,0,198,0,147,255,230,0,198,0,148,255,230,0,198,0,149,255,230,0,198,0,151,255,230,0,198,0,158,255,230,0,198,0,159,255,189,0,198,0,160,255,189,0,198,0,161,255,189,0,198,0,162,255,189,0,198,0,163,255,189,0,198,0,164,255,189,0,198,0,165,255,189,0,198,0,166,255,171,0,198,0,167,255,171,0,198,0,168,255,171,0,198,0,169,255,171,0,198,0,170,255,171,0,198,0,171,0,16,0,198,0,173,0,38,0,198,0,174,0,47,0,198,0,175,255,216,0,198,0,176,255,187,0,198,0,177,255,171,0,198,0,178,255,171,0,198,0,179,255,171,0,198,0,180,255,171,0,198,0,181,255,171,0,198,0,183,255,171,0,198,0,184,255,190,0,198,0,185,255,190,0,198,0,186,255,190,0,198,0,187,255,190,0,198,0,188,255,217,0,198,0,189,255,225,0,198,0,190,255,217,0,198,0,194,255,230,0,198,0,195,255,171,0,198,0,197,255,234,0,198,0,200,255,229,0,198,0,207,255,222,0,198,0,208,255,222,0,198,0,211,255,215,0,198,0,214,255,215,0,198,0,218,255,215,0,198,0,220,255,198,0,198,0,221,255,225,0,198,0,240,0,33,0,199,0,14,255,217,0,199,0,17,255,243,0,199,0,21,255,199,0,199,0,23,255,247,0,199,0,36,255,238,0,199,0,40,255,238,0,199,0,48,255,238,0,199,0,50,255,238,0,199,0,62,0,23,0,199,0,66,255,246,0,199,0,68,255,227,0,199,0,69,255,227,0,199,0,70,255,227,0,199,0,71,255,241,0,199,0,72,255,229,0,199,0,74,255,250,0,199,0,75,255,250,0,199,0,78,255,235,0,199,0,79,255,235,0,199,0,80,255,227,0,199,0,81,255,235,0,199,0,82,255,227,0,199,0,83,255,235,0,199,0,84,255,245,0,199,0,85,255,241,0,199,0,86,255,224,0,199,0,87,255,241,0,199,0,88,255,241,0,199,0,90,255,242,0,199,0,91,255,248,0,199,0,94,0,23,0,199,0,107,255,214,0,199,0,110,255,233,0,199,0,134,255,238,0,199,0,145,255,238,0,199,0,146,255,238,0,199,0,147,255,238,0,199,0,148,255,238,0,199,0,149,255,238,0,199,0,151,255,238,0,199,0,158,255,239,0,199,0,159,255,246,0,199,0,160,255,246,0,199,0,161,255,246,0,199,0,162,255,246,0,199,0,163,255,246,0,199,0,164,255,246,0,199,0,165,255,246,0,199,0,166,255,227,0,199,0,167,255,227,0,199,0,168,255,227,0,199,0,169,255,227,0,199,0,170,255,227,0,199,0,171,0,6,0,199,0,172,255,250,0,199,0,173,0,29,0,199,0,174,0,37,0,199,0,175,255,235,0,199,0,176,255,235,0,199,0,177,255,227,0,199,0,178,255,227,0,199,0,179,255,227,0,199,0,180,255,227,0,199,0,181,255,227,0,199,0,183,255,227,0,199,0,184,255,224,0,199,0,185,255,224,0,199,0,186,255,224,0,199,0,187,255,224,0,199,0,188,255,242,0,199,0,189,255,235,0,199,0,190,255,242,0,199,0,193,255,250,0,199,0,194,255,238,0,199,0,195,255,227,0,199,0,197,255,245,0,199,0,200,255,248,0,199,0,207,255,217,0,199,0,208,255,217,0,199,0,220,255,214,0,199,0,240,0,24,0,200,0,7,255,245,0,200,0,10,255,246,0,200,0,14,255,240,0,200,0,21,255,225,0,200,0,24,255,244,0,200,0,32,255,221,0,200,0,35,255,242,0,200,0,36,255,244,0,200,0,37,255,242,0,200,0,38,255,242,0,200,0,39,255,242,0,200,0,40,255,244,0,200,0,41,255,242,0,200,0,42,255,242,0,200,0,43,255,242,0,200,0,44,255,242,0,200,0,45,255,242,0,200,0,46,255,245,0,200,0,47,255,242,0,200,0,48,255,244,0,200,0,49,255,242,0,200,0,50,255,244,0,200,0,51,255,242,0,200,0,53,255,203,0,200,0,54,255,239,0,200,0,55,255,240,0,200,0,56,255,243,0,200,0,58,255,227,0,200,0,61,255,242,0,200,0,62,255,222,0,200,0,68,255,245,0,200,0,69,255,245,0,200,0,70,255,245,0,200,0,72,255,251,0,200,0,80,255,245,0,200,0,82,255,245,0,200,0,94,255,232,0,200,0,107,255,232,0,200,0,134,255,244,0,200,0,135,255,242,0,200,0,136,255,242,0,200,0,137,255,242,0,200,0,138,255,242,0,200,0,139,255,242,0,200,0,140,255,242,0,200,0,141,255,242,0,200,0,142,255,242,0,200,0,143,255,242,0,200,0,144,255,242,0,200,0,145,255,244,0,200,0,146,255,244,0,200,0,147,255,244,0,200,0,148,255,244,0,200,0,149,255,244,0,200,0,151,255,244,0,200,0,152,255,239,0,200,0,153,255,239,0,200,0,154,255,239,0,200,0,155,255,239,0,200,0,156,255,227,0,200,0,157,255,242,0,200,0,166,255,245,0,200,0,167,255,245,0,200,0,168,255,245,0,200,0,169,255,245,0,200,0,170,255,245,0,200,0,175,255,247,0,200,0,177,255,245,0,200,0,178,255,245,0,200,0,179,255,245,0,200,0,180,255,245,0,200,0,181,255,245,0,200,0,183,255,245,0,200,0,194,255,244,0,200,0,195,255,245,0,200,0,198,255,227,0,200,0,207,255,240,0,200,0,208,255,240,0,200,0,209,255,219,0,200,0,210,255,216,0,200,0,212,255,219,0,200,0,213,255,216,0,200,0,220,255,232,0,200,0,240,255,242,0,207,0,3,255,234,0,207,0,8,255,234,0,207,0,52,255,243,0,207,0,53,255,216,0,207,0,55,255,238,0,207,0,56,255,248,0,207,0,57,255,242,0,207,0,58,255,222,0,207,0,59,255,237,0,207,0,71,255,247,0,207,0,85,255,248,0,207,0,89,255,247,0,207,0,91,255,231,0,207,0,156,255,222,0,207,0,158,255,248,0,207,0,196,255,243,0,207,0,198,255,222,0,207,0,199,255,237,0,207,0,200,255,231,0,207,0,210,255,193,0,207,0,213,255,193,0,208,0,3,255,234,0,208,0,8,255,234,0,208,0,52,255,243,0,208,0,53,255,216,0,208,0,55,255,238,0,208,0,56,255,248,0,208,0,57,255,242,0,208,0,58,255,222,0,208,0,59,255,237,0,208,0,71,255,247,0,208,0,85,255,248,0,208,0,89,255,247,0,208,0,91,255,231,0,208,0,156,255,222,0,208,0,158,255,248,0,208,0,196,255,243,0,208,0,198,255,222,0,208,0,199,255,237,0,208,0,200,255,231,0,208,0,210,255,193,0,208,0,213,255,193,0,209,0,13,255,123,0,209,0,15,255,124,0,209,0,34,255,205,0,209,0,46,255,236,0,209,0,66,255,194,0,209,0,68,255,182,0,209,0,69,255,182,0,209,0,70,255,182,0,209,0,71,255,243,0,209,0,72,255,189,0,209,0,78,255,211,0,209,0,79,255,211,0,209,0,80,255,182,0,209,0,81,255,211,0,209,0,82,255,182,0,209,0,83,255,211,0,209,0,84,255,193,0,209,0,85,255,248,0,209,0,86,255,213,0,209,0,87,255,226,0,209,0,88,255,227,0,209,0,89,255,225,0,209,0,90,255,227,0,209,0,91,255,217,0,209,0,127,255,205,0,209,0,128,255,205,0,209,0,129,255,205,0,209,0,130,255,205,0,209,0,131,255,205,0,209,0,132,255,205,0,209,0,133,255,190,0,209,0,158,255,245,0,209,0,159,255,194,0,209,0,160,255,194,0,209,0,161,255,194,0,209,0,162,255,194,0,209,0,163,255,194,0,209,0,164,255,194,0,209,0,165,255,194,0,209,0,166,255,182,0,209,0,167,255,182,0,209,0,168,255,182,0,209,0,169,255,182,0,209,0,170,255,182,0,209,0,173,0,37,0,209,0,175,255,235,0,209,0,176,255,211,0,209,0,177,255,182,0,209,0,178,255,182,0,209,0,179,255,182,0,209,0,180,255,182,0,209,0,181,255,182,0,209,0,183,255,182,0,209,0,184,255,213,0,209,0,185,255,213,0,209,0,186,255,213,0,209,0,187,255,213,0,209,0,188,255,227,0,209,0,189,255,211,0,209,0,190,255,227,0,209,0,195,255,182,0,209,0,197,255,193,0,209,0,200,255,217,0,209,0,218,255,124,0,210,0,7,255,239,0,210,0,11,0,5,0,210,0,13,255,110,0,210,0,14,255,181,0,210,0,15,255,110,0,210,0,16,255,209,0,210,0,33,255,210,0,210,0,34,255,200,0,210,0,36,255,234,0,210,0,40,255,234,0,210,0,46,255,234,0,210,0,48,255,234,0,210,0,50,255,234,0,210,0,58,0,6,0,210,0,66,255,179,0,210,0,68,255,167,0,210,0,69,255,167,0,210,0,70,255,167,0,210,0,71,255,243,0,210,0,72,255,174,0,210,0,78,255,198,0,210,0,79,255,198,0,210,0,80,255,167,0,210,0,81,255,198,0,210,0,82,255,167,0,210,0,83,255,198,0,210,0,84,255,178,0,210,0,85,255,244,0,210,0,86,255,200,0,210,0,87,255,214,0,210,0,88,255,215,0,210,0,89,255,213,0,210,0,90,255,215,0,210,0,91,255,204,0,210,0,107,255,192,0,210,0,110,255,245,0,210,0,122,255,220,0,210,0,127,255,200,0,210,0,128,255,200,0,210,0,129,255,200,0,210,0,130,255,200,0,210,0,131,255,200,0,210,0,132,255,200,0,210,0,133,255,184,0,210,0,134,255,234,0,210,0,145,255,234,0,210,0,146,255,234,0,210,0,147,255,234,0,210,0,148,255,234,0,210,0,149,255,234,0,210,0,151,255,234,0,210,0,156,0,6,0,210,0,158,255,241,0,210,0,159,255,179,0,210,0,160,255,179,0,210,0,161,255,187,0,210,0,162,255,179,0,210,0,163,255,179,0,210,0,164,255,179,0,210,0,165,255,179,0,210,0,166,255,167,0,210,0,167,255,167,0,210,0,168,255,167,0,210,0,169,255,174,0,210,0,170,255,167,0,210,0,173,0,44,0,210,0,174,0,28,0,210,0,175,255,237,0,210,0,176,255,198,0,210,0,177,255,167,0,210,0,178,255,167,0,210,0,179,255,167,0,210,0,180,255,167,0,210,0,181,255,167,0,210,0,183,255,167,0,210,0,184,255,200,0,210,0,185,255,200,0,210,0,186,255,200,0,210,0,187,255,200,0,210,0,188,255,215,0,210,0,189,255,224,0,210,0,190,255,215,0,210,0,194,255,234,0,210,0,195,255,167,0,210,0,197,255,232,0,210,0,198,0,6,0,210,0,200,255,204,0,210,0,207,255,181,0,210,0,208,255,181,0,210,0,211,255,110,0,210,0,214,255,110,0,210,0,218,255,110,0,210,0,220,255,192,0,210,0,221,255,220,0,210,0,240,0,9,0,211,0,3,255,146,0,211,0,8,255,146,0,211,0,36,255,242,0,211,0,40,255,242,0,211,0,48,255,242,0,211,0,50,255,242,0,211,0,53,255,214,0,211,0,54,255,243,0,211,0,55,255,213,0,211,0,56,255,226,0,211,0,58,255,215,0,211,0,71,255,241,0,211,0,85,255,239,0,211,0,87,255,227,0,211,0,88,255,236,0,211,0,90,255,222,0,211,0,134,255,242,0,211,0,145,255,242,0,211,0,146,255,242,0,211,0,147,255,242,0,211,0,148,255,242,0,211,0,149,255,242,0,211,0,151,255,242,0,211,0,152,255,243,0,211,0,153,255,243,0,211,0,154,255,243,0,211,0,155,255,243,0,211,0,156,255,215,0,211,0,158,255,242,0,211,0,188,255,222,0,211,0,190,255,222,0,211,0,194,255,242,0,211,0,198,255,215,0,211,0,210,255,121,0,211,0,213,255,121,0,212,0,13,255,123,0,212,0,15,255,124,0,212,0,34,255,205,0,212,0,46,255,236,0,212,0,66,255,194,0,212,0,68,255,182,0,212,0,69,255,182,0,212,0,70,255,182,0,212,0,71,255,243,0,212,0,72,255,189,0,212,0,78,255,211,0,212,0,79,255,211,0,212,0,80,255,182,0,212,0,81,255,211,0,212,0,82,255,182,0,212,0,83,255,211,0,212,0,84,255,193,0,212,0,85,255,248,0,212,0,86,255,213,0,212,0,87,255,226,0,212,0,88,255,227,0,212,0,89,255,225,0,212,0,90,255,227,0,212,0,91,255,217,0,212,0,127,255,205,0,212,0,128,255,205,0,212,0,129,255,205,0,212,0,130,255,205,0,212,0,131,255,205,0,212,0,132,255,205,0,212,0,133,255,190,0,212,0,158,255,245,0,212,0,159,255,194,0,212,0,160,255,194,0,212,0,161,255,194,0,212,0,162,255,194,0,212,0,163,255,194,0,212,0,164,255,194,0,212,0,165,255,194,0,212,0,166,255,182,0,212,0,167,255,182,0,212,0,168,255,182,0,212,0,169,255,182,0,212,0,170,255,182,0,212,0,173,0,37,0,212,0,175,255,235,0,212,0,176,255,211,0,212,0,177,255,182,0,212,0,178,255,182,0,212,0,179,255,182,0,212,0,180,255,182,0,212,0,181,255,182,0,212,0,183,255,182,0,212,0,184,255,213,0,212,0,185,255,213,0,212,0,186,255,213,0,212,0,187,255,213,0,212,0,188,255,227,0,212,0,189,255,211,0,212,0,190,255,227,0,212,0,195,255,182,0,212,0,197,255,193,0,212,0,200,255,217,0,212,0,218,255,124,0,213,0,7,255,239,0,213,0,11,0,5,0,213,0,13,255,110,0,213,0,14,255,181,0,213,0,15,255,110,0,213,0,16,255,209,0,213,0,33,255,210,0,213,0,34,255,200,0,213,0,36,255,234,0,213,0,40,255,234,0,213,0,46,255,234,0,213,0,48,255,234,0,213,0,50,255,234,0,213,0,58,0,6,0,213,0,66,255,179,0,213,0,68,255,167,0,213,0,69,255,167,0,213,0,70,255,167,0,213,0,71,255,243,0,213,0,72,255,174,0,213,0,78,255,198,0,213,0,79,255,198,0,213,0,80,255,167,0,213,0,81,255,198,0,213,0,82,255,167,0,213,0,83,255,198,0,213,0,84,255,178,0,213,0,85,255,244,0,213,0,86,255,200,0,213,0,87,255,214,0,213,0,88,255,215,0,213,0,89,255,213,0,213,0,90,255,215,0,213,0,91,255,204,0,213,0,107,255,192,0,213,0,110,255,245,0,213,0,122,255,220,0,213,0,127,255,200,0,213,0,128,255,200,0,213,0,129,255,200,0,213,0,130,255,200,0,213,0,131,255,200,0,213,0,132,255,200,0,213,0,133,255,184,0,213,0,134,255,234,0,213,0,145,255,234,0,213,0,146,255,234,0,213,0,147,255,234,0,213,0,148,255,234,0,213,0,149,255,234,0,213,0,151,255,234,0,213,0,156,0,6,0,213,0,158,255,241,0,213,0,159,255,179,0,213,0,160,255,179,0,213,0,161,255,187,0,213,0,162,255,179,0,213,0,163,255,179,0,213,0,164,255,179,0,213,0,165,255,179,0,213,0,166,255,167,0,213,0,167,255,167,0,213,0,168,255,167,0,213,0,169,255,174,0,213,0,170,255,167,0,213,0,173,0,44,0,213,0,174,0,28,0,213,0,175,255,237,0,213,0,176,255,198,0,213,0,177,255,167,0,213,0,178,255,167,0,213,0,179,255,167,0,213,0,180,255,167,0,213,0,181,255,167,0,213,0,183,255,167,0,213,0,184,255,200,0,213,0,185,255,200,0,213,0,186,255,200,0,213,0,187,255,200,0,213,0,188,255,215,0,213,0,189,255,224,0,213,0,190,255,215,0,213,0,194,255,234,0,213,0,195,255,167,0,213,0,197,255,232,0,213,0,198,0,6,0,213,0,200,255,204,0,213,0,207,255,181,0,213,0,208,255,181,0,213,0,211,255,110,0,213,0,214,255,110,0,213,0,218,255,110,0,213,0,220,255,192,0,213,0,221,255,220,0,213,0,240,0,9,0,214,0,3,255,146,0,214,0,8,255,146,0,214,0,36,255,242,0,214,0,40,255,242,0,214,0,48,255,242,0,214,0,50,255,242,0,214,0,53,255,214,0,214,0,54,255,243,0,214,0,55,255,213,0,214,0,56,255,226,0,214,0,58,255,215,0,214,0,71,255,241,0,214,0,85,255,239,0,214,0,87,255,227,0,214,0,88,255,236,0,214,0,90,255,222,0,214,0,134,255,242,0,214,0,145,255,242,0,214,0,146,255,242,0,214,0,147,255,242,0,214,0,148,255,242,0,214,0,149,255,242,0,214,0,151,255,242,0,214,0,152,255,243,0,214,0,153,255,243,0,214,0,154,255,243,0,214,0,155,255,243,0,214,0,156,255,215,0,214,0,158,255,242,0,214,0,188,255,222,0,214,0,190,255,222,0,214,0,194,255,242,0,214,0,198,255,215,0,214,0,210,255,121,0,214,0,213,255,121,0,220,0,53,255,197,0,220,0,55,255,245,0,220,0,58,255,226,0,220,0,68,255,247,0,220,0,69,255,247,0,220,0,70,255,247,0,220,0,80,255,247,0,220,0,82,255,247,0,220,0,156,255,226,0,220,0,166,255,247,0,220,0,167,255,247,0,220,0,168,255,247,0,220,0,169,255,247,0,220,0,170,255,247,0,220,0,177,255,247,0,220,0,178,255,247,0,220,0,179,255,247,0,220,0,180,255,247,0,220,0,181,255,247,0,220,0,183,255,247,0,220,0,195,255,247,0,220,0,198,255,226,0,220,0,210,255,229,0,220,0,213,255,229,0,221,0,3,255,241,0,221,0,8,255,241,0,221,0,34,255,247,0,221,0,52,255,234,0,221,0,53,255,195,0,221,0,55,255,220,0,221,0,56,255,230,0,221,0,57,255,224,0,221,0,58,255,198,0,221,0,59,255,223,0,221,0,85,255,247,0,221,0,89,255,236,0,221,0,90,255,248,0,221,0,91,255,233,0,221,0,127,255,247,0,221,0,128,255,247,0,221,0,129,255,247,0,221,0,130,255,247,0,221,0,131,255,247,0,221,0,132,255,247,0,221,0,133,255,243,0,221,0,143,0,6,0,221,0,156,255,198,0,221,0,158,255,248,0,221,0,188,255,248,0,221,0,190,255,248,0,221,0,196,255,234,0,221,0,198,255,198,0,221,0,199,255,223,0,221,0,200,255,233,0,221,0,210,255,204,0,221,0,213,255,204,0,240,0,34,255,232,0,240,0,127,255,232,0,240,0,128,255,232,0,240,0,129,255,232,0,240,0,130,255,232,0,240,0,131,255,232,0,240,0,132,255,232,0,240,0,133,255,228,0,240,0,143,0,10,0,240,0,173,0,11,0,0,0,26,0,26,0,128,0,180,1,222,3,150,5,20,7,18,7,50,7,152,7,254,8,126,8,236,9,44,9,76,9,118,9,164,10,242,11,84,12,94,13,186,14,88,15,116,16,222,17,80,18,196,20,20,20,90,20,182,20,234,21,28,21,86,22,64,23,106,24,52,25,156,26,174,27,122,27,230,28,78,29,42,29,170,29,242,30,62,30,238,31,56,32,156,33,74,34,90,35,34,36,114,37,108,39,118,39,180,40,192,41,132,42,144,43,146,44,30,45,24,45,82,45,126,45,186,45,250,46,40,46,116,47,190,48,152,49,132,50,84,51,134,52,34,54,126,55,48,55,150,56,32,56,246,57,70,58,122,59,70,60,44,61,44,62,12,62,124,63,222,64,108,65,32,65,192,66,202,67,216,68,110,69,122,70,22,70,62,70,222,71,82,71,82,71,186,72,170,73,160,74,142,75,104,75,162,77,148,77,202,79,230,80,216,81,64,81,112,81,162,83,120,84,100,84,188,85,156,86,186,86,252,87,166,88,14,88,64,88,106,88,216,89,124,89,248,90,38,90,82,90,128,91,94,91,142,91,180,91,214,91,248,92,44,92,104,93,92,93,104,93,154,93,198,93,226,94,12,94,68,94,88,94,126,94,170,95,162,95,188,95,216,95,254,96,28,96,56,96,100,96,180,98,188,98,230,99,12,99,46,99,92,99,132,100,86,101,182,101,210,101,238,102,6,102,34,102,78,102,110,104,160,104,182,104,206,104,230,105,4,105,26,105,66,105,106,105,134,105,174,107,26,107,44,107,68,107,106,107,134,107,158,107,184,107,248,109,120,109,152,109,194,109,234,110,14,110,32,111,30,111,56,111,86,111,108,111,180,113,68,115,64,115,96,115,124,115,172,115,202,115,232,116,178,117,30,117,112,117,194,118,158,119,90,119,114,119,142,119,188,119,234,120,26,120,112,120,200,121,40,121,166,122,108,122,152,122,236,125,28,125,154,126,18,127,134,127,238,128,186,129,228,130,64,131,176,132,150,132,172,132,192,132,212,132,232,132,254,133,18,133,40,133,60,133,86,133,108,134,206,135,148,136,128,137,136,138,34,138,132,138,236,139,180,140,10,140,76,140,156,141,52,142,108,143,160,144,190,146,12,146,232,147,174,149,108,150,84,152,6,152,82,153,10,153,184,155,6,155,248,156,152,157,86,158,238,159,60,0,1,0,0,1,13,0,106,0,7,0,71,0,4,0,1,0,0,0,0,0,10,0,0,2,0,4,21,0,3,0,1,0,0,0,31,1,122,0,1,0,0,0,0,0,0,0,106,0,0,0,1,0,0,0,0,0,1,0,5,0,106,0,1,0,0,0,0,0,2,0,7,0,111,0,1,0,0,0,0,0,3,0,75,0,118,0,1,0,0,0,0,0,4,0,13,0,193,0,1,0,0,0,0,0,5,0,13,0,206,0,1,0,0,0,0,0,6,0,13,0,219,0,1,0,0,0,0,0,7,0,95,0,232,0,1,0,0,0,0,0,8,0,62,1,71,0,1,0,0,0,0,0,9,0,15,1,133,0,1,0,0,0,0,0,10,0,127,1,148,0,1,0,0,0,0,0,11,0,17,2,19,0,1,0,0,0,0,0,12,0,17,2,36,0,1,0,0,0,0,0,13,0,255,2,53,0,1,0,0,0,0,0,14,0,26,3,52,0,1,0,0,0,0,0,18,0,13,3,78,0,3,0,1,4,9,0,0,0,212,3,91,0,3,0,1,4,9,0,1,0,10,4,47,0,3,0,1,4,9,0,2,0,14,4,57,0,3,0,1,4,9,0,3,0,150,4,71,0,3,0,1,4,9,0,4,0,26,4,221,0,3,0,1,4,9,0,5,0,26,4,247,0,3,0,1,4,9,0,6,0,26,5,17,0,3,0,1,4,9,0,7,0,190,5,43,0,3,0,1,4,9,0,8,0,124,5,233,0,3,0,1,4,9,0,9,0,30,6,101,0,3,0,1,4,9,0,10,0,254,6,131,0,3,0,1,4,9,0,11,0,34,7,129,0,3,0,1,4,9,0,12,0,34,7,163,0,3,0,1,4,9,0,13,1,254,7,197,0,3,0,1,4,9,0,14,0,52,9,195,67,111,112,121,114,105,103,104,116,32,40,99,41,32,50,48,49,49,32,98,121,32,80,97,98,108,111,32,73,109,112,97,108,108,97,114,105,46,32,119,119,119,46,105,109,112,97,108,108,97,114,105,46,99,111,109,32,73,103,105,110,111,32,77,97,114,105,110,105,46,32,119,119,119,46,105,107,101,114,110,46,99,111,109,46,32,65,108,108,32,114,105,103,104,116,115,32,114,101,115,101,114,118,101,100,46,67,97,98,105,110,82,101,103,117,108,97,114,80,97,98,108,111,73,109,112,97,108,108,97,114,105,46,119,119,119,46,105,109,112,97,108,108,97,114,105,46,99,111,109,73,103,105,110,111,77,97,114,105,110,105,46,119,119,119,46,105,107,101,114,110,46,99,111,109,58,32,67,97,98,105,110,32,66,111,108,100,58,32,50,48,49,48,67,97,98,105,110,32,82,101,103,117,108,97,114,86,101,114,115,105,111,110,32,49,46,48,48,53,67,97,98,105,110,45,82,101,103,117,108,97,114,67,97,98,105,110,32,82,101,103,117,108,97,114,32,105,115,32,97,32,116,114,97,100,101,109,97,114,107,32,111,102,32,80,97,98,108,111,32,73,109,112,97,108,108,97,114,105,46,32,119,119,119,46,105,109,112,97,108,108,97,114,105,46,99,111,109,32,73,103,105,110,111,32,77,97,114,105,110,105,46,32,119,119,119,46,105,107,101,114,110,46,99,111,109,46,80,97,98,108,111,32,73,109,112,97,108,108,97,114,105,46,32,119,119,119,46,105,109,112,97,108,108,97,114,105,46,99,111,109,32,73,103,105,110,111,32,77,97,114,105,110,105,46,32,119,119,119,46,105,107,101,114,110,46,99,111,109,80,97,98,108,111,32,73,109,112,97,108,108,97,114,105,67,111,112,121,114,105,103,104,116,32,40,99,41,32,50,48,49,49,32,98,121,32,80,97,98,108,111,32,73,109,112,97,108,108,97,114,105,46,32,119,119,119,46,105,109,112,97,108,108,97,114,105,46,99,111,109,32,67,111,112,121,114,105,103,104,116,32,40,99,41,32,50,48,49,49,32,98,121,32,73,103,105,110,111,32,77,97,114,105,110,105,46,32,119,119,119,46,105,107,101,114,110,46,99,111,109,32,65,108,108,32,114,105,103,104,116,115,32,114,101,115,101,114,118,101,100,46,119,119,119,46,105,109,112,97,108,108,97,114,105,46,99,111,109,119,119,119,46,105,109,112,97,108,108,97,114,105,46,99,111,109,67,111,112,121,114,105,103,104,116,32,40,99,41,32,50,48,49,48,44,32,80,97,98,108,111,32,73,109,112,97,108,108,97,114,105,32,40,119,119,119,46,105,109,112,97,108,108,97,114,105,46,99,111,109,124,105,109,112,97,108,108,97,114,105,64,103,109,97,105,108,46,99,111,109,41,44,13,10,119,105,116,104,32,82,101,115,101,114,118,101,100,32,70,111,110,116,32,78,97,109,101,32,67,97,98,105,110,46,13,10,84,104,105,115,32,70,111,110,116,32,83,111,102,116,119,97,114,101,32,105,115,32,108,105,99,101,110,115,101,100,32,117,110,100,101,114,32,116,104,101,32,83,73,76,32,79,112,101,110,32,70,111,110,116,32,76,105,99,101,110,115,101,44,32,86,101,114,115,105,111,110,32,49,46,49,46,13,10,84,104,105,115,32,108,105,99,101,110,115,101,32,105,115,32,97,118,97,105,108,97,98,108,101,32,119,105,116,104,32,97,32,70,65,81,32,97,116,58,32,104,116,116,112,58,47,47,115,99,114,105,112,116,115,46,115,105,108,46,111,114,103,47,79,70,76,104,116,116,112,58,47,47,115,99,114,105,112,116,115,46,115,105,108,46,111,114,103,47,79,70,76,67,97,98,105,110,32,82,101,103,117,108,97,114,0,67,0,111,0,112,0,121,0,114,0,105,0,103,0,104,0,116,0,32,0,40,0,99,0,41,0,32,0,50,0,48,0,49,0,49,0,32,0,98,0,121,0,32,0,80,0,97,0,98,0,108,0,111,0,32,0,73,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,32,0,119,0,119,0,119,0,46,0,105,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,99,0,111,0,109,0,32,0,73,0,103,0,105,0,110,0,111,0,32,0,77,0,97,0,114,0,105,0,110,0,105,0,46,0,32,0,119,0,119,0,119,0,46,0,105,0,107,0,101,0,114,0,110,0,46,0,99,0,111,0,109,0,46,0,32,0,65,0,108,0,108,0,32,0,114,0,105,0,103,0,104,0,116,0,115,0,32,0,114,0,101,0,115,0,101,0,114,0,118,0,101,0,100,0,46,0,67,0,97,0,98,0,105,0,110,0,82,0,101,0,103,0,117,0,108,0,97,0,114,0,80,0,97,0,98,0,108,0,111,0,73,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,119,0,119,0,119,0,46,0,105,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,99,0,111,0,109,0,73,0,103,0,105,0,110,0,111,0,77,0,97,0,114,0,105,0,110,0,105,0,46,0,119,0,119,0,119,0,46,0,105,0,107,0,101,0,114,0,110,0,46,0,99,0,111,0,109,0,58,0,32,0,67,0,97,0,98,0,105,0,110,0,32,0,66,0,111,0,108,0,100,0,58,0,32,0,50,0,48,0,49,0,48,0,67,0,97,0,98,0,105,0,110,0,32,0,82,0,101,0,103,0,117,0,108,0,97,0,114,0,86,0,101,0,114,0,115,0,105,0,111,0,110,0,32,0,49,0,46,0,48,0,48,0,53,0,67,0,97,0,98,0,105,0,110,0,45,0,82,0,101,0,103,0,117,0,108,0,97,0,114,0,67,0,97,0,98,0,105,0,110,0,32,0,82,0,101,0,103,0,117,0,108,0,97,0,114,0,32,0,105,0,115,0,32,0,97,0,32,0,116,0,114,0,97,0,100,0,101,0,109,0,97,0,114,0,107,0,32,0,111,0,102,0,32,0,80,0,97,0,98,0,108,0,111,0,32,0,73,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,32,0,119,0,119,0,119,0,46,0,105,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,99,0,111,0,109,0,32,0,73,0,103,0,105,0,110,0,111,0,32,0,77,0,97,0,114,0,105,0,110,0,105,0,46,0,32,0,119,0,119,0,119,0,46,0,105,0,107,0,101,0,114,0,110,0,46,0,99,0,111,0,109,0,46,0,80,0,97,0,98,0,108,0,111,0,32,0,73,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,32,0,119,0,119,0,119,0,46,0,105,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,99,0,111,0,109,0,32,0,73,0,103,0,105,0,110,0,111,0,32,0,77,0,97,0,114,0,105,0,110,0,105,0,46,0,32,0,119,0,119,0,119,0,46,0,105,0,107,0,101,0,114,0,110,0,46,0,99,0,111,0,109,0,80,0,97,0,98,0,108,0,111,0,32,0,73,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,67,0,111,0,112,0,121,0,114,0,105,0,103,0,104,0,116,0,32,0,40,0,99,0,41,0,32,0,50,0,48,0,49,0,49,0,32,0,98,0,121,0,32,0,80,0,97,0,98,0,108,0,111,0,32,0,73,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,32,0,119,0,119,0,119,0,46,0,105,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,99,0,111,0,109,0,32,0,67,0,111,0,112,0,121,0,114,0,105,0,103,0,104,0,116,0,32,0,40,0,99,0,41,0,32,0,50,0,48,0,49,0,49,0,32,0,98,0,121,0,32,0,73,0,103,0,105,0,110,0,111,0,32,0,77,0,97,0,114,0,105,0,110,0,105,0,46,0,32,0,119,0,119,0,119,0,46,0,105,0,107,0,101,0,114,0,110,0,46,0,99,0,111,0,109,0,32,0,65,0,108,0,108,0,32,0,114,0,105,0,103,0,104,0,116,0,115,0,32,0,114,0,101,0,115,0,101,0,114,0,118,0,101,0,100,0,46,0,119,0,119,0,119,0,46,0,105,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,99,0,111,0,109,0,119,0,119,0,119,0,46,0,105,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,99,0,111,0,109,0,67,0,111,0,112,0,121,0,114,0,105,0,103,0,104,0,116,0,32,0,40,0,99,0,41,0,32,0,50,0,48,0,49,0,48,0,44,0,32,0,80,0,97,0,98,0,108,0,111,0,32,0,73,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,32,0,40,0,119,0,119,0,119,0,46,0,105,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,46,0,99,0,111,0,109,0,124,0,105,0,109,0,112,0,97,0,108,0,108,0,97,0,114,0,105,0,64,0,103,0,109,0,97,0,105,0,108,0,46,0,99,0,111,0,109,0,41,0,44,0,13,0,10,0,119,0,105,0,116,0,104,0,32,0,82,0,101,0,115,0,101,0,114,0,118,0,101,0,100,0,32,0,70,0,111,0,110,0,116,0,32,0,78,0,97,0,109,0,101,0,32,0,67,0,97,0,98,0,105,0,110,0,46,0,13,0,10,0,84,0,104,0,105,0,115,0,32,0,70,0,111,0,110,0,116,0,32,0,83,0,111,0,102,0,116,0,119,0,97,0,114,0,101,0,32,0,105,0,115,0,32,0,108,0,105,0,99,0,101,0,110,0,115,0,101,0,100,0,32,0,117,0,110,0,100,0,101,0,114,0,32,0,116,0,104,0,101,0,32,0,83,0,73,0,76,0,32,0,79,0,112,0,101,0,110,0,32,0,70,0,111,0,110,0,116,0,32,0,76,0,105,0,99,0,101,0,110,0,115,0,101,0,44,0,32,0,86,0,101,0,114,0,115,0,105,0,111,0,110,0,32,0,49,0,46,0,49,0,46,0,13,0,10,0,84,0,104,0,105,0,115,0,32,0,108,0,105,0,99,0,101,0,110,0,115,0,101,0,32,0,105,0,115,0,32,0,97,0,118,0,97,0,105,0,108,0,97,0,98,0,108,0,101,0,32,0,119,0,105,0,116,0,104,0,32,0,97,0,32,0,70,0,65,0,81,0,32,0,97,0,116,0,58,0,32,0,104,0,116,0,116,0,112,0,58,0,47,0,47,0,115,0,99,0,114,0,105,0,112,0,116,0,115,0,46,0,115,0,105,0,108,0,46,0,111,0,114,0,103,0,47,0,79,0,70,0,76,0,104,0,116,0,116,0,112,0,58,0,47,0,47,0,115,0,99,0,114,0,105,0,112,0,116,0,115,0,46,0,115,0,105,0,108,0,46,0,111,0,114,0,103,0,47,0,79,0,70,0,76,0,0,0,0,2,0,0,0,0,0,0,255,181,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,13,0,0,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0,43,0,44,0,45,0,46,0,47,0,48,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,58,0,59,0,60,0,61,0,62,0,63,0,64,0,65,0,66,0,67,0,68,0,69,0,70,0,71,0,72,0,73,0,74,0,75,0,76,0,77,0,78,0,79,0,80,0,81,0,82,0,83,0,84,0,85,0,86,0,87,0,88,0,89,0,90,0,91,0,92,0,93,0,94,0,95,0,96,0,97,1,2,0,163,0,132,0,133,0,189,0,150,0,232,0,134,0,142,0,139,0,157,0,169,0,164,1,3,0,138,0,131,0,147,1,4,1,5,0,141,1,6,0,136,1,7,0,222,1,8,0,158,0,170,0,245,0,244,0,246,0,162,0,173,0,201,0,199,0,174,0,98,0,99,0,144,0,100,0,203,0,101,0,200,0,202,0,207,0,204,0,205,0,206,0,233,0,102,0,211,0,208,0,209,0,175,0,103,0,240,0,145,0,214,0,212,0,213,0,104,0,235,0,237,0,137,0,106,0,105,0,107,0,109,0,108,0,110,0,160,0,111,0,113,0,112,0,114,0,115,0,117,0,116,0,118,0,119,0,234,0,120,0,122,0,121,0,123,0,125,0,124,0,184,0,161,0,127,0,126,0,128,0,129,0,236,0,238,0,186,0,255,1,0,0,215,0,176,0,177,0,228,0,229,0,187,0,230,0,231,0,166,1,9,0,216,0,225,0,221,0,217,0,178,0,179,0,182,0,183,0,196,0,180,0,181,0,197,0,130,0,194,0,135,0,171,0,198,0,190,0,191,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,0,140,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,48,1,49,1,50,1,51,1,52,1,53,1,54,1,55,7,117,110,105,48,48,65,48,7,117,110,105,48,48,65,68,7,117,110,105,48,48,66,50,7,117,110,105,48,48,66,51,7,117,110,105,48,48,66,53,14,112,101,114,105,111,100,99,101,110,116,101,114,101,100,7,117,110,105,48,48,66,57,7,117,110,105,48,50,51,55,7,117,110,105,50,48,55,48,7,117,110,105,50,48,55,52,7,117,110,105,50,48,55,53,7,117,110,105,50,48,55,54,7,117,110,105,50,48,55,55,7,117,110,105,50,48,55,56,7,117,110,105,50,48,55,57,7,117,110,105,50,48,56,48,7,117,110,105,50,48,56,49,7,117,110,105,50,48,56,50,7,117,110,105,50,48,56,51,7,117,110,105,50,48,56,52,7,117,110,105,50,48,56,53,7,117,110,105,50,48,56,54,7,117,110,105,50,48,56,55,7,117,110,105,50,48,56,56,7,117,110,105,50,48,56,57,4,69,117,114,111,4,66,46,115,99,4,67,46,115,99,4,68,46,115,99,4,69,46,115,99,4,70,46,115,99,4,71,46,115,99,4,72,46,115,99,4,73,46,115,99,4,74,46,115,99,4,75,46,115,99,4,65,46,115,99,4,77,46,115,99,4,78,46,115,99,4,79,46,115,99,5,65,69,46,115,99,4,80,46,115,99,4,81,46,115,99,4,82,46,115,99,4,83,46,115,99,4,84,46,115,99,4,85,46,115,99,4,86,46,115,99,4,87,46,115,99,4,88,46,115,99,4,89,46,115,99,4,90,46,115,99,5,79,69,46,115,99,4,76,46,115,99,0,0,184,0,0,43,0,186,0,1,0,3,0,2,43,1,186,0,4,0,2,0,2,43,1,191,0,4,0,58,0,47,0,37,0,28,0,18,0,0,0,8,43,191,0,5,0,77,0,63,0,50,0,34,0,18,0,0,0,8,43,0,191,0,1,0,79,0,65,0,50,0,34,0,18,0,0,0,8,43,191,0,2,0,66,0,54,0,42,0,32,0,18,0,0,0,8,43,191,0,3,0,95,0,78,0,61,0,44,0,22,0,0,0,8,43,0,186,0,6,0,7,0,7,43,184,0,0,32,69,125,105,24,68,186,0,16,0,8,0,1,115,186,0,144,0,8,0,1,115,186,0,208,0,8,0,1,115,186,0,144,0,10,0,1,115,186,0,240,0,10,0,1,115,186,0,32,0,10,0,1,116,186,0,80,0,10,0,1,116,186,0,127,0,10,0,1,116,186,0,32,0,10,0,1,115,186,0,207,0,12,0,1,115,186,0,239,0,12,0,1,115,186,0,79,0,14,0,1,116,186,0,63,0,14,0,1,115,186,0,175,0,14,0,1,115,186,0,223,0,14,0,1,115,186,0,31,0,14,0,1,116,186,0,127,0,14,0,1,116,186,0,223,0,16,0,1,115,186,0,255,0,16,0,1,115,186,0,111,0,16,0,1,116,186,0,127,0,16,0,1,116,186,0,143,0,16,0,1,116,0,0,1,13,1,1,1,1,50,1,1,46,1,10,10,1,1,1,1,1,1,1,1,1,1,1,1,23,1,1,1,1,1,1,1,1,18,28,1,1,10,1,38,1,1,14,50,50,1,1,9,50,10,1,10,1,1,11,10,14,21,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,14,24,1,1,13,37,15,1,1,36,36,15,14,1,13,12,10,12,1,1,6,25,6,1,1,30,23,1,1,1,29,1,1,1,1,12,27,1,1,1,4,1,1,1,1,1,1,1,1,1,12,1,25,1,1,1,1,1,1,1,1,1,10,38,38,38,38,50,50,50,50,1,50,10,10,10,10,10,1,10,1,1,1,1,1,1,36,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,39,18,13,13,13,13,1,18,1,10,1,1,8,25,1,14,1,1,1,48,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,40,1,30,1,1,1,50,1,1,1,1,40,33,1,45,28,32,1,1,19,1,1,10,1,45,34,1,15,1,1,15,28,1,17,1,1,1,11,1,12,20,1,0,0,0,0,0,0,42,0,0,1,16,9,11,2,2,2,4,6,5,8,6,2,3,3,4,4,2,4,2,5,6,3,5,5,5,5,5,5,5,5,2,2,4,5,4,4,7,6,5,5,7,5,5,6,6,2,2,5,5,7,6,6,5,6,5,5,5,6,6,9,6,5,5,3,5,3,5,5,3,4,5,4,5,5,3,4,5,2,2,4,2,8,5,5,5,5,3,4,3,5,4,6,4,5,4,3,2,3,4,2,2,4,5,6,6,2,4,4,6,3,5,5,4,6,3,4,3,3,3,5,6,2,3,2,3,5,6,7,8,4,6,6,6,6,6,6,8,5,5,5,5,5,2,2,2,2,7,6,6,6,6,6,6,4,6,7,7,7,7,5,5,5,4,4,4,4,4,4,7,4,5,5,5,5,2,2,2,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,2,10,8,5,4,5,5,4,3,2,4,4,3,5,5,5,2,2,2,4,3,4,4,4,3,6,11,3,3,4,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,6,7,5,5,6,4,4,5,6,2,3,5,5,6,6,6,7,5,6,5,5,5,6,5,8,5,5,4,8,4,0,10,12,3,2,2,4,7,5,8,6,2,3,3,4,5,2,4,2,5,7,4,5,5,6,5,6,5,6,6,2,2,4,5,4,4,7,6,6,6,7,6,5,7,7,3,3,6,5,8,7,8,6,8,6,6,6,7,6,10,6,6,5,3,5,3,5,6,3,5,6,5,6,5,3,5,6,2,2,5,3,9,6,6,6,6,3,5,3,6,5,7,5,5,5,3,2,3,5,2,2,5,5,6,7,2,5,4,7,3,6,6,4,7,3,5,3,3,3,6,6,2,3,2,4,6,7,7,9,4,6,6,6,6,6,6,9,6,6,6,6,6,3,3,3,3,7,7,8,8,8,8,8,4,8,7,7,7,7,6,6,6,5,5,5,5,5,5,8,5,5,5,5,5,2,2,2,2,5,6,6,6,6,6,6,6,6,6,6,6,6,5,6,5,6,5,2,11,9,6,5,6,5,5,4,2,4,4,3,5,5,6,2,2,2,4,4,4,4,5,3,7,12,3,3,4,3,3,3,3,3,3,4,2,3,3,4,3,3,3,4,3,7,7,5,5,6,5,5,6,6,2,2,5,6,7,6,7,7,5,7,5,5,5,6,6,8,6,5,5,9,4,0,11,13,3,2,3,4,8,6,9,7,2,3,3,5,5,2,5,2,6,8,4,6,6,6,6,6,6,7,6,2,2,4,6,4,5,8,7,7,7,8,6,6,7,8,3,3,6,6,9,8,8,6,8,7,6,6,8,7,11,7,6,6,4,6,4,6,6,3,5,6,5,6,6,4,5,6,2,2,5,3,10,6,6,6,6,4,5,4,6,6,8,6,6,5,3,3,3,5,2,2,5,6,7,7,3,5,5,8,4,7,7,5,8,4,5,3,3,3,7,7,3,3,2,4,7,8,8,10,5,7,7,7,7,7,7,10,7,6,6,6,6,3,3,3,3,8,8,8,8,8,8,8,5,8,8,8,8,8,6,6,6,5,5,5,5,5,5,9,5,6,6,6,6,2,2,2,2,6,6,6,6,6,6,6,7,6,6,6,6,6,6,6,6,7,5,2,12,10,6,5,6,6,5,4,2,5,5,3,6,6,7,2,2,2,4,4,5,5,5,3,7,13,4,4,4,4,3,4,3,4,4,5,3,4,4,4,4,4,4,4,4,8,8,6,6,7,5,5,6,7,3,3,6,6,8,7,8,8,6,8,6,6,5,7,6,9,6,6,6,10,5,0,12,14,3,3,3,5,8,6,10,7,2,3,3,5,6,3,5,2,6,9,4,6,7,7,6,7,6,7,7,2,3,5,6,5,5,9,7,7,7,9,7,6,8,9,3,3,7,6,10,8,9,7,9,7,7,6,9,8,12,7,7,7,4,6,4,6,7,4,6,7,5,7,6,4,6,7,3,3,6,3,11,7,7,7,7,4,5,4,7,6,9,6,6,6,4,3,4,5,3,3,6,6,8,8,3,5,5,9,4,7,7,5,9,4,6,4,4,4,7,7,3,4,3,4,7,9,9,11,5,7,7,7,7,7,7,10,7,7,7,7,7,3,3,3,3,9,8,9,9,9,9,9,5,9,9,9,9,9,7,7,7,6,6,6,6,6,6,10,5,6,6,6,6,3,3,3,3,6,7,7,7,7,7,7,7,7,7,7,7,7,6,7,6,7,5,3,13,11,7,5,7,7,6,4,3,5,5,4,6,6,7,2,2,3,5,5,5,5,6,4,8,14,4,4,5,4,4,4,3,4,4,5,3,4,4,4,4,4,4,4,4,8,9,6,6,8,6,6,7,8,3,3,6,7,9,7,8,9,6,8,6,6,6,8,7,10,6,6,6,11,5,0,13,16,3,3,3,5,9,7,11,8,2,3,3,6,6,3,6,3,7,9,5,7,7,7,7,7,7,8,7,3,3,5,7,5,6,9,8,8,8,9,7,7,9,9,3,3,8,7,11,9,10,7,10,8,8,7,9,9,13,8,7,7,4,7,4,7,7,4,6,7,6,7,7,4,7,7,3,3,6,3,11,7,7,7,7,4,6,4,7,6,9,6,7,6,4,3,4,6,3,3,6,7,8,9,3,6,5,9,5,7,8,6,9,4,6,4,4,4,8,8,3,4,3,5,7,9,9,12,6,8,8,8,8,8,8,11,8,7,7,7,7,3,3,3,3,9,9,10,10,10,10,10,6,10,9,9,9,9,7,7,7,6,6,6,6,6,6,10,6,7,7,7,7,3,3,3,3,7,7,7,7,7,7,7,8,7,7,7,7,7,7,7,7,8,6,3,14,11,8,6,7,7,6,5,3,6,6,4,7,7,8,2,2,3,5,5,6,6,6,4,9,16,4,4,5,4,4,4,4,5,4,6,3,4,4,5,4,5,4,5,5,9,9,7,7,8,6,6,8,8,3,3,7,7,9,8,9,10,7,9,7,7,6,8,7,11,7,7,6,12,6,0,14,17,4,3,3,6,10,7,12,9,3,4,4,6,6,3,6,3,7,10,5,7,8,8,8,8,7,9,8,3,3,6,7,6,6,10,9,8,9,10,8,7,9,10,3,4,8,7,11,10,11,8,11,8,8,7,10,9,14,8,8,8,5,7,5,7,8,4,7,8,6,8,7,5,7,8,3,3,6,3,13,8,8,8,8,5,6,5,7,7,10,7,7,7,4,3,4,6,3,3,7,7,9,9,3,6,6,10,5,8,8,6,10,5,7,4,4,4,8,9,3,4,3,5,8,10,10,12,6,9,9,9,9,9,9,12,9,8,8,8,8,3,3,3,3,10,10,11,11,11,11,11,6,11,10,10,10,10,8,8,8,7,7,7,7,7,7,11,6,7,7,7,7,3,3,3,3,7,8,8,8,8,8,8,8,8,7,7,7,7,7,8,7,9,6,3,15,13,8,6,8,8,7,5,3,6,6,4,7,7,8,3,2,3,6,5,6,6,6,4,9,17,5,5,6,5,4,5,4,5,5,6,3,5,5,5,5,5,5,5,5,10,10,7,8,9,7,6,8,9,3,3,7,7,10,9,10,10,7,10,8,7,7,9,8,12,8,7,7,13,6,0,15,18,4,3,4,6,11,8,13,9,3,4,4,6,7,3,6,3,8,11,5,8,8,8,8,9,8,9,9,3,3,6,8,6,7,11,9,9,9,11,8,8,10,11,4,4,9,8,12,11,12,9,12,9,9,8,11,10,15,9,9,8,5,8,5,8,8,5,7,8,7,8,8,5,7,8,3,3,7,4,13,8,8,8,8,5,6,5,8,7,11,7,8,7,4,3,4,7,3,3,7,8,9,10,3,7,6,11,5,8,9,6,11,5,7,5,5,5,9,9,4,5,3,6,8,11,11,13,7,9,9,9,9,9,9,13,9,8,8,8,8,4,4,4,4,11,11,12,12,12,12,12,7,12,11,11,11,11,9,9,8,7,7,7,7,7,7,12,7,8,8,8,8,3,3,3,3,8,8,8,8,8,8,8,9,9,8,8,8,8,8,8,8,9,7,3,16,13,9,6,9,8,7,5,3,7,7,4,8,8,9,3,3,3,6,6,7,6,7,5,10,18,5,5,6,5,5,5,4,5,5,6,4,5,5,5,5,5,5,6,5,11,11,8,8,9,7,7,9,10,4,4,8,8,11,9,10,11,8,10,8,8,7,9,8,13,8,8,7,14,7,0,16,19,4,4,4,6,11,8,13,10,3,4,4,7,7,3,7,3,9,11,6,8,9,9,9,9,8,10,9,3,3,6,8,6,7,12,10,10,10,12,9,8,11,12,4,4,9,8,13,11,12,9,12,10,9,9,12,10,16,10,9,9,5,8,5,8,9,5,8,9,7,9,8,5,8,9,3,3,7,4,14,9,9,9,9,5,7,5,8,8,12,8,8,8,5,4,5,7,4,4,8,8,10,11,4,7,7,12,6,9,10,7,12,5,8,5,5,5,9,10,4,5,3,6,9,11,12,14,7,10,10,10,10,10,10,14,10,9,9,9,9,4,4,4,4,12,11,12,12,12,12,12,7,12,12,12,12,12,9,9,9,8,8,8,8,8,8,13,7,8,8,8,8,3,3,3,3,8,9,9,9,9,9,9,9,9,8,8,8,8,8,9,8,10,7,3,17,14,9,7,9,9,8,6,3,7,7,5,8,8,10,3,3,3,6,6,7,7,7,5,11,19,5,5,7,5,5,5,5,6,5,7,4,5,5,6,5,6,5,6,6,11,12,9,9,10,8,7,9,10,4,4,8,9,11,10,11,12,8,11,9,8,7,10,9,13,9,8,8,15,7,0,17,20,4,4,4,7,12,9,14,10,3,4,4,7,8,4,7,3,9,12,6,9,9,10,9,10,9,10,10,3,4,7,9,7,8,12,10,10,10,12,9,9,11,13,4,4,10,9,14,12,13,10,13,10,10,9,12,11,17,10,10,9,6,9,6,9,10,5,8,9,8,9,9,6,8,10,4,4,8,4,15,10,9,9,9,5,7,6,9,8,12,8,9,8,5,4,5,8,4,4,8,9,11,11,4,8,7,12,6,10,10,7,12,6,8,5,5,5,10,11,4,5,4,6,10,12,12,15,8,10,10,10,10,10,10,15,10,9,9,9,9,4,4,4,4,12,12,13,13,13,13,13,7,13,12,12,12,12,10,10,9,8,8,8,8,8,8,14,8,9,9,9,9,4,4,4,4,9,10,9,9,9,9,9,10,9,9,9,9,9,9,9,9,10,8,4,18,15,10,7,10,9,8,6,4,8,8,5,9,9,10,3,3,4,7,6,8,7,8,5,11,20,5,5,7,6,5,5,5,6,6,7,4,6,6,6,6,6,6,6,6,12,12,9,9,11,8,8,10,11,4,4,9,9,12,10,11,13,9,11,9,9,8,11,10,14,9,9,8,16,7,0,18,22,5,4,4,7,13,9,15,11,3,5,5,8,8,4,8,4,10,13,6,9,10,10,10,10,9,11,10,4,4,7,9,7,8,13,11,11,11,13,10,9,12,13,5,5,10,9,15,13,14,10,14,11,11,10,13,12,18,11,10,10,6,9,6,9,10,5,9,10,8,10,9,6,9,10,4,4,8,4,16,10,10,10,10,6,7,6,9,9,13,9,9,8,5,4,5,8,4,4,9,9,11,12,4,8,8,13,6,10,11,8,13,6,9,5,6,5,11,11,4,5,4,7,10,13,13,16,8,11,11,11,11,11,11,16,11,10,10,10,10,5,5,5,5,13,13,14,14,14,14,14,8,14,13,13,13,13,10,10,10,9,9,9,9,9,9,14,8,9,9,9,9,4,4,4,4,9,10,10,10,10,10,10,11,10,9,9,9,9,9,10,9,11,8,4,19,16,11,7,10,10,8,6,4,8,8,5,10,9,11,3,3,4,7,7,8,8,8,6,12,22,6,6,7,6,6,6,5,6,6,8,4,6,6,6,6,6,6,7,6,13,13,10,10,11,9,8,11,12,4,4,9,10,13,11,12,13,9,12,10,9,8,11,10,15,10,9,9,17,8,0,19,23,5,4,5,8,13,10,16,12,3,5,5,8,9,4,8,4,10,14,7,10,10,11,10,11,10,12,11,4,4,8,10,8,8,14,12,11,12,14,11,10,13,14,5,5,11,10,15,13,15,11,15,11,11,10,14,12,18,11,11,10,6,10,6,10,11,6,9,11,9,11,10,6,9,11,4,4,9,5,17,11,10,11,11,6,8,6,10,9,14,9,10,9,6,4,6,9,4,4,9,10,12,13,4,9,8,14,7,11,11,8,14,6,9,6,6,6,11,12,5,6,4,7,11,14,14,17,9,12,12,12,12,12,12,16,12,11,11,11,11,5,5,5,5,14,13,15,15,15,15,15,8,15,14,14,14,14,11,11,11,9,9,9,9,9,9,15,9,10,10,10,10,4,4,4,4,10,11,10,10,10,10,10,11,11,10,10,10,10,10,11,10,12,9,4,20,17,11,8,11,10,9,7,4,8,8,6,10,10,11,4,3,4,8,7,8,8,9,6,13,23,6,6,8,6,6,6,6,7,6,8,5,6,6,7,6,7,6,7,7,13,14,10,10,12,9,9,11,12,5,5,10,10,14,12,13,14,10,13,10,10,9,12,11,16,10,10,9,18,8,0,20,24,5,5,5,8,14,10,17,12,4,5,5,9,9,4,8,4,11,14,7,10,11,11,11,11,10,12,11,4,4,8,10,8,9,14,12,12,12,15,11,10,13,15,5,5,12,10,16,14,15,11,15,12,12,11,14,13,20,12,11,11,7,11,7,10,11,6,10,11,9,11,10,7,10,11,4,4,9,5,18,11,11,11,11,6,8,7,10,10,15,9,10,9,6,5,6,9,5,4,10,10,13,13,5,9,8,14,7,11,12,8,14,7,10,6,6,6,12,12,5,6,4,7,11,14,15,18,9,12,12,12,12,12,12,17,12,11,11,11,11,5,5,5,5,15,14,15,15,15,15,15,9,15,15,15,15,15,11,11,11,10,10,10,10,10,10,16,9,10,10,10,10,4,4,4,4,10,11,11,11,11,11,11,12,11,10,10,10,10,10,12,10,12,9,4,21,18,12,8,11,11,9,7,4,9,9,6,11,10,12,4,3,4,8,8,9,8,9,6,14,24,6,6,8,7,6,6,6,7,6,9,5,7,7,7,7,7,7,7,7,14,15,11,11,13,10,9,12,13,5,5,11,11,14,12,13,15,10,13,11,10,9,13,11,17,11,10,10,18,9,0,21,25,5,5,5,8,15,11,18,13,4,5,5,9,10,5,9,4,11,15,7,11,11,12,11,12,11,13,12,4,5,9,11,8,9,15,13,13,13,15,12,11,14,16,5,5,12,11,17,15,16,12,16,13,12,11,15,14,20,13,12,12,7,11,7,11,12,6,10,12,10,12,11,7,10,12,4,4,9,5,18,12,12,12,12,7,9,7,11,10,15,10,11,10,6,5,6,10,5,5,10,11,13,14,5,10,9,15,7,12,13,9,15,7,10,6,7,6,12,13,5,6,5,8,12,15,15,19,9,13,13,13,13,13,13,18,13,12,12,12,12,5,5,5,5,15,15,16,16,16,16,16,9,16,15,15,15,15,12,12,12,10,10,10,10,10,10,17,10,11,11,11,11,4,4,4,4,11,12,12,12,12,12,12,12,12,11,11,11,11,11,12,11,13,10,4,22,19,12,9,12,12,10,7,4,9,9,6,11,11,12,4,4,5,8,8,9,9,10,6,14,25,7,7,9,7,6,7,6,7,7,9,5,7,7,8,7,7,7,8,7,15,15,11,11,13,10,10,12,14,5,5,11,11,15,13,14,16,11,14,11,11,10,13,12,18,11,11,10,19,9,0,22,26,6,5,5,9,15,11,18,13,4,6,6,9,10,5,9,4,12,16,8,12,12,12,12,13,11,13,13,4,5,9,11,9,10,16,14,13,14,16,12,12,15,16,6,6,13,11,18,15,17,13,17,13,13,12,16,14,21,13,12,12,7,12,7,11,12,7,11,12,10,12,11,7,11,12,5,5,10,5,19,12,12,12,12,7,9,7,12,11,16,10,11,10,7,5,7,10,5,5,11,11,14,15,5,10,9,16,8,12,13,9,16,7,11,7,7,7,13,14,5,7,5,8,12,16,16,19,10,14,14,14,14,14,14,19,14,12,12,12,12,6,6,6,6,16,15,17,17,17,17,17,10,17,16,16,16,16,12,13,12,11,11,11,11,11,11,18,10,11,11,11,11,5,5,5,5,11,12,12,12,12,12,12,13,13,12,12,12,12,11,13,11,14,10,5,24,20,13,9,12,12,10,8,5,10,10,6,12,11,13,4,4,5,9,8,10,9,10,7,15,26,7,7,9,7,7,7,6,8,7,9,5,7,7,8,7,8,7,8,8,15,16,12,12,14,11,10,13,14,5,5,12,12,16,14,15,16,11,15,12,11,10,14,12,18,12,11,11,20,10,0,23,28,6,5,6,9,16,12,19,14,4,6,6,10,11,5,10,5,12,16,8,12,13,13,12,13,12,14,13,5,5,9,12,9,10,17,14,14,14,17,13,12,15,17,6,6,13,12,19,16,18,13,18,14,13,12,17,15,22,14,13,13,8,12,8,12,13,7,11,13,10,13,12,8,11,13,5,5,10,5,20,13,13,13,13,7,10,8,12,11,17,11,12,11,7,5,7,10,5,5,11,12,14,16,5,10,10,17,8,13,14,10,17,8,11,7,7,7,14,14,5,7,5,9,13,16,17,20,10,14,14,14,14,14,14,20,14,13,13,13,13,6,6,6,6,17,16,18,18,18,18,18,10,18,17,17,17,17,13,13,13,11,11,11,11,11,11,18,10,12,12,12,12,5,5,5,5,12,13,13,13,13,13,13,14,13,12,12,12,12,12,13,12,14,10,5,25,21,13,10,13,13,11,8,5,10,10,7,12,12,14,4,4,5,9,9,10,10,11,7,16,28,7,7,9,8,7,7,7,8,7,10,5,8,8,8,8,8,8,9,8,16,17,12,12,14,11,11,13,15,6,6,12,12,16,14,15,17,12,15,12,12,11,14,13,19,12,12,11,21,10,0,24,29,6,5,6,10,17,12,20,15,4,6,6,10,11,5,10,5,13,17,9,13,13,13,13,14,12,15,14,5,5,10,12,10,11,17,15,14,15,17,13,13,16,18,6,6,14,12,19,17,18,14,18,14,14,13,17,15,23,14,14,13,8,13,8,12,14,7,12,13,11,13,12,8,12,13,5,5,11,6,21,13,13,13,13,8,10,8,13,12,17,11,12,11,7,6,7,11,5,5,11,12,15,16,6,11,10,17,8,14,14,10,17,8,12,7,7,7,14,15,6,7,5,9,14,17,18,21,11,15,15,15,15,15,15,21,15,13,13,13,13,6,6,6,6,17,17,18,18,18,18,18,11,18,17,17,17,17,14,14,13,12,12,12,12,12,12,19,11,12,12,12,12,5,5,5,5,12,13,13,13,13,13,13,14,14,13,13,13,13,12,14,12,15,11,5,26,21,14,10,14,13,11,8,5,11,11,7,13,12,14,4,4,5,10,9,11,10,11,7,16,29,8,8,10,8,7,8,7,8,8,10,6,8,8,9,8,8,8,9,8,17,17,13,13,15,12,11,14,16,6,6,13,13,17,15,16,18,12,16,13,12,11,15,13,20,13,12,12,22,11,0,25,30,6,6,6,10,18,13,21,15,5,7,7,11,12,5,11,5,13,18,9,13,14,14,14,14,13,15,14,5,5,10,13,10,11,18,15,15,15,18,14,13,17,19,6,6,14,13,20,18,19,14,19,15,15,13,18,16,24,15,14,14,8,13,8,13,14,8,12,14,11,14,13,8,12,14,5,5,11,6,22,14,14,14,14,8,10,8,13,12,18,12,13,12,7,6,7,11,6,6,12,13,16,17,6,11,11,18,9,14,15,11,18,8,12,8,8,8,15,16,6,8,5,9,14,18,18,22,11,15,15,15,15,15,15,22,15,14,14,14,14,6,6,6,6,18,18,19,19,19,19,19,11,19,18,18,18,18,14,14,14,12,12,12,12,12,12,20,11,13,13,13,13,5,5,5,5,13,14,14,14,14,14,14,15,14,13,13,13,13,13,15,13,15,11,5,27,23,15,10,14,14,12,9,5,11,11,7,13,13,15,5,4,5,10,9,11,11,12,8,17,30,8,8,10,8,8,8,7,9,8,11,6,8,8,9,8,9,8,9,9,18,18,13,13,16,12,11,15,16,6,6,13,13,18,15,17,19,13,17,13,13,12,16,14,21,14,13,12,23,11,0,26,31,7,6,6,10,18,13,22,16,5,7,7,11,12,6,11,5,14,19,9,14,14,15,14,15,13,16,15,5,6,11,13,11,11,19,16,16,16,19,14,14,17,19,7,7,15,13,21,18,20,15,20,16,15,14,19,17,25,16,15,14,9,14,9,13,15,8,12,14,12,14,13,9,13,14,6,6,12,6,23,15,14,14,14,8,11,9,14,13,19,12,13,12,8,6,8,12,6,6,12,13,16,18,6,12,11,19,9,15,16,11,19,9,13,8,8,8,15,16,6,8,6,10,15,19,19,23,12,16,16,16,16,16,16,22,16,14,14,14,14,7,7,7,7,19,18,20,20,20,20,20,11,20,19,19,19,19,15,15,14,12,12,12,12,12,12,21,12,13,13,13,13,6,6,6,6,13,15,14,14,14,14,14,15,15,14,14,14,14,13,15,13,16,12,6,28,23,15,11,15,14,12,9,6,12,12,8,14,13,15,5,4,6,10,10,12,11,12,8,18,31,8,8,11,9,8,8,8,9,8,11,6,9,9,9,9,9,9,10,9,18,19,14,14,16,13,12,15,17,6,6,14,14,19,16,17,19,13,17,14,13,12,16,15,22,14,13,13,24,11,0,27,32,7,6,7,11,19,14,23,17,5,7,7,12,13,6,11,6,14,19,10,14,15,15,15,15,14,16,15,6,6,11,14,11,12,20,17,16,17,20,15,14,18,20,7,7,16,14,22,19,21,15,21,16,16,14,20,17,26,16,15,15,9,14,9,14,15,8,13,15,12,15,14,9,13,15,6,6,12,6,24,15,15,15,15,9,11,9,14,13,20,13,14,13,8,6,8,12,6,6,13,14,17,18,6,12,11,19,9,15,16,11,19,9,13,8,8,8,16,17,6,8,6,10,15,19,20,24,12,17,17,17,17,17,17,23,17,15,15,15,15,7,7,7,7,20,19,21,21,21,21,21,12,21,20,20,20,20,15,15,15,13,13,13,13,13,13,22,12,14,14,14,14,6,6,6,6,14,15,15,15,15,15,15,16,15,14,14,14,14,14,16,14,17,12,6,29,24,16,11,15,15,13,9,6,12,12,8,14,14,16,5,5,6,11,10,12,11,12,8,18,32,9,9,11,9,8,9,8,9,9,12,6,9,9,10,9,9,9,10,9,19,20,14,15,17,13,12,16,17,7,7,14,14,19,17,18,20,14,18,15,14,13,17,15,23,15,14,13,25,12,0,28,34,7,6,7,11,20,14,24,17,5,7,7,12,13,6,12,6,15,20,10,15,15,16,15,16,14,17,16,6,6,11,14,11,12,20,17,17,17,20,16,15,19,21,7,7,16,14,23,20,22,16,22,17,16,15,20,18,27,17,16,15,9,15,9,14,16,8,13,16,13,16,14,9,14,15,6,6,13,7,25,16,15,16,16,9,12,9,15,14,20,13,14,13,8,6,8,13,6,6,13,14,18,19,7,13,12,20,10,16,17,12,20,9,14,9,9,8,17,17,7,8,6,10,16,20,20,25,13,17,17,17,17,17,17,24,17,16,16,16,16,7,7,7,7,20,20,22,22,22,22,22,12,22,20,20,20,20,16,16,16,13,13,13,13,13,13,22,13,14,14,14,14,6,6,6,6,14,16,15,15,15,15,15,17,16,15,15,15,15,14,16,14,17,13,6,30,25,16,12,16,15,13,10,6,12,12,8,15,14,17,5,5,6,11,11,12,12,13,9,19,34,9,9,11,9,9,9,8,10,9,12,7,9,9,10,9,10,9,10,10,20,20,15,15,18,14,13,16,18,7,7,15,15,20,17,19,21,14,19,15,14,13,18,16,23,15,14,14,26,12,0,29,35,7,7,7,12,20,15,24,18,5,8,8,12,13,6,12,6,15,21,10,15,16,16,16,16,15,18,17,6,6,12,15,12,13,21,18,17,18,21,16,15,19,22,7,7,17,15,24,20,22,17,22,17,17,15,21,19,28,17,16,16,9,15,9,15,16,9,14,16,13,16,15,10,14,16,6,6,13,7,25,16,16,16,16,9,12,10,15,14,21,14,15,14,9,7,9,13,7,7,14,15,18,20,7,13,12,21,10,16,17,12,21,10,14,9,9,9,17,18,7,9,6,11,16,21,21,26,13,18,18,18,18,18,18,25,18,16,16,16,16,7,7,7,7,21,20,22,22,22,22,22,13,22,21,21,21,21,16,17,16,14,14,14,14,14,14,23,13,15,15,15,15,6,6,6,6,15,16,16,16,16,16,16,17,17,15,15,15,15,15,17,15,18,13,6,31,26,17,12,16,16,14,10,6,13,13,8,15,15,17,5,5,6,11,11,13,12,13,9,20,35,9,9,12,10,9,9,8,10,9,13,7,10,10,10,10,10,10,11,10,20,21,16,16,18,14,13,17,19,7,7,15,15,21,18,19,22,15,19,16,15,14,18,16,24,16,15,14,27,13,0,30,36,8,7,7,12,21,15,25,18,5,8,8,13,14,6,13,6,16,21,11,16,16,17,16,17,15,18,17,6,6,12,15,12,13,22,18,18,18,22,17,16,20,22,8,8,17,15,24,21,23,17,23,18,18,16,22,19,29,18,17,16,10,16,10,15,17,9,14,17,14,17,15,10,15,16,6,6,13,7,26,17,17,17,17,10,12,10,16,15,22,14,15,14,9,7,9,14,7,7,14,15,19,20,7,14,13,22,10,17,18,13,22,10,15,9,9,9,18,19,7,9,6,11,17,22,22,27,13,18,18,18,18,18,18,26,18,17,17,17,17,8,8,8,8,22,21,23,23,23,23,23,13,23,22,22,22,22,17,17,17,14,14,14,14,14,14,24,14,15,15,15,15,6,6,6,6,16,17,17,17,17,17,17,18,17,16,16,16,16,15,17,15,18,14,6,32,27,18,12,17,16,14,11,6,13,13,9,16,15,18,6,5,6,12,11,13,13,14,9,20,36,10,10,12,10,9,10,9,10,10,13,7,10,10,11,10,10,10,11,10,21,22,16,16,19,15,14,17,19,7,7,16,16,21,18,20,22,15,20,16,15,14,19,17,25,16,15,14,28,13,0,31,37,8,7,8,12,22,16,26,19,6,8,8,13,14,7,13,6,16,22,11,16,17,17,17,18,16,19,18,6,7,13,16,13,14,22,19,19,19,23,17,16,21,23,8,8,18,16,25,22,24,18,24,19,18,17,22,20,30,19,18,17,10,16,10,16,18,9,15,17,14,17,16,10,15,17,7,7,14,7,27,17,17,17,17,10,13,10,16,15,22,15,16,15,9,7,9,14,7,7,15,16,19,21,7,14,13,22,11,17,18,13,22,10,15,9,10,9,18,19,7,9,7,11,17,22,23,27,14,19,19,19,19,19,19,27,19,17,17,17,17,8,8,8,8,23,22,24,24,24,24,24,14,24,23,23,23,23,18,18,17,15,15,15,15,15,15,25,14,16,16,16,16,7,7,7,7,16,17,17,17,17,17,17,18,18,16,16,16,16,16,18,16,19,14,7,33,28,18,13,18,17,15,11,7,14,14,9,16,16,18,6,5,7,12,12,14,13,14,9,21,37,10,10,13,10,10,10,9,11,10,13,7,10,10,11,10,11,10,12,11,22,23,17,17,20,15,14,18,20,7,7,16,17,22,19,21,23,16,21,17,16,15,19,17,26,17,16,15,29,14,0,32,38,8,7,8,13,23,16,27,20,6,8,8,14,15,7,14,7,17,23,11,17,18,18,17,18,16,19,18,7,7,13,16,13,14,23,20,19,20,23,18,17,22,24,8,8,18,16,26,23,25,18,25,19,19,17,23,21,31,19,18,18,10,17,10,16,18,10,15,18,15,18,16,11,16,17,7,7,14,8,28,18,18,18,18,10,13,11,17,16,23,15,16,15,10,7,10,15,7,7,15,16,20,22,7,15,14,23,11,18,19,14,23,11,16,10,10,10,19,20,8,10,7,12,18,23,23,28,14,20,20,20,20,20,20,28,20,18,18,18,18,8,8,8,8,23,23,25,25,25,25,25,14,25,23,23,23,23,18,18,18,15,15,15,15,15,15,26,15,16,16,16,16,7,7,7,7,17,18,18,18,18,18,18,19,18,17,17,17,17,16,19,16,20,15,7,34,29,19,13,18,18,15,11,7,14,14,9,17,16,19,6,5,7,13,12,14,14,15,10,22,38,10,10,13,11,10,10,9,11,10,14,8,11,11,11,11,11,11,12,11,23,23,17,17,20,16,15,19,21,8,8,17,17,23,20,21,24,16,21,17,16,15,20,18,27,17,16,15,29,14,0,33,40,8,7,8,13,23,17,28,20,6,9,9,14,15,7,14,7,18,24,12,17,18,18,18,19,17,20,19,7,7,13,17,13,15,24,20,20,20,24,18,17,22,25,8,8,19,17,27,23,25,19,25,20,19,18,24,21,32,20,19,18,11,17,11,17,19,10,16,18,15,18,17,11,16,18,7,7,15,8,29,18,18,18,18,11,14,11,17,16,24,16,17,16,10,8,10,15,7,7,16,17,21,22,8,15,14,24,12,19,20,14,24,11,16,10,10,10,20,21,8,10,7,12,19,24,24,29,15,20,20,20,20,20,20,29,20,18,18,18,18,8,8,8,8,24,23,25,25,25,25,25,14,25,24,24,24,24,19,19,18,16,16,16,16,16,16,26,15,17,17,17,17,7,7,7,7,17,18,18,18,18,18,18,20,19,17,17,17,17,17,19,17,20,15,7,35,30,19,14,19,18,16,12,7,15,15,10,17,17,20,6,6,7,13,13,15,14,15,10,22,40,11,11,13,11,10,11,10,11,11,14,8,11,11,12,11,11,11,12,11,23,24,18,18,21,16,15,19,21,8,8,17,18,24,20,22,24,17,22,18,17,16,21,19,28,18,17,16,30,15,0,34,41,9,8,8,14,24,17,29,21,6,9,9,14,16,7,14,7,18,24,12,18,19,19,18,19,17,21,19,7,7,14,17,14,15,25,21,20,21,25,19,18,23,25,9,9,20,17,28,24,26,19,26,21,20,18,25,22,33,20,19,19,11,18,11,17,19,10,16,19,15,19,17,11,17,18,7,7,15,8,30,19,19,19,19,11,14,11,18,17,25,16,17,16,10,8,10,15,8,8,16,17,21,23,8,16,14,24,12,19,20,14,24,11,17,10,11,10,20,21,8,10,7,13,19,24,25,30,15,21,21,21,21,21,21,29,21,19,19,19,19,9,9,9,9,25,24,26,26,26,26,26,15,26,25,25,25,25,19,19,19,16,16,16,16,16,16,27,15,17,17,17,17,7,7,7,7,18,19,19,19,19,19,19,20,19,18,18,18,18,17,20,17,21,15,7,36,31,20,14,19,19,16,12,7,15,15,10,18,17,20,6,6,7,13,13,15,14,16,10,23,41,11,11,14,11,10,11,10,12,11,15,8,11,11,12,11,12,11,13,12,24,25,18,18,21,17,16,20,22,8,8,18,18,24,21,23,25,17,23,18,17,16,21,19,28,18,17,16,31,15,0,35,42,9,8,8,14,25,18,29,21,6,9,9,15,16,8,15,7,19,25,12,18,19,20,19,20,18,21,20,7,8,14,18,14,15,25,22,21,22,25,19,18,24,26,9,9,20,18,28,25,27,20,27,21,20,19,25,23,34,21,20,19,11,18,11,18,20,11,17,19,16,19,18,12,17,19,7,7,16,8,31,20,19,20,20,11,14,12,18,17,25,17,18,16,10,8,10,16,8,8,17,18,22,24,8,16,15,25,12,20,21,15,25,12,17,11,11,11,21,22,8,11,8,13,20,25,26,31,16,22,22,22,22,22,22,30,22,19,19,19,19,9,9,9,9,25,25,27,27,27,27,27,15,27,25,25,25,25,20,20,20,17,17,17,17,17,17,28,16,18,18,18,18,7,7,7,7,18,20,19,19,19,19,19,21,20,18,18,18,18,18,20,18,22,16,7,37,32,20,14,20,19,16,12,7,16,16,10,18,18,21,7,6,8,14,13,16,15,16,11,24,42,11,11,14,12,11,11,10,12,11,15,8,12,12,13,12,12,12,13,12,25,25,19,19,22,17,16,20,23,8,8,18,19,25,21,23,26,18,23,19,18,16,22,20,29,19,18,17,32,15,0,36,43,9,8,9,14,25,19,30,22,7,9,9,15,17,8,15,7,19,26,13,19,20,20,19,20,18,22,21,7,8,15,18,15,16,26,22,21,22,26,20,19,24,27,9,9,21,18,29,25,28,21,28,22,21,19,26,23,35,22,20,20,12,19,12,18,20,11,17,20,16,20,18,12,18,20,8,8,16,9,32,20,20,20,20,12,15,12,19,18,26,17,18,17,11,8,11,16,8,8,17,18,23,24,8,16,15,26,13,20,21,15,26,12,18,11,11,11,21,22,9,11,8,13,20,26,26,32,16,22,22,22,22,22,22,31,22,20,20,20,20,9,9,9,9,26,25,28,28,28,28,28,16,28,26,26,26,26,20,21,20,17,17,17,17,17,17,29,16,18,18,18,18,8,8,8,8,19,20,20,20,20,20,20,21,21,19,19,19,19,18,21,18,22,16,8,39,32,21,15,20,20,17,13,8,16,16,11,19,18,21,7,6,8,14,14,16,15,17,11,24,43,12,12,15,12,11,12,10,12,12,16,9,12,12,13,12,12,12,13,12,25,26,19,19,23,18,17,21,23,9,9,19,19,26,22,24,27,18,24,19,18,17,23,20,30,19,18,17,33,16,0,37,44,9,8,9,15,26,19,31,23,7,10,10,16,17,8,16,8,20,26,13,19,20,21,20,21,19,23,21,8,8,15,19,15,16,27,23,22,23,27,21,19,25,28,9,9,21,19,30,26,28,21,28,22,22,20,27,24,36,22,21,20,12,19,12,19,21,11,18,21,17,21,19,12,18,20,8,8,17,9,32,21,20,21,21,12,15,12,19,18,27,18,19,17,11,8,11,17,8,8,18,19,23,25,9,17,16,27,13,21,22,16,27,12,18,11,11,11,22,23,9,11,8,14,21,27,27,33,17,23,23,23,23,23,23,32,23,21,21,21,21,9,9,9,9,27,26,28,28,28,28,28,16,28,27,27,27,27,21,21,21,18,18,18,18,18,18,30,17,19,19,19,19,8,8,8,8,19,21,20,20,20,20,20,22,21,19,19,19,19,19,21,19,23,17,8,40,33,22,15,21,20,17,13,8,17,17,11,20,19,22,7,6,8,15,14,17,16,17,11,25,44,12,12,15,12,11,12,11,13,12,16,9,12,12,13,12,13,12,14,13,26,27,20,20,23,18,17,22,24,9,9,19,20,26,23,25,27,19,25,20,19,17,23,21,31,20,19,18,34,16,0,38,46,10,9,9,15,27,20,32,23,7,10,10,16,18,8,16,8,20,27,13,20,21,21,21,22,19,23,22,8,8,15,19,15,17,27,23,23,23,28,21,20,26,28,10,10,22,19,31,27,29,22,29,23,22,20,28,24,37,23,22,21,12,20,12,19,22,12,18,21,17,21,19,13,19,21,8,8,17,9,33,21,21,21,21,12,16,13,20,19,28,18,19,18,11,9,11,17,9,9,18,19,24,26,9,17,16,27,13,21,23,16,27,13,19,12,12,12,22,24,9,12,8,14,21,27,28,34,17,23,23,23,23,23,23,33,23,21,21,21,21,10,10,10,10,28,27,29,29,29,29,29,17,29,28,28,28,28,22,22,21,18,18,18,18,18,18,30,17,19,19,19,19,8,8,8,8,20,21,21,21,21,21,21,23,22,20,20,20,20,19,22,19,23,17,8,41,34,22,16,22,21,18,13,8,17,17,11,20,19,23,7,6,8,15,14,17,16,17,12,26,46,12,12,15,13,12,12,11,13,12,16,9,13,13,14,13,13,13,14,13,27,28,20,20,24,19,17,22,25,9,9,20,20,27,23,25,28,19,25,20,19,18,24,21,32,21,19,18,35,17,0,39,47,10,9,9,16,27,20,33,24,7,10,10,17,18,8,17,8,21,28,14,20,21,22,21,22,20,24,22,8,8,16,20,16,17,28,24,23,24,28,22,20,26,29,10,10,23,20,32,27,30,22,30,24,23,21,28,25,38,23,22,21,13,20,13,20,22,12,19,22,18,22,20,13,19,21,8,8,17,9,34,22,21,22,22,13,16,13,20,19,28,18,20,18,12,9,12,18,9,9,19,20,24,26,9,18,16,28,14,22,23,17,28,13,19,12,12,12,23,24,9,12,8,14,22,28,28,35,18,24,24,24,24,24,24,34,24,22,22,22,22,10,10,10,10,28,27,30,30,30,30,30,17,30,28,28,28,28,22,22,22,19,19,19,19,19,19,31,18,20,20,20,20,8,8,8,8,20,22,21,21,21,21,21,23,22,20,20,20,20,20,23,20,24,18,8,42,35,23,16,22,21,18,14,8,17,17,11,21,20,23,7,7,8,15,15,17,17,18,12,26,47,13,13,16,13,12,13,11,14,13,17,9,13,13,14,13,14,13,15,14,27,28,21,21,25,19,18,23,25,9,9,20,21,28,24,26,29,20,26,21,20,18,24,22,33,21,20,19,36,17,0,40,48,10,9,10,16,28,21,34,24,7,10,10,17,19,9,17,8,21,29,14,21,22,22,22,23,20,24,23,8,9,16,20,16,18,29,25,24,25,29,22,21,27,30,10,10,23,20,32,28,31,23,31,24,23,21,29,26,39,24,23,22,13,21,13,20,23,12,19,22,18,22,20,13,20,22,8,8,18,9,35,22,22,22,22,13,17,13,21,20,29,19,20,19,12,9,12,18,9,9,19,20,25,27,9,18,17,29,14,23,24,17,29,13,20,12,12,12,24,25,10,12,9,15,23,29,29,35,18,25,25,25,25,25,25,35,25,22,22,22,22,10,10,10,10,29,28,31,31,31,31,31,18,31,29,29,29,29,23,23,22,19,19,19,19,19,19,32,18,20,20,20,20,8,8,8,8,21,22,22,22,22,22,22,24,23,21,21,21,21,20,23,20,25,18,8,43,36,23,17,23,22,19,14,8,18,18,12,21,20,24,7,7,9,16,15,18,17,18,12,27,48,13,13,16,13,12,13,12,14,13,17,9,13,13,14,13,14,13,15,14,28,29,21,21,25,20,18,23,26,10,10,21,21,28,25,27,30,20,27,21,20,19,25,22,33,22,20,19,37,18,0,41,49,10,9,10,16,29,21,34,25,7,11,11,17,19,9,17,8,22,29,15,21,22,23,22,23,21,25,23,8,9,17,21,17,18,30,25,24,25,30,23,21,28,31,10,10,24,21,33,29,31,23,31,25,24,22,30,26,40,25,23,23,13,22,13,21,23,12,20,23,19,23,21,14,20,22,9,9,18,10,36,23,23,23,23,13,17,14,21,20,30,19,21,19,12,9,12,19,9,9,20,21,26,28,10,19,17,30,14,23,24,17,30,14,20,12,13,12,24,26,10,12,9,15,23,29,30,36,18,25,25,25,25,25,25,35,25,23,23,23,23,10,10,10,10,30,29,31,31,31,31,31,18,31,30,30,30,30,23,23,23,20,20,20,20,20,20,33,19,21,21,21,21,9,9,9,9,21,23,23,23,23,23,23,24,23,21,21,21,21,21,24,21,25,19,9,44,37,24,17,23,23,19,14,9,18,18,12,22,21,24,8,7,9,16,16,18,17,19,13,28,49,13,13,17,14,13,13,12,14,13,18,10,14,14,15,14,14,14,15,14,29,30,22,22,26,20,19,24,26,10,10,22,22,29,25,27,30,21,27,22,21,19,26,23,34,22,21,20,38,18,0,42,50,11,9,10,17,30,22,35,26,8,11,11,18,19,9,18,9,22,30,15,22,23,23,23,24,21,26,24,9,9,17,21,17,19,30,26,25,26,31,23,22,28,31,11,11,24,21,34,30,32,24,32,25,25,22,30,27,41,25,24,23,14,22,14,21,24,13,20,23,19,23,22,14,21,23,9,9,19,10,37,23,23,23,23,13,17,14,22,21,30,20,21,20,13,10,13,19,9,9,20,21,26,28,10,19,18,30,15,24,25,18,30,14,21,13,13,13,25,26,10,13,9,16,24,30,31,37,19,26,26,26,26,26,26,36,26,23,23,23,23,11,11,11,11,31,30,32,32,32,32,32,18,32,30,30,30,30,24,24,23,20,20,20,20,20,20,34,19,22,22,22,22,9,9,9,9,22,23,23,23,23,23,23,25,24,22,22,22,22,21,24,21,26,19,9,45,38,25,17,24,23,20,15,9,19,19,12,22,21,25,8,7,9,17,16,19,18,19,13,28,50,14,14,17,14,13,14,12,15,14,18,10,14,14,15,14,15,14,16,15,30,31,22,23,26,21,19,24,27,10,10,22,22,30,26,28,31,21,28,23,21,20,26,24,35,23,21,20,39,18,0,43,52,11,10,10,17,30,22,36,26,8,11,11,18,20,9,18,9,23,31,15,23,24,24,23,24,22,26,25,9,9,17,22,17,19,31,26,26,26,31,24,22,29,32,11,11,25,22,35,30,33,25,33,26,25,23,31,28,42,26,24,24,14,23,14,22,24,13,21,24,20,24,22,14,21,23,9,9,19,10,38,24,24,24,24,14,18,14,23,21,31,20,22,20,13,10,13,20,10,10,21,22,27,29,10,20,18,31,15,24,26,18,31,14,21,13,13,13,25,27,10,13,9,16,24,31,31,38,19,26,26,26,26,26,26,37,26,24,24,24,24,11,11,11,11,31,30,33,33,33,33,33,19,33,31,31,31,31,24,25,24,21,21,21,21,21,21,34,20,22,22,22,22,9,9,9,9,22,24,24,24,24,24,24,25,25,23,23,23,23,22,25,22,26,20,9,46,39,25,18,24,24,20,15,9,19,19,13,23,22,26,8,7,9,17,16,19,18,20,13,29,52,14,14,18,14,13,14,12,15,14,19,10,14,14,15,14,15,14,16,15,30,31,23,23,27,21,20,25,28,10,10,23,23,31,26,29,32,22,29,23,22,20,27,24,36,23,22,21,40,19,0,44,53,11,10,11,18,31,23,37,27,8,11,11,19,20,10,19,9,23,31,16,23,24,25,24,25,22,27,25,9,10,18,22,18,19,32,27,26,27,32,24,23,30,33,11,11,25,22,36,31,34,25,34,27,26,23,32,28,43,26,25,24,14,23,14,22,25,13,21,24,20,24,23,15,22,24,9,9,20,10,39,25,24,25,25,14,18,15,23,22,32,21,22,21,13,10,13,20,10,10,21,22,28,30,10,20,19,32,15,25,26,19,32,15,22,13,14,13,26,27,10,13,10,16,25,32,32,39,20,27,27,27,27,27,27,38,27,24,24,24,24,11,11,11,11,32,31,34,34,34,34,34,19,34,32,32,32,32,25,25,25,21,21,21,21,21,21,35,20,23,23,23,23,9,9,9,9,23,25,24,24,24,24,24,26,25,23,23,23,23,22,26,22,27,20,9,47,40,26,18,25,24,21,15,9,20,20,13,23,22,26,8,7,10,17,17,20,19,20,13,30,53,14,14,18,15,14,14,13,15,14,19,10,15,15,16,15,15,15,16,15,31,32,24,24,28,22,20,26,28,11,11,23,24,31,27,29,33,22,29,24,22,21,28,25,37,24,22,21,41,19,0,45,54,11,10,11,18,32,23,38,28,8,12,12,19,21,10,19,9,24,32,16,24,25,25,24,26,23,27,26,9,10,18,23,18,20,32,28,27,28,33,25,24,30,34,11,11,26,23,37,32,35,26,35,27,26,24,33,29,44,27,26,25,15,24,15,23,25,14,22,25,20,25,23,15,22,24,10,10,20,11,39,25,25,25,25,14,19,15,24,22,33,21,23,21,13,10,13,20,10,10,21,23,28,30,10,21,19,32,16,25,27,19,32,15,22,14,14,14,27,28,11,14,10,17,25,32,33,40,20,28,28,28,28,28,28,39,28,25,25,25,25,11,11,11,11,33,32,35,35,35,35,35,20,35,33,33,33,33,26,26,25,22,22,22,22,22,22,36,20,23,23,23,23,10,10,10,10,23,25,25,25,25,25,25,27,26,24,24,24,24,23,26,23,28,20,10,48,41,26,19,26,25,21,16,10,20,20,13,24,23,27,8,8,10,18,17,20,19,21,14,30,54,14,15,18,15,14,14,13,16,15,19,11,15,15,16,15,16,15,17,16,32,33,24,24,28,22,21,26,29,11,11,24,24,32,28,30,33,23,30,24,23,21,28,25,38,24,23,22,41,20,0,46,55,12,10,11,18,32,24,39,28,8,12,12,20,21,10,20,9,24,33,16,24,25,26,25,26,23,28,26,9,10,19,23,19,20,33,28,27,28,33,25,24,31,34,12,12,27,23,37,32,35,26,35,28,27,25,33,30,45,28,26,25,15,24,15,24,26,14,22,26,21,26,24,15,23,25,10,10,21,11,40,26,25,26,26,15,19,16,24,23,33,22,23,22,14,11,14,21,10,10,22,23,29,31,11,21,19,33,16,26,27,20,33,15,23,14,14,14,27,29,11,14,10,17,26,33,34,41,21,28,28,28,28,28,28,40,28,25,25,25,25,12,12,12,12,33,32,35,35,35,35,35,20,35,33,33,33,33,26,26,26,22,22,22,22,22,22,37,21,24,24,24,24,10,10,10,10,24,26,25,25,25,25,25,27,26,24,24,24,24,23,27,23,28,21,10,49,41,27,19,26,25,22,16,10,21,21,13,24,23,27,9,8,10,18,17,21,20,21,14,31,55,15,15,19,15,14,15,13,16,15,20,11,15,16,16,15,16,15,17,16,32,33,25,25,29,23,21,27,30,11,11,24,25,33,28,31,34,23,31,25,24,22,29,26,38,25,23,22,42,20,0,47,56,12,11,11,19,33,24,39,29,9,12,12,20,22,10,20,10,25,34,17,25,26,26,25,27,24,29,27,10,10,19,24,19,21,34,29,28,29,34,26,25,32,35,12,12,27,24,38,33,36,27,36,28,27,25,34,30,46,28,27,26,15,25,15,24,27,14,23,26,21,26,24,16,23,25,10,10,21,11,41,26,26,26,26,15,19,16,25,23,34,22,24,22,14,11,14,21,11,11,22,24,29,32,11,21,20,34,16,26,28,20,34,16,23,14,15,14,28,29,11,14,10,17,26,34,34,42,21,29,29,29,29,29,29,41,29,26,26,26,26,12,12,12,12,34,33,36,36,36,36,36,21,36,34,34,34,34,27,27,26,23,23,23,23,23,23,38,21,24,24,24,24,10,10,10,10,24,26,26,26,26,26,26,28,27,25,25,25,25,24,27,24,29,21,10,50,42,27,19,27,26,22,17,10,21,21,14,25,24,28,9,8,10,19,18,21,20,22,14,32,56,15,15,19,16,14,15,14,16,15,20,11,16,16,17,16,16,16,17,16,33,34,25,25,30,23,22,27,30,11,11,25,25,33,29,31,35,24,31,25,24,22,29,26,39,25,24,23,43,21,0,48,58,12,11,12,19,34,25,40,29,9,13,13,20,22,10,20,10,26,34,17,25,26,27,26,27,24,29,27,10,10,19,24,19,21,35,30,29,30,35,27,25,32,36,12,12,28,24,39,34,37,27,37,29,28,26,35,31,47,29,27,26,16,25,16,25,27,15,23,27,22,27,25,16,24,26,10,10,22,11,42,27,26,27,27,15,20,16,25,24,35,23,24,23,14,11,14,22,11,11,23,24,30,32,11,22,20,35,17,27,29,20,35,16,24,15,15,15,28,30,11,15,10,18,27,34,35,42,22,30,30,30,30,30,30,42,30,27,27,27,27,12,12,12,12,35,34,37,37,37,37,37,21,37,35,35,35,35,27,27,27,23,23,23,23,23,23,38,22,25,25,25,25,10,10,10,10,25,27,26,26,26,26,26,28,27,25,25,25,25,24,28,24,30,22,10,51,43,28,20,27,26,23,17,10,21,21,14,25,24,29,9,8,10,19,18,21,20,22,15,32,58,15,16,20,16,15,15,14,17,16,21,11,16,16,17,16,17,16,18,17,34,35,26,26,30,24,22,28,31,12,12,25,26,34,29,32,36,24,32,26,25,23,30,27,40,26,24,23,44,21,0,49,59,12,11,12,20,35,25,41,30,9,13,13,21,23,11,21,10,26,35,17,26,27,27,27,28,25,30,28,10,11,20,25,20,22,35,30,29,30,36,27,26,33,37,13,13,28,25,40,35,38,28,38,30,29,26,35,32,48,29,28,27,16,26,16,25,28,15,24,27,22,27,25,16,24,27,10,10,22,12,43,27,27,27,27,16,20,17,26,24,36,23,25,23,15,11,15,22,11,11,23,25,31,33,11,22,21,35,17,28,29,21,35,16,24,15,15,15,29,30,12,15,11,18,28,35,36,43,22,30,30,30,30,30,30,42,30,27,27,27,27,13,13,13,13,36,35,38,38,38,38,38,22,38,36,36,36,36,28,28,27,24,24,24,24,24,24,39,22,25,25,25,25,10,10,10,10,25,27,27,27,27,27,27,29,28,26,26,26,26,25,28,25,30,22,10,52,44,29,20,28,27,23,17,10,22,22,14,26,25,29,9,8,11,19,19,22,21,23,15,33,59,16,16,20,16,15,16,14,17,16,21,12,16,17,18,16,17,16,18,17,34,36,26,26,31,24,22,29,32,12,12,26,26,35,30,33,36,25,33,26,25,23,31,27,41,26,25,24,45,22,0,50,60,13,11,12,20,35,26,42,31,9,13,13,21,23,11,21,10,27,36,18,26,27,28,27,28,25,30,29,10,11,20,25,20,22,36,31,30,31,36,28,26,34,37,13,13,29,25,41,35,38,29,38,30,29,27,36,32,49,30,28,27,16,26,16,26,28,15,24,28,23,28,26,17,25,27,11,11,22,12,44,28,28,28,28,16,21,17,26,25,36,24,25,24,15,11,15,23,11,11,24,25,31,34,12,23,21,36,17,28,30,21,36,17,25,15,16,15,30,31,12,15,11,19,28,36,36,44,22,31,31,31,31,31,31,43,31,28,28,28,28,13,13,13,13,36,35,38,38,38,38,38,22,38,36,36,36,36,28,29,28,24,24,24,24,24,24,40,23,26,26,26,26,11,11,11,11,26,28,28,28,28,28,28,30,29,26,26,26,26,25,29,25,31,23,11,54,45,29,21,28,27,24,18,11,22,22,15,26,25,30,9,8,11,20,19,22,21,23,15,34,60,16,16,20,17,15,16,15,17,16,22,12,17,17,18,17,17,17,19,17,35,36,27,27,31,25,23,29,32,12,12,26,27,36,31,33,37,26,33,27,26,24,31,28,42,27,25,24,46,22,0,0,1,0,2,0,2,1,1,1,1,1,0,0,0,0,18,5,230,0,248,8,255,0,8,0,8,255,254,0,9,0,9,255,253,0,10,0,10,255,253,0,11,0,11,255,253,0,12,0,12,255,253,0,13,0,13,255,253,0,14,0,14,255,253,0,15,0,15,255,252,0,16,0,16,255,252,0,17,0,17,255,252,0,18,0,18,255,251,0,19,0,19,255,251,0,20,0,20,255,251,0,21,0,21,255,251,0,22,0,22,255,250,0,23,0,22,255,250,0,24,0,23,255,250,0,25,0,25,255,250,0,26,0,25,255,250,0,27,0,26,255,249,0,28,0,27,255,249,0,29,0,28,255,249,0,30,0,29,255,249,0,31,0,30,255,248,0,32,0,31,255,248,0,33,0,32,255,248,0,34,0,33,255,248,0,35,0,33,255,248,0,36,0,35,255,247,0,37,0,36,255,247,0,38,0,37,255,247,0,39,0,38,255,247,0,40,0,38,255,246,0,41,0,40,255,246,0,42,0,41,255,246,0,43,0,42,255,246,0,44,0,42,255,245,0,45,0,43,255,245,0,46,0,45,255,245,0,47,0,45,255,245,0,48,0,47,255,244,0,49,0,47,255,244,0,50,0,48,255,243,0,51,0,49,255,243,0,52,0,50,255,243,0,53,0,51,255,243,0,54,0,52,255,242,0,55,0,54,255,242,0,56,0,54,255,242,0,57,0,55,255,242,0,58,0,55,255,241,0,59,0,57,255,241,0,60,0,59,255,241,0,61,0,59,255,241,0,62,0,60,255,240,0,63,0,60,255,240,0,64,0,61,255,240,0,65,0,63,255,240,0,66,0,64,255,239,0,67,0,65,255,239,0,68,0,65,255,239,0,69,0,66,255,239,0,70,0,68,255,238,0,71,0,69,255,238,0,72,0,69,255,238,0,73,0,70,255,238,0,74,0,71,255,237,0,75,0,72,255,237,0,76,0,74,255,237,0,77,0,74,255,237,0,78,0,75,255,236,0,79,0,77,255,236,0,80,0,77,255,236,0,81,0,79,255,236,0,82,0,79,255,235,0,83,0,80,255,235,0,84,0,81,255,235,0,85,0,82,255,235,0,86,0,83,255,234,0,87,0,84,255,234,0,88,0,85,255,234,0,89,0,86,255,234,0,90,0,87,255,233,0,91,0,87,255,233,0,92,0,88,255,233,0,93,0,90,255,233,0,94,0,91,255,232,0,95,0,92,255,232,0,96,0,92,255,232,0,97,0,93,255,232,0,98,0,94,255,231,0,99,0,96,255,231,0,100,0,97,255,231,0,101,0,97,255,231,0,102,0,98,255,230,0,103,0,99,255,230,0,104,0,101,255,230,0,105,0,101,255,230,0,106,0,102,255,229,0,107,0,103,255,229,0,108,0,104,255,229,0,109,0,106,255,229,0,110,0,106,255,228,0,111,0,107,255,228,0,112,0,108,255,228,0,113,0,109,255,228,0,114,0,110,255,227,0,115,0,111,255,227,0,116,0,112,255,227,0,117,0,112,255,227,0,118,0,114,255,226,0,119,0,115,255,226,0,120,0,115,255,226,0,121,0,117,255,226,0,122,0,118,255,225,0,123,0,119,255,225,0,124,0,119,255,225,0,125,0,120,255,225,0,126,0,122,255,224,0,127,0,123,255,224,0,128,0,124,255,224,0,129,0,124,255,224,0,130,0,125,255,223,0,131,0,125,255,223,0,132,0,128,255,223,0,133,0,129,255,223,0,134,0,129,255,222,0,135,0,130,255,222,0,136,0,130,255,222,0,137,0,133,255,222,0,138,0,133,255,221,0,139,0,134,255,221,0,140,0,135,255,221,0,141,0,135,255,221,0,142,0,137,255,220,0,143,0,138,255,220,0,144,0,139,255,220,0,145,0,140,255,220,0,146,0,141,255,219,0,147,0,142,255,219,0,148,0,142,255,219,0,149,0,144,255,219,0,150,0,144,255,218,0,151,0,146,255,218,0,152,0,147,255,218,0,153,0,147,255,218,0,154,0,149,255,217,0,155,0,149,255,217,0,156,0,151,255,217,0,157,0,151,255,217,0,158,0,152,255,216,0,159,0,153,255,216,0,160,0,154,255,216,0,161,0,156,255,216,0,162,0,156,255,215,0,163,0,157,255,215,0,164,0,157,255,215,0,165,0,159,255,215,0,166,0,161,255,214,0,167,0,161,255,214,0,168,0,162,255,214,0,169,0,162,255,214,0,170,0,164,255,213,0,171,0,166,255,213,0,172,0,166,255,213,0,173,0,167,255,213,0,174,0,167,255,212,0,175,0,169,255,212,0,176,0,170,255,212,0,177,0,171,255,212,0,178,0,172,255,211,0,179,0,172,255,211,0,180,0,174,255,211,0,181,0,174,255,211,0,182,0,176,255,210,0,183,0,176,255,210,0,184,0,177,255,210,0,185,0,179,255,210,0,186,0,179,255,209,0,187,0,180,255,209,0,188,0,181,255,209,0,189,0,183,255,209,0,190,0,183,255,208,0,191,0,184,255,208,0,192,0,185,255,208,0,193,0,186,255,208,0,194,0,188,255,207,0,195,0,188,255,207,0,196,0,189,255,207,0,197,0,189,255,207,0,198,0,190,255,206,0,199,0,193,255,206,0,200,0,193,255,206,0,201,0,194,255,206,0,202,0,194,255,205,0,203,0,195,255,205,0,204,0,198,255,205,0,205,0,198,255,205,0,206,0,199,255,204,0,207,0,199,255,204,0,208,0,200,255,204,0,209,0,201,255,204,0,210,0,203,255,203,0,211,0,204,255,203,0,212,0,204,255,203,0,213,0,206,255,203,0,214,0,206,255,202,0,215,0,207,255,202,0,216,0,208,255,202,0,217,0,209,255,202,0,218,0,211,255,201,0,219,0,211,255,201,0,220,0,212,255,201,0,221,0,213,255,201,0,222,0,214,255,200,0,223,0,215,255,200,0,224,0,216,255,200,0,225,0,217,255,200,0,226,0,217,255,199,0,227,0,219,255,199,0,228,0,220,255,199,0,229,0,221,255,199,0,230,0,221,255,198,0,231,0,222,255,198,0,232,0,224,255,198,0,233,0,225,255,198,0,234,0,226,255,197,0,235,0,226,255,197,0,236,0,227,255,197,0,237,0,229,255,197,0,238,0,230,255,196,0,239,0,231,255,196,0,240,0,231,255,196,0,241,0,232,255,196,0,242,0,233,255,195,0,243,0,235,255,195,0,244,0,236,255,195,0,245,0,236,255,195,0,246,0,237,255,194,0,247,0,238,255,194,0,248,0,239,255,194,0,249,0,240,255,194,0,250,0,241,255,193,0,251,0,242,255,193,0,252,0,243,255,193,0,253,0,244,255,193,0,254,0,244,255,192,0,255,0,246,255,192,0,248,8,255,0,8,0,8,255,254,0,9,0,9,255,253,0,10,0,10,255,253,0,11,0,11,255,253,0,12,0,12,255,253,0,13,0,13,255,253,0,14,0,14,255,253,0,15,0,15,255,252,0,16,0,16,255,252,0,17,0,17,255,252,0,18,0,18,255,251,0,19,0,19,255,251,0,20,0,20,255,251,0,21,0,21,255,251,0,22,0,22,255,250,0,23,0,22,255,250,0,24,0,23,255,250,0,25,0,25,255,250,0,26,0,25,255,250,0,27,0,26,255,249,0,28,0,27,255,249,0,29,0,28,255,249,0,30,0,29,255,249,0,31,0,30,255,248,0,32,0,31,255,248,0,33,0,32,255,248,0,34,0,33,255,248,0,35,0,33,255,248,0,36,0,35,255,247,0,37,0,36,255,247,0,38,0,37,255,247,0,39,0,38,255,247,0,40,0,38,255,246,0,41,0,40,255,246,0,42,0,41,255,246,0,43,0,42,255,246,0,44,0,42,255,245,0,45,0,43,255,245,0,46,0,45,255,245,0,47,0,45,255,245,0,48,0,47,255,244,0,49,0,47,255,244,0,50,0,48,255,243,0,51,0,49,255,243,0,52,0,50,255,243,0,53,0,51,255,243,0,54,0,52,255,242,0,55,0,54,255,242,0,56,0,54,255,242,0,57,0,55,255,242,0,58,0,55,255,241,0,59,0,57,255,241,0,60,0,59,255,241,0,61,0,59,255,241,0,62,0,60,255,240,0,63,0,60,255,240,0,64,0,61,255,240,0,65,0,63,255,240,0,66,0,64,255,239,0,67,0,65,255,239,0,68,0,65,255,239,0,69,0,66,255,239,0,70,0,68,255,238,0,71,0,69,255,238,0,72,0,69,255,238,0,73,0,70,255,238,0,74,0,71,255,237,0,75,0,72,255,237,0,76,0,74,255,237,0,77,0,74,255,237,0,78,0,75,255,236,0,79,0,77,255,236,0,80,0,77,255,236,0,81,0,79,255,236,0,82,0,79,255,235,0,83,0,80,255,235,0,84,0,81,255,235,0,85,0,82,255,235,0,86,0,83,255,234,0,87,0,84,255,234,0,88,0,85,255,234,0,89,0,86,255,234,0,90,0,87,255,233,0,91,0,87,255,233,0,92,0,88,255,233,0,93,0,90,255,233,0,94,0,91,255,232,0,95,0,92,255,232,0,96,0,92,255,232,0,97,0,93,255,232,0,98,0,94,255,231,0,99,0,96,255,231,0,100,0,97,255,231,0,101,0,97,255,231,0,102,0,98,255,230,0,103,0,99,255,230,0,104,0,101,255,230,0,105,0,101,255,230,0,106,0,102,255,229,0,107,0,103,255,229,0,108,0,104,255,229,0,109,0,106,255,229,0,110,0,106,255,228,0,111,0,107,255,228,0,112,0,108,255,228,0,113,0,109,255,228,0,114,0,110,255,227,0,115,0,111,255,227,0,116,0,112,255,227,0,117,0,112,255,227,0,118,0,114,255,226,0,119,0,115,255,226,0,120,0,115,255,226,0,121,0,117,255,226,0,122,0,118,255,225,0,123,0,119,255,225,0,124,0,119,255,225,0,125,0,120,255,225,0,126,0,122,255,224,0,127,0,123,255,224,0,128,0,124,255,224,0,129,0,124,255,224,0,130,0,125,255,223,0,131,0,125,255,223,0,132,0,128,255,223,0,133,0,129,255,223,0,134,0,129,255,222,0,135,0,130,255,222,0,136,0,130,255,222,0,137,0,133,255,222,0,138,0,133,255,221,0,139,0,134,255,221,0,140,0,135,255,221,0,141,0,135,255,221,0,142,0,137,255,220,0,143,0,138,255,220,0,144,0,139,255,220,0,145,0,140,255,220,0,146,0,141,255,219,0,147,0,142,255,219,0,148,0,142,255,219,0,149,0,144,255,219,0,150,0,144,255,218,0,151,0,146,255,218,0,152,0,147,255,218,0,153,0,147,255,218,0,154,0,149,255,217,0,155,0,149,255,217,0,156,0,151,255,217,0,157,0,151,255,217,0,158,0,152,255,216,0,159,0,153,255,216,0,160,0,154,255,216,0,161,0,156,255,216,0,162,0,156,255,215,0,163,0,157,255,215,0,164,0,157,255,215,0,165,0,159,255,215,0,166,0,161,255,214,0,167,0,161,255,214,0,168,0,162,255,214,0,169,0,162,255,214,0,170,0,164,255,213,0,171,0,166,255,213,0,172,0,166,255,213,0,173,0,167,255,213,0,174,0,167,255,212,0,175,0,169,255,212,0,176,0,170,255,212,0,177,0,171,255,212,0,178,0,172,255,211,0,179,0,172,255,211,0,180,0,174,255,211,0,181,0,174,255,211,0,182,0,176,255,210,0,183,0,176,255,210,0,184,0,177,255,210,0,185,0,179,255,210,0,186,0,179,255,209,0,187,0,180,255,209,0,188,0,181,255,209,0,189,0,183,255,209,0,190,0,183,255,208,0,191,0,184,255,208,0,192,0,185,255,208,0,193,0,186,255,208,0,194,0,188,255,207,0,195,0,188,255,207,0,196,0,189,255,207,0,197,0,189,255,207,0,198,0,190,255,206,0,199,0,193,255,206,0,200,0,193,255,206,0,201,0,194,255,206,0,202,0,194,255,205,0,203,0,195,255,205,0,204,0,198,255,205,0,205,0,198,255,205,0,206,0,199,255,204,0,207,0,199,255,204,0,208,0,200,255,204,0,209,0,201,255,204,0,210,0,203,255,203,0,211,0,204,255,203,0,212,0,204,255,203,0,213,0,206,255,203,0,214,0,206,255,202,0,215,0,207,255,202,0,216,0,208,255,202,0,217,0,209,255,202,0,218,0,211,255,201,0,219,0,211,255,201,0,220,0,212,255,201,0,221,0,213,255,201,0,222,0,214,255,200,0,223,0,215,255,200,0,224,0,216,255,200,0,225,0,217,255,200,0,226,0,217,255,199,0,227,0,219,255,199,0,228,0,220,255,199,0,229,0,221,255,199,0,230,0,221,255,198,0,231,0,222,255,198,0,232,0,224,255,198,0,233,0,225,255,198,0,234,0,226,255,197,0,235,0,226,255,197,0,236,0,227,255,197,0,237,0,229,255,197,0,238,0,230,255,196,0,239,0,231,255,196,0,240,0,231,255,196,0,241,0,232,255,196,0,242,0,233,255,195,0,243,0,235,255,195,0,244,0,236,255,195,0,245,0,236,255,195,0,246,0,237,255,194,0,247,0,238,255,194,0,248,0,239,255,194,0,249,0,240,255,194,0,250,0,241,255,193,0,251,0,242,255,193,0,252,0,243,255,193,0,253,0,244,255,193,0,254,0,244,255,192,0,255,0,246,255,192,0,0, \ No newline at end of file diff --git a/src/Nazara/Utility/Resources/Fonts/OpenSans-Regular.ttf b/src/Nazara/Utility/Resources/Fonts/OpenSans-Regular.ttf new file mode 100644 index 000000000..db433349b Binary files /dev/null and b/src/Nazara/Utility/Resources/Fonts/OpenSans-Regular.ttf differ diff --git a/src/Nazara/Utility/Resources/Fonts/OpenSans-Regular.ttf.h b/src/Nazara/Utility/Resources/Fonts/OpenSans-Regular.ttf.h new file mode 100644 index 000000000..292846b19 --- /dev/null +++ b/src/Nazara/Utility/Resources/Fonts/OpenSans-Regular.ttf.h @@ -0,0 +1 @@ +0,1,0,0,0,19,1,0,0,4,0,48,68,83,73,71,158,18,68,29,0,3,59,156,0,0,21,116,71,68,69,70,0,38,3,175,0,3,55,124,0,0,0,30,71,80,79,83,11,55,15,55,0,3,55,156,0,0,0,56,71,83,85,66,14,43,61,183,0,3,55,212,0,0,3,198,79,83,47,50,161,62,158,201,0,0,1,184,0,0,0,96,99,109,97,112,41,171,47,104,0,0,16,180,0,0,4,26,99,118,116,32,15,77,24,164,0,0,29,144,0,0,0,162,102,112,103,109,126,97,182,17,0,0,20,208,0,0,7,180,103,97,115,112,0,21,0,35,0,3,55,108,0,0,0,16,103,108,121,102,116,56,153,75,0,0,37,140,0,1,47,180,104,101,97,100,247,118,226,166,0,0,1,60,0,0,0,54,104,104,101,97,13,204,9,115,0,0,1,116,0,0,0,36,104,109,116,120,232,53,60,221,0,0,2,24,0,0,14,154,107,101,114,110,84,43,9,126,0,1,85,64,0,1,182,54,108,111,99,97,41,20,220,241,0,0,30,52,0,0,7,86,109,97,120,112,5,67,2,10,0,0,1,152,0,0,0,32,110,97,109,101,115,176,136,133,0,3,11,120,0,0,5,199,112,111,115,116,2,67,239,108,0,3,17,64,0,0,38,43,112,114,101,112,67,183,150,164,0,0,28,132,0,0,1,9,0,1,0,0,0,1,25,154,33,199,245,95,95,15,60,245,0,9,8,0,0,0,0,0,201,53,49,139,0,0,0,0,201,232,76,76,251,154,253,213,9,162,8,98,0,0,0,9,0,2,0,0,0,0,0,0,0,1,0,0,8,141,253,168,0,0,9,172,251,154,254,123,9,162,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,163,0,1,0,0,3,170,0,138,0,22,0,86,0,5,0,2,0,16,0,47,0,92,0,0,1,14,0,248,0,3,0,1,0,3,4,182,1,144,0,5,0,8,5,154,5,51,0,0,1,31,5,154,5,51,0,0,3,209,0,102,1,241,8,2,2,11,6,6,3,5,4,2,2,4,224,0,2,239,64,0,32,91,0,0,0,40,0,0,0,0,49,65,83,67,0,64,0,32,255,253,6,31,254,20,0,132,8,141,2,88,32,0,1,159,0,0,0,0,4,72,5,182,0,0,0,32,0,3,4,205,0,193,0,0,0,0,4,20,0,0,2,20,0,0,2,35,0,152,3,53,0,133,5,43,0,51,4,147,0,131,6,150,0,104,5,215,0,113,1,197,0,133,2,94,0,82,2,94,0,61,4,106,0,86,4,147,0,104,1,246,0,63,2,147,0,84,2,33,0,152,2,240,0,20,4,147,0,102,4,147,0,188,4,147,0,100,4,147,0,94,4,147,0,43,4,147,0,133,4,147,0,117,4,147,0,94,4,147,0,104,4,147,0,106,2,33,0,152,2,33,0,63,4,147,0,104,4,147,0,119,4,147,0,104,3,111,0,27,7,49,0,121,5,16,0,0,5,47,0,201,5,12,0,125,5,213,0,201,4,115,0,201,4,33,0,201,5,211,0,125,5,231,0,201,2,170,0,84,2,35,255,96,4,233,0,201,4,39,0,201,7,57,0,201,6,8,0,201,6,59,0,125,4,209,0,201,6,59,0,125,4,242,0,201,4,100,0,106,4,109,0,18,5,211,0,186,4,195,0,0,7,104,0,27,4,158,0,8,4,123,0,0,4,145,0,82,2,162,0,166,2,240,0,23,2,162,0,51,4,86,0,49,3,150,255,252,4,158,1,137,4,115,0,94,4,231,0,176,3,207,0,115,4,231,0,115,4,125,0,115,2,182,0,29,4,98,0,39,4,233,0,176,2,6,0,162,2,6,255,145,4,51,0,176,2,6,0,176,7,113,0,176,4,233,0,176,4,213,0,115,4,231,0,176,4,231,0,115,3,68,0,176,3,209,0,106,2,211,0,31,4,233,0,164,4,2,0,0,6,57,0,23,4,49,0,39,4,8,0,2,3,190,0,82,3,8,0,61,4,104,1,238,3,8,0,72,4,147,0,104,2,20,0,0,2,35,0,152,4,147,0,190,4,147,0,63,4,147,0,123,4,147,0,31,4,104,1,238,4,33,0,123,4,158,1,53,6,168,0,100,2,213,0,70,3,250,0,82,4,147,0,104,2,147,0,84,6,168,0,100,4,0,255,250,3,109,0,127,4,147,0,104,2,199,0,49,2,199,0,33,4,158,1,137,4,244,0,176,5,61,0,113,2,33,0,152,1,209,0,37,2,199,0,76,3,0,0,66,3,250,0,80,6,61,0,75,6,61,0,46,6,61,0,26,3,111,0,51,5,16,0,0,5,16,0,0,5,16,0,0,5,16,0,0,5,16,0,0,5,16,0,0,6,252,255,254,5,12,0,125,4,115,0,201,4,115,0,201,4,115,0,201,4,115,0,201,2,170,0,60,2,170,0,84,2,170,255,255,2,170,0,60,5,199,0,47,6,8,0,201,6,59,0,125,6,59,0,125,6,59,0,125,6,59,0,125,6,59,0,125,4,147,0,133,6,59,0,125,5,211,0,186,5,211,0,186,5,211,0,186,5,211,0,186,4,123,0,0,4,227,0,201,4,250,0,176,4,115,0,94,4,115,0,94,4,115,0,94,4,115,0,94,4,115,0,94,4,115,0,94,6,221,0,94,3,207,0,115,4,125,0,115,4,125,0,115,4,125,0,115,4,125,0,115,2,6,255,218,2,6,0,169,2,6,255,179,2,6,255,236,4,197,0,113,4,233,0,176,4,213,0,115,4,213,0,115,4,213,0,115,4,213,0,115,4,213,0,115,4,147,0,104,4,213,0,115,4,233,0,164,4,233,0,164,4,233,0,164,4,233,0,164,4,8,0,2,4,231,0,176,4,8,0,2,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,94,5,12,0,125,3,207,0,115,5,12,0,125,3,207,0,115,5,12,0,125,3,207,0,115,5,12,0,125,3,207,0,115,5,213,0,201,4,231,0,115,5,199,0,47,4,231,0,115,4,115,0,201,4,125,0,115,4,115,0,201,4,125,0,115,4,115,0,201,4,125,0,115,4,115,0,201,4,125,0,115,4,115,0,201,4,125,0,115,5,211,0,125,4,98,0,39,5,211,0,125,4,98,0,39,5,211,0,125,4,98,0,39,5,211,0,125,4,98,0,39,5,231,0,201,4,233,0,176,5,231,0,0,4,233,0,20,2,170,255,226,2,6,255,144,2,170,0,42,2,6,255,218,2,170,0,30,2,6,255,204,2,170,0,84,2,6,0,53,2,170,0,84,2,6,0,176,4,205,0,84,4,12,0,162,2,35,255,96,2,6,255,145,4,233,0,201,4,51,0,176,4,37,0,176,4,39,0,201,2,6,0,163,4,39,0,201,2,6,0,89,4,39,0,201,2,6,0,176,4,39,0,201,2,131,0,176,4,47,0,29,2,23,255,252,6,8,0,201,4,233,0,176,6,8,0,201,4,233,0,176,6,8,0,201,4,233,0,176,5,115,0,1,6,8,0,201,4,233,0,176,6,59,0,125,4,213,0,115,6,59,0,125,4,213,0,115,6,59,0,125,4,213,0,115,7,98,0,125,7,137,0,113,4,242,0,201,3,68,0,176,4,242,0,201,3,68,0,96,4,242,0,201,3,68,0,130,4,100,0,106,3,209,0,106,4,100,0,106,3,209,0,106,4,100,0,106,3,209,0,106,4,100,0,106,3,209,0,106,4,109,0,18,2,211,0,31,4,109,0,18,2,211,0,31,4,109,0,18,2,211,0,31,5,211,0,186,4,233,0,164,5,211,0,186,4,233,0,164,5,211,0,186,4,233,0,164,5,211,0,186,4,233,0,164,5,211,0,186,4,233,0,164,5,211,0,186,4,233,0,164,7,104,0,27,6,57,0,23,4,123,0,0,4,8,0,2,4,123,0,0,4,145,0,82,3,190,0,82,4,145,0,82,3,190,0,82,4,145,0,82,3,190,0,82,2,143,0,176,4,158,0,195,5,20,0,0,4,115,0,94,6,252,255,254,6,221,0,94,6,59,0,125,4,213,0,115,4,100,0,106,3,209,0,106,4,188,1,12,4,188,1,12,4,178,1,45,4,188,1,37,2,6,0,162,4,158,1,111,1,147,0,37,4,188,1,8,4,158,0,231,4,158,1,252,4,158,1,27,5,16,0,0,2,33,0,152,4,242,255,212,6,125,255,212,3,152,255,228,6,129,255,228,5,133,255,212,6,129,255,228,2,182,255,233,5,16,0,0,5,47,0,201,4,41,0,201,4,147,0,39,4,115,0,201,4,145,0,82,5,231,0,201,6,59,0,125,2,170,0,84,4,233,0,201,4,211,0,0,7,57,0,201,6,8,0,201,4,109,0,72,6,59,0,125,5,213,0,201,4,209,0,201,4,137,0,74,4,109,0,18,4,123,0,0,6,98,0,106,4,158,0,8,6,94,0,109,6,66,0,80,2,170,0,60,4,123,0,0,4,227,0,115,3,205,0,90,4,233,0,176,2,182,0,168,4,223,0,164,4,227,0,115,5,6,0,176,4,25,0,10,4,164,0,113,3,205,0,90,3,221,0,115,4,233,0,176,4,188,0,115,2,182,0,168,4,37,0,176,4,70,255,242,4,244,0,176,4,86,0,0,3,205,0,113,4,213,0,115,5,51,0,25,4,213,0,166,3,219,0,115,4,231,0,115,3,201,0,18,4,223,0,164,5,190,0,115,4,94,255,236,6,6,0,164,6,47,0,115,2,182,0,9,4,223,0,164,4,213,0,115,4,223,0,164,6,47,0,115,4,115,0,201,5,223,0,18,4,41,0,201,5,29,0,125,4,100,0,106,2,170,0,84,2,170,0,60,2,35,255,96,7,111,0,0,7,160,0,201,5,223,0,18,4,229,0,201,4,248,0,27,5,213,0,201,5,16,0,0,4,231,0,201,5,47,0,201,4,41,0,201,5,119,0,14,4,115,0,201,6,193,0,2,4,166,0,74,6,25,0,203,6,25,0,203,4,229,0,201,5,162,0,0,7,57,0,201,5,231,0,201,6,59,0,125,5,213,0,201,4,209,0,201,5,12,0,125,4,109,0,18,4,248,0,27,6,98,0,106,4,158,0,8,5,229,0,201,5,143,0,170,8,66,0,201,8,68,0,201,5,129,0,18,6,211,0,201,5,37,0,201,5,10,0,61,8,102,0,201,5,23,0,51,4,115,0,94,4,197,0,119,4,141,0,176,3,109,0,176,4,147,0,41,4,125,0,115,5,227,0,4,3,221,0,68,5,18,0,176,5,18,0,176,4,39,0,176,4,145,0,16,5,225,0,176,5,18,0,176,4,213,0,115,4,248,0,176,4,231,0,176,3,207,0,115,3,188,0,41,4,8,0,2,5,184,0,113,4,49,0,39,5,2,0,176,4,221,0,156,7,31,0,176,7,45,0,176,5,143,0,41,6,41,0,176,4,188,0,176,3,240,0,57,6,166,0,176,4,113,0,37,4,125,0,115,4,233,0,20,3,109,0,176,3,240,0,115,3,209,0,106,2,6,0,162,2,6,255,236,2,6,255,145,6,178,0,16,7,23,0,176,4,233,0,20,4,39,0,176,4,8,0,2,4,248,0,176,4,55,0,201,3,109,0,176,7,104,0,27,6,57,0,23,7,104,0,27,6,57,0,23,7,104,0,27,6,57,0,23,4,123,0,0,4,8,0,2,4,0,0,82,8,0,0,82,8,0,0,82,3,74,255,252,1,92,0,25,1,92,0,25,1,246,0,63,1,92,0,25,2,205,0,25,2,205,0,25,3,61,0,25,4,4,0,123,4,20,0,123,3,2,0,164,6,70,0,152,9,158,0,100,1,197,0,133,3,37,0,133,2,111,0,82,2,111,0,80,3,227,0,152,1,10,254,121,3,39,0,109,4,147,0,98,4,147,0,68,6,27,0,154,4,184,0,63,6,152,0,141,4,41,0,119,8,39,0,201,6,53,0,37,6,66,0,80,4,244,0,102,6,61,0,71,6,61,0,32,6,61,0,71,6,61,0,106,4,166,0,102,4,147,0,39,5,233,0,201,5,12,0,76,4,147,0,104,4,100,0,37,5,164,0,119,3,18,0,12,4,147,0,98,4,147,0,104,4,147,0,104,4,147,0,104,4,170,0,111,4,188,0,29,4,188,0,29,4,158,0,219,2,6,255,145,4,0,1,137,4,0,1,113,4,0,1,129,2,199,0,39,2,199,0,20,2,199,0,59,2,199,0,41,2,199,0,57,2,199,0,51,2,199,0,35,4,0,0,0,8,0,0,0,4,0,0,0,8,0,0,0,2,170,0,0,2,0,0,0,1,86,0,0,4,121,0,0,2,33,0,0,1,154,0,0,0,205,0,0,0,0,0,0,0,0,0,0,8,0,0,84,8,0,0,84,2,6,255,145,1,92,0,25,4,250,0,10,4,133,0,0,6,184,0,18,7,57,0,201,7,113,0,176,5,16,0,0,4,115,0,94,6,82,254,223,2,170,0,117,3,51,0,152,7,117,0,29,7,117,0,29,6,61,0,125,4,223,0,115,6,37,0,186,5,82,0,164,0,0,252,83,0,0,253,13,0,0,252,25,0,0,253,8,0,0,253,59,4,115,0,201,6,25,0,203,4,125,0,115,5,18,0,176,8,23,0,133,6,141,0,0,5,102,0,23,5,14,0,23,7,90,0,201,5,227,0,176,5,109,0,0,4,131,0,10,7,94,0,201,6,33,0,176,5,197,0,20,5,35,0,12,7,203,0,201,6,197,0,176,4,168,0,63,3,221,0,25,6,94,0,109,6,6,0,164,6,61,0,125,4,213,0,115,5,2,0,0,4,12,0,0,5,2,0,0,4,12,0,0,9,172,0,125,8,125,0,115,6,141,0,125,5,66,0,115,7,254,0,125,6,119,0,115,7,223,0,94,6,141,0,0,5,29,0,125,3,231,0,115,4,223,0,106,4,117,0,203,4,158,0,248,4,158,1,223,4,158,1,225,7,233,0,41,7,166,0,41,6,41,0,201,5,37,0,176,4,231,0,47,4,188,0,20,4,227,0,201,4,231,0,176,4,55,0,47,3,109,0,18,5,35,0,201,4,51,0,176,7,31,0,2,6,61,0,4,4,166,0,74,3,221,0,68,5,74,0,201,4,92,0,176,4,233,0,201,4,68,0,176,4,233,0,47,4,35,0,20,5,131,0,16,4,236,0,41,5,248,0,201,5,47,0,176,6,129,0,201,5,227,0,176,8,137,0,201,6,236,0,176,6,59,0,125,5,31,0,115,5,12,0,125,3,207,0,115,4,109,0,16,3,188,0,41,4,123,0,0,4,2,0,0,4,123,0,0,4,2,0,0,4,244,0,8,4,86,0,39,6,215,0,16,5,188,0,41,5,137,0,170,4,223,0,156,5,143,0,170,4,205,0,156,5,143,0,201,4,174,0,176,6,180,0,61,5,70,0,51,6,180,0,61,5,70,0,51,2,170,0,84,6,193,0,2,5,227,0,4,5,131,0,201,4,100,0,176,5,166,0,0,4,147,0,16,5,209,0,201,4,238,0,176,5,246,0,201,5,57,0,176,5,143,0,170,4,221,0,156,7,59,0,201,5,227,0,176,2,170,0,84,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,94,6,252,255,254,6,221,0,94,4,115,0,201,4,125,0,115,5,215,0,117,4,121,0,102,5,215,0,117,4,121,0,102,6,193,0,2,5,227,0,4,4,166,0,74,3,221,0,68,4,170,0,74,3,233,0,27,6,25,0,203,5,18,0,176,6,25,0,203,5,18,0,176,6,59,0,125,4,213,0,115,6,61,0,125,4,213,0,115,6,61,0,125,4,213,0,115,5,10,0,61,3,240,0,57,4,248,0,27,4,8,0,2,4,248,0,27,4,8,0,2,4,248,0,27,4,8,0,2,5,143,0,170,4,221,0,156,4,55,0,201,3,109,0,176,6,211,0,201,6,41,0,176,4,55,0,47,3,109,0,18,4,248,0,8,4,82,0,39,4,158,0,6,4,49,0,39,4,231,0,131,4,231,0,115,7,49,0,131,7,43,0,115,7,59,0,78,6,106,0,80,5,0,0,78,4,47,0,80,7,217,0,0,6,207,0,16,8,25,0,201,7,78,0,176,6,12,0,125,5,31,0,115,5,174,0,16,5,45,0,41,4,170,0,111,3,205,0,90,5,154,0,0,4,145,0,16,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,45,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,94,5,16,0,0,4,115,0,94,4,115,0,201,4,125,0,115,4,115,0,201,4,125,0,115,4,115,0,201,4,125,0,115,4,115,0,201,4,125,0,115,4,115,0,93,4,125,0,74,4,115,0,201,4,125,0,115,4,115,0,201,4,125,0,115,4,115,0,201,4,125,0,115,2,170,0,84,2,6,0,123,2,170,0,84,2,6,0,157,6,59,0,125,4,213,0,115,6,59,0,125,4,213,0,115,6,59,0,125,4,213,0,115,6,59,0,125,4,213,0,97,6,59,0,125,4,213,0,115,6,59,0,125,4,213,0,115,6,59,0,125,4,213,0,115,6,61,0,125,4,223,0,115,6,61,0,125,4,223,0,115,6,61,0,125,4,223,0,115,6,61,0,125,4,223,0,115,6,61,0,125,4,223,0,115,5,211,0,186,4,233,0,164,5,211,0,186,4,233,0,164,6,37,0,186,5,82,0,164,6,37,0,186,5,82,0,164,6,37,0,186,5,82,0,164,6,37,0,186,5,82,0,164,6,37,0,186,5,82,0,164,4,123,0,0,4,8,0,2,4,123,0,0,4,8,0,2,4,123,0,0,4,8,0,2,4,231,0,115,0,0,251,229,0,0,252,113,0,0,251,154,0,0,252,113,0,0,252,104,0,0,252,121,0,0,252,121,0,0,252,121,0,0,252,104,1,164,0,49,1,164,0,25,1,164,0,25,3,45,0,52,4,137,0,115,2,244,0,45,4,20,0,41,4,147,0,94,4,143,0,23,4,147,0,133,4,147,0,117,4,147,0,94,4,147,0,104,4,147,0,106,5,109,0,29,6,90,0,92,4,109,0,18,2,211,0,31,4,231,0,113,4,231,0,113,4,231,0,113,4,231,0,113,4,231,0,113,2,59,0,201,2,59,0,5,2,59,0,179,2,59,255,199,2,59,0,5,2,59,255,171,2,59,255,243,2,59,255,231,2,59,0,86,2,59,0,187,4,94,0,201,2,229,255,228,2,59,0,201,0,5,0,201,0,5,0,201,0,201,0,153,0,184,0,0,0,0,0,1,0,3,0,1,0,0,0,12,0,4,4,14,0,0,0,176,0,128,0,6,0,48,0,72,0,73,0,126,0,203,0,207,1,39,1,50,1,97,1,127,1,146,1,161,1,176,1,240,1,255,2,27,2,55,2,188,2,199,2,201,2,221,2,243,3,1,3,3,3,9,3,15,3,35,3,138,3,140,3,161,3,170,3,206,3,210,3,214,4,13,4,79,4,95,4,134,4,145,4,191,4,207,5,19,30,1,30,63,30,133,30,199,30,202,30,241,30,249,31,77,32,11,32,21,32,30,32,34,32,38,32,48,32,51,32,58,32,60,32,68,32,112,32,121,32,127,32,164,32,167,32,172,33,5,33,19,33,22,33,32,33,34,33,38,33,46,33,94,34,2,34,6,34,15,34,18,34,26,34,30,34,43,34,72,34,96,34,101,37,202,251,4,254,255,255,253,255,255,0,0,0,32,0,73,0,74,0,160,0,204,0,208,1,40,1,51,1,98,1,146,1,160,1,175,1,240,1,250,2,24,2,55,2,188,2,198,2,201,2,216,2,243,3,0,3,3,3,9,3,15,3,35,3,132,3,140,3,142,3,163,3,171,3,209,3,214,4,0,4,14,4,80,4,96,4,136,4,146,4,192,4,208,30,0,30,62,30,128,30,160,30,200,30,203,30,242,31,77,32,0,32,19,32,23,32,32,32,38,32,48,32,50,32,57,32,60,32,68,32,112,32,116,32,127,32,163,32,167,32,171,33,5,33,19,33,22,33,32,33,34,33,38,33,46,33,91,34,2,34,6,34,15,34,17,34,26,34,30,34,43,34,72,34,96,34,100,37,202,251,0,254,255,255,252,255,255,255,227,0,0,255,227,255,194,0,0,255,194,0,0,255,194,0,0,255,176,0,191,0,178,0,97,255,73,0,0,0,0,255,150,254,133,254,132,254,118,255,104,255,99,255,98,255,93,0,103,255,68,0,0,253,207,0,0,0,0,253,205,254,130,254,127,0,0,253,154,0,0,254,12,0,0,254,9,0,0,254,9,228,88,228,24,227,122,228,125,0,0,228,125,0,0,227,13,226,66,225,239,225,238,225,237,225,234,225,225,225,224,225,219,225,218,225,211,225,203,225,200,225,153,225,118,225,116,0,0,225,24,225,11,225,9,226,110,224,254,224,251,224,244,224,200,224,37,224,34,224,26,224,25,224,18,224,15,224,3,223,231,223,208,223,205,220,105,0,0,3,79,2,83,0,1,0,0,0,174,0,0,0,0,0,170,0,0,0,174,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,234,1,16,0,0,0,0,0,0,1,24,0,0,1,48,0,0,1,76,0,0,1,92,0,0,0,0,0,0,0,0,0,0,1,112,0,0,1,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,60,0,0,0,0,0,0,3,150,3,151,3,152,3,153,3,154,3,155,0,235,3,156,0,237,3,157,0,239,3,158,0,241,3,159,0,243,3,160,3,143,3,144,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,48,1,49,1,50,1,51,1,52,1,53,1,54,1,55,1,56,1,57,1,58,1,59,1,60,1,61,1,62,1,63,1,64,1,65,1,73,1,74,1,36,1,37,1,84,1,85,1,86,1,87,1,88,1,89,3,161,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102,3,162,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,3,163,2,104,1,156,1,157,1,158,1,159,1,160,3,164,3,165,1,163,1,164,1,165,1,166,1,167,2,105,2,106,1,234,1,235,1,236,1,237,1,238,1,239,1,240,1,241,1,242,1,243,1,244,1,245,2,107,1,246,1,247,2,147,2,148,2,149,2,150,2,151,2,152,2,153,2,154,1,248,1,249,3,166,2,202,2,203,2,204,2,205,2,206,2,207,2,208,2,209,2,210,2,211,2,212,2,213,2,214,2,215,3,167,3,168,3,70,3,169,2,0,2,1,3,111,3,112,3,113,3,114,3,115,3,116,3,117,2,28,3,141,2,52,2,53,2,93,2,94,0,0,64,71,91,90,89,88,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64,63,62,61,60,59,58,57,56,55,54,53,49,48,47,46,45,44,40,39,38,37,36,35,34,33,31,24,20,17,16,15,14,13,11,10,9,8,7,6,5,4,3,2,1,0,44,32,176,1,96,69,176,3,37,32,17,70,97,35,69,35,97,72,45,44,32,69,24,104,68,45,44,69,35,70,96,176,32,97,32,176,70,96,176,4,38,35,72,72,45,44,69,35,70,35,97,176,32,96,32,176,38,97,176,32,97,176,4,38,35,72,72,45,44,69,35,70,96,176,64,97,32,176,102,96,176,4,38,35,72,72,45,44,69,35,70,35,97,176,64,96,32,176,38,97,176,64,97,176,4,38,35,72,72,45,44,1,16,32,60,0,60,45,44,32,69,35,32,176,205,68,35,32,184,1,90,81,88,35,32,176,141,68,35,89,32,176,237,81,88,35,32,176,77,68,35,89,32,176,4,38,81,88,35,32,176,13,68,35,89,33,33,45,44,32,32,69,24,104,68,32,176,1,96,32,69,176,70,118,104,138,69,96,68,45,44,1,177,11,10,67,35,67,101,10,45,44,0,177,10,11,67,35,67,11,45,44,0,176,40,35,112,177,1,40,62,1,176,40,35,112,177,2,40,69,58,177,2,0,8,13,45,44,32,69,176,3,37,69,97,100,176,80,81,88,69,68,27,33,33,89,45,44,73,176,14,35,68,45,44,32,69,176,0,67,96,68,45,44,1,176,6,67,176,7,67,101,10,45,44,32,105,176,64,97,176,0,139,32,177,44,192,138,140,184,16,0,98,96,43,12,100,35,100,97,92,88,176,3,97,89,45,44,138,3,69,138,138,135,176,17,43,176,41,35,68,176,41,122,228,24,45,44,69,101,176,44,35,68,69,176,43,35,68,45,44,75,82,88,69,68,27,33,33,89,45,44,75,81,88,69,68,27,33,33,89,45,44,1,176,5,37,16,35,32,138,245,0,176,1,96,35,237,236,45,44,1,176,5,37,16,35,32,138,245,0,176,1,97,35,237,236,45,44,1,176,6,37,16,245,0,237,236,45,44,176,2,67,176,1,82,88,33,33,33,33,33,27,70,35,70,96,138,138,70,35,32,70,138,96,138,97,184,255,128,98,35,32,16,35,138,177,12,12,138,112,69,96,32,176,0,80,88,176,1,97,184,255,186,139,27,176,70,140,89,176,16,96,104,1,58,89,45,44,32,69,176,3,37,70,82,75,176,19,81,91,88,176,2,37,70,32,104,97,176,3,37,176,3,37,63,35,33,56,27,33,17,89,45,44,32,69,176,3,37,70,80,88,176,2,37,70,32,104,97,176,3,37,176,3,37,63,35,33,56,27,33,17,89,45,44,0,176,7,67,176,6,67,11,45,44,33,33,12,100,35,100,139,184,64,0,98,45,44,33,176,128,81,88,12,100,35,100,139,184,32,0,98,27,178,0,64,47,43,89,176,2,96,45,44,33,176,192,81,88,12,100,35,100,139,184,21,85,98,27,178,0,128,47,43,89,176,2,96,45,44,12,100,35,100,139,184,64,0,98,96,35,33,45,44,75,83,88,138,176,4,37,73,100,35,69,105,176,64,139,97,176,128,98,176,32,97,106,176,14,35,68,35,16,176,14,246,27,33,35,138,18,17,32,57,47,89,45,44,75,83,88,32,176,3,37,73,100,105,32,176,5,38,176,6,37,73,100,35,97,176,128,98,176,32,97,106,176,14,35,68,176,4,38,16,176,14,246,138,16,176,14,35,68,176,14,246,176,14,35,68,176,14,237,27,138,176,4,38,17,18,32,57,35,32,57,47,47,89,45,44,69,35,69,96,35,69,96,35,69,96,35,118,104,24,176,128,98,32,45,44,176,72,43,45,44,32,69,176,0,84,88,176,64,68,32,69,176,64,97,68,27,33,33,89,45,44,69,177,48,47,69,35,69,97,96,176,1,96,105,68,45,44,75,81,88,176,47,35,112,176,20,35,66,27,33,33,89,45,44,75,81,88,32,176,3,37,69,105,83,88,68,27,33,33,89,27,33,33,89,45,44,69,176,20,67,176,0,96,99,176,1,96,105,68,45,44,176,47,69,68,45,44,69,35,32,69,138,96,68,45,44,69,35,69,96,68,45,44,75,35,81,88,185,0,51,255,224,177,52,32,27,179,51,0,52,0,89,68,68,45,44,176,22,67,88,176,3,38,69,138,88,100,102,176,31,96,27,100,176,32,96,102,32,88,27,33,176,64,89,176,1,97,89,35,88,101,89,176,41,35,68,35,16,176,41,224,27,33,33,33,33,33,89,45,44,176,2,67,84,88,75,83,35,75,81,90,88,56,27,33,33,89,27,33,33,33,33,89,45,44,176,22,67,88,176,4,37,69,100,176,32,96,102,32,88,27,33,176,64,89,176,1,97,35,88,27,101,89,176,41,35,68,176,5,37,176,8,37,8,32,88,2,27,3,89,176,4,37,16,176,5,37,32,70,176,4,37,35,66,60,176,4,37,176,7,37,8,176,7,37,16,176,6,37,32,70,176,4,37,176,1,96,35,66,60,32,88,1,27,0,89,176,4,37,16,176,5,37,176,41,224,176,41,32,69,101,68,176,7,37,16,176,6,37,176,41,224,176,5,37,176,8,37,8,32,88,2,27,3,89,176,5,37,176,3,37,67,72,176,4,37,176,7,37,8,176,6,37,176,3,37,176,1,96,67,72,27,33,89,33,33,33,33,33,33,33,45,44,2,176,4,37,32,32,70,176,4,37,35,66,176,5,37,8,176,3,37,69,72,33,33,33,33,45,44,2,176,3,37,32,176,4,37,8,176,2,37,67,72,33,33,33,45,44,69,35,32,69,24,32,176,0,80,32,88,35,101,35,89,35,104,32,176,64,80,88,33,176,64,89,35,88,101,89,138,96,68,45,44,75,83,35,75,81,90,88,32,69,138,96,68,27,33,33,89,45,44,75,84,88,32,69,138,96,68,27,33,33,89,45,44,75,83,35,75,81,90,88,56,27,33,33,89,45,44,176,0,33,75,84,88,56,27,33,33,89,45,44,176,2,67,84,88,176,70,43,27,33,33,33,33,89,45,44,176,2,67,84,88,176,71,43,27,33,33,33,89,45,44,176,2,67,84,88,176,72,43,27,33,33,33,33,89,45,44,176,2,67,84,88,176,73,43,27,33,33,33,89,45,44,32,138,8,35,75,83,138,75,81,90,88,35,56,27,33,33,89,45,44,0,176,2,37,73,176,0,83,88,32,176,64,56,17,27,33,89,45,44,1,70,35,70,96,35,70,97,35,32,16,32,70,138,97,184,255,128,98,138,177,64,64,138,112,69,96,104,58,45,44,32,138,35,73,100,138,35,83,88,60,27,33,89,45,44,75,82,88,125,27,122,89,45,44,176,18,0,75,1,75,84,66,45,44,177,2,0,66,177,35,1,136,81,177,64,1,136,83,90,88,185,16,0,0,32,136,84,88,178,2,1,2,67,96,66,89,177,36,1,136,81,88,185,32,0,0,64,136,84,88,178,2,2,2,67,96,66,177,36,1,136,84,88,178,2,32,2,67,96,66,0,75,1,75,82,88,178,2,8,2,67,96,66,89,27,185,64,0,0,128,136,84,88,178,2,4,2,67,96,66,89,185,64,0,0,128,99,184,1,0,136,84,88,178,2,8,2,67,96,66,89,185,64,0,1,0,99,184,2,0,136,84,88,178,2,16,2,67,96,66,89,177,38,1,136,81,88,185,64,0,2,0,99,184,4,0,136,84,88,178,2,64,2,67,96,66,89,185,64,0,4,0,99,184,8,0,136,84,88,178,2,128,2,67,96,66,89,89,89,89,89,89,177,0,2,67,84,88,64,10,5,64,8,64,9,64,12,2,13,2,27,177,1,2,67,84,88,178,5,64,8,186,1,0,0,9,1,0,179,12,1,13,1,27,177,128,2,67,82,88,178,5,64,8,184,1,128,177,9,64,27,178,5,64,8,186,1,128,0,9,1,64,89,185,64,0,0,128,136,85,185,64,0,2,0,99,184,4,0,136,85,90,88,179,12,0,13,1,27,179,12,0,13,1,89,89,89,66,66,66,66,66,45,44,69,24,104,35,75,81,88,35,32,69,32,100,176,64,80,88,124,89,104,138,96,89,68,45,44,176,0,22,176,2,37,176,2,37,1,176,1,35,62,0,176,2,35,62,177,1,2,6,12,176,10,35,101,66,176,11,35,66,1,176,1,35,63,0,176,2,35,63,177,1,2,6,12,176,6,35,101,66,176,7,35,66,176,1,22,1,45,44,176,128,176,2,67,80,176,1,176,2,67,84,91,88,33,35,16,176,32,26,201,27,138,16,237,89,45,44,176,89,43,45,44,138,16,229,45,64,153,9,33,72,32,85,32,1,30,85,31,72,3,85,31,30,1,15,30,63,30,175,30,3,77,75,38,31,76,75,51,31,75,70,37,31,38,52,16,85,37,51,36,85,25,19,255,31,7,4,255,31,6,3,255,31,74,73,51,31,73,70,37,31,19,51,18,85,5,1,3,85,4,51,3,85,31,3,1,15,3,63,3,175,3,3,71,70,25,31,235,70,1,35,51,34,85,28,51,27,85,22,51,21,85,17,1,15,85,16,51,15,85,15,15,79,15,2,31,15,207,15,2,15,15,255,15,2,6,2,1,0,85,1,51,0,85,111,0,127,0,175,0,239,0,4,16,0,1,128,22,1,5,1,184,1,144,177,84,83,43,43,75,184,7,255,82,75,176,9,80,91,176,1,136,176,37,83,176,1,136,176,64,81,90,176,6,136,176,0,85,90,91,88,177,1,1,142,89,133,141,141,0,66,29,75,176,50,83,88,176,32,29,89,75,176,100,83,88,176,16,29,177,22,0,66,89,115,115,43,43,94,115,116,117,43,43,43,43,43,116,43,115,116,43,43,43,43,43,43,43,43,43,43,43,43,43,115,116,43,43,43,24,94,0,0,0,6,20,0,23,0,78,5,182,0,23,0,117,5,182,5,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,72,0,20,0,145,0,0,255,236,0,0,0,0,255,236,0,0,0,0,255,236,0,0,254,20,255,236,0,0,5,182,0,19,252,148,255,237,254,133,255,234,254,169,255,236,0,24,254,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,139,0,129,0,221,0,152,0,143,0,142,0,153,0,136,0,129,1,15,0,138,0,0,0,0,0,31,0,31,0,31,0,31,0,81,0,119,0,255,1,123,1,236,2,106,2,131,2,174,2,217,3,21,3,65,3,95,3,116,3,150,3,175,3,241,4,26,4,91,4,185,4,251,5,70,5,163,5,197,6,52,6,145,6,199,6,251,7,27,7,68,7,100,7,187,8,65,8,128,8,219,9,25,9,85,9,138,9,184,10,8,10,57,10,108,10,148,10,195,10,225,11,31,11,86,11,156,11,217,12,44,12,121,12,204,12,240,13,36,13,75,13,143,13,191,13,230,14,18,14,54,14,79,14,114,14,147,14,169,14,200,15,36,15,121,15,180,16,7,16,84,16,148,17,40,17,102,17,148,17,210,18,16,18,39,18,127,18,185,18,250,19,79,19,163,19,214,20,40,20,104,20,165,20,204,21,23,21,71,21,128,21,172,21,238,22,6,22,75,22,133,22,133,22,182,23,1,23,83,23,161,23,245,24,26,24,149,24,203,25,71,25,148,25,207,25,237,25,245,26,127,26,149,26,205,26,217,27,19,27,99,27,130,27,193,27,241,28,19,28,69,28,108,28,165,28,221,28,243,29,8,29,30,29,123,29,140,29,157,29,174,29,191,29,209,29,221,30,43,30,55,30,72,30,89,30,106,30,124,30,141,30,158,30,175,30,193,31,25,31,42,31,59,31,76,31,93,31,110,31,128,31,174,32,25,32,42,32,59,32,76,32,94,32,111,32,177,33,24,33,40,33,56,33,72,33,88,33,105,33,122,34,5,34,17,34,33,34,49,34,65,34,82,34,99,34,116,34,133,34,151,34,255,35,15,35,31,35,47,35,63,35,79,35,96,35,166,36,12,36,28,36,44,36,60,36,77,36,93,36,180,36,197,36,214,36,230,36,247,37,7,37,19,37,31,37,48,37,64,37,81,37,97,37,114,37,131,37,148,37,164,37,181,37,198,37,206,38,58,38,75,38,91,38,108,38,124,38,141,38,158,38,170,38,182,38,199,38,215,38,232,38,248,39,9,39,25,39,42,39,59,39,71,39,87,39,104,39,121,39,201,40,34,40,51,40,68,40,85,40,102,40,119,40,136,40,147,40,158,40,175,40,198,40,210,40,222,40,239,41,0,41,12,41,23,41,76,41,93,41,110,41,121,41,133,41,150,41,166,41,178,41,190,41,248,42,45,42,62,42,78,42,90,42,101,42,118,42,134,42,151,42,222,43,39,43,56,43,72,43,89,43,105,43,123,43,140,43,239,44,105,44,122,44,138,44,149,44,161,44,178,44,195,44,212,44,228,44,245,45,5,45,17,45,29,45,46,45,62,45,73,45,84,45,101,45,117,45,178,46,4,46,21,46,37,46,54,46,70,46,87,46,103,46,121,46,138,46,156,46,173,46,185,46,197,46,214,46,231,46,248,47,8,47,26,47,43,47,59,47,76,47,93,47,110,47,126,47,165,47,248,48,119,49,22,49,39,49,56,49,73,49,89,49,100,49,111,49,152,49,193,49,215,49,255,50,31,50,84,50,123,50,180,50,230,51,5,51,78,51,95,51,103,51,120,51,138,51,156,51,173,51,191,51,208,51,227,51,235,51,243,52,18,52,26,52,34,52,42,52,50,52,139,52,147,52,155,52,193,52,201,52,209,53,6,53,14,53,50,53,58,53,113,53,121,53,129,53,232,53,240,54,60,54,144,54,162,54,180,54,196,54,212,54,228,54,245,55,7,55,107,55,208,56,6,56,103,56,197,57,18,57,76,57,166,57,210,57,218,58,44,58,52,58,95,58,202,58,210,59,16,59,92,59,168,59,237,60,37,60,93,60,186,61,16,61,95,61,185,61,203,61,220,61,236,61,252,62,13,62,31,62,111,62,128,62,202,62,210,62,218,62,236,62,244,63,83,63,166,63,229,63,246,64,7,64,55,64,63,64,134,64,142,64,150,64,223,64,231,65,44,65,137,65,193,65,210,66,1,66,60,66,68,66,76,66,84,66,92,66,100,66,108,66,116,66,179,66,187,66,195,66,244,67,43,67,91,67,149,67,219,68,35,68,97,68,175,69,15,69,86,69,94,69,186,70,21,70,52,70,124,70,132,70,202,71,35,71,91,71,107,71,155,71,209,72,20,72,73,72,81,72,117,72,125,72,133,72,170,72,178,73,19,73,27,73,76,73,131,73,180,73,239,74,52,74,125,74,184,75,8,75,101,75,169,75,186,76,37,76,53,76,131,76,139,76,147,76,165,76,173,77,6,77,88,77,96,77,112,77,128,77,177,77,214,77,253,78,14,78,30,78,47,78,64,78,82,78,100,78,117,78,134,78,155,78,176,78,184,78,218,78,247,79,21,79,29,79,58,79,105,79,154,79,180,79,242,80,90,80,122,80,138,81,36,81,44,81,52,81,87,81,123,81,135,81,160,81,211,82,24,82,134,82,248,83,110,83,212,84,44,84,160,84,244,84,252,85,75,85,98,85,121,85,144,85,167,86,10,86,62,86,99,86,151,86,174,86,210,87,50,87,98,87,227,88,44,88,62,88,80,88,125,88,137,88,149,88,188,88,227,89,2,89,33,89,64,89,117,89,183,89,252,90,77,90,110,90,211,91,39,91,39,91,39,91,39,91,39,91,39,91,39,91,39,91,39,91,39,91,39,91,39,91,39,91,39,92,113,92,204,92,221,92,229,93,108,93,167,94,11,94,28,94,45,94,57,94,69,94,87,94,140,94,195,94,211,94,227,95,64,95,151,95,224,96,49,96,58,96,67,96,76,96,122,96,153,96,170,96,187,96,203,96,219,97,78,97,153,97,237,98,59,98,155,98,254,99,63,99,128,99,214,100,44,100,143,100,244,101,105,101,224,102,140,103,48,103,56,103,64,103,157,103,246,104,47,104,103,104,121,104,139,105,1,105,13,105,128,105,243,106,157,107,59,107,209,108,58,108,125,108,191,109,3,109,51,109,96,109,134,109,172,110,144,111,27,111,129,111,223,112,49,112,130,112,215,113,67,113,123,113,180,114,6,114,85,114,168,114,251,115,7,115,19,115,80,115,140,115,205,116,16,116,88,116,172,116,230,117,30,117,93,117,162,117,221,118,29,118,115,118,198,119,66,119,185,119,197,119,209,120,2,120,52,120,60,120,111,120,173,120,241,121,48,121,113,121,174,121,236,122,48,122,115,122,191,123,11,123,67,123,122,123,232,124,75,124,193,125,45,125,53,125,70,125,87,125,172,125,252,126,68,126,135,126,204,127,21,127,85,127,150,127,218,128,30,128,111,128,189,128,197,128,214,128,230,128,248,129,9,129,17,129,25,129,42,129,58,129,139,129,218,129,236,129,253,130,15,130,33,130,51,130,68,130,144,130,218,130,235,130,251,131,13,131,30,131,48,131,65,131,73,131,81,131,99,131,116,131,134,131,151,131,168,131,184,131,202,131,219,131,237,131,254,132,16,132,33,132,76,132,119,132,137,132,155,132,167,132,178,132,190,132,202,133,16,133,86,133,148,133,156,133,246,134,100,134,201,135,39,135,129,135,212,136,43,136,121,136,196,137,19,137,102,137,176,137,239,138,45,138,138,138,146,138,158,138,170,138,182,138,194,138,211,138,228,138,246,139,8,139,26,139,44,139,62,139,80,139,98,139,116,139,137,139,157,139,175,139,193,139,211,139,229,139,247,140,9,140,27,140,45,140,66,140,86,140,98,140,110,140,127,140,144,140,161,140,177,140,195,140,213,140,231,140,249,141,11,141,29,141,47,141,65,141,86,141,106,141,123,141,140,141,152,141,164,141,176,141,188,141,205,141,222,141,240,142,2,142,20,142,38,142,56,142,74,142,92,142,110,142,131,142,151,142,168,142,184,142,201,142,217,142,234,142,251,143,12,143,28,143,40,143,52,143,64,143,76,143,93,143,110,143,127,143,143,143,160,143,176,143,193,143,210,143,227,143,243,143,255,144,11,144,23,144,35,144,52,144,69,144,86,144,102,144,114,144,166,144,225,145,29,145,106,145,194,145,250,146,50,146,123,146,205,146,245,147,24,147,59,147,68,147,131,147,173,147,238,148,78,148,147,148,222,148,230,149,9,149,17,149,110,149,122,149,246,150,2,150,14,150,113,150,129,150,145,150,162,150,178,150,199,150,216,150,233,150,250,151,12,151,29,151,46,151,63,151,74,151,91,151,103,151,121,151,129,151,147,151,155,151,173,151,181,151,189,151,206,151,218,0,0,0,2,0,193,0,0,4,10,5,182,0,3,0,7,0,21,183,4,3,5,2,4,3,7,0,0,47,50,47,51,1,47,51,47,51,49,48,19,33,17,33,55,33,17,33,193,3,73,252,183,104,2,121,253,135,5,182,250,74,104,4,230,0,2,0,152,255,227,1,137,5,182,0,3,0,14,0,43,64,20,3,9,9,2,4,4,15,16,1,1,12,2,12,6,79,89,12,22,2,3,0,63,63,43,17,18,0,57,24,47,17,18,1,57,17,51,51,17,51,49,48,1,35,3,51,3,52,51,50,22,21,20,6,35,34,38,1,70,105,51,207,225,120,58,63,64,57,52,68,1,147,4,35,250,180,136,70,66,64,71,63,0,0,2,0,133,3,166,2,176,5,182,0,3,0,7,0,31,64,13,0,3,7,4,3,4,8,9,6,2,7,3,3,0,63,51,205,50,17,18,1,57,57,17,51,17,51,49,48,1,3,35,3,33,3,35,3,1,63,40,105,41,2,43,41,104,41,5,182,253,240,2,16,253,240,2,16,0,0,2,0,51,0,0,4,246,5,182,0,27,0,31,0,153,64,85,8,31,28,21,4,20,9,17,12,12,9,18,15,14,11,4,10,19,19,20,22,29,30,7,4,6,23,4,1,0,25,4,24,5,5,6,20,6,10,33,3,26,23,3,24,10,24,32,33,8,4,12,13,12,78,89,28,1,13,31,0,16,17,16,78,89,25,21,17,79,13,1,79,17,1,13,17,13,17,5,23,19,3,10,5,0,47,51,63,51,18,57,57,47,47,93,93,17,51,51,43,17,0,51,51,17,51,51,43,17,0,51,51,17,18,1,57,57,17,23,51,17,18,57,57,17,51,17,18,23,57,17,18,23,57,17,51,17,18,23,57,50,50,17,51,17,18,23,57,49,48,1,3,33,21,33,3,35,19,33,3,35,19,33,53,33,19,33,53,33,19,51,3,33,19,51,3,33,21,1,33,19,33,3,213,66,1,27,254,205,84,137,84,254,209,82,136,80,254,250,1,31,68,254,235,1,43,82,139,82,1,49,84,134,84,1,8,252,229,1,47,66,254,209,3,131,254,172,129,254,82,1,174,254,82,1,174,129,1,84,127,1,180,254,76,1,180,254,76,127,254,172,1,84,0,3,0,131,255,137,4,12,6,18,0,32,0,38,0,45,0,102,64,53,39,17,37,29,23,4,4,42,20,13,5,33,0,0,25,5,17,9,5,46,47,37,13,6,13,77,89,3,6,36,14,42,14,76,89,29,42,43,28,20,28,77,89,23,42,20,6,20,6,20,5,22,5,0,47,47,18,57,57,47,47,18,57,50,43,17,0,51,17,51,43,17,0,51,17,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,51,51,17,51,51,51,17,51,49,48,1,20,6,7,21,35,53,34,38,39,53,22,22,51,17,38,38,53,52,54,55,53,51,21,22,23,7,38,39,17,30,2,7,52,38,39,17,54,1,20,22,23,17,6,6,4,12,204,183,129,112,210,67,83,217,89,205,165,203,167,129,184,171,52,149,154,157,156,74,170,89,128,217,253,221,90,111,99,102,1,193,136,177,23,232,223,35,31,156,37,47,1,184,65,172,136,131,168,18,182,180,5,69,131,59,11,254,78,50,95,123,101,72,89,44,254,123,30,3,7,76,92,41,1,131,16,93,0,0,5,0,104,255,236,6,45,5,203,0,9,0,21,0,33,0,45,0,49,0,69,64,36,0,16,5,10,22,40,28,34,34,46,40,10,48,16,6,50,51,3,13,31,43,13,43,13,43,48,49,6,48,24,25,37,25,7,19,7,0,63,51,63,51,63,63,18,57,57,47,47,17,51,17,51,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,19,20,22,51,50,17,16,35,34,6,5,20,6,35,34,38,53,52,54,51,50,22,1,20,22,51,50,54,53,52,38,35,34,6,5,20,6,35,34,38,53,52,54,51,50,22,1,1,35,1,242,74,83,164,164,83,74,1,202,153,148,140,155,149,146,145,156,1,166,74,84,84,80,80,84,84,74,1,203,153,148,142,153,149,146,142,159,254,254,252,213,147,3,43,4,2,170,170,1,84,1,82,168,170,228,233,238,223,227,230,238,252,219,171,169,167,173,171,165,165,171,227,233,238,222,227,230,235,3,32,250,74,5,182,0,0,3,0,113,255,236,5,211,5,205,0,11,0,21,0,53,0,81,64,48,19,22,0,29,6,35,42,43,46,43,45,35,14,38,25,29,22,9,54,55,51,12,73,89,51,19,15,39,45,14,48,5,47,3,25,38,3,42,42,32,47,18,32,9,74,89,32,4,0,63,43,0,24,63,18,57,47,23,57,18,23,57,63,43,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,20,22,23,54,54,53,52,38,35,34,6,19,50,55,1,14,2,21,20,22,37,52,54,55,46,2,53,52,54,51,50,22,21,20,6,7,1,54,54,55,51,2,7,1,35,39,6,6,35,34,38,1,158,72,87,129,101,103,86,89,111,155,241,159,254,75,111,92,44,155,254,185,139,180,85,61,36,196,175,162,186,136,157,1,151,56,67,23,168,68,137,1,43,229,185,118,244,150,215,237,4,147,69,125,88,75,127,83,77,97,96,251,157,154,1,168,68,89,102,65,117,137,250,130,200,102,95,98,106,57,150,168,167,149,107,181,93,254,121,62,167,99,254,226,148,254,221,178,106,92,212,0,0,1,0,133,3,166,1,63,5,182,0,3,0,20,183,0,3,3,4,5,2,3,3,0,63,205,17,18,1,57,17,51,49,48,1,3,35,3,1,63,40,105,41,5,182,253,240,2,16,0,0,1,0,82,254,188,2,33,5,182,0,13,0,28,64,12,7,0,10,4,0,4,14,15,11,39,3,3,0,63,63,17,18,1,57,57,17,51,17,51,49,48,19,16,18,55,51,6,2,21,20,18,23,35,38,2,82,155,146,162,144,145,148,139,160,147,154,2,49,1,9,1,206,174,193,254,50,244,240,254,54,189,170,1,198,0,0,1,0,61,254,188,2,12,5,182,0,13,0,28,64,12,4,10,7,0,10,0,14,15,10,3,4,39,0,63,63,17,18,1,57,57,17,51,17,51,49,48,1,16,2,7,35,54,18,53,52,2,39,51,22,18,2,12,155,146,160,139,148,145,144,162,147,154,2,49,254,249,254,58,168,188,1,203,240,244,1,206,193,175,254,49,0,1,0,86,2,127,4,14,6,20,0,14,0,48,64,27,3,5,4,1,7,13,10,9,11,9,15,16,4,10,1,13,2,12,12,13,10,7,4,6,8,14,0,0,63,196,50,23,57,17,51,17,51,17,51,17,18,1,23,57,49,48,1,3,37,23,5,19,7,3,3,39,19,37,55,5,3,2,145,43,1,142,26,254,131,248,172,176,160,176,242,254,135,29,1,135,43,6,20,254,117,111,182,31,254,186,94,1,106,254,150,94,1,70,31,182,111,1,139,0,0,1,0,104,0,227,4,41,4,195,0,11,0,40,64,19,0,4,4,9,5,5,12,13,3,7,8,7,80,89,0,15,8,1,8,0,47,93,51,43,17,0,51,17,18,1,57,17,51,51,17,51,49,48,1,33,21,33,17,35,17,33,53,33,17,51,2,141,1,156,254,100,139,254,102,1,154,139,3,23,138,254,86,1,170,138,1,172,0,1,0,63,254,248,1,109,0,238,0,8,0,17,181,5,0,9,10,5,0,0,47,205,17,18,1,57,57,49,48,37,23,6,2,7,35,54,18,55,1,94,15,26,98,53,125,27,65,13,238,23,100,254,247,114,104,1,50,92,0,1,0,84,1,217,2,63,2,113,0,3,0,17,181,2,0,5,4,0,1,0,47,51,17,18,1,57,57,49,48,19,53,33,21,84,1,235,1,217,152,152,0,1,0,152,255,227,1,137,0,242,0,11,0,24,64,11,6,0,0,12,13,9,3,79,89,9,22,0,63,43,17,18,1,57,17,51,49,48,55,52,54,51,50,22,21,20,6,35,34,38,152,61,57,58,65,66,57,51,67,106,67,69,69,67,65,70,63,0,0,1,0,20,0,0,2,219,5,182,0,3,0,19,183,2,0,4,5,3,3,2,18,0,63,63,17,18,1,57,57,49,48,1,1,35,1,2,219,253,223,166,2,33,5,182,250,74,5,182,0,2,0,102,255,236,4,45,5,205,0,11,0,23,0,40,64,20,18,0,12,6,0,6,25,24,9,21,75,89,9,7,3,15,75,89,3,25,0,63,43,0,24,63,43,17,18,1,57,57,17,51,17,51,49,48,1,16,2,35,34,2,17,16,18,51,50,18,1,16,18,51,50,18,17,16,2,35,34,2,4,45,239,246,236,246,238,244,238,247,252,225,150,164,166,149,149,166,164,150,2,221,254,133,254,138,1,127,1,114,1,126,1,114,254,126,254,146,254,193,254,221,1,39,1,59,1,59,1,37,254,223,0,1,0,188,0,0,2,203,5,182,0,10,0,36,64,16,9,0,1,8,1,11,12,4,9,7,7,1,9,6,1,24,0,63,63,18,57,47,18,57,17,18,1,57,57,17,51,51,49,48,33,35,17,52,55,6,6,7,39,1,51,2,203,162,8,21,52,212,88,1,131,140,4,18,130,116,21,46,172,114,1,43,0,1,0,100,0,0,4,37,5,203,0,25,0,43,64,23,24,1,7,19,0,19,14,1,4,26,27,16,10,75,89,16,7,1,24,76,89,1,24,0,63,43,0,24,63,43,17,18,1,23,57,17,51,17,51,49,48,33,33,53,1,62,2,53,52,38,35,34,6,7,39,54,51,50,22,21,20,2,7,1,21,33,4,37,252,63,1,129,176,112,56,142,126,91,163,100,88,202,238,206,234,156,214,254,192,2,240,143,1,131,178,152,144,83,117,137,60,79,113,168,211,178,139,254,240,208,254,199,8,0,0,1,0,94,255,236,4,27,5,203,0,39,0,67,64,36,27,0,19,7,7,0,3,22,34,13,6,40,41,3,23,22,23,22,75,89,23,23,10,37,37,30,75,89,37,7,10,17,75,89,10,25,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,0,57,17,18,1,23,57,17,51,17,51,49,48,1,20,6,7,21,22,22,21,20,4,33,34,38,39,53,22,22,51,32,17,16,33,35,53,51,50,54,53,52,38,35,34,6,7,39,54,54,51,50,22,3,238,157,144,176,170,254,222,254,245,116,193,91,95,215,96,1,123,254,94,144,146,171,200,147,126,96,170,109,84,90,235,130,213,236,4,94,140,178,30,8,22,180,146,209,225,35,44,158,47,49,1,41,1,10,143,151,134,107,122,52,70,112,71,81,195,0,0,2,0,43,0,0,4,106,5,190,0,10,0,18,0,60,64,30,18,5,9,2,2,11,7,3,0,3,5,3,19,20,1,5,18,5,76,89,9,15,7,18,18,3,7,6,3,24,0,63,63,18,57,47,18,57,51,43,17,0,51,17,18,1,23,57,17,51,51,51,17,51,17,51,49,48,1,35,17,35,17,33,53,1,51,17,51,33,17,52,55,35,6,7,1,4,106,217,159,253,57,2,182,176,217,254,136,10,8,48,42,254,55,1,80,254,176,1,80,145,3,221,252,41,1,230,143,180,96,63,253,118,0,1,0,133,255,236,4,29,5,182,0,26,0,58,64,31,15,3,25,20,8,20,23,3,4,28,27,0,17,75,89,0,0,6,21,21,24,76,89,21,6,6,12,75,89,6,25,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,49,48,1,50,4,21,20,0,35,34,39,53,22,22,51,50,54,53,16,33,34,7,39,19,33,21,33,3,54,2,45,231,1,9,254,223,254,247,130,70,208,101,176,195,254,137,95,159,86,55,2,215,253,183,37,115,3,125,229,199,227,254,254,79,160,45,51,166,157,1,50,29,55,2,172,153,254,73,23,0,0,2,0,117,255,236,4,47,5,203,0,22,0,36,0,68,64,35,26,17,11,33,33,0,0,6,17,3,38,37,12,11,14,29,77,89,11,14,14,20,3,20,23,75,89,20,25,3,8,77,89,3,7,0,63,43,0,24,63,43,17,18,0,57,24,47,57,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,49,48,19,16,0,33,50,23,21,38,35,34,2,3,51,54,51,50,22,21,20,2,35,34,0,5,50,54,53,52,38,35,34,6,6,21,20,22,22,117,1,79,1,72,113,65,77,99,235,248,12,12,110,238,197,227,249,212,227,254,246,1,235,142,157,146,145,90,150,89,80,147,2,113,1,175,1,171,19,143,25,254,219,254,198,172,238,204,228,254,251,1,85,200,179,169,145,166,74,130,70,103,178,104,0,1,0,94,0,0,4,43,5,182,0,6,0,31,64,16,1,5,5,0,2,3,7,8,3,2,76,89,3,6,0,24,0,63,63,43,17,18,1,23,57,17,51,49,48,33,1,33,53,33,21,1,1,29,2,94,252,227,3,205,253,170,5,29,153,133,250,207,0,3,0,104,255,236,4,41,5,203,0,22,0,34,0,46,0,77,64,41,23,15,38,20,44,3,29,9,9,3,6,17,20,15,6,47,48,6,17,41,32,41,32,75,89,41,41,12,0,12,26,77,89,12,25,0,35,77,89,0,7,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,0,57,57,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,50,22,21,20,6,7,22,22,21,20,6,35,34,38,53,52,37,38,38,53,52,54,3,20,22,51,50,54,53,52,38,39,6,6,1,34,6,21,20,22,23,54,54,53,52,38,2,72,200,234,134,147,178,150,254,221,234,252,1,50,138,120,235,119,167,151,149,166,156,194,149,134,1,58,125,142,118,159,143,119,145,5,203,186,164,108,178,73,85,187,123,182,217,205,188,251,140,78,181,112,159,189,251,166,120,134,140,122,97,151,71,64,155,3,103,120,100,92,132,66,60,138,92,101,119,0,0,2,0,106,255,236,4,37,5,203,0,23,0,37,0,65,64,34,27,17,34,10,10,0,0,4,17,3,38,39,14,30,77,89,11,20,14,14,2,20,20,24,75,89,20,7,2,7,77,89,2,25,0,63,43,0,24,63,43,17,18,0,57,24,47,18,57,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,16,33,34,39,53,22,51,50,18,19,35,6,6,35,34,38,53,52,18,51,50,22,18,1,34,6,21,20,22,51,50,54,54,53,52,38,38,4,37,253,104,116,68,80,102,240,245,11,12,55,182,114,194,228,255,208,149,223,120,254,20,143,156,144,147,91,153,88,82,147,3,70,252,166,20,143,26,1,41,1,51,83,87,232,208,228,1,8,153,254,219,1,48,184,164,144,165,74,128,70,105,178,102,0,0,2,0,152,255,227,1,137,4,100,0,11,0,21,0,40,64,20,16,6,6,12,0,0,22,23,14,19,79,89,14,16,9,3,79,89,9,22,0,63,43,0,24,63,43,17,18,1,57,17,51,51,17,51,49,48,55,52,54,51,50,22,21,20,6,35,34,38,17,52,51,50,21,20,6,35,34,38,152,61,57,58,65,66,57,51,67,118,123,66,57,51,67,106,67,69,69,67,65,70,63,3,187,135,135,65,70,63,0,2,0,63,254,248,1,133,4,100,0,8,0,18,0,34,64,16,1,13,13,5,9,9,20,19,11,16,79,89,11,16,5,0,0,47,205,63,43,17,18,1,57,17,51,51,17,51,49,48,37,23,6,2,7,35,54,18,55,3,52,51,50,21,20,6,35,34,38,1,94,15,26,98,53,125,27,65,13,21,119,123,66,57,58,61,238,23,100,254,247,114,104,1,50,92,2,239,135,135,65,70,70,0,0,1,0,104,0,242,4,41,4,217,0,6,0,21,64,9,4,0,5,1,4,7,8,3,0,0,47,47,17,18,1,23,57,49,48,37,1,53,1,21,1,1,4,41,252,63,3,193,252,242,3,14,242,1,166,98,1,223,149,254,141,254,184,0,0,2,0,119,1,193,4,25,3,227,0,3,0,7,0,42,64,21,7,2,4,0,2,0,9,8,4,5,80,89,4,1,0,80,89,15,1,1,1,0,47,93,43,0,24,47,43,17,18,1,57,57,17,51,17,51,49,48,19,53,33,21,1,53,33,21,119,3,162,252,94,3,162,3,90,137,137,254,103,137,137,0,0,1,0,104,0,242,4,41,4,217,0,6,0,21,64,9,5,1,2,0,4,7,8,6,3,0,47,47,17,18,1,23,57,49,48,19,1,1,53,1,21,1,104,3,15,252,241,3,193,252,63,1,137,1,70,1,117,149,254,33,98,254,90,0,0,2,0,27,255,227,3,57,5,203,0,27,0,38,0,57,64,29,33,28,27,0,7,19,19,0,28,14,4,39,40,0,0,36,16,36,30,79,89,36,22,16,10,73,89,16,4,0,63,43,0,24,63,43,17,18,0,57,24,47,17,18,1,23,57,17,51,17,51,17,51,49,48,1,53,52,54,55,54,54,53,52,38,35,34,6,7,39,54,51,50,22,21,20,6,6,7,6,6,21,21,3,52,51,50,22,21,20,6,35,34,38,1,33,72,98,136,71,131,123,79,150,97,59,189,206,191,212,39,76,126,101,65,178,120,58,63,64,57,52,68,1,147,54,117,151,84,115,116,82,102,111,37,49,135,99,188,171,73,111,99,110,86,114,95,33,254,215,136,70,66,64,71,63,0,2,0,121,255,70,6,184,5,180,0,53,0,63,0,69,64,34,35,46,54,14,59,7,20,27,0,0,41,20,14,46,5,64,65,24,56,56,4,61,8,17,11,17,11,17,43,31,50,3,38,43,0,47,51,63,51,18,57,57,47,47,18,57,50,51,51,17,51,17,18,1,23,57,17,51,17,51,51,17,51,17,51,49,48,1,20,6,6,35,34,38,39,35,6,6,35,34,38,53,52,54,51,50,22,23,3,21,20,51,50,54,53,52,2,36,35,34,4,2,21,16,0,33,50,55,21,6,35,32,0,17,16,18,36,33,50,4,18,1,20,51,50,19,19,38,35,34,6,6,184,88,160,104,86,118,11,8,40,149,102,150,169,236,192,68,172,69,25,133,91,114,148,254,239,177,223,254,182,174,1,66,1,47,210,226,192,244,254,149,254,111,214,1,140,1,0,215,1,79,183,251,246,195,207,18,14,72,85,130,147,2,217,142,236,130,104,81,87,98,205,176,204,255,25,22,254,42,22,178,215,172,181,1,16,147,185,254,169,225,254,207,254,184,86,133,84,1,143,1,102,1,4,1,150,223,181,254,179,254,164,254,1,57,1,5,20,180,0,2,0,0,0,0,5,16,5,188,0,7,0,14,0,57,64,30,2,14,11,8,1,5,0,3,0,7,3,4,7,4,16,15,14,2,73,89,11,5,14,14,4,5,3,0,4,18,0,63,51,63,18,57,47,18,57,43,17,18,1,57,57,17,51,17,51,17,18,23,57,49,48,33,3,33,3,35,1,51,1,1,3,38,39,6,7,3,4,96,182,253,182,180,172,2,66,143,2,63,254,101,170,33,35,22,41,172,1,209,254,47,5,188,250,68,2,106,1,197,86,125,96,115,254,59,0,3,0,201,0,0,4,190,5,182,0,14,0,23,0,32,0,73,64,38,19,4,29,10,15,25,25,14,10,4,7,14,4,33,34,8,15,24,15,24,74,89,15,15,14,0,14,25,74,89,14,18,0,23,74,89,0,3,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,0,57,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,19,33,32,4,21,20,6,7,21,4,17,20,4,35,33,19,33,50,54,53,52,38,35,35,17,17,33,50,54,53,52,38,35,201,1,157,1,35,1,4,145,139,1,77,254,247,238,254,2,170,1,24,180,158,176,192,250,1,49,177,179,183,187,5,182,174,188,130,169,25,10,57,254,219,196,220,3,68,113,134,123,109,253,145,253,221,137,146,136,128,0,0,1,0,125,255,236,4,207,5,203,0,22,0,38,64,20,3,14,20,9,14,3,23,24,18,0,73,89,18,4,11,6,73,89,11,19,0,63,43,0,24,63,43,17,18,1,23,57,17,51,49,48,1,34,0,17,16,0,51,50,55,21,6,35,32,0,17,52,18,36,51,50,23,7,38,3,59,241,254,233,1,13,249,153,196,152,223,254,189,254,161,169,1,63,216,230,172,72,166,5,51,254,191,254,233,254,225,254,199,55,149,57,1,136,1,105,226,1,84,184,84,146,78,0,0,2,0,201,0,0,5,88,5,182,0,8,0,17,0,40,64,20,14,4,9,0,4,0,18,19,5,13,74,89,5,3,4,14,74,89,4,18,0,63,43,0,24,63,43,17,18,1,57,57,17,51,17,51,49,48,1,16,0,33,33,17,33,32,0,3,16,0,33,35,17,51,32,0,5,88,254,119,254,143,254,107,1,192,1,85,1,122,180,254,225,254,229,247,207,1,48,1,50,2,233,254,150,254,129,5,182,254,134,254,167,1,30,1,34,251,112,1,43,0,0,1,0,201,0,0,3,248,5,182,0,11,0,58,64,31,6,10,10,1,4,0,8,1,4,12,13,6,9,73,89,6,6,1,2,2,5,73,89,2,3,1,10,73,89,1,18,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,49,48,33,33,17,33,21,33,17,33,21,33,17,33,3,248,252,209,3,47,253,123,2,94,253,162,2,133,5,182,151,254,41,150,253,230,0,1,0,201,0,0,3,248,5,182,0,9,0,50,64,26,6,0,0,1,3,8,1,3,10,11,6,9,73,89,6,6,1,2,2,5,73,89,2,3,1,18,0,63,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,49,48,33,35,17,33,21,33,17,33,21,33,1,115,170,3,47,253,123,2,94,253,162,5,182,151,253,233,151,0,0,1,0,125,255,236,5,61,5,203,0,27,0,58,64,31,20,8,25,2,2,14,27,8,4,28,29,0,27,73,89,0,0,5,12,12,17,73,89,12,4,5,23,73,89,5,19,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,49,48,1,33,17,6,6,35,32,0,17,52,18,36,51,50,23,7,38,35,32,0,17,16,0,33,50,55,17,33,3,76,1,241,116,240,158,254,180,254,142,183,1,88,231,234,202,66,198,183,254,245,254,212,1,33,1,24,152,145,254,185,2,254,253,57,37,38,1,139,1,100,228,1,87,181,86,150,84,254,194,254,230,254,216,254,206,35,1,194,0,1,0,201,0,0,5,31,5,182,0,11,0,51,64,25,9,1,1,0,8,4,4,5,0,5,13,12,8,3,73,89,8,8,5,10,6,3,1,5,18,0,63,51,63,51,18,57,47,43,17,18,1,57,57,17,51,17,51,17,51,17,51,49,48,33,35,17,33,17,35,17,51,17,33,17,51,5,31,170,252,254,170,170,3,2,170,2,176,253,80,5,182,253,146,2,110,0,0,1,0,84,0,0,2,86,5,182,0,11,0,55,64,28,5,1,10,3,8,0,0,3,1,3,12,13,9,4,6,4,74,89,6,3,10,3,1,3,74,89,1,18,0,63,43,17,0,51,24,63,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,49,48,33,33,53,55,17,39,53,33,21,7,17,23,2,86,253,254,172,172,2,2,172,172,98,35,4,170,37,98,98,37,251,86,35,0,1,255,96,254,127,1,104,5,182,0,13,0,29,64,13,11,8,8,14,15,9,3,0,5,73,89,0,34,0,63,43,0,24,63,17,18,1,57,17,51,49,48,3,34,39,53,22,51,50,54,53,17,51,17,20,6,12,94,54,71,77,99,103,170,192,254,127,27,145,20,120,113,5,182,250,88,190,209,0,0,1,0,201,0,0,4,233,5,182,0,11,0,42,64,21,8,4,4,5,5,2,11,10,0,5,13,12,2,8,5,9,6,3,1,5,18,0,63,51,63,51,18,57,57,17,18,1,23,57,17,51,17,51,49,48,33,35,1,7,17,35,17,51,17,1,51,1,4,233,200,253,235,153,170,170,2,151,201,253,180,2,197,136,253,195,5,182,253,43,2,213,253,133,0,1,0,201,0,0,3,248,5,182,0,5,0,31,64,14,3,0,0,4,6,7,1,3,0,3,73,89,0,18,0,63,43,0,24,63,17,18,1,57,57,17,51,49,48,51,17,51,17,33,21,201,170,2,133,5,182,250,228,154,0,1,0,201,0,0,6,113,5,182,0,19,0,50,64,24,8,5,5,6,11,14,14,13,6,13,20,21,1,10,17,3,6,11,7,3,14,0,6,18,0,63,51,51,63,51,18,23,57,17,18,1,57,57,17,51,17,51,17,51,17,51,49,48,33,1,35,22,21,17,35,17,33,1,51,1,51,17,35,17,52,55,35,1,3,80,254,16,8,14,157,1,0,1,207,8,1,211,254,170,14,8,254,12,5,16,154,212,252,94,5,182,251,74,4,182,250,74,3,174,162,190,250,242,0,1,0,201,0,0,5,63,5,182,0,16,0,46,64,21,9,6,6,7,1,15,15,0,7,0,17,18,11,3,7,15,8,3,1,7,18,0,63,51,63,51,18,57,57,17,18,1,57,57,17,51,17,51,17,51,17,51,49,48,33,35,1,35,22,21,17,35,17,51,1,51,38,2,55,17,51,5,63,194,252,225,8,16,157,192,3,29,8,2,14,2,159,4,203,216,180,252,193,5,182,251,58,27,1,37,63,3,71,0,0,2,0,125,255,236,5,190,5,205,0,11,0,23,0,40,64,20,18,0,12,6,0,6,25,24,9,21,73,89,9,4,3,15,73,89,3,19,0,63,43,0,24,63,43,17,18,1,57,57,17,51,17,51,49,48,1,16,0,33,32,0,17,16,0,33,32,0,1,16,18,51,50,18,17,16,2,35,34,2,5,190,254,157,254,196,254,189,254,161,1,96,1,68,1,59,1,98,251,115,253,241,243,248,247,242,243,253,2,221,254,161,254,110,1,139,1,104,1,101,1,137,254,112,254,160,254,215,254,205,1,50,1,42,1,39,1,49,254,205,0,2,0,201,0,0,4,104,5,182,0,9,0,18,0,52,64,26,10,5,5,6,14,0,6,0,19,20,10,4,74,89,10,10,6,7,7,18,74,89,7,3,6,18,0,63,63,43,17,18,0,57,24,47,43,17,18,1,57,57,17,51,17,51,17,51,49,48,1,20,4,33,35,17,35,17,33,32,1,51,50,54,53,52,38,35,35,4,104,254,209,254,230,172,170,1,123,2,36,253,11,153,226,202,190,201,190,4,12,222,239,253,193,5,182,253,27,146,161,145,142,0,0,2,0,125,254,164,5,190,5,205,0,15,0,27,0,52,64,27,16,10,22,0,0,4,3,10,4,28,29,3,13,7,13,25,73,89,13,4,7,19,73,89,5,7,19,0,63,198,43,0,24,63,43,17,18,0,57,17,18,1,23,57,17,51,17,51,49,48,1,16,2,7,1,35,1,7,32,0,17,16,0,33,32,0,1,16,18,51,50,18,17,16,2,35,34,2,5,190,226,206,1,92,247,254,227,55,254,189,254,161,1,96,1,68,1,59,1,98,251,115,253,241,243,248,247,242,243,253,2,221,254,231,254,140,66,254,150,1,74,2,1,139,1,104,1,101,1,137,254,112,254,160,254,215,254,205,1,50,1,42,1,39,1,49,254,205,0,2,0,201,0,0,4,207,5,182,0,12,0,21,0,72,64,37,13,1,1,2,12,9,17,7,11,10,10,7,9,2,4,22,23,9,13,0,13,0,74,89,13,13,2,3,3,21,73,89,3,3,11,2,18,0,63,51,63,43,17,18,0,57,24,47,43,17,18,0,57,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,49,48,1,17,35,17,33,32,4,21,16,5,1,35,1,37,51,50,54,53,52,38,35,35,1,115,170,1,145,1,13,1,1,254,218,1,141,201,254,158,254,207,233,180,168,171,189,221,2,96,253,160,5,182,206,207,254,222,102,253,111,2,96,146,143,143,145,128,0,1,0,106,255,236,4,2,5,203,0,36,0,52,64,27,30,19,12,0,0,24,19,5,4,37,38,12,30,3,22,22,27,73,89,22,4,3,9,73,89,3,19,0,63,43,0,24,63,43,17,18,0,57,57,17,18,1,23,57,17,51,17,51,49,48,1,20,4,35,32,39,53,22,22,51,50,54,53,52,38,38,39,38,38,53,52,54,51,50,23,7,38,35,34,6,21,20,22,22,23,22,22,4,2,254,232,240,254,252,140,90,212,104,170,172,61,143,146,204,175,254,209,218,183,53,181,171,135,152,56,133,137,230,173,1,133,193,216,67,164,38,44,129,115,76,97,82,52,73,200,161,169,200,80,148,76,116,103,76,97,81,49,82,188,0,0,1,0,18,0,0,4,90,5,182,0,7,0,36,64,18,0,1,5,1,3,3,8,9,7,3,4,3,73,89,4,3,1,18,0,63,63,43,17,0,51,17,18,1,23,57,17,51,49,48,33,35,17,33,53,33,21,33,2,139,170,254,49,4,72,254,49,5,31,151,151,0,0,1,0,186,255,236,5,25,5,182,0,17,0,37,64,17,16,1,10,7,1,7,19,18,17,8,3,4,13,73,89,4,19,0,63,43,0,24,63,51,17,18,1,57,57,17,51,17,51,49,48,1,17,20,0,33,32,0,53,17,51,17,20,22,51,50,54,53,17,5,25,254,210,254,248,254,248,254,223,170,200,194,185,200,5,182,252,78,250,254,226,1,32,252,3,174,252,70,183,196,197,184,3,184,0,1,0,0,0,0,4,195,5,182,0,10,0,26,64,11,1,4,12,11,8,3,0,4,3,3,18,0,63,63,51,18,57,17,18,1,57,57,49,48,1,51,1,35,1,51,1,22,23,54,55,4,12,183,253,241,168,253,244,180,1,80,58,34,36,58,5,182,250,74,5,182,252,78,163,154,162,161,0,1,0,27,0,0,7,76,5,182,0,25,0,36,64,16,25,10,27,26,21,14,14,5,9,24,17,10,3,1,9,18,0,63,51,63,51,51,18,57,57,17,51,17,18,1,57,57,49,48,33,35,1,38,38,39,6,7,1,35,1,51,19,22,23,54,55,1,51,1,22,23,54,55,19,51,5,197,168,254,217,21,52,1,22,48,254,226,168,254,123,180,231,48,22,27,53,1,6,180,1,19,48,33,19,53,230,180,3,211,65,198,20,132,157,252,51,5,182,252,121,190,154,183,175,3,121,252,127,155,195,142,204,3,133,0,0,1,0,8,0,0,4,150,5,182,0,11,0,35,64,18,4,6,5,11,10,0,6,13,12,2,8,4,9,6,3,1,4,18,0,63,51,63,51,18,57,57,17,18,1,23,57,49,48,33,35,1,1,35,1,1,51,1,1,51,1,4,150,193,254,119,254,112,180,1,230,254,59,188,1,107,1,110,181,254,59,2,131,253,125,2,252,2,186,253,189,2,67,253,76,0,0,1,0,0,0,0,4,123,5,182,0,8,0,32,64,15,4,5,2,5,7,3,9,10,0,5,1,7,3,5,18,0,63,63,51,18,57,17,18,1,23,57,17,51,49,48,1,1,51,1,17,35,17,1,51,2,61,1,134,184,254,24,172,254,25,186,2,219,2,219,252,129,253,201,2,47,3,135,0,1,0,82,0,0,4,63,5,182,0,9,0,43,64,23,8,1,3,7,0,7,4,1,4,10,11,5,4,73,89,5,3,1,8,73,89,1,18,0,63,43,0,24,63,43,17,18,1,23,57,17,51,17,51,49,48,33,33,53,1,33,53,33,21,1,33,4,63,252,19,3,8,253,16,3,191,252,248,3,30,133,4,152,153,133,251,105,0,1,0,166,254,188,2,111,5,182,0,7,0,32,64,14,6,1,4,0,1,0,8,9,5,2,3,6,1,39,0,63,51,63,51,17,18,1,57,57,17,51,17,51,49,48,1,33,17,33,21,33,17,33,2,111,254,55,1,201,254,223,1,33,254,188,6,250,141,250,33,0,0,1,0,23,0,0,2,221,5,182,0,3,0,19,183,3,1,4,5,3,3,2,18,0,63,63,17,18,1,57,57,49,48,19,1,35,1,186,2,35,166,253,224,5,182,250,74,5,182,0,0,1,0,51,254,188,1,252,5,182,0,7,0,32,64,14,3,0,1,6,0,6,8,9,0,7,39,3,4,3,0,63,51,63,51,17,18,1,57,57,17,51,17,51,49,48,23,33,17,33,53,33,17,33,51,1,33,254,223,1,201,254,55,182,5,223,141,249,6,0,0,1,0,49,2,39,4,35,5,193,0,6,0,24,64,9,0,3,7,8,5,2,0,4,2,0,47,47,51,18,57,17,18,1,57,57,49,48,19,1,51,1,35,1,1,49,1,178,99,1,221,152,254,140,254,178,2,39,3,154,252,102,2,233,253,23,0,1,255,252,254,197,3,154,255,72,0,3,0,17,181,0,5,1,4,1,2,0,47,51,17,1,51,17,51,49,48,1,33,53,33,3,154,252,98,3,158,254,197,131,0,1,1,137,4,217,3,18,6,33,0,9,0,19,182,0,4,11,10,6,128,1,0,47,26,205,17,18,1,57,57,49,48,1,35,38,38,39,53,51,22,22,23,3,18,110,65,178,40,203,32,114,44,4,217,52,192,63,21,69,181,53,0,2,0,94,255,236,3,205,4,90,0,25,0,36,0,71,64,37,34,8,11,30,30,25,25,18,8,3,37,38,1,2,11,30,71,89,2,11,11,0,21,21,15,70,89,21,16,5,26,70,89,5,22,0,21,0,63,63,43,0,24,63,43,17,18,0,57,24,47,57,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,49,48,33,39,35,6,6,35,34,38,53,16,37,55,53,52,38,35,34,7,39,54,54,51,50,22,21,17,37,50,54,53,53,7,6,6,21,20,22,3,82,33,8,82,163,122,163,185,2,19,186,111,122,137,173,51,81,193,97,196,189,254,14,155,177,166,198,175,109,156,103,73,168,155,1,76,16,6,68,129,123,84,127,44,50,174,192,253,20,117,170,153,99,7,7,109,115,90,94,0,2,0,176,255,236,4,117,6,20,0,19,0,31,0,68,64,34,10,23,23,15,15,12,29,3,12,3,32,33,13,0,12,21,18,17,10,17,6,0,6,26,70,89,6,22,0,20,70,89,0,16,0,63,43,0,24,63,43,17,18,0,57,57,17,51,24,63,63,17,18,1,57,57,17,51,17,51,17,51,17,51,49,48,1,50,18,17,16,2,35,34,38,39,35,7,35,17,51,17,20,7,51,54,23,34,6,21,20,22,51,50,54,53,52,38,2,174,216,239,241,214,107,177,60,12,35,119,166,8,8,116,204,170,150,154,170,153,150,150,4,90,254,217,254,242,254,242,254,213,79,82,141,6,20,254,134,127,101,164,139,195,231,231,199,223,209,214,210,0,0,1,0,115,255,236,3,139,4,92,0,22,0,38,64,20,15,3,3,21,9,3,24,23,6,13,70,89,6,16,0,18,70,89,0,22,0,63,43,0,24,63,43,17,18,1,23,57,17,51,49,48,5,34,0,17,16,0,51,50,22,23,7,38,38,35,32,17,20,22,51,50,55,21,6,2,102,238,254,251,1,9,245,79,158,45,51,55,130,50,254,178,163,160,137,144,110,20,1,37,1,12,1,19,1,44,34,23,141,22,29,254,86,202,216,59,147,57,0,2,0,115,255,236,4,55,6,20,0,18,0,31,0,66,64,33,29,6,23,0,14,14,17,6,17,32,33,18,21,15,0,0,1,1,12,3,9,9,26,70,89,9,16,3,19,70,89,3,22,0,63,43,0,24,63,43,17,18,0,57,57,17,51,24,63,63,17,18,1,57,57,17,51,17,51,51,17,51,49,48,37,35,6,35,34,2,17,16,18,51,50,23,51,39,39,17,51,17,35,37,50,54,53,53,52,38,35,34,6,21,20,22,3,154,9,115,229,215,239,240,214,223,119,13,7,4,166,135,254,158,170,153,155,170,146,155,154,147,167,1,38,1,15,1,15,1,44,162,79,77,1,190,249,236,119,185,206,35,233,199,227,207,210,214,0,2,0,115,255,236,4,18,4,92,0,19,0,26,0,59,64,31,24,10,23,11,3,3,17,10,3,28,27,23,11,70,89,23,23,0,6,6,20,70,89,6,16,0,14,70,89,0,22,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,51,17,51,49,48,5,34,0,17,16,0,51,50,18,21,21,33,22,22,51,50,55,21,6,6,3,34,6,7,33,52,38,2,127,243,254,231,1,5,220,206,240,253,13,5,185,168,177,173,88,157,156,132,157,14,2,61,140,20,1,40,1,7,1,9,1,56,254,241,222,105,193,200,74,148,38,33,3,229,172,152,157,167,0,0,1,0,29,0,0,3,14,6,31,0,20,0,57,64,29,20,12,12,19,2,2,7,3,5,3,21,22,10,15,70,89,10,0,1,5,7,5,70,89,19,7,15,3,21,0,63,63,51,43,17,0,51,24,63,43,17,18,1,57,57,17,51,51,17,51,51,18,57,49,48,1,33,17,35,17,35,53,55,53,16,33,50,23,7,38,35,34,6,21,21,33,2,158,254,233,166,196,196,1,97,87,117,43,96,68,94,90,1,23,3,199,252,57,3,199,75,60,61,1,148,35,133,31,125,138,71,0,0,3,0,39,254,20,4,49,4,92,0,42,0,55,0,65,0,110,64,62,43,25,56,37,12,31,61,5,49,19,1,19,5,2,42,34,28,31,37,25,10,66,67,28,15,53,15,53,70,89,8,59,71,89,10,34,8,42,15,8,15,8,22,42,42,2,71,89,42,15,40,63,71,89,40,16,22,46,71,89,22,27,0,63,43,0,24,63,43,0,24,63,43,17,18,0,57,57,24,47,47,17,18,57,57,43,43,17,18,0,57,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,49,48,1,21,7,22,22,21,20,6,35,34,39,6,21,20,22,51,51,50,22,21,20,4,33,34,38,53,52,54,55,38,38,53,52,54,55,38,38,53,52,54,51,50,23,1,20,22,51,50,54,53,52,38,35,35,34,6,19,20,22,51,50,53,52,35,34,6,4,49,203,28,44,220,192,49,43,106,74,90,194,178,191,254,220,254,232,215,233,128,116,42,57,64,69,85,107,216,198,86,69,254,17,150,140,209,201,110,152,199,113,126,90,130,116,243,246,117,126,4,72,105,24,35,113,71,161,192,8,56,85,45,43,150,143,182,191,160,146,100,146,26,19,80,53,60,90,42,35,168,108,180,195,20,251,0,89,92,125,107,89,69,108,3,60,115,118,236,247,126,0,1,0,176,0,0,4,68,6,20,0,22,0,51,64,25,14,12,8,8,9,0,22,9,22,23,24,14,9,18,18,4,70,89,18,16,10,0,0,9,21,0,63,51,63,63,43,17,18,0,57,17,18,1,57,57,17,51,17,51,17,51,51,49,48,33,17,52,38,35,34,6,21,17,35,17,51,17,20,7,51,54,54,51,50,22,21,17,3,158,122,130,173,159,166,166,8,10,49,181,116,201,201,2,197,134,132,188,214,253,195,6,20,254,41,85,56,79,91,191,208,253,53,0,0,2,0,162,0,0,1,102,5,223,0,3,0,15,0,35,64,17,10,0,0,4,1,1,16,17,13,7,72,89,13,2,15,1,21,0,63,63,206,43,17,18,1,57,17,51,51,17,51,49,48,33,35,17,51,3,52,54,51,50,22,21,20,6,35,34,38,1,86,166,166,180,56,42,40,58,58,40,42,56,4,72,1,41,57,53,54,56,56,55,55,0,0,2,255,145,254,20,1,102,5,223,0,12,0,24,0,44,64,22,19,11,11,13,8,8,25,26,22,16,72,89,22,64,9,15,0,5,70,89,0,27,0,63,43,0,24,63,26,206,43,17,18,1,57,17,51,51,17,51,49,48,19,34,39,53,22,51,50,54,53,17,51,17,16,3,52,54,51,50,22,21,20,6,35,34,38,43,95,59,69,67,78,73,166,180,56,42,40,58,58,40,42,56,254,20,25,135,20,85,87,4,252,251,16,254,188,7,93,57,53,54,56,56,55,55,0,1,0,176,0,0,4,29,6,20,0,16,0,54,64,27,16,14,10,10,11,11,8,6,4,5,8,4,17,18,12,0,0,16,16,8,8,3,7,11,21,3,15,0,63,63,51,18,57,47,57,17,51,63,17,18,1,23,57,17,57,17,51,17,51,51,49,48,1,54,55,1,51,1,1,35,1,7,17,35,17,51,17,20,7,1,84,43,88,1,98,197,254,68,1,219,201,254,125,125,164,164,8,2,49,61,99,1,119,254,45,253,139,2,6,108,254,102,6,20,252,199,55,115,0,1,0,176,0,0,1,86,6,20,0,3,0,22,64,9,0,1,1,4,5,2,0,1,21,0,63,63,17,18,1,57,17,51,49,48,33,35,17,51,1,86,166,166,6,20,0,1,0,176,0,0,6,203,4,92,0,35,0,70,64,35,21,17,17,18,8,9,0,35,9,18,35,3,36,37,28,22,21,21,18,25,4,13,25,13,70,89,31,25,16,19,15,9,0,18,21,0,63,51,51,63,63,51,43,17,0,51,17,18,57,24,47,51,51,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,33,17,52,38,35,34,6,21,17,35,17,52,38,35,34,6,21,17,35,17,51,23,51,54,54,51,32,23,51,54,54,51,50,22,21,17,6,37,112,118,155,148,166,112,119,156,145,166,135,27,8,47,171,106,1,1,79,8,49,186,119,186,185,2,201,131,131,178,185,253,156,2,201,131,131,187,213,253,193,4,72,150,80,90,186,86,100,191,210,253,53,0,0,1,0,176,0,0,4,68,4,92,0,20,0,49,64,24,0,20,12,8,8,9,20,9,22,21,12,9,16,16,4,70,89,16,16,10,15,0,9,21,0,63,51,63,63,43,17,18,0,57,17,18,1,57,57,17,51,17,51,17,51,49,48,33,17,52,38,35,34,6,21,17,35,17,51,23,51,54,54,51,50,22,21,17,3,158,122,130,172,160,166,135,27,8,51,184,113,198,200,2,197,134,132,186,214,253,193,4,72,150,81,89,191,210,253,53,0,2,0,115,255,236,4,98,4,92,0,12,0,24,0,40,64,20,19,0,13,7,0,7,26,25,10,22,70,89,10,16,3,16,70,89,3,22,0,63,43,0,24,63,43,17,18,1,57,57,17,51,17,51,49,48,1,16,0,35,34,38,2,53,16,0,51,50,0,1,20,22,51,50,54,53,52,38,35,34,6,4,98,254,242,238,147,228,124,1,12,238,230,1,15,252,189,168,163,163,169,169,165,163,166,2,37,254,244,254,211,138,1,2,173,1,12,1,43,254,206,254,251,210,220,219,211,209,217,214,0,2,0,176,254,20,4,117,4,92,0,20,0,33,0,63,64,32,25,11,4,7,7,8,31,18,8,18,34,35,4,11,0,15,15,21,70,89,15,16,9,15,8,27,0,28,70,89,0,22,0,63,43,0,24,63,63,63,43,17,18,0,57,57,17,18,1,57,57,17,51,17,51,17,51,51,51,49,48,5,34,38,39,35,22,21,17,35,17,51,23,51,54,54,51,50,18,17,16,2,3,34,6,7,21,20,22,51,50,54,53,52,38,2,174,107,177,60,12,12,166,135,23,8,64,170,110,218,237,241,238,168,150,2,154,170,142,161,161,20,79,82,96,86,254,61,6,52,150,90,80,254,214,254,243,254,242,254,213,3,227,186,203,37,231,199,230,202,205,219,0,2,0,115,254,20,4,55,4,92,0,12,0,31,0,68,64,34,10,16,29,22,3,26,26,25,16,25,32,33,26,27,23,15,29,30,30,22,13,19,19,7,70,89,19,16,13,0,70,89,13,22,0,63,43,0,24,63,43,17,18,0,57,57,17,51,24,63,63,17,18,1,57,57,17,51,17,51,51,51,17,51,49,48,37,50,54,55,53,52,38,35,34,6,21,20,22,23,34,2,17,16,18,51,50,23,51,55,51,17,35,17,52,55,35,6,2,78,166,152,5,156,169,146,155,153,125,212,238,240,214,225,121,9,24,131,166,11,13,115,119,178,211,37,230,202,227,207,207,217,139,1,42,1,11,1,13,1,46,170,150,249,204,1,213,100,70,167,0,1,0,176,0,0,3,39,4,92,0,16,0,42,64,20,13,9,9,10,10,2,17,18,11,15,13,0,10,21,0,5,70,89,0,16,0,63,43,0,24,63,18,57,63,17,18,1,57,57,17,51,17,51,49,48,1,50,23,7,38,35,34,6,21,17,35,17,51,23,51,54,54,2,164,73,58,23,68,52,133,189,166,137,19,8,61,172,4,92,12,154,15,216,161,253,180,4,72,203,107,116,0,1,0,106,255,236,3,115,4,92,0,36,0,54,64,28,30,19,12,0,0,24,5,19,4,37,38,12,30,3,22,22,27,70,89,22,16,6,3,9,70,89,3,22,0,63,43,0,24,47,63,43,17,18,0,57,57,17,18,1,23,57,17,51,17,51,49,48,1,20,6,35,34,39,53,22,22,51,50,54,53,52,38,39,46,2,53,52,54,51,50,23,7,38,35,34,6,21,20,22,22,23,22,22,3,115,228,206,218,122,79,181,84,130,140,111,161,153,129,63,218,190,177,169,59,165,134,118,120,45,100,142,195,137,1,43,153,166,69,154,40,46,83,85,64,91,62,57,85,108,75,134,155,72,135,68,74,65,44,62,56,53,71,144,0,1,0,31,255,236,2,168,5,70,0,22,0,52,64,27,16,20,20,9,11,9,18,3,4,24,23,10,19,16,19,71,89,14,64,16,15,7,0,70,89,7,22,0,63,43,0,24,63,26,205,43,17,0,51,17,18,1,23,57,17,51,17,51,49,48,37,50,54,55,21,6,6,35,32,17,17,35,53,55,55,51,21,33,21,33,17,20,22,2,18,44,82,24,27,105,42,254,194,157,157,70,96,1,62,254,194,94,117,13,7,127,13,17,1,79,2,140,80,69,234,254,129,253,123,99,106,0,0,1,0,164,255,236,4,57,4,72,0,20,0,52,64,25,1,19,7,12,12,10,19,10,21,22,12,13,13,16,8,20,15,16,4,70,89,16,22,11,21,0,63,63,43,0,24,63,51,18,57,17,51,17,18,1,57,57,17,51,17,51,17,51,49,48,1,17,20,22,51,50,54,53,17,51,17,35,39,35,6,6,35,34,38,53,17,1,76,122,130,172,159,166,137,24,9,51,181,116,200,199,4,72,253,57,134,132,188,213,2,64,251,184,147,81,86,190,209,2,205,0,0,1,0,0,0,0,4,2,4,72,0,11,0,24,64,10,1,10,12,13,5,9,1,15,0,21,0,63,63,51,57,17,18,1,57,57,49,48,33,1,51,19,22,23,51,54,18,19,51,1,1,160,254,96,178,236,80,14,8,11,117,204,178,254,96,4,72,253,118,228,68,53,1,77,2,48,251,184,0,1,0,23,0,0,6,35,4,72,0,28,0,44,64,20,9,27,29,30,23,22,14,13,3,4,13,4,8,26,18,9,15,0,8,21,0,63,51,63,51,51,18,57,57,17,51,17,51,51,51,17,18,1,57,57,49,48,33,3,38,39,35,6,7,3,35,1,51,18,18,23,51,54,54,55,19,51,19,22,23,51,54,54,19,51,1,4,47,201,19,52,8,40,30,207,192,254,213,174,106,111,8,8,11,49,18,201,180,196,56,20,8,4,35,191,172,254,209,2,131,59,209,175,95,253,127,4,72,254,99,254,80,75,57,181,53,2,117,253,139,172,117,36,150,2,220,251,184,0,0,1,0,39,0,0,4,8,4,72,0,11,0,34,64,17,7,5,6,0,1,5,12,13,9,3,1,8,11,21,4,1,15,0,63,51,63,51,18,57,57,17,18,1,23,57,49,48,1,1,51,1,1,51,1,1,35,1,1,35,1,184,254,131,189,1,33,1,32,187,254,131,1,145,188,254,205,254,202,188,2,49,2,23,254,92,1,164,253,233,253,207,1,188,254,68,0,1,0,2,254,20,4,6,4,72,0,21,0,36,64,18,9,15,0,3,22,23,4,13,0,13,18,70,89,13,27,8,0,15,0,63,50,63,43,17,18,0,57,17,18,1,23,57,49,48,19,51,19,22,23,51,54,54,19,51,1,6,6,35,34,39,53,22,51,50,55,55,2,178,240,79,19,8,13,83,230,178,254,41,70,187,136,76,74,55,68,171,73,61,4,72,253,143,214,95,51,247,2,124,251,32,185,155,17,133,12,192,156,0,0,1,0,82,0,0,3,109,4,72,0,9,0,43,64,23,8,1,3,7,0,7,4,1,4,10,11,5,4,71,89,5,15,1,8,71,89,1,21,0,63,43,0,24,63,43,17,18,1,23,57,17,51,17,51,49,48,33,33,53,1,33,53,33,21,1,33,3,109,252,229,2,86,253,207,2,231,253,178,2,93,113,3,86,129,129,252,186,0,1,0,61,254,188,2,193,5,182,0,28,0,44,64,21,25,26,26,11,23,0,0,15,7,20,3,3,7,11,3,29,30,19,3,4,39,0,63,63,17,18,1,23,57,17,51,17,51,51,17,51,17,51,17,51,49,48,37,20,22,23,21,38,38,53,17,52,38,35,53,54,54,53,17,52,54,51,21,6,21,17,20,7,21,22,21,1,219,117,113,190,208,126,120,130,116,216,182,230,223,223,12,102,92,2,140,2,170,154,1,47,104,89,141,2,92,96,1,50,155,172,139,6,193,254,217,215,39,12,39,215,0,1,1,238,254,16,2,123,6,20,0,3,0,22,64,9,2,3,3,4,5,3,27,0,0,0,63,63,17,18,1,57,17,51,49,48,1,51,17,35,1,238,141,141,6,20,247,252,0,1,0,72,254,188,2,203,5,182,0,29,0,44,64,21,21,5,10,18,18,2,25,0,29,29,14,14,25,5,3,30,31,21,39,6,3,0,63,63,17,18,1,23,57,17,51,17,51,17,51,51,17,51,17,51,49,48,1,38,53,17,52,39,53,50,22,21,17,20,22,23,21,34,6,21,17,20,6,7,53,54,54,53,17,52,54,55,2,10,223,227,184,211,118,130,122,126,205,190,111,116,110,113,2,63,39,215,1,39,193,6,139,174,153,254,206,97,91,2,141,89,104,254,209,153,171,2,140,2,92,102,1,41,114,120,20,0,0,1,0,104,2,80,4,41,3,84,0,23,0,36,64,17,3,15,24,25,18,12,80,89,3,18,15,6,6,0,80,89,6,0,47,43,0,16,24,196,47,196,43,17,18,1,57,57,49,48,1,34,6,7,53,54,51,50,22,23,22,22,51,50,54,55,21,6,35,34,38,39,38,38,1,82,53,127,54,100,144,68,113,89,66,98,47,54,128,54,102,142,72,126,72,75,90,2,201,67,54,151,109,28,38,28,27,64,57,150,110,33,32,32,24,0,0,2,0,152,254,139,1,137,4,94,0,3,0,14,0,43,64,20,2,4,4,3,9,9,15,16,0,0,3,12,12,6,79,89,12,16,3,34,0,63,63,43,17,18,0,57,24,47,17,18,1,57,17,51,51,17,51,49,48,19,51,19,35,19,20,35,34,38,53,52,54,51,50,22,219,105,51,207,225,121,60,60,63,57,51,70,2,172,251,223,5,76,135,71,64,63,72,64,0,1,0,190,255,236,3,219,5,203,0,27,0,62,64,30,22,8,13,3,3,10,4,0,16,16,4,8,3,28,29,25,5,2,19,10,13,2,13,2,13,4,11,7,4,25,0,63,63,18,57,57,47,47,17,51,51,17,51,51,17,18,1,23,57,17,51,17,51,51,17,51,17,51,49,48,37,6,7,21,35,53,38,2,53,16,37,53,51,21,22,22,23,7,38,35,34,6,21,20,22,51,50,55,3,203,105,147,133,203,193,1,140,135,75,142,49,49,133,109,172,162,159,167,141,142,240,54,6,200,206,32,1,17,250,1,252,62,172,164,3,33,23,140,51,211,217,212,203,59,0,1,0,63,0,0,4,68,5,201,0,29,0,72,64,38,24,19,9,13,13,26,22,17,2,11,22,19,5,30,31,12,24,25,24,78,89,9,25,25,19,0,19,16,76,89,19,24,0,5,75,89,0,7,0,63,43,0,24,63,43,17,18,0,57,24,47,51,43,17,0,51,17,18,1,23,57,17,51,51,17,51,17,51,49,48,1,50,23,7,38,35,34,6,21,17,33,21,33,21,20,6,7,33,21,33,53,54,53,53,35,53,51,17,52,54,2,170,190,170,61,154,143,123,125,1,166,254,90,65,74,3,27,251,251,205,198,198,224,5,201,84,133,77,124,140,254,217,127,221,100,136,44,154,141,47,244,223,127,1,60,178,205,0,0,2,0,123,1,6,4,23,4,160,0,27,0,39,0,32,64,13,28,0,34,14,0,14,40,41,31,21,21,37,7,0,47,51,51,47,51,17,18,1,57,57,17,51,17,51,49,48,19,52,55,39,55,23,54,51,50,23,55,23,7,22,21,20,7,23,7,39,6,35,34,39,7,39,55,38,55,20,22,51,50,54,53,52,38,35,34,6,184,74,135,94,135,104,130,127,102,137,95,134,74,74,131,92,137,102,127,134,100,135,92,133,74,129,157,116,116,158,160,114,116,157,2,211,122,107,140,92,133,73,73,133,92,138,113,118,131,103,135,92,133,71,73,133,92,136,107,124,112,160,159,113,114,162,164,0,0,1,0,31,0,0,4,113,5,182,0,22,0,86,64,46,18,14,7,11,11,16,12,5,9,2,9,3,12,20,14,21,7,23,24,10,14,14,7,15,6,18,18,3,0,19,21,15,19,31,19,2,15,19,15,19,12,1,21,6,12,24,0,63,63,51,18,57,57,47,47,93,17,18,57,50,50,17,51,17,51,51,17,51,17,18,1,23,57,17,51,17,51,51,17,51,17,51,49,48,1,1,51,1,33,21,33,21,33,21,33,17,35,17,33,53,33,53,33,53,33,1,51,2,72,1,123,174,254,96,1,6,254,195,1,61,254,195,164,254,196,1,60,254,196,1,0,254,101,178,2,223,2,215,252,254,127,170,127,254,244,1,12,127,170,127,3,2,0,2,1,238,254,16,2,123,6,20,0,3,0,7,0,36,64,16,2,6,6,3,7,7,8,9,4,3,4,3,7,27,0,0,0,63,63,57,57,47,47,17,18,1,57,17,51,51,17,51,49,48,1,51,17,35,17,51,17,35,1,238,141,141,141,141,6,20,252,248,254,13,252,247,0,2,0,123,255,248,3,150,6,29,0,49,0,61,0,67,64,38,50,0,19,6,42,30,56,25,25,30,12,6,0,35,6,62,63,21,3,59,54,28,45,6,33,9,33,39,71,89,33,21,9,16,71,89,9,0,0,63,43,0,24,63,43,17,18,0,23,57,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,19,52,54,55,38,38,53,52,54,51,50,22,23,7,38,38,35,34,6,21,20,22,23,22,22,21,20,6,7,22,21,20,6,35,34,39,53,22,22,51,50,54,53,52,38,38,39,46,2,55,20,22,23,23,54,53,52,38,39,6,6,139,86,78,74,84,207,197,94,159,97,53,98,135,76,116,116,123,154,186,150,82,74,153,234,212,218,128,78,194,82,134,141,48,108,115,142,134,66,146,132,167,49,137,147,185,68,85,3,41,86,137,37,40,111,85,121,139,29,39,131,39,27,59,64,60,84,55,68,151,107,90,141,41,81,146,140,153,65,148,37,45,76,71,46,58,58,43,52,90,114,98,77,105,61,19,80,111,83,112,57,19,100,0,2,1,53,5,14,3,104,5,211,0,11,0,23,0,30,64,12,6,0,12,18,0,18,24,25,15,3,21,9,0,47,51,205,50,17,18,1,57,57,17,51,17,51,49,48,1,52,54,51,50,22,21,20,6,35,34,38,37,52,54,51,50,22,21,20,6,35,34,38,1,53,53,37,38,55,55,38,37,53,1,125,53,37,37,55,55,37,37,53,5,113,52,46,46,52,50,49,49,50,52,46,46,52,50,49,49,0,0,3,0,100,255,236,6,68,5,203,0,22,0,38,0,54,0,70,64,39,39,23,3,15,47,31,31,20,9,15,23,5,55,56,6,12,0,18,15,12,31,12,2,0,18,16,18,2,12,18,12,18,27,43,35,19,51,27,4,0,63,51,63,51,18,57,57,47,47,93,93,17,51,17,51,17,18,1,23,57,17,51,17,51,17,51,49,48,1,34,6,21,20,22,51,50,55,21,6,6,35,34,38,53,52,54,51,50,23,7,38,1,52,18,36,51,50,4,18,21,20,2,4,35,34,36,2,55,20,18,4,51,50,36,18,53,52,2,36,35,34,4,2,3,125,125,135,127,131,86,125,48,101,70,194,208,221,191,128,118,58,108,252,151,200,1,94,202,200,1,94,202,194,254,162,208,207,254,162,195,105,174,1,45,172,174,1,42,175,174,254,215,176,174,254,214,175,4,35,174,154,168,162,45,124,20,28,241,216,209,246,60,118,51,254,184,200,1,94,202,200,254,162,202,197,254,166,208,207,1,90,198,173,254,211,173,174,1,41,176,174,1,42,175,174,254,215,0,0,2,0,70,3,20,2,113,5,199,0,22,0,31,0,55,64,28,23,6,27,10,1,1,22,22,16,6,3,32,33,28,10,10,18,25,22,0,3,16,3,2,3,13,18,31,0,63,51,212,93,196,51,18,57,47,51,17,18,1,23,57,17,51,17,51,51,17,51,49,48,1,39,6,35,34,38,53,52,54,55,55,53,52,35,34,7,39,54,51,50,22,21,17,37,20,51,50,53,53,7,6,6,2,20,24,92,140,95,111,154,165,117,148,100,104,43,114,133,130,137,254,80,112,201,98,112,103,3,33,84,97,99,102,102,105,6,4,39,133,51,96,56,105,121,254,60,188,100,180,49,4,4,57,0,2,0,82,0,117,3,170,3,190,0,6,0,13,0,41,64,19,3,6,10,13,2,4,11,9,9,4,13,6,4,14,15,12,5,8,1,0,47,51,47,51,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,19,1,23,1,1,7,1,37,1,23,1,1,7,1,82,1,86,119,254,223,1,33,119,254,170,1,139,1,88,117,254,225,1,31,117,254,168,2,39,1,151,69,254,162,254,161,71,1,151,27,1,151,69,254,162,254,161,71,1,151,0,0,1,0,104,1,8,4,41,3,23,0,5,0,27,64,12,2,1,4,1,6,7,5,4,80,89,5,2,0,47,47,43,17,18,1,57,57,17,51,49,48,1,17,35,17,33,53,4,41,137,252,200,3,23,253,241,1,133,138,0,255,255,0,84,1,217,2,63,2,113,2,6,0,16,0,0,0,4,0,100,255,236,6,68,5,203,0,8,0,22,0,38,0,54,0,93,64,51,39,23,0,17,17,18,4,9,47,31,31,13,9,12,18,23,6,55,56,12,16,16,0,0,14,19,14,18,8,19,15,18,31,18,2,0,19,16,19,2,18,19,18,19,27,43,35,19,51,27,4,0,63,51,63,51,18,57,57,47,47,93,93,17,51,17,51,17,18,57,47,51,17,51,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,49,48,1,51,50,54,53,52,38,35,35,5,20,6,7,19,35,3,35,17,35,17,33,50,22,1,52,18,36,51,50,4,18,21,20,2,4,35,34,36,2,55,20,18,4,51,50,36,18,53,52,2,36,35,34,4,2,2,211,108,80,97,86,93,106,1,178,85,77,238,168,207,135,148,1,5,166,155,251,223,200,1,94,202,200,1,94,202,194,254,162,208,207,254,162,195,105,174,1,45,172,174,1,42,175,174,254,215,176,174,254,214,175,2,250,83,64,75,65,136,80,123,30,254,117,1,98,254,158,3,123,130,254,197,200,1,94,202,200,254,162,202,197,254,166,208,207,1,90,198,173,254,211,173,174,1,41,176,174,1,42,175,174,254,215,0,1,255,250,6,20,4,6,6,147,0,3,0,17,181,0,5,1,4,1,2,0,47,51,17,1,51,17,51,49,48,1,33,53,33,4,6,251,244,4,12,6,20,127,0,2,0,127,3,92,2,238,5,203,0,12,0,24,0,33,64,14,13,0,19,6,0,6,25,26,16,10,192,22,3,4,0,63,51,26,204,50,17,18,1,57,57,17,51,17,51,49,48,19,52,54,51,50,22,21,20,6,6,35,34,38,55,20,22,51,50,54,53,52,38,35,34,6,127,181,130,130,182,82,146,84,130,181,115,117,81,80,115,113,82,83,115,4,147,130,182,181,131,84,143,84,180,131,82,114,113,83,84,113,114,0,255,255,0,104,0,1,4,41,4,195,2,38,0,14,0,0,0,7,2,43,0,0,253,116,0,1,0,49,2,74,2,141,5,201,0,24,0,35,64,17,7,19,23,1,1,14,19,0,4,26,25,10,16,31,23,1,32,0,63,51,63,51,17,18,1,23,57,17,51,17,51,49,48,1,33,53,55,62,2,53,52,38,35,34,6,7,39,54,51,50,22,21,20,6,7,7,33,2,141,253,164,236,89,82,33,80,63,52,98,69,66,131,152,132,147,89,147,174,1,184,2,74,104,230,86,97,76,54,68,69,38,50,88,111,130,112,80,151,138,165,0,1,0,33,2,57,2,141,5,201,0,35,0,57,64,34,15,5,5,0,3,18,30,10,6,36,37,18,93,19,109,19,2,76,19,1,11,19,27,19,2,19,19,8,26,33,31,13,8,33,0,63,51,63,51,18,57,47,93,93,93,51,17,18,1,23,57,17,51,49,48,1,20,6,7,22,21,20,6,35,34,39,53,22,51,50,53,52,35,35,53,51,50,54,53,52,38,35,34,6,7,39,54,54,51,50,22,2,115,82,68,176,184,168,152,116,147,123,211,231,117,119,103,99,80,67,66,112,56,69,63,140,94,136,157,4,231,80,103,23,47,162,128,143,56,123,68,162,145,107,79,68,61,68,43,35,90,45,54,119,0,1,1,137,4,217,3,18,6,33,0,9,0,19,182,9,4,10,11,4,128,9,0,47,26,205,17,18,1,57,57,49,48,1,54,54,55,51,21,6,6,7,35,1,137,48,111,32,202,44,174,64,111,4,242,62,176,65,21,65,190,52,0,1,0,176,254,20,4,68,4,72,0,22,0,53,64,26,5,10,10,8,16,0,19,19,20,8,20,24,23,6,21,15,20,27,13,2,70,89,13,22,9,21,0,63,63,43,0,24,63,63,51,17,18,1,57,57,17,51,17,51,51,17,51,17,51,49,48,1,16,51,50,54,53,17,51,17,35,39,35,6,35,34,39,35,22,21,17,35,17,51,1,86,254,171,159,166,136,26,10,111,229,150,88,10,10,166,166,1,125,254,250,189,212,2,64,251,184,147,167,92,84,160,254,192,6,52,0,1,0,113,254,252,4,96,6,20,0,15,0,39,64,18,4,5,1,0,0,5,11,3,16,17,8,8,5,3,15,5,1,5,0,47,51,63,51,18,57,47,17,18,1,23,57,17,51,17,51,49,48,1,35,17,35,17,35,17,6,35,34,38,53,16,54,51,33,4,96,114,213,115,62,84,216,203,218,232,2,45,254,252,6,176,249,80,3,51,18,250,251,1,4,254,0,1,0,152,2,76,1,137,3,90,0,11,0,23,64,10,6,0,0,13,12,3,9,79,89,3,0,47,43,17,18,1,57,17,51,49,48,19,52,54,51,50,22,21,20,6,35,34,38,152,62,56,58,65,66,57,51,67,2,211,66,69,69,66,65,70,63,0,0,1,0,37,254,20,1,180,0,0,0,18,0,36,64,16,17,14,11,0,0,14,5,3,19,20,14,17,17,8,3,16,0,47,204,50,57,47,51,17,18,1,23,57,17,51,17,51,49,48,1,20,6,35,34,39,53,22,51,50,54,53,52,38,39,55,51,7,22,1,180,153,150,51,45,45,59,79,81,79,109,88,110,55,180,254,223,97,106,9,106,8,40,54,43,53,17,178,115,39,0,1,0,76,2,74,1,225,5,182,0,10,0,32,64,14,2,0,3,3,10,12,11,9,9,3,32,6,0,30,0,63,50,63,57,47,17,18,1,57,57,17,51,51,49,48,1,51,17,35,17,52,55,6,6,7,39,1,82,143,133,6,22,54,135,67,5,182,252,148,2,67,91,90,22,45,95,96,0,2,0,66,3,20,2,190,5,199,0,11,0,23,0,37,64,18,12,6,18,0,6,0,24,25,15,0,3,16,3,2,3,21,9,31,0,63,51,196,93,50,17,18,1,57,57,17,51,17,51,49,48,1,20,6,35,34,38,53,52,54,51,50,22,5,20,22,51,50,54,53,52,38,35,34,6,2,190,171,150,146,169,168,151,152,165,253,254,91,104,105,92,92,105,103,92,4,111,164,183,186,161,163,181,182,162,122,122,122,122,123,118,118,0,2,0,80,0,117,3,168,3,190,0,6,0,13,0,35,64,17,11,9,4,2,0,3,7,2,10,9,6,14,15,12,5,8,1,0,47,51,47,51,17,18,1,23,57,17,51,17,51,49,48,1,1,39,1,1,55,1,5,1,39,1,1,55,1,3,168,254,168,117,1,31,254,225,117,1,88,254,117,254,168,117,1,31,254,225,117,1,88,2,12,254,105,71,1,95,1,94,69,254,105,27,254,105,71,1,95,1,94,69,254,105,255,255,0,75,0,0,5,209,5,182,0,39,2,23,2,131,0,0,0,38,0,123,255,0,1,7,2,60,3,29,253,183,0,9,179,3,2,18,24,0,63,53,53,0,255,255,0,46,0,0,5,219,5,182,0,39,2,23,2,63,0,0,0,38,0,123,226,0,1,7,0,116,3,78,253,183,0,7,178,2,16,24,0,63,53,0,255,255,0,26,0,0,6,33,5,201,0,38,0,117,249,0,0,39,2,23,2,223,0,0,1,7,2,60,3,109,253,183,0,9,179,3,2,43,24,0,63,53,53,0,0,2,0,51,254,119,3,84,4,94,0,29,0,40,0,65,64,34,8,20,30,35,1,28,15,28,35,20,4,41,42,0,29,1,12,3,29,29,17,38,38,32,79,89,38,16,17,11,73,89,17,35,0,63,43,0,24,63,43,17,18,0,57,24,47,95,94,93,17,18,1,23,57,17,51,17,51,17,51,49,48,1,21,20,6,7,14,2,21,20,22,51,50,54,55,23,6,35,34,38,53,52,62,2,55,54,54,53,53,19,20,35,34,38,53,52,54,51,50,22,2,78,75,97,121,61,25,132,122,80,150,98,59,197,198,190,216,35,64,89,54,101,65,180,121,59,62,66,55,51,70,2,172,51,122,148,84,106,75,77,56,100,113,38,48,135,96,186,170,70,105,89,82,47,88,116,93,31,1,43,135,69,66,64,71,64,255,255,0,0,0,0,5,16,7,115,2,38,0,36,0,0,1,7,0,67,255,194,1,82,0,8,179,2,16,5,38,0,43,53,255,255,0,0,0,0,5,16,7,115,2,38,0,36,0,0,1,7,0,118,0,133,1,82,0,8,179,2,24,5,38,0,43,53,255,255,0,0,0,0,5,16,7,115,2,38,0,36,0,0,1,7,1,75,0,35,1,82,0,8,179,2,29,5,38,0,43,53,255,255,0,0,0,0,5,16,7,47,2,38,0,36,0,0,1,7,1,82,0,4,1,82,0,8,179,2,24,5,38,0,43,53,255,255,0,0,0,0,5,16,7,37,2,38,0,36,0,0,1,7,0,106,0,55,1,82,0,10,180,3,2,36,5,38,0,43,53,53,255,255,0,0,0,0,5,16,7,6,2,38,0,36,0,0,0,7,1,80,0,57,0,129,0,2,255,254,0,0,6,129,5,182,0,15,0,19,0,78,64,44,10,14,14,17,1,0,8,12,1,16,5,5,21,5,20,9,19,6,19,73,89,16,3,73,89,10,13,73,89,16,10,16,10,1,6,3,5,18,1,14,73,89,1,18,0,63,43,0,24,63,63,18,57,57,47,47,43,43,43,17,0,51,17,1,51,17,18,23,57,17,51,51,17,51,49,48,33,33,17,33,3,35,1,33,21,33,17,33,21,33,17,33,1,33,17,35,6,129,253,18,253,254,227,176,2,186,3,201,253,188,2,29,253,227,2,68,251,84,1,190,118,1,209,254,47,5,182,151,254,41,150,253,230,1,210,2,181,0,255,255,0,125,254,20,4,207,5,203,2,38,0,38,0,0,0,7,0,122,2,2,0,0,255,255,0,201,0,0,3,248,7,115,2,38,0,40,0,0,1,7,0,67,255,183,1,82,0,8,179,1,13,5,38,0,43,53,255,255,0,201,0,0,3,248,7,115,2,38,0,40,0,0,1,7,0,118,0,63,1,82,0,8,179,1,21,5,38,0,43,53,255,255,0,201,0,0,3,248,7,115,2,38,0,40,0,0,1,7,1,75,255,251,1,82,0,8,179,1,26,5,38,0,43,53,255,255,0,201,0,0,3,248,7,37,2,38,0,40,0,0,1,7,0,106,0,18,1,82,0,10,180,2,1,33,5,38,0,43,53,53,255,255,0,60,0,0,2,86,7,115,2,38,0,44,0,0,1,7,0,67,254,179,1,82,0,8,179,1,13,5,38,0,43,53,255,255,0,84,0,0,2,115,7,115,2,38,0,44,0,0,1,7,0,118,255,97,1,82,0,8,179,1,21,5,38,0,43,53,255,255,255,255,0,0,2,161,7,115,2,38,0,44,0,0,1,7,1,75,254,243,1,82,0,8,179,1,26,5,38,0,43,53,255,255,0,60,0,0,2,111,7,37,2,38,0,44,0,0,1,7,0,106,255,7,1,82,0,10,180,2,1,33,5,38,0,43,53,53,0,2,0,47,0,0,5,72,5,182,0,12,0,23,0,87,64,50,17,21,21,8,4,13,0,0,19,4,6,4,24,25,20,6,7,6,73,89,17,15,7,63,7,175,7,207,7,223,7,5,11,3,7,7,4,9,9,16,74,89,9,3,4,21,74,89,4,18,0,63,43,0,24,63,43,17,18,0,57,24,47,95,94,93,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,17,51,49,48,1,16,0,33,33,17,35,53,51,17,33,32,0,3,16,33,35,17,33,21,33,17,51,32,5,72,254,119,254,143,254,123,154,154,1,178,1,81,1,124,181,253,199,231,1,123,254,133,190,2,98,2,233,254,150,254,129,2,137,150,2,151,254,137,254,164,2,64,253,252,150,254,10,255,255,0,201,0,0,5,63,7,47,2,38,0,49,0,0,1,7,1,82,0,147,1,82,0,8,179,1,26,5,38,0,43,53,255,255,0,125,255,236,5,190,7,115,2,38,0,50,0,0,1,7,0,67,0,121,1,82,0,8,179,2,25,5,38,0,43,53,255,255,0,125,255,236,5,190,7,115,2,38,0,50,0,0,1,7,0,118,1,10,1,82,0,8,179,2,33,5,38,0,43,53,255,255,0,125,255,236,5,190,7,115,2,38,0,50,0,0,1,7,1,75,0,180,1,82,0,8,179,2,38,5,38,0,43,53,255,255,0,125,255,236,5,190,7,47,2,38,0,50,0,0,1,7,1,82,0,154,1,82,0,8,179,2,33,5,38,0,43,53,255,255,0,125,255,236,5,190,7,37,2,38,0,50,0,0,1,7,0,106,0,213,1,82,0,10,180,3,2,45,5,38,0,43,53,53,0,1,0,133,1,16,4,12,4,152,0,11,0,25,64,9,7,9,3,1,9,1,12,13,8,0,25,47,17,18,1,57,57,17,51,17,51,49,48,1,23,1,1,7,1,1,39,1,1,55,1,3,172,96,254,160,1,94,96,254,158,254,164,101,1,94,254,160,100,1,97,4,152,99,254,158,254,160,99,1,95,254,161,99,1,96,1,96,101,254,157,0,0,3,0,125,255,195,5,190,5,246,0,19,0,27,0,35,0,78,64,44,22,31,23,30,4,28,20,28,10,20,0,0,18,15,5,8,10,6,36,37,22,30,33,25,13,33,73,89,15,18,8,5,4,3,16,13,4,3,25,73,89,6,3,19,0,63,198,43,0,24,63,198,18,23,57,43,17,18,0,57,57,17,18,1,23,57,17,51,17,51,17,18,23,57,49,48,1,16,0,33,34,39,7,39,55,38,17,16,0,33,50,23,55,23,7,22,3,16,39,1,22,51,50,18,1,16,23,1,38,35,34,2,5,190,254,157,254,196,235,148,101,120,108,178,1,96,1,68,209,157,97,120,106,192,180,110,253,96,115,176,243,248,252,39,101,2,157,106,168,243,253,2,221,254,161,254,110,100,141,79,154,198,1,109,1,101,1,137,94,135,80,148,202,254,149,1,16,154,252,76,82,1,50,1,42,254,250,154,3,175,73,254,205,0,255,255,0,186,255,236,5,25,7,115,2,38,0,56,0,0,1,7,0,67,0,70,1,82,0,8,179,1,19,5,38,0,43,53,255,255,0,186,255,236,5,25,7,115,2,38,0,56,0,0,1,7,0,118,0,207,1,82,0,8,179,1,27,5,38,0,43,53,255,255,0,186,255,236,5,25,7,115,2,38,0,56,0,0,1,7,1,75,0,125,1,82,0,8,179,1,32,5,38,0,43,53,255,255,0,186,255,236,5,25,7,37,2,38,0,56,0,0,1,7,0,106,0,152,1,82,0,10,180,2,1,39,5,38,0,43,53,53,255,255,0,0,0,0,4,123,7,115,2,38,0,60,0,0,1,7,0,118,0,49,1,82,0,8,179,1,18,5,38,0,43,53,0,2,0,201,0,0,4,121,5,182,0,12,0,21,0,54,64,28,13,9,5,5,6,17,0,6,0,22,23,13,4,74,89,9,21,74,89,13,9,13,9,6,7,3,6,18,0,63,63,18,57,57,47,47,43,43,17,18,1,57,57,17,51,17,51,17,51,51,49,48,1,20,4,33,35,17,35,17,51,17,51,32,4,1,51,50,54,53,52,38,35,35,4,121,254,209,254,225,184,170,170,215,1,25,1,22,252,250,168,226,202,190,202,204,3,16,227,238,254,193,5,182,255,0,207,253,234,143,164,149,138,0,0,1,0,176,255,236,4,156,6,31,0,48,0,65,64,34,41,42,5,29,35,0,23,12,12,0,29,17,42,5,49,50,18,18,42,46,46,38,70,89,46,0,42,21,15,21,70,89,15,22,0,63,43,0,24,63,63,43,17,18,0,57,24,47,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,20,7,6,6,21,20,22,22,23,22,22,21,20,6,35,34,39,53,22,22,51,50,53,52,38,39,38,38,53,52,54,55,54,54,53,52,38,35,32,21,17,35,17,52,54,51,50,22,4,25,143,88,56,27,71,78,140,102,194,179,188,107,63,156,72,215,83,110,127,96,69,71,75,64,136,127,254,236,166,220,222,206,225,4,242,135,115,70,67,33,32,42,57,51,95,157,101,160,171,69,154,39,47,182,75,107,70,82,123,84,63,106,53,57,90,53,80,85,223,251,76,4,178,178,187,157,255,255,0,94,255,236,3,205,6,33,2,38,0,68,0,0,1,6,0,67,142,0,0,8,179,2,38,17,38,0,43,53,255,255,0,94,255,236,3,205,6,33,2,38,0,68,0,0,1,6,0,118,43,0,0,8,179,2,46,17,38,0,43,53,255,255,0,94,255,236,3,205,6,33,2,38,0,68,0,0,1,6,1,75,216,0,0,8,179,2,51,17,38,0,43,53,255,255,0,94,255,236,3,205,5,221,2,38,0,68,0,0,1,6,1,82,189,0,0,8,179,2,46,17,38,0,43,53,255,255,0,94,255,236,3,205,5,211,2,38,0,68,0,0,1,6,0,106,226,0,0,10,180,3,2,58,17,38,0,43,53,53,255,255,0,94,255,236,3,205,6,133,2,38,0,68,0,0,1,6,1,80,247,0,0,10,180,3,2,40,17,38,0,43,53,53,0,3,0,94,255,236,6,115,4,92,0,41,0,52,0,59,0,97,64,51,42,0,36,17,48,56,25,25,4,48,57,24,24,31,48,11,0,5,60,61,27,45,39,45,70,89,25,49,4,49,71,89,56,36,39,17,4,4,14,34,39,22,53,8,14,8,70,89,20,14,16,0,63,51,43,17,0,51,24,63,51,18,57,47,57,18,57,51,43,17,0,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,17,51,18,57,57,17,51,49,48,19,52,54,55,55,53,52,38,35,34,7,39,54,54,51,50,22,23,54,54,51,50,18,21,21,33,18,33,50,54,55,21,6,6,35,32,39,6,6,35,34,38,55,20,22,51,50,54,53,53,7,6,6,1,34,6,7,33,52,38,94,248,254,184,116,119,144,163,52,74,199,98,130,165,41,53,171,110,192,232,253,67,8,1,58,91,157,84,86,149,101,254,223,125,81,197,134,163,185,174,107,88,145,168,158,186,164,3,189,121,139,11,2,7,128,1,47,161,179,8,6,68,129,123,84,127,41,53,87,95,88,96,254,245,222,107,254,117,35,39,148,38,33,233,127,106,170,151,95,89,169,154,99,7,8,109,2,50,166,158,156,168,0,255,255,0,115,254,20,3,139,4,92,2,38,0,70,0,0,0,7,0,122,1,70,0,0,255,255,0,115,255,236,4,18,6,33,2,38,0,72,0,0,1,6,0,67,181,0,0,8,179,2,28,17,38,0,43,53,255,255,0,115,255,236,4,18,6,33,2,38,0,72,0,0,1,6,0,118,78,0,0,8,179,2,36,17,38,0,43,53,255,255,0,115,255,236,4,18,6,33,2,38,0,72,0,0,1,6,1,75,247,0,0,8,179,2,41,17,38,0,43,53,255,255,0,115,255,236,4,18,5,211,2,38,0,72,0,0,1,6,0,106,10,0,0,10,180,3,2,48,17,38,0,43,53,53,255,255,255,218,0,0,1,99,6,33,2,38,0,243,0,0,1,7,0,67,254,81,0,0,0,8,179,1,5,17,38,0,43,53,255,255,0,169,0,0,2,50,6,33,2,38,0,243,0,0,1,7,0,118,255,32,0,0,0,8,179,1,13,17,38,0,43,53,255,255,255,179,0,0,2,85,6,33,2,38,0,243,0,0,1,7,1,75,254,167,0,0,0,8,179,1,18,17,38,0,43,53,255,255,255,236,0,0,2,31,5,211,2,38,0,243,0,0,1,7,0,106,254,183,0,0,0,10,180,2,1,25,17,38,0,43,53,53,0,2,0,113,255,236,4,98,6,33,0,27,0,38,0,74,64,43,33,6,12,28,28,0,0,24,25,22,14,17,19,16,6,9,39,40,9,31,70,89,11,3,22,17,25,14,15,5,20,9,9,3,23,20,1,3,36,70,89,3,22,0,63,43,0,24,63,51,18,57,47,18,23,57,18,57,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,16,0,35,34,0,53,52,0,51,50,23,55,38,39,5,39,55,38,39,55,22,23,55,23,7,22,18,3,52,38,35,32,17,20,22,51,50,54,4,98,254,251,247,222,254,233,1,7,220,226,100,8,57,205,254,241,73,233,92,94,69,156,102,238,76,207,152,165,168,180,156,254,175,175,162,175,161,2,51,254,231,254,210,1,13,226,230,1,6,121,4,214,191,155,108,133,62,49,117,73,75,138,107,119,143,254,114,254,232,147,170,254,152,167,183,201,0,255,255,0,176,0,0,4,68,5,221,2,38,0,81,0,0,1,6,1,82,14,0,0,8,179,1,30,17,38,0,43,53,255,255,0,115,255,236,4,98,6,33,2,38,0,82,0,0,1,6,0,67,212,0,0,8,179,2,26,17,38,0,43,53,255,255,0,115,255,236,4,98,6,33,2,38,0,82,0,0,1,6,0,118,86,0,0,8,179,2,34,17,38,0,43,53,255,255,0,115,255,236,4,98,6,33,2,38,0,82,0,0,1,6,1,75,14,0,0,8,179,2,39,17,38,0,43,53,255,255,0,115,255,236,4,98,5,221,2,38,0,82,0,0,1,6,1,82,241,0,0,8,179,2,34,17,38,0,43,53,255,255,0,115,255,236,4,98,5,211,2,38,0,82,0,0,1,6,0,106,27,0,0,10,180,3,2,46,17,38,0,43,53,53,0,3,0,104,0,252,4,41,4,168,0,3,0,15,0,27,0,51,64,24,22,10,10,16,4,2,4,1,3,28,29,25,19,19,1,7,13,13,1,1,0,80,89,1,0,47,43,17,0,51,24,47,51,17,51,47,51,17,18,1,23,57,17,51,51,17,51,49,48,19,53,33,21,1,52,54,51,50,22,21,20,6,35,34,38,17,52,54,51,50,22,21,20,6,35,34,38,104,3,193,253,174,59,54,52,58,59,51,52,61,59,54,52,58,59,51,52,61,2,141,138,138,254,232,60,61,63,58,57,64,63,2,244,60,61,63,58,57,64,63,0,3,0,115,255,188,4,98,4,135,0,19,0,27,0,35,0,75,64,41,23,31,28,20,20,10,28,0,0,18,15,5,8,10,6,36,37,22,30,33,25,13,25,70,89,15,18,8,5,4,3,16,13,16,3,33,70,89,6,3,22,0,63,198,43,0,24,63,198,18,23,57,43,17,18,0,57,57,17,18,1,23,57,17,51,17,51,17,18,57,57,49,48,1,16,0,35,34,39,7,39,55,38,17,16,0,51,50,23,55,23,7,22,5,20,23,1,38,35,34,6,5,52,39,1,22,51,50,54,4,98,254,242,238,154,112,84,114,94,129,1,12,238,154,116,84,117,97,127,252,189,53,1,209,75,114,163,166,2,151,51,254,47,71,113,163,169,2,37,254,244,254,211,69,117,78,131,152,1,0,1,12,1,43,76,119,76,133,152,249,171,102,2,134,53,214,212,164,100,253,125,51,219,0,255,255,0,164,255,236,4,57,6,33,2,38,0,88,0,0,1,6,0,67,196,0,0,8,179,1,22,17,38,0,43,53,255,255,0,164,255,236,4,57,6,33,2,38,0,88,0,0,1,6,0,118,113,0,0,8,179,1,30,17,38,0,43,53,255,255,0,164,255,236,4,57,6,33,2,38,0,88,0,0,1,6,1,75,18,0,0,8,179,1,35,17,38,0,43,53,255,255,0,164,255,236,4,57,5,211,2,38,0,88,0,0,1,6,0,106,33,0,0,10,180,2,1,42,17,38,0,43,53,53,255,255,0,2,254,20,4,6,6,33,2,38,0,92,0,0,1,6,0,118,18,0,0,8,179,1,31,17,38,0,43,53,0,2,0,176,254,20,4,117,6,20,0,22,0,34,0,62,64,31,32,6,27,20,16,16,17,6,17,36,35,18,0,17,27,12,22,9,3,9,30,70,89,9,22,3,23,70,89,3,16,0,63,43,0,24,63,43,17,18,0,57,57,24,63,63,17,18,1,57,57,17,51,17,51,51,17,51,49,48,1,54,54,51,50,18,17,16,2,35,34,39,35,23,22,21,17,35,17,51,17,20,7,37,34,6,7,21,20,22,51,32,17,52,38,1,88,66,170,106,215,240,241,214,222,122,12,4,8,166,166,6,1,72,168,152,2,154,170,1,47,148,3,180,89,79,254,212,254,245,254,244,254,211,161,34,77,63,254,53,8,0,254,46,52,90,27,184,201,41,231,199,1,176,215,209,255,255,0,2,254,20,4,6,5,211,2,38,0,92,0,0,1,6,0,106,181,0,0,10,180,2,1,43,17,38,0,43,53,53,255,255,0,0,0,0,5,16,6,180,2,38,0,36,0,0,1,7,1,77,0,63,1,82,0,8,179,2,18,5,38,0,43,53,255,255,0,94,255,236,3,205,5,98,2,38,0,68,0,0,1,6,1,77,245,0,0,8,179,2,40,17,38,0,43,53,255,255,0,0,0,0,5,16,7,55,2,38,0,36,0,0,1,7,1,78,0,43,1,82,0,8,179,2,15,5,38,0,43,53,255,255,0,94,255,236,3,205,5,229,2,38,0,68,0,0,1,6,1,78,228,0,0,8,179,2,37,17,38,0,43,53,255,255,0,0,254,66,5,17,5,188,2,38,0,36,0,0,0,7,1,81,3,160,0,0,255,255,0,94,254,66,4,0,4,90,2,38,0,68,0,0,0,7,1,81,2,143,0,0,255,255,0,125,255,236,4,207,7,115,2,38,0,38,0,0,1,7,0,118,1,8,1,82,0,8,179,1,32,5,38,0,43,53,255,255,0,115,255,236,3,139,6,33,2,38,0,70,0,0,1,6,0,118,68,0,0,8,179,1,32,17,38,0,43,53,255,255,0,125,255,236,4,207,7,115,2,38,0,38,0,0,1,7,1,75,0,172,1,82,0,8,179,1,37,5,38,0,43,53,255,255,0,115,255,236,3,139,6,33,2,38,0,70,0,0,1,6,1,75,212,0,0,8,179,1,37,17,38,0,43,53,255,255,0,125,255,236,4,207,7,49,2,38,0,38,0,0,1,7,1,79,2,27,1,82,0,8,179,1,32,5,38,0,43,53,255,255,0,115,255,236,3,139,5,223,2,38,0,70,0,0,1,7,1,79,1,80,0,0,0,8,179,1,32,17,38,0,43,53,255,255,0,125,255,236,4,207,7,115,2,38,0,38,0,0,1,7,1,76,0,193,1,82,0,8,179,1,34,5,38,0,43,53,255,255,0,115,255,236,3,161,6,33,2,38,0,70,0,0,1,6,1,76,243,0,0,8,179,1,34,17,38,0,43,53,255,255,0,201,0,0,5,88,7,115,2,38,0,39,0,0,1,7,1,76,0,88,1,82,0,8,179,2,29,5,38,0,43,53,255,255,0,115,255,236,5,129,6,20,2,38,0,71,0,0,1,7,2,56,3,12,0,0,0,7,178,2,35,0,0,63,53,0,255,255,0,47,0,0,5,72,5,182,2,6,0,146,0,0,0,2,0,115,255,236,4,211,6,20,0,26,0,39,0,100,64,55,37,6,18,14,0,30,30,21,25,22,25,16,6,4,40,41,26,21,24,16,17,16,71,89,21,15,17,31,17,47,17,3,9,3,17,17,9,19,0,1,12,3,9,9,34,70,89,9,16,3,27,70,89,3,22,0,63,43,0,24,63,43,17,18,0,57,57,24,63,18,57,47,95,94,93,51,43,17,0,51,24,63,17,18,1,23,57,17,51,51,17,51,51,51,17,51,49,48,37,35,6,35,34,2,17,16,18,51,50,23,51,38,53,53,33,53,33,53,51,21,51,21,35,17,35,37,50,54,53,53,52,38,35,34,6,21,20,22,3,154,9,115,229,215,239,240,214,223,119,13,11,254,64,1,192,166,156,156,135,254,158,170,153,155,170,146,155,154,147,167,1,38,1,15,1,15,1,44,162,83,73,133,129,184,184,129,251,37,119,185,206,35,233,199,227,207,210,214,255,255,0,201,0,0,3,248,6,180,2,38,0,40,0,0,1,7,1,77,0,18,1,82,0,8,179,1,15,5,38,0,43,53,255,255,0,115,255,236,4,18,5,98,2,38,0,72,0,0,1,6,1,77,10,0,0,8,179,2,30,17,38,0,43,53,255,255,0,201,0,0,3,248,7,55,2,38,0,40,0,0,1,7,1,78,0,16,1,82,0,8,179,1,12,5,38,0,43,53,255,255,0,115,255,236,4,18,5,229,2,38,0,72,0,0,1,6,1,78,251,0,0,8,179,2,27,17,38,0,43,53,255,255,0,201,0,0,3,248,7,20,2,38,0,40,0,0,1,7,1,79,1,111,1,53,0,8,179,1,21,5,38,0,43,53,255,255,0,115,255,236,4,18,5,223,2,38,0,72,0,0,1,7,1,79,1,84,0,0,0,8,179,2,36,17,38,0,43,53,255,255,0,201,254,66,3,248,5,182,2,38,0,40,0,0,0,7,1,81,2,115,0,0,255,255,0,115,254,97,4,18,4,92,2,38,0,72,0,0,0,7,1,81,2,102,0,31,255,255,0,201,0,0,3,248,7,115,2,38,0,40,0,0,1,7,1,76,0,16,1,82,0,8,179,1,23,5,38,0,43,53,255,255,0,115,255,236,4,18,6,33,2,38,0,72,0,0,1,6,1,76,251,0,0,8,179,2,38,17,38,0,43,53,255,255,0,125,255,236,5,61,7,115,2,38,0,42,0,0,1,7,1,75,0,233,1,82,0,8,179,1,42,5,38,0,43,53,255,255,0,39,254,20,4,49,6,33,2,38,0,74,0,0,1,6,1,75,202,0,0,8,179,3,80,17,38,0,43,53,255,255,0,125,255,236,5,61,7,55,2,38,0,42,0,0,1,7,1,78,1,0,1,82,0,8,179,1,28,5,38,0,43,53,255,255,0,39,254,20,4,49,5,229,2,38,0,74,0,0,1,6,1,78,206,0,0,8,179,3,66,17,38,0,43,53,255,255,0,125,255,236,5,61,7,49,2,38,0,42,0,0,1,7,1,79,2,100,1,82,0,8,179,1,37,5,38,0,43,53,255,255,0,39,254,20,4,49,5,223,2,38,0,74,0,0,1,7,1,79,1,31,0,0,0,8,179,3,75,17,38,0,43,53,255,255,0,125,254,59,5,61,5,203,2,38,0,42,0,0,0,7,2,57,1,39,0,0,255,255,0,39,254,20,4,49,6,33,2,38,0,74,0,0,1,6,2,58,68,0,0,8,179,3,70,17,38,0,43,53,255,255,0,201,0,0,5,31,7,115,2,38,0,43,0,0,1,7,1,75,0,150,1,82,0,8,179,1,26,5,38,0,43,53,255,255,0,176,0,0,4,68,7,170,2,38,0,75,0,0,1,7,1,75,0,31,1,137,0,8,179,1,37,2,38,0,43,53,0,2,0,0,0,0,5,231,5,182,0,19,0,23,0,84,64,44,23,3,15,15,0,16,20,4,12,12,7,11,8,11,16,18,4,24,25,23,14,73,89,22,10,18,19,18,74,89,7,3,19,23,19,23,19,1,12,16,18,5,1,3,0,63,51,63,51,18,57,57,47,47,17,51,51,43,17,0,51,51,43,17,18,1,23,57,17,51,51,17,51,51,17,51,51,17,51,51,49,48,19,53,51,21,33,53,51,21,51,21,35,17,35,17,33,17,35,17,35,53,1,53,33,21,201,170,3,2,170,200,200,170,252,254,170,201,4,117,252,254,4,190,248,248,248,248,141,251,207,2,176,253,80,4,49,141,254,138,233,233,0,1,0,20,0,0,4,68,6,20,0,30,0,89,64,50,22,20,16,8,8,13,9,0,30,30,18,9,11,4,31,32,23,22,26,4,70,89,19,11,12,11,71,89,16,12,15,12,31,12,47,12,3,22,26,12,12,26,22,3,9,14,0,0,9,21,0,63,51,63,18,23,57,47,47,47,93,17,51,43,17,0,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,17,51,51,51,49,48,33,17,52,38,35,34,6,21,17,35,17,35,53,51,53,51,21,33,21,33,21,20,7,51,54,54,51,50,22,21,17,3,158,122,130,174,158,166,156,156,166,1,193,254,63,8,10,49,181,116,201,201,2,158,134,132,186,213,253,231,4,219,127,186,186,127,196,84,56,79,91,191,210,253,92,255,255,255,226,0,0,2,202,7,47,2,38,0,44,0,0,1,7,1,82,254,218,1,82,0,8,179,1,21,5,38,0,43,53,255,255,255,144,0,0,2,120,5,221,2,38,0,243,0,0,1,7,1,82,254,136,0,0,0,8,179,1,13,17,38,0,43,53,255,255,0,42,0,0,2,130,6,180,2,38,0,44,0,0,1,7,1,77,254,253,1,82,0,8,179,1,15,5,38,0,43,53,255,255,255,218,0,0,2,50,5,98,2,38,0,243,0,0,1,7,1,77,254,173,0,0,0,8,179,1,7,17,38,0,43,53,255,255,0,30,0,0,2,138,7,55,2,38,0,44,0,0,1,7,1,78,254,249,1,82,0,8,179,1,12,5,38,0,43,53,255,255,255,204,0,0,2,56,5,229,2,38,0,243,0,0,1,7,1,78,254,167,0,0,0,8,179,1,4,17,38,0,43,53,255,255,0,84,254,66,2,86,5,182,2,38,0,44,0,0,0,6,1,81,104,0,255,255,0,53,254,66,1,129,5,223,2,38,0,76,0,0,0,6,1,81,16,0,255,255,0,84,0,0,2,86,7,49,2,38,0,44,0,0,1,7,1,79,0,80,1,82,0,8,179,1,21,5,38,0,43,53,0,1,0,176,0,0,1,86,4,72,0,3,0,22,64,9,0,1,1,5,4,2,15,1,21,0,63,63,17,18,1,57,17,51,49,48,33,35,17,51,1,86,166,166,4,72,255,255,0,84,254,127,4,16,5,182,0,38,0,44,0,0,0,7,0,45,2,168,0,0,255,255,0,162,254,20,3,108,5,223,0,38,0,76,0,0,0,7,0,77,2,6,0,0,255,255,255,96,254,127,2,101,7,115,2,38,0,45,0,0,1,7,1,75,254,183,1,82,0,8,179,1,28,5,38,0,43,53,255,255,255,145,254,20,2,79,6,33,2,38,2,55,0,0,1,7,1,75,254,161,0,0,0,8,179,1,27,17,38,0,43,53,255,255,0,201,254,59,4,233,5,182,2,38,0,46,0,0,0,7,2,57,0,137,0,0,255,255,0,176,254,59,4,29,6,20,2,38,0,78,0,0,0,6,2,57,43,0,0,1,0,176,0,0,4,27,4,70,0,13,0,47,64,25,13,11,7,7,8,3,1,2,5,8,5,14,15,2,13,5,6,4,8,0,9,15,4,8,21,0,63,51,63,51,18,23,57,17,18,1,23,57,17,51,17,51,51,49,48,1,51,1,1,35,1,7,17,35,17,51,17,20,7,3,47,207,254,98,1,187,201,254,151,135,178,178,12,4,70,254,30,253,156,1,248,113,254,121,4,70,254,229,166,113,255,255,0,201,0,0,3,248,7,115,2,38,0,47,0,0,1,7,0,118,255,99,1,82,0,8,179,1,15,5,38,0,43,53,255,255,0,163,0,0,2,44,7,172,2,38,0,79,0,0,1,7,0,118,255,26,1,139,0,8,179,1,13,2,38,0,43,53,255,255,0,201,254,59,3,248,5,182,2,38,0,47,0,0,0,6,2,57,49,0,255,255,0,89,254,59,1,87,6,20,2,38,0,79,0,0,0,7,2,57,254,232,0,0,255,255,0,201,0,0,3,248,5,183,2,38,0,47,0,0,1,7,2,56,1,29,255,163,0,7,178,1,9,3,0,63,53,0,255,255,0,176,0,0,2,160,6,20,2,38,0,79,0,0,1,6,2,56,43,0,0,7,178,1,7,0,0,63,53,0,255,255,0,201,0,0,3,248,5,182,2,38,0,47,0,0,0,7,1,79,2,4,253,103,255,255,0,176,0,0,2,168,6,20,0,38,0,79,0,0,0,7,1,79,1,66,253,56,0,1,0,29,0,0,3,248,5,182,0,13,0,61,64,33,7,11,11,4,0,12,9,0,3,4,15,14,9,7,4,10,3,1,6,8,2,8,2,8,0,5,3,0,11,73,89,0,18,0,63,43,0,24,63,18,57,57,47,47,18,23,57,17,18,1,23,57,17,51,51,17,51,49,48,51,17,7,39,55,17,51,17,37,23,5,17,33,21,201,105,67,172,170,1,41,67,254,148,2,133,1,252,59,114,101,3,30,253,70,174,121,211,254,60,154,0,1,255,252,0,0,2,39,6,20,0,11,0,55,64,28,0,4,4,9,5,5,12,2,13,8,12,0,2,9,3,8,6,6,1,7,1,7,1,5,10,0,5,21,0,63,63,18,57,57,47,47,18,23,57,17,1,51,17,51,18,57,17,51,51,17,51,49,48,1,55,23,7,17,35,17,7,39,55,17,51,1,86,137,72,209,166,110,70,180,166,3,96,94,112,141,253,63,2,84,72,113,119,3,32,0,255,255,0,201,0,0,5,63,7,115,2,38,0,49,0,0,1,7,0,118,1,2,1,82,0,8,179,1,26,5,38,0,43,53,255,255,0,176,0,0,4,68,6,33,2,38,0,81,0,0,1,6,0,118,121,0,0,8,179,1,30,17,38,0,43,53,255,255,0,201,254,59,5,63,5,182,2,38,0,49,0,0,0,7,2,57,0,205,0,0,255,255,0,176,254,59,4,68,4,92,2,38,0,81,0,0,0,6,2,57,86,0,255,255,0,201,0,0,5,63,7,115,2,38,0,49,0,0,1,7,1,76,0,166,1,82,0,8,179,1,28,5,38,0,43,53,255,255,0,176,0,0,4,68,6,33,2,38,0,81,0,0,1,6,1,76,31,0,0,8,179,1,32,17,38,0,43,53,255,255,0,1,0,0,4,203,5,182,0,39,0,81,0,135,0,0,1,6,2,7,232,0,0,7,178,1,28,3,0,63,53,0,0,1,0,201,254,127,5,63,5,182,0,25,0,56,64,28,16,13,13,14,8,20,20,23,23,2,14,3,26,27,18,10,14,21,15,3,14,18,0,5,73,89,0,34,0,63,43,0,24,63,63,51,18,57,57,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,34,39,53,22,51,50,54,53,1,35,18,21,17,35,17,51,1,51,38,53,17,51,17,20,6,3,201,98,54,71,83,105,106,252,192,8,16,157,192,3,29,8,14,159,193,254,127,27,145,20,122,111,4,203,254,248,158,252,219,5,182,251,78,149,224,3,61,250,88,195,204,0,1,0,176,254,20,4,68,4,92,0,29,0,56,64,30,19,15,15,16,7,27,27,2,16,3,30,31,23,11,70,89,23,16,19,16,17,15,16,21,0,5,70,89,0,27,0,63,43,0,24,63,63,18,57,63,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,34,39,53,22,51,50,53,17,52,38,35,34,6,21,17,35,17,51,23,51,54,54,51,50,22,21,17,20,6,3,37,86,55,60,62,140,122,130,172,160,166,135,27,10,52,180,110,203,199,140,254,20,25,135,20,172,3,121,134,132,186,214,253,193,4,72,150,82,88,191,210,252,141,154,170,255,255,0,125,255,236,5,190,6,180,2,38,0,50,0,0,1,7,1,77,0,199,1,82,0,8,179,2,27,5,38,0,43,53,255,255,0,115,255,236,4,98,5,98,2,38,0,82,0,0,1,6,1,77,18,0,0,8,179,2,28,17,38,0,43,53,255,255,0,125,255,236,5,190,7,55,2,38,0,50,0,0,1,7,1,78,0,193,1,82,0,8,179,2,24,5,38,0,43,53,255,255,0,115,255,236,4,98,5,229,2,38,0,82,0,0,1,6,1,78,14,0,0,8,179,2,25,17,38,0,43,53,255,255,0,125,255,236,5,190,7,115,2,38,0,50,0,0,1,7,1,83,1,20,1,82,0,10,180,3,2,43,5,38,0,43,53,53,255,255,0,115,255,236,4,98,6,33,2,38,0,82,0,0,1,6,1,83,90,0,0,10,180,3,2,44,17,38,0,43,53,53,0,2,0,125,255,236,6,231,5,205,0,20,0,31,0,83,64,46,24,6,15,19,19,29,0,13,17,29,6,5,32,33,15,18,73,89,15,15,0,11,11,14,73,89,11,3,9,21,73,89,9,4,3,27,73,89,3,18,0,19,73,89,0,18,0,63,43,0,24,63,43,0,24,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,17,51,49,48,33,33,6,35,32,0,17,16,0,33,50,23,33,21,33,17,33,21,33,17,33,1,34,0,17,16,0,51,50,55,17,38,6,231,253,0,102,92,254,185,254,159,1,92,1,64,102,90,3,14,253,179,2,39,253,217,2,77,252,68,249,254,255,1,1,247,112,87,87,20,1,137,1,106,1,104,1,134,23,151,254,41,150,253,230,4,157,254,207,254,217,254,215,254,205,33,4,117,30,0,3,0,113,255,236,7,31,4,90,0,30,0,42,0,49,0,85,64,45,31,8,14,2,22,22,37,47,21,21,28,37,8,4,50,51,43,40,11,40,70,89,46,22,70,89,2,5,14,11,46,46,5,17,11,16,24,34,5,34,70,89,0,5,22,0,63,51,43,17,0,51,24,63,51,18,57,47,18,57,18,57,43,43,17,0,51,17,18,1,23,57,17,51,17,51,18,57,57,17,51,49,48,5,32,39,6,6,35,34,0,17,16,0,51,50,22,23,54,54,51,50,18,21,21,33,18,33,50,54,55,21,6,6,1,20,22,51,50,54,53,52,38,35,34,6,37,34,6,7,33,52,38,5,150,254,219,125,62,209,137,223,254,244,1,6,235,131,205,62,58,192,126,201,238,253,39,8,1,74,94,161,87,88,152,251,33,152,167,163,153,155,165,166,149,4,71,127,145,12,2,32,132,20,235,116,119,1,49,1,8,1,9,1,44,119,114,112,121,254,247,226,105,254,119,35,39,148,39,32,2,57,211,219,213,209,221,213,216,216,164,158,158,164,255,255,0,201,0,0,4,207,7,115,2,38,0,53,0,0,1,7,0,118,0,121,1,82,0,8,179,2,31,5,38,0,43,53,255,255,0,176,0,0,3,39,6,33,2,38,0,85,0,0,1,6,0,118,220,0,0,8,179,1,26,17,38,0,43,53,255,255,0,201,254,59,4,207,5,182,2,38,0,53,0,0,0,6,2,57,125,0,255,255,0,96,254,59,3,39,4,92,2,38,0,85,0,0,0,7,2,57,254,239,0,0,255,255,0,201,0,0,4,207,7,115,2,38,0,53,0,0,1,7,1,76,0,27,1,82,0,8,179,2,33,5,38,0,43,53,255,255,0,130,0,0,3,39,6,33,2,38,0,85,0,0,1,7,1,76,255,118,0,0,0,8,179,1,28,17,38,0,43,53,255,255,0,106,255,236,4,2,7,115,2,38,0,54,0,0,1,7,0,118,0,80,1,82,0,8,179,1,46,5,38,0,43,53,255,255,0,106,255,236,3,115,6,33,2,38,0,86,0,0,1,6,0,118,234,0,0,8,179,1,46,17,38,0,43,53,255,255,0,106,255,236,4,2,7,115,2,38,0,54,0,0,1,7,1,75,255,234,1,82,0,8,179,1,51,5,38,0,43,53,255,255,0,106,255,236,3,115,6,33,2,38,0,86,0,0,1,6,1,75,151,0,0,8,179,1,51,17,38,0,43,53,255,255,0,106,254,20,4,2,5,203,2,38,0,54,0,0,0,7,0,122,1,39,0,0,255,255,0,106,254,20,3,115,4,92,2,38,0,86,0,0,0,7,0,122,0,213,0,0,255,255,0,106,255,236,4,2,7,115,2,38,0,54,0,0,1,7,1,76,255,228,1,82,0,8,179,1,48,5,38,0,43,53,255,255,0,106,255,236,3,115,6,33,2,38,0,86,0,0,1,6,1,76,153,0,0,8,179,1,48,17,38,0,43,53,255,255,0,18,254,59,4,90,5,182,2,38,0,55,0,0,0,6,2,57,25,0,255,255,0,31,254,59,2,168,5,70,2,38,0,87,0,0,0,6,2,57,130,0,255,255,0,18,0,0,4,90,7,115,2,38,0,55,0,0,1,7,1,76,255,220,1,82,0,8,179,1,19,5,38,0,43,53,255,255,0,31,255,236,2,215,6,20,2,38,0,87,0,0,1,6,2,56,98,0,0,7,178,1,26,0,0,63,53,0,0,1,0,18,0,0,4,90,5,182,0,15,0,63,64,33,7,11,11,0,12,4,9,12,14,2,5,16,17,10,14,15,14,74,89,7,15,15,3,12,18,6,2,3,2,73,89,3,3,0,63,43,17,0,51,24,63,18,57,47,51,43,17,0,51,17,18,1,23,57,17,51,51,17,51,49,48,1,17,33,53,33,21,33,17,33,21,33,17,35,17,33,53,1,225,254,49,4,72,254,49,1,54,254,202,170,254,199,3,47,1,240,151,151,254,16,141,253,94,2,162,141,0,1,0,31,255,236,2,168,5,70,0,28,0,76,64,41,23,19,27,27,12,8,2,21,25,8,10,14,6,29,30,14,22,19,22,71,89,26,10,11,10,71,89,23,11,11,6,17,64,19,15,6,0,70,89,6,22,0,63,43,0,24,63,26,205,18,57,47,51,43,17,0,51,43,17,0,51,17,18,1,23,57,17,51,51,17,51,51,49,48,37,50,55,21,6,6,35,32,17,53,35,53,51,17,35,53,55,55,51,21,33,21,33,17,33,21,33,21,20,2,23,85,60,32,106,42,254,200,141,141,157,157,70,96,1,62,254,194,1,45,254,211,117,20,127,14,16,1,92,254,129,1,0,80,69,234,254,129,255,0,129,244,221,0,255,255,0,186,255,236,5,25,7,47,2,38,0,56,0,0,1,7,1,82,0,111,1,82,0,8,179,1,27,5,38,0,43,53,255,255,0,164,255,236,4,57,5,221,2,38,0,88,0,0,1,6,1,82,247,0,0,8,179,1,30,17,38,0,43,53,255,255,0,186,255,236,5,25,6,180,2,38,0,56,0,0,1,7,1,77,0,145,1,82,0,8,179,1,21,5,38,0,43,53,255,255,0,164,255,236,4,57,5,98,2,38,0,88,0,0,1,6,1,77,25,0,0,8,179,1,24,17,38,0,43,53,255,255,0,186,255,236,5,25,7,55,2,38,0,56,0,0,1,7,1,78,0,139,1,82,0,8,179,1,18,5,38,0,43,53,255,255,0,164,255,236,4,57,5,229,2,38,0,88,0,0,1,6,1,78,18,0,0,8,179,1,21,17,38,0,43,53,255,255,0,186,255,236,5,25,7,215,2,38,0,56,0,0,1,7,1,80,0,156,1,82,0,10,180,2,1,21,5,38,0,43,53,53,255,255,0,164,255,236,4,57,6,133,2,38,0,88,0,0,1,6,1,80,35,0,0,10,180,2,1,24,17,38,0,43,53,53,255,255,0,186,255,236,5,25,7,115,2,38,0,56,0,0,1,7,1,83,0,225,1,82,0,10,180,2,1,37,5,38,0,43,53,53,255,255,0,164,255,236,4,57,6,33,2,38,0,88,0,0,1,6,1,83,104,0,0,10,180,2,1,40,17,38,0,43,53,53,255,255,0,186,254,66,5,25,5,182,2,38,0,56,0,0,0,7,1,81,2,33,0,0,255,255,0,164,254,66,4,101,4,72,2,38,0,88,0,0,0,7,1,81,2,244,0,0,255,255,0,27,0,0,7,76,7,115,2,38,0,58,0,0,1,7,1,75,1,84,1,82,0,8,179,1,40,5,38,0,43,53,255,255,0,23,0,0,6,35,6,33,2,38,0,90,0,0,1,7,1,75,0,193,0,0,0,8,179,1,43,17,38,0,43,53,255,255,0,0,0,0,4,123,7,115,2,38,0,60,0,0,1,7,1,75,255,224,1,82,0,8,179,1,23,5,38,0,43,53,255,255,0,2,254,20,4,6,6,33,2,38,0,92,0,0,1,6,1,75,173,0,0,8,179,1,36,17,38,0,43,53,255,255,0,0,0,0,4,123,7,37,2,38,0,60,0,0,1,7,0,106,255,241,1,82,0,10,180,2,1,30,5,38,0,43,53,53,255,255,0,82,0,0,4,63,7,115,2,38,0,61,0,0,1,7,0,118,0,66,1,82,0,8,179,1,19,5,38,0,43,53,255,255,0,82,0,0,3,109,6,33,2,38,0,93,0,0,1,6,0,118,232,0,0,8,179,1,19,17,38,0,43,53,255,255,0,82,0,0,4,63,7,49,2,38,0,61,0,0,1,7,1,79,1,68,1,82,0,8,179,1,19,5,38,0,43,53,255,255,0,82,0,0,3,109,5,223,2,38,0,93,0,0,1,7,1,79,0,223,0,0,0,8,179,1,19,17,38,0,43,53,255,255,0,82,0,0,4,63,7,115,2,38,0,61,0,0,1,7,1,76,255,237,1,82,0,8,179,1,21,5,38,0,43,53,255,255,0,82,0,0,3,109,6,33,2,38,0,93,0,0,1,6,1,76,134,0,0,8,179,1,21,17,38,0,43,53,0,1,0,176,0,0,2,219,6,31,0,12,0,29,64,14,0,1,1,13,6,14,4,9,70,89,4,0,1,21,0,63,63,43,17,1,51,18,57,17,51,49,48,33,35,17,16,33,50,23,7,38,35,34,6,21,1,86,166,1,103,96,100,43,87,73,97,89,4,156,1,131,37,133,30,123,122,0,0,1,0,195,254,20,4,23,5,203,0,32,0,68,64,36,26,30,30,12,8,18,28,8,10,2,5,33,34,29,10,12,10,70,89,26,12,12,16,0,16,22,70,89,16,4,0,5,70,89,0,27,0,63,43,0,24,63,43,17,18,0,57,24,47,51,43,17,0,51,17,18,1,23,57,17,51,51,17,51,49,48,1,34,39,53,22,51,50,54,53,17,35,53,55,53,52,54,51,50,23,7,7,38,35,34,6,21,21,33,21,33,17,20,6,1,72,69,64,70,61,95,77,222,222,162,182,85,120,22,21,102,60,98,80,1,26,254,234,158,254,20,19,139,18,102,113,3,205,75,60,139,195,178,43,64,65,32,105,124,149,129,252,55,184,175,0,4,0,0,0,0,5,20,7,170,0,16,0,24,0,34,0,46,0,97,64,52,17,5,4,24,6,20,7,4,3,7,8,35,0,41,11,8,11,9,34,20,2,0,29,3,9,48,47,38,14,44,2,9,24,6,73,89,9,20,14,24,34,14,24,24,14,34,3,8,28,4,8,18,0,63,51,47,18,23,57,47,47,47,17,18,57,57,43,17,0,51,51,17,51,17,18,1,23,57,17,51,17,51,17,51,17,51,17,18,57,57,17,57,57,49,48,1,20,7,1,35,3,33,3,35,1,38,53,52,54,51,50,22,19,3,38,39,6,6,7,3,19,54,54,55,51,21,6,6,7,35,19,52,38,35,34,6,21,20,22,51,50,54,3,104,104,2,20,174,176,253,158,166,174,2,20,106,122,99,100,125,27,178,25,47,14,48,9,177,152,49,102,23,203,32,168,66,111,211,66,51,51,66,60,57,53,64,5,150,133,56,251,39,1,145,254,111,4,215,52,136,101,114,117,252,54,1,176,58,145,48,135,24,254,84,4,133,59,149,42,16,46,161,45,254,245,57,60,60,57,55,61,61,0,5,0,94,255,236,3,205,7,170,0,9,0,36,0,47,0,59,0,71,0,103,64,55,45,18,66,54,60,48,41,21,21,11,36,36,6,48,0,54,29,18,7,72,73,9,9,4,63,57,69,51,17,11,12,21,41,71,89,12,21,21,15,32,32,25,70,89,32,16,15,37,70,89,15,22,10,21,4,0,47,63,63,43,0,24,63,43,17,18,0,57,24,47,57,43,17,0,51,24,63,51,196,50,17,57,47,17,18,1,23,57,17,51,51,17,51,17,51,17,51,17,51,49,48,1,53,54,54,55,33,21,6,6,7,1,39,35,6,6,35,34,38,53,16,37,55,53,52,38,35,34,6,7,39,54,54,51,50,22,21,17,37,50,54,53,53,7,6,6,21,20,22,1,20,6,35,34,38,53,52,54,51,50,22,7,52,38,35,34,6,21,20,22,51,50,54,1,215,46,106,22,1,4,21,164,128,1,2,33,8,82,163,122,163,185,2,25,180,119,133,96,167,71,55,84,208,101,209,201,254,14,155,177,166,198,175,109,1,170,123,102,101,121,121,101,101,124,109,65,51,51,66,60,57,52,64,6,217,16,42,120,31,12,24,105,68,249,39,156,103,73,168,155,1,76,16,6,68,130,122,52,32,127,43,51,174,192,253,20,117,170,153,99,7,7,109,115,90,94,5,61,98,119,116,99,98,115,119,94,56,61,61,56,56,61,61,0,255,255,255,254,0,0,6,129,7,115,2,38,0,136,0,0,1,7,0,118,2,76,1,82,0,8,179,2,29,5,38,0,43,53,255,255,0,94,255,236,6,115,6,33,2,38,0,168,0,0,1,7,0,118,1,133,0,0,0,8,179,3,69,17,38,0,43,53,255,255,0,125,255,195,5,190,7,115,2,38,0,154,0,0,1,7,0,118,1,25,1,82,0,8,179,3,45,5,38,0,43,53,255,255,0,115,255,188,4,98,6,33,2,38,0,186,0,0,1,6,0,118,86,0,0,8,179,3,45,17,38,0,43,53,255,255,0,106,254,59,4,2,5,203,2,38,0,54,0,0,0,6,2,57,6,0,255,255,0,106,254,59,3,115,4,92,2,38,0,86,0,0,0,6,2,57,185,0,0,1,1,12,4,217,3,174,6,33,0,14,0,24,64,9,7,0,16,15,11,4,128,14,9,0,47,51,26,205,50,17,18,1,57,57,49,48,1,54,54,55,51,22,22,23,21,35,38,39,6,7,35,1,12,127,102,23,166,22,109,125,119,88,133,136,83,115,4,240,136,128,41,42,133,130,23,55,131,134,52,0,0,1,1,12,4,217,3,174,6,33,0,14,0,24,64,9,6,0,16,15,5,1,128,3,11,0,47,51,26,205,50,17,18,1,57,57,49,48,1,51,22,23,54,55,51,21,7,6,7,35,38,38,39,1,12,115,114,105,130,91,119,66,144,46,166,23,102,127,6,33,74,115,130,59,25,68,148,87,41,126,136,0,0,1,1,45,4,217,3,133,5,98,0,3,0,17,181,0,1,4,5,0,3,0,47,51,17,18,1,57,57,49,48,1,33,21,33,1,45,2,88,253,168,5,98,137,0,1,1,37,4,217,3,145,5,229,0,14,0,24,64,9,12,3,16,15,11,4,128,8,0,0,47,50,26,204,50,17,18,1,57,57,49,48,1,34,38,39,51,30,2,51,50,54,55,51,6,6,2,86,140,156,9,104,6,41,73,85,101,96,10,104,10,167,4,217,137,131,49,56,26,64,67,126,142,0,0,1,0,162,5,2,1,102,5,223,0,11,0,19,182,6,0,0,12,13,3,9,0,47,205,17,18,1,57,17,51,49,48,19,52,54,51,50,22,21,20,6,35,34,38,162,56,42,40,58,58,40,42,56,5,113,57,53,54,56,56,55,55,0,0,2,1,111,4,217,3,45,6,133,0,11,0,23,0,30,64,12,18,6,12,0,6,0,24,25,15,9,21,3,0,47,51,204,50,17,18,1,57,57,17,51,17,51,49,48,1,20,6,35,34,38,53,52,54,51,50,22,7,52,38,35,34,6,21,20,22,51,50,54,3,45,123,102,101,120,121,100,101,124,108,66,51,51,66,60,57,52,65,5,178,98,119,117,98,98,115,119,94,56,61,61,56,56,61,61,0,1,0,37,254,66,1,113,0,0,0,15,0,24,64,10,0,9,4,13,9,3,16,17,2,7,0,47,51,17,18,1,23,57,17,51,49,48,23,20,51,50,55,21,6,35,34,53,52,54,55,51,6,6,178,94,42,55,65,60,207,86,72,120,68,69,238,94,13,109,18,188,70,135,53,66,109,0,0,1,1,8,4,217,3,240,5,221,0,23,0,36,64,15,9,21,24,25,17,0,5,12,0,12,0,12,21,128,9,0,47,26,204,57,57,47,47,17,51,17,51,17,18,1,57,57,49,48,1,34,46,2,35,34,6,7,35,54,54,51,50,30,2,51,50,54,55,51,6,6,3,20,43,82,79,73,34,50,51,14,98,13,115,91,46,86,78,72,32,49,48,15,99,13,113,4,219,37,45,37,60,61,121,137,37,45,37,59,62,121,137,0,0,2,0,231,4,217,3,182,6,33,0,9,0,19,0,27,64,12,14,5,19,9,4,20,21,13,4,128,19,9,0,47,51,26,205,50,17,18,1,23,57,49,48,19,54,54,55,51,21,6,6,7,35,37,54,54,55,51,21,6,6,7,35,231,36,110,31,186,37,171,58,97,1,101,49,101,26,186,37,171,58,96,4,242,48,186,69,21,63,196,48,25,68,177,58,21,63,196,48,0,0,1,1,252,4,217,3,16,6,115,0,9,0,19,182,4,0,11,10,4,128,9,0,47,26,205,17,18,1,57,57,49,48,1,54,54,55,51,21,6,6,7,35,1,252,27,53,12,184,18,109,49,100,4,246,72,227,82,23,74,237,76,0,3,1,27,5,14,3,131,6,180,0,8,0,20,0,32,0,43,64,20,15,9,21,27,27,3,8,9,4,33,34,24,12,8,12,8,12,3,30,18,0,47,51,204,57,57,47,47,17,51,17,18,1,23,57,17,51,17,51,49,48,1,54,55,51,21,6,6,7,35,39,52,54,51,50,22,21,20,6,35,34,38,37,52,54,51,50,22,21,20,6,35,34,38,2,0,65,31,189,33,121,51,80,229,52,38,41,49,55,35,38,52,1,180,52,38,41,49,55,35,38,52,5,133,169,134,20,67,179,61,4,52,46,52,46,50,49,49,50,52,46,52,46,50,49,49,255,255,0,0,0,0,5,16,6,10,2,38,0,36,0,0,1,7,1,84,254,32,255,151,0,7,178,2,18,0,0,63,53,0,255,255,0,152,2,76,1,137,3,90,2,6,0,121,0,0,255,255,255,212,0,0,4,117,6,10,0,38,0,40,125,0,1,7,1,84,253,216,255,151,0,7,178,1,16,0,0,63,53,0,255,255,255,212,0,0,5,181,6,10,0,39,0,43,0,150,0,0,1,7,1,84,253,216,255,151,0,7,178,1,16,0,0,63,53,0,255,255,255,228,0,0,3,68,6,10,0,39,0,44,0,238,0,0,1,7,1,84,253,232,255,151,0,7,178,1,16,0,0,63,53,0,255,255,255,228,255,236,6,2,6,10,0,38,0,50,68,0,1,7,1,84,253,232,255,151,0,7,178,2,28,0,0,63,53,0,255,255,255,212,0,0,5,133,6,10,0,39,0,60,1,10,0,0,1,7,1,84,253,216,255,151,0,7,178,1,13,0,0,63,53,0,255,255,255,228,0,0,6,51,6,10,0,38,1,118,63,0,1,7,1,84,253,232,255,151,0,7,178,1,35,0,0,63,53,0,255,255,255,233,255,236,2,147,6,180,2,38,1,134,0,0,1,7,1,85,254,206,0,0,0,12,181,3,2,1,46,17,38,0,43,53,53,53,255,255,0,0,0,0,5,16,5,188,2,6,0,36,0,0,255,255,0,201,0,0,4,190,5,182,2,6,0,37,0,0,0,1,0,201,0,0,3,248,5,182,0,5,0,29,64,14,3,4,4,0,6,7,5,2,73,89,5,3,4,18,0,63,63,43,17,18,1,57,57,17,51,49,48,1,21,33,17,35,17,3,248,253,123,170,5,182,153,250,227,5,182,0,255,255,0,39,0,0,4,109,5,182,2,6,2,40,0,0,255,255,0,201,0,0,3,248,5,182,2,6,0,40,0,0,255,255,0,82,0,0,4,63,5,182,2,6,0,61,0,0,255,255,0,201,0,0,5,31,5,182,2,6,0,43,0,0,0,3,0,125,255,236,5,190,5,205,0,3,0,15,0,27,0,63,64,32,2,3,16,22,16,10,22,4,10,4,28,29,0,3,73,89,0,0,7,13,13,25,73,89,13,4,7,19,73,89,7,19,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,57,57,17,51,17,51,17,18,57,57,49,48,1,33,21,33,37,16,0,33,32,0,17,16,0,33,32,0,1,16,18,51,50,18,17,16,2,35,34,2,1,227,2,117,253,139,3,219,254,157,254,196,254,189,254,161,1,96,1,68,1,59,1,98,251,115,250,244,243,248,247,242,245,251,3,51,149,63,254,161,254,110,1,139,1,104,1,101,1,137,254,112,254,160,254,216,254,204,1,48,1,44,1,42,1,46,254,206,0,255,255,0,84,0,0,2,86,5,182,2,6,0,44,0,0,255,255,0,201,0,0,4,233,5,182,2,6,0,46,0,0,0,1,0,0,0,0,4,211,5,182,0,10,0,26,64,11,8,0,12,11,4,8,9,3,1,8,18,0,63,51,63,18,57,17,18,1,57,57,49,48,33,35,1,38,39,6,7,1,35,1,51,4,211,182,254,182,87,22,33,71,254,184,182,2,16,177,3,160,252,90,139,201,252,94,5,182,255,255,0,201,0,0,6,113,5,182,2,6,0,48,0,0,255,255,0,201,0,0,5,63,5,182,2,6,0,49,0,0,0,3,0,72,0,0,4,37,5,182,0,3,0,7,0,11,0,52,64,29,10,7,3,2,6,8,6,13,12,0,3,73,89,0,0,10,4,10,11,73,89,10,18,4,7,73,89,4,3,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,49,48,19,33,21,33,3,33,21,33,1,21,33,53,195,2,231,253,25,82,3,139,252,117,3,180,252,35,3,72,150,3,4,151,251,121,152,152,255,255,0,125,255,236,5,190,5,205,2,6,0,50,0,0,0,1,0,201,0,0,5,12,5,182,0,7,0,35,64,17,1,0,4,5,0,5,9,8,6,3,73,89,6,3,1,5,18,0,63,51,63,43,17,18,1,57,57,17,51,17,51,49,48,33,35,17,33,17,35,17,33,5,12,170,253,17,170,4,67,5,31,250,225,5,182,0,255,255,0,201,0,0,4,104,5,182,2,6,0,51,0,0,0,1,0,74,0,0,4,92,5,182,0,12,0,53,64,28,8,10,10,0,9,2,11,6,3,2,0,5,13,14,7,8,4,8,73,89,4,3,0,10,73,89,0,18,0,63,43,0,24,63,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,49,48,51,53,1,1,53,33,21,33,39,1,1,33,21,74,1,225,254,43,3,203,253,92,96,1,204,254,31,3,84,141,2,111,2,43,143,153,2,253,223,253,154,152,0,255,255,0,18,0,0,4,90,5,182,2,6,0,55,0,0,255,255,0,0,0,0,4,123,5,182,2,6,0,60,0,0,0,3,0,106,255,236,5,248,5,203,0,25,0,34,0,43,0,80,64,41,39,20,26,2,13,13,43,25,14,30,7,7,14,20,3,44,45,12,16,26,42,16,42,74,89,34,36,24,36,74,89,2,24,16,24,16,24,14,19,0,4,0,63,63,57,57,47,47,17,51,43,17,0,51,43,17,0,51,17,51,17,18,1,23,57,17,51,17,51,51,51,17,51,51,17,51,49,48,1,51,21,51,50,22,22,21,20,2,4,35,35,21,35,53,35,34,36,2,53,52,54,54,51,51,19,51,50,54,53,52,38,43,3,34,6,21,20,22,51,51,2,219,172,70,171,251,133,149,254,253,176,41,172,45,176,254,254,146,135,252,171,67,172,25,201,223,206,185,58,172,57,182,209,222,202,24,5,203,180,136,248,159,166,254,253,130,225,225,132,1,4,161,158,248,139,252,69,219,195,185,210,212,183,197,217,0,255,255,0,8,0,0,4,150,5,182,2,6,0,59,0,0,0,1,0,109,0,0,5,242,5,182,0,29,0,62,64,31,10,7,17,0,0,14,1,21,24,24,1,7,3,30,31,29,3,13,3,73,89,17,13,13,1,22,15,8,3,1,18,0,63,63,51,51,18,57,47,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,17,51,17,51,49,48,33,35,17,35,34,38,38,53,17,51,17,20,22,51,51,17,51,17,51,50,54,53,17,51,17,20,6,4,35,35,3,131,170,45,176,255,144,174,207,212,27,170,29,211,207,176,144,254,253,175,45,1,190,122,247,164,1,227,254,33,188,201,3,100,252,156,198,187,1,227,254,31,165,247,123,0,0,1,0,80,0,0,5,244,5,205,0,31,0,57,64,32,3,13,29,19,24,19,22,25,7,10,13,8,8,32,33,16,0,73,89,16,4,26,22,6,9,8,9,73,89,25,8,18,0,63,51,43,17,0,51,51,51,24,63,43,17,18,1,23,57,17,51,17,51,49,48,1,34,2,21,20,18,23,21,33,53,33,38,2,53,16,0,33,32,0,17,20,2,7,33,21,33,53,54,18,53,52,2,3,33,238,250,173,180,253,182,1,108,151,160,1,98,1,58,1,59,1,98,158,151,1,107,253,182,183,169,249,5,53,254,255,253,225,254,179,132,133,152,118,1,94,203,1,54,1,96,254,165,254,199,207,254,166,120,152,133,134,1,78,222,252,1,2,255,255,0,60,0,0,2,111,7,37,2,38,0,44,0,0,1,7,0,106,255,7,1,82,0,10,180,2,1,33,5,38,0,43,53,53,255,255,0,0,0,0,4,123,7,37,2,38,0,60,0,0,1,7,0,106,255,239,1,82,0,10,180,2,1,30,5,38,0,43,53,53,255,255,0,115,255,236,4,199,6,115,2,38,1,126,0,0,1,6,1,84,29,0,0,8,179,2,52,17,38,0,43,53,255,255,0,90,255,236,3,135,6,115,2,38,1,130,0,0,1,6,1,84,200,0,0,8,179,1,47,17,38,0,43,53,255,255,0,176,254,20,4,68,6,115,2,38,1,132,0,0,1,6,1,84,59,0,0,8,179,1,30,17,38,0,43,53,255,255,0,168,255,236,2,147,6,115,2,38,1,134,0,0,1,7,1,84,254,196,0,0,0,8,179,1,25,17,38,0,43,53,255,255,0,164,255,236,4,113,6,180,2,38,1,146,0,0,1,6,1,85,59,0,0,12,181,3,2,1,52,17,38,0,43,53,53,53,0,2,0,115,255,236,4,199,4,92,0,11,0,42,0,71,64,36,9,15,39,21,4,4,29,34,29,15,3,43,44,24,15,39,40,40,22,12,18,18,7,70,89,18,16,31,0,12,0,70,89,36,12,22,0,63,51,43,17,0,51,24,63,43,17,18,0,57,57,17,51,24,63,17,18,1,23,57,17,51,17,51,51,17,51,49,48,37,50,54,53,53,52,38,35,32,17,20,22,23,34,2,17,16,18,51,50,22,23,51,54,55,51,6,6,21,17,20,51,50,55,21,6,35,34,38,39,35,6,6,2,80,169,150,152,169,254,209,147,133,214,238,244,225,121,161,54,12,24,41,129,21,28,84,29,33,46,65,81,89,18,13,59,167,119,195,218,15,229,199,254,80,212,212,139,1,41,1,12,1,18,1,41,84,84,92,56,66,246,116,254,73,114,10,119,26,81,86,86,81,0,2,0,176,254,20,4,168,6,31,0,19,0,41,0,76,64,40,24,15,15,16,39,3,30,8,8,3,5,34,16,5,42,43,16,27,35,34,70,89,14,35,14,35,11,0,11,27,70,89,11,22,0,20,70,89,0,0,0,63,43,0,24,63,43,17,18,0,57,57,24,47,47,43,0,24,63,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,50,22,21,16,5,21,4,17,20,4,35,34,38,39,17,35,17,52,54,23,34,6,21,17,22,22,51,50,54,53,52,38,35,35,53,51,50,54,53,52,38,2,147,220,249,254,199,1,121,254,248,238,109,160,79,166,253,228,158,157,93,161,86,171,173,190,177,112,92,155,162,156,6,31,208,183,254,218,51,8,42,254,145,209,225,31,38,253,227,6,52,225,246,140,172,165,252,137,49,37,150,157,157,164,142,147,137,123,133,0,1,0,10,254,20,4,14,4,72,0,18,0,33,64,16,15,4,1,5,4,19,20,10,9,9,1,14,5,15,1,27,0,63,63,51,18,57,47,51,17,18,1,23,57,49,48,1,35,52,18,55,1,51,19,22,23,51,62,2,19,51,1,6,2,2,20,180,64,43,254,63,172,240,94,19,8,5,41,43,234,172,254,107,48,53,254,20,96,1,38,114,4,60,253,184,235,103,30,142,129,2,109,251,211,124,254,220,0,2,0,113,255,236,4,96,6,18,0,30,0,42,0,59,64,32,37,28,16,3,31,22,22,9,0,3,28,5,43,44,16,0,34,3,25,6,25,40,70,89,25,22,6,13,70,89,6,0,0,63,43,0,24,63,43,17,18,0,23,57,17,18,1,23,57,17,51,17,51,17,51,49,48,1,38,38,53,52,54,51,50,22,23,7,38,38,35,34,6,21,20,22,23,22,22,21,20,0,35,34,36,53,52,18,1,52,38,39,6,6,21,20,22,51,50,54,2,33,140,116,194,164,103,189,126,72,112,159,81,85,97,107,167,210,177,254,240,236,227,254,240,226,2,97,123,141,206,191,178,147,162,174,3,168,78,159,99,130,152,45,63,135,62,44,79,66,71,111,91,115,241,164,235,254,248,248,210,177,1,5,254,115,128,183,74,53,217,160,144,171,186,0,0,1,0,90,255,236,3,135,4,92,0,37,0,77,64,43,4,16,35,23,29,11,1,19,23,16,6,38,39,20,37,2,37,2,70,89,15,37,31,37,2,11,3,37,37,13,26,26,33,70,89,26,16,13,7,70,89,13,22,0,63,43,0,24,63,43,17,18,0,57,24,47,95,94,93,43,17,18,0,57,17,18,1,23,57,17,51,17,51,49,48,1,21,35,32,21,20,22,51,50,54,55,21,6,35,34,38,53,52,54,55,53,38,38,53,52,54,51,50,22,23,7,38,38,35,34,21,20,33,2,203,148,254,201,147,146,84,166,100,137,221,210,241,110,130,98,107,224,192,97,165,100,63,94,130,79,250,1,61,2,129,141,195,90,98,39,47,148,75,169,148,98,131,41,11,28,127,92,133,158,33,45,133,42,28,162,172,0,0,1,0,115,254,111,3,160,6,20,0,32,0,48,64,24,7,25,30,19,19,14,14,3,0,25,4,33,34,17,35,30,3,0,1,0,70,89,1,0,0,63,43,17,0,51,51,24,63,17,18,1,23,57,17,51,17,51,17,51,49,48,19,53,33,21,6,0,2,21,20,22,22,23,22,22,21,20,7,35,54,53,52,38,39,38,38,53,52,62,2,55,6,33,176,2,240,215,254,224,138,59,125,172,149,136,127,166,125,111,143,203,188,59,112,201,242,40,254,241,5,135,141,129,180,254,189,254,223,166,98,118,73,37,31,109,91,149,164,161,107,56,61,26,36,219,194,114,208,195,229,218,8,0,0,1,0,176,254,20,4,68,4,92,0,20,0,47,64,24,0,20,12,8,8,9,20,9,22,21,16,4,70,89,16,16,12,9,10,15,9,21,0,27,0,63,63,63,18,57,63,43,17,18,1,57,57,17,51,17,51,17,51,49,48,1,17,52,38,35,34,6,21,17,35,17,51,23,51,54,54,51,50,22,21,17,3,158,122,130,172,160,166,135,27,8,51,184,113,198,200,254,20,4,177,134,132,186,214,253,193,4,72,150,81,89,191,210,251,73,0,3,0,115,255,236,4,74,6,43,0,11,0,18,0,25,0,73,64,39,22,16,16,6,23,15,15,0,6,0,26,27,22,16,70,89,15,22,191,22,2,11,3,22,22,3,9,9,19,70,89,9,1,3,12,70,89,3,22,0,63,43,0,24,63,43,17,18,0,57,24,47,95,94,93,43,17,18,1,57,57,17,51,17,51,17,51,17,51,49,48,1,16,2,35,34,2,17,16,18,51,50,18,1,50,18,19,33,18,18,19,34,2,3,33,2,2,4,74,244,250,240,249,245,244,244,250,254,18,164,156,6,253,121,4,150,167,161,150,10,2,133,11,152,3,12,254,106,254,118,1,147,1,141,1,151,1,136,254,107,251,225,1,49,1,51,254,208,254,204,5,41,254,225,254,231,1,25,1,31,0,1,0,168,255,236,2,147,4,72,0,15,0,31,64,14,1,14,7,14,17,16,15,15,11,4,70,89,11,22,0,63,43,0,24,63,17,18,1,57,57,17,51,49,48,1,17,20,22,51,50,54,55,21,6,6,35,34,38,53,17,1,78,73,87,37,101,27,31,105,50,160,145,4,72,252,250,104,101,13,7,127,13,17,168,169,3,11,255,255,0,176,0,0,4,27,4,70,2,6,0,250,0,0,0,1,255,242,255,236,4,70,6,33,0,34,0,51,64,27,8,1,21,3,36,0,0,35,24,19,70,89,24,22,30,31,31,0,11,11,6,70,89,11,1,0,21,0,63,63,43,17,18,0,57,17,51,24,63,43,17,1,51,17,18,23,57,49,48,35,1,39,46,2,35,34,7,53,54,51,50,22,22,23,1,22,22,51,50,55,21,6,35,34,38,39,3,38,39,35,6,7,3,14,1,217,58,30,50,67,49,58,57,68,63,91,121,88,54,1,107,19,42,35,27,33,48,61,74,83,29,156,84,22,9,28,88,254,4,55,162,85,70,36,13,133,17,60,130,152,252,12,49,51,10,121,24,76,83,1,180,240,96,116,209,253,182,0,255,255,0,176,254,20,4,68,4,72,2,6,0,119,0,0,0,1,0,0,0,0,4,2,4,72,0,14,0,28,64,12,9,10,10,0,16,15,5,14,21,9,0,15,0,63,50,63,57,17,18,1,57,57,17,51,49,48,17,51,19,22,22,23,51,54,18,17,51,16,2,7,35,172,219,26,83,16,8,177,159,166,207,225,186,4,72,253,178,67,238,62,175,1,189,1,81,254,149,254,4,225,0,1,0,113,254,111,3,160,6,20,0,49,0,73,64,39,4,25,45,31,29,28,19,12,12,40,0,28,31,37,25,7,50,51,28,48,1,48,1,71,89,48,48,16,38,41,37,38,37,70,89,38,0,16,35,0,63,63,43,17,0,51,17,18,57,24,47,43,17,18,0,57,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,35,34,6,21,20,30,2,23,22,22,21,20,6,7,35,54,54,53,52,38,39,38,38,53,52,54,55,53,38,53,52,54,55,6,35,35,53,33,21,35,34,6,6,21,20,22,51,51,3,86,178,176,213,50,95,135,84,142,135,54,67,156,53,66,115,143,200,199,158,128,217,139,166,128,115,68,2,186,51,130,224,127,167,175,170,2,242,178,142,80,98,61,36,18,29,110,90,65,149,99,71,147,52,55,61,25,34,200,176,140,210,39,12,64,217,117,158,50,12,141,131,80,144,95,115,108,255,255,0,115,255,236,4,98,4,92,2,6,0,82,0,0,0,1,0,25,255,236,4,244,4,72,0,21,0,54,64,29,10,11,7,19,16,3,19,11,13,5,22,23,18,9,13,15,13,70,89,15,15,11,21,5,0,70,89,5,22,0,63,43,0,24,63,63,43,17,0,51,51,17,18,1,23,57,17,51,17,51,49,48,37,50,55,21,6,35,34,53,17,33,17,35,17,35,53,55,33,21,35,17,20,22,4,125,38,48,43,84,219,254,35,166,221,143,4,76,213,51,117,18,131,24,253,2,209,252,70,3,186,74,68,142,253,60,74,55,0,2,0,166,254,20,4,98,4,92,0,16,0,28,0,54,64,27,21,9,9,10,26,0,10,0,29,30,6,3,14,14,17,70,89,14,16,10,27,3,23,70,89,3,22,0,63,43,0,24,63,63,43,17,18,0,57,17,18,1,57,57,17,51,17,51,17,51,49,48,1,16,0,35,34,39,35,22,21,17,35,17,16,18,51,50,18,37,34,6,21,17,22,51,50,54,53,52,38,4,98,255,0,233,179,120,8,8,168,251,234,219,252,254,33,158,151,122,183,159,152,144,2,37,254,241,254,214,94,61,212,254,219,4,31,1,10,1,31,254,209,162,207,209,254,174,102,208,222,214,212,0,0,1,0,115,254,111,3,162,4,92,0,32,0,46,64,23,14,7,0,21,21,7,27,3,34,33,4,18,18,24,11,24,30,70,89,24,16,11,35,0,63,63,43,17,18,0,57,17,51,17,18,1,23,57,17,51,17,51,49,48,1,20,22,22,23,22,22,21,20,6,7,35,54,54,53,52,38,38,39,38,38,53,16,0,51,50,22,23,7,38,35,34,6,1,31,59,143,160,148,131,54,67,156,54,67,51,110,97,204,195,1,20,248,79,158,54,53,130,114,176,170,2,10,135,132,80,34,32,107,90,66,152,95,70,148,50,40,47,38,18,37,254,219,1,30,1,54,33,24,141,51,218,0,2,0,115,255,236,4,182,4,72,0,13,0,25,0,48,64,25,20,0,14,7,7,12,0,11,4,27,26,12,23,9,23,70,89,9,15,4,17,70,89,4,22,0,63,43,0,24,63,43,17,0,51,17,18,1,23,57,17,51,17,51,49,48,1,20,6,6,35,34,0,53,16,33,33,21,33,22,1,20,22,51,50,54,53,16,39,35,34,6,4,96,123,229,154,235,254,248,2,80,1,243,254,248,178,252,191,170,161,159,171,174,65,222,200,1,252,157,241,130,1,32,254,2,62,142,167,254,247,194,209,197,182,1,14,186,208,0,0,1,0,18,255,231,3,147,4,72,0,19,0,44,64,23,3,15,0,9,15,17,4,20,21,2,17,19,17,70,89,19,15,12,5,70,89,12,22,0,63,43,0,24,63,43,17,0,51,17,18,1,23,57,17,51,49,48,1,21,33,17,20,51,50,54,55,21,6,6,35,34,38,53,17,33,53,55,3,147,254,80,205,47,98,27,35,111,48,181,170,254,215,148,4,72,142,253,150,223,13,7,125,15,18,170,170,2,127,74,68,0,0,1,0,164,255,236,4,113,4,72,0,21,0,37,64,17,12,19,6,3,19,3,23,22,15,4,15,0,9,70,89,0,22,0,63,43,0,24,63,51,17,18,1,57,57,17,51,17,51,49,48,5,34,38,17,17,51,17,20,22,51,50,54,53,52,38,39,51,22,22,21,16,0,2,115,231,232,166,158,153,167,161,28,34,166,36,28,254,254,20,250,1,10,2,88,253,176,192,195,238,251,130,224,136,144,214,140,254,194,254,212,0,0,2,0,115,254,20,5,76,4,92,0,24,0,34,0,65,64,35,10,4,32,24,24,12,0,25,19,19,0,7,4,4,35,36,16,28,70,89,16,16,6,15,32,12,1,12,70,89,23,1,22,0,27,0,63,63,51,43,17,0,51,24,63,63,43,17,18,1,23,57,17,51,17,51,51,17,51,17,51,49,48,1,17,36,0,17,16,55,23,6,6,21,16,5,17,52,54,51,50,18,21,20,2,6,7,17,1,52,38,35,34,6,21,17,54,54,2,131,254,252,254,244,207,131,89,81,1,104,166,149,180,218,136,248,165,1,121,124,102,73,78,179,198,254,20,1,218,11,1,35,1,15,1,40,253,90,117,224,124,254,117,35,2,108,187,190,254,219,250,178,254,251,144,8,254,38,4,39,185,219,120,114,253,146,16,236,0,1,255,236,254,20,4,80,4,78,0,32,0,57,64,33,14,7,8,5,21,24,30,7,34,23,33,5,24,8,21,4,6,23,27,17,12,70,89,17,27,6,15,0,28,70,89,0,15,0,63,43,0,24,63,63,43,0,24,63,18,23,57,17,1,51,18,23,57,49,48,19,50,22,22,23,19,1,51,1,19,22,22,51,50,55,21,6,35,34,38,39,3,1,35,1,3,38,38,35,34,7,53,54,178,54,78,62,44,145,1,62,180,254,84,190,48,82,63,45,45,60,59,115,141,59,150,254,150,178,1,208,172,38,70,43,37,27,49,4,78,43,91,112,254,143,2,97,252,252,254,28,122,74,8,129,15,118,159,1,131,253,104,3,68,1,188,99,80,11,129,17,0,1,0,164,254,20,5,135,6,18,0,26,0,61,64,31,22,19,1,14,14,25,15,4,10,10,15,19,3,27,28,26,0,7,20,15,1,25,16,25,70,89,13,16,22,15,27,0,63,63,51,43,17,0,51,24,63,51,63,17,18,1,23,57,17,51,17,51,51,17,51,17,51,49,48,1,17,54,54,53,52,38,39,51,18,21,16,0,5,17,35,17,36,0,17,17,51,17,20,22,23,17,3,90,188,203,26,37,166,63,254,227,254,240,164,254,248,254,246,166,180,184,6,18,250,105,15,231,204,120,235,168,254,240,244,254,236,254,206,16,254,38,1,218,9,1,34,1,16,2,31,253,219,195,218,13,5,153,0,1,0,115,255,236,5,188,4,72,0,39,0,61,64,30,10,3,38,19,19,16,25,32,32,16,3,3,40,41,38,17,17,0,28,6,15,22,13,0,13,70,89,35,0,22,0,63,50,43,17,0,51,24,63,51,18,57,47,57,17,18,1,23,57,17,51,17,51,18,57,17,51,49,48,5,34,2,53,52,18,55,51,6,6,21,20,22,51,50,54,53,17,51,17,20,22,51,50,54,53,52,2,39,51,22,18,21,20,2,35,34,39,35,6,1,244,182,203,55,68,172,68,57,120,107,94,105,161,106,93,107,120,55,69,172,65,57,203,182,220,68,9,65,20,1,40,254,156,1,1,153,156,255,157,193,216,143,125,1,55,254,201,128,140,216,193,151,1,4,157,146,254,249,157,252,254,214,182,182,255,255,0,9,255,236,2,147,5,211,2,38,1,134,0,0,1,7,0,106,254,212,0,0,0,10,180,2,1,37,17,38,0,43,53,53,255,255,0,164,255,236,4,113,5,211,2,38,1,146,0,0,1,6,0,106,57,0,0,10,180,2,1,43,17,38,0,43,53,53,255,255,0,115,255,236,4,98,6,115,2,38,0,82,0,0,1,6,1,84,33,0,0,8,179,2,34,17,38,0,43,53,255,255,0,164,255,236,4,113,6,115,2,38,1,146,0,0,1,6,1,84,39,0,0,8,179,1,31,17,38,0,43,53,255,255,0,115,255,236,5,188,6,115,2,38,1,150,0,0,1,7,1,84,0,201,0,0,0,8,179,1,49,17,38,0,43,53,255,255,0,201,0,0,3,248,7,37,2,38,0,40,0,0,1,7,0,106,0,39,1,82,0,10,180,2,1,33,5,38,0,43,53,53,0,1,0,18,255,236,5,66,5,182,0,29,0,70,64,38,22,14,14,15,8,27,27,20,2,15,17,5,30,31,22,13,73,89,22,22,15,18,21,17,18,17,73,89,18,3,15,18,0,5,73,89,0,19,0,63,43,0,24,63,63,43,17,0,51,17,18,57,24,47,43,17,18,1,23,57,17,51,17,51,17,51,49,48,5,34,39,53,22,51,50,54,53,53,52,38,35,33,17,35,17,33,53,33,21,33,17,33,50,22,21,21,20,6,3,207,96,54,55,91,101,104,131,140,254,131,170,254,176,3,183,254,67,1,140,205,221,196,20,22,150,19,124,112,131,128,113,253,27,5,31,151,151,254,94,191,178,143,190,211,255,255,0,201,0,0,3,248,7,115,2,38,1,97,0,0,1,7,0,118,0,90,1,82,0,8,179,1,15,5,38,0,43,53,0,1,0,125,255,236,4,227,5,205,0,24,0,56,64,30,6,3,17,22,12,5,17,4,25,26,3,6,73,89,3,3,14,20,20,0,73,89,20,4,14,9,73,89,14,19,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,51,49,48,1,34,4,7,33,21,33,18,0,51,50,55,21,6,35,32,0,17,16,0,33,50,23,7,38,3,66,226,254,243,30,2,211,253,41,10,1,11,249,162,201,161,226,254,180,254,162,1,121,1,78,237,178,71,169,5,51,250,241,150,254,238,254,227,55,149,57,1,132,1,109,1,95,1,145,88,148,82,255,255,0,106,255,236,4,2,5,203,2,6,0,54,0,0,255,255,0,84,0,0,2,86,5,182,2,6,0,44,0,0,255,255,0,60,0,0,2,111,7,37,2,38,0,44,0,0,1,7,0,106,255,7,1,82,0,10,180,2,1,33,5,38,0,43,53,53,255,255,255,96,254,127,1,104,5,182,2,6,0,45,0,0,0,2,0,0,255,233,7,35,5,182,0,26,0,35,0,71,64,38,24,27,27,4,31,0,0,4,13,3,36,37,24,35,73,89,24,24,11,22,22,6,73,89,22,3,11,16,74,89,11,18,4,27,74,89,4,18,0,63,43,0,24,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,20,4,33,33,17,33,2,2,6,6,35,34,39,53,22,51,50,62,2,18,19,33,17,51,32,1,51,50,54,53,52,38,35,35,7,35,254,237,254,252,254,185,254,147,57,84,80,139,107,69,64,50,63,48,65,43,55,68,65,2,166,122,2,58,253,76,133,198,183,192,220,102,1,170,206,220,5,31,254,72,253,246,251,121,25,143,26,62,103,250,1,190,1,226,253,144,253,77,139,140,138,124,0,2,0,201,0,0,7,84,5,182,0,17,0,26,0,74,64,38,11,7,7,8,15,18,18,12,4,22,0,0,4,8,3,27,28,26,6,11,6,73,89,15,11,11,4,13,9,3,8,18,4,18,74,89,4,18,0,63,43,0,24,63,63,51,18,57,47,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,17,51,17,51,17,51,49,48,1,20,4,33,33,17,33,17,35,17,51,17,33,17,51,17,51,32,1,51,50,54,53,52,38,35,35,7,84,254,240,254,251,254,183,253,125,170,170,2,131,172,121,2,57,253,78,133,196,185,193,219,102,1,170,206,220,2,176,253,80,5,182,253,146,2,110,253,144,253,77,139,140,137,125,0,0,1,0,18,0,0,5,66,5,182,0,19,0,58,64,31,0,12,12,13,6,5,5,18,13,15,4,20,21,19,15,16,15,73,89,0,11,73,89,0,0,13,16,3,6,13,18,0,63,51,63,18,57,47,43,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,49,48,1,33,50,22,21,17,35,17,52,38,35,33,17,35,17,33,53,33,21,33,2,12,1,144,205,217,170,125,140,254,125,170,254,176,3,246,254,4,3,125,188,181,253,244,1,246,126,113,253,27,5,31,151,151,255,255,0,201,0,0,4,229,7,115,2,38,1,180,0,0,1,7,0,118,0,162,1,82,0,8,179,1,20,5,38,0,43,53,255,255,0,27,255,236,4,248,7,94,2,38,1,189,0,0,1,7,2,54,0,68,1,82,0,8,179,1,23,5,38,0,43,53,0,1,0,201,254,131,5,12,5,182,0,11,0,48,64,24,8,5,2,3,9,0,0,3,5,3,12,13,10,6,3,5,8,73,89,1,5,18,3,34,0,63,63,51,43,0,24,63,51,17,18,1,23,57,17,51,17,51,17,51,49,48,33,33,17,35,17,33,17,51,17,33,17,51,5,12,254,47,176,254,62,170,2,239,170,254,131,1,125,5,182,250,228,5,28,0,255,255,0,0,0,0,5,16,5,188,2,6,0,36,0,0,0,2,0,201,0,0,4,125,5,182,0,13,0,22,0,61,64,32,18,0,9,14,14,4,4,7,0,3,24,23,9,22,73,89,9,9,4,5,5,8,73,89,5,3,4,14,74,89,4,18,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,20,4,33,33,17,33,21,33,17,51,50,22,22,1,51,50,54,53,52,38,35,35,4,125,254,253,254,251,254,84,3,94,253,76,227,193,242,116,252,246,239,190,173,176,219,207,1,170,218,208,5,182,151,254,39,89,174,254,84,130,149,142,120,0,255,255,0,201,0,0,4,190,5,182,2,6,0,37,0,0,255,255,0,201,0,0,3,248,5,182,2,6,1,97,0,0,0,2,0,14,254,131,5,74,5,182,0,13,0,19,0,67,64,36,4,5,19,7,16,10,14,12,1,0,0,12,10,7,5,5,20,21,10,16,73,89,10,3,1,5,34,19,12,6,3,6,73,89,3,18,0,63,43,17,0,51,51,24,63,51,63,43,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,49,48,1,35,17,33,17,35,17,51,18,18,19,33,17,51,33,17,33,6,2,7,5,74,162,252,8,162,113,154,219,12,2,145,185,254,157,254,179,18,206,137,254,131,1,125,254,131,2,23,1,3,2,230,1,51,250,228,4,131,242,253,89,234,0,255,255,0,201,0,0,3,248,5,182,2,6,0,40,0,0,0,1,0,2,0,0,6,188,5,182,0,17,0,60,64,31,6,13,13,3,14,10,9,8,1,14,0,17,7,18,19,15,12,9,6,3,0,0,1,14,11,17,18,7,4,1,3,0,63,51,51,63,51,51,18,57,17,51,51,51,51,51,17,18,1,23,57,17,51,51,17,51,49,48,1,1,51,1,17,51,17,1,51,1,1,35,1,17,35,17,1,35,2,86,253,193,190,2,57,164,2,58,190,253,192,2,82,196,253,186,164,253,187,199,2,240,2,198,253,60,2,196,253,60,2,196,253,60,253,14,2,229,253,27,2,229,253,27,0,1,0,74,255,236,4,53,5,203,0,40,0,67,64,36,28,0,19,7,7,0,3,23,35,12,6,41,42,3,24,23,24,23,74,89,24,24,10,38,38,31,74,89,38,4,10,16,74,89,10,19,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,0,57,17,18,1,23,57,17,51,17,51,49,48,1,20,6,7,21,22,22,21,20,4,33,34,39,53,22,22,51,50,54,53,52,38,35,35,53,51,50,54,53,52,38,35,34,6,7,39,54,54,51,50,22,4,25,183,161,183,189,254,206,254,233,255,163,96,223,103,198,203,225,223,218,209,205,225,162,137,110,178,117,84,101,251,135,225,255,4,96,144,180,24,8,25,180,145,205,229,79,158,46,50,150,141,134,138,143,147,132,107,128,50,74,114,75,77,197,0,1,0,203,0,0,5,82,5,182,0,15,0,52,64,24,14,2,2,15,6,9,9,8,15,8,16,17,5,4,12,13,4,13,9,15,18,6,0,3,0,63,50,63,51,57,57,17,51,17,51,17,18,1,57,57,17,51,17,51,17,51,17,51,49,48,19,51,17,20,7,51,1,51,17,35,17,52,55,35,1,35,203,159,14,8,3,52,186,160,17,9,252,203,186,5,182,252,211,225,182,4,196,250,74,3,37,201,221,251,53,0,255,255,0,203,0,0,5,82,7,94,2,38,1,178,0,0,1,7,2,54,0,225,1,82,0,8,179,1,16,5,38,0,43,53,0,1,0,201,0,0,4,229,5,182,0,10,0,45,64,22,7,3,3,4,0,9,10,4,4,11,12,10,7,2,7,4,8,5,3,1,4,18,0,63,51,63,51,18,57,57,17,51,17,18,1,23,57,17,51,17,51,49,48,33,35,1,17,35,17,51,17,1,51,1,4,229,206,253,92,170,170,2,147,195,253,121,2,229,253,27,5,182,253,60,2,196,253,58,0,1,0,0,255,231,4,217,5,182,0,19,0,45,64,24,3,18,1,0,0,18,10,3,20,21,18,3,73,89,18,3,8,13,74,89,8,19,1,18,0,63,63,43,0,24,63,43,17,18,1,23,57,17,51,17,51,49,48,33,35,17,33,7,2,2,6,39,34,39,53,22,51,50,54,54,18,19,33,4,217,170,254,37,31,61,93,152,126,74,59,54,59,53,79,61,93,56,3,18,5,31,240,254,33,254,69,174,2,25,143,26,87,215,2,89,1,184,255,255,0,201,0,0,6,113,5,182,2,6,0,48,0,0,255,255,0,201,0,0,5,31,5,182,2,6,0,43,0,0,255,255,0,125,255,236,5,190,5,205,2,6,0,50,0,0,255,255,0,201,0,0,5,12,5,182,2,6,1,110,0,0,255,255,0,201,0,0,4,104,5,182,2,6,0,51,0,0,255,255,0,125,255,236,4,207,5,203,2,6,0,38,0,0,255,255,0,18,0,0,4,90,5,182,2,6,0,55,0,0,0,1,0,27,255,236,4,248,5,182,0,22,0,42,64,21,18,8,2,9,4,23,24,14,13,8,13,0,17,9,3,0,5,73,89,0,19,0,63,43,0,24,63,51,18,57,57,17,51,17,18,1,23,57,49,48,5,34,39,53,22,51,50,54,55,1,51,1,22,23,51,54,55,1,51,1,14,2,1,37,111,84,93,96,110,133,66,253,199,188,1,176,25,14,8,28,11,1,103,180,254,45,84,135,169,20,30,166,43,101,139,4,65,252,193,49,47,84,22,3,53,251,234,187,170,79,255,255,0,106,255,236,5,248,5,203,2,6,1,115,0,0,255,255,0,8,0,0,4,150,5,182,2,6,0,59,0,0,0,1,0,201,254,131,5,184,5,182,0,11,0,50,64,25,8,5,9,0,3,2,2,0,5,3,12,13,10,6,3,0,8,5,8,73,89,5,18,3,34,0,63,63,43,17,0,51,24,63,51,17,18,1,23,57,17,51,17,51,17,51,49,48,37,51,17,35,17,33,17,51,17,33,17,51,5,12,172,161,251,178,170,2,239,170,154,253,233,1,125,5,182,250,228,5,28,0,0,1,0,170,0,0,4,199,5,182,0,19,0,45,64,22,11,8,17,1,1,0,8,0,20,21,5,14,73,89,5,5,1,18,9,3,1,18,0,63,63,51,18,57,47,43,17,18,1,57,57,17,51,17,51,17,51,49,48,33,35,17,6,6,35,34,38,53,17,51,17,20,22,51,50,54,55,17,51,4,199,170,149,198,106,207,223,170,127,143,97,177,169,170,2,92,53,39,190,179,2,69,253,207,121,116,29,55,2,202,0,1,0,201,0,0,7,121,5,182,0,11,0,49,64,24,4,1,8,5,9,0,0,5,1,3,12,13,10,6,2,3,8,4,1,4,73,89,1,18,0,63,43,17,0,51,24,63,51,51,17,18,1,23,57,17,51,17,51,17,51,49,48,33,33,17,51,17,33,17,51,17,33,17,51,7,121,249,80,170,2,88,170,2,88,172,5,182,250,228,5,28,250,228,5,28,0,1,0,201,254,131,8,4,5,182,0,15,0,59,64,30,3,0,7,4,8,11,14,13,13,11,4,0,4,16,17,14,34,9,5,1,3,11,7,3,0,3,73,89,0,18,0,63,43,17,0,51,51,24,63,51,51,63,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,51,17,51,17,33,17,51,17,33,17,51,17,51,17,35,17,201,170,2,71,172,2,72,170,172,162,5,182,250,228,5,28,250,228,5,28,250,228,253,233,1,125,0,0,2,0,18,0,0,5,23,5,182,0,12,0,21,0,61,64,32,9,13,13,4,17,0,0,4,6,3,22,23,9,21,73,89,9,9,4,7,7,6,73,89,7,3,4,13,74,89,4,18,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,20,4,35,33,17,33,53,33,17,51,32,4,1,51,50,54,53,52,38,35,35,5,23,254,253,249,254,71,254,176,1,250,244,1,5,1,18,252,245,252,181,169,175,203,224,1,170,206,220,5,31,151,253,144,205,254,26,139,140,136,126,0,0,3,0,201,0,0,6,10,5,182,0,10,0,19,0,23,0,63,64,32,3,11,11,0,15,7,21,20,20,7,0,3,24,25,21,18,3,19,73,89,3,3,0,22,1,3,0,11,74,89,0,18,0,63,43,0,24,63,51,18,57,47,43,0,24,63,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,51,17,51,17,51,32,4,21,20,4,35,37,51,50,54,53,52,38,35,35,1,35,17,51,201,170,239,1,5,1,18,254,253,249,254,246,247,181,170,179,200,219,4,151,170,170,5,182,253,144,205,207,206,220,145,141,140,137,123,253,82,5,182,0,2,0,201,0,0,4,186,5,182,0,10,0,18,0,50,64,25,7,11,11,4,14,0,4,0,19,20,7,18,73,89,7,7,4,5,3,4,11,74,89,4,18,0,63,43,0,24,63,18,57,47,43,17,18,1,57,57,17,51,17,51,17,51,49,48,1,20,4,35,33,17,51,17,33,32,4,1,33,32,17,52,38,35,33,4,186,254,241,251,254,25,170,1,35,1,11,1,25,252,185,1,43,1,108,187,206,254,242,1,170,203,223,5,182,253,144,211,254,32,1,23,135,127,0,1,0,61,255,236,4,137,5,203,0,26,0,58,64,31,24,21,21,9,9,22,15,3,4,27,28,23,22,73,89,23,23,12,5,12,18,73,89,12,19,5,0,73,89,5,4,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,49,48,1,34,7,39,54,51,50,4,18,21,16,0,33,34,39,53,22,22,51,32,0,19,33,53,33,38,0,1,211,172,162,72,172,236,217,1,57,162,254,148,254,170,227,156,83,172,99,1,15,1,20,8,253,49,2,205,22,254,241,5,51,76,144,84,176,254,186,221,254,136,254,108,57,149,21,34,1,33,1,16,152,229,1,2,0,2,0,201,255,236,7,231,5,205,0,18,0,30,0,71,64,38,12,8,8,9,19,13,6,25,0,0,6,9,3,31,32,16,28,73,89,16,4,12,7,73,89,12,12,9,10,3,9,18,3,22,73,89,3,19,0,63,43,0,24,63,63,18,57,47,43,0,24,63,43,17,18,1,23,57,17,51,17,51,51,17,51,17,51,49,48,1,16,0,33,32,0,3,33,17,35,17,51,17,33,18,0,33,32,0,1,16,18,51,50,18,17,16,2,35,34,2,7,231,254,171,254,208,254,211,254,171,11,254,158,170,170,1,100,23,1,81,1,31,1,51,1,86,251,160,238,231,234,237,235,232,233,240,2,221,254,158,254,113,1,111,1,85,253,80,5,182,253,146,1,55,1,78,254,111,254,161,254,216,254,204,1,50,1,42,1,42,1,46,254,207,0,2,0,51,0,0,4,78,5,182,0,13,0,21,0,61,64,32,21,12,12,11,18,6,2,6,3,11,4,23,22,0,20,74,89,3,9,0,0,2,9,9,15,74,89,9,3,12,2,18,0,63,51,63,43,17,18,0,57,24,47,18,57,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,1,35,1,38,38,53,52,36,33,33,17,35,17,17,35,34,6,21,16,33,51,2,123,254,129,201,1,154,161,146,1,15,1,19,1,146,170,227,183,190,1,123,221,2,98,253,158,2,127,51,207,158,196,211,250,74,2,98,2,193,126,142,254,221,255,255,0,94,255,236,3,205,4,90,2,6,0,68,0,0,0,2,0,119,255,236,4,84,6,33,0,23,0,34,0,59,64,30,26,18,32,11,0,0,6,18,3,36,35,12,11,15,28,70,89,11,15,15,21,5,21,24,70,89,21,22,5,1,0,63,63,43,17,18,0,57,24,47,57,43,17,0,51,17,18,1,23,57,17,51,51,17,51,49,48,19,16,18,55,36,55,23,4,7,6,6,7,51,54,54,51,50,18,21,16,0,35,34,0,5,32,17,16,33,34,6,6,7,16,18,119,212,230,1,30,218,31,254,165,149,145,145,7,12,62,196,107,202,226,254,250,234,231,254,250,1,252,1,49,254,235,76,141,117,32,166,2,145,1,104,1,147,50,61,38,146,58,34,33,246,212,84,96,254,250,232,254,255,254,223,1,98,215,1,133,1,115,63,104,55,254,249,254,237,0,3,0,176,0,0,4,76,4,72,0,14,0,22,0,31,0,73,64,38,28,20,20,11,23,0,15,7,7,0,3,11,4,32,33,4,28,19,28,19,70,89,28,28,11,12,12,27,70,89,12,15,11,20,70,89,11,21,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,0,57,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,20,6,7,21,22,22,21,20,6,35,33,17,33,32,3,52,38,35,33,17,33,32,3,52,38,35,33,17,33,50,54,4,41,123,111,140,129,225,216,254,29,1,225,1,152,131,135,156,254,211,1,49,1,31,31,123,125,254,199,1,25,154,126,3,53,107,111,19,9,19,126,111,153,166,4,72,253,2,89,81,254,151,2,154,80,67,254,203,76,0,0,1,0,176,0,0,3,68,4,72,0,5,0,29,64,14,2,3,0,3,7,6,4,1,70,89,4,15,3,21,0,63,63,43,17,18,1,57,57,17,51,49,48,1,33,17,35,17,33,3,68,254,18,166,2,148,3,186,252,70,4,72,0,2,0,41,254,133,4,104,4,72,0,13,0,19,0,67,64,36,4,5,19,7,16,10,14,12,1,0,0,12,10,7,5,5,20,21,10,16,71,89,10,15,1,5,34,19,12,6,3,6,70,89,3,21,0,63,43,17,0,51,51,24,63,51,63,43,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,49,48,1,35,17,33,17,35,17,51,54,18,19,33,17,51,33,17,35,6,2,7,4,104,161,253,2,160,86,134,152,3,2,43,157,254,195,246,13,145,108,254,133,1,123,254,133,2,10,182,1,234,1,25,252,71,3,54,222,254,57,145,0,255,255,0,115,255,236,4,18,4,92,2,6,0,72,0,0,0,1,0,4,0,0,5,223,4,70,0,17,0,60,64,31,2,9,9,17,10,6,4,5,10,14,15,13,7,19,18,17,11,8,5,2,14,14,13,3,0,15,15,10,7,13,21,0,63,51,51,63,51,51,18,57,17,51,51,51,51,51,17,18,1,23,57,17,51,51,17,51,49,48,1,51,17,1,51,1,1,35,1,17,35,17,1,35,1,1,51,1,2,164,153,1,197,182,254,54,1,241,192,254,30,153,254,31,191,1,240,254,55,182,1,195,4,70,253,237,2,19,253,237,253,205,2,43,253,213,2,43,253,213,2,51,2,19,253,237,0,1,0,68,255,236,3,127,4,92,0,34,0,77,64,43,2,13,30,19,19,13,15,33,8,24,6,35,36,16,34,33,34,33,70,89,15,34,31,34,2,11,3,34,34,22,10,22,27,70,89,22,22,10,4,70,89,10,16,0,63,43,0,24,63,43,17,18,0,57,24,47,95,94,93,43,17,18,0,57,17,18,1,23,57,17,51,17,51,49,48,1,32,53,52,35,34,6,7,39,54,51,50,22,21,20,7,21,22,22,21,20,6,35,34,39,53,22,51,50,54,53,52,33,35,53,1,129,1,55,252,77,126,102,59,170,201,189,218,205,126,116,245,216,237,129,183,187,144,147,254,201,152,2,129,172,162,28,42,135,76,155,134,184,57,8,37,137,103,152,169,71,152,86,99,93,191,141,0,1,0,176,0,0,4,98,4,72,0,13,0,52,64,25,8,4,7,7,6,11,3,3,12,6,12,15,14,3,10,12,4,13,15,12,21,7,21,4,15,0,63,63,63,63,17,18,57,57,17,18,1,57,57,17,51,17,51,17,51,17,51,51,49,48,1,17,7,7,1,51,17,35,17,55,55,1,35,17,1,76,7,3,2,81,207,155,3,5,253,176,207,4,72,253,73,182,57,3,166,251,184,2,158,132,130,252,92,4,72,0,255,255,0,176,0,0,4,98,6,12,2,38,1,210,0,0,1,6,2,54,61,0,0,8,179,1,14,17,38,0,43,53,0,1,0,176,0,0,4,12,4,72,0,10,0,45,64,22,10,6,6,7,3,1,2,7,4,12,11,2,10,5,10,7,0,8,15,4,7,21,0,63,51,63,51,18,57,57,17,51,17,18,1,23,57,17,51,17,51,49,48,1,51,1,1,35,1,17,35,17,51,17,3,47,182,254,39,2,0,194,254,12,166,166,4,72,253,239,253,201,2,43,253,213,4,72,253,235,0,1,0,16,255,242,3,225,4,72,0,16,0,45,64,24,1,0,3,15,10,15,0,3,18,17,15,3,70,89,15,15,7,12,71,89,7,22,1,21,0,63,63,43,0,24,63,43,17,18,1,23,57,17,51,17,51,49,48,33,35,17,33,2,2,6,35,34,39,53,22,51,50,18,19,33,3,225,168,254,183,27,96,153,118,54,32,22,28,115,136,35,2,129,3,186,254,156,254,94,194,12,123,6,1,230,1,239,0,1,0,176,0,0,5,47,4,70,0,20,0,53,64,25,3,6,6,5,18,15,15,16,5,16,22,21,7,14,0,14,11,3,17,15,6,16,21,11,21,0,63,63,51,63,51,18,57,57,17,51,17,18,1,57,57,17,51,17,51,17,51,17,51,49,48,37,55,55,1,51,17,35,17,7,7,1,35,1,38,39,17,35,17,51,1,22,2,233,31,43,1,41,211,147,20,58,254,229,139,254,229,53,20,148,203,1,31,43,160,93,118,2,211,251,186,3,137,58,153,253,74,2,184,134,75,252,119,4,70,253,73,110,0,1,0,176,0,0,4,98,4,72,0,11,0,57,64,30,2,6,6,5,1,9,9,10,5,10,13,12,1,8,70,89,47,1,63,1,2,1,1,10,3,11,15,6,10,21,0,63,51,63,51,18,57,47,93,43,17,18,1,57,57,17,51,17,51,17,51,17,51,49,48,1,17,33,17,51,17,35,17,33,17,35,17,1,86,2,102,166,166,253,154,166,4,72,254,53,1,203,251,184,1,238,254,18,4,72,255,255,0,115,255,236,4,98,4,92,2,6,0,82,0,0,0,1,0,176,0,0,4,72,4,72,0,7,0,35,64,17,0,1,5,4,1,4,8,9,2,7,70,89,2,15,5,1,21,0,63,51,63,43,17,18,1,57,57,17,51,17,51,49,48,33,35,17,33,17,35,17,33,1,86,166,3,152,168,253,182,4,72,251,184,3,184,0,255,255,0,176,254,20,4,117,4,92,2,6,0,83,0,0,255,255,0,115,255,236,3,139,4,92,2,6,0,70,0,0,0,1,0,41,0,0,3,147,4,72,0,7,0,36,64,18,2,3,0,3,5,3,8,9,1,5,6,5,70,89,6,15,3,21,0,63,63,43,17,0,51,17,18,1,23,57,17,51,49,48,1,33,17,35,17,33,53,33,3,147,254,156,166,254,160,3,106,3,186,252,70,3,186,142,255,255,0,2,254,20,4,6,4,72,2,6,0,92,0,0,0,3,0,113,254,20,5,70,6,20,0,17,0,24,0,30,0,76,64,39,18,9,28,15,4,4,21,12,5,25,0,0,5,9,3,31,32,13,0,27,22,12,22,70,89,15,12,16,28,21,6,21,70,89,3,6,22,5,27,0,63,63,51,43,17,0,51,24,63,51,43,17,0,51,24,63,17,18,1,23,57,17,51,17,51,51,51,17,51,51,17,51,49,48,1,20,0,7,17,35,17,38,0,53,52,0,55,17,51,17,22,0,5,20,22,23,17,6,6,5,16,37,17,54,54,5,70,254,229,254,164,248,254,224,1,31,255,158,251,1,30,251,217,176,192,185,183,3,123,254,147,190,175,2,37,249,254,217,21,254,36,1,220,19,1,46,244,249,1,38,20,1,188,254,68,23,254,212,240,192,218,18,3,84,17,207,200,1,127,39,252,174,19,218,255,255,0,39,0,0,4,8,4,72,2,6,0,91,0,0,0,1,0,176,254,133,4,221,4,72,0,11,0,50,64,25,6,3,7,10,1,0,0,10,3,3,12,13,8,4,15,10,6,3,6,70,89,3,21,1,34,0,63,63,43,17,0,51,24,63,51,17,18,1,23,57,17,51,17,51,17,51,49,48,1,35,17,33,17,51,17,33,17,51,17,51,4,221,166,252,121,166,2,70,166,155,254,133,1,123,4,72,252,71,3,185,252,71,0,1,0,156,0,0,4,45,4,72,0,18,0,45,64,22,6,10,10,9,1,17,9,17,20,19,3,14,70,89,3,3,10,7,18,15,10,21,0,63,63,51,18,57,47,43,17,18,1,57,57,17,51,17,51,17,51,49,48,1,17,20,51,50,54,55,17,51,17,35,17,6,6,35,34,38,53,17,1,66,219,91,166,105,166,166,105,179,113,164,186,4,72,254,112,192,56,67,1,213,251,184,1,240,72,59,172,147,1,156,0,1,0,176,0,0,6,111,4,72,0,11,0,49,64,24,8,5,0,9,1,4,4,9,5,3,12,13,10,2,6,15,0,8,5,8,70,89,5,21,0,63,43,17,0,51,24,63,51,51,17,18,1,23,57,17,51,17,51,17,51,49,48,37,33,17,51,17,33,17,51,17,33,17,51,3,225,1,230,168,250,65,166,1,229,166,143,3,185,251,184,4,72,252,71,3,185,0,0,1,0,176,254,135,7,10,4,70,0,15,0,59,64,30,12,9,0,13,1,4,7,6,6,4,13,9,4,16,17,14,2,10,15,4,0,12,9,12,70,89,9,21,7,34,0,63,63,43,17,0,51,51,24,63,51,51,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,37,33,17,51,17,51,17,35,17,33,17,51,17,33,17,51,3,225,1,230,166,157,168,250,78,166,1,229,166,143,3,183,252,73,253,248,1,121,4,70,252,73,3,183,0,0,2,0,41,0,0,5,29,4,72,0,12,0,20,0,61,64,32,0,18,18,8,13,4,4,8,10,3,21,22,0,17,70,89,0,0,8,11,11,10,70,89,11,15,8,18,70,89,8,21,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,33,50,22,21,20,6,35,33,17,33,53,33,1,52,38,35,33,17,33,32,2,45,1,57,224,215,223,220,254,37,254,162,2,4,2,76,124,157,254,205,1,57,1,19,2,131,154,155,166,168,3,186,142,252,252,93,83,254,151,0,0,3,0,176,0,0,5,121,4,72,0,10,0,14,0,22,0,63,64,32,0,16,16,8,4,19,12,11,11,19,8,3,23,24,12,21,0,15,70,89,0,0,8,13,9,15,8,16,70,89,8,21,0,63,43,0,24,63,51,18,57,47,43,0,24,63,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,33,50,22,21,20,6,35,33,17,51,1,35,17,51,1,17,33,32,53,52,38,35,1,86,1,43,209,201,213,207,254,57,166,4,35,166,166,251,221,1,25,1,8,122,147,2,131,155,154,165,169,4,72,251,184,4,72,253,172,254,151,185,92,84,0,2,0,176,0,0,4,76,4,72,0,9,0,18,0,50,64,25,15,3,0,11,11,7,3,7,20,19,0,10,70,89,0,0,7,8,15,7,11,70,89,7,21,0,63,43,0,24,63,18,57,47,43,17,18,1,57,57,17,51,17,51,17,51,49,48,1,33,32,17,20,6,35,33,17,51,17,17,33,50,54,53,52,38,35,1,86,1,82,1,164,219,211,254,18,166,1,64,132,140,129,148,2,131,254,203,162,172,4,72,253,172,254,151,92,93,91,85,0,1,0,57,255,236,3,125,4,92,0,26,0,68,64,38,12,9,9,24,24,10,18,2,4,27,28,11,10,70,89,15,11,31,11,2,11,3,11,11,0,21,21,15,70,89,21,16,0,6,70,89,0,22,0,63,43,0,24,63,43,17,18,0,57,24,47,95,94,93,43,17,18,1,23,57,17,51,17,51,49,48,5,34,39,53,22,22,51,50,54,55,33,53,33,38,38,35,34,7,39,54,54,51,32,0,17,16,0,1,86,167,118,60,140,91,174,189,10,253,213,2,41,16,169,161,103,151,47,55,164,80,1,0,1,10,254,223,20,57,147,23,36,186,185,141,172,160,54,140,26,35,254,219,254,236,254,243,254,214,0,2,0,176,255,236,6,51,4,92,0,18,0,30,0,81,64,45,12,8,8,9,19,13,6,25,0,0,6,9,3,31,32,16,28,70,89,16,16,12,7,70,89,15,12,31,12,2,11,3,12,12,9,10,15,9,21,3,22,70,89,3,22,0,63,43,0,24,63,63,18,57,47,95,94,93,43,0,24,63,43,17,18,1,23,57,17,51,17,51,51,17,51,17,51,49,48,1,16,0,35,34,2,39,33,17,35,17,51,17,33,54,54,51,50,0,1,20,22,51,50,54,53,52,38,35,34,6,6,51,254,255,224,213,250,14,254,225,166,166,1,33,20,252,207,220,1,1,252,238,146,161,158,149,146,161,161,146,2,37,254,243,254,212,1,11,247,254,18,4,72,254,53,228,251,254,207,254,250,211,219,213,217,210,216,216,0,2,0,37,0,0,3,193,4,72,0,13,0,20,0,61,64,32,17,11,11,10,14,5,1,5,2,10,4,22,21,13,16,70,89,2,8,13,13,1,8,8,19,70,89,8,15,11,1,21,0,63,51,63,43,17,18,0,57,24,47,18,57,43,17,18,1,23,57,17,51,17,51,17,51,49,48,51,35,1,38,38,53,52,54,51,33,17,35,17,33,1,20,33,33,17,33,34,231,194,1,59,127,135,202,181,1,232,166,254,235,254,246,1,20,1,11,254,211,242,1,207,28,161,122,150,172,251,184,1,182,1,78,190,1,114,255,255,0,115,255,236,4,18,5,211,2,38,0,72,0,0,1,6,0,106,8,0,0,10,180,3,2,48,17,38,0,43,53,53,0,1,0,20,254,20,4,68,6,20,0,39,0,102,64,58,29,27,23,15,15,20,16,7,37,37,25,2,16,18,5,40,41,30,29,33,11,70,89,26,18,19,18,71,89,23,19,15,19,31,19,47,19,3,9,3,29,33,19,19,33,29,3,16,21,0,16,21,0,5,70,89,0,27,0,63,43,0,24,63,63,18,23,57,47,47,47,95,94,93,17,51,43,17,0,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,17,51,51,51,49,48,1,34,39,53,22,51,50,53,17,52,38,35,34,6,21,17,35,17,35,53,51,53,51,21,33,21,33,21,20,7,51,54,54,51,50,22,21,17,20,6,3,47,79,52,58,55,129,122,130,173,157,168,156,156,166,1,145,254,111,8,10,49,181,116,201,201,137,254,20,25,137,20,170,3,82,134,132,188,211,253,231,4,219,127,186,186,127,196,84,56,79,91,191,210,252,182,156,170,255,255,0,176,0,0,3,68,6,33,2,38,1,205,0,0,1,6,0,118,241,0,0,8,179,1,15,17,38,0,43,53,0,1,0,115,255,236,3,170,4,92,0,25,0,68,64,38,15,18,18,3,9,24,17,3,4,26,27,15,18,70,89,15,15,31,15,2,11,3,15,15,0,6,6,12,70,89,6,16,0,21,70,89,0,22,0,63,43,0,24,63,43,17,18,0,57,24,47,95,94,93,43,17,18,1,23,57,17,51,17,51,49,48,5,34,0,17,16,0,51,50,22,23,7,38,35,34,6,7,33,21,33,22,22,51,50,55,21,6,2,121,248,254,242,1,19,251,82,158,57,49,143,109,164,170,16,2,41,253,213,9,170,167,140,151,116,20,1,35,1,16,1,19,1,42,32,25,141,51,163,169,141,190,181,59,147,57,255,255,0,106,255,236,3,115,4,92,2,6,0,86,0,0,255,255,0,162,0,0,1,102,5,223,2,6,0,76,0,0,255,255,255,236,0,0,2,31,5,211,2,38,0,243,0,0,1,7,0,106,254,183,0,0,0,10,180,2,1,25,17,38,0,43,53,53,255,255,255,145,254,20,1,102,5,223,2,6,0,77,0,0,0,2,0,16,255,242,6,66,4,72,0,21,0,29,0,76,64,41,9,20,0,27,27,7,22,4,4,7,20,14,4,30,31,0,26,70,89,0,0,12,20,20,9,70,89,20,15,12,17,71,89,12,21,7,27,70,89,7,21,0,63,43,0,24,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,51,50,22,21,16,33,33,17,33,2,2,35,34,39,53,22,51,50,18,19,33,1,52,38,35,35,17,51,32,3,176,244,211,203,254,75,254,101,254,254,40,181,171,56,32,22,28,115,136,35,2,80,1,236,125,158,231,237,1,21,2,131,155,154,254,178,3,186,253,250,254,62,12,123,6,1,230,1,239,252,252,91,85,254,151,0,2,0,176,0,0,6,164,4,70,0,17,0,25,0,74,64,38,15,11,11,12,1,19,19,16,8,22,5,5,8,12,3,26,27,18,10,15,10,70,89,1,15,15,8,17,13,15,12,21,8,19,70,89,8,21,0,63,43,0,24,63,63,51,18,57,47,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,17,51,17,51,17,51,49,48,1,17,33,50,22,21,16,33,33,17,33,17,35,17,51,17,33,17,19,17,51,32,53,52,38,35,4,0,1,0,217,203,254,78,254,96,254,10,172,172,1,250,166,240,1,20,128,153,4,70,254,59,153,154,254,178,1,238,254,18,4,70,254,55,1,201,253,174,254,151,185,92,84,0,255,255,0,20,0,0,4,68,6,20,2,6,0,233,0,0,255,255,0,176,0,0,4,12,6,33,2,38,1,212,0,0,1,6,0,118,51,0,0,8,179,1,20,17,38,0,43,53,255,255,0,2,254,20,4,6,6,12,2,38,0,92,0,0,1,6,2,54,183,0,0,8,179,1,22,17,38,0,43,53,0,1,0,176,254,135,4,70,4,70,0,11,0,50,64,25,4,1,10,11,5,8,8,11,1,3,12,13,11,34,6,2,15,9,1,1,4,70,89,1,21,0,63,43,17,0,51,24,63,51,63,17,18,1,23,57,17,51,17,51,17,51,49,48,33,33,17,51,17,33,17,51,17,33,17,35,2,47,254,129,166,2,74,166,254,143,166,4,70,252,73,3,183,251,186,254,135,0,0,1,0,201,0,0,4,8,6,227,0,7,0,35,64,17,0,3,5,6,3,6,9,8,7,4,73,89,1,7,3,6,18,0,63,63,198,43,17,18,1,57,57,17,51,17,51,49,48,1,17,51,17,33,17,35,17,3,102,162,253,107,170,5,182,1,45,254,58,250,227,5,182,0,0,1,0,176,0,0,3,68,5,137,0,7,0,39,64,18,5,0,2,3,0,3,9,8,6,4,4,1,71,89,4,15,3,21,0,63,63,43,0,24,16,198,17,18,1,57,57,17,51,17,51,49,48,1,33,17,35,17,33,17,51,3,68,254,18,166,1,238,166,3,199,252,57,4,72,1,65,0,255,255,0,27,0,0,7,76,7,115,2,38,0,58,0,0,1,7,0,67,1,23,1,82,0,8,179,1,27,5,38,0,43,53,255,255,0,23,0,0,6,35,6,33,2,38,0,90,0,0,1,6,0,67,115,0,0,8,179,1,30,17,38,0,43,53,255,255,0,27,0,0,7,76,7,115,2,38,0,58,0,0,1,7,0,118,1,176,1,82,0,8,179,1,35,5,38,0,43,53,255,255,0,23,0,0,6,35,6,33,2,38,0,90,0,0,1,7,0,118,1,27,0,0,0,8,179,1,38,17,38,0,43,53,255,255,0,27,0,0,7,76,7,37,2,38,0,58,0,0,1,7,0,106,1,100,1,82,0,10,180,2,1,47,5,38,0,43,53,53,255,255,0,23,0,0,6,35,5,211,2,38,0,90,0,0,1,7,0,106,0,207,0,0,0,10,180,2,1,50,17,38,0,43,53,53,255,255,0,0,0,0,4,123,7,115,2,38,0,60,0,0,1,7,0,67,255,148,1,82,0,8,179,1,10,5,38,0,43,53,255,255,0,2,254,20,4,6,6,33,2,38,0,92,0,0,1,7,0,67,255,97,0,0,0,8,179,1,23,17,38,0,43,53,0,1,0,82,1,217,3,174,2,113,0,3,0,17,181,0,2,4,5,0,1,0,47,51,17,18,1,57,57,49,48,19,53,33,21,82,3,92,1,217,152,152,0,1,0,82,1,217,7,174,2,113,0,3,0,17,181,0,2,4,5,0,1,0,47,51,17,18,1,57,57,49,48,19,53,33,21,82,7,92,1,217,152,152,255,255,0,82,1,217,7,174,2,113,2,6,2,3,0,0,0,2,255,252,254,49,3,78,255,211,0,3,0,7,0,28,64,11,4,0,9,5,1,1,8,5,6,2,1,0,47,51,47,51,17,1,51,17,51,17,51,50,49,48,1,33,53,33,53,33,53,33,3,78,252,174,3,82,252,174,3,82,254,49,139,140,139,0,0,1,0,25,3,193,1,68,5,182,0,7,0,18,182,1,5,8,9,0,4,3,0,63,205,17,18,1,57,57,49,48,19,39,54,18,55,51,6,7,37,12,22,98,56,123,66,37,3,193,22,90,1,12,121,254,247,0,0,1,0,25,3,193,1,68,5,182,0,7,0,18,182,5,1,8,9,5,7,3,0,63,198,17,18,1,57,57,49,48,1,23,6,2,7,35,18,55,1,53,15,26,98,53,122,70,32,5,182,22,100,254,247,114,1,29,216,0,255,255,0,63,254,248,1,109,0,238,2,6,0,15,0,0,0,1,0,25,3,193,1,70,5,182,0,7,0,18,182,2,6,9,8,3,7,3,0,63,205,17,18,1,57,57,49,48,19,22,23,35,38,2,39,55,223,37,66,123,45,109,24,14,5,182,251,250,94,1,28,101,22,0,0,2,0,25,3,193,2,180,5,182,0,7,0,15,0,26,64,12,4,1,13,9,4,16,17,0,8,3,12,3,0,63,51,205,50,17,18,1,23,57,49,48,1,39,54,19,51,6,2,7,33,39,54,18,55,51,6,7,1,150,15,56,122,123,30,59,13,253,215,12,22,98,56,123,66,37,3,193,22,215,1,8,115,254,223,97,22,90,1,12,121,254,247,0,0,2,0,25,3,193,2,180,5,182,0,7,0,16,0,26,64,12,9,13,1,5,4,17,18,13,5,16,7,3,0,63,51,198,50,17,18,1,23,57,49,48,1,23,6,2,7,35,18,55,33,23,6,2,7,35,54,18,55,1,53,15,26,98,53,122,70,32,2,39,14,24,96,56,125,26,66,13,5,182,22,100,254,247,114,1,29,216,22,91,254,246,122,100,1,52,93,0,255,255,0,25,254,249,2,180,0,238,1,7,2,11,0,0,251,56,0,32,183,1,0,7,64,13,13,72,7,184,255,192,179,12,12,72,7,184,255,192,179,9,9,72,7,0,17,43,43,43,53,53,0,1,0,123,0,0,3,137,6,20,0,11,0,67,64,33,9,2,2,8,3,10,1,1,7,4,0,4,3,5,4,12,13,0,5,5,11,6,6,7,8,0,1,4,4,10,7,3,18,0,63,46,51,51,17,51,63,18,57,47,51,51,17,51,17,18,1,23,57,17,51,51,17,51,17,51,51,17,51,49,48,1,37,19,35,19,5,53,5,3,51,3,37,3,137,254,160,49,196,49,254,180,1,76,49,196,49,1,96,3,231,31,251,250,4,6,31,170,30,1,161,254,95,30,0,1,0,123,0,0,3,154,6,20,0,21,0,117,64,58,12,7,21,16,4,4,15,10,5,20,17,0,3,3,14,11,9,6,19,1,1,6,5,7,4,22,23,1,8,8,2,7,3,6,6,0,9,20,11,11,17,14,19,12,12,18,9,14,13,7,13,7,13,5,15,0,5,18,0,63,63,18,57,57,47,47,18,57,57,50,50,17,51,17,51,51,17,51,17,51,51,17,51,17,51,51,17,51,17,18,1,23,57,17,51,17,51,51,51,51,17,51,51,51,17,51,51,51,17,51,51,17,51,49,48,1,37,21,37,19,35,19,5,53,5,3,19,5,53,5,3,51,3,37,21,37,19,2,57,1,97,254,159,49,198,49,254,166,1,90,43,43,254,166,1,90,49,198,49,1,97,254,159,43,1,231,31,168,29,254,133,1,123,29,168,31,1,43,1,27,31,168,30,1,124,254,132,30,168,31,254,229,0,1,0,164,1,244,2,94,3,227,0,11,0,19,182,6,0,0,12,13,9,3,0,47,205,17,18,1,57,17,51,49,48,19,52,54,51,50,22,21,20,6,35,34,38,164,113,108,105,116,115,106,107,114,2,236,121,126,124,123,119,129,131,0,255,255,0,152,255,227,5,174,0,242,0,38,0,17,0,0,0,39,0,17,2,18,0,0,0,7,0,17,4,37,0,0,0,7,0,100,255,236,9,59,5,203,0,9,0,20,0,24,0,36,0,47,0,59,0,70,0,91,64,48,0,16,5,10,48,66,54,60,25,43,31,37,37,43,60,21,66,10,23,16,8,71,72,28,51,51,40,63,25,3,13,34,57,57,45,68,13,68,13,68,23,24,6,23,24,7,18,7,0,63,51,63,63,18,57,57,47,47,17,51,51,17,51,17,51,63,51,51,17,51,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,17,51,49,48,19,20,22,51,50,17,16,35,34,6,5,20,6,35,34,38,53,16,33,50,22,37,1,35,1,1,20,22,51,50,54,53,52,38,35,34,6,5,20,6,35,34,38,53,16,33,50,22,5,20,22,51,50,54,53,52,38,35,34,6,5,20,6,35,34,38,53,16,33,50,22,236,83,93,180,180,93,83,1,237,161,156,149,163,1,56,152,165,2,105,252,213,148,3,43,2,160,83,93,91,89,89,91,93,83,1,237,162,155,148,163,1,55,150,167,251,56,81,93,91,89,89,91,93,81,1,235,162,155,149,163,1,56,150,167,4,2,170,170,1,84,1,82,168,170,230,231,238,223,1,201,240,219,250,74,5,182,252,2,171,169,167,173,171,165,165,171,230,230,239,221,1,201,236,221,171,169,167,173,171,165,165,171,230,230,238,222,1,201,236,0,255,255,0,133,3,166,1,63,5,182,2,6,0,10,0,0,255,255,0,133,3,166,2,176,5,182,0,6,0,5,0,0,0,1,0,82,0,117,2,31,3,190,0,6,0,26,64,10,4,2,3,6,2,6,8,7,5,1,0,47,47,17,18,1,57,57,17,51,17,51,49,48,19,1,23,1,1,7,1,82,1,86,119,254,223,1,33,119,254,170,2,39,1,151,69,254,162,254,161,71,1,151,0,1,0,80,0,117,2,29,3,190,0,6,0,26,64,10,3,0,4,2,0,2,8,7,5,1,0,47,47,17,18,1,57,57,17,51,17,51,49,48,1,1,39,1,1,55,1,2,29,254,168,117,1,31,254,225,117,1,88,2,12,254,105,71,1,95,1,94,69,254,105,0,255,255,0,152,255,227,3,74,5,182,0,38,0,4,0,0,0,7,0,4,1,193,0,0,0,1,254,121,0,0,2,143,5,182,0,3,0,19,183,0,5,2,4,3,3,2,18,0,63,63,17,1,51,17,51,49,48,1,1,35,1,2,143,252,121,143,3,135,5,182,250,74,5,182,0,1,0,109,3,33,2,195,5,199,0,18,0,38,64,17,0,18,12,8,8,9,18,9,20,19,4,15,31,0,9,10,31,0,63,205,50,63,51,17,18,1,57,57,17,51,17,51,17,51,49,48,1,17,52,38,35,34,6,21,17,35,17,51,23,51,54,51,32,21,17,2,76,78,80,114,91,116,96,14,10,75,145,1,2,3,33,1,164,84,71,105,122,254,164,2,153,88,101,250,254,84,0,1,0,98,0,0,4,35,5,182,0,17,0,75,64,40,14,0,4,4,9,5,11,16,2,5,7,5,18,19,3,7,8,7,78,89,0,8,14,17,76,89,8,14,8,14,5,10,10,13,76,89,10,6,5,24,0,63,63,43,17,18,0,57,57,24,47,47,43,17,0,51,43,17,0,51,17,18,1,23,57,17,51,51,17,51,51,49,48,1,33,21,33,17,35,17,35,53,51,17,33,21,33,17,33,21,33,1,184,1,52,254,204,166,176,176,3,17,253,149,2,68,253,188,1,139,129,254,246,1,10,129,4,43,151,253,233,151,0,1,0,68,0,0,4,72,5,201,0,37,0,112,64,64,13,9,17,17,34,30,26,11,15,21,2,15,26,28,32,23,7,38,39,16,28,29,28,78,89,13,29,12,32,33,32,78,89,9,33,15,33,31,33,63,33,79,33,4,9,3,29,33,29,33,23,0,23,20,76,89,23,24,0,5,75,89,0,7,0,63,43,0,24,63,43,17,18,0,57,57,24,47,47,95,94,93,17,51,43,17,0,51,17,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,51,17,51,51,49,48,1,50,23,7,38,35,34,6,21,21,33,21,33,21,33,21,33,21,20,6,7,33,21,33,53,54,53,53,35,53,51,53,35,53,51,53,52,54,2,176,201,158,60,152,147,122,126,1,164,254,92,1,164,254,92,65,74,3,27,251,252,206,200,200,200,200,224,5,201,80,131,71,135,129,186,129,166,129,33,100,136,44,154,141,48,243,35,129,166,129,207,178,205,0,0,3,0,154,255,236,5,209,5,182,0,22,0,33,0,42,0,96,64,55,34,28,28,29,38,23,16,20,20,13,9,2,18,9,23,11,29,6,43,44,27,34,75,89,16,19,78,89,3,27,11,16,14,14,16,11,27,3,5,29,30,30,42,75,89,30,6,29,24,6,0,77,89,6,25,0,63,43,0,24,63,63,43,17,18,0,23,57,24,47,47,47,47,47,43,43,17,18,1,23,57,17,51,51,17,51,17,51,17,51,17,51,49,48,37,50,54,55,21,6,35,34,38,53,17,35,53,55,55,51,21,51,21,35,17,20,22,1,20,4,33,35,17,35,17,33,32,22,1,51,50,54,53,52,38,35,35,5,78,34,86,11,60,110,109,129,157,157,62,98,221,221,52,254,145,254,235,254,246,64,165,1,6,1,0,254,253,161,52,200,185,172,183,82,117,14,4,125,30,136,138,1,207,80,69,191,211,129,254,71,77,82,3,151,227,234,253,193,5,182,211,253,238,145,162,145,142,0,0,1,0,63,255,236,4,137,5,203,0,38,0,113,64,63,29,23,31,22,22,26,11,2,7,7,26,36,17,4,10,26,23,6,39,40,11,23,24,23,78,89,8,24,5,29,30,29,78,89,2,30,15,30,31,30,47,30,3,9,3,24,30,24,30,19,34,34,0,76,89,34,7,19,14,76,89,19,25,0,63,43,0,24,63,43,17,18,0,57,57,24,47,47,95,94,93,17,51,43,17,0,51,17,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,17,51,17,51,17,51,49,48,1,32,3,33,21,33,7,21,23,33,21,33,22,22,51,50,55,21,6,35,34,0,3,35,53,51,39,53,55,35,53,51,18,0,51,50,23,7,38,3,27,254,193,79,1,254,253,244,2,2,1,207,254,65,37,203,170,156,153,146,171,237,254,223,46,166,152,2,2,152,164,39,1,36,237,201,165,71,166,5,53,254,109,129,57,64,45,129,180,197,66,150,65,1,13,1,1,129,42,44,80,129,1,5,1,36,97,139,86,0,4,0,141,255,248,6,10,5,193,0,3,0,15,0,23,0,43,0,69,64,36,37,27,32,42,16,10,20,4,4,0,10,42,2,27,6,44,45,35,30,6,18,7,24,22,13,39,24,13,24,13,24,2,3,6,2,24,0,63,63,18,57,57,47,47,17,51,17,51,63,51,63,51,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,1,35,1,1,20,6,35,34,38,53,52,54,51,50,22,5,20,51,50,53,52,35,34,37,34,38,53,52,54,51,50,23,7,38,35,34,21,20,51,50,55,21,6,5,31,252,213,148,3,43,1,127,169,148,139,170,167,148,141,170,254,21,178,176,176,178,253,202,166,182,188,171,104,88,33,81,80,224,220,98,90,78,5,182,250,74,5,182,251,152,159,183,185,157,158,184,186,156,238,238,235,219,177,161,168,179,35,103,31,238,235,33,101,37,0,2,0,119,255,236,3,156,5,203,0,28,0,36,0,61,64,31,35,26,26,15,9,29,22,3,22,9,12,4,37,38,35,15,13,25,10,5,12,19,2,12,2,12,6,31,19,0,6,0,47,51,47,51,18,57,57,47,47,17,18,23,57,17,18,1,23,57,17,51,17,51,51,17,51,49,48,37,50,55,51,6,6,35,34,38,53,53,6,7,53,54,55,17,52,54,51,50,22,21,20,2,7,17,20,22,19,52,35,34,6,21,17,36,2,125,174,18,95,8,153,142,150,160,96,96,78,114,150,135,117,135,206,175,82,174,127,67,62,1,0,111,213,166,178,181,169,243,35,22,113,21,38,1,242,138,159,161,138,185,254,208,74,254,229,104,123,4,43,194,86,108,254,75,137,0,0,4,0,201,0,0,7,195,5,182,0,15,0,27,0,39,0,43,0,95,64,49,9,6,6,7,1,13,13,0,28,22,34,16,16,43,40,22,0,7,6,44,45,31,19,37,25,11,40,19,3,25,8,19,25,19,25,40,8,40,41,74,89,40,18,14,8,3,1,7,18,0,63,51,63,51,63,43,17,18,0,57,57,24,47,47,17,18,57,17,18,57,17,51,17,51,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,17,51,49,48,33,35,1,35,18,21,17,35,17,51,1,51,38,53,17,51,1,20,6,35,34,38,53,52,54,51,50,22,5,20,22,51,50,54,53,52,38,35,34,6,3,53,33,21,4,199,187,253,76,8,16,151,194,2,170,8,14,152,2,252,161,147,139,162,161,147,139,162,254,34,81,93,91,79,79,91,92,82,86,2,0,4,203,254,224,108,252,193,5,182,251,58,245,138,3,71,252,183,163,184,187,160,163,181,187,157,114,118,117,115,115,112,112,253,32,135,135,0,2,0,37,2,229,5,133,5,182,0,7,0,24,0,79,64,39,0,1,15,12,12,13,17,20,20,19,19,13,6,1,3,5,25,26,23,22,9,10,10,17,14,14,4,7,3,3,4,16,8,8,20,13,1,4,3,0,63,196,50,50,57,47,51,17,51,17,51,17,51,17,51,51,17,51,51,51,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,49,48,1,35,17,35,53,33,21,35,1,3,35,23,17,35,17,51,19,19,51,17,35,17,55,35,3,1,113,123,209,2,31,211,2,88,201,8,6,119,187,196,203,180,127,6,8,211,2,229,2,103,106,106,253,153,2,47,129,254,82,2,209,253,209,2,47,253,47,1,164,137,253,211,0,255,255,0,80,0,0,5,244,5,205,2,6,1,118,0,0,0,2,0,102,255,221,4,139,4,72,0,23,0,31,0,52,64,26,31,14,14,4,24,12,12,21,4,3,32,33,13,20,47,31,63,31,2,31,31,17,28,8,17,0,0,47,50,47,51,18,57,47,93,57,51,17,18,1,23,57,17,51,17,51,17,51,49,48,5,34,38,2,53,52,54,54,51,50,22,18,21,33,17,22,22,51,50,54,55,23,6,6,19,17,38,38,35,34,7,17,2,121,157,241,133,138,244,149,152,243,135,252,197,49,166,82,131,183,81,72,98,217,147,50,163,88,173,122,35,147,1,5,157,171,255,140,142,254,253,165,254,156,53,70,105,129,41,155,124,2,139,1,21,53,66,117,254,233,255,255,0,71,255,236,5,243,5,182,0,39,2,23,2,92,0,0,0,38,0,123,251,0,1,7,2,64,3,96,253,179,0,11,180,4,3,2,25,25,0,63,53,53,53,0,255,255,0,32,255,236,6,8,5,201,0,39,2,23,2,162,0,0,0,39,2,64,3,117,253,179,1,6,0,117,255,0,0,11,180,1,3,2,14,25,0,63,53,53,53,0,255,255,0,71,255,236,6,4,5,182,0,39,2,23,2,156,0,0,0,38,2,61,12,0,1,7,2,64,3,113,253,179,0,11,180,4,3,2,44,25,0,63,53,53,53,0,255,255,0,106,255,236,6,0,5,182,0,39,2,23,2,70,0,0,0,39,2,64,3,109,253,179,1,6,2,63,49,0,0,11,180,1,3,2,14,25,0,63,53,53,53,0,0,2,0,102,255,236,4,53,5,199,0,26,0,40,0,65,64,34,38,7,31,15,15,0,0,20,7,3,41,42,11,34,71,89,14,4,11,11,24,4,24,17,70,89,24,3,4,27,70,89,4,22,0,63,43,0,24,63,43,17,18,0,57,24,47,18,57,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,16,2,4,35,34,38,53,52,18,54,51,50,22,23,55,16,33,34,6,7,53,54,54,51,50,18,1,50,54,18,55,38,38,35,34,6,6,21,20,22,4,53,167,254,236,173,172,187,136,232,151,97,146,43,4,254,230,62,144,48,47,155,74,210,216,253,162,95,166,120,22,25,128,80,101,165,101,101,3,166,254,250,254,53,233,201,192,169,1,51,161,93,75,90,1,149,44,33,159,23,37,254,236,251,198,144,1,3,150,97,108,132,250,128,118,130,0,2,0,39,0,0,4,109,5,182,0,5,0,12,0,40,64,19,9,5,10,4,5,4,14,13,6,5,1,5,9,73,89,5,18,1,3,0,63,63,43,17,18,0,57,17,18,1,57,57,17,51,17,51,49,48,55,1,51,1,21,33,1,6,7,1,33,1,38,39,1,207,166,1,209,251,186,2,33,61,40,254,252,2,209,254,254,68,104,5,78,250,176,102,4,244,225,121,252,254,2,249,202,0,0,1,0,201,254,16,5,33,5,182,0,7,0,35,64,17,0,7,3,4,7,4,9,8,5,2,73,89,5,3,0,4,27,0,63,51,63,43,17,18,1,57,57,17,51,17,51,49,48,1,17,33,17,35,17,33,17,4,119,252,252,170,4,88,254,16,7,13,248,243,7,166,248,90,0,1,0,76,254,16,4,221,5,182,0,11,0,49,64,26,7,9,9,3,0,8,2,10,6,2,0,4,12,13,4,7,73,89,4,3,0,9,73,89,0,27,0,63,43,0,24,63,43,17,18,1,23,57,17,51,17,51,51,17,51,49,48,19,53,1,1,53,33,21,33,1,1,33,21,76,2,119,253,153,4,64,252,176,2,67,253,164,3,170,254,16,107,3,156,3,51,108,151,252,252,252,141,152,0,1,0,104,2,141,4,41,3,23,0,3,0,21,64,9,2,0,5,4,1,0,80,89,1,0,47,43,17,18,1,57,57,49,48,19,53,33,21,104,3,193,2,141,138,138,0,1,0,37,255,242,4,188,6,152,0,8,0,28,64,11,8,10,3,9,3,6,4,4,1,8,1,0,47,47,18,57,47,57,51,17,1,51,17,51,49,48,5,35,1,35,53,33,19,1,51,2,111,127,254,233,180,1,33,235,2,2,137,14,3,14,135,253,84,5,189,0,0,3,0,119,1,147,5,45,4,12,0,21,0,33,0,45,0,51,64,24,31,12,43,0,0,37,25,12,4,46,47,34,28,28,17,6,9,19,15,40,22,22,3,9,0,47,51,51,17,51,47,51,18,57,57,51,17,51,17,18,1,23,57,17,51,17,51,49,48,1,20,6,35,34,38,39,6,6,35,34,38,53,52,54,51,50,23,54,51,50,22,1,50,54,55,38,38,35,34,6,21,20,22,1,34,6,7,22,22,51,50,54,53,52,38,5,45,167,128,93,153,65,60,153,88,131,168,168,131,181,122,124,185,133,162,252,125,66,109,54,50,109,72,76,100,97,2,161,66,109,55,51,110,71,76,100,101,2,207,131,185,106,116,104,113,173,142,134,179,219,215,175,254,187,91,100,97,93,105,87,83,106,1,121,92,98,97,94,107,84,85,105,0,1,0,12,254,20,2,248,6,20,0,20,0,28,64,12,8,18,2,18,13,3,21,22,16,11,5,0,0,47,50,47,51,17,18,1,23,57,17,51,49,48,1,50,23,21,38,35,34,21,17,20,6,35,34,39,53,22,51,50,53,17,16,2,125,79,44,49,62,176,165,163,74,59,61,58,182,6,20,16,137,22,243,250,225,176,187,19,135,22,243,5,31,1,106,0,0,2,0,98,1,135,4,45,4,31,0,23,0,47,0,112,64,64,40,15,27,3,15,3,49,48,39,30,30,24,80,89,15,30,31,30,47,30,3,9,3,30,42,64,42,36,80,89,27,42,64,15,6,6,0,80,89,15,6,31,6,47,6,3,9,3,6,18,64,18,12,80,89,3,0,18,16,18,32,18,3,18,0,47,93,196,43,0,26,24,16,205,95,94,93,43,0,16,24,196,26,222,196,43,0,26,24,16,205,95,94,93,43,0,16,24,196,17,18,1,57,57,17,51,17,51,49,48,1,34,6,7,53,54,51,50,22,23,22,22,51,50,54,55,21,6,35,34,38,39,38,38,3,34,6,7,53,54,51,50,22,23,22,22,51,50,54,55,21,6,35,34,38,39,38,38,1,80,54,127,57,108,148,67,112,88,77,91,45,53,128,54,101,153,67,111,88,73,91,49,57,128,53,106,150,69,116,82,69,95,49,55,129,51,100,154,69,118,79,84,85,2,0,64,57,150,110,28,37,33,25,66,57,151,109,29,37,30,25,1,150,68,53,149,109,32,34,29,26,66,55,150,110,32,33,34,24,0,0,1,0,104,0,166,4,41,5,2,0,19,0,70,64,38,5,1,16,11,11,9,10,14,4,0,19,1,8,20,21,13,5,6,5,80,89,10,8,15,6,1,9,3,6,14,2,1,2,80,89,18,17,1,0,47,51,196,43,17,0,51,24,47,95,94,93,198,51,43,17,0,51,17,18,1,23,57,17,51,17,51,49,48,1,33,53,33,19,33,53,33,19,23,7,33,21,33,3,33,21,33,3,39,1,125,254,235,1,84,127,254,45,2,19,135,125,109,1,23,254,170,129,1,215,253,233,131,125,1,193,137,1,16,137,1,31,57,230,137,254,240,137,254,229,55,255,255,0,104,0,1,4,41,4,217,2,38,0,31,0,0,1,7,2,43,0,0,253,116,0,9,179,1,0,7,18,0,63,53,53,0,255,255,0,104,0,1,4,41,4,217,2,38,0,33,0,0,1,7,2,43,0,0,253,116,0,9,179,1,0,7,18,0,63,53,53,0,0,2,0,111,0,0,4,61,5,195,0,5,0,9,0,32,64,13,8,0,6,3,0,3,10,11,9,7,2,5,2,0,47,47,18,57,57,17,18,1,57,57,17,51,17,51,49,48,19,1,51,1,1,35,9,3,111,1,194,72,1,196,254,60,72,1,98,254,195,254,195,1,61,2,223,2,228,253,28,253,33,2,225,2,19,253,237,253,236,0,255,255,0,29,0,0,4,28,6,31,0,38,0,73,0,0,0,7,0,76,2,182,0,0,255,255,0,29,0,0,4,12,6,31,0,38,0,73,0,0,0,7,0,79,2,182,0,0,0,1,0,219,4,217,3,190,6,12,0,13,0,24,64,9,11,3,15,14,10,4,128,7,0,0,47,50,26,204,50,17,18,1,57,57,49,48,1,34,38,39,51,22,22,51,50,54,55,51,6,6,2,72,185,170,10,156,9,91,113,103,99,11,157,12,178,4,217,143,164,104,82,88,98,158,149,0,0,1,255,145,254,20,1,86,4,72,0,12,0,29,64,13,11,8,8,14,13,9,15,0,5,70,89,0,27,0,63,43,0,24,63,17,18,1,57,17,51,49,48,19,34,39,53,22,51,50,54,53,17,51,17,16,43,95,59,69,67,78,73,166,254,20,25,135,20,85,87,4,252,251,16,254,188,0,0,1,1,137,4,205,2,117,6,20,0,9,0,19,182,9,4,10,11,4,128,9,0,47,26,205,17,18,1,57,57,49,48,1,54,54,55,51,21,6,6,7,35,1,137,19,39,10,168,11,88,47,90,4,229,55,167,81,18,51,188,70,0,1,1,113,254,59,2,111,255,131,0,9,0,19,182,9,4,10,11,9,128,4,0,47,26,205,17,18,1,57,57,49,48,1,54,54,55,51,21,6,6,7,35,1,113,28,51,7,168,11,98,55,90,254,84,64,186,53,18,51,193,66,0,1,1,129,4,217,2,127,6,33,0,9,0,19,182,9,4,10,11,9,128,4,0,47,26,205,17,18,1,57,57,49,48,1,6,6,7,35,53,54,54,55,51,2,127,29,53,6,166,14,99,49,92,6,8,61,193,49,19,61,191,57,0,2,0,39,2,57,2,158,5,199,0,11,0,21,0,32,64,14,6,12,0,17,12,17,23,22,9,19,31,3,14,33,0,63,51,63,51,17,18,1,57,57,17,51,17,51,49,48,19,20,22,51,50,54,53,52,38,35,34,6,5,16,33,34,38,53,16,33,50,22,176,82,94,94,86,86,94,94,82,1,238,254,196,158,157,1,59,158,158,4,0,168,166,165,171,170,164,165,169,254,55,236,221,1,197,232,0,2,0,20,2,74,2,180,5,188,0,10,0,20,0,60,64,31,20,5,11,7,3,3,9,2,0,2,5,3,21,22,1,5,5,9,15,20,31,20,2,20,20,3,14,7,31,3,32,0,63,63,51,18,57,47,93,51,51,17,51,17,18,1,23,57,17,51,51,17,51,51,17,51,49,48,1,35,21,35,53,33,53,1,51,17,51,33,53,52,55,14,3,7,7,2,180,125,145,254,110,1,152,139,125,254,242,6,5,24,30,30,11,168,3,20,202,202,101,2,67,253,205,195,134,75,12,39,45,45,17,246,0,1,0,59,2,55,2,137,5,170,0,29,0,43,64,21,16,3,28,23,9,23,26,3,4,31,30,19,0,0,6,27,24,30,13,6,33,0,63,51,63,51,18,57,47,51,17,18,1,23,57,17,51,17,51,49,48,1,50,22,21,20,6,35,34,38,39,53,22,22,51,50,54,53,52,38,35,34,6,7,39,19,33,21,33,7,54,1,72,145,176,170,166,74,139,41,56,140,54,95,110,109,102,57,76,31,59,33,1,239,254,131,20,62,4,104,143,123,140,155,31,23,131,34,38,83,89,78,88,17,8,41,1,160,104,230,12,0,0,2,0,41,2,57,2,162,5,199,0,23,0,35,0,54,64,28,27,18,33,11,0,0,6,18,3,37,36,30,11,21,0,15,16,15,2,15,15,3,24,21,33,8,3,31,0,63,51,63,51,18,57,47,93,18,57,51,17,18,1,23,57,17,51,51,17,51,49,48,19,16,54,51,50,23,21,38,35,34,6,7,51,54,54,51,50,22,21,20,6,35,34,38,5,50,54,53,52,38,35,34,6,21,20,22,41,219,219,74,49,52,83,141,150,10,8,29,113,85,125,148,166,141,153,173,1,68,81,99,88,86,85,112,106,3,195,1,5,255,15,114,18,153,166,43,59,148,126,144,164,210,99,93,99,79,91,90,59,89,124,0,0,1,0,57,2,74,2,143,5,182,0,6,0,28,64,13,1,5,5,0,2,3,7,8,2,3,30,0,32,0,63,63,51,17,18,1,23,57,17,51,49,48,19,1,33,53,33,21,1,162,1,94,254,57,2,86,254,160,2,74,2,248,116,94,252,242,0,3,0,51,2,57,2,147,5,199,0,21,0,34,0,45,0,63,64,34,22,13,38,19,43,3,28,7,7,3,5,16,19,13,6,46,47,5,16,32,32,11,41,27,41,2,41,41,25,10,33,35,0,31,0,63,50,63,51,57,47,93,51,18,57,57,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,50,22,21,20,7,22,21,20,6,35,34,38,53,52,54,55,38,38,53,52,54,3,20,22,51,50,54,53,52,38,39,39,6,6,19,34,6,21,20,22,23,54,53,52,38,1,100,124,151,148,176,165,138,146,159,73,85,74,57,157,53,84,86,90,84,93,81,28,72,70,172,68,75,68,81,140,78,5,199,118,104,130,76,74,158,113,137,128,116,69,116,46,46,93,68,102,126,253,102,60,73,73,60,63,79,28,10,34,84,1,239,60,57,47,71,33,54,97,57,60,0,2,0,35,2,57,2,156,5,201,0,22,0,34,0,60,64,31,26,17,32,10,0,0,5,17,3,35,36,29,14,10,11,11,20,15,14,31,14,2,14,14,3,23,20,31,8,3,33,0,63,51,63,51,18,57,47,93,18,57,17,51,17,51,17,18,1,23,57,17,51,51,17,51,49,48,1,16,6,35,34,39,53,22,51,32,19,35,6,6,35,34,38,53,52,54,51,50,22,37,34,6,21,20,22,51,50,54,53,52,38,2,156,218,212,83,49,49,93,1,20,21,10,35,116,65,131,153,169,136,152,176,254,184,81,95,85,87,84,115,103,4,70,254,242,255,15,116,20,1,70,51,52,146,131,136,165,202,91,95,87,81,95,85,62,97,114,0,0,22,0,84,254,129,7,193,5,238,0,5,0,11,0,17,0,23,0,27,0,31,0,35,0,39,0,43,0,47,0,51,0,55,0,59,0,63,0,67,0,71,0,83,0,91,0,107,0,116,0,124,0,137,0,248,64,135,65,64,61,60,49,48,15,5,0,12,84,78,88,72,118,107,112,96,122,103,133,134,69,68,41,40,37,36,20,10,9,23,23,134,6,18,59,27,127,103,96,56,24,55,47,107,52,44,72,35,31,32,28,3,17,78,12,25,138,139,10,0,42,66,90,81,134,92,116,92,41,65,70,62,100,117,117,108,69,61,130,125,86,75,107,118,107,38,50,37,49,21,13,0,66,1,65,62,92,61,108,13,49,50,3,107,12,92,108,107,107,108,92,3,1,45,44,29,28,25,24,19,18,15,12,57,56,53,52,33,32,7,6,4,1,0,47,51,51,51,51,51,51,51,51,51,47,51,51,51,51,51,51,51,51,51,18,23,57,47,47,47,17,18,23,57,17,57,18,57,57,17,57,57,17,51,17,51,17,51,17,51,16,196,50,196,50,17,51,17,51,18,57,17,51,17,51,17,51,16,196,196,50,17,51,17,51,17,18,1,23,57,17,51,51,51,51,51,51,51,51,51,17,51,17,51,17,51,17,51,17,51,17,51,17,51,51,51,51,51,51,51,51,51,49,48,19,17,33,21,35,21,37,53,33,17,35,53,1,17,51,21,51,21,33,53,51,53,51,17,33,53,33,21,33,53,33,21,1,53,33,21,1,35,17,51,17,35,17,51,1,53,33,21,1,35,17,51,1,53,33,21,51,53,33,21,1,35,17,51,53,35,17,51,1,35,17,51,5,20,6,35,34,38,53,52,54,51,50,22,5,20,51,50,53,52,35,34,37,51,50,22,21,20,6,7,21,22,22,21,20,6,35,35,19,51,50,54,53,52,38,35,35,21,21,51,50,54,53,52,35,1,34,39,53,22,51,50,53,17,51,17,20,6,84,1,47,192,5,206,1,48,109,249,0,111,192,5,14,195,109,253,73,1,17,251,225,1,14,254,242,1,14,4,183,109,109,109,109,251,194,1,16,252,48,111,111,2,192,1,16,119,1,17,250,168,111,111,111,111,6,254,109,109,251,159,135,127,127,135,135,127,126,136,254,115,135,135,135,135,1,225,172,109,112,46,44,61,46,109,94,207,123,66,46,36,42,47,59,74,49,37,90,1,94,52,28,43,25,86,125,105,4,190,1,48,111,193,193,111,254,208,193,249,2,1,47,194,109,109,194,254,209,109,109,109,109,6,254,111,111,250,168,1,14,2,2,1,15,250,59,109,109,1,166,1,14,4,74,111,111,111,111,252,47,1,16,121,1,15,253,104,1,16,73,145,156,156,145,146,155,154,147,197,197,196,97,67,83,49,66,8,8,14,68,53,81,89,1,98,34,32,34,29,227,154,43,37,74,254,250,10,102,8,86,1,146,254,114,95,99,0,0,3,0,84,254,193,7,170,6,20,0,3,0,30,0,42,0,46,64,25,1,11,23,37,4,30,31,17,3,9,43,44,40,30,20,14,34,30,14,14,30,34,3,2,0,0,47,47,23,57,47,47,47,17,51,17,51,17,18,1,23,57,49,48,9,3,5,53,52,54,55,54,54,53,52,38,35,34,6,7,23,54,51,50,22,21,20,6,7,6,6,21,21,3,20,22,51,50,54,53,52,38,35,34,6,3,254,3,172,252,84,252,86,3,235,44,65,103,73,187,165,79,186,71,82,160,90,63,62,49,72,84,59,27,71,70,66,73,72,67,72,69,6,20,252,86,252,87,3,169,251,47,50,65,49,82,126,88,135,154,56,42,178,80,58,47,53,75,54,68,112,74,59,254,237,63,72,73,62,64,73,72,255,255,255,145,254,20,2,87,6,33,2,38,2,55,0,0,1,7,1,76,254,169,0,0,0,8,179,1,24,17,38,0,43,53,255,255,0,25,3,193,1,68,5,182,2,6,2,7,0,0,0,2,0,10,255,236,4,223,6,43,0,45,0,54,0,102,64,57,27,7,23,11,52,37,46,31,31,43,2,45,2,37,11,7,18,6,55,56,20,14,71,89,0,33,46,33,71,89,43,46,15,46,31,46,2,9,3,20,46,20,46,5,40,40,49,70,89,40,1,5,29,70,89,5,22,0,63,43,0,24,63,43,17,18,0,57,57,24,47,47,95,94,93,17,51,43,17,0,51,43,17,18,1,23,57,17,51,51,17,51,17,51,17,51,17,51,49,48,1,22,21,16,0,33,32,17,52,55,54,53,52,38,35,34,6,7,39,54,51,50,22,21,20,7,6,21,20,51,32,17,52,39,38,36,38,53,52,54,51,50,0,19,51,21,37,38,2,35,34,6,21,20,4,4,86,4,254,224,254,253,254,119,16,15,36,32,25,54,15,33,83,95,88,93,15,16,233,1,119,4,223,254,201,160,182,168,208,1,0,42,143,254,199,28,183,123,93,97,1,19,3,78,46,65,254,159,254,110,1,88,57,123,122,23,47,35,15,9,118,39,93,93,35,131,132,58,207,2,112,63,44,2,105,188,131,144,163,254,205,254,215,129,129,211,1,0,95,75,141,154,0,1,0,0,0,0,4,123,5,195,0,21,0,40,64,20,17,18,7,18,20,3,22,23,0,18,20,3,18,18,5,10,74,89,5,4,0,63,43,0,24,63,63,18,57,17,18,1,23,57,17,51,49,48,1,18,18,54,54,51,50,23,21,38,35,34,14,3,7,17,35,17,1,51,2,57,122,141,77,92,58,48,40,26,31,40,59,86,124,101,31,172,254,35,186,2,205,1,35,1,55,108,48,15,135,6,56,161,252,236,85,253,227,2,47,3,135,0,0,2,0,18,255,236,6,119,4,72,0,20,0,41,0,76,64,39,24,3,18,33,33,30,39,13,10,13,30,3,6,5,42,43,19,31,31,0,8,21,11,6,8,6,70,89,8,15,36,27,0,27,70,89,16,0,22,0,63,50,43,17,0,51,24,63,43,17,0,51,51,17,18,57,24,47,57,17,18,1,23,57,17,51,17,51,18,57,17,51,49,48,5,34,38,53,52,19,33,53,55,33,21,35,22,21,20,6,35,34,39,35,6,1,6,2,21,20,22,51,50,54,53,53,51,21,20,22,51,50,54,53,52,39,2,41,186,199,135,254,227,142,5,215,250,117,200,185,221,68,8,68,254,207,63,66,108,117,93,108,162,107,93,117,109,111,20,231,240,240,1,7,74,68,142,252,251,240,231,182,182,3,206,132,254,254,103,174,168,143,125,188,188,122,146,169,173,254,239,0,255,255,0,201,0,0,6,113,7,117,2,38,0,48,0,0,1,7,0,118,1,156,1,84,0,8,179,1,29,5,38,0,43,53,255,255,0,176,0,0,6,203,6,33,2,38,0,80,0,0,1,7,0,118,1,205,0,0,0,8,179,1,45,17,38,0,43,53,255,255,0,0,253,213,5,16,5,188,2,38,0,36,0,0,0,7,2,91,1,53,0,0,255,255,0,94,253,213,3,205,4,90,2,38,0,68,0,0,0,7,2,91,0,199,0,0,255,255,254,223,255,236,5,210,5,205,0,38,0,50,20,0,1,7,2,92,254,71,0,0,0,9,179,3,2,26,3,0,63,53,53,0,0,2,0,117,253,213,2,53,255,131,0,11,0,23,0,30,64,12,18,6,12,0,6,0,24,25,21,3,15,9,0,47,51,204,50,17,18,1,57,57,17,51,17,51,49,48,1,20,6,35,34,38,53,52,54,51,50,22,7,52,38,35,34,6,21,20,22,51,50,54,2,53,125,102,101,120,120,101,101,126,110,66,51,51,66,60,57,53,64,254,174,97,120,117,98,98,117,118,97,57,60,60,57,56,61,61,0,2,0,152,4,104,2,207,5,197,0,8,0,23,0,30,64,14,14,9,3,8,12,19,9,5,24,25,2,11,8,21,0,47,196,220,198,17,18,1,23,57,17,51,49,48,1,54,55,51,21,6,6,7,35,37,52,55,21,6,21,20,30,2,21,20,35,34,38,1,176,70,28,189,41,119,49,78,254,232,237,121,31,37,31,93,55,67,4,135,181,122,20,78,172,57,118,163,61,72,41,53,20,19,16,26,28,74,68,0,255,255,0,29,0,0,6,211,6,31,0,39,0,73,2,176,0,0,0,38,0,73,0,0,0,7,0,76,5,109,0,0,255,255,0,29,0,0,6,195,6,31,0,39,0,73,2,176,0,0,0,38,0,73,0,0,0,7,0,79,5,109,0,0,0,2,0,125,255,236,6,100,6,20,0,21,0,33,0,60,64,31,22,6,15,17,17,28,0,0,20,11,6,4,34,35,20,11,3,9,9,31,73,89,15,9,4,3,25,73,89,3,19,0,63,43,0,24,63,198,43,17,18,0,57,57,17,18,1,23,57,17,51,51,17,51,17,51,49,48,1,16,0,33,32,0,17,16,0,33,32,23,62,2,53,51,23,6,6,7,22,1,16,18,51,50,18,17,16,2,35,34,2,5,188,254,157,254,198,254,189,254,161,1,97,1,67,1,69,179,50,58,27,182,14,29,131,104,96,251,117,250,244,243,246,245,242,243,253,2,221,254,158,254,113,1,137,1,106,1,104,1,134,215,12,67,102,105,22,155,173,39,176,254,254,254,214,254,206,1,49,1,43,1,39,1,49,254,209,0,0,2,0,115,255,236,5,25,4,240,0,22,0,34,0,60,64,31,23,7,16,18,18,29,0,0,21,12,7,4,35,36,21,12,3,10,10,32,70,89,16,10,16,3,26,70,89,3,22,0,63,43,0,24,63,198,43,17,18,0,57,57,17,18,1,23,57,17,51,51,17,51,17,51,49,48,1,16,0,35,34,38,2,53,16,0,51,50,23,62,2,53,51,23,6,6,7,22,5,20,22,51,50,54,53,52,38,35,34,6,4,98,254,242,238,147,228,124,1,12,238,217,137,51,58,26,180,15,31,121,102,71,252,189,158,173,175,157,159,175,173,156,2,37,254,244,254,211,138,1,2,173,1,12,1,43,141,15,65,99,110,23,156,175,38,138,185,211,219,219,211,210,216,216,0,1,0,186,255,236,6,123,6,20,0,27,0,51,64,24,5,7,7,1,11,20,17,11,17,29,28,10,1,14,27,5,18,3,14,23,73,89,14,19,0,63,43,0,24,63,198,51,18,57,57,17,18,1,57,57,17,51,17,51,51,17,51,49,48,1,21,62,2,53,51,23,6,6,7,17,16,0,33,32,0,53,17,51,17,20,22,51,50,54,53,17,5,25,58,70,31,181,14,33,172,149,254,225,254,248,254,244,254,212,170,204,198,184,193,5,182,198,8,62,112,110,22,182,184,25,253,141,254,254,254,234,1,31,253,3,174,252,70,183,196,193,188,3,184,0,0,1,0,164,255,236,5,150,4,242,0,29,0,68,64,34,1,28,13,15,15,19,20,7,7,10,19,28,19,30,31,21,22,10,18,22,3,20,13,8,29,15,25,4,70,89,25,22,20,21,0,63,63,43,0,24,63,51,198,18,23,57,17,51,17,18,1,57,57,17,51,51,17,51,17,51,17,51,17,51,49,48,1,17,20,22,51,50,54,53,17,51,21,54,54,53,51,23,6,6,7,17,35,39,35,6,6,35,34,38,53,17,1,76,122,130,172,159,166,82,74,178,15,32,176,141,137,24,9,52,181,111,203,200,4,70,253,59,134,132,188,213,2,62,121,11,128,154,23,186,191,14,252,172,147,82,85,190,209,2,203,0,255,255,252,83,4,217,253,220,6,33,0,7,0,67,250,202,0,0,255,255,253,13,4,217,254,150,6,33,0,7,0,118,251,132,0,0,255,255,252,25,4,217,255,1,5,221,0,7,1,82,251,17,0,0,0,1,253,8,4,184,254,115,6,143,0,17,0,30,64,12,2,5,5,13,13,8,0,0,19,11,16,4,0,47,204,50,17,1,51,17,51,51,18,57,17,51,49,48,1,20,7,7,35,39,54,54,53,52,38,35,34,7,53,54,51,32,254,115,166,10,105,12,86,78,67,73,62,32,38,69,1,0,5,215,140,34,113,176,14,50,43,43,41,6,100,10,0,1,253,59,254,160,254,2,255,125,0,11,0,17,181,6,0,0,13,9,3,0,47,205,17,1,51,17,51,49,48,5,52,54,51,50,22,21,20,6,35,34,38,253,59,59,42,40,58,58,40,42,59,242,57,54,54,57,55,55,55,0,255,255,0,201,0,0,3,248,7,115,2,38,0,40,0,0,1,7,0,67,255,216,1,82,0,8,179,1,13,5,38,0,43,53,255,255,0,203,0,0,5,82,7,115,2,38,1,178,0,0,1,7,0,67,0,104,1,82,0,8,179,1,17,5,38,0,43,53,255,255,0,115,255,236,4,18,6,33,2,38,0,72,0,0,1,6,0,67,183,0,0,8,179,2,28,17,38,0,43,53,255,255,0,176,0,0,4,98,6,33,2,38,1,210,0,0,1,6,0,67,220,0,0,8,179,1,15,17,38,0,43,53,0,1,0,133,255,236,7,145,5,201,0,49,0,69,64,36,34,22,42,39,47,9,9,4,39,27,22,5,50,51,0,31,25,31,73,89,16,40,40,19,6,25,4,44,37,19,37,73,89,12,19,19,0,63,51,43,17,0,51,24,63,51,18,57,47,57,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,49,48,1,34,6,7,39,54,51,50,0,17,16,0,35,34,38,39,35,6,6,35,32,0,17,16,18,51,50,23,7,38,38,35,34,2,17,16,18,51,50,55,17,51,17,22,51,50,18,17,16,2,5,164,60,94,45,69,126,150,228,1,1,254,229,255,108,172,83,8,80,169,107,255,0,254,229,255,228,153,124,70,45,93,60,147,165,207,187,139,102,170,102,142,187,206,165,5,47,41,31,146,80,254,136,254,173,254,141,254,97,45,51,50,46,1,155,1,119,1,83,1,120,80,146,31,41,254,215,254,246,254,211,254,178,76,1,201,254,55,76,1,75,1,48,1,11,1,40,0,1,0,0,0,0,6,29,4,72,0,29,0,40,64,22,23,0,13,14,5,5,30,31,27,21,13,0,18,10,4,4,22,14,5,15,4,21,0,63,63,51,51,18,23,57,63,17,18,1,23,57,49,48,1,6,6,3,35,1,51,19,22,23,51,54,54,19,3,51,0,22,23,51,54,18,17,51,16,2,7,35,3,38,3,39,10,20,179,213,254,127,172,246,32,46,8,19,74,142,172,178,1,9,45,10,8,173,153,166,195,219,182,125,33,1,201,26,51,254,132,4,72,253,73,93,189,53,163,1,36,1,213,252,255,144,44,184,1,179,1,82,254,150,254,7,229,1,90,92,0,2,0,23,0,0,4,252,6,20,0,17,0,26,0,76,64,40,8,4,18,18,1,15,22,11,11,6,15,0,4,27,28,7,17,0,17,73,89,4,0,8,26,73,89,0,8,0,8,15,2,0,15,18,74,89,15,18,0,63,43,0,24,63,18,57,57,47,47,43,17,0,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,17,51,51,49,48,19,33,17,51,17,33,21,33,17,51,32,17,20,4,33,33,17,33,1,51,50,54,53,52,38,35,35,23,1,63,172,1,162,254,94,201,2,49,254,247,254,251,254,104,254,193,1,235,213,192,181,186,218,182,4,250,1,26,254,230,148,254,224,254,100,208,218,4,102,252,43,137,144,138,122,0,0,2,0,23,0,0,4,156,5,39,0,17,0,25,0,71,64,38,4,0,19,19,15,11,22,7,7,2,11,13,4,26,27,3,13,14,13,70,89,4,18,70,89,4,4,11,16,0,14,15,11,19,70,89,11,21,0,63,43,0,24,63,51,198,18,57,47,43,43,17,0,51,17,18,1,23,57,17,51,17,51,51,17,51,51,49,48,1,33,21,33,17,33,32,17,20,6,35,33,17,35,53,51,53,51,17,17,33,32,53,52,38,35,1,168,1,88,254,168,1,63,1,181,223,220,254,33,235,235,166,1,49,1,31,135,156,4,72,140,254,197,254,205,166,168,3,188,140,223,252,205,254,151,185,92,84,0,1,0,201,255,236,7,33,5,203,0,32,0,74,64,41,23,19,19,20,6,24,29,12,5,24,17,20,6,33,34,27,0,73,89,27,4,6,18,23,18,73,89,3,23,23,20,21,3,20,18,14,9,73,89,14,19,0,63,43,0,24,63,63,18,57,47,51,43,17,0,51,24,63,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,34,4,7,33,21,33,18,0,51,50,55,21,6,35,32,0,3,33,17,35,17,51,17,33,18,0,37,50,23,7,38,38,5,143,227,254,252,31,2,191,253,61,8,1,9,247,154,194,152,222,254,193,254,165,8,254,162,170,170,1,100,30,1,113,1,48,213,182,72,100,157,5,51,250,241,150,254,239,254,226,55,149,57,1,112,1,84,253,80,5,182,253,146,1,51,1,78,2,92,146,48,38,0,0,1,0,176,255,236,5,156,4,92,0,33,0,89,64,50,22,25,25,10,3,9,5,5,6,16,32,24,3,6,5,34,35,13,19,70,89,13,16,25,4,9,4,70,89,22,15,9,31,9,2,11,3,9,9,6,7,15,6,21,0,28,70,89,0,22,0,63,43,0,24,63,63,18,57,47,95,94,93,51,43,17,0,51,24,63,43,17,18,1,23,57,17,51,17,51,17,51,51,17,51,49,48,5,34,0,39,33,17,35,17,51,17,33,54,36,51,50,22,23,7,38,35,34,6,7,33,21,33,22,22,51,50,54,55,21,6,4,119,235,254,244,11,254,225,166,166,1,33,24,1,13,223,81,154,54,50,138,101,163,167,16,2,24,253,230,9,169,164,61,119,98,110,20,1,10,248,254,18,4,72,254,51,235,246,32,25,141,51,164,170,141,188,181,22,37,147,57,0,2,0,0,0,0,5,109,5,182,0,11,0,18,0,52,64,27,2,3,7,12,3,13,10,5,20,19,1,5,12,5,73,89,16,8,12,12,7,8,3,11,3,7,18,0,63,51,51,63,18,57,47,18,57,43,17,0,51,17,18,1,23,57,17,51,49,48,1,35,17,35,17,35,1,35,1,51,1,35,1,33,39,38,39,6,7,3,152,148,156,149,254,223,178,2,104,158,2,103,183,253,92,1,76,82,56,30,24,64,2,170,253,86,2,170,253,86,5,182,250,74,3,63,207,144,100,98,164,0,0,2,0,10,0,0,4,121,4,72,0,11,0,18,0,53,64,28,5,6,10,12,6,13,3,1,6,20,19,4,8,12,8,70,89,17,11,12,12,10,11,15,6,2,10,21,0,63,51,51,63,18,57,47,18,57,43,17,0,51,17,18,1,23,57,17,51,49,48,1,1,35,3,35,17,35,17,35,3,35,1,3,33,38,38,39,35,6,2,168,1,209,172,207,113,151,115,205,172,1,209,33,1,15,43,56,34,9,28,4,72,251,184,1,233,254,23,1,233,254,23,4,72,254,45,108,138,106,92,0,0,2,0,201,0,0,7,94,5,182,0,19,0,26,0,70,64,37,14,10,10,11,2,3,18,21,3,20,8,7,11,7,27,28,5,1,9,14,9,73,89,20,24,12,14,14,11,16,12,3,19,7,3,11,18,0,63,51,51,51,63,51,18,57,47,18,57,51,43,17,0,51,51,17,18,1,23,57,17,51,17,51,17,51,49,48,1,35,17,35,17,35,1,35,1,33,17,35,17,51,17,33,1,51,1,35,1,33,2,38,39,6,6,5,133,143,154,147,254,227,186,1,34,254,95,170,170,1,225,1,6,158,2,102,188,253,102,1,62,118,28,12,19,35,2,176,253,80,2,176,253,80,2,176,253,80,5,182,253,146,2,110,250,74,3,72,1,53,86,47,67,104,0,2,0,176,0,0,6,20,4,72,0,19,0,25,0,77,64,43,17,13,13,14,5,6,1,25,6,24,11,10,14,7,26,27,8,4,12,17,12,70,89,24,21,19,47,17,63,17,2,17,17,14,19,15,15,15,10,6,2,14,21,0,63,51,51,51,63,63,18,57,47,93,18,57,51,43,17,0,51,51,17,18,1,23,57,17,51,17,51,17,51,49,48,1,1,35,3,35,17,35,17,35,3,35,19,33,17,35,17,51,17,33,19,23,35,6,6,7,33,4,70,1,206,170,208,113,152,110,209,172,209,254,223,166,166,1,94,197,104,8,10,32,89,1,12,4,72,251,184,1,238,254,18,1,238,254,18,1,238,254,18,4,72,254,51,1,205,115,34,95,217,0,0,2,0,20,0,0,5,174,5,182,0,31,0,34,0,75,64,40,32,1,15,16,33,30,30,29,16,2,1,7,6,36,35,30,1,33,31,31,33,73,89,14,18,29,18,74,89,34,2,29,29,24,31,3,16,8,24,18,0,63,51,51,63,18,57,47,51,51,43,17,0,51,43,17,18,0,57,57,17,18,1,23,57,17,51,17,51,17,51,49,48,1,21,1,30,2,23,19,35,3,46,2,35,35,17,35,17,35,34,6,6,7,3,35,19,62,2,55,1,53,5,33,1,5,41,254,90,118,154,100,50,133,174,137,35,68,101,89,27,170,26,91,99,65,32,135,185,136,47,99,149,118,254,101,3,190,253,10,1,123,5,182,133,254,17,6,72,139,164,254,59,1,201,111,96,38,253,66,2,190,39,95,111,254,55,1,197,159,142,73,7,1,239,133,153,254,57,0,0,2,0,12,0,0,5,20,4,72,0,32,0,35,0,78,64,42,33,1,15,16,34,31,24,31,30,16,2,1,7,7,37,36,31,1,34,32,32,34,70,89,17,14,18,30,18,71,89,35,2,30,30,24,32,15,16,8,24,21,0,63,51,51,63,18,57,47,51,51,43,17,0,51,51,43,17,18,0,57,57,17,18,1,23,57,17,51,17,51,17,51,49,48,1,21,1,30,3,19,35,3,46,2,35,35,17,35,17,35,34,6,6,7,3,35,19,62,3,55,1,53,5,33,1,4,139,254,174,87,111,73,49,155,172,133,34,58,84,76,10,153,11,75,82,56,39,135,170,131,24,48,73,110,87,254,177,3,32,253,180,1,37,4,72,105,254,160,7,48,80,105,254,113,1,80,87,71,28,253,246,2,10,26,64,94,254,174,1,80,61,105,79,50,8,1,96,105,140,254,193,0,0,2,0,201,0,0,7,197,5,182,0,36,0,39,0,97,64,53,33,29,29,30,38,35,15,16,2,39,37,1,7,1,39,16,34,27,35,24,30,9,41,40,35,1,36,38,36,38,73,89,18,14,28,33,28,73,89,39,2,33,33,30,36,3,31,3,24,16,8,30,18,0,63,51,51,51,63,63,18,57,47,51,51,43,17,0,51,51,43,17,18,0,57,57,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,17,51,49,48,1,21,1,30,2,23,19,35,3,46,2,35,35,17,35,17,35,34,6,6,7,3,35,19,54,55,33,17,35,17,51,17,33,1,53,5,33,1,7,61,254,93,120,153,101,45,136,168,138,31,70,105,95,24,172,25,94,100,66,33,135,178,135,55,56,254,82,170,170,2,215,254,104,3,193,253,10,1,123,5,182,133,254,14,6,72,144,156,254,59,1,201,104,99,40,253,68,2,188,40,95,108,254,55,1,190,184,58,253,80,5,182,253,146,1,233,133,153,254,55,0,0,2,0,176,0,0,6,186,4,72,0,36,0,39,0,103,64,58,33,29,29,30,38,35,15,16,2,39,37,1,7,1,39,16,34,27,35,24,30,9,41,40,35,1,36,38,36,38,70,89,18,14,28,33,28,70,89,39,2,47,33,63,33,2,33,33,30,36,15,31,15,24,16,8,30,21,0,63,51,51,51,63,63,18,57,47,93,51,51,43,17,0,51,51,43,17,18,0,57,57,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,17,51,49,48,1,21,1,30,3,19,35,3,46,2,35,35,17,35,17,35,34,6,6,7,3,35,19,54,55,33,17,35,17,51,17,33,1,53,5,33,1,6,49,254,174,88,111,73,48,155,172,133,34,58,86,74,10,154,10,75,84,55,38,135,170,131,47,37,254,205,166,166,2,53,254,176,3,33,253,180,1,37,4,72,105,254,158,7,49,78,105,254,114,1,80,86,70,28,253,248,2,8,27,63,92,254,174,1,80,120,40,254,16,4,72,254,53,1,98,105,140,254,199,0,1,0,63,254,78,4,53,6,209,0,75,0,132,64,77,0,19,33,63,25,70,70,10,63,55,67,60,42,28,45,40,19,11,76,77,73,22,74,89,73,19,57,52,49,15,46,31,46,47,46,3,9,3,46,42,64,67,29,28,29,28,74,89,29,29,16,60,42,42,36,74,89,42,4,10,9,73,89,10,16,16,3,73,89,16,35,12,7,73,89,12,34,0,63,43,0,24,63,43,0,24,16,198,43,0,24,63,43,17,0,51,18,57,24,47,43,17,18,0,57,26,24,16,221,95,94,93,57,196,50,63,43,17,18,1,23,57,17,51,17,51,17,51,49,48,23,20,22,51,50,55,54,51,50,23,21,38,35,34,7,6,35,34,38,53,52,54,55,54,54,53,16,33,35,53,51,50,54,53,52,38,35,34,6,7,39,54,55,38,39,39,53,51,22,23,54,54,51,50,23,21,38,35,34,6,7,22,22,21,20,6,7,21,22,22,21,20,4,5,6,6,240,87,89,97,120,120,70,155,71,80,160,68,105,105,105,179,184,217,232,204,181,254,64,218,209,205,225,162,137,106,187,110,86,168,190,57,117,49,123,92,131,92,131,64,50,48,24,43,44,111,48,178,193,191,170,186,203,254,229,254,230,138,134,137,55,50,7,6,39,166,51,5,5,125,133,126,129,9,8,138,141,1,12,143,147,132,107,128,55,69,114,114,28,66,121,52,27,59,136,115,86,14,113,10,82,71,23,189,143,140,184,26,8,24,178,144,208,213,9,5,55,0,0,1,0,25,254,123,3,127,5,78,0,70,0,131,64,78,23,41,54,11,46,16,16,32,11,3,14,8,62,50,64,60,41,11,71,72,68,62,65,0,5,71,89,0,15,65,31,65,47,65,3,9,3,65,62,38,26,70,89,35,29,70,89,14,51,50,51,50,70,89,38,35,51,51,35,38,3,32,62,62,56,70,89,8,62,16,32,34,19,44,71,89,19,22,0,63,43,0,24,63,63,51,43,17,18,0,23,57,24,47,47,47,43,17,18,0,57,43,43,0,24,16,212,95,94,93,196,43,17,18,0,57,17,18,1,23,57,17,51,17,51,17,51,49,48,1,50,23,21,38,35,34,6,7,22,22,21,20,7,21,22,21,20,6,7,14,2,21,20,22,51,50,55,55,50,23,21,38,38,35,7,6,35,34,38,53,52,54,55,36,53,52,38,35,35,53,51,32,53,52,35,34,6,7,39,54,55,38,39,53,51,22,23,54,54,2,248,51,45,24,41,47,103,45,122,140,211,248,242,225,93,109,48,75,89,86,122,175,125,39,21,84,55,179,130,92,144,159,190,180,1,78,156,159,148,119,1,55,252,74,143,88,59,124,126,92,103,123,75,140,88,134,5,78,15,112,10,79,62,28,138,107,184,57,8,71,202,148,168,3,2,23,42,44,49,43,5,5,39,143,19,24,5,5,119,112,116,125,3,4,190,97,90,141,172,162,34,36,135,55,15,117,98,27,52,137,110,85,255,255,0,109,0,0,5,242,5,182,2,6,1,117,0,0,255,255,0,164,254,20,5,135,6,18,2,6,1,149,0,0,0,3,0,125,255,236,5,190,5,205,0,11,0,18,0,25,0,71,64,37,22,16,16,6,23,15,15,0,6,0,26,27,22,16,73,89,15,22,1,11,3,22,22,3,9,9,19,73,89,9,4,3,12,73,89,3,19,0,63,43,0,24,63,43,17,18,0,57,24,47,95,94,93,43,17,18,1,57,57,17,51,17,51,17,51,17,51,49,48,1,16,0,33,32,0,17,16,0,33,32,0,1,50,18,19,33,18,18,19,34,2,3,33,38,2,5,190,254,157,254,196,254,189,254,161,1,96,1,68,1,59,1,98,253,97,229,247,13,252,43,13,249,232,224,251,19,3,211,17,244,2,221,254,161,254,110,1,139,1,104,1,101,1,137,254,112,252,68,1,17,1,12,254,245,254,238,4,180,254,254,255,0,254,1,4,0,0,3,0,115,255,236,4,98,4,92,0,12,0,19,0,26,0,73,64,39,23,17,17,7,24,16,16,0,7,0,27,28,23,17,70,89,15,23,31,23,2,11,3,23,23,3,10,10,20,70,89,10,16,3,13,70,89,3,22,0,63,43,0,24,63,43,17,18,0,57,24,47,95,94,93,43,17,18,1,57,57,17,51,17,51,17,51,17,51,49,48,1,16,0,35,34,38,2,53,16,0,51,50,0,1,50,54,55,33,22,22,19,34,6,7,33,38,38,4,98,254,242,238,147,228,124,1,12,238,230,1,15,254,8,158,164,10,253,105,9,160,160,156,158,13,2,147,15,161,2,37,254,244,254,211,138,1,2,173,1,12,1,43,254,206,253,77,184,191,186,189,3,88,173,167,168,172,0,0,1,0,0,0,0,5,72,5,195,0,21,0,32,64,16,6,22,19,23,17,0,74,89,17,4,10,5,6,3,5,18,0,63,63,18,57,63,43,17,1,51,18,57,49,48,1,34,6,7,1,35,1,51,1,22,23,54,55,19,62,2,51,50,23,21,38,4,225,59,78,57,254,184,197,253,238,180,1,82,72,35,32,70,162,59,84,110,89,42,79,56,5,55,103,181,251,229,5,182,252,86,199,143,144,223,2,6,191,152,65,19,141,20,0,1,0,0,0,0,4,61,4,82,0,22,0,30,64,15,1,23,15,24,13,18,71,89,13,16,5,1,15,0,21,0,63,63,57,63,43,17,1,51,18,57,49,48,33,1,51,19,18,23,51,54,19,19,62,2,51,50,23,21,38,35,34,6,7,3,1,150,254,106,174,225,100,19,8,23,82,96,37,71,91,84,45,30,29,38,47,58,28,248,4,72,253,155,254,244,100,118,1,11,1,53,122,123,52,10,127,8,84,92,252,223,255,255,0,0,0,0,5,72,7,115,2,38,2,128,0,0,1,7,3,118,4,215,1,82,0,10,180,2,1,33,5,38,0,43,53,53,255,255,0,0,0,0,4,61,6,33,2,38,2,129,0,0,1,7,3,118,4,100,0,0,0,10,180,2,1,34,17,38,0,43,53,53,0,3,0,125,254,20,9,162,5,205,0,11,0,23,0,46,0,68,64,38,12,6,18,0,33,46,39,24,0,6,6,47,48,37,42,74,89,37,27,29,28,28,3,32,24,15,9,21,73,89,9,4,3,15,73,89,3,19,0,63,43,0,24,63,43,0,24,63,51,18,57,17,51,63,43,17,18,1,23,57,17,51,17,51,49,48,1,16,0,33,32,0,17,16,0,33,32,0,1,16,18,51,50,18,17,16,2,35,34,2,37,51,19,22,23,51,54,54,19,51,1,6,6,35,34,39,53,22,51,50,54,55,55,5,84,254,185,254,220,254,215,254,189,1,67,1,44,1,35,1,69,251,221,223,217,218,221,220,216,218,225,4,111,176,246,78,20,8,11,83,228,176,254,43,69,188,136,76,74,55,66,94,117,35,61,2,221,254,160,254,111,1,139,1,104,1,102,1,136,254,112,254,160,254,215,254,205,1,49,1,43,1,41,1,47,254,210,65,253,139,207,102,44,251,2,131,251,32,182,158,17,133,12,103,89,156,255,255,0,115,254,20,8,123,4,92,0,38,0,82,0,0,0,7,0,92,4,117,0,0,0,2,0,125,255,135,6,16,6,45,0,19,0,40,0,81,64,42,20,10,38,13,7,17,34,34,3,28,31,0,0,28,7,23,10,5,41,42,36,34,38,13,38,73,89,17,15,13,3,28,26,23,7,23,73,89,5,3,7,18,0,63,51,51,43,17,0,51,51,24,63,51,51,43,17,0,51,51,17,18,1,23,57,17,51,17,51,51,17,51,17,51,51,17,51,49,48,1,16,0,5,6,35,34,39,36,0,17,16,0,37,54,51,50,23,4,0,1,20,18,23,54,54,51,50,23,54,18,53,52,2,39,6,35,34,39,6,2,6,16,254,209,254,248,26,119,124,20,254,244,254,209,1,43,1,16,20,124,121,22,1,12,1,45,251,33,202,189,17,73,54,110,31,189,202,202,189,31,110,113,31,189,202,2,221,254,210,254,115,44,111,111,41,1,138,1,54,1,49,1,133,44,108,108,44,254,115,254,213,244,254,207,41,48,38,86,41,1,49,244,244,1,47,39,88,86,39,254,211,0,0,2,0,115,255,147,4,207,4,180,0,23,0,45,0,80,64,42,24,12,15,9,43,27,37,21,3,35,0,0,3,32,27,9,12,6,46,47,40,37,43,15,43,70,89,21,18,15,16,32,30,27,9,27,70,89,6,3,9,21,0,63,51,51,43,17,0,51,51,24,63,51,51,43,17,0,51,51,17,18,1,23,57,17,51,17,51,51,17,51,17,51,17,51,49,48,1,20,2,7,6,6,35,34,38,39,38,2,53,52,18,55,54,54,51,50,22,23,22,18,5,20,22,23,54,54,51,50,23,54,54,53,16,37,6,6,35,34,38,39,6,6,4,207,224,204,9,64,56,57,61,9,203,229,224,208,8,62,57,56,64,9,202,226,252,80,125,137,12,60,53,103,24,134,124,254,252,13,61,51,53,60,12,137,125,2,37,233,254,223,37,54,45,43,56,36,1,38,229,233,1,32,36,56,42,43,57,38,254,220,225,177,210,31,42,34,74,31,210,175,1,96,62,42,32,32,44,31,209,0,0,3,0,125,255,236,7,127,8,59,0,21,0,69,0,84,0,85,64,46,67,55,31,43,43,1,38,70,75,80,72,60,12,55,10,85,86,21,2,2,7,7,16,12,82,64,72,58,34,64,58,64,73,89,40,58,4,28,22,52,22,73,89,46,52,19,0,63,51,43,17,0,51,24,63,51,43,17,0,51,24,16,214,26,220,212,205,50,18,57,47,51,17,18,1,23,57,17,51,17,51,49,48,1,21,35,34,46,2,35,34,6,21,21,35,53,52,54,51,50,30,2,51,1,50,54,55,22,22,51,50,18,17,16,2,35,34,6,7,39,54,51,50,0,17,16,0,33,34,38,39,6,6,35,32,0,17,16,0,51,50,23,7,38,38,35,34,2,17,16,18,1,20,7,53,54,53,52,46,2,53,52,51,50,22,5,162,17,84,142,120,102,43,47,60,125,116,112,58,112,119,133,78,253,40,88,171,61,55,171,93,188,210,165,147,60,95,43,70,121,154,228,1,1,254,224,254,253,104,170,76,75,167,110,254,252,254,227,1,1,228,154,121,70,43,94,60,148,165,210,2,128,237,120,31,36,31,92,56,67,7,199,121,36,43,36,52,51,16,28,103,110,36,44,36,248,186,66,63,57,72,1,78,1,45,1,11,1,40,43,31,146,82,254,136,254,173,254,140,254,98,40,48,45,43,1,157,1,117,1,85,1,118,82,146,31,43,254,217,254,244,254,209,254,180,6,104,162,61,72,41,53,20,18,17,26,28,73,68,0,0,3,0,115,255,236,6,4,7,6,0,42,0,63,0,78,0,92,64,51,19,7,28,40,40,44,34,64,69,13,74,66,54,7,10,79,80,50,58,63,45,45,54,76,66,10,64,31,16,10,16,70,89,2,23,70,89,2,4,37,10,16,26,21,4,21,70,89,0,4,22,0,63,51,43,17,0,51,24,63,51,18,57,43,43,17,0,51,26,24,16,222,220,212,50,17,51,205,50,17,18,1,23,57,17,51,17,51,49,48,5,34,39,6,35,34,2,17,16,18,51,50,22,23,7,38,35,34,6,21,16,33,50,55,22,22,51,32,17,52,38,35,34,7,39,54,54,51,50,18,17,16,2,3,21,35,34,46,2,35,34,21,21,35,53,52,54,51,50,30,2,51,5,20,7,53,54,53,52,46,2,53,52,51,50,22,4,43,148,94,92,143,225,250,207,186,62,119,40,57,89,71,116,109,1,49,123,112,62,111,67,1,45,110,115,71,89,57,40,119,62,187,206,247,81,16,84,143,120,101,43,107,125,115,112,58,113,118,131,78,254,240,238,119,30,36,30,92,56,67,20,65,65,1,35,1,14,1,23,1,40,32,25,139,51,214,214,254,94,80,42,38,1,162,214,214,51,139,25,32,254,215,254,234,254,245,254,218,6,165,120,36,42,36,102,17,31,100,111,37,43,37,221,161,62,72,40,56,20,17,17,25,27,74,68,0,0,2,0,94,255,236,7,127,7,4,0,13,0,64,0,95,64,52,48,36,57,54,62,23,23,1,18,54,41,12,36,7,65,66,14,45,39,45,73,89,30,55,55,33,39,5,9,9,13,64,9,15,72,13,7,3,11,64,20,39,4,59,51,33,51,73,89,26,33,19,0,63,51,43,17,0,51,24,63,51,26,222,50,50,205,43,50,17,51,17,18,57,47,57,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,49,48,1,21,7,35,39,35,7,35,39,35,7,35,39,53,1,34,6,7,39,54,51,50,18,17,16,0,33,34,38,39,35,6,6,35,32,0,17,16,0,51,50,23,7,38,38,35,34,2,17,16,18,51,50,54,55,17,51,17,22,51,50,18,17,16,2,5,139,80,32,50,186,49,33,49,188,47,33,80,3,67,60,93,45,70,124,153,228,255,254,226,254,253,116,172,76,9,78,172,112,254,252,254,227,1,1,229,150,126,70,45,93,60,147,165,210,190,65,130,51,170,102,145,188,212,165,7,4,27,172,103,103,103,103,172,27,254,43,41,31,146,80,254,136,254,173,254,139,254,99,48,48,49,47,1,160,1,114,1,85,1,118,80,146,31,41,254,215,254,246,254,209,254,180,38,38,1,201,254,55,76,1,74,1,49,1,11,1,40,0,0,2,0,0,0,0,6,29,5,164,0,13,0,42,0,63,64,36,36,1,14,26,27,12,18,7,43,44,40,21,14,31,22,3,17,18,5,9,9,13,64,9,15,72,13,7,3,11,35,27,18,15,17,21,0,63,63,51,51,222,50,50,205,43,50,17,51,17,18,23,57,63,17,18,1,23,57,49,48,1,21,7,35,39,35,7,35,39,35,7,35,39,53,1,7,3,35,1,51,19,22,23,51,54,54,19,3,51,0,22,23,51,54,18,17,51,16,2,7,35,3,38,4,182,82,30,50,188,49,31,49,188,50,30,80,1,172,39,170,213,254,127,172,246,39,41,8,12,35,186,172,178,1,9,45,10,8,173,153,166,195,219,182,125,33,5,164,27,172,103,103,103,103,172,27,252,37,95,254,150,4,72,253,73,111,171,35,81,1,136,1,213,252,255,144,44,184,1,179,1,82,254,150,254,7,229,1,90,92,0,0,1,0,125,254,20,4,227,5,203,0,23,0,45,64,24,3,15,9,10,21,10,15,3,24,25,19,0,73,89,19,4,12,6,73,89,12,19,10,27,0,63,63,43,0,24,63,43,17,18,1,23,57,17,51,17,51,49,48,1,34,0,17,16,0,33,50,55,17,35,17,35,32,0,17,52,18,36,51,50,23,7,38,3,72,245,254,224,1,10,1,2,111,57,170,20,254,181,254,159,175,1,72,216,237,170,71,171,5,51,254,192,254,232,254,218,254,212,23,253,116,1,216,1,132,1,109,224,1,86,184,84,146,78,0,1,0,115,254,20,3,162,4,92,0,24,0,47,64,24,15,3,23,22,9,22,3,3,25,26,23,27,6,12,70,89,6,16,0,18,70,89,0,22,0,63,43,0,24,63,43,0,24,63,17,18,1,23,57,17,51,17,51,49,48,5,34,0,17,16,0,51,50,22,23,7,38,35,34,6,21,20,22,51,50,54,55,17,35,17,2,117,254,254,252,1,17,251,79,164,48,49,142,104,177,171,171,171,53,80,57,166,20,1,31,1,18,1,20,1,43,34,23,141,51,205,221,220,200,17,26,253,110,1,216,0,0,1,0,106,255,252,4,117,5,6,0,19,0,47,64,33,4,2,8,3,6,0,17,7,10,16,13,18,12,14,14,21,20,19,0,3,17,6,15,5,16,7,13,10,9,12,11,1,18,0,63,205,23,57,17,18,1,23,57,49,48,1,3,39,19,37,55,5,19,37,55,5,19,23,3,5,7,37,3,5,7,2,2,182,121,182,254,225,66,1,33,205,254,223,67,1,33,185,118,184,1,33,68,254,225,204,1,30,65,1,57,254,195,67,1,66,166,115,168,1,100,166,117,168,1,61,67,254,192,166,115,166,254,158,168,115,0,1,0,203,4,145,3,172,5,180,0,19,0,30,64,12,0,6,10,16,6,16,20,21,3,0,13,9,0,47,51,51,50,17,18,1,57,57,17,51,17,51,49,48,1,6,6,35,34,38,53,52,54,51,33,54,54,51,50,22,21,20,6,35,1,135,6,42,48,51,41,42,54,1,193,6,43,47,51,45,44,54,4,240,45,50,50,53,53,41,46,48,49,51,56,40,0,1,0,248,4,229,3,219,5,215,0,19,0,28,64,11,7,18,21,20,0,18,18,12,4,128,9,0,47,26,204,50,51,17,51,17,18,1,57,57,49,48,1,50,55,54,51,50,22,21,21,35,53,52,35,34,14,2,35,35,53,1,4,120,150,149,81,111,116,125,106,43,102,121,142,84,16,5,98,59,58,111,100,31,17,102,36,43,36,121,0,1,1,223,4,215,2,205,6,53,0,14,0,24,64,10,10,0,12,5,0,3,15,16,3,13,0,47,204,17,18,1,23,57,17,51,49,48,1,52,54,51,50,21,20,14,2,21,20,23,21,38,1,223,67,56,92,30,36,30,119,238,5,184,56,69,76,27,25,16,18,20,54,40,74,64,0,1,1,225,4,215,2,207,6,53,0,14,0,24,64,10,5,0,0,10,2,3,15,16,12,2,0,47,204,17,18,1,23,57,17,51,49,48,1,20,7,53,54,53,52,46,2,53,52,51,50,22,2,207,238,119,30,36,30,92,56,67,5,184,161,64,74,40,54,20,18,16,25,27,76,69,0,8,0,41,254,193,7,193,5,145,0,12,0,26,0,40,0,54,0,68,0,82,0,95,0,109,0,128,64,73,95,40,68,90,34,62,12,26,7,20,82,54,109,76,48,103,16,110,111,0,7,58,72,72,65,79,69,68,62,76,86,99,99,92,106,102,95,90,109,30,44,44,37,51,47,34,40,3,54,16,23,7,79,76,106,109,51,54,23,23,54,51,109,106,76,79,7,8,9,13,20,3,9,0,47,51,47,51,18,23,57,47,47,47,47,47,47,47,47,17,51,17,23,51,17,51,51,17,51,17,51,51,51,17,51,51,17,51,17,51,51,51,17,51,51,17,51,17,51,17,18,1,23,57,49,48,1,38,38,35,34,6,7,35,54,51,50,22,23,3,38,38,35,34,6,7,35,54,54,51,50,22,23,1,38,38,35,34,6,7,35,54,54,51,50,22,23,33,38,38,35,34,6,7,35,54,54,51,50,22,23,1,38,38,35,34,6,7,35,54,54,51,50,22,23,33,38,38,35,34,6,7,35,54,54,51,50,22,23,1,38,38,35,34,6,7,35,54,51,50,22,23,33,38,38,35,34,6,7,35,54,54,51,50,22,23,4,111,5,60,69,78,50,5,75,11,197,93,113,7,79,5,60,69,78,50,5,75,5,100,103,92,115,6,1,244,5,60,68,78,50,5,76,5,101,103,92,115,6,251,47,5,60,68,78,50,5,76,5,101,103,92,115,6,4,49,5,60,68,78,50,5,76,5,101,103,92,115,6,251,47,5,60,68,78,50,5,76,5,101,103,92,115,6,4,240,5,60,68,78,51,5,75,11,198,92,115,6,249,190,5,60,68,78,50,5,76,5,101,103,92,115,6,4,207,44,44,41,47,194,101,93,249,242,44,44,41,47,89,105,102,92,1,22,45,43,39,49,90,105,102,93,45,43,39,49,90,105,102,93,3,219,45,43,39,49,90,105,102,93,45,43,39,49,90,105,102,93,254,25,44,44,40,48,194,104,90,45,43,39,49,90,104,102,92,0,0,8,0,41,254,127,7,125,5,211,0,7,0,15,0,23,0,31,0,39,0,46,0,53,0,62,0,52,64,37,21,23,37,32,62,58,5,1,41,44,31,28,50,53,9,13,16,63,64,59,43,7,46,54,25,21,29,17,47,39,15,36,51,14,5,12,5,0,47,47,18,23,57,17,18,1,23,57,49,48,5,23,6,6,7,35,54,55,3,39,54,54,55,51,6,7,1,55,22,22,23,21,38,39,5,7,38,38,39,53,22,23,1,55,54,54,55,23,6,7,1,7,6,7,39,54,55,3,39,38,39,55,22,23,1,23,22,22,23,7,38,38,39,4,55,11,17,70,36,97,53,17,59,11,19,73,31,97,52,18,2,35,14,71,200,65,221,129,251,104,14,66,191,79,221,129,3,166,2,67,190,67,69,177,120,252,234,2,155,169,69,177,120,43,17,82,69,67,123,76,3,106,17,39,90,22,67,31,130,38,35,14,66,191,79,221,129,4,152,14,71,200,65,220,130,254,22,11,19,73,31,97,53,17,59,11,17,70,36,97,53,17,1,170,16,39,88,25,68,110,88,252,149,16,89,63,68,110,88,2,222,2,140,183,70,198,99,252,233,2,69,194,60,70,50,195,52,0,0,2,0,201,254,131,6,8,7,94,0,20,0,34,0,89,64,47,13,10,12,7,14,14,9,19,2,2,20,20,24,32,9,10,5,36,35,20,18,6,5,17,18,5,18,14,0,14,9,73,89,14,18,12,34,31,15,24,1,24,28,21,7,0,3,0,63,50,222,50,205,93,50,63,63,43,17,18,0,57,57,17,51,17,51,24,63,17,18,1,23,57,17,51,17,51,17,51,17,51,51,17,51,49,48,19,51,17,20,7,7,51,1,51,17,51,3,35,19,35,17,52,55,35,1,35,1,34,38,39,51,22,22,51,50,54,55,51,6,6,201,161,10,4,8,3,52,184,184,143,197,156,160,19,9,252,201,186,2,67,186,168,10,155,10,93,110,105,99,9,158,12,181,5,182,252,209,118,206,83,4,198,250,226,253,235,1,125,3,37,175,247,251,53,6,43,143,164,108,78,93,93,159,148,0,2,0,176,254,135,5,18,6,12,0,17,0,31,0,79,64,42,10,7,9,4,11,11,6,15,1,1,16,16,21,29,6,7,5,33,32,3,14,16,17,15,11,6,70,89,11,16,21,9,34,28,15,21,1,21,25,18,4,15,0,63,222,50,205,93,50,63,63,51,43,0,24,63,18,57,57,17,18,1,23,57,17,51,17,51,17,51,17,51,51,17,51,49,48,1,17,20,7,1,51,17,51,3,35,19,35,17,52,55,1,35,17,37,34,38,39,51,22,22,51,50,54,55,51,6,6,1,76,10,2,81,207,176,129,172,125,155,8,253,174,205,1,236,185,170,10,156,7,90,116,103,100,10,157,12,178,4,72,253,106,136,136,3,166,252,71,253,248,1,121,2,160,158,104,252,90,4,72,145,143,164,102,84,90,96,158,149,0,2,0,47,0,0,4,125,5,182,0,17,0,25,0,77,64,41,8,4,18,18,1,15,21,11,11,6,15,17,4,26,27,8,25,73,89,7,17,0,17,73,89,4,0,8,0,8,0,15,2,15,18,74,89,15,18,2,3,0,63,63,43,17,18,0,57,57,24,47,47,17,51,43,17,0,51,43,17,18,1,23,57,17,51,17,51,51,17,51,51,49,48,19,51,53,51,21,33,21,33,17,51,32,17,20,4,33,33,17,35,1,51,32,17,52,38,35,35,47,154,170,1,86,254,170,192,2,74,254,236,254,241,254,111,154,1,68,221,1,123,184,201,215,4,252,186,186,150,254,224,254,100,210,216,4,102,252,43,1,25,132,128,0,0,2,0,20,0,0,4,76,6,20,0,18,0,26,0,75,64,40,4,0,20,20,16,12,23,8,8,2,12,14,4,27,28,4,19,70,89,3,14,15,14,71,89,0,15,4,15,4,15,12,17,0,12,20,70,89,12,21,0,63,43,0,24,63,18,57,57,47,47,17,51,43,17,0,51,43,17,18,1,23,57,17,51,17,51,51,17,51,51,49,48,1,33,21,33,17,33,50,22,21,20,6,35,33,17,35,53,51,53,51,17,17,33,32,53,52,38,35,1,86,1,39,254,217,1,64,223,215,224,221,254,33,156,156,166,1,49,1,31,132,159,5,31,129,253,229,154,155,164,170,4,158,129,245,251,224,254,151,185,92,84,0,0,2,0,201,0,0,4,121,5,182,0,15,0,28,0,72,64,41,16,10,10,11,24,0,0,4,5,3,22,6,21,19,20,11,10,29,30,22,19,28,16,12,28,74,89,9,16,74,89,6,3,12,9,9,11,12,3,11,18,0,63,63,18,57,47,18,57,57,43,43,17,18,0,57,57,17,18,1,23,57,17,51,17,51,17,51,49,48,1,20,6,7,23,7,39,6,35,35,17,35,17,33,32,4,1,51,50,55,39,55,23,54,53,52,38,35,35,4,121,115,108,120,100,149,102,136,184,170,1,137,1,18,1,21,252,250,166,87,76,108,108,140,127,194,202,200,4,12,127,201,57,157,84,192,27,253,193,5,182,215,253,242,10,141,82,176,72,178,145,142,0,2,0,176,254,20,4,117,4,92,0,24,0,41,0,85,64,49,29,11,4,7,7,8,39,18,18,21,22,20,37,23,34,36,35,8,10,42,43,37,34,25,32,15,25,70,89,12,11,11,4,20,23,4,0,15,16,9,15,8,27,0,32,70,89,0,22,0,63,43,0,24,63,63,63,18,23,57,17,51,43,17,18,0,57,57,17,18,1,23,57,17,51,17,51,17,51,51,51,49,48,5,34,38,39,35,22,21,17,35,17,51,23,51,54,54,51,50,18,17,16,7,23,7,39,6,3,34,6,7,21,20,22,51,50,55,39,55,23,54,53,52,38,2,174,107,177,60,12,12,166,135,25,8,64,169,109,218,237,183,115,100,131,71,109,168,150,2,154,170,47,41,121,106,129,101,150,20,79,82,148,34,254,61,6,52,150,90,80,254,214,254,243,254,174,145,156,80,174,24,3,227,186,203,37,231,199,12,158,80,170,103,249,215,209,0,0,1,0,47,0,0,4,8,5,182,0,13,0,60,64,31,3,7,7,12,8,0,5,8,10,4,14,15,6,10,11,10,73,89,3,11,11,8,13,13,2,73,89,13,3,8,18,0,63,63,43,17,18,0,57,24,47,51,43,17,0,51,17,18,1,23,57,17,51,51,17,51,49,48,1,21,33,17,33,21,33,17,35,17,35,53,51,17,4,8,253,107,1,168,254,88,170,154,154,5,182,153,254,2,150,253,119,2,137,150,2,151,0,1,0,18,0,0,3,66,4,72,0,13,0,60,64,31,2,6,6,11,7,0,4,7,9,4,14,15,5,9,10,9,71,89,2,10,10,7,12,12,1,70,89,12,15,7,21,0,63,63,43,17,18,0,57,24,47,51,43,17,0,51,17,18,1,23,57,17,51,51,17,51,49,48,1,33,17,33,21,33,17,35,17,35,53,51,17,33,3,66,254,20,1,90,254,166,166,158,158,2,146,3,188,254,168,127,254,27,1,229,127,1,228,0,0,1,0,201,254,0,4,219,5,182,0,27,0,65,64,35,9,3,3,4,25,14,14,7,20,4,4,28,29,17,23,73,89,17,28,11,0,73,89,11,11,4,5,5,8,73,89,5,3,4,18,0,63,63,43,17,18,0,57,24,47,43,0,24,63,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,34,7,17,35,17,33,21,33,17,54,51,32,0,17,16,0,33,34,38,39,53,22,51,32,17,52,0,2,49,100,90,170,3,73,253,97,90,121,1,64,1,85,254,226,254,253,83,125,70,123,137,1,127,255,0,2,143,12,253,125,5,182,153,253,252,10,254,173,254,198,254,197,254,165,21,28,152,49,1,254,245,1,4,0,0,1,0,176,254,10,3,250,4,72,0,27,0,65,64,35,8,25,20,14,14,15,15,2,18,25,4,29,28,22,11,70,89,22,22,15,16,16,19,70,89,16,15,15,21,0,5,70,89,0,27,0,63,43,0,24,63,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,34,39,53,22,51,50,54,53,52,38,35,34,7,17,35,17,33,21,33,17,54,51,32,0,17,16,2,2,70,145,101,116,123,133,136,178,181,69,74,166,2,154,254,12,82,59,1,16,1,7,228,254,10,60,149,63,202,215,223,208,17,254,37,4,72,142,254,183,12,254,229,254,217,254,245,254,218,0,0,1,0,2,254,131,6,248,5,182,0,21,0,77,64,41,6,17,17,3,18,13,12,12,8,9,18,0,1,21,7,22,23,18,21,18,19,16,9,6,3,0,0,15,1,15,10,73,89,15,18,13,34,7,4,1,3,0,63,51,51,63,63,43,17,18,0,57,17,51,51,51,51,51,24,63,51,17,18,1,23,57,17,51,17,51,51,17,51,49,48,1,1,51,1,17,51,17,1,51,1,1,51,17,35,17,35,1,17,35,17,1,35,2,86,253,193,190,2,57,164,2,58,190,253,192,1,218,180,162,94,253,186,164,253,187,199,2,240,2,198,253,60,2,196,253,60,2,196,253,60,253,168,253,233,1,125,2,229,253,27,2,229,253,27,0,0,1,0,4,254,135,6,31,4,72,0,21,0,75,64,40,2,13,13,21,14,9,8,8,4,5,14,18,19,17,7,22,23,21,15,12,5,2,18,18,11,3,0,19,15,14,17,21,11,6,70,89,11,21,9,34,0,63,63,43,0,24,63,51,63,51,51,18,57,17,51,51,51,51,51,17,18,1,23,57,17,51,17,51,51,17,51,49,48,1,51,17,1,51,1,1,51,17,35,17,35,1,17,35,17,1,35,1,1,51,1,2,164,153,1,197,182,254,54,1,112,193,162,94,254,30,153,254,31,191,1,240,254,55,182,1,195,4,72,253,237,2,19,253,237,254,90,253,248,1,121,2,45,253,211,2,45,253,211,2,53,2,19,253,237,0,255,255,0,74,254,66,4,53,5,203,2,38,1,177,0,0,0,7,3,127,1,88,0,0,255,255,0,68,254,66,3,127,4,92,2,38,1,209,0,0,0,7,3,127,1,8,0,0,0,1,0,201,254,131,5,43,5,182,0,15,0,59,64,32,12,8,8,9,3,2,2,14,15,6,9,5,16,17,15,12,6,3,5,13,10,3,9,18,5,0,73,89,5,18,3,34,0,63,63,43,0,24,63,63,51,18,23,57,17,18,1,23,57,17,51,17,51,17,51,49,48,37,51,17,35,17,35,1,7,17,35,17,51,17,1,51,1,4,127,172,162,102,253,233,153,170,170,2,151,201,253,180,154,253,233,1,125,2,197,136,253,195,5,182,253,43,2,213,253,133,0,1,0,176,254,133,4,61,4,72,0,14,0,58,64,31,14,10,10,11,6,5,5,1,2,11,4,15,16,2,14,9,3,8,0,12,15,11,21,8,3,70,89,8,21,6,34,0,63,63,43,0,24,63,63,51,18,23,57,17,18,1,23,57,17,51,17,51,17,51,49,48,1,51,1,1,51,17,35,17,35,1,17,35,17,51,17,3,47,182,254,39,1,127,178,159,84,254,12,166,166,4,72,253,239,254,88,253,246,1,123,2,43,253,213,4,72,253,235,0,0,1,0,201,0,0,4,233,5,182,0,18,0,56,64,30,6,2,2,3,10,17,17,7,18,14,12,18,3,4,19,20,8,10,6,0,16,18,6,3,11,4,3,15,3,18,0,63,51,63,51,18,23,57,17,18,1,23,57,17,51,51,17,51,17,51,17,51,49,48,1,7,17,35,17,51,17,55,17,51,21,1,51,1,1,35,1,17,35,1,240,125,170,170,125,125,1,155,203,253,180,2,98,200,254,76,125,2,168,107,253,195,5,182,253,37,139,1,93,211,1,198,253,133,252,197,2,92,254,207,0,1,0,176,0,0,4,59,4,72,0,19,0,58,64,31,6,2,2,3,14,10,18,18,7,19,15,12,19,3,4,20,21,8,10,6,1,17,19,6,3,11,4,15,16,3,21,0,63,51,63,51,18,23,57,17,18,1,23,57,17,51,51,17,51,51,17,51,17,51,49,48,1,39,17,35,17,51,17,55,17,51,21,1,51,1,21,1,35,1,21,35,1,205,119,166,166,119,131,1,14,182,254,60,1,235,194,254,213,129,1,178,121,253,213,4,72,253,235,121,1,74,205,1,31,254,37,107,253,254,1,59,221,0,0,1,0,47,0,0,4,233,5,182,0,19,0,71,64,38,8,4,16,16,1,17,11,14,12,10,6,14,17,19,6,20,21,7,19,0,19,73,89,4,11,8,14,3,17,0,0,2,13,17,18,9,2,3,0,63,51,63,51,18,57,47,18,23,57,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,17,51,51,49,48,19,51,53,51,21,51,21,35,17,1,51,1,1,35,1,7,17,35,17,35,47,154,170,221,221,2,149,203,253,180,2,98,206,253,241,153,170,154,5,4,178,178,151,254,110,2,219,253,133,252,197,2,197,134,253,193,4,109,0,0,1,0,20,0,0,4,27,6,20,0,25,0,77,64,43,10,8,4,22,22,1,23,18,16,6,17,23,25,6,26,27,20,10,15,19,23,21,7,25,0,25,71,89,4,15,0,31,0,47,0,3,0,0,2,15,15,2,0,0,63,63,18,57,47,93,51,43,17,0,51,24,63,51,18,57,57,17,18,1,23,57,17,51,51,17,51,51,51,49,48,19,51,53,51,21,33,21,33,17,7,7,51,55,54,54,1,51,1,1,35,1,7,17,35,17,35,20,156,164,1,125,254,131,3,3,8,18,55,40,1,112,199,254,68,1,217,199,254,125,125,164,156,5,90,186,186,127,253,232,91,55,24,74,48,1,133,254,45,253,139,2,4,106,254,102,4,219,0,1,0,16,0,0,5,131,5,182,0,13,0,53,64,27,2,10,10,11,5,8,6,4,8,11,4,14,15,8,2,0,7,11,18,3,3,0,13,73,89,0,3,0,63,43,0,24,63,63,51,18,57,57,17,18,1,23,57,17,51,17,51,17,51,49,48,19,33,17,1,51,1,1,35,1,7,17,35,17,33,16,1,252,2,150,203,253,180,2,98,201,253,236,154,170,254,174,5,182,253,37,2,219,253,133,252,197,2,197,136,253,195,5,29,0,0,1,0,41,0,0,4,227,4,72,0,12,0,53,64,27,5,1,1,9,9,10,12,10,4,6,4,14,13,8,2,0,7,10,21,3,15,0,12,70,89,0,15,0,63,43,0,24,63,63,51,18,57,57,17,18,1,23,57,17,51,17,51,17,51,49,48,19,33,17,1,51,1,1,35,1,17,35,17,33,41,2,2,1,219,182,254,39,2,0,194,254,10,164,254,162,4,72,253,235,2,21,253,237,253,203,2,43,253,213,3,188,0,1,0,201,254,131,5,193,5,182,0,15,0,68,64,36,12,8,8,9,13,5,5,0,3,2,2,0,9,3,16,17,12,7,73,89,12,12,5,14,10,3,9,18,5,0,73,89,5,18,3,34,0,63,63,43,0,24,63,63,51,18,57,47,43,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,49,48,37,51,17,35,17,35,17,33,17,35,17,51,17,33,17,51,5,31,162,162,170,252,254,170,170,3,2,170,154,253,233,1,125,2,176,253,80,5,182,253,146,2,110,0,0,1,0,176,254,135,4,248,4,72,0,15,0,78,64,43,1,13,13,14,2,10,10,5,8,7,7,5,14,3,16,17,1,12,70,89,15,1,31,1,2,11,3,1,1,10,3,15,15,14,21,10,5,70,89,10,21,8,34,0,63,63,43,0,24,63,63,51,18,57,47,95,94,93,43,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,49,48,1,17,33,17,51,17,51,17,35,17,35,17,33,17,35,17,1,86,2,102,166,150,166,150,253,154,166,4,72,254,53,1,203,252,71,253,248,1,121,1,238,254,18,4,72,0,0,1,0,201,0,0,6,111,5,182,0,13,0,63,64,33,10,6,6,7,11,3,3,2,0,2,7,3,14,15,10,5,73,89,10,10,7,12,12,1,73,89,12,3,8,3,3,7,18,0,63,51,63,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,33,17,35,17,33,17,35,17,51,17,33,17,33,6,111,254,176,172,253,0,170,170,3,0,1,252,5,29,250,227,2,176,253,80,5,182,253,146,2,110,0,1,0,176,0,0,5,193,4,72,0,13,0,73,64,39,1,11,11,12,2,8,8,7,4,7,12,3,14,15,13,15,1,10,70,89,15,1,31,1,2,11,3,1,1,3,8,12,21,3,6,70,89,3,15,0,63,43,0,24,63,51,18,57,47,95,94,93,43,0,24,63,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,17,33,17,33,21,33,17,35,17,33,17,35,17,1,86,2,102,2,5,254,161,166,253,154,166,4,72,254,53,1,203,140,252,68,1,238,254,18,4,72,0,1,0,201,254,0,8,29,5,182,0,29,0,71,64,38,4,5,8,0,0,1,23,13,13,18,1,5,4,30,31,16,21,73,89,16,28,10,26,73,89,10,10,5,6,6,3,73,89,6,3,1,5,18,0,63,51,63,43,17,18,0,57,24,47,43,0,24,63,43,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,33,35,17,33,17,35,17,33,17,54,51,32,0,17,16,0,33,34,39,53,22,51,32,17,52,2,35,34,6,7,4,217,170,253,68,170,4,16,68,125,1,50,1,81,254,229,254,254,156,123,134,127,1,122,230,232,42,127,24,5,29,250,227,5,182,253,97,12,254,168,254,200,254,199,254,166,49,152,49,1,254,242,1,5,7,5,0,0,1,0,176,254,10,6,168,4,72,0,28,0,71,64,38,17,18,21,13,13,14,7,26,26,2,14,18,4,29,30,23,10,70,89,23,23,18,19,19,16,70,89,19,15,14,18,21,0,5,70,89,0,27,0,63,43,0,24,63,51,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,34,39,53,22,51,50,17,52,38,35,34,7,17,35,17,33,17,35,17,33,17,54,51,50,0,17,16,2,5,23,131,97,109,108,240,166,172,67,72,168,253,223,166,3,111,75,66,246,1,6,209,254,10,60,149,63,1,161,223,208,21,254,41,3,184,252,72,4,72,254,39,14,254,215,254,231,254,244,254,219,0,2,0,125,255,172,5,225,5,205,0,40,0,52,0,80,64,44,27,17,47,35,41,0,8,0,3,22,32,35,17,7,53,54,38,44,74,89,12,50,38,38,14,20,20,25,73,89,20,4,10,5,73,89,10,14,14,30,73,89,14,19,0,63,43,0,24,16,196,43,0,24,63,43,17,18,0,57,24,47,57,57,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,20,2,7,22,51,50,55,21,6,35,34,39,6,35,32,0,17,16,0,33,50,23,7,38,35,32,17,16,18,51,50,55,38,2,53,52,18,51,50,18,3,52,38,35,34,6,21,20,22,23,54,54,5,184,138,116,66,90,78,61,56,91,178,148,102,144,254,202,254,161,1,73,1,58,127,92,47,84,90,254,51,255,235,54,46,86,92,198,175,181,193,176,103,93,94,103,93,83,102,115,2,166,181,254,203,86,30,22,153,25,100,36,1,137,1,86,1,120,1,138,35,145,28,253,158,254,224,254,206,10,103,1,28,160,244,1,10,254,246,254,254,177,204,201,176,140,254,85,67,255,0,0,2,0,115,255,199,4,211,4,92,0,10,0,53,0,80,64,44,30,19,0,38,6,44,52,44,47,24,36,38,19,7,54,55,41,8,71,89,13,3,41,41,15,22,22,27,70,89,22,16,11,49,70,89,11,15,15,33,70,89,15,22,0,63,43,0,24,16,196,43,0,24,63,43,17,18,0,57,24,47,57,57,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,20,22,23,54,54,53,52,35,34,6,1,34,39,6,35,34,38,38,53,16,18,51,50,23,7,38,35,34,6,21,20,22,51,50,54,55,38,53,52,54,51,50,22,21,20,6,7,22,51,50,55,21,6,2,238,68,63,68,83,135,72,75,1,102,147,130,96,123,149,226,122,248,227,91,77,37,54,79,156,145,170,164,37,53,6,139,168,151,148,157,107,94,52,67,66,49,39,1,242,94,161,53,44,158,110,235,125,253,99,77,40,139,254,164,1,19,1,48,22,138,19,209,231,206,210,9,3,148,225,173,193,189,177,125,209,64,26,14,137,14,0,255,255,0,125,254,66,4,207,5,203,2,38,0,38,0,0,0,7,3,127,2,37,0,0,255,255,0,115,254,66,3,139,4,92,2,38,0,70,0,0,0,7,3,127,1,131,0,0,0,1,0,16,254,131,4,90,5,182,0,11,0,50,64,27,6,11,8,9,3,9,11,1,4,12,13,11,6,73,89,11,18,9,34,5,1,2,1,73,89,2,3,0,63,43,17,0,51,24,63,63,43,17,18,1,23,57,17,51,17,51,49,48,1,33,53,33,21,33,17,51,17,35,17,35,1,223,254,49,4,74,254,49,162,162,172,5,29,153,153,251,125,253,233,1,125,0,0,1,0,41,254,135,3,145,4,72,0,11,0,52,64,27,6,11,8,9,3,9,11,1,4,12,13,9,34,5,1,2,1,70,89,2,15,11,6,70,89,11,21,0,63,43,0,24,63,43,17,0,51,24,63,17,18,1,23,57,17,51,17,51,49,48,1,33,53,33,21,33,17,51,17,35,17,35,1,137,254,160,3,104,254,158,150,166,150,3,188,140,140,252,211,253,248,1,121,0,255,255,0,0,0,0,4,123,5,182,2,6,0,60,0,0,0,1,0,0,254,20,4,2,4,72,0,13,0,41,64,20,0,1,12,1,3,3,14,15,8,7,13,7,2,11,3,15,2,21,1,27,0,63,63,63,51,18,57,57,17,51,17,18,1,23,57,17,51,49,48,1,35,17,1,51,19,22,23,51,54,55,19,51,1,2,84,166,254,82,172,236,83,19,8,33,70,233,172,254,82,254,20,1,232,4,76,253,155,222,97,138,181,2,101,251,180,0,0,1,0,0,0,0,4,123,5,182,0,16,0,58,64,30,4,8,8,13,9,2,6,9,11,15,5,17,18,7,11,12,11,73,89,4,0,15,12,12,9,1,15,3,9,18,0,63,63,51,18,57,47,18,57,51,43,17,0,51,17,18,1,23,57,17,51,51,17,51,49,48,1,1,51,1,21,33,21,33,17,35,17,33,53,33,53,1,51,2,61,1,134,184,254,24,1,43,254,213,172,254,211,1,45,254,25,186,2,219,2,219,252,129,59,152,254,156,1,100,152,51,3,135,0,1,0,0,254,20,4,2,4,72,0,19,0,60,64,31,17,1,1,6,2,16,19,2,4,7,5,20,21,12,11,11,5,15,7,15,0,4,5,4,71,89,17,5,21,2,27,0,63,63,51,43,17,0,51,24,63,51,18,57,17,51,17,18,1,23,57,17,51,51,17,51,49,48,5,17,35,17,33,53,33,1,51,19,22,23,51,54,55,19,51,1,33,21,2,84,166,254,234,1,20,254,84,172,236,83,19,8,33,70,233,172,254,84,1,18,129,254,149,1,107,129,4,72,253,155,222,97,138,181,2,101,251,184,129,0,0,1,0,8,254,131,4,213,5,182,0,15,0,55,64,32,3,2,2,14,15,12,6,9,10,8,8,16,17,12,15,9,6,4,5,13,10,3,8,18,5,0,73,89,5,18,3,34,0,63,63,43,0,24,63,63,51,18,23,57,17,18,1,23,57,17,51,49,48,37,51,17,35,17,35,1,1,35,1,1,51,1,1,51,1,4,51,162,162,94,254,119,254,112,180,1,230,254,59,188,1,107,1,110,181,254,59,154,253,233,1,125,2,131,253,125,2,252,2,186,253,189,2,67,253,76,0,1,0,39,254,133,4,55,4,72,0,15,0,57,64,33,10,9,9,5,6,3,13,0,1,15,8,16,17,15,21,3,6,0,13,4,12,1,12,7,70,89,12,21,10,34,4,1,15,0,63,51,63,63,43,17,18,0,23,57,24,63,17,18,1,23,57,17,51,49,48,1,1,51,1,1,51,1,1,51,17,35,17,35,1,1,35,1,184,254,131,189,1,33,1,32,187,254,131,1,43,149,166,69,254,205,254,202,188,2,49,2,23,254,92,1,164,253,233,254,94,253,246,1,123,1,188,254,68,0,0,1,0,16,254,131,6,168,5,182,0,15,0,64,64,34,12,5,0,13,3,2,2,13,10,5,7,5,16,17,14,3,11,7,8,7,73,89,8,3,0,12,5,12,73,89,5,18,3,34,0,63,63,43,17,0,51,24,63,43,17,0,51,24,63,17,18,1,23,57,17,51,17,51,17,51,49,48,37,51,17,35,17,33,17,33,53,33,21,33,17,33,17,51,5,254,170,162,251,180,254,86,4,47,254,37,2,240,170,154,253,233,1,125,5,29,153,153,251,125,5,28,0,1,0,41,254,135,5,152,4,70,0,15,0,63,64,34,2,11,6,3,9,8,8,3,0,11,13,5,16,17,1,13,14,13,70,89,14,15,6,2,11,2,70,89,11,21,9,34,4,15,0,63,63,63,43,17,0,51,24,63,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,49,48,1,33,17,33,17,51,17,51,17,35,17,33,17,33,53,33,3,121,254,151,2,70,166,156,166,252,120,254,191,3,80,3,186,252,213,3,183,252,73,253,248,1,121,3,186,140,0,0,1,0,170,254,131,5,104,5,182,0,23,0,59,64,31,21,0,5,3,2,15,12,2,5,12,3,24,25,18,9,73,89,18,18,5,22,13,3,5,0,73,89,5,18,3,34,0,63,63,43,0,24,63,51,18,57,47,43,17,18,1,23,57,17,51,17,51,17,51,51,49,48,37,51,17,35,17,35,17,6,6,35,34,38,53,17,51,17,20,22,51,50,54,55,17,51,4,199,161,161,170,149,198,106,207,223,170,127,143,97,177,169,170,154,253,233,1,125,2,92,53,39,190,179,2,69,253,207,121,116,29,55,2,202,0,0,1,0,156,254,133,4,195,4,72,0,22,0,59,64,31,1,21,9,6,14,12,11,11,14,21,3,23,24,3,18,70,89,3,3,14,7,22,15,14,9,70,89,14,21,12,34,0,63,63,43,0,24,63,51,18,57,47,43,17,18,1,23,57,17,51,17,51,51,17,51,49,48,1,17,20,51,50,54,55,17,51,17,51,17,35,17,35,17,6,6,35,34,38,53,17,1,66,219,91,166,105,166,150,166,150,105,179,113,164,186,4,72,254,112,192,56,67,1,213,252,71,253,246,1,123,1,240,72,59,172,147,1,156,0,1,0,170,0,0,4,199,5,182,0,22,0,74,64,38,5,2,11,21,21,8,22,13,17,17,16,16,22,2,3,23,24,20,0,8,0,73,89,11,8,22,8,9,9,8,22,3,3,17,18,14,3,3,0,63,51,63,18,23,57,47,47,47,17,51,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,51,17,51,17,51,49,48,1,32,17,17,51,17,20,22,51,17,51,17,54,55,17,51,17,35,17,6,7,17,35,2,117,254,53,170,135,154,125,134,163,172,172,168,129,125,2,0,1,113,2,69,253,207,119,118,1,92,254,170,13,60,2,207,250,74,2,88,65,17,254,207,0,1,0,156,0,0,4,29,4,72,0,23,0,74,64,38,1,22,6,16,16,3,17,8,12,12,11,11,17,22,3,24,25,15,19,3,19,70,89,6,3,17,3,4,4,3,17,3,12,9,23,15,12,21,0,63,63,51,18,23,57,47,47,47,17,51,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,51,17,51,17,51,49,48,1,17,20,23,17,51,17,54,55,17,51,17,35,17,6,7,21,35,53,35,34,38,53,17,1,66,200,119,113,133,166,166,128,118,119,22,160,184,4,72,254,112,186,6,1,45,254,221,24,89,1,213,251,184,1,240,91,26,248,234,170,149,1,156,0,1,0,201,0,0,4,229,5,182,0,18,0,47,64,23,2,17,17,18,9,8,8,18,20,19,4,13,73,89,2,18,4,4,9,18,18,0,3,0,63,63,51,57,47,18,57,43,17,18,1,57,57,17,51,17,51,17,51,49,48,19,51,17,36,51,50,22,21,17,35,17,52,38,35,34,6,7,17,35,201,170,1,0,196,207,223,170,127,143,107,186,149,170,5,182,253,164,92,191,177,253,186,2,49,120,118,34,50,253,53,0,0,1,0,176,0,0,4,66,4,72,0,18,0,47,64,23,0,18,11,7,7,8,18,8,20,19,14,3,70,89,11,14,14,8,9,15,0,8,21,0,63,51,63,18,57,47,57,43,17,18,1,57,57,17,51,17,51,17,51,49,48,33,17,52,35,34,6,7,17,35,17,51,17,54,54,51,50,22,21,17,3,154,217,88,156,119,166,166,95,186,114,163,190,1,141,193,49,74,254,45,4,72,254,14,69,62,168,151,254,102,0,2,0,61,255,236,6,63,5,205,0,32,0,39,0,81,64,42,5,3,0,36,17,17,8,30,37,16,16,24,30,0,4,40,41,17,30,7,30,73,89,36,7,2,7,2,27,12,27,20,73,89,27,19,12,33,73,89,12,4,0,63,43,0,24,63,43,17,18,0,57,57,24,47,47,51,43,17,0,51,17,18,1,23,57,17,51,17,51,51,17,51,17,51,51,49,48,19,52,55,51,6,21,20,51,51,55,18,0,33,32,0,17,21,33,18,0,51,50,54,55,21,6,6,35,32,0,3,34,38,1,34,2,7,33,16,38,61,27,145,20,113,34,5,29,1,77,1,23,1,41,1,40,251,220,14,1,5,247,101,202,141,114,221,130,254,198,254,163,19,142,155,3,175,209,240,16,3,110,203,3,135,73,54,50,60,103,43,1,42,1,71,254,133,254,143,69,254,248,254,239,31,43,156,39,30,1,100,1,76,118,2,35,254,245,249,1,9,251,0,0,2,0,51,255,236,4,221,4,90,0,31,0,38,0,76,64,40,10,8,5,22,13,36,21,21,29,13,3,5,5,39,40,22,3,12,3,70,89,35,12,7,12,7,0,17,17,32,70,89,17,16,0,25,70,89,0,22,0,63,43,0,24,63,43,17,18,0,57,57,24,47,47,51,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,51,49,48,5,34,0,39,36,53,52,55,51,6,21,20,51,51,55,54,54,51,50,18,21,21,33,22,22,51,50,54,55,21,6,6,3,34,6,7,33,52,38,3,74,243,254,236,6,254,246,25,141,20,106,21,6,34,250,183,207,241,253,12,6,172,173,101,159,98,88,157,160,134,151,14,2,61,140,20,1,30,252,4,221,69,50,47,59,103,35,202,224,254,247,226,105,198,195,32,42,148,38,33,3,227,164,158,157,165,0,2,0,61,254,131,6,63,5,205,0,34,0,41,0,93,64,49,11,9,6,38,23,23,14,3,33,34,39,22,22,30,34,3,6,5,42,43,34,34,32,19,23,3,13,3,73,89,38,13,8,13,8,0,18,18,35,73,89,18,4,0,26,74,89,0,19,0,63,43,0,24,63,43,17,18,0,57,57,24,47,47,51,43,17,0,51,24,63,63,17,18,1,23,57,17,51,17,51,17,51,51,17,51,17,51,51,49,48,5,36,0,3,34,38,53,52,55,51,6,21,20,51,51,55,18,0,33,32,0,17,21,33,18,0,51,50,54,55,21,6,7,17,35,19,34,2,7,33,16,38,3,160,254,254,254,219,19,142,155,27,145,20,113,34,5,29,1,77,1,23,1,41,1,40,251,220,14,1,5,247,101,202,141,176,235,166,76,209,240,16,3,110,203,12,29,1,90,1,49,118,117,73,54,50,60,103,43,1,42,1,71,254,133,254,143,69,254,248,254,239,31,43,156,62,5,254,149,6,178,254,245,249,1,9,251,0,2,0,51,254,135,4,221,4,90,0,33,0,40,0,88,64,47,10,8,5,22,13,32,33,38,21,21,29,33,13,3,5,6,41,42,33,34,31,22,22,3,12,3,70,89,37,12,7,12,7,0,17,17,34,70,89,17,16,0,25,70,89,0,21,0,63,43,0,24,63,43,17,18,0,57,57,24,47,47,51,43,17,0,51,24,63,63,17,18,1,23,57,17,51,17,51,17,51,17,51,51,49,48,5,38,2,39,36,53,52,55,51,6,21,20,51,51,55,54,54,51,50,18,21,21,33,22,22,51,50,54,55,21,6,7,17,35,19,34,6,7,33,52,38,2,213,191,211,6,254,246,25,141,20,106,21,6,34,250,183,207,241,253,12,6,172,173,101,159,98,142,165,166,68,134,151,14,2,61,140,10,31,1,17,224,4,221,69,50,47,59,103,35,202,224,254,247,226,105,198,195,32,42,148,65,4,254,153,5,72,164,158,157,165,0,255,255,0,84,0,0,2,86,5,182,2,6,0,44,0,0,255,255,0,2,0,0,6,188,7,96,2,38,1,176,0,0,1,7,2,54,1,16,1,84,0,8,179,1,18,5,38,0,43,53,255,255,0,4,0,0,5,223,6,12,2,38,1,208,0,0,1,7,2,54,0,164,0,0,0,8,179,1,18,17,38,0,43,53,0,1,0,201,254,0,5,25,5,182,0,28,0,66,64,37,7,3,3,4,26,14,14,9,10,20,4,5,29,30,17,23,73,89,17,28,7,2,73,89,11,0,74,89,7,11,11,4,8,5,3,4,18,0,63,63,51,18,57,47,57,43,43,0,24,63,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,34,7,17,35,17,51,17,1,51,1,55,32,0,17,16,0,33,34,38,39,53,22,51,50,18,53,52,36,2,94,140,95,170,170,2,137,205,253,133,26,1,79,1,98,254,217,254,245,82,124,70,122,152,187,200,254,235,2,123,31,253,164,5,182,253,60,2,196,253,84,2,254,187,254,207,254,198,254,164,20,29,152,49,1,13,241,232,253,0,0,1,0,176,254,10,4,33,4,72,0,28,0,66,64,37,4,0,0,1,23,10,16,10,6,7,1,5,29,30,14,20,70,89,14,27,4,28,71,89,7,26,70,89,4,7,7,1,5,2,15,1,21,0,63,63,51,18,57,47,57,43,43,0,24,63,43,17,18,1,23,57,17,51,17,51,17,51,49,48,33,35,17,51,17,1,51,1,4,18,17,20,6,6,35,34,39,53,22,22,51,50,54,53,52,38,35,34,7,1,84,164,164,1,227,183,254,55,1,0,252,110,204,133,136,95,46,108,71,135,152,187,190,82,92,4,72,253,250,2,6,254,30,4,254,228,254,245,177,252,132,60,145,25,38,217,200,211,207,24,0,1,0,0,254,131,5,145,5,182,0,23,0,57,64,31,3,0,5,4,1,1,5,14,3,24,25,22,7,73,89,22,3,12,17,74,89,12,18,5,0,73,89,5,18,3,34,0,63,63,43,0,24,63,43,0,24,63,43,17,18,1,23,57,17,51,17,51,51,49,48,37,51,3,35,19,35,17,33,7,2,2,6,39,34,39,53,22,51,50,54,54,18,19,33,4,217,184,143,197,156,170,254,37,31,61,93,152,126,74,59,54,59,53,79,61,93,56,3,18,154,253,233,1,125,5,31,240,254,33,254,69,174,2,25,143,26,87,215,2,89,1,184,0,0,1,0,16,254,135,4,143,4,70,0,20,0,57,64,31,3,0,5,4,1,1,5,13,3,21,22,19,7,70,89,19,15,11,16,71,89,11,21,5,0,70,89,5,21,3,34,0,63,63,43,0,24,63,43,0,24,63,43,17,18,1,23,57,17,51,17,51,51,49,48,37,51,3,35,19,35,17,33,2,2,6,35,34,39,53,22,51,50,18,19,33,3,223,176,129,172,125,166,254,181,28,94,152,118,58,28,22,28,113,137,34,2,129,143,253,248,1,121,3,184,254,152,254,100,192,10,127,6,1,217,1,246,0,0,1,0,201,254,0,5,31,5,182,0,21,0,61,64,32,18,14,14,15,19,11,11,0,0,6,15,3,22,23,18,13,73,89,18,18,15,20,16,3,15,18,3,9,73,89,3,28,0,63,43,0,24,63,63,51,18,57,47,43,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,37,16,0,33,34,38,39,53,22,51,32,17,17,33,17,35,17,51,17,33,17,51,5,31,254,230,254,251,82,122,77,123,135,1,140,252,254,170,170,3,2,170,150,254,194,254,168,19,30,150,49,1,247,2,35,253,80,5,182,253,146,2,110,0,1,0,176,254,10,4,98,4,72,0,21,0,71,64,39,15,11,11,12,16,8,8,19,19,2,12,3,22,23,15,10,70,89,15,15,31,15,2,11,3,15,15,12,17,13,15,12,21,0,5,70,89,0,27,0,63,43,0,24,63,63,51,18,57,47,95,94,93,43,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,34,39,53,22,51,50,54,53,17,33,17,35,17,51,17,33,17,51,17,16,2,2,211,132,93,111,102,125,118,253,156,166,166,2,100,168,207,254,10,58,149,61,198,207,1,189,254,18,4,72,254,53,1,203,251,235,254,244,254,227,0,1,0,201,254,131,5,215,5,182,0,15,0,68,64,36,12,8,8,9,13,3,0,5,4,1,1,5,9,3,16,17,12,7,73,89,12,12,5,14,10,3,9,18,5,0,73,89,5,18,3,34,0,63,63,43,0,24,63,63,51,18,57,47,43,17,18,1,23,57,17,51,17,51,51,51,17,51,17,51,49,48,37,51,3,35,19,35,17,33,17,35,17,51,17,33,17,51,5,31,184,145,197,158,170,252,254,170,170,3,2,170,154,253,233,1,125,2,176,253,80,5,182,253,146,2,110,0,0,1,0,176,254,135,5,18,4,70,0,15,0,68,64,36,1,13,13,14,8,5,2,10,9,6,6,10,14,3,16,17,1,12,70,89,1,1,10,3,15,15,14,21,10,5,70,89,10,21,8,34,0,63,63,43,0,24,63,63,51,18,57,47,43,17,18,1,23,57,17,51,17,51,51,51,17,51,17,51,49,48,1,17,33,17,51,17,51,3,35,19,35,17,33,17,35,17,1,86,2,102,166,176,129,172,125,166,253,154,166,4,70,254,55,1,201,252,73,253,248,1,121,1,238,254,18,4,70,0,0,1,0,170,254,131,4,199,5,182,0,23,0,61,64,32,15,12,2,3,21,5,5,0,0,3,12,3,24,25,18,9,73,89,18,18,1,22,13,3,3,34,1,4,73,89,1,18,0,63,43,0,24,63,63,51,18,57,47,43,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,33,35,17,35,17,51,17,6,6,35,34,38,53,17,51,17,20,22,51,50,54,55,17,51,4,199,170,162,162,149,198,106,207,223,170,127,143,97,177,169,170,254,131,2,23,1,194,53,39,190,179,2,69,253,207,121,116,29,55,2,202,0,1,0,156,254,133,4,45,4,72,0,22,0,61,64,32,1,21,11,12,6,14,14,9,9,12,21,3,23,24,3,18,70,89,3,3,10,7,22,15,12,34,10,13,70,89,10,21,0,63,43,0,24,63,63,51,18,57,47,43,17,18,1,23,57,17,51,17,51,17,51,17,51,49,48,1,17,20,51,50,54,55,17,51,17,35,17,35,17,51,17,6,6,35,34,38,53,17,1,66,219,91,166,105,166,149,166,149,105,179,113,164,186,4,72,254,112,192,56,67,1,213,251,184,254,133,2,10,1,97,72,59,172,147,1,156,0,1,0,201,254,131,7,41,5,182,0,24,0,72,64,37,9,6,6,7,17,14,12,19,18,15,15,19,7,3,25,26,23,22,2,11,2,19,8,19,14,73,89,19,18,17,34,12,8,3,0,7,18,0,63,51,63,51,63,63,43,17,18,0,57,57,17,51,51,17,18,1,23,57,17,51,17,51,51,51,17,51,17,51,49,48,33,1,35,23,22,21,17,35,17,33,1,51,1,51,17,51,3,35,19,35,17,52,55,35,1,3,80,254,16,8,7,7,157,1,0,1,209,8,1,209,254,184,143,199,158,170,14,8,254,12,5,16,127,192,47,252,94,5,182,251,74,4,182,250,228,253,233,1,125,3,174,132,220,250,242,0,0,1,0,176,254,135,5,223,4,70,0,24,0,63,64,32,19,20,8,5,10,9,6,6,10,20,3,25,26,11,18,0,18,15,3,21,15,20,21,10,5,70,89,10,15,21,8,34,0,63,63,51,43,0,24,63,63,51,18,57,57,17,51,17,18,1,23,57,17,51,17,51,51,17,51,49,48,37,55,55,1,51,17,51,3,35,19,35,17,7,7,1,35,1,38,39,17,35,17,51,1,22,2,233,31,43,1,41,211,176,129,172,125,147,20,58,254,229,139,254,229,53,20,148,203,1,41,45,160,93,118,2,211,252,73,253,248,1,121,3,137,58,153,253,74,2,184,134,75,252,119,4,70,253,45,110,255,255,0,84,0,0,2,86,5,182,2,6,0,44,0,0,255,255,0,0,0,0,5,16,7,94,2,38,0,36,0,0,1,7,2,54,0,57,1,82,0,8,179,2,15,5,38,0,43,53,255,255,0,94,255,236,3,205,6,12,2,38,0,68,0,0,1,6,2,54,232,0,0,8,179,2,37,17,38,0,43,53,255,255,0,0,0,0,5,16,7,37,2,38,0,36,0,0,1,7,0,106,0,61,1,82,0,10,180,3,2,36,5,38,0,43,53,53,255,255,0,94,255,236,3,205,5,211,2,38,0,68,0,0,1,6,0,106,243,0,0,10,180,3,2,58,17,38,0,43,53,53,255,255,255,254,0,0,6,129,5,182,2,6,0,136,0,0,255,255,0,94,255,236,6,115,4,92,2,6,0,168,0,0,255,255,0,201,0,0,3,248,7,94,2,38,0,40,0,0,1,7,2,54,0,16,1,82,0,8,179,1,12,5,38,0,43,53,255,255,0,115,255,236,4,18,6,12,2,38,0,72,0,0,1,6,2,54,12,0,0,8,179,2,27,17,38,0,43,53,0,2,0,117,255,236,5,88,5,205,0,18,0,25,0,61,64,32,23,14,16,22,22,9,9,2,14,3,26,27,15,23,73,89,15,15,12,6,12,19,73,89,12,19,6,0,73,89,6,4,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,34,7,53,54,54,51,32,0,17,16,0,33,32,17,53,33,2,0,3,50,18,55,33,16,22,2,152,227,226,115,210,134,1,75,1,111,254,166,254,203,253,172,4,47,17,254,249,195,210,249,16,252,135,204,5,53,76,158,38,32,254,113,254,155,254,162,254,113,2,235,70,1,10,1,14,251,78,1,13,247,254,248,252,0,0,2,0,102,255,236,4,6,4,92,0,20,0,27,0,59,64,31,25,9,24,11,3,3,17,9,3,28,29,10,25,70,89,10,10,6,0,6,21,70,89,6,22,0,14,70,89,0,16,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,51,17,51,49,48,1,50,0,17,16,0,35,34,2,53,53,33,38,38,35,34,6,7,53,54,54,19,50,54,55,33,20,22,1,250,245,1,23,254,253,218,208,243,2,244,5,179,166,98,165,95,89,162,154,133,154,12,253,195,141,4,92,254,212,254,251,254,248,254,201,1,12,225,105,204,187,33,41,147,40,34,252,27,165,156,157,164,0,255,255,0,117,255,236,5,88,7,37,2,38,2,225,0,0,1,7,0,106,0,147,1,82,0,10,180,3,2,47,5,38,0,43,53,53,255,255,0,102,255,236,4,6,5,211,2,38,2,226,0,0,1,6,0,106,234,0,0,10,180,3,2,49,17,38,0,43,53,53,255,255,0,2,0,0,6,188,7,37,2,38,1,176,0,0,1,7,0,106,1,16,1,82,0,10,180,2,1,39,5,38,0,43,53,53,255,255,0,4,0,0,5,223,5,211,2,38,1,208,0,0,1,7,0,106,0,162,0,0,0,10,180,2,1,39,17,38,0,43,53,53,255,255,0,74,255,236,4,53,7,37,2,38,1,177,0,0,1,7,0,106,255,243,1,82,0,10,180,2,1,62,5,38,0,43,53,53,255,255,0,68,255,236,3,127,5,211,2,38,1,209,0,0,1,6,0,106,148,0,0,10,180,2,1,56,17,38,0,43,53,53,0,1,0,74,255,236,4,55,5,182,0,25,0,64,64,35,0,19,21,25,15,3,3,25,19,22,8,5,26,27,25,22,23,22,73,89,0,18,74,89,0,0,6,23,3,6,12,74,89,6,19,0,63,43,0,24,63,18,57,47,43,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,49,48,1,4,4,21,20,4,33,32,39,53,22,22,51,50,54,53,52,38,35,35,53,1,33,53,33,21,1,252,1,23,1,36,254,205,254,234,254,255,163,96,222,106,199,202,225,223,140,1,238,253,78,3,135,3,63,9,211,193,206,232,79,158,46,50,153,144,134,138,141,1,222,153,139,0,0,1,0,27,254,20,3,166,4,72,0,25,0,64,64,35,0,19,21,25,15,4,4,25,19,22,9,5,26,27,25,22,23,22,70,89,0,18,71,89,0,0,7,23,15,7,12,70,89,7,27,0,63,43,0,24,63,18,57,47,43,43,17,0,51,17,18,1,23,57,17,51,17,51,17,51,49,48,1,30,2,21,20,0,35,34,39,53,22,51,50,54,53,52,38,35,35,53,1,33,53,33,21,1,172,149,230,127,254,216,239,234,138,183,200,161,197,214,202,121,1,197,253,137,3,56,1,207,7,114,202,136,222,254,238,70,154,86,190,160,164,170,114,1,254,142,123,0,255,255,0,203,0,0,5,82,6,180,2,38,1,178,0,0,1,7,1,77,0,180,1,82,0,8,179,1,19,5,38,0,43,53,255,255,0,176,0,0,4,98,5,98,2,38,1,210,0,0,1,6,1,77,49,0,0,8,179,1,17,17,38,0,43,53,255,255,0,203,0,0,5,82,7,37,2,38,1,178,0,0,1,7,0,106,0,190,1,82,0,10,180,2,1,37,5,38,0,43,53,53,255,255,0,176,0,0,4,98,5,211,2,38,1,210,0,0,1,6,0,106,61,0,0,10,180,2,1,35,17,38,0,43,53,53,255,255,0,125,255,236,5,190,7,37,2,38,0,50,0,0,1,7,0,106,0,209,1,82,0,10,180,3,2,45,5,38,0,43,53,53,255,255,0,115,255,236,4,98,5,211,2,38,0,82,0,0,1,6,0,106,29,0,0,10,180,3,2,46,17,38,0,43,53,53,255,255,0,125,255,236,5,190,5,205,2,6,2,126,0,0,255,255,0,115,255,236,4,98,4,92,2,6,2,127,0,0,255,255,0,125,255,236,5,190,7,37,2,38,2,126,0,0,1,7,0,106,0,209,1,82,0,10,180,4,3,47,5,38,0,43,53,53,255,255,0,115,255,236,4,98,5,211,2,38,2,127,0,0,1,6,0,106,27,0,0,10,180,4,3,48,17,38,0,43,53,53,255,255,0,61,255,236,4,137,7,37,2,38,1,199,0,0,1,7,0,106,255,237,1,82,0,10,180,2,1,48,5,38,0,43,53,53,255,255,0,57,255,236,3,125,5,211,2,38,1,231,0,0,1,6,0,106,142,0,0,10,180,2,1,48,17,38,0,43,53,53,255,255,0,27,255,236,4,248,6,180,2,38,1,189,0,0,1,7,1,77,0,47,1,82,0,8,179,1,26,5,38,0,43,53,255,255,0,2,254,20,4,6,5,98,2,38,0,92,0,0,1,6,1,77,173,0,0,8,179,1,25,17,38,0,43,53,255,255,0,27,255,236,4,248,7,37,2,38,1,189,0,0,1,7,0,106,0,59,1,82,0,10,180,2,1,44,5,38,0,43,53,53,255,255,0,2,254,20,4,6,5,211,2,38,0,92,0,0,1,6,0,106,183,0,0,10,180,2,1,43,17,38,0,43,53,53,255,255,0,27,255,236,4,248,7,115,2,38,1,189,0,0,1,7,1,83,0,141,1,82,0,10,180,2,1,42,5,38,0,43,53,53,255,255,0,2,254,20,4,6,6,33,2,38,0,92,0,0,1,6,1,83,4,0,0,10,180,2,1,41,17,38,0,43,53,53,255,255,0,170,0,0,4,199,7,37,2,38,1,193,0,0,1,7,0,106,0,106,1,82,0,10,180,2,1,41,5,38,0,43,53,53,255,255,0,156,0,0,4,45,5,211,2,38,1,225,0,0,1,6,0,106,23,0,0,10,180,2,1,40,17,38,0,43,53,53,0,1,0,201,254,131,4,8,5,182,0,9,0,45,64,24,4,9,6,7,1,7,9,3,10,11,9,4,73,89,9,18,7,34,0,3,73,89,0,3,0,63,43,0,24,63,63,43,17,18,1,23,57,17,51,17,51,49,48,19,33,21,33,17,51,17,35,17,35,201,3,63,253,107,161,161,170,5,182,153,251,125,253,233,1,125,0,1,0,176,254,135,3,66,4,70,0,9,0,45,64,24,4,9,6,7,1,7,9,3,10,11,9,4,70,89,9,21,7,34,0,3,70,89,0,15,0,63,43,0,24,63,63,43,17,18,1,23,57,17,51,17,51,49,48,19,33,21,33,17,51,17,35,17,35,176,2,146,254,20,150,166,150,4,70,140,252,213,253,248,1,121,255,255,0,201,0,0,6,10,7,37,2,38,1,197,0,0,1,7,0,106,1,27,1,82,0,10,180,4,3,45,5,38,0,43,53,53,255,255,0,176,0,0,5,121,5,211,2,38,1,229,0,0,1,7,0,106,0,197,0,0,0,10,180,4,3,44,17,38,0,43,53,53,255,255,0,47,254,117,4,8,5,182,2,38,2,155,0,0,0,7,3,128,0,147,0,0,255,255,0,18,254,117,3,66,4,72,2,38,2,156,0,0,0,6,3,129,117,0,255,255,0,8,254,117,4,201,5,182,0,38,0,59,0,0,0,7,3,128,3,88,0,0,255,255,0,39,254,117,4,52,4,72,0,38,0,91,0,0,0,7,3,129,2,195,0,0,0,1,0,6,0,0,4,150,5,182,0,17,0,59,64,34,15,2,17,1,16,13,4,10,7,9,6,11,12,19,18,10,17,0,17,73,89,7,13,15,4,0,0,2,12,15,18,5,2,3,0,63,51,63,51,18,57,47,57,18,57,51,43,17,0,51,17,18,1,23,57,49,48,19,33,1,51,1,1,51,1,33,21,33,1,35,1,1,35,1,33,127,1,51,254,119,188,1,107,1,108,183,254,112,1,60,254,186,1,189,193,254,119,254,112,182,1,191,254,186,3,84,2,98,253,187,2,69,253,158,152,253,68,2,131,253,125,2,188,0,0,1,0,39,0,0,4,8,4,72,0,17,0,59,64,34,15,2,17,1,16,13,4,10,7,9,6,11,12,19,18,10,17,0,17,71,89,7,13,15,4,0,0,2,12,15,21,5,2,15,0,63,51,63,51,18,57,47,57,18,57,51,43,17,0,51,17,18,1,23,57,49,48,19,33,1,51,1,1,51,1,33,21,33,1,35,1,1,35,1,33,117,1,18,254,180,189,1,33,1,32,187,254,178,1,24,254,226,1,104,188,254,205,254,202,188,1,102,254,232,2,119,1,209,254,92,1,164,254,47,129,254,10,1,188,254,68,1,246,0,0,2,0,131,0,0,4,55,5,182,0,10,0,19,0,52,64,26,4,19,19,7,15,0,7,0,21,20,3,12,73,89,3,3,8,5,8,18,74,89,8,18,5,3,0,63,63,43,17,18,0,57,24,47,43,17,18,1,57,57,17,51,17,51,17,51,49,48,19,52,36,33,51,17,51,17,33,32,36,1,35,34,6,21,20,22,51,51,131,1,36,1,32,198,170,254,99,254,245,254,244,3,10,186,222,194,182,203,217,1,164,212,206,2,112,250,74,213,1,219,124,142,143,132,255,255,0,115,255,236,4,55,6,20,2,6,0,71,0,0,0,2,0,131,255,236,6,119,5,182,0,25,0,35,0,70,64,36,30,3,24,10,10,7,35,15,18,18,35,3,3,36,37,6,27,73,89,24,6,16,6,16,0,8,3,12,32,0,32,74,89,21,0,19,0,63,50,43,17,0,51,24,63,18,57,57,47,47,57,43,17,18,1,23,57,17,51,17,51,51,18,57,17,51,49,48,5,34,38,53,52,36,33,51,17,51,17,20,51,50,54,53,17,51,17,20,6,35,34,38,39,6,19,35,34,6,21,16,33,50,54,53,2,78,226,233,1,42,1,34,145,170,230,100,121,170,207,184,118,159,51,113,41,151,212,194,1,33,127,141,18,209,208,217,222,2,112,251,183,236,123,110,1,230,254,24,174,206,82,90,170,2,192,139,150,254,244,119,112,0,0,2,0,115,255,236,6,135,6,20,0,34,0,46,0,81,64,41,44,19,12,32,32,29,26,38,3,6,6,38,19,3,47,48,30,0,13,16,26,22,4,4,16,22,22,42,70,89,22,16,0,35,16,35,70,89,9,16,22,0,63,51,43,17,0,51,24,63,43,17,18,0,57,24,47,18,57,18,57,63,17,18,1,23,57,17,51,17,51,51,51,18,57,17,51,49,48,37,50,54,53,17,51,17,20,6,35,34,38,39,35,6,6,35,34,2,17,16,18,51,50,22,23,51,38,38,53,17,51,17,20,22,33,50,54,53,53,52,38,35,32,17,20,22,4,254,118,107,168,200,189,129,158,43,8,75,185,129,208,232,231,207,106,159,63,12,2,8,166,109,253,185,162,146,148,162,254,226,139,119,132,136,1,57,254,189,200,197,91,113,113,91,1,41,1,12,1,12,1,47,77,85,17,112,27,1,190,251,140,160,137,185,206,35,231,201,254,78,214,210,0,1,0,78,255,236,6,129,5,203,0,42,0,75,64,40,6,19,40,25,31,34,34,22,25,19,1,13,6,43,44,23,2,1,2,1,74,89,2,32,2,32,37,16,37,28,73,89,37,19,16,9,74,89,16,4,0,63,43,0,24,63,43,17,18,0,57,57,24,47,47,43,17,18,0,57,17,18,1,23,57,17,51,17,51,17,51,49,48,1,35,53,51,50,54,53,52,38,35,34,6,7,39,54,54,51,50,22,21,20,6,7,21,4,19,22,22,51,50,54,53,17,51,17,20,6,35,34,38,39,38,38,1,174,201,193,192,213,154,128,103,177,103,84,93,246,130,214,245,178,156,1,98,6,2,108,124,119,112,168,210,189,202,208,2,2,205,2,172,143,147,132,108,127,55,69,114,72,80,196,167,141,183,26,8,51,254,209,150,127,121,135,1,205,254,41,198,199,209,200,150,145,0,1,0,80,255,236,5,197,4,92,0,37,0,75,64,40,18,30,10,36,2,5,5,36,30,32,14,24,6,38,39,33,15,14,15,14,70,89,15,3,15,3,8,27,27,20,70,89,27,16,8,0,70,89,8,22,0,63,43,0,24,63,43,17,18,0,57,57,24,47,47,43,17,18,0,57,17,18,1,23,57,17,51,17,51,17,51,49,48,37,50,17,17,51,17,20,6,35,32,3,38,38,35,35,53,51,32,53,52,35,34,6,7,39,54,54,51,50,22,21,20,7,21,22,22,23,22,4,66,221,166,187,196,254,134,16,5,141,148,140,111,1,33,242,75,135,77,57,85,163,104,184,211,192,99,123,5,9,119,1,12,1,57,254,189,202,195,1,77,99,88,141,172,162,36,34,135,40,36,155,134,184,57,8,20,122,106,211,0,1,0,78,254,131,4,209,5,203,0,35,0,74,64,40,25,26,30,35,33,32,32,22,26,35,4,16,6,36,37,26,5,4,5,4,74,89,5,5,35,19,35,30,73,89,35,18,33,34,19,12,74,89,19,4,0,63,43,0,24,63,63,43,17,18,0,57,24,47,43,17,18,0,57,17,18,1,23,57,17,51,17,51,17,51,49,48,1,52,38,35,35,53,51,50,54,53,52,38,35,34,6,7,39,54,54,51,50,22,21,20,6,7,21,22,22,21,17,51,17,35,17,35,3,131,229,226,217,209,205,225,164,135,105,195,105,84,97,254,132,220,253,189,163,184,195,172,162,172,1,156,133,139,143,147,132,107,128,58,66,114,74,78,196,167,140,183,25,8,25,179,148,254,254,253,233,1,125,0,0,1,0,80,254,135,4,16,4,90,0,30,0,74,64,40,7,18,25,30,28,27,27,21,30,18,3,13,6,32,31,21,4,3,4,3,70,89,4,4,30,15,30,25,70,89,30,21,28,34,15,10,70,89,15,16,0,63,43,0,24,63,63,43,17,18,0,57,24,47,43,17,18,0,57,17,18,1,23,57,17,51,17,51,17,51,49,48,1,52,33,35,53,51,32,53,52,38,35,34,7,39,54,51,50,22,21,20,7,21,22,22,21,21,51,17,35,17,35,2,213,254,203,150,117,1,57,133,119,153,150,61,161,203,191,213,203,126,112,157,166,149,1,45,199,141,172,82,80,70,135,74,154,135,182,57,11,37,137,102,156,253,248,1,121,0,0,1,0,0,255,233,7,33,5,182,0,35,0,58,64,29,20,35,26,29,29,35,9,3,36,37,27,27,7,18,18,1,73,89,18,3,23,12,7,12,74,89,32,7,19,0,63,51,43,17,0,51,24,63,43,17,18,0,57,24,47,17,18,1,23,57,17,51,17,51,49,48,1,33,7,2,2,6,6,35,34,39,53,22,51,50,54,54,18,18,19,33,17,20,22,51,50,54,53,17,51,17,20,6,35,34,38,53,4,12,254,72,31,43,76,83,130,100,69,64,50,63,49,64,44,56,74,55,2,239,111,115,112,113,168,205,188,196,200,5,31,240,254,174,254,68,210,102,25,143,26,62,104,1,2,1,233,1,174,251,207,137,121,121,135,1,205,254,41,193,204,204,197,0,0,1,0,16,255,236,6,41,4,70,0,29,0,58,64,29,0,14,5,8,8,14,22,3,31,30,6,6,20,28,28,16,70,89,28,15,3,25,20,25,71,89,11,20,22,0,63,51,43,17,0,51,24,63,43,17,18,0,57,24,47,17,18,1,23,57,17,51,17,51,49,48,1,20,22,51,50,17,17,51,17,20,6,35,34,38,53,17,33,2,2,6,35,34,39,53,22,51,50,18,19,33,3,207,104,119,213,166,187,190,188,203,254,197,28,94,152,118,58,28,22,28,113,137,34,2,113,1,131,137,131,1,10,1,59,254,189,202,195,196,203,2,61,254,152,254,100,192,10,127,6,1,217,1,246,0,0,1,0,201,255,236,7,94,5,182,0,25,0,67,64,35,23,0,15,6,9,22,18,18,19,9,15,19,3,26,27,22,17,73,89,22,7,22,7,19,24,20,3,19,18,12,3,73,89,12,19,0,63,43,0,24,63,63,51,18,57,57,47,47,43,17,18,1,23,57,17,51,17,51,17,51,17,51,51,49,48,1,20,22,51,50,54,53,17,51,17,20,6,35,34,38,53,17,33,17,35,17,51,17,33,17,51,4,246,110,115,112,113,166,200,191,195,200,253,39,170,170,2,217,170,1,133,137,121,121,135,1,205,254,41,191,206,203,198,1,51,253,80,5,182,253,146,2,110,0,0,1,0,176,255,236,6,168,4,72,0,24,0,77,64,42,5,2,19,10,13,1,22,22,23,13,19,23,3,25,26,1,21,70,89,15,1,31,1,2,11,3,1,11,1,11,23,3,24,15,23,21,16,8,70,89,16,22,0,63,43,0,24,63,63,51,18,57,57,47,47,95,94,93,43,17,18,1,23,57,17,51,17,51,17,51,17,51,51,49,48,1,17,33,17,51,17,20,22,51,50,17,17,51,17,20,6,35,34,38,53,53,33,17,35,17,1,86,2,80,166,106,119,213,166,187,192,186,205,253,176,166,4,72,254,53,1,203,253,61,137,133,1,12,1,57,254,189,202,195,198,201,115,254,18,4,72,0,0,1,0,125,255,236,5,154,5,203,0,28,0,58,64,31,22,8,27,2,2,15,28,8,4,29,30,0,28,73,89,0,0,5,12,12,19,73,89,12,4,5,25,73,89,5,19,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,49,48,1,33,21,16,0,33,32,0,17,52,18,36,51,50,22,23,7,38,38,35,32,0,17,16,0,51,32,17,33,3,102,2,52,254,204,254,201,254,187,254,147,179,1,85,234,120,237,83,66,90,214,87,254,245,254,222,1,11,247,1,180,254,127,2,240,86,254,161,254,177,1,145,1,96,229,1,84,181,49,39,148,38,46,254,197,254,227,254,227,254,195,1,215,0,0,1,0,115,255,236,4,176,4,92,0,25,0,58,64,31,18,7,24,2,2,12,25,7,4,26,27,0,25,70,89,0,0,4,10,10,15,70,89,10,16,4,21,70,89,4,22,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,49,48,1,33,21,16,33,32,0,17,16,0,33,50,23,7,38,35,34,6,21,20,22,51,50,54,53,33,2,178,1,254,253,254,254,238,254,215,1,67,1,33,212,175,59,168,166,205,229,204,197,169,175,254,170,2,63,67,253,240,1,39,1,16,1,14,1,43,80,131,74,222,210,207,223,160,157,0,0,1,0,16,255,236,4,244,5,182,0,20,0,57,64,29,5,19,10,13,13,3,19,0,4,21,22,11,11,16,1,16,8,73,89,16,19,4,0,1,0,73,89,1,3,0,63,43,17,0,51,24,63,43,17,18,0,57,24,47,17,18,1,23,57,17,51,17,51,49,48,19,53,33,21,33,17,20,22,51,50,17,17,51,17,20,6,35,34,38,53,17,16,4,60,254,47,119,114,232,168,211,189,198,205,5,29,153,153,252,104,137,123,1,0,1,207,254,41,192,205,206,195,3,160,0,0,1,0,41,255,236,4,135,4,70,0,20,0,54,64,28,2,16,7,10,10,0,16,18,4,21,22,1,18,19,18,70,89,8,8,13,19,15,13,5,70,89,13,22,0,63,43,0,24,63,18,57,47,43,17,0,51,17,18,1,23,57,17,51,17,51,49,48,1,33,17,20,22,51,50,17,17,51,17,20,6,35,34,38,53,17,33,53,33,3,129,254,166,109,118,215,166,189,192,192,201,254,168,3,88,3,186,253,201,137,131,1,4,1,65,254,189,202,195,203,196,2,63,140,0,1,0,111,255,236,4,88,5,203,0,38,0,71,64,38,21,32,12,0,36,35,5,27,17,35,0,32,6,39,40,35,15,18,15,18,74,89,15,15,29,3,29,24,74,89,29,19,3,9,74,89,3,4,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,0,57,17,18,1,23,57,17,51,17,51,17,51,49,48,19,52,36,51,32,23,7,38,38,35,34,6,21,20,22,51,51,21,35,34,6,21,20,22,51,50,55,21,6,33,32,36,53,52,54,55,53,38,38,156,1,8,225,1,2,209,94,105,181,101,140,159,209,200,217,213,222,232,202,183,233,199,175,254,251,254,244,254,219,207,188,170,180,4,92,169,198,144,120,68,52,123,114,128,147,141,142,138,142,141,92,158,77,220,197,151,192,22,8,25,178,255,255,0,90,255,236,3,135,4,92,2,6,1,130,0,0,255,255,0,0,254,117,5,107,5,182,0,38,1,181,0,0,0,7,3,128,3,250,0,0,255,255,0,16,254,117,4,115,4,72,2,38,1,213,0,0,0,7,3,129,3,2,0,0,255,255,0,0,254,160,5,16,5,188,2,38,0,36,0,0,0,7,2,103,4,233,0,0,255,255,0,94,254,160,3,205,4,90,2,38,0,68,0,0,0,7,2,103,4,121,0,0,255,255,0,0,0,0,5,16,7,225,2,38,0,36,0,0,1,7,2,102,4,252,1,82,0,8,179,2,19,5,38,0,43,53,255,255,0,94,255,236,3,205,6,143,2,38,0,68,0,0,1,7,2,102,4,166,0,0,0,8,179,2,41,17,38,0,43,53,255,255,0,0,0,0,5,16,7,209,2,38,0,36,0,0,1,7,3,119,4,229,1,82,0,10,180,3,2,21,5,38,0,43,53,53,255,255,0,94,255,236,4,65,6,127,2,38,0,68,0,0,1,7,3,119,4,147,0,0,0,10,180,3,2,43,17,38,0,43,53,53,255,255,0,0,0,0,5,16,7,209,2,38,0,36,0,0,1,7,3,120,4,221,1,82,0,10,180,3,2,21,5,38,0,43,53,53,255,255,0,45,255,236,3,205,6,127,2,38,0,68,0,0,1,7,3,120,4,147,0,0,0,10,180,3,2,43,17,38,0,43,53,53,255,255,0,0,0,0,5,16,8,74,2,38,0,36,0,0,1,7,3,121,4,217,1,82,0,10,180,3,2,21,5,38,0,43,53,53,255,255,0,94,255,236,4,23,6,248,2,38,0,68,0,0,1,7,3,121,4,156,0,0,0,10,180,3,2,43,17,38,0,43,53,53,255,255,0,0,0,0,5,16,8,98,2,38,0,36,0,0,1,7,3,122,4,229,1,82,0,10,180,3,2,45,5,38,0,43,53,53,255,255,0,94,255,236,3,205,7,16,2,38,0,68,0,0,1,7,3,122,4,145,0,0,0,10,180,3,2,67,17,38,0,43,53,53,255,255,0,0,254,160,5,16,7,115,2,38,0,36,0,0,0,39,2,103,4,233,0,0,1,7,1,75,0,43,1,82,0,8,179,3,41,5,38,0,43,53,255,255,0,94,254,160,3,205,6,33,2,38,0,68,0,0,0,39,2,103,4,121,0,0,1,6,1,75,212,0,0,8,179,3,62,17,38,0,43,53,255,255,0,0,0,0,5,16,8,19,2,38,0,36,0,0,1,7,3,123,4,236,1,82,0,10,180,3,2,23,5,38,0,43,53,53,255,255,0,94,255,236,3,205,6,193,2,38,0,68,0,0,1,7,3,123,4,154,0,0,0,10,180,3,2,45,17,38,0,43,53,53,255,255,0,0,0,0,5,16,8,19,2,38,0,36,0,0,1,7,3,124,4,233,1,82,0,10,180,3,2,23,5,38,0,43,53,53,255,255,0,94,255,236,3,205,6,193,2,38,0,68,0,0,1,7,3,124,4,152,0,0,0,10,180,3,2,45,17,38,0,43,53,53,255,255,0,0,0,0,5,16,8,88,2,38,0,36,0,0,1,7,3,125,4,233,1,82,0,10,180,3,2,33,5,38,0,43,53,53,255,255,0,94,255,236,3,205,7,6,2,38,0,68,0,0,1,7,3,125,4,160,0,0,0,10,180,3,2,55,17,38,0,43,53,53,255,255,0,0,0,0,5,16,8,94,2,38,0,36,0,0,1,7,3,126,4,227,1,82,0,10,180,3,2,39,5,38,0,43,53,53,255,255,0,94,255,236,3,205,7,12,2,38,0,68,0,0,1,7,3,126,4,152,0,0,0,10,180,3,2,61,17,38,0,43,53,53,255,255,0,0,254,160,5,16,7,73,2,38,0,36,0,0,0,39,1,78,0,45,1,100,1,7,2,103,4,233,0,0,0,8,179,2,15,5,38,0,43,53,255,255,0,94,254,160,3,205,5,229,2,38,0,68,0,0,0,38,1,78,216,0,1,7,2,103,4,121,0,0,0,8,179,2,37,17,38,0,43,53,255,255,0,201,254,160,3,248,5,182,2,38,0,40,0,0,0,7,2,103,4,193,0,0,255,255,0,115,254,160,4,18,4,92,2,38,0,72,0,0,0,7,2,103,4,184,0,0,255,255,0,201,0,0,3,248,7,225,2,38,0,40,0,0,1,7,2,102,4,209,1,82,0,8,179,1,16,5,38,0,43,53,255,255,0,115,255,236,4,18,6,143,2,38,0,72,0,0,1,7,2,102,4,201,0,0,0,8,179,2,31,17,38,0,43,53,255,255,0,201,0,0,3,248,7,47,2,38,0,40,0,0,1,7,1,82,255,228,1,82,0,8,179,1,21,5,38,0,43,53,255,255,0,115,255,236,4,18,5,221,2,38,0,72,0,0,1,6,1,82,208,0,0,8,179,2,36,17,38,0,43,53,255,255,0,201,0,0,4,111,7,209,2,38,0,40,0,0,1,7,3,119,4,193,1,82,0,10,180,2,1,18,5,38,0,43,53,53,255,255,0,115,255,236,4,92,6,127,2,38,0,72,0,0,1,7,3,119,4,174,0,0,0,10,180,3,2,33,17,38,0,43,53,53,255,255,0,93,0,0,3,248,7,209,2,38,0,40,0,0,1,7,3,120,4,195,1,82,0,10,180,2,1,18,5,38,0,43,53,53,255,255,0,74,255,236,4,18,6,127,2,38,0,72,0,0,1,7,3,120,4,176,0,0,0,10,180,3,2,33,17,38,0,43,53,53,255,255,0,201,0,0,4,57,8,74,2,38,0,40,0,0,1,7,3,121,4,190,1,82,0,10,180,2,1,18,5,38,0,43,53,53,255,255,0,115,255,236,4,29,6,248,2,38,0,72,0,0,1,7,3,121,4,162,0,0,0,10,180,3,2,33,17,38,0,43,53,53,255,255,0,201,0,0,3,248,8,98,2,38,0,40,0,0,1,7,3,122,4,184,1,82,0,10,180,2,1,42,5,38,0,43,53,53,255,255,0,115,255,236,4,18,7,16,2,38,0,72,0,0,1,7,3,122,4,162,0,0,0,10,180,3,2,57,17,38,0,43,53,53,255,255,0,201,254,160,3,248,7,115,2,38,0,40,0,0,0,39,2,103,4,190,0,0,1,7,1,75,0,2,1,82,0,8,179,2,37,5,38,0,43,53,255,255,0,115,254,160,4,18,6,33,2,38,0,72,0,0,0,39,2,103,4,176,0,0,1,6,1,75,241,0,0,8,179,3,52,17,38,0,43,53,255,255,0,84,0,0,2,86,7,225,2,38,0,44,0,0,1,7,2,102,3,201,1,82,0,8,179,1,16,5,38,0,43,53,255,255,0,123,0,0,1,230,6,143,2,38,0,243,0,0,1,7,2,102,3,115,0,0,0,8,179,1,8,17,38,0,43,53,255,255,0,84,254,160,2,86,5,182,2,38,0,44,0,0,0,7,2,103,3,180,0,0,255,255,0,157,254,160,1,102,5,223,2,38,0,76,0,0,0,7,2,103,3,98,0,0,255,255,0,125,254,160,5,190,5,205,2,38,0,50,0,0,0,7,2,103,5,127,0,0,255,255,0,115,254,160,4,98,4,92,2,38,0,82,0,0,0,7,2,103,4,201,0,0,255,255,0,125,255,236,5,190,7,225,2,38,0,50,0,0,1,7,2,102,5,143,1,82,0,8,179,2,28,5,38,0,43,53,255,255,0,115,255,236,4,98,6,143,2,38,0,82,0,0,1,7,2,102,4,217,0,0,0,8,179,2,29,17,38,0,43,53,255,255,0,125,255,236,5,190,7,209,2,38,0,50,0,0,1,7,3,119,5,125,1,82,0,10,180,3,2,30,5,38,0,43,53,53,255,255,0,115,255,236,4,117,6,127,2,38,0,82,0,0,1,7,3,119,4,199,0,0,0,10,180,3,2,31,17,38,0,43,53,53,255,255,0,125,255,236,5,190,7,209,2,38,0,50,0,0,1,7,3,120,5,125,1,82,0,10,180,3,2,30,5,38,0,43,53,53,255,255,0,97,255,236,4,98,6,127,2,38,0,82,0,0,1,7,3,120,4,199,0,0,0,10,180,3,2,31,17,38,0,43,53,53,255,255,0,125,255,236,5,190,8,74,2,38,0,50,0,0,1,7,3,121,5,123,1,82,0,10,180,3,2,30,5,38,0,43,53,53,255,255,0,115,255,236,4,98,6,248,2,38,0,82,0,0,1,7,3,121,4,199,0,0,0,10,180,3,2,31,17,38,0,43,53,53,255,255,0,125,255,236,5,190,8,98,2,38,0,50,0,0,1,7,3,122,5,121,1,82,0,10,180,3,2,54,5,38,0,43,53,53,255,255,0,115,255,236,4,98,7,16,2,38,0,82,0,0,1,7,3,122,4,197,0,0,0,10,180,3,2,55,17,38,0,43,53,53,255,255,0,125,254,160,5,190,7,115,2,38,0,50,0,0,0,39,2,103,5,127,0,0,1,7,1,75,0,193,1,82,0,8,179,3,49,5,38,0,43,53,255,255,0,115,254,160,4,98,6,33,2,38,0,82,0,0,0,39,2,103,4,205,0,0,1,6,1,75,14,0,0,8,179,3,50,17,38,0,43,53,255,255,0,125,255,236,6,100,7,115,2,38,2,95,0,0,1,7,0,118,1,43,1,82,0,8,179,2,43,5,38,0,43,53,255,255,0,115,255,236,5,25,6,33,2,38,2,96,0,0,1,6,0,118,109,0,0,8,179,2,43,17,38,0,43,53,255,255,0,125,255,236,6,100,7,115,2,38,2,95,0,0,1,7,0,67,0,135,1,82,0,8,179,2,35,5,38,0,43,53,255,255,0,115,255,236,5,25,6,33,2,38,2,96,0,0,1,6,0,67,212,0,0,8,179,2,36,17,38,0,43,53,255,255,0,125,255,236,6,100,7,225,2,38,2,95,0,0,1,7,2,102,5,143,1,82,0,8,179,2,38,5,38,0,43,53,255,255,0,115,255,236,5,25,6,143,2,38,2,96,0,0,1,7,2,102,4,217,0,0,0,8,179,2,39,17,38,0,43,53,255,255,0,125,255,236,6,100,7,47,2,38,2,95,0,0,1,7,1,82,0,160,1,82,0,8,179,2,43,5,38,0,43,53,255,255,0,115,255,236,5,25,5,221,2,38,2,96,0,0,1,6,1,82,245,0,0,8,179,2,35,17,38,0,43,53,255,255,0,125,254,160,6,100,6,20,2,38,2,95,0,0,0,7,2,103,5,123,0,0,255,255,0,115,254,160,5,25,4,240,2,38,2,96,0,0,0,7,2,103,4,201,0,0,255,255,0,186,254,160,5,25,5,182,2,38,0,56,0,0,0,7,2,103,5,74,0,0,255,255,0,164,254,160,4,57,4,72,2,38,0,88,0,0,0,7,2,103,4,184,0,0,255,255,0,186,255,236,5,25,7,225,2,38,0,56,0,0,1,7,2,102,5,84,1,82,0,8,179,1,22,5,38,0,43,53,255,255,0,164,255,236,4,57,6,143,2,38,0,88,0,0,1,7,2,102,4,213,0,0,0,8,179,1,25,17,38,0,43,53,255,255,0,186,255,236,6,123,7,115,2,38,2,97,0,0,1,7,0,118,0,238,1,82,0,8,179,1,37,5,38,0,43,53,255,255,0,164,255,236,5,150,6,33,2,38,2,98,0,0,1,6,0,118,121,0,0,8,179,1,38,17,38,0,43,53,255,255,0,186,255,236,6,123,7,115,2,38,2,97,0,0,1,7,0,67,0,90,1,82,0,8,179,1,29,5,38,0,43,53,255,255,0,164,255,236,5,150,6,33,2,38,2,98,0,0,1,6,0,67,187,0,0,8,179,1,31,17,38,0,43,53,255,255,0,186,255,236,6,123,7,225,2,38,2,97,0,0,1,7,2,102,5,96,1,82,0,8,179,1,32,5,38,0,43,53,255,255,0,164,255,236,5,150,6,143,2,38,2,98,0,0,1,7,2,102,4,219,0,0,0,8,179,1,34,17,38,0,43,53,255,255,0,186,255,236,6,123,7,47,2,38,2,97,0,0,1,7,1,82,0,127,1,82,0,8,179,1,37,5,38,0,43,53,255,255,0,164,255,236,5,150,5,221,2,38,2,98,0,0,1,6,1,82,255,0,0,8,179,1,30,17,38,0,43,53,255,255,0,186,254,160,6,123,6,20,2,38,2,97,0,0,0,7,2,103,5,76,0,0,255,255,0,164,254,160,5,150,4,242,2,38,2,98,0,0,0,7,2,103,4,178,0,0,255,255,0,0,254,160,4,123,5,182,2,38,0,60,0,0,0,7,2,103,4,156,0,0,255,255,0,2,254,20,4,6,4,72,2,38,0,92,0,0,0,7,2,103,5,158,255,253,255,255,0,0,0,0,4,123,7,225,2,38,0,60,0,0,1,7,2,102,4,170,1,82,0,8,179,1,13,5,38,0,43,53,255,255,0,2,254,20,4,6,6,143,2,38,0,92,0,0,1,7,2,102,4,106,0,0,0,8,179,1,26,17,38,0,43,53,255,255,0,0,0,0,4,123,7,47,2,38,0,60,0,0,1,7,1,82,255,194,1,82,0,8,179,1,18,5,38,0,43,53,255,255,0,2,254,20,4,6,5,221,2,38,0,92,0,0,1,6,1,82,138,0,0,8,179,1,31,17,38,0,43,53,255,255,0,115,254,197,4,211,6,20,2,38,0,211,0,0,0,7,0,66,0,180,0,0,0,2,251,229,4,217,254,180,6,33,0,9,0,19,0,30,64,12,4,10,14,14,0,0,21,15,6,128,11,1,0,47,51,26,205,50,17,1,51,17,51,18,57,57,49,48,1,35,38,38,39,53,51,22,22,23,5,35,38,38,39,53,51,22,22,23,254,180,96,52,177,37,186,28,99,49,254,156,96,56,174,37,187,28,99,49,4,217,42,202,63,21,61,174,68,25,44,200,63,21,61,174,68,0,0,2,252,113,4,217,255,174,6,127,0,13,0,21,0,40,64,17,21,0,6,17,17,23,3,6,10,21,10,21,10,17,192,6,1,0,47,51,26,204,57,57,47,47,17,18,57,17,1,51,17,51,57,57,49,48,1,35,38,39,6,7,35,53,55,54,55,51,22,23,39,54,55,51,21,6,7,35,254,211,94,112,99,114,97,94,53,112,52,176,66,151,80,73,54,172,83,120,96,4,217,75,91,101,65,25,60,123,77,94,166,194,91,112,21,110,96,0,0,2,251,154,4,217,254,215,6,127,0,13,0,21,0,42,64,18,6,14,17,17,0,0,23,3,6,10,15,10,15,10,19,192,6,1,0,47,51,26,204,57,57,47,47,17,18,57,17,1,51,17,51,18,57,57,49,48,1,35,38,39,6,7,35,53,55,54,55,51,22,23,37,35,38,39,53,51,22,23,254,215,94,97,114,106,105,94,53,112,52,176,66,151,253,238,95,120,84,172,52,75,4,217,65,101,96,70,23,60,123,77,94,166,172,94,112,21,108,97,0,2,252,113,4,217,255,123,6,248,0,13,0,31,0,52,64,24,16,19,0,19,27,3,6,6,22,14,14,33,3,10,6,18,10,18,10,25,30,192,6,1,0,47,51,26,204,50,57,57,47,47,17,18,57,17,1,51,17,51,51,18,23,57,17,51,49,48,1,35,38,39,6,7,35,53,55,54,55,51,22,23,19,20,7,7,35,39,54,54,53,52,38,35,34,7,53,54,51,50,254,211,94,112,99,114,97,94,53,112,52,176,66,151,168,127,6,80,10,57,63,57,43,46,26,25,55,195,4,217,75,91,101,65,25,60,123,77,94,166,1,123,103,29,81,131,9,32,38,37,25,6,80,6,0,2,252,104,4,217,254,231,7,16,0,23,0,37,0,58,64,27,24,30,9,9,21,21,39,27,30,34,30,25,17,9,0,5,12,34,0,12,12,0,34,3,21,192,25,0,47,26,204,23,57,47,47,47,17,51,16,196,51,17,51,17,18,57,17,1,51,17,51,18,57,57,49,48,1,34,46,2,35,34,6,7,35,54,54,51,50,30,2,51,50,54,55,51,6,6,19,35,38,39,6,7,35,53,55,54,55,51,22,23,254,45,37,71,67,63,28,40,42,14,91,13,101,75,37,73,67,62,27,40,42,12,90,11,99,94,94,97,114,106,105,94,53,112,52,176,66,151,6,53,30,37,30,49,50,106,113,30,36,30,49,49,104,115,254,164,65,101,96,70,23,60,123,77,94,166,0,2,252,121,4,217,254,199,6,193,0,7,0,20,0,36,64,15,7,4,10,10,18,18,22,3,64,7,17,10,128,14,8,0,47,51,26,221,50,212,26,205,17,1,51,17,51,18,57,57,49,48,1,54,55,51,21,6,7,35,19,32,3,51,22,22,51,50,54,55,51,6,6,253,94,80,49,172,86,119,96,62,254,236,15,102,9,76,106,98,86,8,105,11,149,5,244,104,101,21,114,93,254,252,1,4,72,57,65,64,120,140,0,2,252,121,4,217,254,199,6,193,0,7,0,20,0,36,64,15,7,4,10,10,18,18,22,4,64,1,17,10,128,14,8,0,47,51,26,221,50,212,26,205,17,1,51,17,51,18,57,57,49,48,1,35,38,39,53,51,22,23,3,32,3,51,22,22,51,50,54,55,51,6,6,253,209,94,119,86,172,52,75,53,254,236,15,102,9,76,106,98,86,8,105,11,149,5,221,93,114,21,108,97,254,229,1,4,72,57,65,64,120,140,0,2,252,121,4,217,254,199,7,6,0,17,0,30,0,46,64,21,8,0,0,5,13,3,20,20,28,28,32,11,16,4,4,24,24,27,20,128,18,0,47,26,205,50,51,17,57,47,196,50,17,1,51,17,51,18,23,57,17,51,49,48,1,20,7,7,35,39,54,54,53,52,38,35,34,7,53,54,51,50,3,32,3,51,22,22,51,50,54,55,51,6,6,254,49,127,6,82,10,57,66,57,44,37,36,22,62,192,149,254,236,15,102,9,76,106,98,86,8,105,11,149,6,121,100,29,41,90,9,32,37,37,26,6,78,8,253,211,1,4,72,57,65,64,120,140,0,2,252,104,4,217,254,231,7,12,0,23,0,36,0,48,64,21,26,34,9,9,21,38,5,12,12,30,30,24,21,64,17,9,0,33,26,128,24,0,47,26,221,50,214,196,51,26,205,17,51,17,57,47,51,17,1,51,50,17,57,57,49,48,1,34,46,2,35,34,6,7,35,54,54,51,50,30,2,51,50,54,55,51,6,6,3,32,3,51,22,22,51,50,54,55,51,6,6,254,45,37,71,67,63,28,40,42,14,91,13,100,76,37,73,67,62,27,40,42,12,90,11,99,221,254,236,15,102,9,76,106,98,86,8,105,11,149,6,51,30,36,30,48,50,104,113,30,36,30,49,49,103,114,254,166,1,4,72,57,65,64,120,140,0,1,0,49,254,66,1,109,0,0,0,15,0,26,64,11,0,5,5,2,10,3,16,17,13,8,3,0,47,204,50,17,18,1,23,57,17,51,49,48,23,52,39,51,22,21,20,6,35,34,39,53,22,51,50,54,223,139,123,158,102,99,65,50,32,54,37,51,238,103,135,120,132,91,103,16,108,10,48,0,0,1,0,25,254,117,1,113,0,154,0,11,0,24,64,9,10,0,6,0,12,13,8,3,0,0,47,204,50,17,18,1,57,57,17,51,49,48,37,17,16,35,34,39,53,22,51,50,53,17,1,113,228,56,60,41,61,94,154,254,223,254,252,24,140,19,100,1,48,0,0,1,0,25,254,117,1,113,0,143,0,11,0,24,64,9,10,0,6,0,12,13,8,3,0,0,47,204,50,17,18,1,57,57,17,51,49,48,37,17,16,35,34,39,53,22,51,50,53,17,1,113,228,56,60,41,61,94,143,254,234,254,252,24,140,19,100,1,37,0,255,255,0,52,0,0,2,67,5,182,0,7,0,20,255,120,0,0,0,2,0,115,255,236,4,23,4,115,0,11,0,23,0,40,64,20,12,6,18,0,6,0,24,25,9,21,75,89,9,38,3,15,77,89,3,25,0,63,43,0,24,63,43,17,18,1,57,57,17,51,17,51,49,48,1,16,2,35,34,2,17,16,18,51,50,18,1,20,22,51,50,54,53,52,38,35,34,6,4,23,247,222,217,246,249,218,216,249,253,4,155,142,141,158,158,143,141,154,2,47,254,245,254,200,1,53,1,14,1,15,1,53,254,203,254,241,208,232,234,206,204,236,233,0,0,1,0,45,0,0,2,55,4,94,0,10,0,38,64,17,9,1,1,0,8,0,11,12,7,4,7,4,1,9,16,1,24,0,63,63,18,57,57,47,47,17,18,1,57,57,17,51,17,51,49,48,33,35,17,52,55,6,7,7,39,1,51,2,55,161,8,67,62,150,90,1,127,139,2,49,239,140,67,48,112,114,1,35,0,1,0,41,0,0,3,215,4,115,0,25,0,44,64,24,7,19,0,19,23,14,1,5,26,27,16,10,75,89,16,38,24,23,1,23,76,89,1,24,0,63,43,17,0,51,24,63,43,17,18,1,23,57,17,51,49,48,33,33,53,1,62,2,53,52,38,35,34,6,7,39,54,51,50,22,21,20,6,7,5,23,33,3,215,252,82,1,145,157,113,44,139,119,88,156,92,90,192,242,198,218,130,186,254,185,2,2,190,133,1,47,119,104,83,65,87,103,61,74,109,168,168,150,115,187,128,231,6,0,0,1,0,94,254,149,4,27,4,116,0,39,0,71,64,38,3,4,27,0,19,7,7,0,4,22,34,13,6,40,41,4,23,22,23,22,75,89,23,23,10,37,37,30,75,89,37,38,10,17,75,89,10,37,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,0,57,17,18,1,23,57,17,51,17,51,17,51,49,48,1,20,6,7,21,22,22,21,20,4,33,34,38,39,53,22,22,51,32,17,16,33,35,53,51,50,54,53,52,38,35,34,6,7,39,54,54,51,50,22,3,238,157,144,176,170,254,222,254,245,116,193,91,95,215,96,1,123,254,94,144,146,171,200,147,126,96,170,109,84,90,235,130,213,236,3,7,140,178,30,8,22,180,146,209,225,35,44,158,47,49,1,41,1,10,143,151,134,107,122,52,70,112,71,81,195,0,0,2,0,23,254,168,4,102,4,94,0,10,0,18,0,66,64,33,18,5,9,2,2,11,7,3,0,3,5,3,19,20,1,5,18,5,77,89,9,18,14,15,15,7,18,18,3,7,16,3,36,0,63,63,18,57,47,18,57,17,51,17,51,43,17,0,51,17,18,1,23,57,17,51,51,51,17,51,17,51,49,48,37,35,17,35,17,33,53,1,51,17,51,33,17,52,55,35,6,7,1,4,102,217,168,253,50,2,190,184,217,254,134,12,10,41,68,254,57,27,254,141,1,115,125,3,198,252,68,1,92,218,222,86,92,253,158,0,0,1,0,133,254,149,4,29,4,95,0,26,0,58,64,31,15,3,25,20,8,20,23,3,4,28,27,0,17,75,89,0,0,6,21,21,24,76,89,21,16,6,12,75,89,6,37,0,63,43,0,24,63,43,17,18,0,57,24,47,43,17,18,1,23,57,17,51,17,51,49,48,1,50,4,21,20,0,35,34,39,53,22,22,51,50,54,53,16,33,34,7,39,19,33,21,33,3,54,2,45,231,1,9,254,223,254,247,130,70,208,101,176,195,254,137,94,160,86,55,2,215,253,183,37,115,2,38,229,199,227,254,254,79,160,45,51,166,157,1,50,29,55,2,172,153,254,73,23,0,255,255,0,117,255,236,4,47,5,203,2,6,0,25,0,0,0,1,0,94,254,169,4,43,4,95,0,6,0,31,64,16,1,5,5,0,2,3,7,8,3,2,76,89,3,16,0,36,0,63,63,43,17,18,1,23,57,17,51,49,48,1,1,33,53,33,21,1,1,29,2,94,252,227,3,205,253,170,254,169,5,29,153,133,250,207,255,255,0,104,255,236,4,41,5,203,2,6,0,27,0,0,0,2,0,106,254,149,4,37,4,116,0,23,0,37,0,65,64,34,27,17,34,10,10,0,0,4,17,3,38,39,14,30,77,89,10,20,14,14,2,20,20,24,75,89,20,38,2,7,77,89,2,37,0,63,43,0,24,63,43,17,18,0,57,24,47,18,57,43,17,18,1,23,57,17,51,17,51,17,51,49,48,1,16,33,34,39,53,22,51,50,18,19,35,6,6,35,34,38,53,52,18,51,50,22,18,1,34,6,21,20,22,51,50,54,54,53,52,38,38,4,37,253,104,116,68,80,102,240,245,11,12,55,182,114,194,228,255,208,149,223,120,254,20,143,156,144,147,91,153,88,82,147,1,239,252,166,20,143,26,1,41,1,51,83,87,232,208,228,1,8,153,254,219,1,48,184,164,144,165,74,128,70,105,178,102,0,255,255,0,29,0,0,5,196,6,31,0,39,0,73,2,182,0,0,0,6,0,73,0,0,0,2,0,92,2,221,5,170,5,193,0,34,0,51,0,90,64,46,44,48,48,46,42,38,38,40,10,0,28,17,5,17,22,0,40,46,6,53,52,43,49,36,3,45,47,45,41,47,35,35,40,28,10,20,8,3,3,40,41,25,20,20,41,3,0,63,51,47,51,16,205,50,47,51,18,57,57,17,51,17,51,17,51,17,18,23,57,17,18,1,23,57,17,51,17,51,17,51,17,51,17,51,17,51,49,48,1,20,6,35,34,39,53,22,51,50,53,52,38,38,39,38,38,53,52,54,51,50,23,7,38,35,34,6,21,20,22,22,23,22,22,1,3,35,23,17,35,17,51,19,19,51,17,35,17,55,35,3,2,72,149,124,145,74,106,119,148,23,54,85,120,81,142,110,125,92,34,100,83,60,75,18,43,95,129,80,1,166,201,8,6,119,188,195,203,180,127,6,8,211,3,172,98,109,33,108,40,100,33,40,33,31,44,91,76,86,105,39,99,37,46,40,29,36,28,36,50,90,254,236,2,47,129,254,82,2,209,253,209,2,47,253,47,1,164,137,253,211,255,255,0,18,254,20,4,90,5,182,2,38,0,55,0,0,0,7,0,122,1,63,0,0,255,255,0,31,254,20,2,168,5,70,2,38,0,87,0,0,0,7,0,122,0,197,0,0,0,2,0,113,254,20,4,55,4,92,0,12,0,42,0,71,64,38,10,21,26,3,42,42,30,30,36,21,3,43,44,33,39,70,89,36,33,27,28,15,26,15,24,18,24,7,70,89,24,16,18,0,70,89,18,22,0,63,43,0,24,63,43,17,18,0,57,57,24,63,63,51,43,17,18,1,23,57,17,51,17,51,51,17,51,49,48,37,50,54,55,53,52,38,35,34,6,21,20,22,5,52,55,35,6,35,34,2,17,16,18,51,50,23,51,55,51,17,20,6,35,34,39,53,22,22,51,50,54,53,2,76,170,151,4,158,171,144,153,151,1,219,9,11,112,230,217,239,243,211,223,123,11,24,131,236,249,242,149,75,210,118,142,165,119,183,202,43,226,204,224,208,209,217,107,36,99,167,1,45,1,10,1,8,1,49,166,146,251,164,236,236,70,158,42,46,169,146,255,255,0,113,254,20,4,55,6,33,2,38,3,145,0,0,1,6,1,75,6,0,0,8,179,2,57,17,38,0,43,53,255,255,0,113,254,20,4,55,5,229,2,38,3,145,0,0,1,6,1,78,12,0,0,8,179,2,43,17,38,0,43,53,255,255,0,113,254,20,4,55,5,223,2,38,3,145,0,0,1,7,1,79,1,86,0,0,0,8,179,2,52,17,38,0,43,53,255,255,0,113,254,20,4,55,6,33,2,38,3,145,0,0,1,6,2,58,119,0,0,8,179,2,47,17,38,0,43,53,0,1,0,201,0,0,1,115,5,182,0,3,0,17,182,0,4,5,1,3,0,18,0,63,63,17,18,1,57,49,48,51,17,51,17,201,170,5,182,250,74,0,255,255,0,5,0,0,1,142,7,115,2,38,3,150,0,0,1,7,0,67,254,124,1,82,0,8,179,1,5,5,38,0,43,53,255,255,0,179,0,0,2,60,7,115,2,38,3,150,0,0,1,7,0,118,255,42,1,82,0,8,179,1,13,5,38,0,43,53,255,255,255,199,0,0,2,105,7,115,2,38,3,150,0,0,1,7,1,75,254,187,1,82,0,8,179,1,18,5,38,0,43,53,255,255,0,5,0,0,2,56,7,37,2,38,3,150,0,0,1,7,0,106,254,208,1,82,0,10,180,2,1,25,5,38,0,43,53,53,255,255,255,171,0,0,2,147,7,47,2,38,3,150,0,0,1,7,1,82,254,163,1,82,0,8,179,1,13,5,38,0,43,53,255,255,255,243,0,0,2,75,6,180,2,38,3,150,0,0,1,7,1,77,254,198,1,82,0,8,179,1,7,5,38,0,43,53,255,255,255,231,0,0,2,83,7,55,2,38,3,150,0,0,1,7,1,78,254,194,1,82,0,8,179,1,4,5,38,0,43,53,255,255,0,86,254,66,1,162,5,182,2,38,3,150,0,0,0,6,1,81,49,0,255,255,0,187,0,0,1,127,7,49,2,38,3,150,0,0,1,7,1,79,0,25,1,82,0,8,179,1,13,5,38,0,43,53,255,255,0,201,254,127,3,163,5,182,0,38,3,150,0,0,0,7,0,45,2,59,0,0,255,255,255,228,0,0,2,29,6,10,0,39,3,150,0,170,0,0,1,7,1,84,253,232,255,151,0,7,178,1,8,0,0,63,53,0,255,255,0,201,0,0,1,115,5,182,2,6,3,150,0,0,255,255,0,5,0,0,2,56,7,37,2,38,3,150,0,0,1,7,0,106,254,208,1,82,0,10,180,2,1,25,5,38,0,43,53,53,255,255,0,201,0,0,1,115,5,182,2,6,3,150,0,0,255,255,0,5,0,0,2,56,7,37,2,38,3,150,0,0,1,7,0,106,254,208,1,82,0,10,180,2,1,25,5,38,0,43,53,53,255,255,0,201,0,0,1,115,5,182,2,6,3,150,0,0,255,255,0,201,0,0,1,115,5,182,2,6,3,150,0,0,255,255,0,153,0,0,2,4,7,225,2,38,3,150,0,0,1,7,2,102,3,145,1,82,0,8,179,1,8,5,38,0,43,53,255,255,0,184,254,160,1,127,5,182,2,38,3,150,0,0,0,7,2,103,3,125,0,0,0,0,0,1,0,0,182,50,0,1,73,6,128,0,0,14,54,36,0,5,0,36,255,113,0,5,0,55,0,41,0,5,0,57,0,41,0,5,0,58,0,41,0,5,0,60,0,20,0,5,0,68,255,174,0,5,0,70,255,133,0,5,0,71,255,133,0,5,0,72,255,133,0,5,0,74,255,195,0,5,0,80,255,195,0,5,0,81,255,195,0,5,0,82,255,133,0,5,0,83,255,195,0,5,0,84,255,133,0,5,0,85,255,195,0,5,0,86,255,195,0,5,0,88,255,195,0,5,0,130,255,113,0,5,0,131,255,113,0,5,0,132,255,113,0,5,0,133,255,113,0,5,0,134,255,113,0,5,0,135,255,113,0,5,0,159,0,20,0,5,0,162,255,133,0,5,0,163,255,174,0,5,0,164,255,174,0,5,0,165,255,174,0,5,0,166,255,174,0,5,0,167,255,174,0,5,0,168,255,174,0,5,0,169,255,133,0,5,0,170,255,133,0,5,0,171,255,133,0,5,0,172,255,133,0,5,0,173,255,133,0,5,0,180,255,133,0,5,0,181,255,133,0,5,0,182,255,133,0,5,0,183,255,133,0,5,0,184,255,133,0,5,0,186,255,133,0,5,0,187,255,195,0,5,0,188,255,195,0,5,0,189,255,195,0,5,0,190,255,195,0,5,0,194,255,113,0,5,0,195,255,174,0,5,0,196,255,113,0,5,0,197,255,174,0,5,0,198,255,113,0,5,0,199,255,174,0,5,0,201,255,133,0,5,0,203,255,133,0,5,0,205,255,133,0,5,0,207,255,133,0,5,0,209,255,133,0,5,0,211,255,133,0,5,0,213,255,133,0,5,0,215,255,133,0,5,0,217,255,133,0,5,0,219,255,133,0,5,0,221,255,133,0,5,0,223,255,195,0,5,0,225,255,195,0,5,0,227,255,195,0,5,0,229,255,195,0,5,0,250,255,195,0,5,1,6,255,195,0,5,1,8,255,195,0,5,1,13,255,195,0,5,1,15,255,133,0,5,1,17,255,133,0,5,1,19,255,133,0,5,1,21,255,133,0,5,1,23,255,195,0,5,1,25,255,195,0,5,1,29,255,195,0,5,1,33,255,195,0,5,1,36,0,41,0,5,1,38,0,41,0,5,1,43,255,195,0,5,1,45,255,195,0,5,1,47,255,195,0,5,1,49,255,195,0,5,1,51,255,195,0,5,1,53,255,195,0,5,1,54,0,41,0,5,1,56,0,20,0,5,1,58,0,20,0,5,1,67,255,113,0,5,1,68,255,174,0,5,1,70,255,174,0,5,1,72,255,133,0,5,1,74,255,195,0,5,1,86,255,113,0,5,1,95,255,113,0,5,1,98,255,113,0,5,1,105,255,113,0,5,1,121,255,174,0,5,1,122,255,215,0,5,1,123,255,215,0,5,1,126,255,174,0,5,1,129,255,195,0,5,1,130,255,215,0,5,1,131,255,215,0,5,1,132,255,215,0,5,1,135,255,215,0,5,1,137,255,215,0,5,1,140,255,174,0,5,1,142,255,195,0,5,1,143,255,174,0,5,1,144,255,174,0,5,1,147,255,174,0,5,1,153,255,174,0,5,1,164,255,133,0,5,1,170,255,113,0,5,1,174,255,133,0,5,1,181,255,133,0,5,1,202,255,215,0,5,1,206,255,113,0,5,1,207,255,133,0,5,1,213,255,113,0,5,1,216,255,133,0,5,1,219,255,133,0,5,1,222,255,133,0,5,1,234,255,133,0,5,1,237,255,133,0,5,1,238,255,195,0,5,1,242,255,113,0,5,1,250,0,41,0,5,1,252,0,41,0,5,1,254,0,41,0,5,2,0,0,20,0,5,2,87,255,195,0,5,2,88,255,113,0,5,2,89,255,174,0,5,2,96,255,133,0,5,2,98,255,195,0,5,2,106,255,133,0,5,2,114,255,113,0,5,2,115,255,113,0,5,2,125,255,236,0,5,2,127,255,133,0,5,2,133,255,133,0,5,2,135,255,133,0,5,2,137,255,133,0,5,2,141,255,133,0,5,2,178,255,133,0,5,2,180,255,133,0,5,2,206,255,133,0,5,2,207,255,113,0,5,2,217,255,113,0,5,2,218,255,215,0,5,2,219,255,113,0,5,2,220,255,215,0,5,2,221,255,113,0,5,2,222,255,215,0,5,2,224,255,133,0,5,2,226,255,215,0,5,2,228,255,215,0,5,2,240,255,133,0,5,2,242,255,133,0,5,2,244,255,133,0,5,3,9,255,113,0,5,3,10,255,133,0,5,3,11,255,113,0,5,3,12,255,133,0,5,3,17,255,133,0,5,3,18,255,113,0,5,3,22,255,133,0,5,3,26,255,133,0,5,3,27,255,133,0,5,3,28,255,113,0,5,3,29,255,113,0,5,3,30,255,174,0,5,3,31,255,113,0,5,3,32,255,174,0,5,3,33,255,113,0,5,3,34,255,174,0,5,3,35,255,113,0,5,3,37,255,113,0,5,3,38,255,174,0,5,3,39,255,113,0,5,3,40,255,174,0,5,3,41,255,113,0,5,3,42,255,174,0,5,3,43,255,113,0,5,3,44,255,174,0,5,3,45,255,113,0,5,3,46,255,174,0,5,3,47,255,113,0,5,3,48,255,174,0,5,3,49,255,113,0,5,3,50,255,174,0,5,3,51,255,113,0,5,3,52,255,174,0,5,3,54,255,133,0,5,3,56,255,133,0,5,3,58,255,133,0,5,3,60,255,133,0,5,3,64,255,133,0,5,3,66,255,133,0,5,3,68,255,133,0,5,3,74,255,133,0,5,3,76,255,133,0,5,3,78,255,133,0,5,3,82,255,133,0,5,3,84,255,133,0,5,3,86,255,133,0,5,3,88,255,133,0,5,3,90,255,133,0,5,3,92,255,133,0,5,3,94,255,133,0,5,3,96,255,133,0,5,3,98,255,195,0,5,3,100,255,195,0,5,3,102,255,195,0,5,3,104,255,195,0,5,3,106,255,195,0,5,3,108,255,195,0,5,3,110,255,195,0,5,3,111,0,20,0,5,3,113,0,20,0,5,3,115,0,20,0,5,3,143,0,41,0,10,0,36,255,113,0,10,0,55,0,41,0,10,0,57,0,41,0,10,0,58,0,41,0,10,0,60,0,20,0,10,0,68,255,174,0,10,0,70,255,133,0,10,0,71,255,133,0,10,0,72,255,133,0,10,0,74,255,195,0,10,0,80,255,195,0,10,0,81,255,195,0,10,0,82,255,133,0,10,0,83,255,195,0,10,0,84,255,133,0,10,0,85,255,195,0,10,0,86,255,195,0,10,0,88,255,195,0,10,0,130,255,113,0,10,0,131,255,113,0,10,0,132,255,113,0,10,0,133,255,113,0,10,0,134,255,113,0,10,0,135,255,113,0,10,0,159,0,20,0,10,0,162,255,133,0,10,0,163,255,174,0,10,0,164,255,174,0,10,0,165,255,174,0,10,0,166,255,174,0,10,0,167,255,174,0,10,0,168,255,174,0,10,0,169,255,133,0,10,0,170,255,133,0,10,0,171,255,133,0,10,0,172,255,133,0,10,0,173,255,133,0,10,0,180,255,133,0,10,0,181,255,133,0,10,0,182,255,133,0,10,0,183,255,133,0,10,0,184,255,133,0,10,0,186,255,133,0,10,0,187,255,195,0,10,0,188,255,195,0,10,0,189,255,195,0,10,0,190,255,195,0,10,0,194,255,113,0,10,0,195,255,174,0,10,0,196,255,113,0,10,0,197,255,174,0,10,0,198,255,113,0,10,0,199,255,174,0,10,0,201,255,133,0,10,0,203,255,133,0,10,0,205,255,133,0,10,0,207,255,133,0,10,0,209,255,133,0,10,0,211,255,133,0,10,0,213,255,133,0,10,0,215,255,133,0,10,0,217,255,133,0,10,0,219,255,133,0,10,0,221,255,133,0,10,0,223,255,195,0,10,0,225,255,195,0,10,0,227,255,195,0,10,0,229,255,195,0,10,0,250,255,195,0,10,1,6,255,195,0,10,1,8,255,195,0,10,1,13,255,195,0,10,1,15,255,133,0,10,1,17,255,133,0,10,1,19,255,133,0,10,1,21,255,133,0,10,1,23,255,195,0,10,1,25,255,195,0,10,1,29,255,195,0,10,1,33,255,195,0,10,1,36,0,41,0,10,1,38,0,41,0,10,1,43,255,195,0,10,1,45,255,195,0,10,1,47,255,195,0,10,1,49,255,195,0,10,1,51,255,195,0,10,1,53,255,195,0,10,1,54,0,41,0,10,1,56,0,20,0,10,1,58,0,20,0,10,1,67,255,113,0,10,1,68,255,174,0,10,1,70,255,174,0,10,1,72,255,133,0,10,1,74,255,195,0,10,1,86,255,113,0,10,1,95,255,113,0,10,1,98,255,113,0,10,1,105,255,113,0,10,1,121,255,174,0,10,1,122,255,215,0,10,1,123,255,215,0,10,1,126,255,174,0,10,1,129,255,195,0,10,1,130,255,215,0,10,1,131,255,215,0,10,1,132,255,215,0,10,1,135,255,215,0,10,1,137,255,215,0,10,1,140,255,174,0,10,1,142,255,195,0,10,1,143,255,174,0,10,1,144,255,174,0,10,1,147,255,174,0,10,1,153,255,174,0,10,1,164,255,133,0,10,1,170,255,113,0,10,1,174,255,133,0,10,1,181,255,133,0,10,1,202,255,215,0,10,1,206,255,113,0,10,1,207,255,133,0,10,1,213,255,113,0,10,1,216,255,133,0,10,1,219,255,133,0,10,1,222,255,133,0,10,1,234,255,133,0,10,1,237,255,133,0,10,1,238,255,195,0,10,1,242,255,113,0,10,1,250,0,41,0,10,1,252,0,41,0,10,1,254,0,41,0,10,2,0,0,20,0,10,2,87,255,195,0,10,2,88,255,113,0,10,2,89,255,174,0,10,2,96,255,133,0,10,2,98,255,195,0,10,2,106,255,133,0,10,2,114,255,113,0,10,2,115,255,113,0,10,2,125,255,236,0,10,2,127,255,133,0,10,2,133,255,133,0,10,2,135,255,133,0,10,2,137,255,133,0,10,2,141,255,133,0,10,2,178,255,133,0,10,2,180,255,133,0,10,2,206,255,133,0,10,2,207,255,113,0,10,2,217,255,113,0,10,2,218,255,215,0,10,2,219,255,113,0,10,2,220,255,215,0,10,2,221,255,113,0,10,2,222,255,215,0,10,2,224,255,133,0,10,2,226,255,215,0,10,2,228,255,215,0,10,2,240,255,133,0,10,2,242,255,133,0,10,2,244,255,133,0,10,3,9,255,113,0,10,3,10,255,133,0,10,3,11,255,113,0,10,3,12,255,133,0,10,3,17,255,133,0,10,3,18,255,113,0,10,3,22,255,133,0,10,3,26,255,133,0,10,3,27,255,133,0,10,3,28,255,113,0,10,3,29,255,113,0,10,3,30,255,174,0,10,3,31,255,113,0,10,3,32,255,174,0,10,3,33,255,113,0,10,3,34,255,174,0,10,3,35,255,113,0,10,3,37,255,113,0,10,3,38,255,174,0,10,3,39,255,113,0,10,3,40,255,174,0,10,3,41,255,113,0,10,3,42,255,174,0,10,3,43,255,113,0,10,3,44,255,174,0,10,3,45,255,113,0,10,3,46,255,174,0,10,3,47,255,113,0,10,3,48,255,174,0,10,3,49,255,113,0,10,3,50,255,174,0,10,3,51,255,113,0,10,3,52,255,174,0,10,3,54,255,133,0,10,3,56,255,133,0,10,3,58,255,133,0,10,3,60,255,133,0,10,3,64,255,133,0,10,3,66,255,133,0,10,3,68,255,133,0,10,3,74,255,133,0,10,3,76,255,133,0,10,3,78,255,133,0,10,3,82,255,133,0,10,3,84,255,133,0,10,3,86,255,133,0,10,3,88,255,133,0,10,3,90,255,133,0,10,3,92,255,133,0,10,3,94,255,133,0,10,3,96,255,133,0,10,3,98,255,195,0,10,3,100,255,195,0,10,3,102,255,195,0,10,3,104,255,195,0,10,3,106,255,195,0,10,3,108,255,195,0,10,3,110,255,195,0,10,3,111,0,20,0,10,3,113,0,20,0,10,3,115,0,20,0,10,3,143,0,41,0,11,0,45,0,184,0,15,0,38,255,154,0,15,0,42,255,154,0,15,0,50,255,154,0,15,0,52,255,154,0,15,0,55,255,113,0,15,0,56,255,215,0,15,0,57,255,133,0,15,0,58,255,133,0,15,0,60,255,133,0,15,0,137,255,154,0,15,0,148,255,154,0,15,0,149,255,154,0,15,0,150,255,154,0,15,0,151,255,154,0,15,0,152,255,154,0,15,0,154,255,154,0,15,0,155,255,215,0,15,0,156,255,215,0,15,0,157,255,215,0,15,0,158,255,215,0,15,0,159,255,133,0,15,0,200,255,154,0,15,0,202,255,154,0,15,0,204,255,154,0,15,0,206,255,154,0,15,0,222,255,154,0,15,0,224,255,154,0,15,0,226,255,154,0,15,0,228,255,154,0,15,1,14,255,154,0,15,1,16,255,154,0,15,1,18,255,154,0,15,1,20,255,154,0,15,1,36,255,113,0,15,1,38,255,113,0,15,1,42,255,215,0,15,1,44,255,215,0,15,1,46,255,215,0,15,1,48,255,215,0,15,1,50,255,215,0,15,1,52,255,215,0,15,1,54,255,133,0,15,1,56,255,133,0,15,1,58,255,133,0,15,1,71,255,154,0,15,1,102,255,174,0,15,1,109,255,174,0,15,1,113,255,113,0,15,1,114,255,133,0,15,1,115,255,154,0,15,1,117,255,133,0,15,1,120,255,133,0,15,1,133,255,215,0,15,1,157,255,113,0,15,1,159,255,154,0,15,1,166,255,113,0,15,1,184,255,154,0,15,1,187,255,154,0,15,1,188,255,113,0,15,1,190,255,174,0,15,1,193,255,92,0,15,1,196,255,113,0,15,1,220,255,154,0,15,1,225,255,133,0,15,1,228,255,154,0,15,1,250,255,133,0,15,1,252,255,133,0,15,1,254,255,133,0,15,2,0,255,133,0,15,2,84,255,133,0,15,2,95,255,154,0,15,2,97,255,215,0,15,2,108,255,154,0,15,2,124,255,92,0,15,2,126,255,154,0,15,2,128,255,133,0,15,2,130,255,133,0,15,2,132,255,154,0,15,2,134,255,154,0,15,2,136,255,154,0,15,2,138,255,154,0,15,2,140,255,154,0,15,2,169,255,113,0,15,2,170,255,154,0,15,2,177,255,154,0,15,2,179,255,154,0,15,2,181,255,113,0,15,2,182,255,154,0,15,2,183,255,133,0,15,2,185,255,133,0,15,2,189,255,113,0,15,2,190,255,154,0,15,2,191,255,92,0,15,2,192,255,133,0,15,2,193,255,92,0,15,2,194,255,133,0,15,2,197,255,133,0,15,2,199,255,133,0,15,2,212,255,92,0,15,2,213,255,133,0,15,2,239,255,154,0,15,2,241,255,154,0,15,2,243,255,154,0,15,2,253,255,92,0,15,2,254,255,133,0,15,3,13,255,133,0,15,3,14,255,154,0,15,3,15,255,133,0,15,3,16,255,154,0,15,3,21,255,154,0,15,3,23,255,113,0,15,3,24,255,154,0,15,3,73,255,154,0,15,3,75,255,154,0,15,3,77,255,154,0,15,3,79,255,154,0,15,3,81,255,154,0,15,3,83,255,154,0,15,3,85,255,154,0,15,3,87,255,154,0,15,3,89,255,154,0,15,3,91,255,154,0,15,3,93,255,154,0,15,3,95,255,154,0,15,3,97,255,215,0,15,3,99,255,215,0,15,3,101,255,215,0,15,3,103,255,215,0,15,3,105,255,215,0,15,3,107,255,215,0,15,3,109,255,215,0,15,3,111,255,133,0,15,3,113,255,133,0,15,3,115,255,133,0,15,3,143,255,113,0,16,0,55,255,174,0,16,1,36,255,174,0,16,1,38,255,174,0,16,1,113,255,174,0,16,1,157,255,174,0,16,1,166,255,174,0,16,1,188,255,174,0,16,1,196,255,174,0,16,1,220,255,215,0,16,1,228,255,215,0,16,2,169,255,174,0,16,2,170,255,215,0,16,2,181,255,174,0,16,2,182,255,215,0,16,2,189,255,174,0,16,2,190,255,215,0,16,3,23,255,174,0,16,3,24,255,215,0,16,3,143,255,174,0,17,0,38,255,154,0,17,0,42,255,154,0,17,0,50,255,154,0,17,0,52,255,154,0,17,0,55,255,113,0,17,0,56,255,215,0,17,0,57,255,133,0,17,0,58,255,133,0,17,0,60,255,133,0,17,0,137,255,154,0,17,0,148,255,154,0,17,0,149,255,154,0,17,0,150,255,154,0,17,0,151,255,154,0,17,0,152,255,154,0,17,0,154,255,154,0,17,0,155,255,215,0,17,0,156,255,215,0,17,0,157,255,215,0,17,0,158,255,215,0,17,0,159,255,133,0,17,0,200,255,154,0,17,0,202,255,154,0,17,0,204,255,154,0,17,0,206,255,154,0,17,0,222,255,154,0,17,0,224,255,154,0,17,0,226,255,154,0,17,0,228,255,154,0,17,1,14,255,154,0,17,1,16,255,154,0,17,1,18,255,154,0,17,1,20,255,154,0,17,1,36,255,113,0,17,1,38,255,113,0,17,1,42,255,215,0,17,1,44,255,215,0,17,1,46,255,215,0,17,1,48,255,215,0,17,1,50,255,215,0,17,1,52,255,215,0,17,1,54,255,133,0,17,1,56,255,133,0,17,1,58,255,133,0,17,1,71,255,154,0,17,1,102,255,174,0,17,1,109,255,174,0,17,1,113,255,113,0,17,1,114,255,133,0,17,1,115,255,154,0,17,1,117,255,133,0,17,1,120,255,133,0,17,1,133,255,215,0,17,1,157,255,113,0,17,1,159,255,154,0,17,1,166,255,113,0,17,1,184,255,154,0,17,1,187,255,154,0,17,1,188,255,113,0,17,1,190,255,174,0,17,1,193,255,92,0,17,1,196,255,113,0,17,1,220,255,154,0,17,1,225,255,133,0,17,1,228,255,154,0,17,1,250,255,133,0,17,1,252,255,133,0,17,1,254,255,133,0,17,2,0,255,133,0,17,2,84,255,133,0,17,2,95,255,154,0,17,2,97,255,215,0,17,2,108,255,154,0,17,2,124,255,92,0,17,2,126,255,154,0,17,2,128,255,133,0,17,2,130,255,133,0,17,2,132,255,154,0,17,2,134,255,154,0,17,2,136,255,154,0,17,2,138,255,154,0,17,2,140,255,154,0,17,2,169,255,113,0,17,2,170,255,154,0,17,2,177,255,154,0,17,2,179,255,154,0,17,2,181,255,113,0,17,2,182,255,154,0,17,2,183,255,133,0,17,2,185,255,133,0,17,2,189,255,113,0,17,2,190,255,154,0,17,2,191,255,92,0,17,2,192,255,133,0,17,2,193,255,92,0,17,2,194,255,133,0,17,2,197,255,133,0,17,2,199,255,133,0,17,2,212,255,92,0,17,2,213,255,133,0,17,2,239,255,154,0,17,2,241,255,154,0,17,2,243,255,154,0,17,2,253,255,92,0,17,2,254,255,133,0,17,3,13,255,133,0,17,3,14,255,154,0,17,3,15,255,133,0,17,3,16,255,154,0,17,3,21,255,154,0,17,3,23,255,113,0,17,3,24,255,154,0,17,3,73,255,154,0,17,3,75,255,154,0,17,3,77,255,154,0,17,3,79,255,154,0,17,3,81,255,154,0,17,3,83,255,154,0,17,3,85,255,154,0,17,3,87,255,154,0,17,3,89,255,154,0,17,3,91,255,154,0,17,3,93,255,154,0,17,3,95,255,154,0,17,3,97,255,215,0,17,3,99,255,215,0,17,3,101,255,215,0,17,3,103,255,215,0,17,3,105,255,215,0,17,3,107,255,215,0,17,3,109,255,215,0,17,3,111,255,133,0,17,3,113,255,133,0,17,3,115,255,133,0,17,3,143,255,113,0,36,0,5,255,113,0,36,0,10,255,113,0,36,0,38,255,215,0,36,0,42,255,215,0,36,0,45,1,10,0,36,0,50,255,215,0,36,0,52,255,215,0,36,0,55,255,113,0,36,0,57,255,174,0,36,0,58,255,174,0,36,0,60,255,133,0,36,0,137,255,215,0,36,0,148,255,215,0,36,0,149,255,215,0,36,0,150,255,215,0,36,0,151,255,215,0,36,0,152,255,215,0,36,0,154,255,215,0,36,0,159,255,133,0,36,0,200,255,215,0,36,0,202,255,215,0,36,0,204,255,215,0,36,0,206,255,215,0,36,0,222,255,215,0,36,0,224,255,215,0,36,0,226,255,215,0,36,0,228,255,215,0,36,1,14,255,215,0,36,1,16,255,215,0,36,1,18,255,215,0,36,1,20,255,215,0,36,1,36,255,113,0,36,1,38,255,113,0,36,1,54,255,174,0,36,1,56,255,133,0,36,1,58,255,133,0,36,1,71,255,215,0,36,1,250,255,174,0,36,1,252,255,174,0,36,1,254,255,174,0,36,2,0,255,133,0,36,2,7,255,113,0,36,2,11,255,113,0,36,2,95,255,215,0,36,3,73,255,215,0,36,3,75,255,215,0,36,3,77,255,215,0,36,3,79,255,215,0,36,3,81,255,215,0,36,3,83,255,215,0,36,3,85,255,215,0,36,3,87,255,215,0,36,3,89,255,215,0,36,3,91,255,215,0,36,3,93,255,215,0,36,3,95,255,215,0,36,3,111,255,133,0,36,3,113,255,133,0,36,3,115,255,133,0,36,3,143,255,113,0,37,0,15,255,174,0,37,0,17,255,174,0,37,0,36,255,215,0,37,0,55,255,195,0,37,0,57,255,236,0,37,0,58,255,236,0,37,0,59,255,215,0,37,0,60,255,236,0,37,0,61,255,236,0,37,0,130,255,215,0,37,0,131,255,215,0,37,0,132,255,215,0,37,0,133,255,215,0,37,0,134,255,215,0,37,0,135,255,215,0,37,0,159,255,236,0,37,0,194,255,215,0,37,0,196,255,215,0,37,0,198,255,215,0,37,1,36,255,195,0,37,1,38,255,195,0,37,1,54,255,236,0,37,1,56,255,236,0,37,1,58,255,236,0,37,1,59,255,236,0,37,1,61,255,236,0,37,1,63,255,236,0,37,1,67,255,215,0,37,1,160,255,236,0,37,1,250,255,236,0,37,1,252,255,236,0,37,1,254,255,236,0,37,2,0,255,236,0,37,2,8,255,174,0,37,2,12,255,174,0,37,2,88,255,215,0,37,3,29,255,215,0,37,3,31,255,215,0,37,3,33,255,215,0,37,3,35,255,215,0,37,3,37,255,215,0,37,3,39,255,215,0,37,3,41,255,215,0,37,3,43,255,215,0,37,3,45,255,215,0,37,3,47,255,215,0,37,3,49,255,215,0,37,3,51,255,215,0,37,3,111,255,236,0,37,3,113,255,236,0,37,3,115,255,236,0,37,3,143,255,195,0,38,0,38,255,215,0,38,0,42,255,215,0,38,0,50,255,215,0,38,0,52,255,215,0,38,0,137,255,215,0,38,0,148,255,215,0,38,0,149,255,215,0,38,0,150,255,215,0,38,0,151,255,215,0,38,0,152,255,215,0,38,0,154,255,215,0,38,0,200,255,215,0,38,0,202,255,215,0,38,0,204,255,215,0,38,0,206,255,215,0,38,0,222,255,215,0,38,0,224,255,215,0,38,0,226,255,215,0,38,0,228,255,215,0,38,1,14,255,215,0,38,1,16,255,215,0,38,1,18,255,215,0,38,1,20,255,215,0,38,1,71,255,215,0,38,2,95,255,215,0,38,3,73,255,215,0,38,3,75,255,215,0,38,3,77,255,215,0,38,3,79,255,215,0,38,3,81,255,215,0,38,3,83,255,215,0,38,3,85,255,215,0,38,3,87,255,215,0,38,3,89,255,215,0,38,3,91,255,215,0,38,3,93,255,215,0,38,3,95,255,215,0,39,0,15,255,174,0,39,0,17,255,174,0,39,0,36,255,215,0,39,0,55,255,195,0,39,0,57,255,236,0,39,0,58,255,236,0,39,0,59,255,215,0,39,0,60,255,236,0,39,0,61,255,236,0,39,0,130,255,215,0,39,0,131,255,215,0,39,0,132,255,215,0,39,0,133,255,215,0,39,0,134,255,215,0,39,0,135,255,215,0,39,0,159,255,236,0,39,0,194,255,215,0,39,0,196,255,215,0,39,0,198,255,215,0,39,1,36,255,195,0,39,1,38,255,195,0,39,1,54,255,236,0,39,1,56,255,236,0,39,1,58,255,236,0,39,1,59,255,236,0,39,1,61,255,236,0,39,1,63,255,236,0,39,1,67,255,215,0,39,1,160,255,236,0,39,1,250,255,236,0,39,1,252,255,236,0,39,1,254,255,236,0,39,2,0,255,236,0,39,2,8,255,174,0,39,2,12,255,174,0,39,2,88,255,215,0,39,3,29,255,215,0,39,3,31,255,215,0,39,3,33,255,215,0,39,3,35,255,215,0,39,3,37,255,215,0,39,3,39,255,215,0,39,3,41,255,215,0,39,3,43,255,215,0,39,3,45,255,215,0,39,3,47,255,215,0,39,3,49,255,215,0,39,3,51,255,215,0,39,3,111,255,236,0,39,3,113,255,236,0,39,3,115,255,236,0,39,3,143,255,195,0,40,0,45,0,123,0,41,0,15,255,133,0,41,0,17,255,133,0,41,0,34,0,41,0,41,0,36,255,215,0,41,0,130,255,215,0,41,0,131,255,215,0,41,0,132,255,215,0,41,0,133,255,215,0,41,0,134,255,215,0,41,0,135,255,215,0,41,0,194,255,215,0,41,0,196,255,215,0,41,0,198,255,215,0,41,1,67,255,215,0,41,2,8,255,133,0,41,2,12,255,133,0,41,2,88,255,215,0,41,3,29,255,215,0,41,3,31,255,215,0,41,3,33,255,215,0,41,3,35,255,215,0,41,3,37,255,215,0,41,3,39,255,215,0,41,3,41,255,215,0,41,3,43,255,215,0,41,3,45,255,215,0,41,3,47,255,215,0,41,3,49,255,215,0,41,3,51,255,215,0,46,0,38,255,215,0,46,0,42,255,215,0,46,0,50,255,215,0,46,0,52,255,215,0,46,0,137,255,215,0,46,0,148,255,215,0,46,0,149,255,215,0,46,0,150,255,215,0,46,0,151,255,215,0,46,0,152,255,215,0,46,0,154,255,215,0,46,0,200,255,215,0,46,0,202,255,215,0,46,0,204,255,215,0,46,0,206,255,215,0,46,0,222,255,215,0,46,0,224,255,215,0,46,0,226,255,215,0,46,0,228,255,215,0,46,1,14,255,215,0,46,1,16,255,215,0,46,1,18,255,215,0,46,1,20,255,215,0,46,1,71,255,215,0,46,2,95,255,215,0,46,3,73,255,215,0,46,3,75,255,215,0,46,3,77,255,215,0,46,3,79,255,215,0,46,3,81,255,215,0,46,3,83,255,215,0,46,3,85,255,215,0,46,3,87,255,215,0,46,3,89,255,215,0,46,3,91,255,215,0,46,3,93,255,215,0,46,3,95,255,215,0,47,0,5,255,92,0,47,0,10,255,92,0,47,0,38,255,215,0,47,0,42,255,215,0,47,0,50,255,215,0,47,0,52,255,215,0,47,0,55,255,215,0,47,0,56,255,236,0,47,0,57,255,215,0,47,0,58,255,215,0,47,0,60,255,195,0,47,0,137,255,215,0,47,0,148,255,215,0,47,0,149,255,215,0,47,0,150,255,215,0,47,0,151,255,215,0,47,0,152,255,215,0,47,0,154,255,215,0,47,0,155,255,236,0,47,0,156,255,236,0,47,0,157,255,236,0,47,0,158,255,236,0,47,0,159,255,195,0,47,0,200,255,215,0,47,0,202,255,215,0,47,0,204,255,215,0,47,0,206,255,215,0,47,0,222,255,215,0,47,0,224,255,215,0,47,0,226,255,215,0,47,0,228,255,215,0,47,1,14,255,215,0,47,1,16,255,215,0,47,1,18,255,215,0,47,1,20,255,215,0,47,1,36,255,215,0,47,1,38,255,215,0,47,1,42,255,236,0,47,1,44,255,236,0,47,1,46,255,236,0,47,1,48,255,236,0,47,1,50,255,236,0,47,1,52,255,236,0,47,1,54,255,215,0,47,1,56,255,195,0,47,1,58,255,195,0,47,1,71,255,215,0,47,1,250,255,215,0,47,1,252,255,215,0,47,1,254,255,215,0,47,2,0,255,195,0,47,2,7,255,92,0,47,2,11,255,92,0,47,2,95,255,215,0,47,2,97,255,236,0,47,3,73,255,215,0,47,3,75,255,215,0,47,3,77,255,215,0,47,3,79,255,215,0,47,3,81,255,215,0,47,3,83,255,215,0,47,3,85,255,215,0,47,3,87,255,215,0,47,3,89,255,215,0,47,3,91,255,215,0,47,3,93,255,215,0,47,3,95,255,215,0,47,3,97,255,236,0,47,3,99,255,236,0,47,3,101,255,236,0,47,3,103,255,236,0,47,3,105,255,236,0,47,3,107,255,236,0,47,3,109,255,236,0,47,3,111,255,195,0,47,3,113,255,195,0,47,3,115,255,195,0,47,3,143,255,215,0,50,0,15,255,174,0,50,0,17,255,174,0,50,0,36,255,215,0,50,0,55,255,195,0,50,0,57,255,236,0,50,0,58,255,236,0,50,0,59,255,215,0,50,0,60,255,236,0,50,0,61,255,236,0,50,0,130,255,215,0,50,0,131,255,215,0,50,0,132,255,215,0,50,0,133,255,215,0,50,0,134,255,215,0,50,0,135,255,215,0,50,0,159,255,236,0,50,0,194,255,215,0,50,0,196,255,215,0,50,0,198,255,215,0,50,1,36,255,195,0,50,1,38,255,195,0,50,1,54,255,236,0,50,1,56,255,236,0,50,1,58,255,236,0,50,1,59,255,236,0,50,1,61,255,236,0,50,1,63,255,236,0,50,1,67,255,215,0,50,1,160,255,236,0,50,1,250,255,236,0,50,1,252,255,236,0,50,1,254,255,236,0,50,2,0,255,236,0,50,2,8,255,174,0,50,2,12,255,174,0,50,2,88,255,215,0,50,3,29,255,215,0,50,3,31,255,215,0,50,3,33,255,215,0,50,3,35,255,215,0,50,3,37,255,215,0,50,3,39,255,215,0,50,3,41,255,215,0,50,3,43,255,215,0,50,3,45,255,215,0,50,3,47,255,215,0,50,3,49,255,215,0,50,3,51,255,215,0,50,3,111,255,236,0,50,3,113,255,236,0,50,3,115,255,236,0,50,3,143,255,195,0,51,0,15,254,246,0,51,0,17,254,246,0,51,0,36,255,154,0,51,0,59,255,215,0,51,0,61,255,236,0,51,0,130,255,154,0,51,0,131,255,154,0,51,0,132,255,154,0,51,0,133,255,154,0,51,0,134,255,154,0,51,0,135,255,154,0,51,0,194,255,154,0,51,0,196,255,154,0,51,0,198,255,154,0,51,1,59,255,236,0,51,1,61,255,236,0,51,1,63,255,236,0,51,1,67,255,154,0,51,2,8,254,246,0,51,2,12,254,246,0,51,2,88,255,154,0,51,3,29,255,154,0,51,3,31,255,154,0,51,3,33,255,154,0,51,3,35,255,154,0,51,3,37,255,154,0,51,3,39,255,154,0,51,3,41,255,154,0,51,3,43,255,154,0,51,3,45,255,154,0,51,3,47,255,154,0,51,3,49,255,154,0,51,3,51,255,154,0,52,0,15,255,174,0,52,0,17,255,174,0,52,0,36,255,215,0,52,0,55,255,195,0,52,0,57,255,236,0,52,0,58,255,236,0,52,0,59,255,215,0,52,0,60,255,236,0,52,0,61,255,236,0,52,0,130,255,215,0,52,0,131,255,215,0,52,0,132,255,215,0,52,0,133,255,215,0,52,0,134,255,215,0,52,0,135,255,215,0,52,0,159,255,236,0,52,0,194,255,215,0,52,0,196,255,215,0,52,0,198,255,215,0,52,1,36,255,195,0,52,1,38,255,195,0,52,1,54,255,236,0,52,1,56,255,236,0,52,1,58,255,236,0,52,1,59,255,236,0,52,1,61,255,236,0,52,1,63,255,236,0,52,1,67,255,215,0,52,1,160,255,236,0,52,1,250,255,236,0,52,1,252,255,236,0,52,1,254,255,236,0,52,2,0,255,236,0,52,2,8,255,174,0,52,2,12,255,174,0,52,2,88,255,215,0,52,3,29,255,215,0,52,3,31,255,215,0,52,3,33,255,215,0,52,3,35,255,215,0,52,3,37,255,215,0,52,3,39,255,215,0,52,3,41,255,215,0,52,3,43,255,215,0,52,3,45,255,215,0,52,3,47,255,215,0,52,3,49,255,215,0,52,3,51,255,215,0,52,3,111,255,236,0,52,3,113,255,236,0,52,3,115,255,236,0,52,3,143,255,195,0,55,0,15,255,133,0,55,0,16,255,174,0,55,0,17,255,133,0,55,0,34,0,41,0,55,0,36,255,113,0,55,0,38,255,215,0,55,0,42,255,215,0,55,0,50,255,215,0,55,0,52,255,215,0,55,0,55,0,41,0,55,0,68,255,92,0,55,0,70,255,113,0,55,0,71,255,113,0,55,0,72,255,113,0,55,0,74,255,113,0,55,0,80,255,154,0,55,0,81,255,154,0,55,0,82,255,113,0,55,0,83,255,154,0,55,0,84,255,113,0,55,0,85,255,154,0,55,0,86,255,133,0,55,0,88,255,154,0,55,0,89,255,215,0,55,0,90,255,215,0,55,0,91,255,215,0,55,0,92,255,215,0,55,0,93,255,174,0,55,0,130,255,113,0,55,0,131,255,113,0,55,0,132,255,113,0,55,0,133,255,113,0,55,0,134,255,113,0,55,0,135,255,113,0,55,0,137,255,215,0,55,0,148,255,215,0,55,0,149,255,215,0,55,0,150,255,215,0,55,0,151,255,215,0,55,0,152,255,215,0,55,0,154,255,215,0,55,0,162,255,113,0,55,0,163,255,92,0,55,0,164,255,92,0,55,0,165,255,92,0,55,0,166,255,92,0,55,0,167,255,92,0,55,0,168,255,92,0,55,0,169,255,113,0,55,0,170,255,113,0,55,0,171,255,113,0,55,0,172,255,113,0,55,0,173,255,113,0,55,0,180,255,113,0,55,0,181,255,113,0,55,0,182,255,113,0,55,0,183,255,113,0,55,0,184,255,113,0,55,0,186,255,113,0,55,0,187,255,154,0,55,0,188,255,154,0,55,0,189,255,154,0,55,0,190,255,154,0,55,0,191,255,215,0,55,0,194,255,113,0,55,0,195,255,92,0,55,0,196,255,113,0,55,0,197,255,92,0,55,0,198,255,113,0,55,0,199,255,92,0,55,0,200,255,215,0,55,0,201,255,113,0,55,0,202,255,215,0,55,0,203,255,113,0,55,0,204,255,215,0,55,0,205,255,113,0,55,0,206,255,215,0,55,0,207,255,113,0,55,0,209,255,113,0,55,0,211,255,113,0,55,0,213,255,113,0,55,0,215,255,113,0,55,0,217,255,113,0,55,0,219,255,113,0,55,0,221,255,113,0,55,0,222,255,215,0,55,0,223,255,113,0,55,0,224,255,215,0,55,0,225,255,113,0,55,0,226,255,215,0,55,0,227,255,113,0,55,0,228,255,215,0,55,0,229,255,113,0,55,0,250,255,154,0,55,1,6,255,154,0,55,1,8,255,154,0,55,1,13,255,154,0,55,1,14,255,215,0,55,1,15,255,113,0,55,1,16,255,215,0,55,1,17,255,113,0,55,1,18,255,215,0,55,1,19,255,113,0,55,1,20,255,215,0,55,1,21,255,113,0,55,1,23,255,154,0,55,1,25,255,154,0,55,1,29,255,133,0,55,1,33,255,133,0,55,1,36,0,41,0,55,1,38,0,41,0,55,1,43,255,154,0,55,1,45,255,154,0,55,1,47,255,154,0,55,1,49,255,154,0,55,1,51,255,154,0,55,1,53,255,154,0,55,1,55,255,215,0,55,1,60,255,174,0,55,1,62,255,174,0,55,1,64,255,174,0,55,1,67,255,113,0,55,1,68,255,92,0,55,1,70,255,92,0,55,1,71,255,215,0,55,1,72,255,113,0,55,1,74,255,133,0,55,1,251,255,215,0,55,1,253,255,215,0,55,2,2,255,174,0,55,2,3,255,174,0,55,2,4,255,174,0,55,2,8,255,133,0,55,2,12,255,133,0,55,2,87,255,154,0,55,2,88,255,113,0,55,2,89,255,92,0,55,2,95,255,215,0,55,2,96,255,113,0,55,2,98,255,154,0,55,3,29,255,113,0,55,3,30,255,92,0,55,3,31,255,113,0,55,3,32,255,92,0,55,3,33,255,113,0,55,3,34,255,92,0,55,3,35,255,113,0,55,3,37,255,113,0,55,3,38,255,92,0,55,3,39,255,113,0,55,3,40,255,92,0,55,3,41,255,113,0,55,3,42,255,92,0,55,3,43,255,113,0,55,3,44,255,92,0,55,3,45,255,113,0,55,3,46,255,92,0,55,3,47,255,113,0,55,3,48,255,92,0,55,3,49,255,113,0,55,3,50,255,92,0,55,3,51,255,113,0,55,3,52,255,92,0,55,3,54,255,113,0,55,3,56,255,113,0,55,3,58,255,113,0,55,3,60,255,113,0,55,3,64,255,113,0,55,3,66,255,113,0,55,3,68,255,113,0,55,3,73,255,215,0,55,3,74,255,113,0,55,3,75,255,215,0,55,3,76,255,113,0,55,3,77,255,215,0,55,3,78,255,113,0,55,3,79,255,215,0,55,3,81,255,215,0,55,3,82,255,113,0,55,3,83,255,215,0,55,3,84,255,113,0,55,3,85,255,215,0,55,3,86,255,113,0,55,3,87,255,215,0,55,3,88,255,113,0,55,3,89,255,215,0,55,3,90,255,113,0,55,3,91,255,215,0,55,3,92,255,113,0,55,3,93,255,215,0,55,3,94,255,113,0,55,3,95,255,215,0,55,3,96,255,113,0,55,3,98,255,154,0,55,3,100,255,154,0,55,3,102,255,154,0,55,3,104,255,154,0,55,3,106,255,154,0,55,3,108,255,154,0,55,3,110,255,154,0,55,3,112,255,215,0,55,3,143,0,41,0,56,0,15,255,215,0,56,0,17,255,215,0,56,0,36,255,236,0,56,0,130,255,236,0,56,0,131,255,236,0,56,0,132,255,236,0,56,0,133,255,236,0,56,0,134,255,236,0,56,0,135,255,236,0,56,0,194,255,236,0,56,0,196,255,236,0,56,0,198,255,236,0,56,1,67,255,236,0,56,2,8,255,215,0,56,2,12,255,215,0,56,2,88,255,236,0,56,3,29,255,236,0,56,3,31,255,236,0,56,3,33,255,236,0,56,3,35,255,236,0,56,3,37,255,236,0,56,3,39,255,236,0,56,3,41,255,236,0,56,3,43,255,236,0,56,3,45,255,236,0,56,3,47,255,236,0,56,3,49,255,236,0,56,3,51,255,236,0,57,0,15,255,154,0,57,0,17,255,154,0,57,0,34,0,41,0,57,0,36,255,174,0,57,0,38,255,236,0,57,0,42,255,236,0,57,0,50,255,236,0,57,0,52,255,236,0,57,0,68,255,215,0,57,0,70,255,215,0,57,0,71,255,215,0,57,0,72,255,215,0,57,0,74,255,236,0,57,0,80,255,236,0,57,0,81,255,236,0,57,0,82,255,215,0,57,0,83,255,236,0,57,0,84,255,215,0,57,0,85,255,236,0,57,0,86,255,236,0,57,0,88,255,236,0,57,0,130,255,174,0,57,0,131,255,174,0,57,0,132,255,174,0,57,0,133,255,174,0,57,0,134,255,174,0,57,0,135,255,174,0,57,0,137,255,236,0,57,0,148,255,236,0,57,0,149,255,236,0,57,0,150,255,236,0,57,0,151,255,236,0,57,0,152,255,236,0,57,0,154,255,236,0,57,0,162,255,215,0,57,0,163,255,215,0,57,0,164,255,215,0,57,0,165,255,215,0,57,0,166,255,215,0,57,0,167,255,215,0,57,0,168,255,215,0,57,0,169,255,215,0,57,0,170,255,215,0,57,0,171,255,215,0,57,0,172,255,215,0,57,0,173,255,215,0,57,0,180,255,215,0,57,0,181,255,215,0,57,0,182,255,215,0,57,0,183,255,215,0,57,0,184,255,215,0,57,0,186,255,215,0,57,0,187,255,236,0,57,0,188,255,236,0,57,0,189,255,236,0,57,0,190,255,236,0,57,0,194,255,174,0,57,0,195,255,215,0,57,0,196,255,174,0,57,0,197,255,215,0,57,0,198,255,174,0,57,0,199,255,215,0,57,0,200,255,236,0,57,0,201,255,215,0,57,0,202,255,236,0,57,0,203,255,215,0,57,0,204,255,236,0,57,0,205,255,215,0,57,0,206,255,236,0,57,0,207,255,215,0,57,0,209,255,215,0,57,0,211,255,215,0,57,0,213,255,215,0,57,0,215,255,215,0,57,0,217,255,215,0,57,0,219,255,215,0,57,0,221,255,215,0,57,0,222,255,236,0,57,0,223,255,236,0,57,0,224,255,236,0,57,0,225,255,236,0,57,0,226,255,236,0,57,0,227,255,236,0,57,0,228,255,236,0,57,0,229,255,236,0,57,0,250,255,236,0,57,1,6,255,236,0,57,1,8,255,236,0,57,1,13,255,236,0,57,1,14,255,236,0,57,1,15,255,215,0,57,1,16,255,236,0,57,1,17,255,215,0,57,1,18,255,236,0,57,1,19,255,215,0,57,1,20,255,236,0,57,1,21,255,215,0,57,1,23,255,236,0,57,1,25,255,236,0,57,1,29,255,236,0,57,1,33,255,236,0,57,1,43,255,236,0,57,1,45,255,236,0,57,1,47,255,236,0,57,1,49,255,236,0,57,1,51,255,236,0,57,1,53,255,236,0,57,1,67,255,174,0,57,1,68,255,215,0,57,1,70,255,215,0,57,1,71,255,236,0,57,1,72,255,215,0,57,1,74,255,236,0,57,2,8,255,154,0,57,2,12,255,154,0,57,2,87,255,236,0,57,2,88,255,174,0,57,2,89,255,215,0,57,2,95,255,236,0,57,2,96,255,215,0,57,2,98,255,236,0,57,3,29,255,174,0,57,3,30,255,215,0,57,3,31,255,174,0,57,3,32,255,215,0,57,3,33,255,174,0,57,3,34,255,215,0,57,3,35,255,174,0,57,3,37,255,174,0,57,3,38,255,215,0,57,3,39,255,174,0,57,3,40,255,215,0,57,3,41,255,174,0,57,3,42,255,215,0,57,3,43,255,174,0,57,3,44,255,215,0,57,3,45,255,174,0,57,3,46,255,215,0,57,3,47,255,174,0,57,3,48,255,215,0,57,3,49,255,174,0,57,3,50,255,215,0,57,3,51,255,174,0,57,3,52,255,215,0,57,3,54,255,215,0,57,3,56,255,215,0,57,3,58,255,215,0,57,3,60,255,215,0,57,3,64,255,215,0,57,3,66,255,215,0,57,3,68,255,215,0,57,3,73,255,236,0,57,3,74,255,215,0,57,3,75,255,236,0,57,3,76,255,215,0,57,3,77,255,236,0,57,3,78,255,215,0,57,3,79,255,236,0,57,3,81,255,236,0,57,3,82,255,215,0,57,3,83,255,236,0,57,3,84,255,215,0,57,3,85,255,236,0,57,3,86,255,215,0,57,3,87,255,236,0,57,3,88,255,215,0,57,3,89,255,236,0,57,3,90,255,215,0,57,3,91,255,236,0,57,3,92,255,215,0,57,3,93,255,236,0,57,3,94,255,215,0,57,3,95,255,236,0,57,3,96,255,215,0,57,3,98,255,236,0,57,3,100,255,236,0,57,3,102,255,236,0,57,3,104,255,236,0,57,3,106,255,236,0,57,3,108,255,236,0,57,3,110,255,236,0,58,0,15,255,154,0,58,0,17,255,154,0,58,0,34,0,41,0,58,0,36,255,174,0,58,0,38,255,236,0,58,0,42,255,236,0,58,0,50,255,236,0,58,0,52,255,236,0,58,0,68,255,215,0,58,0,70,255,215,0,58,0,71,255,215,0,58,0,72,255,215,0,58,0,74,255,236,0,58,0,80,255,236,0,58,0,81,255,236,0,58,0,82,255,215,0,58,0,83,255,236,0,58,0,84,255,215,0,58,0,85,255,236,0,58,0,86,255,236,0,58,0,88,255,236,0,58,0,130,255,174,0,58,0,131,255,174,0,58,0,132,255,174,0,58,0,133,255,174,0,58,0,134,255,174,0,58,0,135,255,174,0,58,0,137,255,236,0,58,0,148,255,236,0,58,0,149,255,236,0,58,0,150,255,236,0,58,0,151,255,236,0,58,0,152,255,236,0,58,0,154,255,236,0,58,0,162,255,215,0,58,0,163,255,215,0,58,0,164,255,215,0,58,0,165,255,215,0,58,0,166,255,215,0,58,0,167,255,215,0,58,0,168,255,215,0,58,0,169,255,215,0,58,0,170,255,215,0,58,0,171,255,215,0,58,0,172,255,215,0,58,0,173,255,215,0,58,0,180,255,215,0,58,0,181,255,215,0,58,0,182,255,215,0,58,0,183,255,215,0,58,0,184,255,215,0,58,0,186,255,215,0,58,0,187,255,236,0,58,0,188,255,236,0,58,0,189,255,236,0,58,0,190,255,236,0,58,0,194,255,174,0,58,0,195,255,215,0,58,0,196,255,174,0,58,0,197,255,215,0,58,0,198,255,174,0,58,0,199,255,215,0,58,0,200,255,236,0,58,0,201,255,215,0,58,0,202,255,236,0,58,0,203,255,215,0,58,0,204,255,236,0,58,0,205,255,215,0,58,0,206,255,236,0,58,0,207,255,215,0,58,0,209,255,215,0,58,0,211,255,215,0,58,0,213,255,215,0,58,0,215,255,215,0,58,0,217,255,215,0,58,0,219,255,215,0,58,0,221,255,215,0,58,0,222,255,236,0,58,0,223,255,236,0,58,0,224,255,236,0,58,0,225,255,236,0,58,0,226,255,236,0,58,0,227,255,236,0,58,0,228,255,236,0,58,0,229,255,236,0,58,0,250,255,236,0,58,1,6,255,236,0,58,1,8,255,236,0,58,1,13,255,236,0,58,1,14,255,236,0,58,1,15,255,215,0,58,1,16,255,236,0,58,1,17,255,215,0,58,1,18,255,236,0,58,1,19,255,215,0,58,1,20,255,236,0,58,1,21,255,215,0,58,1,23,255,236,0,58,1,25,255,236,0,58,1,29,255,236,0,58,1,33,255,236,0,58,1,43,255,236,0,58,1,45,255,236,0,58,1,47,255,236,0,58,1,49,255,236,0,58,1,51,255,236,0,58,1,53,255,236,0,58,1,67,255,174,0,58,1,68,255,215,0,58,1,70,255,215,0,58,1,71,255,236,0,58,1,72,255,215,0,58,1,74,255,236,0,58,2,8,255,154,0,58,2,12,255,154,0,58,2,87,255,236,0,58,2,88,255,174,0,58,2,89,255,215,0,58,2,95,255,236,0,58,2,96,255,215,0,58,2,98,255,236,0,58,3,29,255,174,0,58,3,30,255,215,0,58,3,31,255,174,0,58,3,32,255,215,0,58,3,33,255,174,0,58,3,34,255,215,0,58,3,35,255,174,0,58,3,37,255,174,0,58,3,38,255,215,0,58,3,39,255,174,0,58,3,40,255,215,0,58,3,41,255,174,0,58,3,42,255,215,0,58,3,43,255,174,0,58,3,44,255,215,0,58,3,45,255,174,0,58,3,46,255,215,0,58,3,47,255,174,0,58,3,48,255,215,0,58,3,49,255,174,0,58,3,50,255,215,0,58,3,51,255,174,0,58,3,52,255,215,0,58,3,54,255,215,0,58,3,56,255,215,0,58,3,58,255,215,0,58,3,60,255,215,0,58,3,64,255,215,0,58,3,66,255,215,0,58,3,68,255,215,0,58,3,73,255,236,0,58,3,74,255,215,0,58,3,75,255,236,0,58,3,76,255,215,0,58,3,77,255,236,0,58,3,78,255,215,0,58,3,79,255,236,0,58,3,81,255,236,0,58,3,82,255,215,0,58,3,83,255,236,0,58,3,84,255,215,0,58,3,85,255,236,0,58,3,86,255,215,0,58,3,87,255,236,0,58,3,88,255,215,0,58,3,89,255,236,0,58,3,90,255,215,0,58,3,91,255,236,0,58,3,92,255,215,0,58,3,93,255,236,0,58,3,94,255,215,0,58,3,95,255,236,0,58,3,96,255,215,0,58,3,98,255,236,0,58,3,100,255,236,0,58,3,102,255,236,0,58,3,104,255,236,0,58,3,106,255,236,0,58,3,108,255,236,0,58,3,110,255,236,0,59,0,38,255,215,0,59,0,42,255,215,0,59,0,50,255,215,0,59,0,52,255,215,0,59,0,137,255,215,0,59,0,148,255,215,0,59,0,149,255,215,0,59,0,150,255,215,0,59,0,151,255,215,0,59,0,152,255,215,0,59,0,154,255,215,0,59,0,200,255,215,0,59,0,202,255,215,0,59,0,204,255,215,0,59,0,206,255,215,0,59,0,222,255,215,0,59,0,224,255,215,0,59,0,226,255,215,0,59,0,228,255,215,0,59,1,14,255,215,0,59,1,16,255,215,0,59,1,18,255,215,0,59,1,20,255,215,0,59,1,71,255,215,0,59,2,95,255,215,0,59,3,73,255,215,0,59,3,75,255,215,0,59,3,77,255,215,0,59,3,79,255,215,0,59,3,81,255,215,0,59,3,83,255,215,0,59,3,85,255,215,0,59,3,87,255,215,0,59,3,89,255,215,0,59,3,91,255,215,0,59,3,93,255,215,0,59,3,95,255,215,0,60,0,15,255,133,0,60,0,17,255,133,0,60,0,34,0,41,0,60,0,36,255,133,0,60,0,38,255,215,0,60,0,42,255,215,0,60,0,50,255,215,0,60,0,52,255,215,0,60,0,68,255,154,0,60,0,70,255,154,0,60,0,71,255,154,0,60,0,72,255,154,0,60,0,74,255,215,0,60,0,80,255,195,0,60,0,81,255,195,0,60,0,82,255,154,0,60,0,83,255,195,0,60,0,84,255,154,0,60,0,85,255,195,0,60,0,86,255,174,0,60,0,88,255,195,0,60,0,93,255,215,0,60,0,130,255,133,0,60,0,131,255,133,0,60,0,132,255,133,0,60,0,133,255,133,0,60,0,134,255,133,0,60,0,135,255,133,0,60,0,137,255,215,0,60,0,148,255,215,0,60,0,149,255,215,0,60,0,150,255,215,0,60,0,151,255,215,0,60,0,152,255,215,0,60,0,154,255,215,0,60,0,162,255,154,0,60,0,163,255,154,0,60,0,164,255,154,0,60,0,165,255,154,0,60,0,166,255,154,0,60,0,167,255,154,0,60,0,168,255,154,0,60,0,169,255,154,0,60,0,170,255,154,0,60,0,171,255,154,0,60,0,172,255,154,0,60,0,173,255,154,0,60,0,180,255,154,0,60,0,181,255,154,0,60,0,182,255,154,0,60,0,183,255,154,0,60,0,184,255,154,0,60,0,186,255,154,0,60,0,187,255,195,0,60,0,188,255,195,0,60,0,189,255,195,0,60,0,190,255,195,0,60,0,194,255,133,0,60,0,195,255,154,0,60,0,196,255,133,0,60,0,197,255,154,0,60,0,198,255,133,0,60,0,199,255,154,0,60,0,200,255,215,0,60,0,201,255,154,0,60,0,202,255,215,0,60,0,203,255,154,0,60,0,204,255,215,0,60,0,205,255,154,0,60,0,206,255,215,0,60,0,207,255,154,0,60,0,209,255,154,0,60,0,211,255,154,0,60,0,213,255,154,0,60,0,215,255,154,0,60,0,217,255,154,0,60,0,219,255,154,0,60,0,221,255,154,0,60,0,222,255,215,0,60,0,223,255,215,0,60,0,224,255,215,0,60,0,225,255,215,0,60,0,226,255,215,0,60,0,227,255,215,0,60,0,228,255,215,0,60,0,229,255,215,0,60,0,250,255,195,0,60,1,6,255,195,0,60,1,8,255,195,0,60,1,13,255,195,0,60,1,14,255,215,0,60,1,15,255,154,0,60,1,16,255,215,0,60,1,17,255,154,0,60,1,18,255,215,0,60,1,19,255,154,0,60,1,20,255,215,0,60,1,21,255,154,0,60,1,23,255,195,0,60,1,25,255,195,0,60,1,29,255,174,0,60,1,33,255,174,0,60,1,43,255,195,0,60,1,45,255,195,0,60,1,47,255,195,0,60,1,49,255,195,0,60,1,51,255,195,0,60,1,53,255,195,0,60,1,60,255,215,0,60,1,62,255,215,0,60,1,64,255,215,0,60,1,67,255,133,0,60,1,68,255,154,0,60,1,70,255,154,0,60,1,71,255,215,0,60,1,72,255,154,0,60,1,74,255,174,0,60,2,8,255,133,0,60,2,12,255,133,0,60,2,87,255,195,0,60,2,88,255,133,0,60,2,89,255,154,0,60,2,95,255,215,0,60,2,96,255,154,0,60,2,98,255,195,0,60,3,29,255,133,0,60,3,30,255,154,0,60,3,31,255,133,0,60,3,32,255,154,0,60,3,33,255,133,0,60,3,34,255,154,0,60,3,35,255,133,0,60,3,37,255,133,0,60,3,38,255,154,0,60,3,39,255,133,0,60,3,40,255,154,0,60,3,41,255,133,0,60,3,42,255,154,0,60,3,43,255,133,0,60,3,44,255,154,0,60,3,45,255,133,0,60,3,46,255,154,0,60,3,47,255,133,0,60,3,48,255,154,0,60,3,49,255,133,0,60,3,50,255,154,0,60,3,51,255,133,0,60,3,52,255,154,0,60,3,54,255,154,0,60,3,56,255,154,0,60,3,58,255,154,0,60,3,60,255,154,0,60,3,64,255,154,0,60,3,66,255,154,0,60,3,68,255,154,0,60,3,73,255,215,0,60,3,74,255,154,0,60,3,75,255,215,0,60,3,76,255,154,0,60,3,77,255,215,0,60,3,78,255,154,0,60,3,79,255,215,0,60,3,81,255,215,0,60,3,82,255,154,0,60,3,83,255,215,0,60,3,84,255,154,0,60,3,85,255,215,0,60,3,86,255,154,0,60,3,87,255,215,0,60,3,88,255,154,0,60,3,89,255,215,0,60,3,90,255,154,0,60,3,91,255,215,0,60,3,92,255,154,0,60,3,93,255,215,0,60,3,94,255,154,0,60,3,95,255,215,0,60,3,96,255,154,0,60,3,98,255,195,0,60,3,100,255,195,0,60,3,102,255,195,0,60,3,104,255,195,0,60,3,106,255,195,0,60,3,108,255,195,0,60,3,110,255,195,0,61,0,38,255,236,0,61,0,42,255,236,0,61,0,50,255,236,0,61,0,52,255,236,0,61,0,137,255,236,0,61,0,148,255,236,0,61,0,149,255,236,0,61,0,150,255,236,0,61,0,151,255,236,0,61,0,152,255,236,0,61,0,154,255,236,0,61,0,200,255,236,0,61,0,202,255,236,0,61,0,204,255,236,0,61,0,206,255,236,0,61,0,222,255,236,0,61,0,224,255,236,0,61,0,226,255,236,0,61,0,228,255,236,0,61,1,14,255,236,0,61,1,16,255,236,0,61,1,18,255,236,0,61,1,20,255,236,0,61,1,71,255,236,0,61,2,95,255,236,0,61,3,73,255,236,0,61,3,75,255,236,0,61,3,77,255,236,0,61,3,79,255,236,0,61,3,81,255,236,0,61,3,83,255,236,0,61,3,85,255,236,0,61,3,87,255,236,0,61,3,89,255,236,0,61,3,91,255,236,0,61,3,93,255,236,0,61,3,95,255,236,0,62,0,45,0,184,0,68,0,5,255,236,0,68,0,10,255,236,0,68,2,7,255,236,0,68,2,11,255,236,0,69,0,5,255,236,0,69,0,10,255,236,0,69,0,89,255,215,0,69,0,90,255,215,0,69,0,91,255,215,0,69,0,92,255,215,0,69,0,93,255,236,0,69,0,191,255,215,0,69,1,55,255,215,0,69,1,60,255,236,0,69,1,62,255,236,0,69,1,64,255,236,0,69,1,251,255,215,0,69,1,253,255,215,0,69,2,7,255,236,0,69,2,11,255,236,0,69,3,112,255,215,0,70,0,5,0,41,0,70,0,10,0,41,0,70,2,7,0,41,0,70,2,11,0,41,0,72,0,5,255,236,0,72,0,10,255,236,0,72,0,89,255,215,0,72,0,90,255,215,0,72,0,91,255,215,0,72,0,92,255,215,0,72,0,93,255,236,0,72,0,191,255,215,0,72,1,55,255,215,0,72,1,60,255,236,0,72,1,62,255,236,0,72,1,64,255,236,0,72,1,251,255,215,0,72,1,253,255,215,0,72,2,7,255,236,0,72,2,11,255,236,0,72,3,112,255,215,0,73,0,5,0,123,0,73,0,10,0,123,0,73,2,7,0,123,0,73,2,11,0,123,0,75,0,5,255,236,0,75,0,10,255,236,0,75,2,7,255,236,0,75,2,11,255,236,0,78,0,70,255,215,0,78,0,71,255,215,0,78,0,72,255,215,0,78,0,82,255,215,0,78,0,84,255,215,0,78,0,162,255,215,0,78,0,169,255,215,0,78,0,170,255,215,0,78,0,171,255,215,0,78,0,172,255,215,0,78,0,173,255,215,0,78,0,180,255,215,0,78,0,181,255,215,0,78,0,182,255,215,0,78,0,183,255,215,0,78,0,184,255,215,0,78,0,186,255,215,0,78,0,201,255,215,0,78,0,203,255,215,0,78,0,205,255,215,0,78,0,207,255,215,0,78,0,209,255,215,0,78,0,211,255,215,0,78,0,213,255,215,0,78,0,215,255,215,0,78,0,217,255,215,0,78,0,219,255,215,0,78,0,221,255,215,0,78,1,15,255,215,0,78,1,17,255,215,0,78,1,19,255,215,0,78,1,21,255,215,0,78,1,72,255,215,0,78,2,96,255,215,0,78,3,54,255,215,0,78,3,56,255,215,0,78,3,58,255,215,0,78,3,60,255,215,0,78,3,64,255,215,0,78,3,66,255,215,0,78,3,68,255,215,0,78,3,74,255,215,0,78,3,76,255,215,0,78,3,78,255,215,0,78,3,82,255,215,0,78,3,84,255,215,0,78,3,86,255,215,0,78,3,88,255,215,0,78,3,90,255,215,0,78,3,92,255,215,0,78,3,94,255,215,0,78,3,96,255,215,0,80,0,5,255,236,0,80,0,10,255,236,0,80,2,7,255,236,0,80,2,11,255,236,0,81,0,5,255,236,0,81,0,10,255,236,0,81,2,7,255,236,0,81,2,11,255,236,0,82,0,5,255,236,0,82,0,10,255,236,0,82,0,89,255,215,0,82,0,90,255,215,0,82,0,91,255,215,0,82,0,92,255,215,0,82,0,93,255,236,0,82,0,191,255,215,0,82,1,55,255,215,0,82,1,60,255,236,0,82,1,62,255,236,0,82,1,64,255,236,0,82,1,251,255,215,0,82,1,253,255,215,0,82,2,7,255,236,0,82,2,11,255,236,0,82,3,112,255,215,0,83,0,5,255,236,0,83,0,10,255,236,0,83,0,89,255,215,0,83,0,90,255,215,0,83,0,91,255,215,0,83,0,92,255,215,0,83,0,93,255,236,0,83,0,191,255,215,0,83,1,55,255,215,0,83,1,60,255,236,0,83,1,62,255,236,0,83,1,64,255,236,0,83,1,251,255,215,0,83,1,253,255,215,0,83,2,7,255,236,0,83,2,11,255,236,0,83,3,112,255,215,0,85,0,5,0,82,0,85,0,10,0,82,0,85,0,68,255,215,0,85,0,70,255,215,0,85,0,71,255,215,0,85,0,72,255,215,0,85,0,74,255,236,0,85,0,82,255,215,0,85,0,84,255,215,0,85,0,162,255,215,0,85,0,163,255,215,0,85,0,164,255,215,0,85,0,165,255,215,0,85,0,166,255,215,0,85,0,167,255,215,0,85,0,168,255,215,0,85,0,169,255,215,0,85,0,170,255,215,0,85,0,171,255,215,0,85,0,172,255,215,0,85,0,173,255,215,0,85,0,180,255,215,0,85,0,181,255,215,0,85,0,182,255,215,0,85,0,183,255,215,0,85,0,184,255,215,0,85,0,186,255,215,0,85,0,195,255,215,0,85,0,197,255,215,0,85,0,199,255,215,0,85,0,201,255,215,0,85,0,203,255,215,0,85,0,205,255,215,0,85,0,207,255,215,0,85,0,209,255,215,0,85,0,211,255,215,0,85,0,213,255,215,0,85,0,215,255,215,0,85,0,217,255,215,0,85,0,219,255,215,0,85,0,221,255,215,0,85,0,223,255,236,0,85,0,225,255,236,0,85,0,227,255,236,0,85,0,229,255,236,0,85,1,15,255,215,0,85,1,17,255,215,0,85,1,19,255,215,0,85,1,21,255,215,0,85,1,68,255,215,0,85,1,70,255,215,0,85,1,72,255,215,0,85,2,7,0,82,0,85,2,11,0,82,0,85,2,89,255,215,0,85,2,96,255,215,0,85,3,30,255,215,0,85,3,32,255,215,0,85,3,34,255,215,0,85,3,38,255,215,0,85,3,40,255,215,0,85,3,42,255,215,0,85,3,44,255,215,0,85,3,46,255,215,0,85,3,48,255,215,0,85,3,50,255,215,0,85,3,52,255,215,0,85,3,54,255,215,0,85,3,56,255,215,0,85,3,58,255,215,0,85,3,60,255,215,0,85,3,64,255,215,0,85,3,66,255,215,0,85,3,68,255,215,0,85,3,74,255,215,0,85,3,76,255,215,0,85,3,78,255,215,0,85,3,82,255,215,0,85,3,84,255,215,0,85,3,86,255,215,0,85,3,88,255,215,0,85,3,90,255,215,0,85,3,92,255,215,0,85,3,94,255,215,0,85,3,96,255,215,0,87,0,5,0,41,0,87,0,10,0,41,0,87,2,7,0,41,0,87,2,11,0,41,0,89,0,5,0,82,0,89,0,10,0,82,0,89,0,15,255,174,0,89,0,17,255,174,0,89,0,34,0,41,0,89,2,7,0,82,0,89,2,8,255,174,0,89,2,11,0,82,0,89,2,12,255,174,0,90,0,5,0,82,0,90,0,10,0,82,0,90,0,15,255,174,0,90,0,17,255,174,0,90,0,34,0,41,0,90,2,7,0,82,0,90,2,8,255,174,0,90,2,11,0,82,0,90,2,12,255,174,0,91,0,70,255,215,0,91,0,71,255,215,0,91,0,72,255,215,0,91,0,82,255,215,0,91,0,84,255,215,0,91,0,162,255,215,0,91,0,169,255,215,0,91,0,170,255,215,0,91,0,171,255,215,0,91,0,172,255,215,0,91,0,173,255,215,0,91,0,180,255,215,0,91,0,181,255,215,0,91,0,182,255,215,0,91,0,183,255,215,0,91,0,184,255,215,0,91,0,186,255,215,0,91,0,201,255,215,0,91,0,203,255,215,0,91,0,205,255,215,0,91,0,207,255,215,0,91,0,209,255,215,0,91,0,211,255,215,0,91,0,213,255,215,0,91,0,215,255,215,0,91,0,217,255,215,0,91,0,219,255,215,0,91,0,221,255,215,0,91,1,15,255,215,0,91,1,17,255,215,0,91,1,19,255,215,0,91,1,21,255,215,0,91,1,72,255,215,0,91,2,96,255,215,0,91,3,54,255,215,0,91,3,56,255,215,0,91,3,58,255,215,0,91,3,60,255,215,0,91,3,64,255,215,0,91,3,66,255,215,0,91,3,68,255,215,0,91,3,74,255,215,0,91,3,76,255,215,0,91,3,78,255,215,0,91,3,82,255,215,0,91,3,84,255,215,0,91,3,86,255,215,0,91,3,88,255,215,0,91,3,90,255,215,0,91,3,92,255,215,0,91,3,94,255,215,0,91,3,96,255,215,0,92,0,5,0,82,0,92,0,10,0,82,0,92,0,15,255,174,0,92,0,17,255,174,0,92,0,34,0,41,0,92,2,7,0,82,0,92,2,8,255,174,0,92,2,11,0,82,0,92,2,12,255,174,0,94,0,45,0,184,0,130,0,5,255,113,0,130,0,10,255,113,0,130,0,38,255,215,0,130,0,42,255,215,0,130,0,45,1,10,0,130,0,50,255,215,0,130,0,52,255,215,0,130,0,55,255,113,0,130,0,57,255,174,0,130,0,58,255,174,0,130,0,60,255,133,0,130,0,137,255,215,0,130,0,148,255,215,0,130,0,149,255,215,0,130,0,150,255,215,0,130,0,151,255,215,0,130,0,152,255,215,0,130,0,154,255,215,0,130,0,159,255,133,0,130,0,200,255,215,0,130,0,202,255,215,0,130,0,204,255,215,0,130,0,206,255,215,0,130,0,222,255,215,0,130,0,224,255,215,0,130,0,226,255,215,0,130,0,228,255,215,0,130,1,14,255,215,0,130,1,16,255,215,0,130,1,18,255,215,0,130,1,20,255,215,0,130,1,36,255,113,0,130,1,38,255,113,0,130,1,54,255,174,0,130,1,56,255,133,0,130,1,58,255,133,0,130,1,71,255,215,0,130,1,250,255,174,0,130,1,252,255,174,0,130,1,254,255,174,0,130,2,0,255,133,0,130,2,7,255,113,0,130,2,11,255,113,0,130,2,95,255,215,0,130,3,73,255,215,0,130,3,75,255,215,0,130,3,77,255,215,0,130,3,79,255,215,0,130,3,81,255,215,0,130,3,83,255,215,0,130,3,85,255,215,0,130,3,87,255,215,0,130,3,89,255,215,0,130,3,91,255,215,0,130,3,93,255,215,0,130,3,95,255,215,0,130,3,111,255,133,0,130,3,113,255,133,0,130,3,115,255,133,0,130,3,143,255,113,0,131,0,5,255,113,0,131,0,10,255,113,0,131,0,38,255,215,0,131,0,42,255,215,0,131,0,45,1,10,0,131,0,50,255,215,0,131,0,52,255,215,0,131,0,55,255,113,0,131,0,57,255,174,0,131,0,58,255,174,0,131,0,60,255,133,0,131,0,137,255,215,0,131,0,148,255,215,0,131,0,149,255,215,0,131,0,150,255,215,0,131,0,151,255,215,0,131,0,152,255,215,0,131,0,154,255,215,0,131,0,159,255,133,0,131,0,200,255,215,0,131,0,202,255,215,0,131,0,204,255,215,0,131,0,206,255,215,0,131,0,222,255,215,0,131,0,224,255,215,0,131,0,226,255,215,0,131,0,228,255,215,0,131,1,14,255,215,0,131,1,16,255,215,0,131,1,18,255,215,0,131,1,20,255,215,0,131,1,36,255,113,0,131,1,38,255,113,0,131,1,54,255,174,0,131,1,56,255,133,0,131,1,58,255,133,0,131,1,71,255,215,0,131,1,250,255,174,0,131,1,252,255,174,0,131,1,254,255,174,0,131,2,0,255,133,0,131,2,7,255,113,0,131,2,11,255,113,0,131,2,95,255,215,0,131,3,73,255,215,0,131,3,75,255,215,0,131,3,77,255,215,0,131,3,79,255,215,0,131,3,81,255,215,0,131,3,83,255,215,0,131,3,85,255,215,0,131,3,87,255,215,0,131,3,89,255,215,0,131,3,91,255,215,0,131,3,93,255,215,0,131,3,95,255,215,0,131,3,111,255,133,0,131,3,113,255,133,0,131,3,115,255,133,0,131,3,143,255,113,0,132,0,5,255,113,0,132,0,10,255,113,0,132,0,38,255,215,0,132,0,42,255,215,0,132,0,45,1,10,0,132,0,50,255,215,0,132,0,52,255,215,0,132,0,55,255,113,0,132,0,57,255,174,0,132,0,58,255,174,0,132,0,60,255,133,0,132,0,137,255,215,0,132,0,148,255,215,0,132,0,149,255,215,0,132,0,150,255,215,0,132,0,151,255,215,0,132,0,152,255,215,0,132,0,154,255,215,0,132,0,159,255,133,0,132,0,200,255,215,0,132,0,202,255,215,0,132,0,204,255,215,0,132,0,206,255,215,0,132,0,222,255,215,0,132,0,224,255,215,0,132,0,226,255,215,0,132,0,228,255,215,0,132,1,14,255,215,0,132,1,16,255,215,0,132,1,18,255,215,0,132,1,20,255,215,0,132,1,36,255,113,0,132,1,38,255,113,0,132,1,54,255,174,0,132,1,56,255,133,0,132,1,58,255,133,0,132,1,71,255,215,0,132,1,250,255,174,0,132,1,252,255,174,0,132,1,254,255,174,0,132,2,0,255,133,0,132,2,7,255,113,0,132,2,11,255,113,0,132,2,95,255,215,0,132,3,73,255,215,0,132,3,75,255,215,0,132,3,77,255,215,0,132,3,79,255,215,0,132,3,81,255,215,0,132,3,83,255,215,0,132,3,85,255,215,0,132,3,87,255,215,0,132,3,89,255,215,0,132,3,91,255,215,0,132,3,93,255,215,0,132,3,95,255,215,0,132,3,111,255,133,0,132,3,113,255,133,0,132,3,115,255,133,0,132,3,143,255,113,0,133,0,5,255,113,0,133,0,10,255,113,0,133,0,38,255,215,0,133,0,42,255,215,0,133,0,45,1,10,0,133,0,50,255,215,0,133,0,52,255,215,0,133,0,55,255,113,0,133,0,57,255,174,0,133,0,58,255,174,0,133,0,60,255,133,0,133,0,137,255,215,0,133,0,148,255,215,0,133,0,149,255,215,0,133,0,150,255,215,0,133,0,151,255,215,0,133,0,152,255,215,0,133,0,154,255,215,0,133,0,159,255,133,0,133,0,200,255,215,0,133,0,202,255,215,0,133,0,204,255,215,0,133,0,206,255,215,0,133,0,222,255,215,0,133,0,224,255,215,0,133,0,226,255,215,0,133,0,228,255,215,0,133,1,14,255,215,0,133,1,16,255,215,0,133,1,18,255,215,0,133,1,20,255,215,0,133,1,36,255,113,0,133,1,38,255,113,0,133,1,54,255,174,0,133,1,56,255,133,0,133,1,58,255,133,0,133,1,71,255,215,0,133,1,250,255,174,0,133,1,252,255,174,0,133,1,254,255,174,0,133,2,0,255,133,0,133,2,7,255,113,0,133,2,11,255,113,0,133,2,95,255,215,0,133,3,73,255,215,0,133,3,75,255,215,0,133,3,77,255,215,0,133,3,79,255,215,0,133,3,81,255,215,0,133,3,83,255,215,0,133,3,85,255,215,0,133,3,87,255,215,0,133,3,89,255,215,0,133,3,91,255,215,0,133,3,93,255,215,0,133,3,95,255,215,0,133,3,111,255,133,0,133,3,113,255,133,0,133,3,115,255,133,0,133,3,143,255,113,0,134,0,5,255,113,0,134,0,10,255,113,0,134,0,38,255,215,0,134,0,42,255,215,0,134,0,45,1,10,0,134,0,50,255,215,0,134,0,52,255,215,0,134,0,55,255,113,0,134,0,57,255,174,0,134,0,58,255,174,0,134,0,60,255,133,0,134,0,137,255,215,0,134,0,148,255,215,0,134,0,149,255,215,0,134,0,150,255,215,0,134,0,151,255,215,0,134,0,152,255,215,0,134,0,154,255,215,0,134,0,159,255,133,0,134,0,200,255,215,0,134,0,202,255,215,0,134,0,204,255,215,0,134,0,206,255,215,0,134,0,222,255,215,0,134,0,224,255,215,0,134,0,226,255,215,0,134,0,228,255,215,0,134,1,14,255,215,0,134,1,16,255,215,0,134,1,18,255,215,0,134,1,20,255,215,0,134,1,36,255,113,0,134,1,38,255,113,0,134,1,54,255,174,0,134,1,56,255,133,0,134,1,58,255,133,0,134,1,71,255,215,0,134,1,250,255,174,0,134,1,252,255,174,0,134,1,254,255,174,0,134,2,0,255,133,0,134,2,7,255,113,0,134,2,11,255,113,0,134,2,95,255,215,0,134,3,73,255,215,0,134,3,75,255,215,0,134,3,77,255,215,0,134,3,79,255,215,0,134,3,81,255,215,0,134,3,83,255,215,0,134,3,85,255,215,0,134,3,87,255,215,0,134,3,89,255,215,0,134,3,91,255,215,0,134,3,93,255,215,0,134,3,95,255,215,0,134,3,111,255,133,0,134,3,113,255,133,0,134,3,115,255,133,0,134,3,143,255,113,0,135,0,5,255,113,0,135,0,10,255,113,0,135,0,38,255,215,0,135,0,42,255,215,0,135,0,45,1,10,0,135,0,50,255,215,0,135,0,52,255,215,0,135,0,55,255,113,0,135,0,57,255,174,0,135,0,58,255,174,0,135,0,60,255,133,0,135,0,137,255,215,0,135,0,148,255,215,0,135,0,149,255,215,0,135,0,150,255,215,0,135,0,151,255,215,0,135,0,152,255,215,0,135,0,154,255,215,0,135,0,159,255,133,0,135,0,200,255,215,0,135,0,202,255,215,0,135,0,204,255,215,0,135,0,206,255,215,0,135,0,222,255,215,0,135,0,224,255,215,0,135,0,226,255,215,0,135,0,228,255,215,0,135,1,14,255,215,0,135,1,16,255,215,0,135,1,18,255,215,0,135,1,20,255,215,0,135,1,36,255,113,0,135,1,38,255,113,0,135,1,54,255,174,0,135,1,56,255,133,0,135,1,58,255,133,0,135,1,71,255,215,0,135,1,250,255,174,0,135,1,252,255,174,0,135,1,254,255,174,0,135,2,0,255,133,0,135,2,7,255,113,0,135,2,11,255,113,0,135,2,95,255,215,0,135,3,73,255,215,0,135,3,75,255,215,0,135,3,77,255,215,0,135,3,79,255,215,0,135,3,81,255,215,0,135,3,83,255,215,0,135,3,85,255,215,0,135,3,87,255,215,0,135,3,89,255,215,0,135,3,91,255,215,0,135,3,93,255,215,0,135,3,95,255,215,0,135,3,111,255,133,0,135,3,113,255,133,0,135,3,115,255,133,0,135,3,143,255,113,0,136,0,45,0,123,0,137,0,38,255,215,0,137,0,42,255,215,0,137,0,50,255,215,0,137,0,52,255,215,0,137,0,137,255,215,0,137,0,148,255,215,0,137,0,149,255,215,0,137,0,150,255,215,0,137,0,151,255,215,0,137,0,152,255,215,0,137,0,154,255,215,0,137,0,200,255,215,0,137,0,202,255,215,0,137,0,204,255,215,0,137,0,206,255,215,0,137,0,222,255,215,0,137,0,224,255,215,0,137,0,226,255,215,0,137,0,228,255,215,0,137,1,14,255,215,0,137,1,16,255,215,0,137,1,18,255,215,0,137,1,20,255,215,0,137,1,71,255,215,0,137,2,95,255,215,0,137,3,73,255,215,0,137,3,75,255,215,0,137,3,77,255,215,0,137,3,79,255,215,0,137,3,81,255,215,0,137,3,83,255,215,0,137,3,85,255,215,0,137,3,87,255,215,0,137,3,89,255,215,0,137,3,91,255,215,0,137,3,93,255,215,0,137,3,95,255,215,0,138,0,45,0,123,0,139,0,45,0,123,0,140,0,45,0,123,0,141,0,45,0,123,0,146,0,15,255,174,0,146,0,17,255,174,0,146,0,36,255,215,0,146,0,55,255,195,0,146,0,57,255,236,0,146,0,58,255,236,0,146,0,59,255,215,0,146,0,60,255,236,0,146,0,61,255,236,0,146,0,130,255,215,0,146,0,131,255,215,0,146,0,132,255,215,0,146,0,133,255,215,0,146,0,134,255,215,0,146,0,135,255,215,0,146,0,159,255,236,0,146,0,194,255,215,0,146,0,196,255,215,0,146,0,198,255,215,0,146,1,36,255,195,0,146,1,38,255,195,0,146,1,54,255,236,0,146,1,56,255,236,0,146,1,58,255,236,0,146,1,59,255,236,0,146,1,61,255,236,0,146,1,63,255,236,0,146,1,67,255,215,0,146,1,160,255,236,0,146,1,250,255,236,0,146,1,252,255,236,0,146,1,254,255,236,0,146,2,0,255,236,0,146,2,8,255,174,0,146,2,12,255,174,0,146,2,88,255,215,0,146,3,29,255,215,0,146,3,31,255,215,0,146,3,33,255,215,0,146,3,35,255,215,0,146,3,37,255,215,0,146,3,39,255,215,0,146,3,41,255,215,0,146,3,43,255,215,0,146,3,45,255,215,0,146,3,47,255,215,0,146,3,49,255,215,0,146,3,51,255,215,0,146,3,111,255,236,0,146,3,113,255,236,0,146,3,115,255,236,0,146,3,143,255,195,0,148,0,15,255,174,0,148,0,17,255,174,0,148,0,36,255,215,0,148,0,55,255,195,0,148,0,57,255,236,0,148,0,58,255,236,0,148,0,59,255,215,0,148,0,60,255,236,0,148,0,61,255,236,0,148,0,130,255,215,0,148,0,131,255,215,0,148,0,132,255,215,0,148,0,133,255,215,0,148,0,134,255,215,0,148,0,135,255,215,0,148,0,159,255,236,0,148,0,194,255,215,0,148,0,196,255,215,0,148,0,198,255,215,0,148,1,36,255,195,0,148,1,38,255,195,0,148,1,54,255,236,0,148,1,56,255,236,0,148,1,58,255,236,0,148,1,59,255,236,0,148,1,61,255,236,0,148,1,63,255,236,0,148,1,67,255,215,0,148,1,160,255,236,0,148,1,250,255,236,0,148,1,252,255,236,0,148,1,254,255,236,0,148,2,0,255,236,0,148,2,8,255,174,0,148,2,12,255,174,0,148,2,88,255,215,0,148,3,29,255,215,0,148,3,31,255,215,0,148,3,33,255,215,0,148,3,35,255,215,0,148,3,37,255,215,0,148,3,39,255,215,0,148,3,41,255,215,0,148,3,43,255,215,0,148,3,45,255,215,0,148,3,47,255,215,0,148,3,49,255,215,0,148,3,51,255,215,0,148,3,111,255,236,0,148,3,113,255,236,0,148,3,115,255,236,0,148,3,143,255,195,0,149,0,15,255,174,0,149,0,17,255,174,0,149,0,36,255,215,0,149,0,55,255,195,0,149,0,57,255,236,0,149,0,58,255,236,0,149,0,59,255,215,0,149,0,60,255,236,0,149,0,61,255,236,0,149,0,130,255,215,0,149,0,131,255,215,0,149,0,132,255,215,0,149,0,133,255,215,0,149,0,134,255,215,0,149,0,135,255,215,0,149,0,159,255,236,0,149,0,194,255,215,0,149,0,196,255,215,0,149,0,198,255,215,0,149,1,36,255,195,0,149,1,38,255,195,0,149,1,54,255,236,0,149,1,56,255,236,0,149,1,58,255,236,0,149,1,59,255,236,0,149,1,61,255,236,0,149,1,63,255,236,0,149,1,67,255,215,0,149,1,160,255,236,0,149,1,250,255,236,0,149,1,252,255,236,0,149,1,254,255,236,0,149,2,0,255,236,0,149,2,8,255,174,0,149,2,12,255,174,0,149,2,88,255,215,0,149,3,29,255,215,0,149,3,31,255,215,0,149,3,33,255,215,0,149,3,35,255,215,0,149,3,37,255,215,0,149,3,39,255,215,0,149,3,41,255,215,0,149,3,43,255,215,0,149,3,45,255,215,0,149,3,47,255,215,0,149,3,49,255,215,0,149,3,51,255,215,0,149,3,111,255,236,0,149,3,113,255,236,0,149,3,115,255,236,0,149,3,143,255,195,0,150,0,15,255,174,0,150,0,17,255,174,0,150,0,36,255,215,0,150,0,55,255,195,0,150,0,57,255,236,0,150,0,58,255,236,0,150,0,59,255,215,0,150,0,60,255,236,0,150,0,61,255,236,0,150,0,130,255,215,0,150,0,131,255,215,0,150,0,132,255,215,0,150,0,133,255,215,0,150,0,134,255,215,0,150,0,135,255,215,0,150,0,159,255,236,0,150,0,194,255,215,0,150,0,196,255,215,0,150,0,198,255,215,0,150,1,36,255,195,0,150,1,38,255,195,0,150,1,54,255,236,0,150,1,56,255,236,0,150,1,58,255,236,0,150,1,59,255,236,0,150,1,61,255,236,0,150,1,63,255,236,0,150,1,67,255,215,0,150,1,160,255,236,0,150,1,250,255,236,0,150,1,252,255,236,0,150,1,254,255,236,0,150,2,0,255,236,0,150,2,8,255,174,0,150,2,12,255,174,0,150,2,88,255,215,0,150,3,29,255,215,0,150,3,31,255,215,0,150,3,33,255,215,0,150,3,35,255,215,0,150,3,37,255,215,0,150,3,39,255,215,0,150,3,41,255,215,0,150,3,43,255,215,0,150,3,45,255,215,0,150,3,47,255,215,0,150,3,49,255,215,0,150,3,51,255,215,0,150,3,111,255,236,0,150,3,113,255,236,0,150,3,115,255,236,0,150,3,143,255,195,0,151,0,15,255,174,0,151,0,17,255,174,0,151,0,36,255,215,0,151,0,55,255,195,0,151,0,57,255,236,0,151,0,58,255,236,0,151,0,59,255,215,0,151,0,60,255,236,0,151,0,61,255,236,0,151,0,130,255,215,0,151,0,131,255,215,0,151,0,132,255,215,0,151,0,133,255,215,0,151,0,134,255,215,0,151,0,135,255,215,0,151,0,159,255,236,0,151,0,194,255,215,0,151,0,196,255,215,0,151,0,198,255,215,0,151,1,36,255,195,0,151,1,38,255,195,0,151,1,54,255,236,0,151,1,56,255,236,0,151,1,58,255,236,0,151,1,59,255,236,0,151,1,61,255,236,0,151,1,63,255,236,0,151,1,67,255,215,0,151,1,160,255,236,0,151,1,250,255,236,0,151,1,252,255,236,0,151,1,254,255,236,0,151,2,0,255,236,0,151,2,8,255,174,0,151,2,12,255,174,0,151,2,88,255,215,0,151,3,29,255,215,0,151,3,31,255,215,0,151,3,33,255,215,0,151,3,35,255,215,0,151,3,37,255,215,0,151,3,39,255,215,0,151,3,41,255,215,0,151,3,43,255,215,0,151,3,45,255,215,0,151,3,47,255,215,0,151,3,49,255,215,0,151,3,51,255,215,0,151,3,111,255,236,0,151,3,113,255,236,0,151,3,115,255,236,0,151,3,143,255,195,0,152,0,15,255,174,0,152,0,17,255,174,0,152,0,36,255,215,0,152,0,55,255,195,0,152,0,57,255,236,0,152,0,58,255,236,0,152,0,59,255,215,0,152,0,60,255,236,0,152,0,61,255,236,0,152,0,130,255,215,0,152,0,131,255,215,0,152,0,132,255,215,0,152,0,133,255,215,0,152,0,134,255,215,0,152,0,135,255,215,0,152,0,159,255,236,0,152,0,194,255,215,0,152,0,196,255,215,0,152,0,198,255,215,0,152,1,36,255,195,0,152,1,38,255,195,0,152,1,54,255,236,0,152,1,56,255,236,0,152,1,58,255,236,0,152,1,59,255,236,0,152,1,61,255,236,0,152,1,63,255,236,0,152,1,67,255,215,0,152,1,160,255,236,0,152,1,250,255,236,0,152,1,252,255,236,0,152,1,254,255,236,0,152,2,0,255,236,0,152,2,8,255,174,0,152,2,12,255,174,0,152,2,88,255,215,0,152,3,29,255,215,0,152,3,31,255,215,0,152,3,33,255,215,0,152,3,35,255,215,0,152,3,37,255,215,0,152,3,39,255,215,0,152,3,41,255,215,0,152,3,43,255,215,0,152,3,45,255,215,0,152,3,47,255,215,0,152,3,49,255,215,0,152,3,51,255,215,0,152,3,111,255,236,0,152,3,113,255,236,0,152,3,115,255,236,0,152,3,143,255,195,0,154,0,15,255,174,0,154,0,17,255,174,0,154,0,36,255,215,0,154,0,55,255,195,0,154,0,57,255,236,0,154,0,58,255,236,0,154,0,59,255,215,0,154,0,60,255,236,0,154,0,61,255,236,0,154,0,130,255,215,0,154,0,131,255,215,0,154,0,132,255,215,0,154,0,133,255,215,0,154,0,134,255,215,0,154,0,135,255,215,0,154,0,159,255,236,0,154,0,194,255,215,0,154,0,196,255,215,0,154,0,198,255,215,0,154,1,36,255,195,0,154,1,38,255,195,0,154,1,54,255,236,0,154,1,56,255,236,0,154,1,58,255,236,0,154,1,59,255,236,0,154,1,61,255,236,0,154,1,63,255,236,0,154,1,67,255,215,0,154,1,160,255,236,0,154,1,250,255,236,0,154,1,252,255,236,0,154,1,254,255,236,0,154,2,0,255,236,0,154,2,8,255,174,0,154,2,12,255,174,0,154,2,88,255,215,0,154,3,29,255,215,0,154,3,31,255,215,0,154,3,33,255,215,0,154,3,35,255,215,0,154,3,37,255,215,0,154,3,39,255,215,0,154,3,41,255,215,0,154,3,43,255,215,0,154,3,45,255,215,0,154,3,47,255,215,0,154,3,49,255,215,0,154,3,51,255,215,0,154,3,111,255,236,0,154,3,113,255,236,0,154,3,115,255,236,0,154,3,143,255,195,0,155,0,15,255,215,0,155,0,17,255,215,0,155,0,36,255,236,0,155,0,130,255,236,0,155,0,131,255,236,0,155,0,132,255,236,0,155,0,133,255,236,0,155,0,134,255,236,0,155,0,135,255,236,0,155,0,194,255,236,0,155,0,196,255,236,0,155,0,198,255,236,0,155,1,67,255,236,0,155,2,8,255,215,0,155,2,12,255,215,0,155,2,88,255,236,0,155,3,29,255,236,0,155,3,31,255,236,0,155,3,33,255,236,0,155,3,35,255,236,0,155,3,37,255,236,0,155,3,39,255,236,0,155,3,41,255,236,0,155,3,43,255,236,0,155,3,45,255,236,0,155,3,47,255,236,0,155,3,49,255,236,0,155,3,51,255,236,0,156,0,15,255,215,0,156,0,17,255,215,0,156,0,36,255,236,0,156,0,130,255,236,0,156,0,131,255,236,0,156,0,132,255,236,0,156,0,133,255,236,0,156,0,134,255,236,0,156,0,135,255,236,0,156,0,194,255,236,0,156,0,196,255,236,0,156,0,198,255,236,0,156,1,67,255,236,0,156,2,8,255,215,0,156,2,12,255,215,0,156,2,88,255,236,0,156,3,29,255,236,0,156,3,31,255,236,0,156,3,33,255,236,0,156,3,35,255,236,0,156,3,37,255,236,0,156,3,39,255,236,0,156,3,41,255,236,0,156,3,43,255,236,0,156,3,45,255,236,0,156,3,47,255,236,0,156,3,49,255,236,0,156,3,51,255,236,0,157,0,15,255,215,0,157,0,17,255,215,0,157,0,36,255,236,0,157,0,130,255,236,0,157,0,131,255,236,0,157,0,132,255,236,0,157,0,133,255,236,0,157,0,134,255,236,0,157,0,135,255,236,0,157,0,194,255,236,0,157,0,196,255,236,0,157,0,198,255,236,0,157,1,67,255,236,0,157,2,8,255,215,0,157,2,12,255,215,0,157,2,88,255,236,0,157,3,29,255,236,0,157,3,31,255,236,0,157,3,33,255,236,0,157,3,35,255,236,0,157,3,37,255,236,0,157,3,39,255,236,0,157,3,41,255,236,0,157,3,43,255,236,0,157,3,45,255,236,0,157,3,47,255,236,0,157,3,49,255,236,0,157,3,51,255,236,0,158,0,15,255,215,0,158,0,17,255,215,0,158,0,36,255,236,0,158,0,130,255,236,0,158,0,131,255,236,0,158,0,132,255,236,0,158,0,133,255,236,0,158,0,134,255,236,0,158,0,135,255,236,0,158,0,194,255,236,0,158,0,196,255,236,0,158,0,198,255,236,0,158,1,67,255,236,0,158,2,8,255,215,0,158,2,12,255,215,0,158,2,88,255,236,0,158,3,29,255,236,0,158,3,31,255,236,0,158,3,33,255,236,0,158,3,35,255,236,0,158,3,37,255,236,0,158,3,39,255,236,0,158,3,41,255,236,0,158,3,43,255,236,0,158,3,45,255,236,0,158,3,47,255,236,0,158,3,49,255,236,0,158,3,51,255,236,0,159,0,15,255,133,0,159,0,17,255,133,0,159,0,34,0,41,0,159,0,36,255,133,0,159,0,38,255,215,0,159,0,42,255,215,0,159,0,50,255,215,0,159,0,52,255,215,0,159,0,68,255,154,0,159,0,70,255,154,0,159,0,71,255,154,0,159,0,72,255,154,0,159,0,74,255,215,0,159,0,80,255,195,0,159,0,81,255,195,0,159,0,82,255,154,0,159,0,83,255,195,0,159,0,84,255,154,0,159,0,85,255,195,0,159,0,86,255,174,0,159,0,88,255,195,0,159,0,93,255,215,0,159,0,130,255,133,0,159,0,131,255,133,0,159,0,132,255,133,0,159,0,133,255,133,0,159,0,134,255,133,0,159,0,135,255,133,0,159,0,137,255,215,0,159,0,148,255,215,0,159,0,149,255,215,0,159,0,150,255,215,0,159,0,151,255,215,0,159,0,152,255,215,0,159,0,154,255,215,0,159,0,162,255,154,0,159,0,163,255,154,0,159,0,164,255,154,0,159,0,165,255,154,0,159,0,166,255,154,0,159,0,167,255,154,0,159,0,168,255,154,0,159,0,169,255,154,0,159,0,170,255,154,0,159,0,171,255,154,0,159,0,172,255,154,0,159,0,173,255,154,0,159,0,180,255,154,0,159,0,181,255,154,0,159,0,182,255,154,0,159,0,183,255,154,0,159,0,184,255,154,0,159,0,186,255,154,0,159,0,187,255,195,0,159,0,188,255,195,0,159,0,189,255,195,0,159,0,190,255,195,0,159,0,194,255,133,0,159,0,195,255,154,0,159,0,196,255,133,0,159,0,197,255,154,0,159,0,198,255,133,0,159,0,199,255,154,0,159,0,200,255,215,0,159,0,201,255,154,0,159,0,202,255,215,0,159,0,203,255,154,0,159,0,204,255,215,0,159,0,205,255,154,0,159,0,206,255,215,0,159,0,207,255,154,0,159,0,209,255,154,0,159,0,211,255,154,0,159,0,213,255,154,0,159,0,215,255,154,0,159,0,217,255,154,0,159,0,219,255,154,0,159,0,221,255,154,0,159,0,222,255,215,0,159,0,223,255,215,0,159,0,224,255,215,0,159,0,225,255,215,0,159,0,226,255,215,0,159,0,227,255,215,0,159,0,228,255,215,0,159,0,229,255,215,0,159,0,250,255,195,0,159,1,6,255,195,0,159,1,8,255,195,0,159,1,13,255,195,0,159,1,14,255,215,0,159,1,15,255,154,0,159,1,16,255,215,0,159,1,17,255,154,0,159,1,18,255,215,0,159,1,19,255,154,0,159,1,20,255,215,0,159,1,21,255,154,0,159,1,23,255,195,0,159,1,25,255,195,0,159,1,29,255,174,0,159,1,33,255,174,0,159,1,43,255,195,0,159,1,45,255,195,0,159,1,47,255,195,0,159,1,49,255,195,0,159,1,51,255,195,0,159,1,53,255,195,0,159,1,60,255,215,0,159,1,62,255,215,0,159,1,64,255,215,0,159,1,67,255,133,0,159,1,68,255,154,0,159,1,70,255,154,0,159,1,71,255,215,0,159,1,72,255,154,0,159,1,74,255,174,0,159,2,8,255,133,0,159,2,12,255,133,0,159,2,87,255,195,0,159,2,88,255,133,0,159,2,89,255,154,0,159,2,95,255,215,0,159,2,96,255,154,0,159,2,98,255,195,0,159,3,29,255,133,0,159,3,30,255,154,0,159,3,31,255,133,0,159,3,32,255,154,0,159,3,33,255,133,0,159,3,34,255,154,0,159,3,35,255,133,0,159,3,37,255,133,0,159,3,38,255,154,0,159,3,39,255,133,0,159,3,40,255,154,0,159,3,41,255,133,0,159,3,42,255,154,0,159,3,43,255,133,0,159,3,44,255,154,0,159,3,45,255,133,0,159,3,46,255,154,0,159,3,47,255,133,0,159,3,48,255,154,0,159,3,49,255,133,0,159,3,50,255,154,0,159,3,51,255,133,0,159,3,52,255,154,0,159,3,54,255,154,0,159,3,56,255,154,0,159,3,58,255,154,0,159,3,60,255,154,0,159,3,64,255,154,0,159,3,66,255,154,0,159,3,68,255,154,0,159,3,73,255,215,0,159,3,74,255,154,0,159,3,75,255,215,0,159,3,76,255,154,0,159,3,77,255,215,0,159,3,78,255,154,0,159,3,79,255,215,0,159,3,81,255,215,0,159,3,82,255,154,0,159,3,83,255,215,0,159,3,84,255,154,0,159,3,85,255,215,0,159,3,86,255,154,0,159,3,87,255,215,0,159,3,88,255,154,0,159,3,89,255,215,0,159,3,90,255,154,0,159,3,91,255,215,0,159,3,92,255,154,0,159,3,93,255,215,0,159,3,94,255,154,0,159,3,95,255,215,0,159,3,96,255,154,0,159,3,98,255,195,0,159,3,100,255,195,0,159,3,102,255,195,0,159,3,104,255,195,0,159,3,106,255,195,0,159,3,108,255,195,0,159,3,110,255,195,0,160,0,15,254,246,0,160,0,17,254,246,0,160,0,36,255,154,0,160,0,59,255,215,0,160,0,61,255,236,0,160,0,130,255,154,0,160,0,131,255,154,0,160,0,132,255,154,0,160,0,133,255,154,0,160,0,134,255,154,0,160,0,135,255,154,0,160,0,194,255,154,0,160,0,196,255,154,0,160,0,198,255,154,0,160,1,59,255,236,0,160,1,61,255,236,0,160,1,63,255,236,0,160,1,67,255,154,0,160,2,8,254,246,0,160,2,12,254,246,0,160,2,88,255,154,0,160,3,29,255,154,0,160,3,31,255,154,0,160,3,33,255,154,0,160,3,35,255,154,0,160,3,37,255,154,0,160,3,39,255,154,0,160,3,41,255,154,0,160,3,43,255,154,0,160,3,45,255,154,0,160,3,47,255,154,0,160,3,49,255,154,0,160,3,51,255,154,0,162,0,5,255,236,0,162,0,10,255,236,0,162,2,7,255,236,0,162,2,11,255,236,0,163,0,5,255,236,0,163,0,10,255,236,0,163,2,7,255,236,0,163,2,11,255,236,0,164,0,5,255,236,0,164,0,10,255,236,0,164,2,7,255,236,0,164,2,11,255,236,0,165,0,5,255,236,0,165,0,10,255,236,0,165,2,7,255,236,0,165,2,11,255,236,0,166,0,5,255,236,0,166,0,10,255,236,0,166,2,7,255,236,0,166,2,11,255,236,0,167,0,5,255,236,0,167,0,10,255,236,0,167,2,7,255,236,0,167,2,11,255,236,0,170,0,5,255,236,0,170,0,10,255,236,0,170,0,89,255,215,0,170,0,90,255,215,0,170,0,91,255,215,0,170,0,92,255,215,0,170,0,93,255,236,0,170,0,191,255,215,0,170,1,55,255,215,0,170,1,60,255,236,0,170,1,62,255,236,0,170,1,64,255,236,0,170,1,251,255,215,0,170,1,253,255,215,0,170,2,7,255,236,0,170,2,11,255,236,0,170,3,112,255,215,0,171,0,5,255,236,0,171,0,10,255,236,0,171,0,89,255,215,0,171,0,90,255,215,0,171,0,91,255,215,0,171,0,92,255,215,0,171,0,93,255,236,0,171,0,191,255,215,0,171,1,55,255,215,0,171,1,60,255,236,0,171,1,62,255,236,0,171,1,64,255,236,0,171,1,251,255,215,0,171,1,253,255,215,0,171,2,7,255,236,0,171,2,11,255,236,0,171,3,112,255,215,0,172,0,5,255,236,0,172,0,10,255,236,0,172,0,89,255,215,0,172,0,90,255,215,0,172,0,91,255,215,0,172,0,92,255,215,0,172,0,93,255,236,0,172,0,191,255,215,0,172,1,55,255,215,0,172,1,60,255,236,0,172,1,62,255,236,0,172,1,64,255,236,0,172,1,251,255,215,0,172,1,253,255,215,0,172,2,7,255,236,0,172,2,11,255,236,0,172,3,112,255,215,0,173,0,5,255,236,0,173,0,10,255,236,0,173,0,89,255,215,0,173,0,90,255,215,0,173,0,91,255,215,0,173,0,92,255,215,0,173,0,93,255,236,0,173,0,191,255,215,0,173,1,55,255,215,0,173,1,60,255,236,0,173,1,62,255,236,0,173,1,64,255,236,0,173,1,251,255,215,0,173,1,253,255,215,0,173,2,7,255,236,0,173,2,11,255,236,0,173,3,112,255,215,0,178,0,5,255,236,0,178,0,10,255,236,0,178,0,89,255,215,0,178,0,90,255,215,0,178,0,91,255,215,0,178,0,92,255,215,0,178,0,93,255,236,0,178,0,191,255,215,0,178,1,55,255,215,0,178,1,60,255,236,0,178,1,62,255,236,0,178,1,64,255,236,0,178,1,251,255,215,0,178,1,253,255,215,0,178,2,7,255,236,0,178,2,11,255,236,0,178,3,112,255,215,0,180,0,5,255,236,0,180,0,10,255,236,0,180,0,89,255,215,0,180,0,90,255,215,0,180,0,91,255,215,0,180,0,92,255,215,0,180,0,93,255,236,0,180,0,191,255,215,0,180,1,55,255,215,0,180,1,60,255,236,0,180,1,62,255,236,0,180,1,64,255,236,0,180,1,251,255,215,0,180,1,253,255,215,0,180,2,7,255,236,0,180,2,11,255,236,0,180,3,112,255,215,0,181,0,5,255,236,0,181,0,10,255,236,0,181,0,89,255,215,0,181,0,90,255,215,0,181,0,91,255,215,0,181,0,92,255,215,0,181,0,93,255,236,0,181,0,191,255,215,0,181,1,55,255,215,0,181,1,60,255,236,0,181,1,62,255,236,0,181,1,64,255,236,0,181,1,251,255,215,0,181,1,253,255,215,0,181,2,7,255,236,0,181,2,11,255,236,0,181,3,112,255,215,0,182,0,5,255,236,0,182,0,10,255,236,0,182,0,89,255,215,0,182,0,90,255,215,0,182,0,91,255,215,0,182,0,92,255,215,0,182,0,93,255,236,0,182,0,191,255,215,0,182,1,55,255,215,0,182,1,60,255,236,0,182,1,62,255,236,0,182,1,64,255,236,0,182,1,251,255,215,0,182,1,253,255,215,0,182,2,7,255,236,0,182,2,11,255,236,0,182,3,112,255,215,0,184,0,5,255,215,0,184,0,10,255,215,0,184,2,7,255,215,0,184,2,11,255,215,0,186,0,5,255,236,0,186,0,10,255,236,0,186,0,89,255,215,0,186,0,90,255,215,0,186,0,91,255,215,0,186,0,92,255,215,0,186,0,93,255,236,0,186,0,191,255,215,0,186,1,55,255,215,0,186,1,60,255,236,0,186,1,62,255,236,0,186,1,64,255,236,0,186,1,251,255,215,0,186,1,253,255,215,0,186,2,7,255,236,0,186,2,11,255,236,0,186,3,112,255,215,0,191,0,5,0,82,0,191,0,10,0,82,0,191,0,15,255,174,0,191,0,17,255,174,0,191,0,34,0,41,0,191,2,7,0,82,0,191,2,8,255,174,0,191,2,11,0,82,0,191,2,12,255,174,0,192,0,5,255,236,0,192,0,10,255,236,0,192,0,89,255,215,0,192,0,90,255,215,0,192,0,91,255,215,0,192,0,92,255,215,0,192,0,93,255,236,0,192,0,191,255,215,0,192,1,55,255,215,0,192,1,60,255,236,0,192,1,62,255,236,0,192,1,64,255,236,0,192,1,251,255,215,0,192,1,253,255,215,0,192,2,7,255,236,0,192,2,11,255,236,0,192,3,112,255,215,0,193,0,5,0,82,0,193,0,10,0,82,0,193,0,15,255,174,0,193,0,17,255,174,0,193,0,34,0,41,0,193,2,7,0,82,0,193,2,8,255,174,0,193,2,11,0,82,0,193,2,12,255,174,0,194,0,5,255,113,0,194,0,10,255,113,0,194,0,38,255,215,0,194,0,42,255,215,0,194,0,45,1,10,0,194,0,50,255,215,0,194,0,52,255,215,0,194,0,55,255,113,0,194,0,57,255,174,0,194,0,58,255,174,0,194,0,60,255,133,0,194,0,137,255,215,0,194,0,148,255,215,0,194,0,149,255,215,0,194,0,150,255,215,0,194,0,151,255,215,0,194,0,152,255,215,0,194,0,154,255,215,0,194,0,159,255,133,0,194,0,200,255,215,0,194,0,202,255,215,0,194,0,204,255,215,0,194,0,206,255,215,0,194,0,222,255,215,0,194,0,224,255,215,0,194,0,226,255,215,0,194,0,228,255,215,0,194,1,14,255,215,0,194,1,16,255,215,0,194,1,18,255,215,0,194,1,20,255,215,0,194,1,36,255,113,0,194,1,38,255,113,0,194,1,54,255,174,0,194,1,56,255,133,0,194,1,58,255,133,0,194,1,71,255,215,0,194,1,250,255,174,0,194,1,252,255,174,0,194,1,254,255,174,0,194,2,0,255,133,0,194,2,7,255,113,0,194,2,11,255,113,0,194,2,95,255,215,0,194,3,73,255,215,0,194,3,75,255,215,0,194,3,77,255,215,0,194,3,79,255,215,0,194,3,81,255,215,0,194,3,83,255,215,0,194,3,85,255,215,0,194,3,87,255,215,0,194,3,89,255,215,0,194,3,91,255,215,0,194,3,93,255,215,0,194,3,95,255,215,0,194,3,111,255,133,0,194,3,113,255,133,0,194,3,115,255,133,0,194,3,143,255,113,0,195,0,5,255,236,0,195,0,10,255,236,0,195,2,7,255,236,0,195,2,11,255,236,0,196,0,5,255,113,0,196,0,10,255,113,0,196,0,38,255,215,0,196,0,42,255,215,0,196,0,45,1,10,0,196,0,50,255,215,0,196,0,52,255,215,0,196,0,55,255,113,0,196,0,57,255,174,0,196,0,58,255,174,0,196,0,60,255,133,0,196,0,137,255,215,0,196,0,148,255,215,0,196,0,149,255,215,0,196,0,150,255,215,0,196,0,151,255,215,0,196,0,152,255,215,0,196,0,154,255,215,0,196,0,159,255,133,0,196,0,200,255,215,0,196,0,202,255,215,0,196,0,204,255,215,0,196,0,206,255,215,0,196,0,222,255,215,0,196,0,224,255,215,0,196,0,226,255,215,0,196,0,228,255,215,0,196,1,14,255,215,0,196,1,16,255,215,0,196,1,18,255,215,0,196,1,20,255,215,0,196,1,36,255,113,0,196,1,38,255,113,0,196,1,54,255,174,0,196,1,56,255,133,0,196,1,58,255,133,0,196,1,71,255,215,0,196,1,250,255,174,0,196,1,252,255,174,0,196,1,254,255,174,0,196,2,0,255,133,0,196,2,7,255,113,0,196,2,11,255,113,0,196,2,95,255,215,0,196,3,73,255,215,0,196,3,75,255,215,0,196,3,77,255,215,0,196,3,79,255,215,0,196,3,81,255,215,0,196,3,83,255,215,0,196,3,85,255,215,0,196,3,87,255,215,0,196,3,89,255,215,0,196,3,91,255,215,0,196,3,93,255,215,0,196,3,95,255,215,0,196,3,111,255,133,0,196,3,113,255,133,0,196,3,115,255,133,0,196,3,143,255,113,0,197,0,5,255,236,0,197,0,10,255,236,0,197,2,7,255,236,0,197,2,11,255,236,0,198,0,5,255,113,0,198,0,10,255,113,0,198,0,38,255,215,0,198,0,42,255,215,0,198,0,45,1,10,0,198,0,50,255,215,0,198,0,52,255,215,0,198,0,55,255,113,0,198,0,57,255,174,0,198,0,58,255,174,0,198,0,60,255,133,0,198,0,137,255,215,0,198,0,148,255,215,0,198,0,149,255,215,0,198,0,150,255,215,0,198,0,151,255,215,0,198,0,152,255,215,0,198,0,154,255,215,0,198,0,159,255,133,0,198,0,200,255,215,0,198,0,202,255,215,0,198,0,204,255,215,0,198,0,206,255,215,0,198,0,222,255,215,0,198,0,224,255,215,0,198,0,226,255,215,0,198,0,228,255,215,0,198,1,14,255,215,0,198,1,16,255,215,0,198,1,18,255,215,0,198,1,20,255,215,0,198,1,36,255,113,0,198,1,38,255,113,0,198,1,54,255,174,0,198,1,56,255,133,0,198,1,58,255,133,0,198,1,71,255,215,0,198,1,250,255,174,0,198,1,252,255,174,0,198,1,254,255,174,0,198,2,0,255,133,0,198,2,7,255,113,0,198,2,11,255,113,0,198,2,95,255,215,0,198,3,73,255,215,0,198,3,75,255,215,0,198,3,77,255,215,0,198,3,79,255,215,0,198,3,81,255,215,0,198,3,83,255,215,0,198,3,85,255,215,0,198,3,87,255,215,0,198,3,89,255,215,0,198,3,91,255,215,0,198,3,93,255,215,0,198,3,95,255,215,0,198,3,111,255,133,0,198,3,113,255,133,0,198,3,115,255,133,0,198,3,143,255,113,0,199,0,5,255,236,0,199,0,10,255,236,0,199,2,7,255,236,0,199,2,11,255,236,0,200,0,38,255,215,0,200,0,42,255,215,0,200,0,50,255,215,0,200,0,52,255,215,0,200,0,137,255,215,0,200,0,148,255,215,0,200,0,149,255,215,0,200,0,150,255,215,0,200,0,151,255,215,0,200,0,152,255,215,0,200,0,154,255,215,0,200,0,200,255,215,0,200,0,202,255,215,0,200,0,204,255,215,0,200,0,206,255,215,0,200,0,222,255,215,0,200,0,224,255,215,0,200,0,226,255,215,0,200,0,228,255,215,0,200,1,14,255,215,0,200,1,16,255,215,0,200,1,18,255,215,0,200,1,20,255,215,0,200,1,71,255,215,0,200,2,95,255,215,0,200,3,73,255,215,0,200,3,75,255,215,0,200,3,77,255,215,0,200,3,79,255,215,0,200,3,81,255,215,0,200,3,83,255,215,0,200,3,85,255,215,0,200,3,87,255,215,0,200,3,89,255,215,0,200,3,91,255,215,0,200,3,93,255,215,0,200,3,95,255,215,0,202,0,38,255,215,0,202,0,42,255,215,0,202,0,50,255,215,0,202,0,52,255,215,0,202,0,137,255,215,0,202,0,148,255,215,0,202,0,149,255,215,0,202,0,150,255,215,0,202,0,151,255,215,0,202,0,152,255,215,0,202,0,154,255,215,0,202,0,200,255,215,0,202,0,202,255,215,0,202,0,204,255,215,0,202,0,206,255,215,0,202,0,222,255,215,0,202,0,224,255,215,0,202,0,226,255,215,0,202,0,228,255,215,0,202,1,14,255,215,0,202,1,16,255,215,0,202,1,18,255,215,0,202,1,20,255,215,0,202,1,71,255,215,0,202,2,95,255,215,0,202,3,73,255,215,0,202,3,75,255,215,0,202,3,77,255,215,0,202,3,79,255,215,0,202,3,81,255,215,0,202,3,83,255,215,0,202,3,85,255,215,0,202,3,87,255,215,0,202,3,89,255,215,0,202,3,91,255,215,0,202,3,93,255,215,0,202,3,95,255,215,0,204,0,38,255,215,0,204,0,42,255,215,0,204,0,50,255,215,0,204,0,52,255,215,0,204,0,137,255,215,0,204,0,148,255,215,0,204,0,149,255,215,0,204,0,150,255,215,0,204,0,151,255,215,0,204,0,152,255,215,0,204,0,154,255,215,0,204,0,200,255,215,0,204,0,202,255,215,0,204,0,204,255,215,0,204,0,206,255,215,0,204,0,222,255,215,0,204,0,224,255,215,0,204,0,226,255,215,0,204,0,228,255,215,0,204,1,14,255,215,0,204,1,16,255,215,0,204,1,18,255,215,0,204,1,20,255,215,0,204,1,71,255,215,0,204,2,95,255,215,0,204,3,73,255,215,0,204,3,75,255,215,0,204,3,77,255,215,0,204,3,79,255,215,0,204,3,81,255,215,0,204,3,83,255,215,0,204,3,85,255,215,0,204,3,87,255,215,0,204,3,89,255,215,0,204,3,91,255,215,0,204,3,93,255,215,0,204,3,95,255,215,0,206,0,38,255,215,0,206,0,42,255,215,0,206,0,50,255,215,0,206,0,52,255,215,0,206,0,137,255,215,0,206,0,148,255,215,0,206,0,149,255,215,0,206,0,150,255,215,0,206,0,151,255,215,0,206,0,152,255,215,0,206,0,154,255,215,0,206,0,200,255,215,0,206,0,202,255,215,0,206,0,204,255,215,0,206,0,206,255,215,0,206,0,222,255,215,0,206,0,224,255,215,0,206,0,226,255,215,0,206,0,228,255,215,0,206,1,14,255,215,0,206,1,16,255,215,0,206,1,18,255,215,0,206,1,20,255,215,0,206,1,71,255,215,0,206,2,95,255,215,0,206,3,73,255,215,0,206,3,75,255,215,0,206,3,77,255,215,0,206,3,79,255,215,0,206,3,81,255,215,0,206,3,83,255,215,0,206,3,85,255,215,0,206,3,87,255,215,0,206,3,89,255,215,0,206,3,91,255,215,0,206,3,93,255,215,0,206,3,95,255,215,0,208,0,15,255,174,0,208,0,17,255,174,0,208,0,36,255,215,0,208,0,55,255,195,0,208,0,57,255,236,0,208,0,58,255,236,0,208,0,59,255,215,0,208,0,60,255,236,0,208,0,61,255,236,0,208,0,130,255,215,0,208,0,131,255,215,0,208,0,132,255,215,0,208,0,133,255,215,0,208,0,134,255,215,0,208,0,135,255,215,0,208,0,159,255,236,0,208,0,194,255,215,0,208,0,196,255,215,0,208,0,198,255,215,0,208,1,36,255,195,0,208,1,38,255,195,0,208,1,54,255,236,0,208,1,56,255,236,0,208,1,58,255,236,0,208,1,59,255,236,0,208,1,61,255,236,0,208,1,63,255,236,0,208,1,67,255,215,0,208,1,160,255,236,0,208,1,250,255,236,0,208,1,252,255,236,0,208,1,254,255,236,0,208,2,0,255,236,0,208,2,8,255,174,0,208,2,12,255,174,0,208,2,88,255,215,0,208,3,29,255,215,0,208,3,31,255,215,0,208,3,33,255,215,0,208,3,35,255,215,0,208,3,37,255,215,0,208,3,39,255,215,0,208,3,41,255,215,0,208,3,43,255,215,0,208,3,45,255,215,0,208,3,47,255,215,0,208,3,49,255,215,0,208,3,51,255,215,0,208,3,111,255,236,0,208,3,113,255,236,0,208,3,115,255,236,0,208,3,143,255,195,0,209,0,5,0,82,0,209,0,10,0,82,0,209,0,12,0,143,0,209,0,34,0,164,0,209,0,64,0,143,0,209,0,69,0,61,0,209,0,75,0,61,0,209,0,78,0,61,0,209,0,79,0,61,0,209,0,96,0,143,0,209,0,231,0,61,0,209,0,233,0,123,0,209,2,7,0,82,0,209,2,11,0,82,0,210,0,15,255,174,0,210,0,17,255,174,0,210,0,36,255,215,0,210,0,55,255,195,0,210,0,57,255,236,0,210,0,58,255,236,0,210,0,59,255,215,0,210,0,60,255,236,0,210,0,61,255,236,0,210,0,130,255,215,0,210,0,131,255,215,0,210,0,132,255,215,0,210,0,133,255,215,0,210,0,134,255,215,0,210,0,135,255,215,0,210,0,159,255,236,0,210,0,194,255,215,0,210,0,196,255,215,0,210,0,198,255,215,0,210,1,36,255,195,0,210,1,38,255,195,0,210,1,54,255,236,0,210,1,56,255,236,0,210,1,58,255,236,0,210,1,59,255,236,0,210,1,61,255,236,0,210,1,63,255,236,0,210,1,67,255,215,0,210,1,160,255,236,0,210,1,250,255,236,0,210,1,252,255,236,0,210,1,254,255,236,0,210,2,0,255,236,0,210,2,8,255,174,0,210,2,12,255,174,0,210,2,88,255,215,0,210,3,29,255,215,0,210,3,31,255,215,0,210,3,33,255,215,0,210,3,35,255,215,0,210,3,37,255,215,0,210,3,39,255,215,0,210,3,41,255,215,0,210,3,43,255,215,0,210,3,45,255,215,0,210,3,47,255,215,0,210,3,49,255,215,0,210,3,51,255,215,0,210,3,111,255,236,0,210,3,113,255,236,0,210,3,115,255,236,0,210,3,143,255,195,0,212,0,45,0,123,0,213,0,5,255,236,0,213,0,10,255,236,0,213,0,89,255,215,0,213,0,90,255,215,0,213,0,91,255,215,0,213,0,92,255,215,0,213,0,93,255,236,0,213,0,191,255,215,0,213,1,55,255,215,0,213,1,60,255,236,0,213,1,62,255,236,0,213,1,64,255,236,0,213,1,251,255,215,0,213,1,253,255,215,0,213,2,7,255,236,0,213,2,11,255,236,0,213,3,112,255,215,0,214,0,45,0,123,0,215,0,5,255,236,0,215,0,10,255,236,0,215,0,89,255,215,0,215,0,90,255,215,0,215,0,91,255,215,0,215,0,92,255,215,0,215,0,93,255,236,0,215,0,191,255,215,0,215,1,55,255,215,0,215,1,60,255,236,0,215,1,62,255,236,0,215,1,64,255,236,0,215,1,251,255,215,0,215,1,253,255,215,0,215,2,7,255,236,0,215,2,11,255,236,0,215,3,112,255,215,0,216,0,45,0,123,0,217,0,5,255,236,0,217,0,10,255,236,0,217,0,89,255,215,0,217,0,90,255,215,0,217,0,91,255,215,0,217,0,92,255,215,0,217,0,93,255,236,0,217,0,191,255,215,0,217,1,55,255,215,0,217,1,60,255,236,0,217,1,62,255,236,0,217,1,64,255,236,0,217,1,251,255,215,0,217,1,253,255,215,0,217,2,7,255,236,0,217,2,11,255,236,0,217,3,112,255,215,0,218,0,45,0,123,0,219,0,5,255,236,0,219,0,10,255,236,0,219,0,89,255,215,0,219,0,90,255,215,0,219,0,91,255,215,0,219,0,92,255,215,0,219,0,93,255,236,0,219,0,191,255,215,0,219,1,55,255,215,0,219,1,60,255,236,0,219,1,62,255,236,0,219,1,64,255,236,0,219,1,251,255,215,0,219,1,253,255,215,0,219,2,7,255,236,0,219,2,11,255,236,0,219,3,112,255,215,0,220,0,45,0,123,0,221,0,5,255,236,0,221,0,10,255,236,0,221,0,89,255,215,0,221,0,90,255,215,0,221,0,91,255,215,0,221,0,92,255,215,0,221,0,93,255,236,0,221,0,191,255,215,0,221,1,55,255,215,0,221,1,60,255,236,0,221,1,62,255,236,0,221,1,64,255,236,0,221,1,251,255,215,0,221,1,253,255,215,0,221,2,7,255,236,0,221,2,11,255,236,0,221,3,112,255,215,0,231,0,5,255,236,0,231,0,10,255,236,0,231,2,7,255,236,0,231,2,11,255,236,0,248,0,38,255,215,0,248,0,42,255,215,0,248,0,50,255,215,0,248,0,52,255,215,0,248,0,137,255,215,0,248,0,148,255,215,0,248,0,149,255,215,0,248,0,150,255,215,0,248,0,151,255,215,0,248,0,152,255,215,0,248,0,154,255,215,0,248,0,200,255,215,0,248,0,202,255,215,0,248,0,204,255,215,0,248,0,206,255,215,0,248,0,222,255,215,0,248,0,224,255,215,0,248,0,226,255,215,0,248,0,228,255,215,0,248,1,14,255,215,0,248,1,16,255,215,0,248,1,18,255,215,0,248,1,20,255,215,0,248,1,71,255,215,0,248,2,95,255,215,0,248,3,73,255,215,0,248,3,75,255,215,0,248,3,77,255,215,0,248,3,79,255,215,0,248,3,81,255,215,0,248,3,83,255,215,0,248,3,85,255,215,0,248,3,87,255,215,0,248,3,89,255,215,0,248,3,91,255,215,0,248,3,93,255,215,0,248,3,95,255,215,0,249,0,70,255,215,0,249,0,71,255,215,0,249,0,72,255,215,0,249,0,82,255,215,0,249,0,84,255,215,0,249,0,162,255,215,0,249,0,169,255,215,0,249,0,170,255,215,0,249,0,171,255,215,0,249,0,172,255,215,0,249,0,173,255,215,0,249,0,180,255,215,0,249,0,181,255,215,0,249,0,182,255,215,0,249,0,183,255,215,0,249,0,184,255,215,0,249,0,186,255,215,0,249,0,201,255,215,0,249,0,203,255,215,0,249,0,205,255,215,0,249,0,207,255,215,0,249,0,209,255,215,0,249,0,211,255,215,0,249,0,213,255,215,0,249,0,215,255,215,0,249,0,217,255,215,0,249,0,219,255,215,0,249,0,221,255,215,0,249,1,15,255,215,0,249,1,17,255,215,0,249,1,19,255,215,0,249,1,21,255,215,0,249,1,72,255,215,0,249,2,96,255,215,0,249,3,54,255,215,0,249,3,56,255,215,0,249,3,58,255,215,0,249,3,60,255,215,0,249,3,64,255,215,0,249,3,66,255,215,0,249,3,68,255,215,0,249,3,74,255,215,0,249,3,76,255,215,0,249,3,78,255,215,0,249,3,82,255,215,0,249,3,84,255,215,0,249,3,86,255,215,0,249,3,88,255,215,0,249,3,90,255,215,0,249,3,92,255,215,0,249,3,94,255,215,0,249,3,96,255,215,0,250,0,70,255,215,0,250,0,71,255,215,0,250,0,72,255,215,0,250,0,82,255,215,0,250,0,84,255,215,0,250,0,162,255,215,0,250,0,169,255,215,0,250,0,170,255,215,0,250,0,171,255,215,0,250,0,172,255,215,0,250,0,173,255,215,0,250,0,180,255,215,0,250,0,181,255,215,0,250,0,182,255,215,0,250,0,183,255,215,0,250,0,184,255,215,0,250,0,186,255,215,0,250,0,201,255,215,0,250,0,203,255,215,0,250,0,205,255,215,0,250,0,207,255,215,0,250,0,209,255,215,0,250,0,211,255,215,0,250,0,213,255,215,0,250,0,215,255,215,0,250,0,217,255,215,0,250,0,219,255,215,0,250,0,221,255,215,0,250,1,15,255,215,0,250,1,17,255,215,0,250,1,19,255,215,0,250,1,21,255,215,0,250,1,72,255,215,0,250,2,96,255,215,0,250,3,54,255,215,0,250,3,56,255,215,0,250,3,58,255,215,0,250,3,60,255,215,0,250,3,64,255,215,0,250,3,66,255,215,0,250,3,68,255,215,0,250,3,74,255,215,0,250,3,76,255,215,0,250,3,78,255,215,0,250,3,82,255,215,0,250,3,84,255,215,0,250,3,86,255,215,0,250,3,88,255,215,0,250,3,90,255,215,0,250,3,92,255,215,0,250,3,94,255,215,0,250,3,96,255,215,0,251,0,5,255,92,0,251,0,10,255,92,0,251,0,38,255,215,0,251,0,42,255,215,0,251,0,50,255,215,0,251,0,52,255,215,0,251,0,55,255,215,0,251,0,56,255,236,0,251,0,57,255,215,0,251,0,58,255,215,0,251,0,60,255,195,0,251,0,137,255,215,0,251,0,148,255,215,0,251,0,149,255,215,0,251,0,150,255,215,0,251,0,151,255,215,0,251,0,152,255,215,0,251,0,154,255,215,0,251,0,155,255,236,0,251,0,156,255,236,0,251,0,157,255,236,0,251,0,158,255,236,0,251,0,159,255,195,0,251,0,200,255,215,0,251,0,202,255,215,0,251,0,204,255,215,0,251,0,206,255,215,0,251,0,222,255,215,0,251,0,224,255,215,0,251,0,226,255,215,0,251,0,228,255,215,0,251,1,14,255,215,0,251,1,16,255,215,0,251,1,18,255,215,0,251,1,20,255,215,0,251,1,36,255,215,0,251,1,38,255,215,0,251,1,42,255,236,0,251,1,44,255,236,0,251,1,46,255,236,0,251,1,48,255,236,0,251,1,50,255,236,0,251,1,52,255,236,0,251,1,54,255,215,0,251,1,56,255,195,0,251,1,58,255,195,0,251,1,71,255,215,0,251,1,250,255,215,0,251,1,252,255,215,0,251,1,254,255,215,0,251,2,0,255,195,0,251,2,7,255,92,0,251,2,11,255,92,0,251,2,95,255,215,0,251,2,97,255,236,0,251,3,73,255,215,0,251,3,75,255,215,0,251,3,77,255,215,0,251,3,79,255,215,0,251,3,81,255,215,0,251,3,83,255,215,0,251,3,85,255,215,0,251,3,87,255,215,0,251,3,89,255,215,0,251,3,91,255,215,0,251,3,93,255,215,0,251,3,95,255,215,0,251,3,97,255,236,0,251,3,99,255,236,0,251,3,101,255,236,0,251,3,103,255,236,0,251,3,105,255,236,0,251,3,107,255,236,0,251,3,109,255,236,0,251,3,111,255,195,0,251,3,113,255,195,0,251,3,115,255,195,0,251,3,143,255,215,0,253,0,5,255,92,0,253,0,10,255,92,0,253,0,38,255,215,0,253,0,42,255,215,0,253,0,50,255,215,0,253,0,52,255,215,0,253,0,55,255,215,0,253,0,56,255,236,0,253,0,57,255,215,0,253,0,58,255,215,0,253,0,60,255,195,0,253,0,137,255,215,0,253,0,148,255,215,0,253,0,149,255,215,0,253,0,150,255,215,0,253,0,151,255,215,0,253,0,152,255,215,0,253,0,154,255,215,0,253,0,155,255,236,0,253,0,156,255,236,0,253,0,157,255,236,0,253,0,158,255,236,0,253,0,159,255,195,0,253,0,200,255,215,0,253,0,202,255,215,0,253,0,204,255,215,0,253,0,206,255,215,0,253,0,222,255,215,0,253,0,224,255,215,0,253,0,226,255,215,0,253,0,228,255,215,0,253,1,14,255,215,0,253,1,16,255,215,0,253,1,18,255,215,0,253,1,20,255,215,0,253,1,36,255,215,0,253,1,38,255,215,0,253,1,42,255,236,0,253,1,44,255,236,0,253,1,46,255,236,0,253,1,48,255,236,0,253,1,50,255,236,0,253,1,52,255,236,0,253,1,54,255,215,0,253,1,56,255,195,0,253,1,58,255,195,0,253,1,71,255,215,0,253,1,250,255,215,0,253,1,252,255,215,0,253,1,254,255,215,0,253,2,0,255,195,0,253,2,7,255,92,0,253,2,11,255,92,0,253,2,95,255,215,0,253,2,97,255,236,0,253,3,73,255,215,0,253,3,75,255,215,0,253,3,77,255,215,0,253,3,79,255,215,0,253,3,81,255,215,0,253,3,83,255,215,0,253,3,85,255,215,0,253,3,87,255,215,0,253,3,89,255,215,0,253,3,91,255,215,0,253,3,93,255,215,0,253,3,95,255,215,0,253,3,97,255,236,0,253,3,99,255,236,0,253,3,101,255,236,0,253,3,103,255,236,0,253,3,105,255,236,0,253,3,107,255,236,0,253,3,109,255,236,0,253,3,111,255,195,0,253,3,113,255,195,0,253,3,115,255,195,0,253,3,143,255,215,0,255,0,5,255,92,0,255,0,10,255,92,0,255,0,38,255,215,0,255,0,42,255,215,0,255,0,50,255,215,0,255,0,52,255,215,0,255,0,55,255,215,0,255,0,56,255,236,0,255,0,57,255,215,0,255,0,58,255,215,0,255,0,60,255,195,0,255,0,137,255,215,0,255,0,148,255,215,0,255,0,149,255,215,0,255,0,150,255,215,0,255,0,151,255,215,0,255,0,152,255,215,0,255,0,154,255,215,0,255,0,155,255,236,0,255,0,156,255,236,0,255,0,157,255,236,0,255,0,158,255,236,0,255,0,159,255,195,0,255,0,200,255,215,0,255,0,202,255,215,0,255,0,204,255,215,0,255,0,206,255,215,0,255,0,222,255,215,0,255,0,224,255,215,0,255,0,226,255,215,0,255,0,228,255,215,0,255,1,14,255,215,0,255,1,16,255,215,0,255,1,18,255,215,0,255,1,20,255,215,0,255,1,36,255,215,0,255,1,38,255,215,0,255,1,42,255,236,0,255,1,44,255,236,0,255,1,46,255,236,0,255,1,48,255,236,0,255,1,50,255,236,0,255,1,52,255,236,0,255,1,54,255,215,0,255,1,56,255,195,0,255,1,58,255,195,0,255,1,71,255,215,0,255,1,250,255,215,0,255,1,252,255,215,0,255,1,254,255,215,0,255,2,0,255,195,0,255,2,7,255,92,0,255,2,11,255,92,0,255,2,95,255,215,0,255,2,97,255,236,0,255,3,73,255,215,0,255,3,75,255,215,0,255,3,77,255,215,0,255,3,79,255,215,0,255,3,81,255,215,0,255,3,83,255,215,0,255,3,85,255,215,0,255,3,87,255,215,0,255,3,89,255,215,0,255,3,91,255,215,0,255,3,93,255,215,0,255,3,95,255,215,0,255,3,97,255,236,0,255,3,99,255,236,0,255,3,101,255,236,0,255,3,103,255,236,0,255,3,105,255,236,0,255,3,107,255,236,0,255,3,109,255,236,0,255,3,111,255,195,0,255,3,113,255,195,0,255,3,115,255,195,0,255,3,143,255,215,1,0,0,5,0,82,1,0,0,10,0,82,1,0,0,12,0,143,1,0,0,34,0,143,1,0,0,64,0,143,1,0,0,69,0,61,1,0,0,75,0,61,1,0,0,78,0,61,1,0,0,79,0,61,1,0,0,96,0,143,1,0,0,231,0,61,1,0,0,233,0,143,1,0,2,7,0,82,1,0,2,11,0,82,1,1,0,5,255,92,1,1,0,10,255,92,1,1,0,38,255,215,1,1,0,42,255,215,1,1,0,50,255,215,1,1,0,52,255,215,1,1,0,55,255,215,1,1,0,56,255,236,1,1,0,57,255,215,1,1,0,58,255,215,1,1,0,60,255,195,1,1,0,137,255,215,1,1,0,148,255,215,1,1,0,149,255,215,1,1,0,150,255,215,1,1,0,151,255,215,1,1,0,152,255,215,1,1,0,154,255,215,1,1,0,155,255,236,1,1,0,156,255,236,1,1,0,157,255,236,1,1,0,158,255,236,1,1,0,159,255,195,1,1,0,200,255,215,1,1,0,202,255,215,1,1,0,204,255,215,1,1,0,206,255,215,1,1,0,222,255,215,1,1,0,224,255,215,1,1,0,226,255,215,1,1,0,228,255,215,1,1,1,14,255,215,1,1,1,16,255,215,1,1,1,18,255,215,1,1,1,20,255,215,1,1,1,36,255,215,1,1,1,38,255,215,1,1,1,42,255,236,1,1,1,44,255,236,1,1,1,46,255,236,1,1,1,48,255,236,1,1,1,50,255,236,1,1,1,52,255,236,1,1,1,54,255,215,1,1,1,56,255,195,1,1,1,58,255,195,1,1,1,71,255,215,1,1,1,250,255,215,1,1,1,252,255,215,1,1,1,254,255,215,1,1,2,0,255,195,1,1,2,7,255,92,1,1,2,11,255,92,1,1,2,95,255,215,1,1,2,97,255,236,1,1,3,73,255,215,1,1,3,75,255,215,1,1,3,77,255,215,1,1,3,79,255,215,1,1,3,81,255,215,1,1,3,83,255,215,1,1,3,85,255,215,1,1,3,87,255,215,1,1,3,89,255,215,1,1,3,91,255,215,1,1,3,93,255,215,1,1,3,95,255,215,1,1,3,97,255,236,1,1,3,99,255,236,1,1,3,101,255,236,1,1,3,103,255,236,1,1,3,105,255,236,1,1,3,107,255,236,1,1,3,109,255,236,1,1,3,111,255,195,1,1,3,113,255,195,1,1,3,115,255,195,1,1,3,143,255,215,1,3,0,5,255,92,1,3,0,10,255,92,1,3,0,38,255,215,1,3,0,42,255,215,1,3,0,50,255,215,1,3,0,52,255,215,1,3,0,55,255,215,1,3,0,56,255,236,1,3,0,57,255,215,1,3,0,58,255,215,1,3,0,60,255,195,1,3,0,137,255,215,1,3,0,148,255,215,1,3,0,149,255,215,1,3,0,150,255,215,1,3,0,151,255,215,1,3,0,152,255,215,1,3,0,154,255,215,1,3,0,155,255,236,1,3,0,156,255,236,1,3,0,157,255,236,1,3,0,158,255,236,1,3,0,159,255,195,1,3,0,200,255,215,1,3,0,202,255,215,1,3,0,204,255,215,1,3,0,206,255,215,1,3,0,222,255,215,1,3,0,224,255,215,1,3,0,226,255,215,1,3,0,228,255,215,1,3,1,14,255,215,1,3,1,16,255,215,1,3,1,18,255,215,1,3,1,20,255,215,1,3,1,36,255,215,1,3,1,38,255,215,1,3,1,42,255,236,1,3,1,44,255,236,1,3,1,46,255,236,1,3,1,48,255,236,1,3,1,50,255,236,1,3,1,52,255,236,1,3,1,54,255,215,1,3,1,56,255,195,1,3,1,58,255,195,1,3,1,71,255,215,1,3,1,250,255,215,1,3,1,252,255,215,1,3,1,254,255,215,1,3,2,0,255,195,1,3,2,7,255,92,1,3,2,11,255,92,1,3,2,95,255,215,1,3,2,97,255,236,1,3,3,73,255,215,1,3,3,75,255,215,1,3,3,77,255,215,1,3,3,79,255,215,1,3,3,81,255,215,1,3,3,83,255,215,1,3,3,85,255,215,1,3,3,87,255,215,1,3,3,89,255,215,1,3,3,91,255,215,1,3,3,93,255,215,1,3,3,95,255,215,1,3,3,97,255,236,1,3,3,99,255,236,1,3,3,101,255,236,1,3,3,103,255,236,1,3,3,105,255,236,1,3,3,107,255,236,1,3,3,109,255,236,1,3,3,111,255,195,1,3,3,113,255,195,1,3,3,115,255,195,1,3,3,143,255,215,1,8,0,5,255,236,1,8,0,10,255,236,1,8,2,7,255,236,1,8,2,11,255,236,1,14,0,15,255,174,1,14,0,17,255,174,1,14,0,36,255,215,1,14,0,55,255,195,1,14,0,57,255,236,1,14,0,58,255,236,1,14,0,59,255,215,1,14,0,60,255,236,1,14,0,61,255,236,1,14,0,130,255,215,1,14,0,131,255,215,1,14,0,132,255,215,1,14,0,133,255,215,1,14,0,134,255,215,1,14,0,135,255,215,1,14,0,159,255,236,1,14,0,194,255,215,1,14,0,196,255,215,1,14,0,198,255,215,1,14,1,36,255,195,1,14,1,38,255,195,1,14,1,54,255,236,1,14,1,56,255,236,1,14,1,58,255,236,1,14,1,59,255,236,1,14,1,61,255,236,1,14,1,63,255,236,1,14,1,67,255,215,1,14,1,160,255,236,1,14,1,250,255,236,1,14,1,252,255,236,1,14,1,254,255,236,1,14,2,0,255,236,1,14,2,8,255,174,1,14,2,12,255,174,1,14,2,88,255,215,1,14,3,29,255,215,1,14,3,31,255,215,1,14,3,33,255,215,1,14,3,35,255,215,1,14,3,37,255,215,1,14,3,39,255,215,1,14,3,41,255,215,1,14,3,43,255,215,1,14,3,45,255,215,1,14,3,47,255,215,1,14,3,49,255,215,1,14,3,51,255,215,1,14,3,111,255,236,1,14,3,113,255,236,1,14,3,115,255,236,1,14,3,143,255,195,1,16,0,15,255,174,1,16,0,17,255,174,1,16,0,36,255,215,1,16,0,55,255,195,1,16,0,57,255,236,1,16,0,58,255,236,1,16,0,59,255,215,1,16,0,60,255,236,1,16,0,61,255,236,1,16,0,130,255,215,1,16,0,131,255,215,1,16,0,132,255,215,1,16,0,133,255,215,1,16,0,134,255,215,1,16,0,135,255,215,1,16,0,159,255,236,1,16,0,194,255,215,1,16,0,196,255,215,1,16,0,198,255,215,1,16,1,36,255,195,1,16,1,38,255,195,1,16,1,54,255,236,1,16,1,56,255,236,1,16,1,58,255,236,1,16,1,59,255,236,1,16,1,61,255,236,1,16,1,63,255,236,1,16,1,67,255,215,1,16,1,160,255,236,1,16,1,250,255,236,1,16,1,252,255,236,1,16,1,254,255,236,1,16,2,0,255,236,1,16,2,8,255,174,1,16,2,12,255,174,1,16,2,88,255,215,1,16,3,29,255,215,1,16,3,31,255,215,1,16,3,33,255,215,1,16,3,35,255,215,1,16,3,37,255,215,1,16,3,39,255,215,1,16,3,41,255,215,1,16,3,43,255,215,1,16,3,45,255,215,1,16,3,47,255,215,1,16,3,49,255,215,1,16,3,51,255,215,1,16,3,111,255,236,1,16,3,113,255,236,1,16,3,115,255,236,1,16,3,143,255,195,1,18,0,15,255,174,1,18,0,17,255,174,1,18,0,36,255,215,1,18,0,55,255,195,1,18,0,57,255,236,1,18,0,58,255,236,1,18,0,59,255,215,1,18,0,60,255,236,1,18,0,61,255,236,1,18,0,130,255,215,1,18,0,131,255,215,1,18,0,132,255,215,1,18,0,133,255,215,1,18,0,134,255,215,1,18,0,135,255,215,1,18,0,159,255,236,1,18,0,194,255,215,1,18,0,196,255,215,1,18,0,198,255,215,1,18,1,36,255,195,1,18,1,38,255,195,1,18,1,54,255,236,1,18,1,56,255,236,1,18,1,58,255,236,1,18,1,59,255,236,1,18,1,61,255,236,1,18,1,63,255,236,1,18,1,67,255,215,1,18,1,160,255,236,1,18,1,250,255,236,1,18,1,252,255,236,1,18,1,254,255,236,1,18,2,0,255,236,1,18,2,8,255,174,1,18,2,12,255,174,1,18,2,88,255,215,1,18,3,29,255,215,1,18,3,31,255,215,1,18,3,33,255,215,1,18,3,35,255,215,1,18,3,37,255,215,1,18,3,39,255,215,1,18,3,41,255,215,1,18,3,43,255,215,1,18,3,45,255,215,1,18,3,47,255,215,1,18,3,49,255,215,1,18,3,51,255,215,1,18,3,111,255,236,1,18,3,113,255,236,1,18,3,115,255,236,1,18,3,143,255,195,1,20,0,45,0,123,1,23,0,5,0,82,1,23,0,10,0,82,1,23,0,68,255,215,1,23,0,70,255,215,1,23,0,71,255,215,1,23,0,72,255,215,1,23,0,74,255,236,1,23,0,82,255,215,1,23,0,84,255,215,1,23,0,162,255,215,1,23,0,163,255,215,1,23,0,164,255,215,1,23,0,165,255,215,1,23,0,166,255,215,1,23,0,167,255,215,1,23,0,168,255,215,1,23,0,169,255,215,1,23,0,170,255,215,1,23,0,171,255,215,1,23,0,172,255,215,1,23,0,173,255,215,1,23,0,180,255,215,1,23,0,181,255,215,1,23,0,182,255,215,1,23,0,183,255,215,1,23,0,184,255,215,1,23,0,186,255,215,1,23,0,195,255,215,1,23,0,197,255,215,1,23,0,199,255,215,1,23,0,201,255,215,1,23,0,203,255,215,1,23,0,205,255,215,1,23,0,207,255,215,1,23,0,209,255,215,1,23,0,211,255,215,1,23,0,213,255,215,1,23,0,215,255,215,1,23,0,217,255,215,1,23,0,219,255,215,1,23,0,221,255,215,1,23,0,223,255,236,1,23,0,225,255,236,1,23,0,227,255,236,1,23,0,229,255,236,1,23,1,15,255,215,1,23,1,17,255,215,1,23,1,19,255,215,1,23,1,21,255,215,1,23,1,68,255,215,1,23,1,70,255,215,1,23,1,72,255,215,1,23,2,7,0,82,1,23,2,11,0,82,1,23,2,89,255,215,1,23,2,96,255,215,1,23,3,30,255,215,1,23,3,32,255,215,1,23,3,34,255,215,1,23,3,38,255,215,1,23,3,40,255,215,1,23,3,42,255,215,1,23,3,44,255,215,1,23,3,46,255,215,1,23,3,48,255,215,1,23,3,50,255,215,1,23,3,52,255,215,1,23,3,54,255,215,1,23,3,56,255,215,1,23,3,58,255,215,1,23,3,60,255,215,1,23,3,64,255,215,1,23,3,66,255,215,1,23,3,68,255,215,1,23,3,74,255,215,1,23,3,76,255,215,1,23,3,78,255,215,1,23,3,82,255,215,1,23,3,84,255,215,1,23,3,86,255,215,1,23,3,88,255,215,1,23,3,90,255,215,1,23,3,92,255,215,1,23,3,94,255,215,1,23,3,96,255,215,1,25,0,5,0,82,1,25,0,10,0,82,1,25,0,68,255,215,1,25,0,70,255,215,1,25,0,71,255,215,1,25,0,72,255,215,1,25,0,74,255,236,1,25,0,82,255,215,1,25,0,84,255,215,1,25,0,162,255,215,1,25,0,163,255,215,1,25,0,164,255,215,1,25,0,165,255,215,1,25,0,166,255,215,1,25,0,167,255,215,1,25,0,168,255,215,1,25,0,169,255,215,1,25,0,170,255,215,1,25,0,171,255,215,1,25,0,172,255,215,1,25,0,173,255,215,1,25,0,180,255,215,1,25,0,181,255,215,1,25,0,182,255,215,1,25,0,183,255,215,1,25,0,184,255,215,1,25,0,186,255,215,1,25,0,195,255,215,1,25,0,197,255,215,1,25,0,199,255,215,1,25,0,201,255,215,1,25,0,203,255,215,1,25,0,205,255,215,1,25,0,207,255,215,1,25,0,209,255,215,1,25,0,211,255,215,1,25,0,213,255,215,1,25,0,215,255,215,1,25,0,217,255,215,1,25,0,219,255,215,1,25,0,221,255,215,1,25,0,223,255,236,1,25,0,225,255,236,1,25,0,227,255,236,1,25,0,229,255,236,1,25,1,15,255,215,1,25,1,17,255,215,1,25,1,19,255,215,1,25,1,21,255,215,1,25,1,68,255,215,1,25,1,70,255,215,1,25,1,72,255,215,1,25,2,7,0,82,1,25,2,11,0,82,1,25,2,89,255,215,1,25,2,96,255,215,1,25,3,30,255,215,1,25,3,32,255,215,1,25,3,34,255,215,1,25,3,38,255,215,1,25,3,40,255,215,1,25,3,42,255,215,1,25,3,44,255,215,1,25,3,46,255,215,1,25,3,48,255,215,1,25,3,50,255,215,1,25,3,52,255,215,1,25,3,54,255,215,1,25,3,56,255,215,1,25,3,58,255,215,1,25,3,60,255,215,1,25,3,64,255,215,1,25,3,66,255,215,1,25,3,68,255,215,1,25,3,74,255,215,1,25,3,76,255,215,1,25,3,78,255,215,1,25,3,82,255,215,1,25,3,84,255,215,1,25,3,86,255,215,1,25,3,88,255,215,1,25,3,90,255,215,1,25,3,92,255,215,1,25,3,94,255,215,1,25,3,96,255,215,1,27,0,5,0,82,1,27,0,10,0,82,1,27,0,68,255,215,1,27,0,70,255,215,1,27,0,71,255,215,1,27,0,72,255,215,1,27,0,74,255,236,1,27,0,82,255,215,1,27,0,84,255,215,1,27,0,162,255,215,1,27,0,163,255,215,1,27,0,164,255,215,1,27,0,165,255,215,1,27,0,166,255,215,1,27,0,167,255,215,1,27,0,168,255,215,1,27,0,169,255,215,1,27,0,170,255,215,1,27,0,171,255,215,1,27,0,172,255,215,1,27,0,173,255,215,1,27,0,180,255,215,1,27,0,181,255,215,1,27,0,182,255,215,1,27,0,183,255,215,1,27,0,184,255,215,1,27,0,186,255,215,1,27,0,195,255,215,1,27,0,197,255,215,1,27,0,199,255,215,1,27,0,201,255,215,1,27,0,203,255,215,1,27,0,205,255,215,1,27,0,207,255,215,1,27,0,209,255,215,1,27,0,211,255,215,1,27,0,213,255,215,1,27,0,215,255,215,1,27,0,217,255,215,1,27,0,219,255,215,1,27,0,221,255,215,1,27,0,223,255,236,1,27,0,225,255,236,1,27,0,227,255,236,1,27,0,229,255,236,1,27,1,15,255,215,1,27,1,17,255,215,1,27,1,19,255,215,1,27,1,21,255,215,1,27,1,68,255,215,1,27,1,70,255,215,1,27,1,72,255,215,1,27,2,7,0,82,1,27,2,11,0,82,1,27,2,89,255,215,1,27,2,96,255,215,1,27,3,30,255,215,1,27,3,32,255,215,1,27,3,34,255,215,1,27,3,38,255,215,1,27,3,40,255,215,1,27,3,42,255,215,1,27,3,44,255,215,1,27,3,46,255,215,1,27,3,48,255,215,1,27,3,50,255,215,1,27,3,52,255,215,1,27,3,54,255,215,1,27,3,56,255,215,1,27,3,58,255,215,1,27,3,60,255,215,1,27,3,64,255,215,1,27,3,66,255,215,1,27,3,68,255,215,1,27,3,74,255,215,1,27,3,76,255,215,1,27,3,78,255,215,1,27,3,82,255,215,1,27,3,84,255,215,1,27,3,86,255,215,1,27,3,88,255,215,1,27,3,90,255,215,1,27,3,92,255,215,1,27,3,94,255,215,1,27,3,96,255,215,1,36,0,15,255,133,1,36,0,16,255,174,1,36,0,17,255,133,1,36,0,34,0,41,1,36,0,36,255,113,1,36,0,38,255,215,1,36,0,42,255,215,1,36,0,50,255,215,1,36,0,52,255,215,1,36,0,55,0,41,1,36,0,68,255,92,1,36,0,70,255,113,1,36,0,71,255,113,1,36,0,72,255,113,1,36,0,74,255,113,1,36,0,80,255,154,1,36,0,81,255,154,1,36,0,82,255,113,1,36,0,83,255,154,1,36,0,84,255,113,1,36,0,85,255,154,1,36,0,86,255,133,1,36,0,88,255,154,1,36,0,89,255,215,1,36,0,90,255,215,1,36,0,91,255,215,1,36,0,92,255,215,1,36,0,93,255,174,1,36,0,130,255,113,1,36,0,131,255,113,1,36,0,132,255,113,1,36,0,133,255,113,1,36,0,134,255,113,1,36,0,135,255,113,1,36,0,137,255,215,1,36,0,148,255,215,1,36,0,149,255,215,1,36,0,150,255,215,1,36,0,151,255,215,1,36,0,152,255,215,1,36,0,154,255,215,1,36,0,162,255,113,1,36,0,163,255,92,1,36,0,164,255,92,1,36,0,165,255,92,1,36,0,166,255,92,1,36,0,167,255,92,1,36,0,168,255,92,1,36,0,169,255,113,1,36,0,170,255,113,1,36,0,171,255,113,1,36,0,172,255,113,1,36,0,173,255,113,1,36,0,180,255,113,1,36,0,181,255,113,1,36,0,182,255,113,1,36,0,183,255,113,1,36,0,184,255,113,1,36,0,186,255,113,1,36,0,187,255,154,1,36,0,188,255,154,1,36,0,189,255,154,1,36,0,190,255,154,1,36,0,191,255,215,1,36,0,194,255,113,1,36,0,195,255,92,1,36,0,196,255,113,1,36,0,197,255,92,1,36,0,198,255,113,1,36,0,199,255,92,1,36,0,200,255,215,1,36,0,201,255,113,1,36,0,202,255,215,1,36,0,203,255,113,1,36,0,204,255,215,1,36,0,205,255,113,1,36,0,206,255,215,1,36,0,207,255,113,1,36,0,209,255,113,1,36,0,211,255,113,1,36,0,213,255,113,1,36,0,215,255,113,1,36,0,217,255,113,1,36,0,219,255,113,1,36,0,221,255,113,1,36,0,222,255,215,1,36,0,223,255,113,1,36,0,224,255,215,1,36,0,225,255,113,1,36,0,226,255,215,1,36,0,227,255,113,1,36,0,228,255,215,1,36,0,229,255,113,1,36,0,250,255,154,1,36,1,6,255,154,1,36,1,8,255,154,1,36,1,13,255,154,1,36,1,14,255,215,1,36,1,15,255,113,1,36,1,16,255,215,1,36,1,17,255,113,1,36,1,18,255,215,1,36,1,19,255,113,1,36,1,20,255,215,1,36,1,21,255,113,1,36,1,23,255,154,1,36,1,25,255,154,1,36,1,29,255,133,1,36,1,33,255,133,1,36,1,36,0,41,1,36,1,38,0,41,1,36,1,43,255,154,1,36,1,45,255,154,1,36,1,47,255,154,1,36,1,49,255,154,1,36,1,51,255,154,1,36,1,53,255,154,1,36,1,55,255,215,1,36,1,60,255,174,1,36,1,62,255,174,1,36,1,64,255,174,1,36,1,67,255,113,1,36,1,68,255,92,1,36,1,70,255,92,1,36,1,71,255,215,1,36,1,72,255,113,1,36,1,74,255,133,1,36,1,251,255,215,1,36,1,253,255,215,1,36,2,2,255,174,1,36,2,3,255,174,1,36,2,4,255,174,1,36,2,8,255,133,1,36,2,12,255,133,1,36,2,87,255,154,1,36,2,88,255,113,1,36,2,89,255,92,1,36,2,95,255,215,1,36,2,96,255,113,1,36,2,98,255,154,1,36,3,29,255,113,1,36,3,30,255,92,1,36,3,31,255,113,1,36,3,32,255,92,1,36,3,33,255,113,1,36,3,34,255,92,1,36,3,35,255,113,1,36,3,37,255,113,1,36,3,38,255,92,1,36,3,39,255,113,1,36,3,40,255,92,1,36,3,41,255,113,1,36,3,42,255,92,1,36,3,43,255,113,1,36,3,44,255,92,1,36,3,45,255,113,1,36,3,46,255,92,1,36,3,47,255,113,1,36,3,48,255,92,1,36,3,49,255,113,1,36,3,50,255,92,1,36,3,51,255,113,1,36,3,52,255,92,1,36,3,54,255,113,1,36,3,56,255,113,1,36,3,58,255,113,1,36,3,60,255,113,1,36,3,64,255,113,1,36,3,66,255,113,1,36,3,68,255,113,1,36,3,73,255,215,1,36,3,74,255,113,1,36,3,75,255,215,1,36,3,76,255,113,1,36,3,77,255,215,1,36,3,78,255,113,1,36,3,79,255,215,1,36,3,81,255,215,1,36,3,82,255,113,1,36,3,83,255,215,1,36,3,84,255,113,1,36,3,85,255,215,1,36,3,86,255,113,1,36,3,87,255,215,1,36,3,88,255,113,1,36,3,89,255,215,1,36,3,90,255,113,1,36,3,91,255,215,1,36,3,92,255,113,1,36,3,93,255,215,1,36,3,94,255,113,1,36,3,95,255,215,1,36,3,96,255,113,1,36,3,98,255,154,1,36,3,100,255,154,1,36,3,102,255,154,1,36,3,104,255,154,1,36,3,106,255,154,1,36,3,108,255,154,1,36,3,110,255,154,1,36,3,112,255,215,1,36,3,143,0,41,1,37,0,5,0,41,1,37,0,10,0,41,1,37,2,7,0,41,1,37,2,11,0,41,1,38,0,15,255,133,1,38,0,16,255,174,1,38,0,17,255,133,1,38,0,34,0,41,1,38,0,36,255,113,1,38,0,38,255,215,1,38,0,42,255,215,1,38,0,50,255,215,1,38,0,52,255,215,1,38,0,55,0,41,1,38,0,68,255,92,1,38,0,70,255,113,1,38,0,71,255,113,1,38,0,72,255,113,1,38,0,74,255,113,1,38,0,80,255,154,1,38,0,81,255,154,1,38,0,82,255,113,1,38,0,83,255,154,1,38,0,84,255,113,1,38,0,85,255,154,1,38,0,86,255,133,1,38,0,88,255,154,1,38,0,89,255,215,1,38,0,90,255,215,1,38,0,91,255,215,1,38,0,92,255,215,1,38,0,93,255,174,1,38,0,130,255,113,1,38,0,131,255,113,1,38,0,132,255,113,1,38,0,133,255,113,1,38,0,134,255,113,1,38,0,135,255,113,1,38,0,137,255,215,1,38,0,148,255,215,1,38,0,149,255,215,1,38,0,150,255,215,1,38,0,151,255,215,1,38,0,152,255,215,1,38,0,154,255,215,1,38,0,162,255,113,1,38,0,163,255,92,1,38,0,164,255,92,1,38,0,165,255,92,1,38,0,166,255,92,1,38,0,167,255,92,1,38,0,168,255,92,1,38,0,169,255,113,1,38,0,170,255,113,1,38,0,171,255,113,1,38,0,172,255,113,1,38,0,173,255,113,1,38,0,180,255,113,1,38,0,181,255,113,1,38,0,182,255,113,1,38,0,183,255,113,1,38,0,184,255,113,1,38,0,186,255,113,1,38,0,187,255,154,1,38,0,188,255,154,1,38,0,189,255,154,1,38,0,190,255,154,1,38,0,191,255,215,1,38,0,194,255,113,1,38,0,195,255,92,1,38,0,196,255,113,1,38,0,197,255,92,1,38,0,198,255,113,1,38,0,199,255,92,1,38,0,200,255,215,1,38,0,201,255,113,1,38,0,202,255,215,1,38,0,203,255,113,1,38,0,204,255,215,1,38,0,205,255,113,1,38,0,206,255,215,1,38,0,207,255,113,1,38,0,209,255,113,1,38,0,211,255,113,1,38,0,213,255,113,1,38,0,215,255,113,1,38,0,217,255,113,1,38,0,219,255,113,1,38,0,221,255,113,1,38,0,222,255,215,1,38,0,223,255,113,1,38,0,224,255,215,1,38,0,225,255,113,1,38,0,226,255,215,1,38,0,227,255,113,1,38,0,228,255,215,1,38,0,229,255,113,1,38,0,250,255,154,1,38,1,6,255,154,1,38,1,8,255,154,1,38,1,13,255,154,1,38,1,14,255,215,1,38,1,15,255,113,1,38,1,16,255,215,1,38,1,17,255,113,1,38,1,18,255,215,1,38,1,19,255,113,1,38,1,20,255,215,1,38,1,21,255,113,1,38,1,23,255,154,1,38,1,25,255,154,1,38,1,29,255,133,1,38,1,33,255,133,1,38,1,36,0,41,1,38,1,38,0,41,1,38,1,43,255,154,1,38,1,45,255,154,1,38,1,47,255,154,1,38,1,49,255,154,1,38,1,51,255,154,1,38,1,53,255,154,1,38,1,55,255,215,1,38,1,60,255,174,1,38,1,62,255,174,1,38,1,64,255,174,1,38,1,67,255,113,1,38,1,68,255,92,1,38,1,70,255,92,1,38,1,71,255,215,1,38,1,72,255,113,1,38,1,74,255,133,1,38,1,251,255,215,1,38,1,253,255,215,1,38,2,2,255,174,1,38,2,3,255,174,1,38,2,4,255,174,1,38,2,8,255,133,1,38,2,12,255,133,1,38,2,87,255,154,1,38,2,88,255,113,1,38,2,89,255,92,1,38,2,95,255,215,1,38,2,96,255,113,1,38,2,98,255,154,1,38,3,29,255,113,1,38,3,30,255,92,1,38,3,31,255,113,1,38,3,32,255,92,1,38,3,33,255,113,1,38,3,34,255,92,1,38,3,35,255,113,1,38,3,37,255,113,1,38,3,38,255,92,1,38,3,39,255,113,1,38,3,40,255,92,1,38,3,41,255,113,1,38,3,42,255,92,1,38,3,43,255,113,1,38,3,44,255,92,1,38,3,45,255,113,1,38,3,46,255,92,1,38,3,47,255,113,1,38,3,48,255,92,1,38,3,49,255,113,1,38,3,50,255,92,1,38,3,51,255,113,1,38,3,52,255,92,1,38,3,54,255,113,1,38,3,56,255,113,1,38,3,58,255,113,1,38,3,60,255,113,1,38,3,64,255,113,1,38,3,66,255,113,1,38,3,68,255,113,1,38,3,73,255,215,1,38,3,74,255,113,1,38,3,75,255,215,1,38,3,76,255,113,1,38,3,77,255,215,1,38,3,78,255,113,1,38,3,79,255,215,1,38,3,81,255,215,1,38,3,82,255,113,1,38,3,83,255,215,1,38,3,84,255,113,1,38,3,85,255,215,1,38,3,86,255,113,1,38,3,87,255,215,1,38,3,88,255,113,1,38,3,89,255,215,1,38,3,90,255,113,1,38,3,91,255,215,1,38,3,92,255,113,1,38,3,93,255,215,1,38,3,94,255,113,1,38,3,95,255,215,1,38,3,96,255,113,1,38,3,98,255,154,1,38,3,100,255,154,1,38,3,102,255,154,1,38,3,104,255,154,1,38,3,106,255,154,1,38,3,108,255,154,1,38,3,110,255,154,1,38,3,112,255,215,1,38,3,143,0,41,1,39,0,5,0,41,1,39,0,10,0,41,1,39,2,7,0,41,1,39,2,11,0,41,1,40,0,15,255,133,1,40,0,16,255,174,1,40,0,17,255,133,1,40,0,34,0,41,1,40,0,36,255,113,1,40,0,38,255,215,1,40,0,42,255,215,1,40,0,50,255,215,1,40,0,52,255,215,1,40,0,55,0,41,1,40,0,68,255,92,1,40,0,70,255,113,1,40,0,71,255,113,1,40,0,72,255,113,1,40,0,74,255,113,1,40,0,80,255,154,1,40,0,81,255,154,1,40,0,82,255,113,1,40,0,83,255,154,1,40,0,84,255,113,1,40,0,85,255,154,1,40,0,86,255,133,1,40,0,88,255,154,1,40,0,89,255,215,1,40,0,90,255,215,1,40,0,91,255,215,1,40,0,92,255,215,1,40,0,93,255,174,1,40,0,130,255,113,1,40,0,131,255,113,1,40,0,132,255,113,1,40,0,133,255,113,1,40,0,134,255,113,1,40,0,135,255,113,1,40,0,137,255,215,1,40,0,148,255,215,1,40,0,149,255,215,1,40,0,150,255,215,1,40,0,151,255,215,1,40,0,152,255,215,1,40,0,154,255,215,1,40,0,162,255,113,1,40,0,163,255,92,1,40,0,164,255,92,1,40,0,165,255,92,1,40,0,166,255,92,1,40,0,167,255,92,1,40,0,168,255,92,1,40,0,169,255,113,1,40,0,170,255,113,1,40,0,171,255,113,1,40,0,172,255,113,1,40,0,173,255,113,1,40,0,180,255,113,1,40,0,181,255,113,1,40,0,182,255,113,1,40,0,183,255,113,1,40,0,184,255,113,1,40,0,186,255,113,1,40,0,187,255,154,1,40,0,188,255,154,1,40,0,189,255,154,1,40,0,190,255,154,1,40,0,191,255,215,1,40,0,194,255,113,1,40,0,195,255,92,1,40,0,196,255,113,1,40,0,197,255,92,1,40,0,198,255,113,1,40,0,199,255,92,1,40,0,200,255,215,1,40,0,201,255,113,1,40,0,202,255,215,1,40,0,203,255,113,1,40,0,204,255,215,1,40,0,205,255,113,1,40,0,206,255,215,1,40,0,207,255,113,1,40,0,209,255,113,1,40,0,211,255,113,1,40,0,213,255,113,1,40,0,215,255,113,1,40,0,217,255,113,1,40,0,219,255,113,1,40,0,221,255,113,1,40,0,222,255,215,1,40,0,223,255,113,1,40,0,224,255,215,1,40,0,225,255,113,1,40,0,226,255,215,1,40,0,227,255,113,1,40,0,228,255,215,1,40,0,229,255,113,1,40,0,250,255,154,1,40,1,6,255,154,1,40,1,8,255,154,1,40,1,13,255,154,1,40,1,14,255,215,1,40,1,15,255,113,1,40,1,16,255,215,1,40,1,17,255,113,1,40,1,18,255,215,1,40,1,19,255,113,1,40,1,20,255,215,1,40,1,21,255,113,1,40,1,23,255,154,1,40,1,25,255,154,1,40,1,29,255,133,1,40,1,33,255,133,1,40,1,36,0,41,1,40,1,38,0,41,1,40,1,43,255,154,1,40,1,45,255,154,1,40,1,47,255,154,1,40,1,49,255,154,1,40,1,51,255,154,1,40,1,53,255,154,1,40,1,55,255,215,1,40,1,60,255,174,1,40,1,62,255,174,1,40,1,64,255,174,1,40,1,67,255,113,1,40,1,68,255,92,1,40,1,70,255,92,1,40,1,71,255,215,1,40,1,72,255,113,1,40,1,74,255,133,1,40,1,251,255,215,1,40,1,253,255,215,1,40,2,2,255,174,1,40,2,3,255,174,1,40,2,4,255,174,1,40,2,8,255,133,1,40,2,12,255,133,1,40,2,87,255,154,1,40,2,88,255,113,1,40,2,89,255,92,1,40,2,95,255,215,1,40,2,96,255,113,1,40,2,98,255,154,1,40,3,29,255,113,1,40,3,30,255,92,1,40,3,31,255,113,1,40,3,32,255,92,1,40,3,33,255,113,1,40,3,34,255,92,1,40,3,35,255,113,1,40,3,37,255,113,1,40,3,38,255,92,1,40,3,39,255,113,1,40,3,40,255,92,1,40,3,41,255,113,1,40,3,42,255,92,1,40,3,43,255,113,1,40,3,44,255,92,1,40,3,45,255,113,1,40,3,46,255,92,1,40,3,47,255,113,1,40,3,48,255,92,1,40,3,49,255,113,1,40,3,50,255,92,1,40,3,51,255,113,1,40,3,52,255,92,1,40,3,54,255,113,1,40,3,56,255,113,1,40,3,58,255,113,1,40,3,60,255,113,1,40,3,64,255,113,1,40,3,66,255,113,1,40,3,68,255,113,1,40,3,73,255,215,1,40,3,74,255,113,1,40,3,75,255,215,1,40,3,76,255,113,1,40,3,77,255,215,1,40,3,78,255,113,1,40,3,79,255,215,1,40,3,81,255,215,1,40,3,82,255,113,1,40,3,83,255,215,1,40,3,84,255,113,1,40,3,85,255,215,1,40,3,86,255,113,1,40,3,87,255,215,1,40,3,88,255,113,1,40,3,89,255,215,1,40,3,90,255,113,1,40,3,91,255,215,1,40,3,92,255,113,1,40,3,93,255,215,1,40,3,94,255,113,1,40,3,95,255,215,1,40,3,96,255,113,1,40,3,98,255,154,1,40,3,100,255,154,1,40,3,102,255,154,1,40,3,104,255,154,1,40,3,106,255,154,1,40,3,108,255,154,1,40,3,110,255,154,1,40,3,112,255,215,1,40,3,143,0,41,1,42,0,15,255,215,1,42,0,17,255,215,1,42,0,36,255,236,1,42,0,130,255,236,1,42,0,131,255,236,1,42,0,132,255,236,1,42,0,133,255,236,1,42,0,134,255,236,1,42,0,135,255,236,1,42,0,194,255,236,1,42,0,196,255,236,1,42,0,198,255,236,1,42,1,67,255,236,1,42,2,8,255,215,1,42,2,12,255,215,1,42,2,88,255,236,1,42,3,29,255,236,1,42,3,31,255,236,1,42,3,33,255,236,1,42,3,35,255,236,1,42,3,37,255,236,1,42,3,39,255,236,1,42,3,41,255,236,1,42,3,43,255,236,1,42,3,45,255,236,1,42,3,47,255,236,1,42,3,49,255,236,1,42,3,51,255,236,1,44,0,15,255,215,1,44,0,17,255,215,1,44,0,36,255,236,1,44,0,130,255,236,1,44,0,131,255,236,1,44,0,132,255,236,1,44,0,133,255,236,1,44,0,134,255,236,1,44,0,135,255,236,1,44,0,194,255,236,1,44,0,196,255,236,1,44,0,198,255,236,1,44,1,67,255,236,1,44,2,8,255,215,1,44,2,12,255,215,1,44,2,88,255,236,1,44,3,29,255,236,1,44,3,31,255,236,1,44,3,33,255,236,1,44,3,35,255,236,1,44,3,37,255,236,1,44,3,39,255,236,1,44,3,41,255,236,1,44,3,43,255,236,1,44,3,45,255,236,1,44,3,47,255,236,1,44,3,49,255,236,1,44,3,51,255,236,1,46,0,15,255,215,1,46,0,17,255,215,1,46,0,36,255,236,1,46,0,130,255,236,1,46,0,131,255,236,1,46,0,132,255,236,1,46,0,133,255,236,1,46,0,134,255,236,1,46,0,135,255,236,1,46,0,194,255,236,1,46,0,196,255,236,1,46,0,198,255,236,1,46,1,67,255,236,1,46,2,8,255,215,1,46,2,12,255,215,1,46,2,88,255,236,1,46,3,29,255,236,1,46,3,31,255,236,1,46,3,33,255,236,1,46,3,35,255,236,1,46,3,37,255,236,1,46,3,39,255,236,1,46,3,41,255,236,1,46,3,43,255,236,1,46,3,45,255,236,1,46,3,47,255,236,1,46,3,49,255,236,1,46,3,51,255,236,1,48,0,15,255,215,1,48,0,17,255,215,1,48,0,36,255,236,1,48,0,130,255,236,1,48,0,131,255,236,1,48,0,132,255,236,1,48,0,133,255,236,1,48,0,134,255,236,1,48,0,135,255,236,1,48,0,194,255,236,1,48,0,196,255,236,1,48,0,198,255,236,1,48,1,67,255,236,1,48,2,8,255,215,1,48,2,12,255,215,1,48,2,88,255,236,1,48,3,29,255,236,1,48,3,31,255,236,1,48,3,33,255,236,1,48,3,35,255,236,1,48,3,37,255,236,1,48,3,39,255,236,1,48,3,41,255,236,1,48,3,43,255,236,1,48,3,45,255,236,1,48,3,47,255,236,1,48,3,49,255,236,1,48,3,51,255,236,1,50,0,15,255,215,1,50,0,17,255,215,1,50,0,36,255,236,1,50,0,130,255,236,1,50,0,131,255,236,1,50,0,132,255,236,1,50,0,133,255,236,1,50,0,134,255,236,1,50,0,135,255,236,1,50,0,194,255,236,1,50,0,196,255,236,1,50,0,198,255,236,1,50,1,67,255,236,1,50,2,8,255,215,1,50,2,12,255,215,1,50,2,88,255,236,1,50,3,29,255,236,1,50,3,31,255,236,1,50,3,33,255,236,1,50,3,35,255,236,1,50,3,37,255,236,1,50,3,39,255,236,1,50,3,41,255,236,1,50,3,43,255,236,1,50,3,45,255,236,1,50,3,47,255,236,1,50,3,49,255,236,1,50,3,51,255,236,1,52,0,15,255,215,1,52,0,17,255,215,1,52,0,36,255,236,1,52,0,130,255,236,1,52,0,131,255,236,1,52,0,132,255,236,1,52,0,133,255,236,1,52,0,134,255,236,1,52,0,135,255,236,1,52,0,194,255,236,1,52,0,196,255,236,1,52,0,198,255,236,1,52,1,67,255,236,1,52,2,8,255,215,1,52,2,12,255,215,1,52,2,88,255,236,1,52,3,29,255,236,1,52,3,31,255,236,1,52,3,33,255,236,1,52,3,35,255,236,1,52,3,37,255,236,1,52,3,39,255,236,1,52,3,41,255,236,1,52,3,43,255,236,1,52,3,45,255,236,1,52,3,47,255,236,1,52,3,49,255,236,1,52,3,51,255,236,1,54,0,15,255,154,1,54,0,17,255,154,1,54,0,34,0,41,1,54,0,36,255,174,1,54,0,38,255,236,1,54,0,42,255,236,1,54,0,50,255,236,1,54,0,52,255,236,1,54,0,68,255,215,1,54,0,70,255,215,1,54,0,71,255,215,1,54,0,72,255,215,1,54,0,74,255,236,1,54,0,80,255,236,1,54,0,81,255,236,1,54,0,82,255,215,1,54,0,83,255,236,1,54,0,84,255,215,1,54,0,85,255,236,1,54,0,86,255,236,1,54,0,88,255,236,1,54,0,130,255,174,1,54,0,131,255,174,1,54,0,132,255,174,1,54,0,133,255,174,1,54,0,134,255,174,1,54,0,135,255,174,1,54,0,137,255,236,1,54,0,148,255,236,1,54,0,149,255,236,1,54,0,150,255,236,1,54,0,151,255,236,1,54,0,152,255,236,1,54,0,154,255,236,1,54,0,162,255,215,1,54,0,163,255,215,1,54,0,164,255,215,1,54,0,165,255,215,1,54,0,166,255,215,1,54,0,167,255,215,1,54,0,168,255,215,1,54,0,169,255,215,1,54,0,170,255,215,1,54,0,171,255,215,1,54,0,172,255,215,1,54,0,173,255,215,1,54,0,180,255,215,1,54,0,181,255,215,1,54,0,182,255,215,1,54,0,183,255,215,1,54,0,184,255,215,1,54,0,186,255,215,1,54,0,187,255,236,1,54,0,188,255,236,1,54,0,189,255,236,1,54,0,190,255,236,1,54,0,194,255,174,1,54,0,195,255,215,1,54,0,196,255,174,1,54,0,197,255,215,1,54,0,198,255,174,1,54,0,199,255,215,1,54,0,200,255,236,1,54,0,201,255,215,1,54,0,202,255,236,1,54,0,203,255,215,1,54,0,204,255,236,1,54,0,205,255,215,1,54,0,206,255,236,1,54,0,207,255,215,1,54,0,209,255,215,1,54,0,211,255,215,1,54,0,213,255,215,1,54,0,215,255,215,1,54,0,217,255,215,1,54,0,219,255,215,1,54,0,221,255,215,1,54,0,222,255,236,1,54,0,223,255,236,1,54,0,224,255,236,1,54,0,225,255,236,1,54,0,226,255,236,1,54,0,227,255,236,1,54,0,228,255,236,1,54,0,229,255,236,1,54,0,250,255,236,1,54,1,6,255,236,1,54,1,8,255,236,1,54,1,13,255,236,1,54,1,14,255,236,1,54,1,15,255,215,1,54,1,16,255,236,1,54,1,17,255,215,1,54,1,18,255,236,1,54,1,19,255,215,1,54,1,20,255,236,1,54,1,21,255,215,1,54,1,23,255,236,1,54,1,25,255,236,1,54,1,29,255,236,1,54,1,33,255,236,1,54,1,43,255,236,1,54,1,45,255,236,1,54,1,47,255,236,1,54,1,49,255,236,1,54,1,51,255,236,1,54,1,53,255,236,1,54,1,67,255,174,1,54,1,68,255,215,1,54,1,70,255,215,1,54,1,71,255,236,1,54,1,72,255,215,1,54,1,74,255,236,1,54,2,8,255,154,1,54,2,12,255,154,1,54,2,87,255,236,1,54,2,88,255,174,1,54,2,89,255,215,1,54,2,95,255,236,1,54,2,96,255,215,1,54,2,98,255,236,1,54,3,29,255,174,1,54,3,30,255,215,1,54,3,31,255,174,1,54,3,32,255,215,1,54,3,33,255,174,1,54,3,34,255,215,1,54,3,35,255,174,1,54,3,37,255,174,1,54,3,38,255,215,1,54,3,39,255,174,1,54,3,40,255,215,1,54,3,41,255,174,1,54,3,42,255,215,1,54,3,43,255,174,1,54,3,44,255,215,1,54,3,45,255,174,1,54,3,46,255,215,1,54,3,47,255,174,1,54,3,48,255,215,1,54,3,49,255,174,1,54,3,50,255,215,1,54,3,51,255,174,1,54,3,52,255,215,1,54,3,54,255,215,1,54,3,56,255,215,1,54,3,58,255,215,1,54,3,60,255,215,1,54,3,64,255,215,1,54,3,66,255,215,1,54,3,68,255,215,1,54,3,73,255,236,1,54,3,74,255,215,1,54,3,75,255,236,1,54,3,76,255,215,1,54,3,77,255,236,1,54,3,78,255,215,1,54,3,79,255,236,1,54,3,81,255,236,1,54,3,82,255,215,1,54,3,83,255,236,1,54,3,84,255,215,1,54,3,85,255,236,1,54,3,86,255,215,1,54,3,87,255,236,1,54,3,88,255,215,1,54,3,89,255,236,1,54,3,90,255,215,1,54,3,91,255,236,1,54,3,92,255,215,1,54,3,93,255,236,1,54,3,94,255,215,1,54,3,95,255,236,1,54,3,96,255,215,1,54,3,98,255,236,1,54,3,100,255,236,1,54,3,102,255,236,1,54,3,104,255,236,1,54,3,106,255,236,1,54,3,108,255,236,1,54,3,110,255,236,1,55,0,5,0,82,1,55,0,10,0,82,1,55,0,15,255,174,1,55,0,17,255,174,1,55,0,34,0,41,1,55,2,7,0,82,1,55,2,8,255,174,1,55,2,11,0,82,1,55,2,12,255,174,1,56,0,15,255,133,1,56,0,17,255,133,1,56,0,34,0,41,1,56,0,36,255,133,1,56,0,38,255,215,1,56,0,42,255,215,1,56,0,50,255,215,1,56,0,52,255,215,1,56,0,68,255,154,1,56,0,70,255,154,1,56,0,71,255,154,1,56,0,72,255,154,1,56,0,74,255,215,1,56,0,80,255,195,1,56,0,81,255,195,1,56,0,82,255,154,1,56,0,83,255,195,1,56,0,84,255,154,1,56,0,85,255,195,1,56,0,86,255,174,1,56,0,88,255,195,1,56,0,93,255,215,1,56,0,130,255,133,1,56,0,131,255,133,1,56,0,132,255,133,1,56,0,133,255,133,1,56,0,134,255,133,1,56,0,135,255,133,1,56,0,137,255,215,1,56,0,148,255,215,1,56,0,149,255,215,1,56,0,150,255,215,1,56,0,151,255,215,1,56,0,152,255,215,1,56,0,154,255,215,1,56,0,162,255,154,1,56,0,163,255,154,1,56,0,164,255,154,1,56,0,165,255,154,1,56,0,166,255,154,1,56,0,167,255,154,1,56,0,168,255,154,1,56,0,169,255,154,1,56,0,170,255,154,1,56,0,171,255,154,1,56,0,172,255,154,1,56,0,173,255,154,1,56,0,180,255,154,1,56,0,181,255,154,1,56,0,182,255,154,1,56,0,183,255,154,1,56,0,184,255,154,1,56,0,186,255,154,1,56,0,187,255,195,1,56,0,188,255,195,1,56,0,189,255,195,1,56,0,190,255,195,1,56,0,194,255,133,1,56,0,195,255,154,1,56,0,196,255,133,1,56,0,197,255,154,1,56,0,198,255,133,1,56,0,199,255,154,1,56,0,200,255,215,1,56,0,201,255,154,1,56,0,202,255,215,1,56,0,203,255,154,1,56,0,204,255,215,1,56,0,205,255,154,1,56,0,206,255,215,1,56,0,207,255,154,1,56,0,209,255,154,1,56,0,211,255,154,1,56,0,213,255,154,1,56,0,215,255,154,1,56,0,217,255,154,1,56,0,219,255,154,1,56,0,221,255,154,1,56,0,222,255,215,1,56,0,223,255,215,1,56,0,224,255,215,1,56,0,225,255,215,1,56,0,226,255,215,1,56,0,227,255,215,1,56,0,228,255,215,1,56,0,229,255,215,1,56,0,250,255,195,1,56,1,6,255,195,1,56,1,8,255,195,1,56,1,13,255,195,1,56,1,14,255,215,1,56,1,15,255,154,1,56,1,16,255,215,1,56,1,17,255,154,1,56,1,18,255,215,1,56,1,19,255,154,1,56,1,20,255,215,1,56,1,21,255,154,1,56,1,23,255,195,1,56,1,25,255,195,1,56,1,29,255,174,1,56,1,33,255,174,1,56,1,43,255,195,1,56,1,45,255,195,1,56,1,47,255,195,1,56,1,49,255,195,1,56,1,51,255,195,1,56,1,53,255,195,1,56,1,60,255,215,1,56,1,62,255,215,1,56,1,64,255,215,1,56,1,67,255,133,1,56,1,68,255,154,1,56,1,70,255,154,1,56,1,71,255,215,1,56,1,72,255,154,1,56,1,74,255,174,1,56,2,8,255,133,1,56,2,12,255,133,1,56,2,87,255,195,1,56,2,88,255,133,1,56,2,89,255,154,1,56,2,95,255,215,1,56,2,96,255,154,1,56,2,98,255,195,1,56,3,29,255,133,1,56,3,30,255,154,1,56,3,31,255,133,1,56,3,32,255,154,1,56,3,33,255,133,1,56,3,34,255,154,1,56,3,35,255,133,1,56,3,37,255,133,1,56,3,38,255,154,1,56,3,39,255,133,1,56,3,40,255,154,1,56,3,41,255,133,1,56,3,42,255,154,1,56,3,43,255,133,1,56,3,44,255,154,1,56,3,45,255,133,1,56,3,46,255,154,1,56,3,47,255,133,1,56,3,48,255,154,1,56,3,49,255,133,1,56,3,50,255,154,1,56,3,51,255,133,1,56,3,52,255,154,1,56,3,54,255,154,1,56,3,56,255,154,1,56,3,58,255,154,1,56,3,60,255,154,1,56,3,64,255,154,1,56,3,66,255,154,1,56,3,68,255,154,1,56,3,73,255,215,1,56,3,74,255,154,1,56,3,75,255,215,1,56,3,76,255,154,1,56,3,77,255,215,1,56,3,78,255,154,1,56,3,79,255,215,1,56,3,81,255,215,1,56,3,82,255,154,1,56,3,83,255,215,1,56,3,84,255,154,1,56,3,85,255,215,1,56,3,86,255,154,1,56,3,87,255,215,1,56,3,88,255,154,1,56,3,89,255,215,1,56,3,90,255,154,1,56,3,91,255,215,1,56,3,92,255,154,1,56,3,93,255,215,1,56,3,94,255,154,1,56,3,95,255,215,1,56,3,96,255,154,1,56,3,98,255,195,1,56,3,100,255,195,1,56,3,102,255,195,1,56,3,104,255,195,1,56,3,106,255,195,1,56,3,108,255,195,1,56,3,110,255,195,1,57,0,5,0,82,1,57,0,10,0,82,1,57,0,15,255,174,1,57,0,17,255,174,1,57,0,34,0,41,1,57,2,7,0,82,1,57,2,8,255,174,1,57,2,11,0,82,1,57,2,12,255,174,1,58,0,15,255,133,1,58,0,17,255,133,1,58,0,34,0,41,1,58,0,36,255,133,1,58,0,38,255,215,1,58,0,42,255,215,1,58,0,50,255,215,1,58,0,52,255,215,1,58,0,68,255,154,1,58,0,70,255,154,1,58,0,71,255,154,1,58,0,72,255,154,1,58,0,74,255,215,1,58,0,80,255,195,1,58,0,81,255,195,1,58,0,82,255,154,1,58,0,83,255,195,1,58,0,84,255,154,1,58,0,85,255,195,1,58,0,86,255,174,1,58,0,88,255,195,1,58,0,93,255,215,1,58,0,130,255,133,1,58,0,131,255,133,1,58,0,132,255,133,1,58,0,133,255,133,1,58,0,134,255,133,1,58,0,135,255,133,1,58,0,137,255,215,1,58,0,148,255,215,1,58,0,149,255,215,1,58,0,150,255,215,1,58,0,151,255,215,1,58,0,152,255,215,1,58,0,154,255,215,1,58,0,162,255,154,1,58,0,163,255,154,1,58,0,164,255,154,1,58,0,165,255,154,1,58,0,166,255,154,1,58,0,167,255,154,1,58,0,168,255,154,1,58,0,169,255,154,1,58,0,170,255,154,1,58,0,171,255,154,1,58,0,172,255,154,1,58,0,173,255,154,1,58,0,180,255,154,1,58,0,181,255,154,1,58,0,182,255,154,1,58,0,183,255,154,1,58,0,184,255,154,1,58,0,186,255,154,1,58,0,187,255,195,1,58,0,188,255,195,1,58,0,189,255,195,1,58,0,190,255,195,1,58,0,194,255,133,1,58,0,195,255,154,1,58,0,196,255,133,1,58,0,197,255,154,1,58,0,198,255,133,1,58,0,199,255,154,1,58,0,200,255,215,1,58,0,201,255,154,1,58,0,202,255,215,1,58,0,203,255,154,1,58,0,204,255,215,1,58,0,205,255,154,1,58,0,206,255,215,1,58,0,207,255,154,1,58,0,209,255,154,1,58,0,211,255,154,1,58,0,213,255,154,1,58,0,215,255,154,1,58,0,217,255,154,1,58,0,219,255,154,1,58,0,221,255,154,1,58,0,222,255,215,1,58,0,223,255,215,1,58,0,224,255,215,1,58,0,225,255,215,1,58,0,226,255,215,1,58,0,227,255,215,1,58,0,228,255,215,1,58,0,229,255,215,1,58,0,250,255,195,1,58,1,6,255,195,1,58,1,8,255,195,1,58,1,13,255,195,1,58,1,14,255,215,1,58,1,15,255,154,1,58,1,16,255,215,1,58,1,17,255,154,1,58,1,18,255,215,1,58,1,19,255,154,1,58,1,20,255,215,1,58,1,21,255,154,1,58,1,23,255,195,1,58,1,25,255,195,1,58,1,29,255,174,1,58,1,33,255,174,1,58,1,43,255,195,1,58,1,45,255,195,1,58,1,47,255,195,1,58,1,49,255,195,1,58,1,51,255,195,1,58,1,53,255,195,1,58,1,60,255,215,1,58,1,62,255,215,1,58,1,64,255,215,1,58,1,67,255,133,1,58,1,68,255,154,1,58,1,70,255,154,1,58,1,71,255,215,1,58,1,72,255,154,1,58,1,74,255,174,1,58,2,8,255,133,1,58,2,12,255,133,1,58,2,87,255,195,1,58,2,88,255,133,1,58,2,89,255,154,1,58,2,95,255,215,1,58,2,96,255,154,1,58,2,98,255,195,1,58,3,29,255,133,1,58,3,30,255,154,1,58,3,31,255,133,1,58,3,32,255,154,1,58,3,33,255,133,1,58,3,34,255,154,1,58,3,35,255,133,1,58,3,37,255,133,1,58,3,38,255,154,1,58,3,39,255,133,1,58,3,40,255,154,1,58,3,41,255,133,1,58,3,42,255,154,1,58,3,43,255,133,1,58,3,44,255,154,1,58,3,45,255,133,1,58,3,46,255,154,1,58,3,47,255,133,1,58,3,48,255,154,1,58,3,49,255,133,1,58,3,50,255,154,1,58,3,51,255,133,1,58,3,52,255,154,1,58,3,54,255,154,1,58,3,56,255,154,1,58,3,58,255,154,1,58,3,60,255,154,1,58,3,64,255,154,1,58,3,66,255,154,1,58,3,68,255,154,1,58,3,73,255,215,1,58,3,74,255,154,1,58,3,75,255,215,1,58,3,76,255,154,1,58,3,77,255,215,1,58,3,78,255,154,1,58,3,79,255,215,1,58,3,81,255,215,1,58,3,82,255,154,1,58,3,83,255,215,1,58,3,84,255,154,1,58,3,85,255,215,1,58,3,86,255,154,1,58,3,87,255,215,1,58,3,88,255,154,1,58,3,89,255,215,1,58,3,90,255,154,1,58,3,91,255,215,1,58,3,92,255,154,1,58,3,93,255,215,1,58,3,94,255,154,1,58,3,95,255,215,1,58,3,96,255,154,1,58,3,98,255,195,1,58,3,100,255,195,1,58,3,102,255,195,1,58,3,104,255,195,1,58,3,106,255,195,1,58,3,108,255,195,1,58,3,110,255,195,1,59,0,38,255,236,1,59,0,42,255,236,1,59,0,50,255,236,1,59,0,52,255,236,1,59,0,137,255,236,1,59,0,148,255,236,1,59,0,149,255,236,1,59,0,150,255,236,1,59,0,151,255,236,1,59,0,152,255,236,1,59,0,154,255,236,1,59,0,200,255,236,1,59,0,202,255,236,1,59,0,204,255,236,1,59,0,206,255,236,1,59,0,222,255,236,1,59,0,224,255,236,1,59,0,226,255,236,1,59,0,228,255,236,1,59,1,14,255,236,1,59,1,16,255,236,1,59,1,18,255,236,1,59,1,20,255,236,1,59,1,71,255,236,1,59,2,95,255,236,1,59,3,73,255,236,1,59,3,75,255,236,1,59,3,77,255,236,1,59,3,79,255,236,1,59,3,81,255,236,1,59,3,83,255,236,1,59,3,85,255,236,1,59,3,87,255,236,1,59,3,89,255,236,1,59,3,91,255,236,1,59,3,93,255,236,1,59,3,95,255,236,1,61,0,38,255,236,1,61,0,42,255,236,1,61,0,50,255,236,1,61,0,52,255,236,1,61,0,137,255,236,1,61,0,148,255,236,1,61,0,149,255,236,1,61,0,150,255,236,1,61,0,151,255,236,1,61,0,152,255,236,1,61,0,154,255,236,1,61,0,200,255,236,1,61,0,202,255,236,1,61,0,204,255,236,1,61,0,206,255,236,1,61,0,222,255,236,1,61,0,224,255,236,1,61,0,226,255,236,1,61,0,228,255,236,1,61,1,14,255,236,1,61,1,16,255,236,1,61,1,18,255,236,1,61,1,20,255,236,1,61,1,71,255,236,1,61,2,95,255,236,1,61,3,73,255,236,1,61,3,75,255,236,1,61,3,77,255,236,1,61,3,79,255,236,1,61,3,81,255,236,1,61,3,83,255,236,1,61,3,85,255,236,1,61,3,87,255,236,1,61,3,89,255,236,1,61,3,91,255,236,1,61,3,93,255,236,1,61,3,95,255,236,1,63,0,38,255,236,1,63,0,42,255,236,1,63,0,50,255,236,1,63,0,52,255,236,1,63,0,137,255,236,1,63,0,148,255,236,1,63,0,149,255,236,1,63,0,150,255,236,1,63,0,151,255,236,1,63,0,152,255,236,1,63,0,154,255,236,1,63,0,200,255,236,1,63,0,202,255,236,1,63,0,204,255,236,1,63,0,206,255,236,1,63,0,222,255,236,1,63,0,224,255,236,1,63,0,226,255,236,1,63,0,228,255,236,1,63,1,14,255,236,1,63,1,16,255,236,1,63,1,18,255,236,1,63,1,20,255,236,1,63,1,71,255,236,1,63,2,95,255,236,1,63,3,73,255,236,1,63,3,75,255,236,1,63,3,77,255,236,1,63,3,79,255,236,1,63,3,81,255,236,1,63,3,83,255,236,1,63,3,85,255,236,1,63,3,87,255,236,1,63,3,89,255,236,1,63,3,91,255,236,1,63,3,93,255,236,1,63,3,95,255,236,1,67,0,5,255,113,1,67,0,10,255,113,1,67,0,38,255,215,1,67,0,42,255,215,1,67,0,45,1,10,1,67,0,50,255,215,1,67,0,52,255,215,1,67,0,55,255,113,1,67,0,57,255,174,1,67,0,58,255,174,1,67,0,60,255,133,1,67,0,137,255,215,1,67,0,148,255,215,1,67,0,149,255,215,1,67,0,150,255,215,1,67,0,151,255,215,1,67,0,152,255,215,1,67,0,154,255,215,1,67,0,159,255,133,1,67,0,200,255,215,1,67,0,202,255,215,1,67,0,204,255,215,1,67,0,206,255,215,1,67,0,222,255,215,1,67,0,224,255,215,1,67,0,226,255,215,1,67,0,228,255,215,1,67,1,14,255,215,1,67,1,16,255,215,1,67,1,18,255,215,1,67,1,20,255,215,1,67,1,36,255,113,1,67,1,38,255,113,1,67,1,54,255,174,1,67,1,56,255,133,1,67,1,58,255,133,1,67,1,71,255,215,1,67,1,250,255,174,1,67,1,252,255,174,1,67,1,254,255,174,1,67,2,0,255,133,1,67,2,7,255,113,1,67,2,11,255,113,1,67,2,95,255,215,1,67,3,73,255,215,1,67,3,75,255,215,1,67,3,77,255,215,1,67,3,79,255,215,1,67,3,81,255,215,1,67,3,83,255,215,1,67,3,85,255,215,1,67,3,87,255,215,1,67,3,89,255,215,1,67,3,91,255,215,1,67,3,93,255,215,1,67,3,95,255,215,1,67,3,111,255,133,1,67,3,113,255,133,1,67,3,115,255,133,1,67,3,143,255,113,1,68,0,5,255,236,1,68,0,10,255,236,1,68,2,7,255,236,1,68,2,11,255,236,1,69,0,45,0,123,1,71,0,15,255,174,1,71,0,17,255,174,1,71,0,36,255,215,1,71,0,55,255,195,1,71,0,57,255,236,1,71,0,58,255,236,1,71,0,59,255,215,1,71,0,60,255,236,1,71,0,61,255,236,1,71,0,130,255,215,1,71,0,131,255,215,1,71,0,132,255,215,1,71,0,133,255,215,1,71,0,134,255,215,1,71,0,135,255,215,1,71,0,159,255,236,1,71,0,194,255,215,1,71,0,196,255,215,1,71,0,198,255,215,1,71,1,36,255,195,1,71,1,38,255,195,1,71,1,54,255,236,1,71,1,56,255,236,1,71,1,58,255,236,1,71,1,59,255,236,1,71,1,61,255,236,1,71,1,63,255,236,1,71,1,67,255,215,1,71,1,160,255,236,1,71,1,250,255,236,1,71,1,252,255,236,1,71,1,254,255,236,1,71,2,0,255,236,1,71,2,8,255,174,1,71,2,12,255,174,1,71,2,88,255,215,1,71,3,29,255,215,1,71,3,31,255,215,1,71,3,33,255,215,1,71,3,35,255,215,1,71,3,37,255,215,1,71,3,39,255,215,1,71,3,41,255,215,1,71,3,43,255,215,1,71,3,45,255,215,1,71,3,47,255,215,1,71,3,49,255,215,1,71,3,51,255,215,1,71,3,111,255,236,1,71,3,113,255,236,1,71,3,115,255,236,1,71,3,143,255,195,1,86,0,5,255,113,1,86,0,10,255,113,1,86,1,102,255,215,1,86,1,109,255,215,1,86,1,113,255,113,1,86,1,114,255,133,1,86,1,115,255,215,1,86,1,117,255,174,1,86,1,120,255,133,1,86,2,7,255,113,1,86,2,11,255,113,1,86,2,84,255,133,1,91,0,15,255,174,1,91,0,17,255,174,1,91,1,86,255,215,1,91,1,95,255,215,1,91,1,98,255,215,1,91,1,100,255,236,1,91,1,105,255,215,1,91,1,112,255,236,1,91,1,113,255,195,1,91,1,114,255,236,1,91,1,116,255,215,1,91,1,117,255,236,1,91,1,120,255,236,1,91,1,136,255,236,1,91,2,8,255,174,1,91,2,12,255,174,1,91,2,84,255,236,1,92,0,15,255,133,1,92,0,17,255,133,1,92,1,86,255,133,1,92,1,95,255,133,1,92,1,98,255,133,1,92,1,102,255,215,1,92,1,105,255,133,1,92,1,109,255,215,1,92,1,115,255,195,1,92,1,118,255,236,1,92,1,121,255,154,1,92,1,122,255,174,1,92,1,123,255,195,1,92,1,124,255,195,1,92,1,125,255,195,1,92,1,126,255,154,1,92,1,129,255,195,1,92,1,130,255,174,1,92,1,132,255,195,1,92,1,134,255,195,1,92,1,135,255,195,1,92,1,137,255,195,1,92,1,140,255,154,1,92,1,142,255,154,1,92,1,143,255,154,1,92,1,144,255,154,1,92,1,146,255,195,1,92,1,147,255,154,1,92,1,149,255,195,1,92,1,150,255,195,1,92,1,152,255,195,1,92,1,153,255,154,1,92,1,154,255,195,1,92,1,155,255,195,1,92,2,8,255,133,1,92,2,12,255,133,1,92,2,33,255,236,1,93,1,113,255,215,1,93,1,114,255,236,1,93,1,120,255,236,1,93,2,84,255,236,1,94,0,5,255,215,1,94,0,10,255,215,1,94,2,7,255,215,1,94,2,11,255,215,1,95,0,5,255,113,1,95,0,10,255,113,1,95,1,102,255,215,1,95,1,109,255,215,1,95,1,113,255,113,1,95,1,114,255,133,1,95,1,115,255,215,1,95,1,117,255,174,1,95,1,120,255,133,1,95,2,7,255,113,1,95,2,11,255,113,1,95,2,84,255,133,1,96,0,15,255,174,1,96,0,17,255,174,1,96,1,86,255,215,1,96,1,95,255,215,1,96,1,98,255,215,1,96,1,105,255,215,1,96,1,116,255,215,1,96,2,8,255,174,1,96,2,12,255,174,1,97,0,15,255,133,1,97,0,16,255,174,1,97,0,17,255,133,1,97,1,86,255,92,1,97,1,95,255,92,1,97,1,98,255,92,1,97,1,102,255,195,1,97,1,105,255,92,1,97,1,109,255,195,1,97,1,115,255,154,1,97,1,118,255,195,1,97,1,121,255,113,1,97,1,122,255,154,1,97,1,123,255,154,1,97,1,124,255,174,1,97,1,125,255,154,1,97,1,126,255,113,1,97,1,128,255,215,1,97,1,129,255,195,1,97,1,130,255,154,1,97,1,132,255,154,1,97,1,134,255,174,1,97,1,135,255,154,1,97,1,137,255,154,1,97,1,138,255,215,1,97,1,140,255,113,1,97,1,142,255,154,1,97,1,143,255,113,1,97,1,144,255,113,1,97,1,146,255,154,1,97,1,147,255,113,1,97,1,148,255,215,1,97,1,149,255,154,1,97,1,150,255,154,1,97,1,152,255,154,1,97,1,153,255,113,1,97,1,154,255,154,1,97,1,155,255,154,1,97,2,2,255,174,1,97,2,3,255,174,1,97,2,4,255,174,1,97,2,8,255,133,1,97,2,12,255,133,1,97,2,33,255,195,1,97,2,83,255,215,1,98,0,5,255,113,1,98,0,10,255,113,1,98,1,102,255,215,1,98,1,109,255,215,1,98,1,113,255,113,1,98,1,114,255,133,1,98,1,115,255,215,1,98,1,117,255,174,1,98,1,120,255,133,1,98,2,7,255,113,1,98,2,11,255,113,1,98,2,84,255,133,1,100,1,102,255,236,1,100,1,109,255,236,1,100,1,115,255,195,1,102,0,15,255,174,1,102,0,17,255,174,1,102,1,86,255,215,1,102,1,95,255,215,1,102,1,98,255,215,1,102,1,100,255,236,1,102,1,105,255,215,1,102,1,112,255,236,1,102,1,113,255,195,1,102,1,114,255,236,1,102,1,116,255,215,1,102,1,117,255,236,1,102,1,120,255,236,1,102,1,136,255,236,1,102,2,8,255,174,1,102,2,12,255,174,1,102,2,84,255,236,1,104,1,102,255,215,1,104,1,109,255,215,1,104,1,115,255,195,1,104,1,141,255,236,1,104,1,145,255,236,1,105,0,5,255,113,1,105,0,10,255,113,1,105,1,102,255,215,1,105,1,109,255,215,1,105,1,113,255,113,1,105,1,114,255,133,1,105,1,115,255,215,1,105,1,117,255,174,1,105,1,120,255,133,1,105,2,7,255,113,1,105,2,11,255,113,1,105,2,84,255,133,1,109,0,15,255,174,1,109,0,17,255,174,1,109,1,86,255,215,1,109,1,95,255,215,1,109,1,98,255,215,1,109,1,100,255,236,1,109,1,105,255,215,1,109,1,112,255,236,1,109,1,113,255,195,1,109,1,114,255,236,1,109,1,116,255,215,1,109,1,117,255,236,1,109,1,120,255,236,1,109,1,136,255,236,1,109,2,8,255,174,1,109,2,12,255,174,1,109,2,84,255,236,1,111,0,15,254,246,1,111,0,17,254,246,1,111,1,86,255,154,1,111,1,95,255,154,1,111,1,98,255,154,1,111,1,100,255,236,1,111,1,105,255,154,1,111,1,116,255,215,1,111,1,136,255,215,1,111,2,8,254,246,1,111,2,12,254,246,1,113,0,15,255,133,1,113,0,16,255,174,1,113,0,17,255,133,1,113,1,86,255,92,1,113,1,95,255,92,1,113,1,98,255,92,1,113,1,102,255,195,1,113,1,105,255,92,1,113,1,109,255,195,1,113,1,115,255,154,1,113,1,118,255,195,1,113,1,121,255,113,1,113,1,122,255,154,1,113,1,123,255,154,1,113,1,124,255,174,1,113,1,125,255,154,1,113,1,126,255,113,1,113,1,128,255,215,1,113,1,129,255,195,1,113,1,130,255,154,1,113,1,132,255,154,1,113,1,134,255,174,1,113,1,135,255,154,1,113,1,137,255,154,1,113,1,138,255,215,1,113,1,140,255,113,1,113,1,142,255,154,1,113,1,143,255,113,1,113,1,144,255,113,1,113,1,146,255,154,1,113,1,147,255,113,1,113,1,148,255,215,1,113,1,149,255,154,1,113,1,150,255,154,1,113,1,152,255,154,1,113,1,153,255,113,1,113,1,154,255,154,1,113,1,155,255,154,1,113,2,2,255,174,1,113,2,3,255,174,1,113,2,4,255,174,1,113,2,8,255,133,1,113,2,12,255,133,1,113,2,33,255,195,1,113,2,83,255,215,1,114,0,15,255,133,1,114,0,17,255,133,1,114,1,86,255,133,1,114,1,95,255,133,1,114,1,98,255,133,1,114,1,102,255,215,1,114,1,105,255,133,1,114,1,109,255,215,1,114,1,115,255,195,1,114,1,118,255,236,1,114,1,121,255,154,1,114,1,122,255,174,1,114,1,123,255,195,1,114,1,124,255,195,1,114,1,125,255,195,1,114,1,126,255,154,1,114,1,129,255,195,1,114,1,130,255,174,1,114,1,132,255,195,1,114,1,134,255,195,1,114,1,135,255,195,1,114,1,137,255,195,1,114,1,140,255,154,1,114,1,142,255,154,1,114,1,143,255,154,1,114,1,144,255,154,1,114,1,146,255,195,1,114,1,147,255,154,1,114,1,149,255,195,1,114,1,150,255,195,1,114,1,152,255,195,1,114,1,153,255,154,1,114,1,154,255,195,1,114,1,155,255,195,1,114,2,8,255,133,1,114,2,12,255,133,1,114,2,33,255,236,1,115,0,15,255,154,1,115,0,17,255,154,1,115,1,86,255,215,1,115,1,95,255,215,1,115,1,98,255,215,1,115,1,100,255,195,1,115,1,105,255,215,1,115,1,112,255,236,1,115,1,113,255,174,1,115,1,114,255,195,1,115,1,116,255,236,1,115,1,120,255,195,1,115,1,136,255,236,1,115,2,8,255,154,1,115,2,12,255,154,1,115,2,84,255,195,1,116,1,102,255,215,1,116,1,109,255,215,1,116,1,115,255,195,1,116,1,141,255,236,1,116,1,145,255,236,1,117,0,15,255,133,1,117,0,17,255,133,1,117,1,86,255,174,1,117,1,95,255,174,1,117,1,98,255,174,1,117,1,102,255,236,1,117,1,105,255,174,1,117,1,109,255,236,1,117,2,8,255,133,1,117,2,12,255,133,1,118,1,113,255,215,1,118,1,114,255,236,1,118,1,120,255,236,1,118,2,84,255,236,1,120,0,15,255,133,1,120,0,17,255,133,1,120,1,86,255,133,1,120,1,95,255,133,1,120,1,98,255,133,1,120,1,102,255,215,1,120,1,105,255,133,1,120,1,109,255,215,1,120,1,115,255,195,1,120,1,118,255,236,1,120,1,121,255,154,1,120,1,122,255,174,1,120,1,123,255,195,1,120,1,124,255,195,1,120,1,125,255,195,1,120,1,126,255,154,1,120,1,129,255,195,1,120,1,130,255,174,1,120,1,132,255,195,1,120,1,134,255,195,1,120,1,135,255,195,1,120,1,137,255,195,1,120,1,140,255,154,1,120,1,142,255,154,1,120,1,143,255,154,1,120,1,144,255,154,1,120,1,146,255,195,1,120,1,147,255,154,1,120,1,149,255,195,1,120,1,150,255,195,1,120,1,152,255,195,1,120,1,153,255,154,1,120,1,154,255,195,1,120,1,155,255,195,1,120,2,8,255,133,1,120,2,12,255,133,1,120,2,33,255,236,1,121,1,136,0,41,1,123,0,5,255,236,1,123,0,10,255,236,1,123,2,7,255,236,1,123,2,11,255,236,1,124,0,5,255,174,1,124,0,10,255,174,1,124,1,141,255,236,1,124,1,145,255,236,1,124,2,7,255,174,1,124,2,11,255,174,1,126,1,136,0,41,1,128,0,15,255,174,1,128,0,17,255,174,1,128,1,136,255,236,1,128,2,8,255,174,1,128,2,12,255,174,1,131,0,16,255,154,1,131,1,121,255,215,1,131,1,126,255,215,1,131,1,129,255,215,1,131,1,140,255,215,1,131,1,141,255,215,1,131,1,143,255,215,1,131,1,144,255,215,1,131,1,145,255,215,1,131,1,147,255,215,1,131,1,153,255,215,1,131,2,2,255,154,1,131,2,3,255,154,1,131,2,4,255,154,1,132,0,5,255,236,1,132,0,10,255,236,1,132,2,7,255,236,1,132,2,11,255,236,1,133,0,15,255,215,1,133,0,17,255,215,1,133,2,8,255,215,1,133,2,12,255,215,1,134,0,5,255,174,1,134,0,10,255,174,1,134,1,141,255,236,1,134,1,145,255,236,1,134,2,7,255,174,1,134,2,11,255,174,1,135,1,121,255,215,1,135,1,126,255,215,1,135,1,140,255,215,1,135,1,143,255,215,1,135,1,144,255,215,1,135,1,147,255,215,1,135,1,153,255,215,1,136,0,5,255,133,1,136,0,10,255,133,1,136,1,121,255,236,1,136,1,126,255,236,1,136,1,128,255,215,1,136,1,138,255,215,1,136,1,140,255,236,1,136,1,141,255,215,1,136,1,143,255,236,1,136,1,144,255,236,1,136,1,145,255,215,1,136,1,147,255,236,1,136,1,153,255,236,1,136,2,7,255,133,1,136,2,11,255,133,1,138,0,15,255,174,1,138,0,17,255,174,1,138,1,136,255,236,1,138,2,8,255,174,1,138,2,12,255,174,1,140,0,5,255,236,1,140,0,10,255,236,1,140,1,128,255,215,1,140,1,138,255,215,1,140,2,7,255,236,1,140,2,11,255,236,1,142,0,5,255,236,1,142,0,10,255,236,1,142,1,128,255,215,1,142,1,138,255,215,1,142,2,7,255,236,1,142,2,11,255,236,1,144,0,15,255,236,1,144,0,17,255,236,1,144,2,8,255,236,1,144,2,12,255,236,1,147,0,5,255,236,1,147,0,10,255,236,1,147,1,128,255,215,1,147,1,138,255,215,1,147,2,7,255,236,1,147,2,11,255,236,1,148,0,15,255,195,1,148,0,16,255,215,1,148,0,17,255,195,1,148,1,121,255,215,1,148,1,126,255,215,1,148,1,129,255,215,1,148,1,140,255,215,1,148,1,143,255,215,1,148,1,144,255,215,1,148,1,147,255,215,1,148,1,153,255,215,1,148,2,2,255,215,1,148,2,3,255,215,1,148,2,4,255,215,1,148,2,8,255,195,1,148,2,12,255,195,1,151,0,5,255,215,1,151,0,10,255,215,1,151,2,7,255,215,1,151,2,11,255,215,1,153,0,5,255,236,1,153,0,10,255,236,1,153,1,128,255,215,1,153,1,138,255,215,1,153,2,7,255,236,1,153,2,11,255,236,1,157,0,5,255,174,1,157,0,10,255,174,1,157,1,157,255,133,1,157,1,166,255,133,1,157,1,168,255,215,1,157,1,188,255,154,1,157,1,189,255,215,1,157,1,193,255,154,1,157,1,196,255,133,1,157,1,220,255,215,1,157,1,221,255,215,1,157,1,225,255,215,1,157,1,228,255,215,1,157,1,246,255,215,1,157,2,7,255,174,1,157,2,11,255,174,1,157,2,110,255,174,1,157,2,124,255,154,1,157,2,128,255,174,1,157,2,130,255,174,1,157,2,151,255,174,1,157,2,155,255,174,1,157,2,167,255,174,1,157,2,169,255,133,1,157,2,170,255,215,1,157,2,181,255,154,1,157,2,182,255,215,1,157,2,183,255,154,1,157,2,184,255,215,1,157,2,185,255,154,1,157,2,186,255,215,1,157,2,189,255,133,1,157,2,190,255,215,1,157,2,191,255,154,1,157,2,192,255,215,1,157,2,193,255,154,1,157,2,194,255,215,1,157,2,212,255,154,1,157,2,213,255,215,1,157,2,247,255,215,1,157,2,248,255,215,1,157,2,249,255,215,1,157,2,250,255,215,1,157,2,251,255,215,1,157,2,252,255,215,1,157,2,253,255,154,1,157,2,254,255,215,1,157,3,3,255,174,1,157,3,13,255,154,1,157,3,14,255,195,1,157,3,15,255,154,1,157,3,16,255,195,1,157,3,23,255,133,1,157,3,24,255,215,1,158,0,15,255,133,1,158,0,16,255,174,1,158,0,17,255,133,1,158,1,159,255,215,1,158,1,164,255,154,1,158,1,170,255,113,1,158,1,174,255,154,1,158,1,181,255,154,1,158,1,184,255,215,1,158,1,187,255,215,1,158,1,188,0,41,1,158,1,190,255,174,1,158,1,204,255,154,1,158,1,205,255,154,1,158,1,206,255,133,1,158,1,207,255,113,1,158,1,208,255,215,1,158,1,209,255,215,1,158,1,210,255,154,1,158,1,211,255,154,1,158,1,212,255,154,1,158,1,213,255,133,1,158,1,214,255,154,1,158,1,215,255,154,1,158,1,216,255,113,1,158,1,217,255,154,1,158,1,218,255,154,1,158,1,219,255,113,1,158,1,220,255,174,1,158,1,221,255,174,1,158,1,222,255,113,1,158,1,223,255,215,1,158,1,224,255,154,1,158,1,225,255,154,1,158,1,226,255,154,1,158,1,227,255,154,1,158,1,228,255,174,1,158,1,229,255,154,1,158,1,230,255,154,1,158,1,231,255,215,1,158,1,232,255,154,1,158,1,233,255,195,1,158,1,234,255,113,1,158,1,236,255,154,1,158,1,237,255,113,1,158,1,238,255,133,1,158,1,242,255,133,1,158,1,243,255,154,1,158,1,245,255,154,1,158,1,246,255,174,1,158,1,247,255,154,1,158,1,249,255,154,1,158,2,2,255,174,1,158,2,3,255,174,1,158,2,4,255,174,1,158,2,8,255,133,1,158,2,12,255,133,1,158,2,106,255,113,1,158,2,107,255,154,1,158,2,108,255,215,1,158,2,109,255,215,1,158,2,113,255,154,1,158,2,114,255,113,1,158,2,115,255,133,1,158,2,117,255,154,1,158,2,119,255,154,1,158,2,121,255,154,1,158,2,125,255,154,1,158,2,126,255,215,1,158,2,127,255,113,1,158,2,129,255,215,1,158,2,131,255,215,1,158,2,132,255,215,1,158,2,133,255,113,1,158,2,134,255,215,1,158,2,135,255,113,1,158,2,136,255,215,1,158,2,137,255,113,1,158,2,138,255,215,1,158,2,139,255,215,1,158,2,140,255,215,1,158,2,141,255,113,1,158,2,150,255,154,1,158,2,154,255,154,1,158,2,158,255,154,1,158,2,160,255,215,1,158,2,162,255,215,1,158,2,164,255,154,1,158,2,166,255,154,1,158,2,170,255,174,1,158,2,172,255,154,1,158,2,174,255,154,1,158,2,176,255,154,1,158,2,177,255,215,1,158,2,178,255,113,1,158,2,179,255,215,1,158,2,180,255,113,1,158,2,181,0,41,1,158,2,182,255,174,1,158,2,184,255,174,1,158,2,186,255,174,1,158,2,188,255,215,1,158,2,190,255,174,1,158,2,192,255,154,1,158,2,194,255,154,1,158,2,196,255,154,1,158,2,197,255,154,1,158,2,198,255,113,1,158,2,199,255,154,1,158,2,200,255,113,1,158,2,203,255,215,1,158,2,205,255,154,1,158,2,206,255,154,1,158,2,207,255,133,1,158,2,209,255,154,1,158,2,211,255,154,1,158,2,213,255,154,1,158,2,215,255,154,1,158,2,217,255,113,1,158,2,219,255,113,1,158,2,221,255,113,1,158,2,224,255,113,1,158,2,230,255,215,1,158,2,232,255,215,1,158,2,234,255,195,1,158,2,236,255,154,1,158,2,238,255,154,1,158,2,239,255,215,1,158,2,240,255,113,1,158,2,241,255,215,1,158,2,242,255,113,1,158,2,243,255,215,1,158,2,244,255,113,1,158,2,246,255,215,1,158,2,248,255,174,1,158,2,250,255,174,1,158,2,252,255,174,1,158,2,254,255,154,1,158,3,0,255,154,1,158,3,2,255,154,1,158,3,6,255,215,1,158,3,8,255,215,1,158,3,9,255,113,1,158,3,10,255,113,1,158,3,11,255,113,1,158,3,12,255,113,1,158,3,14,255,154,1,158,3,16,255,154,1,158,3,17,255,154,1,158,3,18,255,133,1,158,3,20,255,154,1,158,3,21,255,215,1,158,3,22,255,113,1,158,3,24,255,174,1,158,3,26,255,113,1,158,3,27,255,154,1,158,3,28,255,133,1,159,1,159,255,215,1,159,1,184,255,215,1,159,1,187,255,215,1,159,1,190,255,215,1,159,1,225,255,215,1,159,2,108,255,215,1,159,2,126,255,215,1,159,2,132,255,215,1,159,2,134,255,215,1,159,2,136,255,215,1,159,2,138,255,215,1,159,2,140,255,215,1,159,2,177,255,215,1,159,2,179,255,215,1,159,2,192,255,215,1,159,2,194,255,215,1,159,2,197,255,215,1,159,2,199,255,215,1,159,2,213,255,215,1,159,2,239,255,215,1,159,2,241,255,215,1,159,2,243,255,215,1,159,2,254,255,215,1,159,3,9,255,215,1,159,3,11,255,215,1,159,3,14,255,215,1,159,3,16,255,215,1,159,3,21,255,215,1,160,3,14,255,215,1,160,3,16,255,215,1,164,0,5,255,174,1,164,0,10,255,174,1,164,1,157,255,133,1,164,1,166,255,133,1,164,1,168,255,215,1,164,1,188,255,154,1,164,1,189,255,215,1,164,1,193,255,154,1,164,1,196,255,133,1,164,1,220,255,215,1,164,1,221,255,215,1,164,1,225,255,215,1,164,1,228,255,215,1,164,1,246,255,215,1,164,2,7,255,174,1,164,2,11,255,174,1,164,2,110,255,174,1,164,2,124,255,154,1,164,2,128,255,174,1,164,2,130,255,174,1,164,2,151,255,174,1,164,2,155,255,174,1,164,2,167,255,174,1,164,2,169,255,133,1,164,2,170,255,215,1,164,2,181,255,154,1,164,2,182,255,215,1,164,2,183,255,154,1,164,2,184,255,215,1,164,2,185,255,154,1,164,2,186,255,215,1,164,2,189,255,133,1,164,2,190,255,215,1,164,2,191,255,154,1,164,2,192,255,215,1,164,2,193,255,154,1,164,2,194,255,215,1,164,2,212,255,154,1,164,2,213,255,215,1,164,2,247,255,215,1,164,2,248,255,215,1,164,2,249,255,215,1,164,2,250,255,215,1,164,2,251,255,215,1,164,2,252,255,215,1,164,2,253,255,154,1,164,2,254,255,215,1,164,3,3,255,174,1,164,3,13,255,154,1,164,3,14,255,195,1,164,3,15,255,154,1,164,3,16,255,195,1,164,3,23,255,133,1,164,3,24,255,215,1,165,0,5,255,174,1,165,0,10,255,174,1,165,1,157,255,133,1,165,1,166,255,133,1,165,1,168,255,215,1,165,1,188,255,154,1,165,1,189,255,215,1,165,1,193,255,154,1,165,1,196,255,133,1,165,1,220,255,215,1,165,1,221,255,215,1,165,1,225,255,215,1,165,1,228,255,215,1,165,1,246,255,215,1,165,2,7,255,174,1,165,2,11,255,174,1,165,2,110,255,174,1,165,2,124,255,154,1,165,2,128,255,174,1,165,2,130,255,174,1,165,2,151,255,174,1,165,2,155,255,174,1,165,2,167,255,174,1,165,2,169,255,133,1,165,2,170,255,215,1,165,2,181,255,154,1,165,2,182,255,215,1,165,2,183,255,154,1,165,2,184,255,215,1,165,2,185,255,154,1,165,2,186,255,215,1,165,2,189,255,133,1,165,2,190,255,215,1,165,2,191,255,154,1,165,2,192,255,215,1,165,2,193,255,154,1,165,2,194,255,215,1,165,2,212,255,154,1,165,2,213,255,215,1,165,2,247,255,215,1,165,2,248,255,215,1,165,2,249,255,215,1,165,2,250,255,215,1,165,2,251,255,215,1,165,2,252,255,215,1,165,2,253,255,154,1,165,2,254,255,215,1,165,3,3,255,174,1,165,3,13,255,154,1,165,3,14,255,195,1,165,3,15,255,154,1,165,3,16,255,195,1,165,3,23,255,133,1,165,3,24,255,215,1,166,0,5,255,174,1,166,0,10,255,174,1,166,1,157,255,133,1,166,1,166,255,133,1,166,1,168,255,215,1,166,1,188,255,154,1,166,1,189,255,215,1,166,1,193,255,154,1,166,1,196,255,133,1,166,1,220,255,215,1,166,1,221,255,215,1,166,1,225,255,215,1,166,1,228,255,215,1,166,1,246,255,215,1,166,2,7,255,174,1,166,2,11,255,174,1,166,2,110,255,174,1,166,2,124,255,154,1,166,2,128,255,174,1,166,2,130,255,174,1,166,2,151,255,174,1,166,2,155,255,174,1,166,2,167,255,174,1,166,2,169,255,133,1,166,2,170,255,215,1,166,2,181,255,154,1,166,2,182,255,215,1,166,2,183,255,154,1,166,2,184,255,215,1,166,2,185,255,154,1,166,2,186,255,215,1,166,2,189,255,133,1,166,2,190,255,215,1,166,2,191,255,154,1,166,2,192,255,215,1,166,2,193,255,154,1,166,2,194,255,215,1,166,2,212,255,154,1,166,2,213,255,215,1,166,2,247,255,215,1,166,2,248,255,215,1,166,2,249,255,215,1,166,2,250,255,215,1,166,2,251,255,215,1,166,2,252,255,215,1,166,2,253,255,154,1,166,2,254,255,215,1,166,3,3,255,174,1,166,3,13,255,154,1,166,3,14,255,195,1,166,3,15,255,154,1,166,3,16,255,195,1,166,3,23,255,133,1,166,3,24,255,215,1,167,1,159,255,215,1,167,1,184,255,215,1,167,1,187,255,215,1,167,1,190,255,215,1,167,1,193,255,215,1,167,1,225,255,215,1,167,2,108,255,215,1,167,2,124,255,215,1,167,2,126,255,215,1,167,2,132,255,215,1,167,2,134,255,215,1,167,2,136,255,215,1,167,2,138,255,215,1,167,2,140,255,215,1,167,2,177,255,215,1,167,2,179,255,215,1,167,2,191,255,215,1,167,2,192,255,215,1,167,2,193,255,215,1,167,2,194,255,215,1,167,2,197,255,154,1,167,2,199,255,154,1,167,2,212,255,215,1,167,2,213,255,215,1,167,2,239,255,215,1,167,2,241,255,215,1,167,2,243,255,215,1,167,2,253,255,215,1,167,2,254,255,215,1,167,3,9,255,215,1,167,3,11,255,215,1,167,3,14,255,215,1,167,3,16,255,215,1,167,3,21,255,215,1,167,3,25,255,236,1,168,0,15,255,133,1,168,0,17,255,133,1,168,1,159,255,236,1,168,1,164,255,154,1,168,1,170,255,113,1,168,1,174,255,154,1,168,1,181,255,154,1,168,1,184,255,236,1,168,1,187,255,236,1,168,1,190,255,195,1,168,1,201,255,236,1,168,1,206,255,174,1,168,1,207,255,215,1,168,1,213,255,174,1,168,1,216,255,215,1,168,1,219,255,215,1,168,1,222,255,215,1,168,1,225,255,215,1,168,1,234,255,215,1,168,1,235,0,102,1,168,1,237,255,215,1,168,1,238,255,236,1,168,1,242,255,174,1,168,1,244,0,102,1,168,2,8,255,133,1,168,2,12,255,133,1,168,2,106,255,215,1,168,2,108,255,236,1,168,2,114,255,113,1,168,2,115,255,174,1,168,2,126,255,236,1,168,2,127,255,215,1,168,2,132,255,236,1,168,2,133,255,215,1,168,2,134,255,236,1,168,2,135,255,215,1,168,2,136,255,236,1,168,2,137,255,215,1,168,2,138,255,236,1,168,2,140,255,236,1,168,2,141,255,215,1,168,2,152,0,102,1,168,2,168,0,102,1,168,2,177,255,236,1,168,2,178,255,215,1,168,2,179,255,236,1,168,2,180,255,215,1,168,2,192,255,215,1,168,2,194,255,215,1,168,2,197,255,215,1,168,2,198,255,195,1,168,2,199,255,215,1,168,2,200,255,195,1,168,2,206,255,154,1,168,2,207,255,174,1,168,2,213,255,215,1,168,2,217,255,113,1,168,2,219,255,113,1,168,2,221,255,113,1,168,2,224,255,215,1,168,2,239,255,236,1,168,2,240,255,215,1,168,2,241,255,236,1,168,2,242,255,215,1,168,2,243,255,236,1,168,2,244,255,215,1,168,2,254,255,215,1,168,3,9,255,113,1,168,3,10,255,215,1,168,3,11,255,113,1,168,3,12,255,215,1,168,3,17,255,154,1,168,3,18,255,174,1,168,3,21,255,236,1,168,3,22,255,215,1,168,3,26,255,215,1,168,3,27,255,154,1,168,3,28,255,174,1,170,0,5,255,113,1,170,0,10,255,113,1,170,1,157,255,154,1,170,1,166,255,154,1,170,1,188,255,113,1,170,1,190,255,215,1,170,1,193,255,154,1,170,1,196,255,154,1,170,1,220,255,215,1,170,1,225,255,215,1,170,1,228,255,215,1,170,2,7,255,113,1,170,2,11,255,113,1,170,2,110,255,215,1,170,2,124,255,154,1,170,2,128,255,174,1,170,2,130,255,174,1,170,2,151,255,215,1,170,2,155,255,215,1,170,2,167,255,215,1,170,2,169,255,154,1,170,2,170,255,215,1,170,2,181,255,113,1,170,2,182,255,215,1,170,2,183,255,133,1,170,2,185,255,133,1,170,2,189,255,154,1,170,2,190,255,215,1,170,2,191,255,154,1,170,2,192,255,215,1,170,2,193,255,154,1,170,2,194,255,215,1,170,2,197,255,154,1,170,2,199,255,154,1,170,2,212,255,154,1,170,2,213,255,215,1,170,2,225,255,215,1,170,2,227,255,215,1,170,2,253,255,154,1,170,2,254,255,215,1,170,3,3,255,215,1,170,3,13,255,113,1,170,3,14,255,215,1,170,3,15,255,113,1,170,3,16,255,215,1,170,3,23,255,154,1,170,3,24,255,215,1,171,0,5,255,215,1,171,0,10,255,215,1,171,1,170,255,236,1,171,1,193,255,215,1,171,2,7,255,215,1,171,2,11,255,215,1,171,2,114,255,236,1,171,2,124,255,215,1,171,2,191,255,215,1,171,2,193,255,215,1,171,2,197,255,215,1,171,2,199,255,215,1,171,2,212,255,215,1,171,2,217,255,236,1,171,2,219,255,236,1,171,2,221,255,236,1,171,2,253,255,215,1,172,0,15,255,174,1,172,0,17,255,174,1,172,2,8,255,174,1,172,2,12,255,174,1,172,2,128,255,236,1,172,2,130,255,236,1,172,2,183,255,236,1,172,2,185,255,236,1,172,3,13,255,215,1,172,3,15,255,215,1,173,0,15,255,133,1,173,0,16,255,174,1,173,0,17,255,133,1,173,1,159,255,215,1,173,1,164,255,154,1,173,1,170,255,113,1,173,1,174,255,154,1,173,1,181,255,154,1,173,1,184,255,215,1,173,1,187,255,215,1,173,1,188,0,41,1,173,1,190,255,174,1,173,1,204,255,154,1,173,1,205,255,154,1,173,1,206,255,133,1,173,1,207,255,113,1,173,1,208,255,215,1,173,1,209,255,215,1,173,1,210,255,154,1,173,1,211,255,154,1,173,1,212,255,154,1,173,1,213,255,133,1,173,1,214,255,154,1,173,1,215,255,154,1,173,1,216,255,113,1,173,1,217,255,154,1,173,1,218,255,154,1,173,1,219,255,113,1,173,1,220,255,174,1,173,1,221,255,174,1,173,1,222,255,113,1,173,1,223,255,215,1,173,1,224,255,154,1,173,1,225,255,154,1,173,1,226,255,154,1,173,1,227,255,154,1,173,1,228,255,174,1,173,1,229,255,154,1,173,1,230,255,154,1,173,1,231,255,215,1,173,1,232,255,154,1,173,1,233,255,195,1,173,1,234,255,113,1,173,1,236,255,154,1,173,1,237,255,113,1,173,1,238,255,133,1,173,1,242,255,133,1,173,1,243,255,154,1,173,1,245,255,154,1,173,1,246,255,174,1,173,1,247,255,154,1,173,1,249,255,154,1,173,2,2,255,174,1,173,2,3,255,174,1,173,2,4,255,174,1,173,2,8,255,133,1,173,2,12,255,133,1,173,2,106,255,113,1,173,2,107,255,154,1,173,2,108,255,215,1,173,2,109,255,215,1,173,2,113,255,154,1,173,2,114,255,113,1,173,2,115,255,133,1,173,2,117,255,154,1,173,2,119,255,154,1,173,2,121,255,154,1,173,2,125,255,154,1,173,2,126,255,215,1,173,2,127,255,113,1,173,2,129,255,215,1,173,2,131,255,215,1,173,2,132,255,215,1,173,2,133,255,113,1,173,2,134,255,215,1,173,2,135,255,113,1,173,2,136,255,215,1,173,2,137,255,113,1,173,2,138,255,215,1,173,2,139,255,215,1,173,2,140,255,215,1,173,2,141,255,113,1,173,2,150,255,154,1,173,2,154,255,154,1,173,2,158,255,154,1,173,2,160,255,215,1,173,2,162,255,215,1,173,2,164,255,154,1,173,2,166,255,154,1,173,2,170,255,174,1,173,2,172,255,154,1,173,2,174,255,154,1,173,2,176,255,154,1,173,2,177,255,215,1,173,2,178,255,113,1,173,2,179,255,215,1,173,2,180,255,113,1,173,2,181,0,41,1,173,2,182,255,174,1,173,2,184,255,174,1,173,2,186,255,174,1,173,2,188,255,215,1,173,2,190,255,174,1,173,2,192,255,154,1,173,2,194,255,154,1,173,2,196,255,154,1,173,2,197,255,154,1,173,2,198,255,113,1,173,2,199,255,154,1,173,2,200,255,113,1,173,2,203,255,215,1,173,2,205,255,154,1,173,2,206,255,154,1,173,2,207,255,133,1,173,2,209,255,154,1,173,2,211,255,154,1,173,2,213,255,154,1,173,2,215,255,154,1,173,2,217,255,113,1,173,2,219,255,113,1,173,2,221,255,113,1,173,2,224,255,113,1,173,2,230,255,215,1,173,2,232,255,215,1,173,2,234,255,195,1,173,2,236,255,154,1,173,2,238,255,154,1,173,2,239,255,215,1,173,2,240,255,113,1,173,2,241,255,215,1,173,2,242,255,113,1,173,2,243,255,215,1,173,2,244,255,113,1,173,2,246,255,215,1,173,2,248,255,174,1,173,2,250,255,174,1,173,2,252,255,174,1,173,2,254,255,154,1,173,3,0,255,154,1,173,3,2,255,154,1,173,3,6,255,215,1,173,3,8,255,215,1,173,3,9,255,113,1,173,3,10,255,113,1,173,3,11,255,113,1,173,3,12,255,113,1,173,3,14,255,154,1,173,3,16,255,154,1,173,3,17,255,154,1,173,3,18,255,133,1,173,3,20,255,154,1,173,3,21,255,215,1,173,3,22,255,113,1,173,3,24,255,174,1,173,3,26,255,113,1,173,3,27,255,154,1,173,3,28,255,133,1,174,1,163,0,225,1,174,2,234,0,41,1,174,3,14,255,215,1,174,3,16,255,215,1,176,1,159,255,215,1,176,1,184,255,215,1,176,1,187,255,215,1,176,1,190,255,215,1,176,1,193,255,215,1,176,1,225,255,215,1,176,2,108,255,215,1,176,2,124,255,215,1,176,2,126,255,215,1,176,2,132,255,215,1,176,2,134,255,215,1,176,2,136,255,215,1,176,2,138,255,215,1,176,2,140,255,215,1,176,2,177,255,215,1,176,2,179,255,215,1,176,2,191,255,215,1,176,2,192,255,215,1,176,2,193,255,215,1,176,2,194,255,215,1,176,2,197,255,154,1,176,2,199,255,154,1,176,2,212,255,215,1,176,2,213,255,215,1,176,2,239,255,215,1,176,2,241,255,215,1,176,2,243,255,215,1,176,2,253,255,215,1,176,2,254,255,215,1,176,3,9,255,215,1,176,3,11,255,215,1,176,3,14,255,215,1,176,3,16,255,215,1,176,3,21,255,215,1,176,3,25,255,236,1,177,0,15,255,174,1,177,0,17,255,174,1,177,2,8,255,174,1,177,2,12,255,174,1,177,2,128,255,236,1,177,2,130,255,236,1,177,2,183,255,236,1,177,2,185,255,236,1,177,3,13,255,215,1,177,3,15,255,215,1,180,1,159,255,215,1,180,1,184,255,215,1,180,1,187,255,215,1,180,1,190,255,215,1,180,1,193,255,215,1,180,1,225,255,215,1,180,2,108,255,215,1,180,2,124,255,215,1,180,2,126,255,215,1,180,2,132,255,215,1,180,2,134,255,215,1,180,2,136,255,215,1,180,2,138,255,215,1,180,2,140,255,215,1,180,2,177,255,215,1,180,2,179,255,215,1,180,2,191,255,215,1,180,2,192,255,215,1,180,2,193,255,215,1,180,2,194,255,215,1,180,2,197,255,154,1,180,2,199,255,154,1,180,2,212,255,215,1,180,2,213,255,215,1,180,2,239,255,215,1,180,2,241,255,215,1,180,2,243,255,215,1,180,2,253,255,215,1,180,2,254,255,215,1,180,3,9,255,215,1,180,3,11,255,215,1,180,3,14,255,215,1,180,3,16,255,215,1,180,3,21,255,215,1,180,3,25,255,236,1,184,0,15,255,174,1,184,0,17,255,174,1,184,1,157,255,236,1,184,1,164,255,215,1,184,1,166,255,236,1,184,1,168,255,215,1,184,1,170,255,215,1,184,1,174,255,215,1,184,1,176,255,215,1,184,1,177,255,236,1,184,1,181,255,215,1,184,1,188,255,195,1,184,1,189,255,215,1,184,1,191,255,215,1,184,1,193,255,215,1,184,1,196,255,236,1,184,1,199,255,236,1,184,1,206,255,236,1,184,1,213,255,236,1,184,1,242,255,236,1,184,2,8,255,174,1,184,2,12,255,174,1,184,2,114,255,215,1,184,2,115,255,236,1,184,2,122,255,236,1,184,2,124,255,215,1,184,2,128,255,236,1,184,2,130,255,236,1,184,2,159,255,215,1,184,2,161,255,236,1,184,2,169,255,236,1,184,2,181,255,195,1,184,2,183,255,236,1,184,2,185,255,236,1,184,2,187,255,215,1,184,2,189,255,236,1,184,2,191,255,215,1,184,2,193,255,215,1,184,2,202,255,215,1,184,2,206,255,215,1,184,2,207,255,236,1,184,2,212,255,215,1,184,2,217,255,215,1,184,2,219,255,215,1,184,2,221,255,215,1,184,2,229,255,215,1,184,2,231,255,236,1,184,2,245,255,236,1,184,2,247,255,215,1,184,2,249,255,215,1,184,2,251,255,215,1,184,2,253,255,215,1,184,3,5,255,215,1,184,3,7,255,215,1,184,3,13,255,215,1,184,3,15,255,215,1,184,3,17,255,215,1,184,3,18,255,236,1,184,3,23,255,236,1,184,3,27,255,215,1,184,3,28,255,236,1,186,0,15,254,246,1,186,0,17,254,246,1,186,1,164,255,133,1,186,1,170,255,154,1,186,1,174,255,133,1,186,1,176,255,215,1,186,1,181,255,133,1,186,1,191,255,215,1,186,1,206,255,154,1,186,1,213,255,154,1,186,1,242,255,154,1,186,2,8,254,246,1,186,2,12,254,246,1,186,2,114,255,154,1,186,2,115,255,154,1,186,2,118,255,236,1,186,2,159,255,215,1,186,2,187,255,215,1,186,2,202,255,215,1,186,2,206,255,133,1,186,2,207,255,154,1,186,2,217,255,154,1,186,2,219,255,154,1,186,2,221,255,154,1,186,2,229,255,215,1,186,3,5,255,215,1,186,3,7,255,215,1,186,3,9,255,174,1,186,3,11,255,174,1,186,3,17,255,133,1,186,3,18,255,154,1,186,3,27,255,133,1,186,3,28,255,154,1,187,1,159,255,215,1,187,1,184,255,215,1,187,1,187,255,215,1,187,1,190,255,215,1,187,1,225,255,215,1,187,2,108,255,215,1,187,2,126,255,215,1,187,2,132,255,215,1,187,2,134,255,215,1,187,2,136,255,215,1,187,2,138,255,215,1,187,2,140,255,215,1,187,2,177,255,215,1,187,2,179,255,215,1,187,2,192,255,215,1,187,2,194,255,215,1,187,2,197,255,215,1,187,2,199,255,215,1,187,2,213,255,215,1,187,2,239,255,215,1,187,2,241,255,215,1,187,2,243,255,215,1,187,2,254,255,215,1,187,3,9,255,215,1,187,3,11,255,215,1,187,3,14,255,215,1,187,3,16,255,215,1,187,3,21,255,215,1,188,0,15,255,133,1,188,0,16,255,174,1,188,0,17,255,133,1,188,1,159,255,215,1,188,1,164,255,154,1,188,1,170,255,113,1,188,1,174,255,154,1,188,1,181,255,154,1,188,1,184,255,215,1,188,1,187,255,215,1,188,1,188,0,41,1,188,1,190,255,174,1,188,1,204,255,154,1,188,1,205,255,154,1,188,1,206,255,133,1,188,1,207,255,113,1,188,1,208,255,215,1,188,1,209,255,215,1,188,1,210,255,154,1,188,1,211,255,154,1,188,1,212,255,154,1,188,1,213,255,133,1,188,1,214,255,154,1,188,1,215,255,154,1,188,1,216,255,113,1,188,1,217,255,154,1,188,1,218,255,154,1,188,1,219,255,113,1,188,1,220,255,174,1,188,1,221,255,174,1,188,1,222,255,113,1,188,1,223,255,215,1,188,1,224,255,154,1,188,1,225,255,154,1,188,1,226,255,154,1,188,1,227,255,154,1,188,1,228,255,174,1,188,1,229,255,154,1,188,1,230,255,154,1,188,1,231,255,215,1,188,1,232,255,154,1,188,1,233,255,195,1,188,1,234,255,113,1,188,1,236,255,154,1,188,1,237,255,113,1,188,1,238,255,133,1,188,1,242,255,133,1,188,1,243,255,154,1,188,1,245,255,154,1,188,1,246,255,174,1,188,1,247,255,154,1,188,1,249,255,154,1,188,2,2,255,174,1,188,2,3,255,174,1,188,2,4,255,174,1,188,2,8,255,133,1,188,2,12,255,133,1,188,2,106,255,113,1,188,2,107,255,154,1,188,2,108,255,215,1,188,2,109,255,215,1,188,2,113,255,154,1,188,2,114,255,113,1,188,2,115,255,133,1,188,2,117,255,154,1,188,2,119,255,154,1,188,2,121,255,154,1,188,2,125,255,154,1,188,2,126,255,215,1,188,2,127,255,113,1,188,2,129,255,215,1,188,2,131,255,215,1,188,2,132,255,215,1,188,2,133,255,113,1,188,2,134,255,215,1,188,2,135,255,113,1,188,2,136,255,215,1,188,2,137,255,113,1,188,2,138,255,215,1,188,2,139,255,215,1,188,2,140,255,215,1,188,2,141,255,113,1,188,2,150,255,154,1,188,2,154,255,154,1,188,2,158,255,154,1,188,2,160,255,215,1,188,2,162,255,215,1,188,2,164,255,154,1,188,2,166,255,154,1,188,2,170,255,174,1,188,2,172,255,154,1,188,2,174,255,154,1,188,2,176,255,154,1,188,2,177,255,215,1,188,2,178,255,113,1,188,2,179,255,215,1,188,2,180,255,113,1,188,2,181,0,41,1,188,2,182,255,174,1,188,2,184,255,174,1,188,2,186,255,174,1,188,2,188,255,215,1,188,2,190,255,174,1,188,2,192,255,154,1,188,2,194,255,154,1,188,2,196,255,154,1,188,2,197,255,154,1,188,2,198,255,113,1,188,2,199,255,154,1,188,2,200,255,113,1,188,2,203,255,215,1,188,2,205,255,154,1,188,2,206,255,154,1,188,2,207,255,133,1,188,2,209,255,154,1,188,2,211,255,154,1,188,2,213,255,154,1,188,2,215,255,154,1,188,2,217,255,113,1,188,2,219,255,113,1,188,2,221,255,113,1,188,2,224,255,113,1,188,2,230,255,215,1,188,2,232,255,215,1,188,2,234,255,195,1,188,2,236,255,154,1,188,2,238,255,154,1,188,2,239,255,215,1,188,2,240,255,113,1,188,2,241,255,215,1,188,2,242,255,113,1,188,2,243,255,215,1,188,2,244,255,113,1,188,2,246,255,215,1,188,2,248,255,174,1,188,2,250,255,174,1,188,2,252,255,174,1,188,2,254,255,154,1,188,3,0,255,154,1,188,3,2,255,154,1,188,3,6,255,215,1,188,3,8,255,215,1,188,3,9,255,113,1,188,3,10,255,113,1,188,3,11,255,113,1,188,3,12,255,113,1,188,3,14,255,154,1,188,3,16,255,154,1,188,3,17,255,154,1,188,3,18,255,133,1,188,3,20,255,154,1,188,3,21,255,215,1,188,3,22,255,113,1,188,3,24,255,174,1,188,3,26,255,113,1,188,3,27,255,154,1,188,3,28,255,133,1,189,0,15,255,133,1,189,0,17,255,133,1,189,1,159,255,236,1,189,1,164,255,154,1,189,1,170,255,113,1,189,1,174,255,154,1,189,1,181,255,154,1,189,1,184,255,236,1,189,1,187,255,236,1,189,1,190,255,195,1,189,1,201,255,236,1,189,1,206,255,174,1,189,1,207,255,215,1,189,1,213,255,174,1,189,1,216,255,215,1,189,1,219,255,215,1,189,1,222,255,215,1,189,1,225,255,215,1,189,1,234,255,215,1,189,1,235,0,102,1,189,1,237,255,215,1,189,1,238,255,236,1,189,1,242,255,174,1,189,1,244,0,102,1,189,2,8,255,133,1,189,2,12,255,133,1,189,2,106,255,215,1,189,2,108,255,236,1,189,2,114,255,113,1,189,2,115,255,174,1,189,2,126,255,236,1,189,2,127,255,215,1,189,2,132,255,236,1,189,2,133,255,215,1,189,2,134,255,236,1,189,2,135,255,215,1,189,2,136,255,236,1,189,2,137,255,215,1,189,2,138,255,236,1,189,2,140,255,236,1,189,2,141,255,215,1,189,2,152,0,102,1,189,2,168,0,102,1,189,2,177,255,236,1,189,2,178,255,215,1,189,2,179,255,236,1,189,2,180,255,215,1,189,2,192,255,215,1,189,2,194,255,215,1,189,2,197,255,215,1,189,2,198,255,195,1,189,2,199,255,215,1,189,2,200,255,195,1,189,2,206,255,154,1,189,2,207,255,174,1,189,2,213,255,215,1,189,2,217,255,113,1,189,2,219,255,113,1,189,2,221,255,113,1,189,2,224,255,215,1,189,2,239,255,236,1,189,2,240,255,215,1,189,2,241,255,236,1,189,2,242,255,215,1,189,2,243,255,236,1,189,2,244,255,215,1,189,2,254,255,215,1,189,3,9,255,113,1,189,3,10,255,215,1,189,3,11,255,113,1,189,3,12,255,215,1,189,3,17,255,154,1,189,3,18,255,174,1,189,3,21,255,236,1,189,3,22,255,215,1,189,3,26,255,215,1,189,3,27,255,154,1,189,3,28,255,174,1,190,0,15,255,174,1,190,0,17,255,174,1,190,1,157,255,215,1,190,1,164,255,215,1,190,1,166,255,215,1,190,1,168,255,195,1,190,1,170,255,215,1,190,1,174,255,215,1,190,1,176,255,215,1,190,1,177,255,215,1,190,1,181,255,215,1,190,1,188,255,195,1,190,1,189,255,195,1,190,1,191,255,215,1,190,1,196,255,215,1,190,1,199,255,215,1,190,1,206,255,236,1,190,1,213,255,236,1,190,1,242,255,236,1,190,2,8,255,174,1,190,2,12,255,174,1,190,2,114,255,215,1,190,2,115,255,236,1,190,2,122,255,215,1,190,2,128,255,236,1,190,2,130,255,236,1,190,2,159,255,215,1,190,2,161,255,215,1,190,2,169,255,215,1,190,2,181,255,195,1,190,2,183,255,195,1,190,2,185,255,195,1,190,2,187,255,215,1,190,2,189,255,215,1,190,2,202,255,215,1,190,2,206,255,215,1,190,2,207,255,236,1,190,2,217,255,215,1,190,2,219,255,215,1,190,2,221,255,215,1,190,2,229,255,215,1,190,2,231,255,215,1,190,2,245,255,215,1,190,2,247,255,195,1,190,2,249,255,195,1,190,2,251,255,195,1,190,3,5,255,215,1,190,3,7,255,215,1,190,3,13,255,215,1,190,3,15,255,215,1,190,3,17,255,215,1,190,3,18,255,236,1,190,3,23,255,215,1,190,3,27,255,215,1,190,3,28,255,236,1,191,1,159,255,215,1,191,1,184,255,215,1,191,1,187,255,215,1,191,1,190,255,215,1,191,1,193,255,215,1,191,1,225,255,215,1,191,2,108,255,215,1,191,2,124,255,215,1,191,2,126,255,215,1,191,2,132,255,215,1,191,2,134,255,215,1,191,2,136,255,215,1,191,2,138,255,215,1,191,2,140,255,215,1,191,2,177,255,215,1,191,2,179,255,215,1,191,2,191,255,215,1,191,2,192,255,215,1,191,2,193,255,215,1,191,2,194,255,215,1,191,2,197,255,154,1,191,2,199,255,154,1,191,2,212,255,215,1,191,2,213,255,215,1,191,2,239,255,215,1,191,2,241,255,215,1,191,2,243,255,215,1,191,2,253,255,215,1,191,2,254,255,215,1,191,3,9,255,215,1,191,3,11,255,215,1,191,3,14,255,215,1,191,3,16,255,215,1,191,3,21,255,215,1,191,3,25,255,236,1,192,1,163,0,225,1,192,2,234,0,41,1,192,3,14,255,215,1,192,3,16,255,215,1,195,1,163,0,225,1,195,2,234,0,41,1,195,3,14,255,215,1,195,3,16,255,215,1,196,0,5,255,174,1,196,0,10,255,174,1,196,1,157,255,133,1,196,1,166,255,133,1,196,1,168,255,215,1,196,1,188,255,154,1,196,1,189,255,215,1,196,1,193,255,154,1,196,1,196,255,133,1,196,1,220,255,215,1,196,1,221,255,215,1,196,1,225,255,215,1,196,1,228,255,215,1,196,1,246,255,215,1,196,2,7,255,174,1,196,2,11,255,174,1,196,2,110,255,174,1,196,2,124,255,154,1,196,2,128,255,174,1,196,2,130,255,174,1,196,2,151,255,174,1,196,2,155,255,174,1,196,2,167,255,174,1,196,2,169,255,133,1,196,2,170,255,215,1,196,2,181,255,154,1,196,2,182,255,215,1,196,2,183,255,154,1,196,2,184,255,215,1,196,2,185,255,154,1,196,2,186,255,215,1,196,2,189,255,133,1,196,2,190,255,215,1,196,2,191,255,154,1,196,2,192,255,215,1,196,2,193,255,154,1,196,2,194,255,215,1,196,2,212,255,154,1,196,2,213,255,215,1,196,2,247,255,215,1,196,2,248,255,215,1,196,2,249,255,215,1,196,2,250,255,215,1,196,2,251,255,215,1,196,2,252,255,215,1,196,2,253,255,154,1,196,2,254,255,215,1,196,3,3,255,174,1,196,3,13,255,154,1,196,3,14,255,195,1,196,3,15,255,154,1,196,3,16,255,195,1,196,3,23,255,133,1,196,3,24,255,215,1,198,0,5,255,174,1,198,0,10,255,174,1,198,1,157,255,133,1,198,1,166,255,133,1,198,1,168,255,215,1,198,1,188,255,154,1,198,1,189,255,215,1,198,1,193,255,154,1,198,1,196,255,133,1,198,1,220,255,215,1,198,1,221,255,215,1,198,1,225,255,215,1,198,1,228,255,215,1,198,1,246,255,215,1,198,2,7,255,174,1,198,2,11,255,174,1,198,2,110,255,174,1,198,2,124,255,154,1,198,2,128,255,174,1,198,2,130,255,174,1,198,2,151,255,174,1,198,2,155,255,174,1,198,2,167,255,174,1,198,2,169,255,133,1,198,2,170,255,215,1,198,2,181,255,154,1,198,2,182,255,215,1,198,2,183,255,154,1,198,2,184,255,215,1,198,2,185,255,154,1,198,2,186,255,215,1,198,2,189,255,133,1,198,2,190,255,215,1,198,2,191,255,154,1,198,2,192,255,215,1,198,2,193,255,154,1,198,2,194,255,215,1,198,2,212,255,154,1,198,2,213,255,215,1,198,2,247,255,215,1,198,2,248,255,215,1,198,2,249,255,215,1,198,2,250,255,215,1,198,2,251,255,215,1,198,2,252,255,215,1,198,2,253,255,154,1,198,2,254,255,215,1,198,3,3,255,174,1,198,3,13,255,154,1,198,3,14,255,195,1,198,3,15,255,154,1,198,3,16,255,195,1,198,3,23,255,133,1,198,3,24,255,215,1,199,0,15,255,174,1,199,0,17,255,174,1,199,1,157,255,236,1,199,1,164,255,215,1,199,1,166,255,236,1,199,1,168,255,215,1,199,1,170,255,215,1,199,1,174,255,215,1,199,1,176,255,215,1,199,1,177,255,236,1,199,1,181,255,215,1,199,1,188,255,195,1,199,1,189,255,215,1,199,1,191,255,215,1,199,1,193,255,215,1,199,1,196,255,236,1,199,1,199,255,236,1,199,1,206,255,236,1,199,1,213,255,236,1,199,1,242,255,236,1,199,2,8,255,174,1,199,2,12,255,174,1,199,2,114,255,215,1,199,2,115,255,236,1,199,2,122,255,236,1,199,2,124,255,215,1,199,2,128,255,236,1,199,2,130,255,236,1,199,2,159,255,215,1,199,2,161,255,236,1,199,2,169,255,236,1,199,2,181,255,195,1,199,2,183,255,236,1,199,2,185,255,236,1,199,2,187,255,215,1,199,2,189,255,236,1,199,2,191,255,215,1,199,2,193,255,215,1,199,2,202,255,215,1,199,2,206,255,215,1,199,2,207,255,236,1,199,2,212,255,215,1,199,2,217,255,215,1,199,2,219,255,215,1,199,2,221,255,215,1,199,2,229,255,215,1,199,2,231,255,236,1,199,2,245,255,236,1,199,2,247,255,215,1,199,2,249,255,215,1,199,2,251,255,215,1,199,2,253,255,215,1,199,3,5,255,215,1,199,3,7,255,215,1,199,3,13,255,215,1,199,3,15,255,215,1,199,3,17,255,215,1,199,3,18,255,236,1,199,3,23,255,236,1,199,3,27,255,215,1,199,3,28,255,236,1,200,0,15,255,174,1,200,0,17,255,174,1,200,1,157,255,236,1,200,1,164,255,215,1,200,1,166,255,236,1,200,1,168,255,215,1,200,1,170,255,215,1,200,1,174,255,215,1,200,1,176,255,215,1,200,1,177,255,236,1,200,1,181,255,215,1,200,1,188,255,195,1,200,1,189,255,215,1,200,1,191,255,215,1,200,1,193,255,215,1,200,1,196,255,236,1,200,1,199,255,236,1,200,1,206,255,236,1,200,1,213,255,236,1,200,1,242,255,236,1,200,2,8,255,174,1,200,2,12,255,174,1,200,2,114,255,215,1,200,2,115,255,236,1,200,2,122,255,236,1,200,2,124,255,215,1,200,2,128,255,236,1,200,2,130,255,236,1,200,2,159,255,215,1,200,2,161,255,236,1,200,2,169,255,236,1,200,2,181,255,195,1,200,2,183,255,236,1,200,2,185,255,236,1,200,2,187,255,215,1,200,2,189,255,236,1,200,2,191,255,215,1,200,2,193,255,215,1,200,2,202,255,215,1,200,2,206,255,215,1,200,2,207,255,236,1,200,2,212,255,215,1,200,2,217,255,215,1,200,2,219,255,215,1,200,2,221,255,215,1,200,2,229,255,215,1,200,2,231,255,236,1,200,2,245,255,236,1,200,2,247,255,215,1,200,2,249,255,215,1,200,2,251,255,215,1,200,2,253,255,215,1,200,3,5,255,215,1,200,3,7,255,215,1,200,3,13,255,215,1,200,3,15,255,215,1,200,3,17,255,215,1,200,3,18,255,236,1,200,3,23,255,236,1,200,3,27,255,215,1,200,3,28,255,236,1,202,0,5,255,236,1,202,0,10,255,236,1,202,2,7,255,236,1,202,2,11,255,236,1,204,1,233,0,41,1,205,0,15,255,154,1,205,0,16,255,215,1,205,0,17,255,154,1,205,1,206,255,195,1,205,1,207,255,236,1,205,1,213,255,195,1,205,1,216,255,236,1,205,1,219,255,236,1,205,1,222,255,236,1,205,1,234,255,236,1,205,1,237,255,236,1,205,1,242,255,195,1,205,2,2,255,215,1,205,2,3,255,215,1,205,2,4,255,215,1,205,2,8,255,154,1,205,2,12,255,154,1,205,2,106,255,236,1,205,2,115,255,195,1,205,2,127,255,236,1,205,2,133,255,236,1,205,2,135,255,236,1,205,2,137,255,236,1,205,2,141,255,236,1,205,2,178,255,236,1,205,2,180,255,236,1,205,2,207,255,195,1,205,2,224,255,236,1,205,2,240,255,236,1,205,2,242,255,236,1,205,2,244,255,236,1,205,3,10,255,236,1,205,3,12,255,236,1,205,3,18,255,195,1,205,3,22,255,236,1,205,3,26,255,236,1,205,3,28,255,195,1,206,0,5,255,236,1,206,0,10,255,236,1,206,2,7,255,236,1,206,2,11,255,236,1,207,0,5,255,236,1,207,0,10,255,236,1,207,2,7,255,236,1,207,2,11,255,236,1,208,1,207,255,215,1,208,1,216,255,215,1,208,1,219,255,215,1,208,1,222,255,215,1,208,1,225,255,215,1,208,1,234,255,215,1,208,1,237,255,215,1,208,2,106,255,215,1,208,2,127,255,215,1,208,2,133,255,215,1,208,2,135,255,215,1,208,2,137,255,215,1,208,2,141,255,215,1,208,2,178,255,215,1,208,2,180,255,215,1,208,2,192,255,215,1,208,2,194,255,215,1,208,2,198,255,215,1,208,2,200,255,215,1,208,2,213,255,215,1,208,2,224,255,215,1,208,2,240,255,215,1,208,2,242,255,215,1,208,2,244,255,215,1,208,2,254,255,215,1,208,3,10,255,215,1,208,3,12,255,215,1,208,3,22,255,215,1,208,3,26,255,215,1,209,1,233,0,41,1,212,1,207,255,215,1,212,1,216,255,215,1,212,1,219,255,215,1,212,1,222,255,215,1,212,1,225,255,215,1,212,1,234,255,215,1,212,1,237,255,215,1,212,2,106,255,215,1,212,2,127,255,215,1,212,2,133,255,215,1,212,2,135,255,215,1,212,2,137,255,215,1,212,2,141,255,215,1,212,2,178,255,215,1,212,2,180,255,215,1,212,2,192,255,215,1,212,2,194,255,215,1,212,2,198,255,215,1,212,2,200,255,215,1,212,2,213,255,215,1,212,2,224,255,215,1,212,2,240,255,215,1,212,2,242,255,215,1,212,2,244,255,215,1,212,2,254,255,215,1,212,3,10,255,215,1,212,3,12,255,215,1,212,3,22,255,215,1,212,3,26,255,215,1,216,0,5,255,236,1,216,0,10,255,236,1,216,1,208,255,215,1,216,1,220,255,236,1,216,1,221,255,236,1,216,1,223,255,215,1,216,1,225,255,236,1,216,1,228,255,236,1,216,1,246,255,236,1,216,2,7,255,236,1,216,2,11,255,236,1,216,2,160,255,215,1,216,2,170,255,236,1,216,2,182,255,236,1,216,2,188,255,215,1,216,2,190,255,236,1,216,2,192,255,236,1,216,2,194,255,236,1,216,2,203,255,215,1,216,2,213,255,236,1,216,2,230,255,215,1,216,2,248,255,236,1,216,2,250,255,236,1,216,2,252,255,236,1,216,2,254,255,236,1,216,3,6,255,215,1,216,3,8,255,215,1,216,3,14,255,236,1,216,3,16,255,236,1,216,3,24,255,236,1,218,0,5,255,236,1,218,0,10,255,236,1,218,1,208,255,215,1,218,1,220,255,236,1,218,1,221,255,236,1,218,1,223,255,215,1,218,1,225,255,236,1,218,1,228,255,236,1,218,1,246,255,236,1,218,2,7,255,236,1,218,2,11,255,236,1,218,2,160,255,215,1,218,2,170,255,236,1,218,2,182,255,236,1,218,2,188,255,215,1,218,2,190,255,236,1,218,2,192,255,236,1,218,2,194,255,236,1,218,2,203,255,215,1,218,2,213,255,236,1,218,2,230,255,215,1,218,2,248,255,236,1,218,2,250,255,236,1,218,2,252,255,236,1,218,2,254,255,236,1,218,3,6,255,215,1,218,3,8,255,215,1,218,3,14,255,236,1,218,3,16,255,236,1,218,3,24,255,236,1,220,0,15,255,154,1,220,0,16,255,215,1,220,0,17,255,154,1,220,1,206,255,195,1,220,1,207,255,236,1,220,1,213,255,195,1,220,1,216,255,236,1,220,1,219,255,236,1,220,1,222,255,236,1,220,1,234,255,236,1,220,1,237,255,236,1,220,1,242,255,195,1,220,2,2,255,215,1,220,2,3,255,215,1,220,2,4,255,215,1,220,2,8,255,154,1,220,2,12,255,154,1,220,2,106,255,236,1,220,2,115,255,195,1,220,2,127,255,236,1,220,2,133,255,236,1,220,2,135,255,236,1,220,2,137,255,236,1,220,2,141,255,236,1,220,2,178,255,236,1,220,2,180,255,236,1,220,2,207,255,195,1,220,2,224,255,236,1,220,2,240,255,236,1,220,2,242,255,236,1,220,2,244,255,236,1,220,3,10,255,236,1,220,3,12,255,236,1,220,3,18,255,195,1,220,3,22,255,236,1,220,3,26,255,236,1,220,3,28,255,195,1,221,0,15,255,174,1,221,0,17,255,174,1,221,1,206,255,215,1,221,1,213,255,215,1,221,1,242,255,215,1,221,2,8,255,174,1,221,2,12,255,174,1,221,2,115,255,215,1,221,2,207,255,215,1,221,3,18,255,215,1,221,3,28,255,215,1,222,0,5,255,236,1,222,0,10,255,236,1,222,1,208,255,215,1,222,1,220,255,236,1,222,1,221,255,236,1,222,1,223,255,215,1,222,1,225,255,236,1,222,1,228,255,236,1,222,1,246,255,236,1,222,2,7,255,236,1,222,2,11,255,236,1,222,2,160,255,215,1,222,2,170,255,236,1,222,2,182,255,236,1,222,2,188,255,215,1,222,2,190,255,236,1,222,2,192,255,236,1,222,2,194,255,236,1,222,2,203,255,215,1,222,2,213,255,236,1,222,2,230,255,215,1,222,2,248,255,236,1,222,2,250,255,236,1,222,2,252,255,236,1,222,2,254,255,236,1,222,3,6,255,215,1,222,3,8,255,215,1,222,3,14,255,236,1,222,3,16,255,236,1,222,3,24,255,236,1,223,1,207,255,215,1,223,1,216,255,215,1,223,1,219,255,215,1,223,1,222,255,215,1,223,1,225,255,215,1,223,1,234,255,215,1,223,1,237,255,215,1,223,2,106,255,215,1,223,2,127,255,215,1,223,2,133,255,215,1,223,2,135,255,215,1,223,2,137,255,215,1,223,2,141,255,215,1,223,2,178,255,215,1,223,2,180,255,215,1,223,2,192,255,215,1,223,2,194,255,215,1,223,2,198,255,215,1,223,2,200,255,215,1,223,2,213,255,215,1,223,2,224,255,215,1,223,2,240,255,215,1,223,2,242,255,215,1,223,2,244,255,215,1,223,2,254,255,215,1,223,3,10,255,215,1,223,3,12,255,215,1,223,3,22,255,215,1,223,3,26,255,215,1,224,0,5,255,236,1,224,0,10,255,236,1,224,2,7,255,236,1,224,2,11,255,236,1,227,0,5,255,236,1,227,0,10,255,236,1,227,2,7,255,236,1,227,2,11,255,236,1,228,0,5,255,133,1,228,0,10,255,133,1,228,1,208,255,215,1,228,1,220,255,154,1,228,1,221,255,195,1,228,1,223,255,215,1,228,1,225,255,174,1,228,1,228,255,154,1,228,1,246,255,195,1,228,2,7,255,133,1,228,2,11,255,133,1,228,2,109,255,215,1,228,2,129,255,215,1,228,2,131,255,215,1,228,2,139,255,215,1,228,2,160,255,215,1,228,2,170,255,154,1,228,2,182,255,154,1,228,2,184,255,195,1,228,2,186,255,195,1,228,2,188,255,215,1,228,2,190,255,154,1,228,2,192,255,174,1,228,2,194,255,174,1,228,2,198,255,215,1,228,2,200,255,215,1,228,2,203,255,215,1,228,2,213,255,174,1,228,2,230,255,215,1,228,2,234,255,215,1,228,2,248,255,195,1,228,2,250,255,195,1,228,2,252,255,195,1,228,2,254,255,174,1,228,3,6,255,215,1,228,3,8,255,215,1,228,3,14,255,154,1,228,3,16,255,154,1,228,3,24,255,154,1,230,0,5,255,133,1,230,0,10,255,133,1,230,1,208,255,215,1,230,1,220,255,154,1,230,1,221,255,195,1,230,1,223,255,215,1,230,1,225,255,174,1,230,1,228,255,154,1,230,1,246,255,195,1,230,2,7,255,133,1,230,2,11,255,133,1,230,2,109,255,215,1,230,2,129,255,215,1,230,2,131,255,215,1,230,2,139,255,215,1,230,2,160,255,215,1,230,2,170,255,154,1,230,2,182,255,154,1,230,2,184,255,195,1,230,2,186,255,195,1,230,2,188,255,215,1,230,2,190,255,154,1,230,2,192,255,174,1,230,2,194,255,174,1,230,2,198,255,215,1,230,2,200,255,215,1,230,2,203,255,215,1,230,2,213,255,174,1,230,2,230,255,215,1,230,2,234,255,215,1,230,2,248,255,195,1,230,2,250,255,195,1,230,2,252,255,195,1,230,2,254,255,174,1,230,3,6,255,215,1,230,3,8,255,215,1,230,3,14,255,154,1,230,3,16,255,154,1,230,3,24,255,154,1,231,0,5,255,236,1,231,0,10,255,236,1,231,1,208,255,215,1,231,1,220,255,236,1,231,1,221,255,236,1,231,1,223,255,215,1,231,1,225,255,236,1,231,1,228,255,236,1,231,1,246,255,236,1,231,2,7,255,236,1,231,2,11,255,236,1,231,2,160,255,215,1,231,2,170,255,236,1,231,2,182,255,236,1,231,2,188,255,215,1,231,2,190,255,236,1,231,2,192,255,236,1,231,2,194,255,236,1,231,2,203,255,215,1,231,2,213,255,236,1,231,2,230,255,215,1,231,2,248,255,236,1,231,2,250,255,236,1,231,2,252,255,236,1,231,2,254,255,236,1,231,3,6,255,215,1,231,3,8,255,215,1,231,3,14,255,236,1,231,3,16,255,236,1,231,3,24,255,236,1,232,0,5,255,236,1,232,0,10,255,236,1,232,1,208,255,215,1,232,1,220,255,236,1,232,1,221,255,236,1,232,1,223,255,215,1,232,1,225,255,236,1,232,1,228,255,236,1,232,1,246,255,236,1,232,2,7,255,236,1,232,2,11,255,236,1,232,2,160,255,215,1,232,2,170,255,236,1,232,2,182,255,236,1,232,2,188,255,215,1,232,2,190,255,236,1,232,2,192,255,236,1,232,2,194,255,236,1,232,2,203,255,215,1,232,2,213,255,236,1,232,2,230,255,215,1,232,2,248,255,236,1,232,2,250,255,236,1,232,2,252,255,236,1,232,2,254,255,236,1,232,3,6,255,215,1,232,3,8,255,215,1,232,3,14,255,236,1,232,3,16,255,236,1,232,3,24,255,236,1,234,0,5,255,236,1,234,0,10,255,236,1,234,2,7,255,236,1,234,2,11,255,236,1,235,0,5,255,236,1,235,0,10,255,236,1,235,2,7,255,236,1,235,2,11,255,236,1,235,3,14,255,215,1,235,3,16,255,215,1,236,0,15,255,154,1,236,0,16,255,215,1,236,0,17,255,154,1,236,1,206,255,195,1,236,1,207,255,236,1,236,1,213,255,195,1,236,1,216,255,236,1,236,1,219,255,236,1,236,1,222,255,236,1,236,1,234,255,236,1,236,1,237,255,236,1,236,1,242,255,195,1,236,2,2,255,215,1,236,2,3,255,215,1,236,2,4,255,215,1,236,2,8,255,154,1,236,2,12,255,154,1,236,2,106,255,236,1,236,2,115,255,195,1,236,2,127,255,236,1,236,2,133,255,236,1,236,2,135,255,236,1,236,2,137,255,236,1,236,2,141,255,236,1,236,2,178,255,236,1,236,2,180,255,236,1,236,2,207,255,195,1,236,2,224,255,236,1,236,2,240,255,236,1,236,2,242,255,236,1,236,2,244,255,236,1,236,3,10,255,236,1,236,3,12,255,236,1,236,3,18,255,195,1,236,3,22,255,236,1,236,3,26,255,236,1,236,3,28,255,195,1,242,0,5,255,133,1,242,0,10,255,133,1,242,1,208,255,215,1,242,1,220,255,154,1,242,1,221,255,195,1,242,1,223,255,215,1,242,1,225,255,174,1,242,1,228,255,154,1,242,1,246,255,195,1,242,2,7,255,133,1,242,2,11,255,133,1,242,2,109,255,215,1,242,2,129,255,215,1,242,2,131,255,215,1,242,2,139,255,215,1,242,2,160,255,215,1,242,2,170,255,154,1,242,2,182,255,154,1,242,2,184,255,195,1,242,2,186,255,195,1,242,2,188,255,215,1,242,2,190,255,154,1,242,2,192,255,174,1,242,2,194,255,174,1,242,2,198,255,215,1,242,2,200,255,215,1,242,2,203,255,215,1,242,2,213,255,174,1,242,2,230,255,215,1,242,2,234,255,215,1,242,2,248,255,195,1,242,2,250,255,195,1,242,2,252,255,195,1,242,2,254,255,174,1,242,3,6,255,215,1,242,3,8,255,215,1,242,3,14,255,154,1,242,3,16,255,154,1,242,3,24,255,154,1,243,0,5,255,133,1,243,0,10,255,133,1,243,1,208,255,215,1,243,1,220,255,154,1,243,1,221,255,195,1,243,1,223,255,215,1,243,1,225,255,174,1,243,1,228,255,154,1,243,1,246,255,195,1,243,2,7,255,133,1,243,2,11,255,133,1,243,2,109,255,215,1,243,2,129,255,215,1,243,2,131,255,215,1,243,2,139,255,215,1,243,2,160,255,215,1,243,2,170,255,154,1,243,2,182,255,154,1,243,2,184,255,195,1,243,2,186,255,195,1,243,2,188,255,215,1,243,2,190,255,154,1,243,2,192,255,174,1,243,2,194,255,174,1,243,2,198,255,215,1,243,2,200,255,215,1,243,2,203,255,215,1,243,2,213,255,174,1,243,2,230,255,215,1,243,2,234,255,215,1,243,2,248,255,195,1,243,2,250,255,195,1,243,2,252,255,195,1,243,2,254,255,174,1,243,3,6,255,215,1,243,3,8,255,215,1,243,3,14,255,154,1,243,3,16,255,154,1,243,3,24,255,154,1,244,0,5,255,236,1,244,0,10,255,236,1,244,2,7,255,236,1,244,2,11,255,236,1,244,3,14,255,215,1,244,3,16,255,215,1,245,1,207,255,215,1,245,1,216,255,215,1,245,1,219,255,215,1,245,1,222,255,215,1,245,1,225,255,215,1,245,1,234,255,215,1,245,1,237,255,215,1,245,2,106,255,215,1,245,2,127,255,215,1,245,2,133,255,215,1,245,2,135,255,215,1,245,2,137,255,215,1,245,2,141,255,215,1,245,2,178,255,215,1,245,2,180,255,215,1,245,2,192,255,215,1,245,2,194,255,215,1,245,2,198,255,215,1,245,2,200,255,215,1,245,2,213,255,215,1,245,2,224,255,215,1,245,2,240,255,215,1,245,2,242,255,215,1,245,2,244,255,215,1,245,2,254,255,215,1,245,3,10,255,215,1,245,3,12,255,215,1,245,3,22,255,215,1,245,3,26,255,215,1,246,0,15,255,174,1,246,0,17,255,174,1,246,1,206,255,215,1,246,1,213,255,215,1,246,1,242,255,215,1,246,2,8,255,174,1,246,2,12,255,174,1,246,2,115,255,215,1,246,2,207,255,215,1,246,3,18,255,215,1,246,3,28,255,215,1,248,0,15,255,133,1,248,0,16,255,174,1,248,0,17,255,133,1,248,1,159,255,215,1,248,1,164,255,154,1,248,1,170,255,113,1,248,1,174,255,154,1,248,1,181,255,154,1,248,1,184,255,215,1,248,1,187,255,215,1,248,1,188,0,41,1,248,1,190,255,174,1,248,1,204,255,154,1,248,1,205,255,154,1,248,1,206,255,133,1,248,1,207,255,113,1,248,1,208,255,215,1,248,1,209,255,215,1,248,1,210,255,154,1,248,1,211,255,154,1,248,1,212,255,154,1,248,1,213,255,133,1,248,1,214,255,154,1,248,1,215,255,154,1,248,1,216,255,113,1,248,1,217,255,154,1,248,1,218,255,154,1,248,1,219,255,113,1,248,1,220,255,174,1,248,1,221,255,174,1,248,1,222,255,113,1,248,1,223,255,215,1,248,1,224,255,154,1,248,1,225,255,154,1,248,1,226,255,154,1,248,1,227,255,154,1,248,1,228,255,174,1,248,1,229,255,154,1,248,1,230,255,154,1,248,1,231,255,215,1,248,1,232,255,154,1,248,1,233,255,195,1,248,1,234,255,113,1,248,1,236,255,154,1,248,1,237,255,113,1,248,1,238,255,133,1,248,1,242,255,133,1,248,1,243,255,154,1,248,1,245,255,154,1,248,1,246,255,174,1,248,1,247,255,154,1,248,1,249,255,154,1,248,2,2,255,174,1,248,2,3,255,174,1,248,2,4,255,174,1,248,2,8,255,133,1,248,2,12,255,133,1,248,2,106,255,113,1,248,2,107,255,154,1,248,2,108,255,215,1,248,2,109,255,215,1,248,2,113,255,154,1,248,2,114,255,113,1,248,2,115,255,133,1,248,2,117,255,154,1,248,2,119,255,154,1,248,2,121,255,154,1,248,2,125,255,154,1,248,2,126,255,215,1,248,2,127,255,113,1,248,2,129,255,215,1,248,2,131,255,215,1,248,2,132,255,215,1,248,2,133,255,113,1,248,2,134,255,215,1,248,2,135,255,113,1,248,2,136,255,215,1,248,2,137,255,113,1,248,2,138,255,215,1,248,2,139,255,215,1,248,2,140,255,215,1,248,2,141,255,113,1,248,2,150,255,154,1,248,2,154,255,154,1,248,2,158,255,154,1,248,2,160,255,215,1,248,2,162,255,215,1,248,2,164,255,154,1,248,2,166,255,154,1,248,2,170,255,174,1,248,2,172,255,154,1,248,2,174,255,154,1,248,2,176,255,154,1,248,2,177,255,215,1,248,2,178,255,113,1,248,2,179,255,215,1,248,2,180,255,113,1,248,2,181,0,41,1,248,2,182,255,174,1,248,2,184,255,174,1,248,2,186,255,174,1,248,2,188,255,215,1,248,2,190,255,174,1,248,2,192,255,154,1,248,2,194,255,154,1,248,2,196,255,154,1,248,2,197,255,154,1,248,2,198,255,113,1,248,2,199,255,154,1,248,2,200,255,113,1,248,2,203,255,215,1,248,2,205,255,154,1,248,2,206,255,154,1,248,2,207,255,133,1,248,2,209,255,154,1,248,2,211,255,154,1,248,2,213,255,154,1,248,2,215,255,154,1,248,2,217,255,113,1,248,2,219,255,113,1,248,2,221,255,113,1,248,2,224,255,113,1,248,2,230,255,215,1,248,2,232,255,215,1,248,2,234,255,195,1,248,2,236,255,154,1,248,2,238,255,154,1,248,2,239,255,215,1,248,2,240,255,113,1,248,2,241,255,215,1,248,2,242,255,113,1,248,2,243,255,215,1,248,2,244,255,113,1,248,2,246,255,215,1,248,2,248,255,174,1,248,2,250,255,174,1,248,2,252,255,174,1,248,2,254,255,154,1,248,3,0,255,154,1,248,3,2,255,154,1,248,3,6,255,215,1,248,3,8,255,215,1,248,3,9,255,113,1,248,3,10,255,113,1,248,3,11,255,113,1,248,3,12,255,113,1,248,3,14,255,154,1,248,3,16,255,154,1,248,3,17,255,154,1,248,3,18,255,133,1,248,3,20,255,154,1,248,3,21,255,215,1,248,3,22,255,113,1,248,3,24,255,174,1,248,3,26,255,113,1,248,3,27,255,154,1,248,3,28,255,133,1,249,0,15,255,154,1,249,0,16,255,215,1,249,0,17,255,154,1,249,1,206,255,195,1,249,1,207,255,236,1,249,1,213,255,195,1,249,1,216,255,236,1,249,1,219,255,236,1,249,1,222,255,236,1,249,1,234,255,236,1,249,1,237,255,236,1,249,1,242,255,195,1,249,2,2,255,215,1,249,2,3,255,215,1,249,2,4,255,215,1,249,2,8,255,154,1,249,2,12,255,154,1,249,2,106,255,236,1,249,2,115,255,195,1,249,2,127,255,236,1,249,2,133,255,236,1,249,2,135,255,236,1,249,2,137,255,236,1,249,2,141,255,236,1,249,2,178,255,236,1,249,2,180,255,236,1,249,2,207,255,195,1,249,2,224,255,236,1,249,2,240,255,236,1,249,2,242,255,236,1,249,2,244,255,236,1,249,3,10,255,236,1,249,3,12,255,236,1,249,3,18,255,195,1,249,3,22,255,236,1,249,3,26,255,236,1,249,3,28,255,195,1,250,0,15,255,154,1,250,0,17,255,154,1,250,0,34,0,41,1,250,0,36,255,174,1,250,0,38,255,236,1,250,0,42,255,236,1,250,0,50,255,236,1,250,0,52,255,236,1,250,0,68,255,215,1,250,0,70,255,215,1,250,0,71,255,215,1,250,0,72,255,215,1,250,0,74,255,236,1,250,0,80,255,236,1,250,0,81,255,236,1,250,0,82,255,215,1,250,0,83,255,236,1,250,0,84,255,215,1,250,0,85,255,236,1,250,0,86,255,236,1,250,0,88,255,236,1,250,0,130,255,174,1,250,0,131,255,174,1,250,0,132,255,174,1,250,0,133,255,174,1,250,0,134,255,174,1,250,0,135,255,174,1,250,0,137,255,236,1,250,0,148,255,236,1,250,0,149,255,236,1,250,0,150,255,236,1,250,0,151,255,236,1,250,0,152,255,236,1,250,0,154,255,236,1,250,0,162,255,215,1,250,0,163,255,215,1,250,0,164,255,215,1,250,0,165,255,215,1,250,0,166,255,215,1,250,0,167,255,215,1,250,0,168,255,215,1,250,0,169,255,215,1,250,0,170,255,215,1,250,0,171,255,215,1,250,0,172,255,215,1,250,0,173,255,215,1,250,0,180,255,215,1,250,0,181,255,215,1,250,0,182,255,215,1,250,0,183,255,215,1,250,0,184,255,215,1,250,0,186,255,215,1,250,0,187,255,236,1,250,0,188,255,236,1,250,0,189,255,236,1,250,0,190,255,236,1,250,0,194,255,174,1,250,0,195,255,215,1,250,0,196,255,174,1,250,0,197,255,215,1,250,0,198,255,174,1,250,0,199,255,215,1,250,0,200,255,236,1,250,0,201,255,215,1,250,0,202,255,236,1,250,0,203,255,215,1,250,0,204,255,236,1,250,0,205,255,215,1,250,0,206,255,236,1,250,0,207,255,215,1,250,0,209,255,215,1,250,0,211,255,215,1,250,0,213,255,215,1,250,0,215,255,215,1,250,0,217,255,215,1,250,0,219,255,215,1,250,0,221,255,215,1,250,0,222,255,236,1,250,0,223,255,236,1,250,0,224,255,236,1,250,0,225,255,236,1,250,0,226,255,236,1,250,0,227,255,236,1,250,0,228,255,236,1,250,0,229,255,236,1,250,0,250,255,236,1,250,1,6,255,236,1,250,1,8,255,236,1,250,1,13,255,236,1,250,1,14,255,236,1,250,1,15,255,215,1,250,1,16,255,236,1,250,1,17,255,215,1,250,1,18,255,236,1,250,1,19,255,215,1,250,1,20,255,236,1,250,1,21,255,215,1,250,1,23,255,236,1,250,1,25,255,236,1,250,1,29,255,236,1,250,1,33,255,236,1,250,1,43,255,236,1,250,1,45,255,236,1,250,1,47,255,236,1,250,1,49,255,236,1,250,1,51,255,236,1,250,1,53,255,236,1,250,1,67,255,174,1,250,1,68,255,215,1,250,1,70,255,215,1,250,1,71,255,236,1,250,1,72,255,215,1,250,1,74,255,236,1,250,2,8,255,154,1,250,2,12,255,154,1,250,2,87,255,236,1,250,2,88,255,174,1,250,2,89,255,215,1,250,2,95,255,236,1,250,2,96,255,215,1,250,2,98,255,236,1,250,3,29,255,174,1,250,3,30,255,215,1,250,3,31,255,174,1,250,3,32,255,215,1,250,3,33,255,174,1,250,3,34,255,215,1,250,3,35,255,174,1,250,3,37,255,174,1,250,3,38,255,215,1,250,3,39,255,174,1,250,3,40,255,215,1,250,3,41,255,174,1,250,3,42,255,215,1,250,3,43,255,174,1,250,3,44,255,215,1,250,3,45,255,174,1,250,3,46,255,215,1,250,3,47,255,174,1,250,3,48,255,215,1,250,3,49,255,174,1,250,3,50,255,215,1,250,3,51,255,174,1,250,3,52,255,215,1,250,3,54,255,215,1,250,3,56,255,215,1,250,3,58,255,215,1,250,3,60,255,215,1,250,3,64,255,215,1,250,3,66,255,215,1,250,3,68,255,215,1,250,3,73,255,236,1,250,3,74,255,215,1,250,3,75,255,236,1,250,3,76,255,215,1,250,3,77,255,236,1,250,3,78,255,215,1,250,3,79,255,236,1,250,3,81,255,236,1,250,3,82,255,215,1,250,3,83,255,236,1,250,3,84,255,215,1,250,3,85,255,236,1,250,3,86,255,215,1,250,3,87,255,236,1,250,3,88,255,215,1,250,3,89,255,236,1,250,3,90,255,215,1,250,3,91,255,236,1,250,3,92,255,215,1,250,3,93,255,236,1,250,3,94,255,215,1,250,3,95,255,236,1,250,3,96,255,215,1,250,3,98,255,236,1,250,3,100,255,236,1,250,3,102,255,236,1,250,3,104,255,236,1,250,3,106,255,236,1,250,3,108,255,236,1,250,3,110,255,236,1,251,0,5,0,82,1,251,0,10,0,82,1,251,0,15,255,174,1,251,0,17,255,174,1,251,0,34,0,41,1,251,2,7,0,82,1,251,2,8,255,174,1,251,2,11,0,82,1,251,2,12,255,174,1,252,0,15,255,154,1,252,0,17,255,154,1,252,0,34,0,41,1,252,0,36,255,174,1,252,0,38,255,236,1,252,0,42,255,236,1,252,0,50,255,236,1,252,0,52,255,236,1,252,0,68,255,215,1,252,0,70,255,215,1,252,0,71,255,215,1,252,0,72,255,215,1,252,0,74,255,236,1,252,0,80,255,236,1,252,0,81,255,236,1,252,0,82,255,215,1,252,0,83,255,236,1,252,0,84,255,215,1,252,0,85,255,236,1,252,0,86,255,236,1,252,0,88,255,236,1,252,0,130,255,174,1,252,0,131,255,174,1,252,0,132,255,174,1,252,0,133,255,174,1,252,0,134,255,174,1,252,0,135,255,174,1,252,0,137,255,236,1,252,0,148,255,236,1,252,0,149,255,236,1,252,0,150,255,236,1,252,0,151,255,236,1,252,0,152,255,236,1,252,0,154,255,236,1,252,0,162,255,215,1,252,0,163,255,215,1,252,0,164,255,215,1,252,0,165,255,215,1,252,0,166,255,215,1,252,0,167,255,215,1,252,0,168,255,215,1,252,0,169,255,215,1,252,0,170,255,215,1,252,0,171,255,215,1,252,0,172,255,215,1,252,0,173,255,215,1,252,0,180,255,215,1,252,0,181,255,215,1,252,0,182,255,215,1,252,0,183,255,215,1,252,0,184,255,215,1,252,0,186,255,215,1,252,0,187,255,236,1,252,0,188,255,236,1,252,0,189,255,236,1,252,0,190,255,236,1,252,0,194,255,174,1,252,0,195,255,215,1,252,0,196,255,174,1,252,0,197,255,215,1,252,0,198,255,174,1,252,0,199,255,215,1,252,0,200,255,236,1,252,0,201,255,215,1,252,0,202,255,236,1,252,0,203,255,215,1,252,0,204,255,236,1,252,0,205,255,215,1,252,0,206,255,236,1,252,0,207,255,215,1,252,0,209,255,215,1,252,0,211,255,215,1,252,0,213,255,215,1,252,0,215,255,215,1,252,0,217,255,215,1,252,0,219,255,215,1,252,0,221,255,215,1,252,0,222,255,236,1,252,0,223,255,236,1,252,0,224,255,236,1,252,0,225,255,236,1,252,0,226,255,236,1,252,0,227,255,236,1,252,0,228,255,236,1,252,0,229,255,236,1,252,0,250,255,236,1,252,1,6,255,236,1,252,1,8,255,236,1,252,1,13,255,236,1,252,1,14,255,236,1,252,1,15,255,215,1,252,1,16,255,236,1,252,1,17,255,215,1,252,1,18,255,236,1,252,1,19,255,215,1,252,1,20,255,236,1,252,1,21,255,215,1,252,1,23,255,236,1,252,1,25,255,236,1,252,1,29,255,236,1,252,1,33,255,236,1,252,1,43,255,236,1,252,1,45,255,236,1,252,1,47,255,236,1,252,1,49,255,236,1,252,1,51,255,236,1,252,1,53,255,236,1,252,1,67,255,174,1,252,1,68,255,215,1,252,1,70,255,215,1,252,1,71,255,236,1,252,1,72,255,215,1,252,1,74,255,236,1,252,2,8,255,154,1,252,2,12,255,154,1,252,2,87,255,236,1,252,2,88,255,174,1,252,2,89,255,215,1,252,2,95,255,236,1,252,2,96,255,215,1,252,2,98,255,236,1,252,3,29,255,174,1,252,3,30,255,215,1,252,3,31,255,174,1,252,3,32,255,215,1,252,3,33,255,174,1,252,3,34,255,215,1,252,3,35,255,174,1,252,3,37,255,174,1,252,3,38,255,215,1,252,3,39,255,174,1,252,3,40,255,215,1,252,3,41,255,174,1,252,3,42,255,215,1,252,3,43,255,174,1,252,3,44,255,215,1,252,3,45,255,174,1,252,3,46,255,215,1,252,3,47,255,174,1,252,3,48,255,215,1,252,3,49,255,174,1,252,3,50,255,215,1,252,3,51,255,174,1,252,3,52,255,215,1,252,3,54,255,215,1,252,3,56,255,215,1,252,3,58,255,215,1,252,3,60,255,215,1,252,3,64,255,215,1,252,3,66,255,215,1,252,3,68,255,215,1,252,3,73,255,236,1,252,3,74,255,215,1,252,3,75,255,236,1,252,3,76,255,215,1,252,3,77,255,236,1,252,3,78,255,215,1,252,3,79,255,236,1,252,3,81,255,236,1,252,3,82,255,215,1,252,3,83,255,236,1,252,3,84,255,215,1,252,3,85,255,236,1,252,3,86,255,215,1,252,3,87,255,236,1,252,3,88,255,215,1,252,3,89,255,236,1,252,3,90,255,215,1,252,3,91,255,236,1,252,3,92,255,215,1,252,3,93,255,236,1,252,3,94,255,215,1,252,3,95,255,236,1,252,3,96,255,215,1,252,3,98,255,236,1,252,3,100,255,236,1,252,3,102,255,236,1,252,3,104,255,236,1,252,3,106,255,236,1,252,3,108,255,236,1,252,3,110,255,236,1,253,0,5,0,82,1,253,0,10,0,82,1,253,0,15,255,174,1,253,0,17,255,174,1,253,0,34,0,41,1,253,2,7,0,82,1,253,2,8,255,174,1,253,2,11,0,82,1,253,2,12,255,174,1,254,0,15,255,154,1,254,0,17,255,154,1,254,0,34,0,41,1,254,0,36,255,174,1,254,0,38,255,236,1,254,0,42,255,236,1,254,0,50,255,236,1,254,0,52,255,236,1,254,0,68,255,215,1,254,0,70,255,215,1,254,0,71,255,215,1,254,0,72,255,215,1,254,0,74,255,236,1,254,0,80,255,236,1,254,0,81,255,236,1,254,0,82,255,215,1,254,0,83,255,236,1,254,0,84,255,215,1,254,0,85,255,236,1,254,0,86,255,236,1,254,0,88,255,236,1,254,0,130,255,174,1,254,0,131,255,174,1,254,0,132,255,174,1,254,0,133,255,174,1,254,0,134,255,174,1,254,0,135,255,174,1,254,0,137,255,236,1,254,0,148,255,236,1,254,0,149,255,236,1,254,0,150,255,236,1,254,0,151,255,236,1,254,0,152,255,236,1,254,0,154,255,236,1,254,0,162,255,215,1,254,0,163,255,215,1,254,0,164,255,215,1,254,0,165,255,215,1,254,0,166,255,215,1,254,0,167,255,215,1,254,0,168,255,215,1,254,0,169,255,215,1,254,0,170,255,215,1,254,0,171,255,215,1,254,0,172,255,215,1,254,0,173,255,215,1,254,0,180,255,215,1,254,0,181,255,215,1,254,0,182,255,215,1,254,0,183,255,215,1,254,0,184,255,215,1,254,0,186,255,215,1,254,0,187,255,236,1,254,0,188,255,236,1,254,0,189,255,236,1,254,0,190,255,236,1,254,0,194,255,174,1,254,0,195,255,215,1,254,0,196,255,174,1,254,0,197,255,215,1,254,0,198,255,174,1,254,0,199,255,215,1,254,0,200,255,236,1,254,0,201,255,215,1,254,0,202,255,236,1,254,0,203,255,215,1,254,0,204,255,236,1,254,0,205,255,215,1,254,0,206,255,236,1,254,0,207,255,215,1,254,0,209,255,215,1,254,0,211,255,215,1,254,0,213,255,215,1,254,0,215,255,215,1,254,0,217,255,215,1,254,0,219,255,215,1,254,0,221,255,215,1,254,0,222,255,236,1,254,0,223,255,236,1,254,0,224,255,236,1,254,0,225,255,236,1,254,0,226,255,236,1,254,0,227,255,236,1,254,0,228,255,236,1,254,0,229,255,236,1,254,0,250,255,236,1,254,1,6,255,236,1,254,1,8,255,236,1,254,1,13,255,236,1,254,1,14,255,236,1,254,1,15,255,215,1,254,1,16,255,236,1,254,1,17,255,215,1,254,1,18,255,236,1,254,1,19,255,215,1,254,1,20,255,236,1,254,1,21,255,215,1,254,1,23,255,236,1,254,1,25,255,236,1,254,1,29,255,236,1,254,1,33,255,236,1,254,1,43,255,236,1,254,1,45,255,236,1,254,1,47,255,236,1,254,1,49,255,236,1,254,1,51,255,236,1,254,1,53,255,236,1,254,1,67,255,174,1,254,1,68,255,215,1,254,1,70,255,215,1,254,1,71,255,236,1,254,1,72,255,215,1,254,1,74,255,236,1,254,2,8,255,154,1,254,2,12,255,154,1,254,2,87,255,236,1,254,2,88,255,174,1,254,2,89,255,215,1,254,2,95,255,236,1,254,2,96,255,215,1,254,2,98,255,236,1,254,3,29,255,174,1,254,3,30,255,215,1,254,3,31,255,174,1,254,3,32,255,215,1,254,3,33,255,174,1,254,3,34,255,215,1,254,3,35,255,174,1,254,3,37,255,174,1,254,3,38,255,215,1,254,3,39,255,174,1,254,3,40,255,215,1,254,3,41,255,174,1,254,3,42,255,215,1,254,3,43,255,174,1,254,3,44,255,215,1,254,3,45,255,174,1,254,3,46,255,215,1,254,3,47,255,174,1,254,3,48,255,215,1,254,3,49,255,174,1,254,3,50,255,215,1,254,3,51,255,174,1,254,3,52,255,215,1,254,3,54,255,215,1,254,3,56,255,215,1,254,3,58,255,215,1,254,3,60,255,215,1,254,3,64,255,215,1,254,3,66,255,215,1,254,3,68,255,215,1,254,3,73,255,236,1,254,3,74,255,215,1,254,3,75,255,236,1,254,3,76,255,215,1,254,3,77,255,236,1,254,3,78,255,215,1,254,3,79,255,236,1,254,3,81,255,236,1,254,3,82,255,215,1,254,3,83,255,236,1,254,3,84,255,215,1,254,3,85,255,236,1,254,3,86,255,215,1,254,3,87,255,236,1,254,3,88,255,215,1,254,3,89,255,236,1,254,3,90,255,215,1,254,3,91,255,236,1,254,3,92,255,215,1,254,3,93,255,236,1,254,3,94,255,215,1,254,3,95,255,236,1,254,3,96,255,215,1,254,3,98,255,236,1,254,3,100,255,236,1,254,3,102,255,236,1,254,3,104,255,236,1,254,3,106,255,236,1,254,3,108,255,236,1,254,3,110,255,236,1,255,0,5,0,82,1,255,0,10,0,82,1,255,0,15,255,174,1,255,0,17,255,174,1,255,0,34,0,41,1,255,2,7,0,82,1,255,2,8,255,174,1,255,2,11,0,82,1,255,2,12,255,174,2,0,0,15,255,133,2,0,0,17,255,133,2,0,0,34,0,41,2,0,0,36,255,133,2,0,0,38,255,215,2,0,0,42,255,215,2,0,0,50,255,215,2,0,0,52,255,215,2,0,0,68,255,154,2,0,0,70,255,154,2,0,0,71,255,154,2,0,0,72,255,154,2,0,0,74,255,215,2,0,0,80,255,195,2,0,0,81,255,195,2,0,0,82,255,154,2,0,0,83,255,195,2,0,0,84,255,154,2,0,0,85,255,195,2,0,0,86,255,174,2,0,0,88,255,195,2,0,0,93,255,215,2,0,0,130,255,133,2,0,0,131,255,133,2,0,0,132,255,133,2,0,0,133,255,133,2,0,0,134,255,133,2,0,0,135,255,133,2,0,0,137,255,215,2,0,0,148,255,215,2,0,0,149,255,215,2,0,0,150,255,215,2,0,0,151,255,215,2,0,0,152,255,215,2,0,0,154,255,215,2,0,0,162,255,154,2,0,0,163,255,154,2,0,0,164,255,154,2,0,0,165,255,154,2,0,0,166,255,154,2,0,0,167,255,154,2,0,0,168,255,154,2,0,0,169,255,154,2,0,0,170,255,154,2,0,0,171,255,154,2,0,0,172,255,154,2,0,0,173,255,154,2,0,0,180,255,154,2,0,0,181,255,154,2,0,0,182,255,154,2,0,0,183,255,154,2,0,0,184,255,154,2,0,0,186,255,154,2,0,0,187,255,195,2,0,0,188,255,195,2,0,0,189,255,195,2,0,0,190,255,195,2,0,0,194,255,133,2,0,0,195,255,154,2,0,0,196,255,133,2,0,0,197,255,154,2,0,0,198,255,133,2,0,0,199,255,154,2,0,0,200,255,215,2,0,0,201,255,154,2,0,0,202,255,215,2,0,0,203,255,154,2,0,0,204,255,215,2,0,0,205,255,154,2,0,0,206,255,215,2,0,0,207,255,154,2,0,0,209,255,154,2,0,0,211,255,154,2,0,0,213,255,154,2,0,0,215,255,154,2,0,0,217,255,154,2,0,0,219,255,154,2,0,0,221,255,154,2,0,0,222,255,215,2,0,0,223,255,215,2,0,0,224,255,215,2,0,0,225,255,215,2,0,0,226,255,215,2,0,0,227,255,215,2,0,0,228,255,215,2,0,0,229,255,215,2,0,0,250,255,195,2,0,1,6,255,195,2,0,1,8,255,195,2,0,1,13,255,195,2,0,1,14,255,215,2,0,1,15,255,154,2,0,1,16,255,215,2,0,1,17,255,154,2,0,1,18,255,215,2,0,1,19,255,154,2,0,1,20,255,215,2,0,1,21,255,154,2,0,1,23,255,195,2,0,1,25,255,195,2,0,1,29,255,174,2,0,1,33,255,174,2,0,1,43,255,195,2,0,1,45,255,195,2,0,1,47,255,195,2,0,1,49,255,195,2,0,1,51,255,195,2,0,1,53,255,195,2,0,1,60,255,215,2,0,1,62,255,215,2,0,1,64,255,215,2,0,1,67,255,133,2,0,1,68,255,154,2,0,1,70,255,154,2,0,1,71,255,215,2,0,1,72,255,154,2,0,1,74,255,174,2,0,2,8,255,133,2,0,2,12,255,133,2,0,2,87,255,195,2,0,2,88,255,133,2,0,2,89,255,154,2,0,2,95,255,215,2,0,2,96,255,154,2,0,2,98,255,195,2,0,3,29,255,133,2,0,3,30,255,154,2,0,3,31,255,133,2,0,3,32,255,154,2,0,3,33,255,133,2,0,3,34,255,154,2,0,3,35,255,133,2,0,3,37,255,133,2,0,3,38,255,154,2,0,3,39,255,133,2,0,3,40,255,154,2,0,3,41,255,133,2,0,3,42,255,154,2,0,3,43,255,133,2,0,3,44,255,154,2,0,3,45,255,133,2,0,3,46,255,154,2,0,3,47,255,133,2,0,3,48,255,154,2,0,3,49,255,133,2,0,3,50,255,154,2,0,3,51,255,133,2,0,3,52,255,154,2,0,3,54,255,154,2,0,3,56,255,154,2,0,3,58,255,154,2,0,3,60,255,154,2,0,3,64,255,154,2,0,3,66,255,154,2,0,3,68,255,154,2,0,3,73,255,215,2,0,3,74,255,154,2,0,3,75,255,215,2,0,3,76,255,154,2,0,3,77,255,215,2,0,3,78,255,154,2,0,3,79,255,215,2,0,3,81,255,215,2,0,3,82,255,154,2,0,3,83,255,215,2,0,3,84,255,154,2,0,3,85,255,215,2,0,3,86,255,154,2,0,3,87,255,215,2,0,3,88,255,154,2,0,3,89,255,215,2,0,3,90,255,154,2,0,3,91,255,215,2,0,3,92,255,154,2,0,3,93,255,215,2,0,3,94,255,154,2,0,3,95,255,215,2,0,3,96,255,154,2,0,3,98,255,195,2,0,3,100,255,195,2,0,3,102,255,195,2,0,3,104,255,195,2,0,3,106,255,195,2,0,3,108,255,195,2,0,3,110,255,195,2,1,0,5,0,82,2,1,0,10,0,82,2,1,0,15,255,174,2,1,0,17,255,174,2,1,0,34,0,41,2,1,2,7,0,82,2,1,2,8,255,174,2,1,2,11,0,82,2,1,2,12,255,174,2,2,0,55,255,174,2,2,1,36,255,174,2,2,1,38,255,174,2,2,1,113,255,174,2,2,1,157,255,174,2,2,1,166,255,174,2,2,1,188,255,174,2,2,1,196,255,174,2,2,1,220,255,215,2,2,1,228,255,215,2,2,2,169,255,174,2,2,2,170,255,215,2,2,2,181,255,174,2,2,2,182,255,215,2,2,2,189,255,174,2,2,2,190,255,215,2,2,3,23,255,174,2,2,3,24,255,215,2,2,3,143,255,174,2,3,0,55,255,174,2,3,1,36,255,174,2,3,1,38,255,174,2,3,1,113,255,174,2,3,1,157,255,174,2,3,1,166,255,174,2,3,1,188,255,174,2,3,1,196,255,174,2,3,1,220,255,215,2,3,1,228,255,215,2,3,2,169,255,174,2,3,2,170,255,215,2,3,2,181,255,174,2,3,2,182,255,215,2,3,2,189,255,174,2,3,2,190,255,215,2,3,3,23,255,174,2,3,3,24,255,215,2,3,3,143,255,174,2,4,0,55,255,174,2,4,1,36,255,174,2,4,1,38,255,174,2,4,1,113,255,174,2,4,1,157,255,174,2,4,1,166,255,174,2,4,1,188,255,174,2,4,1,196,255,174,2,4,1,220,255,215,2,4,1,228,255,215,2,4,2,169,255,174,2,4,2,170,255,215,2,4,2,181,255,174,2,4,2,182,255,215,2,4,2,189,255,174,2,4,2,190,255,215,2,4,3,23,255,174,2,4,3,24,255,215,2,4,3,143,255,174,2,6,0,36,255,113,2,6,0,55,0,41,2,6,0,57,0,41,2,6,0,58,0,41,2,6,0,60,0,20,2,6,0,68,255,174,2,6,0,70,255,133,2,6,0,71,255,133,2,6,0,72,255,133,2,6,0,74,255,195,2,6,0,80,255,195,2,6,0,81,255,195,2,6,0,82,255,133,2,6,0,83,255,195,2,6,0,84,255,133,2,6,0,85,255,195,2,6,0,86,255,195,2,6,0,88,255,195,2,6,0,130,255,113,2,6,0,131,255,113,2,6,0,132,255,113,2,6,0,133,255,113,2,6,0,134,255,113,2,6,0,135,255,113,2,6,0,159,0,20,2,6,0,162,255,133,2,6,0,163,255,174,2,6,0,164,255,174,2,6,0,165,255,174,2,6,0,166,255,174,2,6,0,167,255,174,2,6,0,168,255,174,2,6,0,169,255,133,2,6,0,170,255,133,2,6,0,171,255,133,2,6,0,172,255,133,2,6,0,173,255,133,2,6,0,180,255,133,2,6,0,181,255,133,2,6,0,182,255,133,2,6,0,183,255,133,2,6,0,184,255,133,2,6,0,186,255,133,2,6,0,187,255,195,2,6,0,188,255,195,2,6,0,189,255,195,2,6,0,190,255,195,2,6,0,194,255,113,2,6,0,195,255,174,2,6,0,196,255,113,2,6,0,197,255,174,2,6,0,198,255,113,2,6,0,199,255,174,2,6,0,201,255,133,2,6,0,203,255,133,2,6,0,205,255,133,2,6,0,207,255,133,2,6,0,209,255,133,2,6,0,211,255,133,2,6,0,213,255,133,2,6,0,215,255,133,2,6,0,217,255,133,2,6,0,219,255,133,2,6,0,221,255,133,2,6,0,223,255,195,2,6,0,225,255,195,2,6,0,227,255,195,2,6,0,229,255,195,2,6,0,250,255,195,2,6,1,6,255,195,2,6,1,8,255,195,2,6,1,13,255,195,2,6,1,15,255,133,2,6,1,17,255,133,2,6,1,19,255,133,2,6,1,21,255,133,2,6,1,23,255,195,2,6,1,25,255,195,2,6,1,29,255,195,2,6,1,33,255,195,2,6,1,36,0,41,2,6,1,38,0,41,2,6,1,43,255,195,2,6,1,45,255,195,2,6,1,47,255,195,2,6,1,49,255,195,2,6,1,51,255,195,2,6,1,53,255,195,2,6,1,54,0,41,2,6,1,56,0,20,2,6,1,58,0,20,2,6,1,67,255,113,2,6,1,68,255,174,2,6,1,70,255,174,2,6,1,72,255,133,2,6,1,74,255,195,2,6,1,86,255,113,2,6,1,95,255,113,2,6,1,98,255,113,2,6,1,105,255,113,2,6,1,121,255,174,2,6,1,122,255,215,2,6,1,123,255,215,2,6,1,126,255,174,2,6,1,129,255,195,2,6,1,130,255,215,2,6,1,131,255,215,2,6,1,132,255,215,2,6,1,135,255,215,2,6,1,137,255,215,2,6,1,140,255,174,2,6,1,142,255,195,2,6,1,143,255,174,2,6,1,144,255,174,2,6,1,147,255,174,2,6,1,153,255,174,2,6,1,164,255,133,2,6,1,170,255,113,2,6,1,174,255,133,2,6,1,181,255,133,2,6,1,202,255,215,2,6,1,206,255,113,2,6,1,207,255,133,2,6,1,213,255,113,2,6,1,216,255,133,2,6,1,219,255,133,2,6,1,222,255,133,2,6,1,234,255,133,2,6,1,237,255,133,2,6,1,238,255,195,2,6,1,242,255,113,2,6,1,250,0,41,2,6,1,252,0,41,2,6,1,254,0,41,2,6,2,0,0,20,2,6,2,87,255,195,2,6,2,88,255,113,2,6,2,89,255,174,2,6,2,96,255,133,2,6,2,98,255,195,2,6,2,106,255,133,2,6,2,114,255,113,2,6,2,115,255,113,2,6,2,125,255,236,2,6,2,127,255,133,2,6,2,133,255,133,2,6,2,135,255,133,2,6,2,137,255,133,2,6,2,141,255,133,2,6,2,178,255,133,2,6,2,180,255,133,2,6,2,206,255,133,2,6,2,207,255,113,2,6,2,217,255,113,2,6,2,218,255,215,2,6,2,219,255,113,2,6,2,220,255,215,2,6,2,221,255,113,2,6,2,222,255,215,2,6,2,224,255,133,2,6,2,226,255,215,2,6,2,228,255,215,2,6,2,240,255,133,2,6,2,242,255,133,2,6,2,244,255,133,2,6,3,9,255,113,2,6,3,10,255,133,2,6,3,11,255,113,2,6,3,12,255,133,2,6,3,17,255,133,2,6,3,18,255,113,2,6,3,22,255,133,2,6,3,26,255,133,2,6,3,27,255,133,2,6,3,28,255,113,2,6,3,29,255,113,2,6,3,30,255,174,2,6,3,31,255,113,2,6,3,32,255,174,2,6,3,33,255,113,2,6,3,34,255,174,2,6,3,35,255,113,2,6,3,37,255,113,2,6,3,38,255,174,2,6,3,39,255,113,2,6,3,40,255,174,2,6,3,41,255,113,2,6,3,42,255,174,2,6,3,43,255,113,2,6,3,44,255,174,2,6,3,45,255,113,2,6,3,46,255,174,2,6,3,47,255,113,2,6,3,48,255,174,2,6,3,49,255,113,2,6,3,50,255,174,2,6,3,51,255,113,2,6,3,52,255,174,2,6,3,54,255,133,2,6,3,56,255,133,2,6,3,58,255,133,2,6,3,60,255,133,2,6,3,64,255,133,2,6,3,66,255,133,2,6,3,68,255,133,2,6,3,74,255,133,2,6,3,76,255,133,2,6,3,78,255,133,2,6,3,82,255,133,2,6,3,84,255,133,2,6,3,86,255,133,2,6,3,88,255,133,2,6,3,90,255,133,2,6,3,92,255,133,2,6,3,94,255,133,2,6,3,96,255,133,2,6,3,98,255,195,2,6,3,100,255,195,2,6,3,102,255,195,2,6,3,104,255,195,2,6,3,106,255,195,2,6,3,108,255,195,2,6,3,110,255,195,2,6,3,111,0,20,2,6,3,113,0,20,2,6,3,115,0,20,2,6,3,143,0,41,2,7,0,36,255,113,2,7,0,55,0,41,2,7,0,57,0,41,2,7,0,58,0,41,2,7,0,60,0,20,2,7,0,68,255,174,2,7,0,70,255,133,2,7,0,71,255,133,2,7,0,72,255,133,2,7,0,74,255,195,2,7,0,80,255,195,2,7,0,81,255,195,2,7,0,82,255,133,2,7,0,83,255,195,2,7,0,84,255,133,2,7,0,85,255,195,2,7,0,86,255,195,2,7,0,88,255,195,2,7,0,130,255,113,2,7,0,131,255,113,2,7,0,132,255,113,2,7,0,133,255,113,2,7,0,134,255,113,2,7,0,135,255,113,2,7,0,159,0,20,2,7,0,162,255,133,2,7,0,163,255,174,2,7,0,164,255,174,2,7,0,165,255,174,2,7,0,166,255,174,2,7,0,167,255,174,2,7,0,168,255,174,2,7,0,169,255,133,2,7,0,170,255,133,2,7,0,171,255,133,2,7,0,172,255,133,2,7,0,173,255,133,2,7,0,180,255,133,2,7,0,181,255,133,2,7,0,182,255,133,2,7,0,183,255,133,2,7,0,184,255,133,2,7,0,186,255,133,2,7,0,187,255,195,2,7,0,188,255,195,2,7,0,189,255,195,2,7,0,190,255,195,2,7,0,194,255,113,2,7,0,195,255,174,2,7,0,196,255,113,2,7,0,197,255,174,2,7,0,198,255,113,2,7,0,199,255,174,2,7,0,201,255,133,2,7,0,203,255,133,2,7,0,205,255,133,2,7,0,207,255,133,2,7,0,209,255,133,2,7,0,211,255,133,2,7,0,213,255,133,2,7,0,215,255,133,2,7,0,217,255,133,2,7,0,219,255,133,2,7,0,221,255,133,2,7,0,223,255,195,2,7,0,225,255,195,2,7,0,227,255,195,2,7,0,229,255,195,2,7,0,250,255,195,2,7,1,6,255,195,2,7,1,8,255,195,2,7,1,13,255,195,2,7,1,15,255,133,2,7,1,17,255,133,2,7,1,19,255,133,2,7,1,21,255,133,2,7,1,23,255,195,2,7,1,25,255,195,2,7,1,29,255,195,2,7,1,33,255,195,2,7,1,36,0,41,2,7,1,38,0,41,2,7,1,43,255,195,2,7,1,45,255,195,2,7,1,47,255,195,2,7,1,49,255,195,2,7,1,51,255,195,2,7,1,53,255,195,2,7,1,54,0,41,2,7,1,56,0,20,2,7,1,58,0,20,2,7,1,67,255,113,2,7,1,68,255,174,2,7,1,70,255,174,2,7,1,72,255,133,2,7,1,74,255,195,2,7,1,86,255,113,2,7,1,95,255,113,2,7,1,98,255,113,2,7,1,105,255,113,2,7,1,121,255,174,2,7,1,122,255,215,2,7,1,123,255,215,2,7,1,126,255,174,2,7,1,129,255,195,2,7,1,130,255,215,2,7,1,131,255,215,2,7,1,132,255,215,2,7,1,135,255,215,2,7,1,137,255,215,2,7,1,140,255,174,2,7,1,142,255,195,2,7,1,143,255,174,2,7,1,144,255,174,2,7,1,147,255,174,2,7,1,153,255,174,2,7,1,164,255,133,2,7,1,170,255,113,2,7,1,174,255,133,2,7,1,181,255,133,2,7,1,202,255,215,2,7,1,206,255,113,2,7,1,207,255,133,2,7,1,213,255,113,2,7,1,216,255,133,2,7,1,219,255,133,2,7,1,222,255,133,2,7,1,234,255,133,2,7,1,237,255,133,2,7,1,238,255,195,2,7,1,242,255,113,2,7,1,250,0,41,2,7,1,252,0,41,2,7,1,254,0,41,2,7,2,0,0,20,2,7,2,87,255,195,2,7,2,88,255,113,2,7,2,89,255,174,2,7,2,96,255,133,2,7,2,98,255,195,2,7,2,106,255,133,2,7,2,114,255,113,2,7,2,115,255,113,2,7,2,125,255,236,2,7,2,127,255,133,2,7,2,133,255,133,2,7,2,135,255,133,2,7,2,137,255,133,2,7,2,141,255,133,2,7,2,178,255,133,2,7,2,180,255,133,2,7,2,206,255,133,2,7,2,207,255,113,2,7,2,217,255,113,2,7,2,218,255,215,2,7,2,219,255,113,2,7,2,220,255,215,2,7,2,221,255,113,2,7,2,222,255,215,2,7,2,224,255,133,2,7,2,226,255,215,2,7,2,228,255,215,2,7,2,240,255,133,2,7,2,242,255,133,2,7,2,244,255,133,2,7,3,9,255,113,2,7,3,10,255,133,2,7,3,11,255,113,2,7,3,12,255,133,2,7,3,17,255,133,2,7,3,18,255,113,2,7,3,22,255,133,2,7,3,26,255,133,2,7,3,27,255,133,2,7,3,28,255,113,2,7,3,29,255,113,2,7,3,30,255,174,2,7,3,31,255,113,2,7,3,32,255,174,2,7,3,33,255,113,2,7,3,34,255,174,2,7,3,35,255,113,2,7,3,37,255,113,2,7,3,38,255,174,2,7,3,39,255,113,2,7,3,40,255,174,2,7,3,41,255,113,2,7,3,42,255,174,2,7,3,43,255,113,2,7,3,44,255,174,2,7,3,45,255,113,2,7,3,46,255,174,2,7,3,47,255,113,2,7,3,48,255,174,2,7,3,49,255,113,2,7,3,50,255,174,2,7,3,51,255,113,2,7,3,52,255,174,2,7,3,54,255,133,2,7,3,56,255,133,2,7,3,58,255,133,2,7,3,60,255,133,2,7,3,64,255,133,2,7,3,66,255,133,2,7,3,68,255,133,2,7,3,74,255,133,2,7,3,76,255,133,2,7,3,78,255,133,2,7,3,82,255,133,2,7,3,84,255,133,2,7,3,86,255,133,2,7,3,88,255,133,2,7,3,90,255,133,2,7,3,92,255,133,2,7,3,94,255,133,2,7,3,96,255,133,2,7,3,98,255,195,2,7,3,100,255,195,2,7,3,102,255,195,2,7,3,104,255,195,2,7,3,106,255,195,2,7,3,108,255,195,2,7,3,110,255,195,2,7,3,111,0,20,2,7,3,113,0,20,2,7,3,115,0,20,2,7,3,143,0,41,2,8,0,38,255,154,2,8,0,42,255,154,2,8,0,50,255,154,2,8,0,52,255,154,2,8,0,55,255,113,2,8,0,56,255,215,2,8,0,57,255,133,2,8,0,58,255,133,2,8,0,60,255,133,2,8,0,137,255,154,2,8,0,148,255,154,2,8,0,149,255,154,2,8,0,150,255,154,2,8,0,151,255,154,2,8,0,152,255,154,2,8,0,154,255,154,2,8,0,155,255,215,2,8,0,156,255,215,2,8,0,157,255,215,2,8,0,158,255,215,2,8,0,159,255,133,2,8,0,200,255,154,2,8,0,202,255,154,2,8,0,204,255,154,2,8,0,206,255,154,2,8,0,222,255,154,2,8,0,224,255,154,2,8,0,226,255,154,2,8,0,228,255,154,2,8,1,14,255,154,2,8,1,16,255,154,2,8,1,18,255,154,2,8,1,20,255,154,2,8,1,36,255,113,2,8,1,38,255,113,2,8,1,42,255,215,2,8,1,44,255,215,2,8,1,46,255,215,2,8,1,48,255,215,2,8,1,50,255,215,2,8,1,52,255,215,2,8,1,54,255,133,2,8,1,56,255,133,2,8,1,58,255,133,2,8,1,71,255,154,2,8,1,102,255,174,2,8,1,109,255,174,2,8,1,113,255,113,2,8,1,114,255,133,2,8,1,115,255,154,2,8,1,117,255,133,2,8,1,120,255,133,2,8,1,133,255,215,2,8,1,157,255,113,2,8,1,159,255,154,2,8,1,166,255,113,2,8,1,184,255,154,2,8,1,187,255,154,2,8,1,188,255,113,2,8,1,190,255,174,2,8,1,193,255,92,2,8,1,196,255,113,2,8,1,220,255,154,2,8,1,225,255,133,2,8,1,228,255,154,2,8,1,250,255,133,2,8,1,252,255,133,2,8,1,254,255,133,2,8,2,0,255,133,2,8,2,84,255,133,2,8,2,95,255,154,2,8,2,97,255,215,2,8,2,108,255,154,2,8,2,124,255,92,2,8,2,126,255,154,2,8,2,128,255,133,2,8,2,130,255,133,2,8,2,132,255,154,2,8,2,134,255,154,2,8,2,136,255,154,2,8,2,138,255,154,2,8,2,140,255,154,2,8,2,169,255,113,2,8,2,170,255,154,2,8,2,177,255,154,2,8,2,179,255,154,2,8,2,181,255,113,2,8,2,182,255,154,2,8,2,183,255,133,2,8,2,185,255,133,2,8,2,189,255,113,2,8,2,190,255,154,2,8,2,191,255,92,2,8,2,192,255,133,2,8,2,193,255,92,2,8,2,194,255,133,2,8,2,197,255,133,2,8,2,199,255,133,2,8,2,212,255,92,2,8,2,213,255,133,2,8,2,239,255,154,2,8,2,241,255,154,2,8,2,243,255,154,2,8,2,253,255,92,2,8,2,254,255,133,2,8,3,13,255,133,2,8,3,14,255,154,2,8,3,15,255,133,2,8,3,16,255,154,2,8,3,21,255,154,2,8,3,23,255,113,2,8,3,24,255,154,2,8,3,73,255,154,2,8,3,75,255,154,2,8,3,77,255,154,2,8,3,79,255,154,2,8,3,81,255,154,2,8,3,83,255,154,2,8,3,85,255,154,2,8,3,87,255,154,2,8,3,89,255,154,2,8,3,91,255,154,2,8,3,93,255,154,2,8,3,95,255,154,2,8,3,97,255,215,2,8,3,99,255,215,2,8,3,101,255,215,2,8,3,103,255,215,2,8,3,105,255,215,2,8,3,107,255,215,2,8,3,109,255,215,2,8,3,111,255,133,2,8,3,113,255,133,2,8,3,115,255,133,2,8,3,143,255,113,2,10,0,36,255,113,2,10,0,55,0,41,2,10,0,57,0,41,2,10,0,58,0,41,2,10,0,60,0,20,2,10,0,68,255,174,2,10,0,70,255,133,2,10,0,71,255,133,2,10,0,72,255,133,2,10,0,74,255,195,2,10,0,80,255,195,2,10,0,81,255,195,2,10,0,82,255,133,2,10,0,83,255,195,2,10,0,84,255,133,2,10,0,85,255,195,2,10,0,86,255,195,2,10,0,88,255,195,2,10,0,130,255,113,2,10,0,131,255,113,2,10,0,132,255,113,2,10,0,133,255,113,2,10,0,134,255,113,2,10,0,135,255,113,2,10,0,159,0,20,2,10,0,162,255,133,2,10,0,163,255,174,2,10,0,164,255,174,2,10,0,165,255,174,2,10,0,166,255,174,2,10,0,167,255,174,2,10,0,168,255,174,2,10,0,169,255,133,2,10,0,170,255,133,2,10,0,171,255,133,2,10,0,172,255,133,2,10,0,173,255,133,2,10,0,180,255,133,2,10,0,181,255,133,2,10,0,182,255,133,2,10,0,183,255,133,2,10,0,184,255,133,2,10,0,186,255,133,2,10,0,187,255,195,2,10,0,188,255,195,2,10,0,189,255,195,2,10,0,190,255,195,2,10,0,194,255,113,2,10,0,195,255,174,2,10,0,196,255,113,2,10,0,197,255,174,2,10,0,198,255,113,2,10,0,199,255,174,2,10,0,201,255,133,2,10,0,203,255,133,2,10,0,205,255,133,2,10,0,207,255,133,2,10,0,209,255,133,2,10,0,211,255,133,2,10,0,213,255,133,2,10,0,215,255,133,2,10,0,217,255,133,2,10,0,219,255,133,2,10,0,221,255,133,2,10,0,223,255,195,2,10,0,225,255,195,2,10,0,227,255,195,2,10,0,229,255,195,2,10,0,250,255,195,2,10,1,6,255,195,2,10,1,8,255,195,2,10,1,13,255,195,2,10,1,15,255,133,2,10,1,17,255,133,2,10,1,19,255,133,2,10,1,21,255,133,2,10,1,23,255,195,2,10,1,25,255,195,2,10,1,29,255,195,2,10,1,33,255,195,2,10,1,36,0,41,2,10,1,38,0,41,2,10,1,43,255,195,2,10,1,45,255,195,2,10,1,47,255,195,2,10,1,49,255,195,2,10,1,51,255,195,2,10,1,53,255,195,2,10,1,54,0,41,2,10,1,56,0,20,2,10,1,58,0,20,2,10,1,67,255,113,2,10,1,68,255,174,2,10,1,70,255,174,2,10,1,72,255,133,2,10,1,74,255,195,2,10,1,86,255,113,2,10,1,95,255,113,2,10,1,98,255,113,2,10,1,105,255,113,2,10,1,121,255,174,2,10,1,122,255,215,2,10,1,123,255,215,2,10,1,126,255,174,2,10,1,129,255,195,2,10,1,130,255,215,2,10,1,131,255,215,2,10,1,132,255,215,2,10,1,135,255,215,2,10,1,137,255,215,2,10,1,140,255,174,2,10,1,142,255,195,2,10,1,143,255,174,2,10,1,144,255,174,2,10,1,147,255,174,2,10,1,153,255,174,2,10,1,164,255,133,2,10,1,170,255,113,2,10,1,174,255,133,2,10,1,181,255,133,2,10,1,202,255,215,2,10,1,206,255,113,2,10,1,207,255,133,2,10,1,213,255,113,2,10,1,216,255,133,2,10,1,219,255,133,2,10,1,222,255,133,2,10,1,234,255,133,2,10,1,237,255,133,2,10,1,238,255,195,2,10,1,242,255,113,2,10,1,250,0,41,2,10,1,252,0,41,2,10,1,254,0,41,2,10,2,0,0,20,2,10,2,87,255,195,2,10,2,88,255,113,2,10,2,89,255,174,2,10,2,96,255,133,2,10,2,98,255,195,2,10,2,106,255,133,2,10,2,114,255,113,2,10,2,115,255,113,2,10,2,125,255,236,2,10,2,127,255,133,2,10,2,133,255,133,2,10,2,135,255,133,2,10,2,137,255,133,2,10,2,141,255,133,2,10,2,178,255,133,2,10,2,180,255,133,2,10,2,206,255,133,2,10,2,207,255,113,2,10,2,217,255,113,2,10,2,218,255,215,2,10,2,219,255,113,2,10,2,220,255,215,2,10,2,221,255,113,2,10,2,222,255,215,2,10,2,224,255,133,2,10,2,226,255,215,2,10,2,228,255,215,2,10,2,240,255,133,2,10,2,242,255,133,2,10,2,244,255,133,2,10,3,9,255,113,2,10,3,10,255,133,2,10,3,11,255,113,2,10,3,12,255,133,2,10,3,17,255,133,2,10,3,18,255,113,2,10,3,22,255,133,2,10,3,26,255,133,2,10,3,27,255,133,2,10,3,28,255,113,2,10,3,29,255,113,2,10,3,30,255,174,2,10,3,31,255,113,2,10,3,32,255,174,2,10,3,33,255,113,2,10,3,34,255,174,2,10,3,35,255,113,2,10,3,37,255,113,2,10,3,38,255,174,2,10,3,39,255,113,2,10,3,40,255,174,2,10,3,41,255,113,2,10,3,42,255,174,2,10,3,43,255,113,2,10,3,44,255,174,2,10,3,45,255,113,2,10,3,46,255,174,2,10,3,47,255,113,2,10,3,48,255,174,2,10,3,49,255,113,2,10,3,50,255,174,2,10,3,51,255,113,2,10,3,52,255,174,2,10,3,54,255,133,2,10,3,56,255,133,2,10,3,58,255,133,2,10,3,60,255,133,2,10,3,64,255,133,2,10,3,66,255,133,2,10,3,68,255,133,2,10,3,74,255,133,2,10,3,76,255,133,2,10,3,78,255,133,2,10,3,82,255,133,2,10,3,84,255,133,2,10,3,86,255,133,2,10,3,88,255,133,2,10,3,90,255,133,2,10,3,92,255,133,2,10,3,94,255,133,2,10,3,96,255,133,2,10,3,98,255,195,2,10,3,100,255,195,2,10,3,102,255,195,2,10,3,104,255,195,2,10,3,106,255,195,2,10,3,108,255,195,2,10,3,110,255,195,2,10,3,111,0,20,2,10,3,113,0,20,2,10,3,115,0,20,2,10,3,143,0,41,2,12,0,38,255,154,2,12,0,42,255,154,2,12,0,50,255,154,2,12,0,52,255,154,2,12,0,55,255,113,2,12,0,56,255,215,2,12,0,57,255,133,2,12,0,58,255,133,2,12,0,60,255,133,2,12,0,137,255,154,2,12,0,148,255,154,2,12,0,149,255,154,2,12,0,150,255,154,2,12,0,151,255,154,2,12,0,152,255,154,2,12,0,154,255,154,2,12,0,155,255,215,2,12,0,156,255,215,2,12,0,157,255,215,2,12,0,158,255,215,2,12,0,159,255,133,2,12,0,200,255,154,2,12,0,202,255,154,2,12,0,204,255,154,2,12,0,206,255,154,2,12,0,222,255,154,2,12,0,224,255,154,2,12,0,226,255,154,2,12,0,228,255,154,2,12,1,14,255,154,2,12,1,16,255,154,2,12,1,18,255,154,2,12,1,20,255,154,2,12,1,36,255,113,2,12,1,38,255,113,2,12,1,42,255,215,2,12,1,44,255,215,2,12,1,46,255,215,2,12,1,48,255,215,2,12,1,50,255,215,2,12,1,52,255,215,2,12,1,54,255,133,2,12,1,56,255,133,2,12,1,58,255,133,2,12,1,71,255,154,2,12,1,102,255,174,2,12,1,109,255,174,2,12,1,113,255,113,2,12,1,114,255,133,2,12,1,115,255,154,2,12,1,117,255,133,2,12,1,120,255,133,2,12,1,133,255,215,2,12,1,157,255,113,2,12,1,159,255,154,2,12,1,166,255,113,2,12,1,184,255,154,2,12,1,187,255,154,2,12,1,188,255,113,2,12,1,190,255,174,2,12,1,193,255,92,2,12,1,196,255,113,2,12,1,220,255,154,2,12,1,225,255,133,2,12,1,228,255,154,2,12,1,250,255,133,2,12,1,252,255,133,2,12,1,254,255,133,2,12,2,0,255,133,2,12,2,84,255,133,2,12,2,95,255,154,2,12,2,97,255,215,2,12,2,108,255,154,2,12,2,124,255,92,2,12,2,126,255,154,2,12,2,128,255,133,2,12,2,130,255,133,2,12,2,132,255,154,2,12,2,134,255,154,2,12,2,136,255,154,2,12,2,138,255,154,2,12,2,140,255,154,2,12,2,169,255,113,2,12,2,170,255,154,2,12,2,177,255,154,2,12,2,179,255,154,2,12,2,181,255,113,2,12,2,182,255,154,2,12,2,183,255,133,2,12,2,185,255,133,2,12,2,189,255,113,2,12,2,190,255,154,2,12,2,191,255,92,2,12,2,192,255,133,2,12,2,193,255,92,2,12,2,194,255,133,2,12,2,197,255,133,2,12,2,199,255,133,2,12,2,212,255,92,2,12,2,213,255,133,2,12,2,239,255,154,2,12,2,241,255,154,2,12,2,243,255,154,2,12,2,253,255,92,2,12,2,254,255,133,2,12,3,13,255,133,2,12,3,14,255,154,2,12,3,15,255,133,2,12,3,16,255,154,2,12,3,21,255,154,2,12,3,23,255,113,2,12,3,24,255,154,2,12,3,73,255,154,2,12,3,75,255,154,2,12,3,77,255,154,2,12,3,79,255,154,2,12,3,81,255,154,2,12,3,83,255,154,2,12,3,85,255,154,2,12,3,87,255,154,2,12,3,89,255,154,2,12,3,91,255,154,2,12,3,93,255,154,2,12,3,95,255,154,2,12,3,97,255,215,2,12,3,99,255,215,2,12,3,101,255,215,2,12,3,103,255,215,2,12,3,105,255,215,2,12,3,107,255,215,2,12,3,109,255,215,2,12,3,111,255,133,2,12,3,113,255,133,2,12,3,115,255,133,2,12,3,143,255,113,2,33,1,113,255,215,2,33,1,114,255,236,2,33,1,120,255,236,2,33,2,84,255,236,2,83,0,15,255,195,2,83,0,17,255,195,2,83,2,8,255,195,2,83,2,12,255,195,2,84,0,15,255,133,2,84,0,17,255,133,2,84,1,86,255,133,2,84,1,95,255,133,2,84,1,98,255,133,2,84,1,102,255,215,2,84,1,105,255,133,2,84,1,109,255,215,2,84,1,115,255,195,2,84,1,118,255,236,2,84,1,121,255,154,2,84,1,122,255,174,2,84,1,123,255,195,2,84,1,124,255,195,2,84,1,125,255,195,2,84,1,126,255,154,2,84,1,129,255,195,2,84,1,130,255,174,2,84,1,132,255,195,2,84,1,134,255,195,2,84,1,135,255,195,2,84,1,137,255,195,2,84,1,140,255,154,2,84,1,142,255,154,2,84,1,143,255,154,2,84,1,144,255,154,2,84,1,146,255,195,2,84,1,147,255,154,2,84,1,149,255,195,2,84,1,150,255,195,2,84,1,152,255,195,2,84,1,153,255,154,2,84,1,154,255,195,2,84,1,155,255,195,2,84,2,8,255,133,2,84,2,12,255,133,2,84,2,33,255,236,2,88,0,5,255,113,2,88,0,10,255,113,2,88,0,38,255,215,2,88,0,42,255,215,2,88,0,45,1,10,2,88,0,50,255,215,2,88,0,52,255,215,2,88,0,55,255,113,2,88,0,57,255,174,2,88,0,58,255,174,2,88,0,60,255,133,2,88,0,137,255,215,2,88,0,148,255,215,2,88,0,149,255,215,2,88,0,150,255,215,2,88,0,151,255,215,2,88,0,152,255,215,2,88,0,154,255,215,2,88,0,159,255,133,2,88,0,200,255,215,2,88,0,202,255,215,2,88,0,204,255,215,2,88,0,206,255,215,2,88,0,222,255,215,2,88,0,224,255,215,2,88,0,226,255,215,2,88,0,228,255,215,2,88,1,14,255,215,2,88,1,16,255,215,2,88,1,18,255,215,2,88,1,20,255,215,2,88,1,36,255,113,2,88,1,38,255,113,2,88,1,54,255,174,2,88,1,56,255,133,2,88,1,58,255,133,2,88,1,71,255,215,2,88,1,250,255,174,2,88,1,252,255,174,2,88,1,254,255,174,2,88,2,0,255,133,2,88,2,7,255,113,2,88,2,11,255,113,2,88,2,95,255,215,2,88,3,73,255,215,2,88,3,75,255,215,2,88,3,77,255,215,2,88,3,79,255,215,2,88,3,81,255,215,2,88,3,83,255,215,2,88,3,85,255,215,2,88,3,87,255,215,2,88,3,89,255,215,2,88,3,91,255,215,2,88,3,93,255,215,2,88,3,95,255,215,2,88,3,111,255,133,2,88,3,113,255,133,2,88,3,115,255,133,2,88,3,143,255,113,2,89,0,5,255,236,2,89,0,10,255,236,2,89,2,7,255,236,2,89,2,11,255,236,2,90,0,15,255,174,2,90,0,17,255,174,2,90,1,86,255,215,2,90,1,95,255,215,2,90,1,98,255,215,2,90,1,100,255,236,2,90,1,105,255,215,2,90,1,112,255,236,2,90,1,113,255,195,2,90,1,114,255,236,2,90,1,116,255,215,2,90,1,117,255,236,2,90,1,120,255,236,2,90,1,136,255,236,2,90,2,8,255,174,2,90,2,12,255,174,2,90,2,84,255,236,2,96,0,73,0,82,2,96,0,87,0,82,2,96,0,89,0,102,2,96,0,90,0,102,2,96,0,91,0,102,2,96,0,92,0,102,2,96,0,191,0,102,2,96,1,37,0,82,2,96,1,39,0,82,2,96,1,55,0,102,2,96,1,251,0,102,2,96,1,253,0,102,2,96,2,52,0,82,2,96,2,53,0,82,2,96,2,93,0,82,2,96,2,94,0,82,2,96,3,112,0,102,2,96,3,141,0,82,2,96,3,144,0,82,2,98,0,73,0,102,2,98,0,87,0,102,2,98,0,89,0,102,2,98,0,90,0,102,2,98,0,91,0,102,2,98,0,92,0,102,2,98,0,191,0,102,2,98,1,37,0,102,2,98,1,39,0,102,2,98,1,55,0,102,2,98,1,251,0,102,2,98,1,253,0,102,2,98,2,52,0,102,2,98,2,53,0,102,2,98,2,93,0,102,2,98,2,94,0,102,2,98,3,112,0,102,2,98,3,141,0,102,2,98,3,144,0,102,2,106,0,5,255,236,2,106,0,10,255,236,2,106,2,7,255,236,2,106,2,11,255,236,2,108,0,15,255,174,2,108,0,17,255,174,2,108,1,157,255,236,2,108,1,164,255,215,2,108,1,166,255,236,2,108,1,168,255,215,2,108,1,170,255,215,2,108,1,174,255,215,2,108,1,176,255,215,2,108,1,177,255,236,2,108,1,181,255,215,2,108,1,188,255,195,2,108,1,189,255,215,2,108,1,191,255,215,2,108,1,193,255,215,2,108,1,196,255,236,2,108,1,199,255,236,2,108,1,206,255,236,2,108,1,213,255,236,2,108,1,242,255,236,2,108,2,8,255,174,2,108,2,12,255,174,2,108,2,114,255,215,2,108,2,115,255,236,2,108,2,122,255,236,2,108,2,124,255,215,2,108,2,128,255,236,2,108,2,130,255,236,2,108,2,159,255,215,2,108,2,161,255,236,2,108,2,169,255,236,2,108,2,181,255,195,2,108,2,183,255,236,2,108,2,185,255,236,2,108,2,187,255,215,2,108,2,189,255,236,2,108,2,191,255,215,2,108,2,193,255,215,2,108,2,202,255,215,2,108,2,206,255,215,2,108,2,207,255,236,2,108,2,212,255,215,2,108,2,217,255,215,2,108,2,219,255,215,2,108,2,221,255,215,2,108,2,229,255,215,2,108,2,231,255,236,2,108,2,245,255,236,2,108,2,247,255,215,2,108,2,249,255,215,2,108,2,251,255,215,2,108,2,253,255,215,2,108,3,5,255,215,2,108,3,7,255,215,2,108,3,13,255,215,2,108,3,15,255,215,2,108,3,17,255,215,2,108,3,18,255,236,2,108,3,23,255,236,2,108,3,27,255,215,2,108,3,28,255,236,2,109,0,15,255,174,2,109,0,17,255,174,2,109,1,206,255,215,2,109,1,213,255,215,2,109,1,242,255,215,2,109,2,8,255,174,2,109,2,12,255,174,2,109,2,115,255,215,2,109,2,207,255,215,2,109,3,18,255,215,2,109,3,28,255,215,2,110,0,5,255,174,2,110,0,10,255,174,2,110,1,157,255,215,2,110,1,166,255,215,2,110,1,188,255,174,2,110,1,193,255,174,2,110,1,196,255,215,2,110,1,220,255,215,2,110,1,228,255,215,2,110,2,7,255,174,2,110,2,11,255,174,2,110,2,124,255,174,2,110,2,128,255,195,2,110,2,130,255,195,2,110,2,169,255,215,2,110,2,170,255,215,2,110,2,181,255,174,2,110,2,182,255,215,2,110,2,183,255,195,2,110,2,185,255,195,2,110,2,189,255,215,2,110,2,190,255,215,2,110,2,191,255,174,2,110,2,193,255,174,2,110,2,212,255,174,2,110,2,253,255,174,2,110,3,13,255,154,2,110,3,15,255,154,2,110,3,23,255,215,2,110,3,24,255,215,2,111,0,5,255,133,2,111,0,10,255,133,2,111,1,208,255,215,2,111,1,220,255,154,2,111,1,221,255,195,2,111,1,223,255,215,2,111,1,225,255,174,2,111,1,228,255,154,2,111,1,246,255,195,2,111,2,7,255,133,2,111,2,11,255,133,2,111,2,109,255,215,2,111,2,129,255,215,2,111,2,131,255,215,2,111,2,139,255,215,2,111,2,160,255,215,2,111,2,170,255,154,2,111,2,182,255,154,2,111,2,184,255,195,2,111,2,186,255,195,2,111,2,188,255,215,2,111,2,190,255,154,2,111,2,192,255,174,2,111,2,194,255,174,2,111,2,198,255,215,2,111,2,200,255,215,2,111,2,203,255,215,2,111,2,213,255,174,2,111,2,230,255,215,2,111,2,234,255,215,2,111,2,248,255,195,2,111,2,250,255,195,2,111,2,252,255,195,2,111,2,254,255,174,2,111,3,6,255,215,2,111,3,8,255,215,2,111,3,14,255,154,2,111,3,16,255,154,2,111,3,24,255,154,2,112,1,159,255,215,2,112,1,184,255,215,2,112,1,187,255,215,2,112,1,190,255,215,2,112,1,225,255,215,2,112,2,108,255,215,2,112,2,126,255,215,2,112,2,132,255,215,2,112,2,134,255,215,2,112,2,136,255,215,2,112,2,138,255,215,2,112,2,140,255,215,2,112,2,177,255,215,2,112,2,179,255,215,2,112,2,192,255,215,2,112,2,194,255,215,2,112,2,197,255,215,2,112,2,199,255,215,2,112,2,213,255,215,2,112,2,239,255,215,2,112,2,241,255,215,2,112,2,243,255,215,2,112,2,254,255,215,2,112,3,9,255,215,2,112,3,11,255,215,2,112,3,14,255,215,2,112,3,16,255,215,2,112,3,21,255,215,2,114,0,5,255,113,2,114,0,10,255,113,2,114,1,157,255,154,2,114,1,166,255,154,2,114,1,188,255,113,2,114,1,190,255,215,2,114,1,193,255,154,2,114,1,196,255,154,2,114,1,220,255,215,2,114,1,225,255,215,2,114,1,228,255,215,2,114,2,7,255,113,2,114,2,11,255,113,2,114,2,110,255,215,2,114,2,124,255,154,2,114,2,128,255,174,2,114,2,130,255,174,2,114,2,151,255,215,2,114,2,155,255,215,2,114,2,167,255,215,2,114,2,169,255,154,2,114,2,170,255,215,2,114,2,181,255,113,2,114,2,182,255,215,2,114,2,183,255,133,2,114,2,185,255,133,2,114,2,189,255,154,2,114,2,190,255,215,2,114,2,191,255,154,2,114,2,192,255,215,2,114,2,193,255,154,2,114,2,194,255,215,2,114,2,197,255,154,2,114,2,199,255,154,2,114,2,212,255,154,2,114,2,213,255,215,2,114,2,225,255,215,2,114,2,227,255,215,2,114,2,253,255,154,2,114,2,254,255,215,2,114,3,3,255,215,2,114,3,13,255,113,2,114,3,14,255,215,2,114,3,15,255,113,2,114,3,16,255,215,2,114,3,23,255,154,2,114,3,24,255,215,2,115,0,5,255,113,2,115,0,10,255,113,2,115,1,207,255,215,2,115,1,216,255,215,2,115,1,219,255,215,2,115,1,220,255,154,2,115,1,221,255,195,2,115,1,222,255,215,2,115,1,225,255,195,2,115,1,228,255,154,2,115,1,234,255,215,2,115,1,237,255,215,2,115,1,246,255,195,2,115,2,7,255,113,2,115,2,11,255,113,2,115,2,106,255,215,2,115,2,109,255,215,2,115,2,125,255,236,2,115,2,127,255,215,2,115,2,129,255,215,2,115,2,131,255,215,2,115,2,133,255,215,2,115,2,135,255,215,2,115,2,137,255,215,2,115,2,139,255,215,2,115,2,141,255,215,2,115,2,170,255,154,2,115,2,178,255,215,2,115,2,180,255,215,2,115,2,182,255,154,2,115,2,184,255,215,2,115,2,186,255,215,2,115,2,190,255,154,2,115,2,192,255,195,2,115,2,194,255,195,2,115,2,198,255,215,2,115,2,200,255,215,2,115,2,213,255,195,2,115,2,224,255,215,2,115,2,240,255,215,2,115,2,242,255,215,2,115,2,244,255,215,2,115,2,248,255,195,2,115,2,250,255,195,2,115,2,252,255,195,2,115,2,254,255,195,2,115,3,10,255,215,2,115,3,12,255,215,2,115,3,14,255,133,2,115,3,16,255,133,2,115,3,22,255,215,2,115,3,24,255,154,2,115,3,26,255,215,2,116,0,5,255,113,2,116,0,10,255,113,2,116,1,157,255,154,2,116,1,166,255,154,2,116,1,188,255,113,2,116,1,190,255,215,2,116,1,193,255,154,2,116,1,196,255,154,2,116,1,220,255,215,2,116,1,225,255,215,2,116,1,228,255,215,2,116,2,7,255,113,2,116,2,11,255,113,2,116,2,110,255,215,2,116,2,124,255,154,2,116,2,128,255,174,2,116,2,130,255,174,2,116,2,151,255,215,2,116,2,155,255,215,2,116,2,167,255,215,2,116,2,169,255,154,2,116,2,170,255,215,2,116,2,181,255,113,2,116,2,182,255,215,2,116,2,183,255,133,2,116,2,185,255,133,2,116,2,189,255,154,2,116,2,190,255,215,2,116,2,191,255,154,2,116,2,192,255,215,2,116,2,193,255,154,2,116,2,194,255,215,2,116,2,197,255,154,2,116,2,199,255,154,2,116,2,212,255,154,2,116,2,213,255,215,2,116,2,225,255,215,2,116,2,227,255,215,2,116,2,253,255,154,2,116,2,254,255,215,2,116,3,3,255,215,2,116,3,13,255,113,2,116,3,14,255,215,2,116,3,15,255,113,2,116,3,16,255,215,2,116,3,23,255,154,2,116,3,24,255,215,2,117,0,5,255,113,2,117,0,10,255,113,2,117,1,207,255,215,2,117,1,216,255,215,2,117,1,219,255,215,2,117,1,220,255,154,2,117,1,221,255,195,2,117,1,222,255,215,2,117,1,225,255,195,2,117,1,228,255,154,2,117,1,234,255,215,2,117,1,237,255,215,2,117,1,246,255,195,2,117,2,7,255,113,2,117,2,11,255,113,2,117,2,106,255,215,2,117,2,109,255,215,2,117,2,125,255,236,2,117,2,127,255,215,2,117,2,129,255,215,2,117,2,131,255,215,2,117,2,133,255,215,2,117,2,135,255,215,2,117,2,137,255,215,2,117,2,139,255,215,2,117,2,141,255,215,2,117,2,170,255,154,2,117,2,178,255,215,2,117,2,180,255,215,2,117,2,182,255,154,2,117,2,184,255,215,2,117,2,186,255,215,2,117,2,190,255,154,2,117,2,192,255,195,2,117,2,194,255,195,2,117,2,198,255,215,2,117,2,200,255,215,2,117,2,213,255,195,2,117,2,224,255,215,2,117,2,240,255,215,2,117,2,242,255,215,2,117,2,244,255,215,2,117,2,248,255,195,2,117,2,250,255,195,2,117,2,252,255,195,2,117,2,254,255,195,2,117,3,10,255,215,2,117,3,12,255,215,2,117,3,14,255,133,2,117,3,16,255,133,2,117,3,22,255,215,2,117,3,24,255,154,2,117,3,26,255,215,2,118,3,13,255,236,2,118,3,15,255,236,2,120,3,13,255,236,2,120,3,15,255,236,2,122,0,15,255,174,2,122,0,17,255,174,2,122,2,8,255,174,2,122,2,12,255,174,2,122,2,128,255,236,2,122,2,130,255,236,2,122,2,183,255,236,2,122,2,185,255,236,2,122,3,13,255,215,2,122,3,15,255,215,2,124,0,15,255,113,2,124,0,17,255,113,2,124,1,164,255,195,2,124,1,170,255,174,2,124,1,174,255,195,2,124,1,181,255,195,2,124,1,206,255,215,2,124,1,213,255,215,2,124,1,242,255,215,2,124,2,8,255,113,2,124,2,12,255,113,2,124,2,114,255,174,2,124,2,115,255,215,2,124,2,206,255,195,2,124,2,207,255,215,2,124,2,217,255,174,2,124,2,219,255,174,2,124,2,221,255,174,2,124,3,9,255,174,2,124,3,11,255,174,2,124,3,17,255,195,2,124,3,18,255,215,2,124,3,27,255,195,2,124,3,28,255,215,2,125,0,5,255,236,2,125,0,10,255,236,2,125,1,208,255,215,2,125,1,220,255,236,2,125,1,221,255,236,2,125,1,223,255,215,2,125,1,225,255,236,2,125,1,228,255,236,2,125,1,246,255,236,2,125,2,7,255,236,2,125,2,11,255,236,2,125,2,160,255,215,2,125,2,170,255,236,2,125,2,182,255,236,2,125,2,188,255,215,2,125,2,190,255,236,2,125,2,192,255,236,2,125,2,194,255,236,2,125,2,203,255,215,2,125,2,213,255,236,2,125,2,230,255,215,2,125,2,248,255,236,2,125,2,250,255,236,2,125,2,252,255,236,2,125,2,254,255,236,2,125,3,6,255,215,2,125,3,8,255,215,2,125,3,14,255,236,2,125,3,16,255,236,2,125,3,24,255,236,2,126,0,15,255,174,2,126,0,17,255,174,2,126,1,157,255,236,2,126,1,164,255,215,2,126,1,166,255,236,2,126,1,168,255,215,2,126,1,170,255,215,2,126,1,174,255,215,2,126,1,176,255,215,2,126,1,177,255,236,2,126,1,181,255,215,2,126,1,188,255,195,2,126,1,189,255,215,2,126,1,191,255,215,2,126,1,193,255,215,2,126,1,196,255,236,2,126,1,199,255,236,2,126,1,206,255,236,2,126,1,213,255,236,2,126,1,242,255,236,2,126,2,8,255,174,2,126,2,12,255,174,2,126,2,114,255,215,2,126,2,115,255,236,2,126,2,122,255,236,2,126,2,124,255,215,2,126,2,128,255,236,2,126,2,130,255,236,2,126,2,159,255,215,2,126,2,161,255,236,2,126,2,169,255,236,2,126,2,181,255,195,2,126,2,183,255,236,2,126,2,185,255,236,2,126,2,187,255,215,2,126,2,189,255,236,2,126,2,191,255,215,2,126,2,193,255,215,2,126,2,202,255,215,2,126,2,206,255,215,2,126,2,207,255,236,2,126,2,212,255,215,2,126,2,217,255,215,2,126,2,219,255,215,2,126,2,221,255,215,2,126,2,229,255,215,2,126,2,231,255,236,2,126,2,245,255,236,2,126,2,247,255,215,2,126,2,249,255,215,2,126,2,251,255,215,2,126,2,253,255,215,2,126,3,5,255,215,2,126,3,7,255,215,2,126,3,13,255,215,2,126,3,15,255,215,2,126,3,17,255,215,2,126,3,18,255,236,2,126,3,23,255,236,2,126,3,27,255,215,2,126,3,28,255,236,2,127,0,5,255,236,2,127,0,10,255,236,2,127,1,208,255,215,2,127,1,220,255,236,2,127,1,221,255,236,2,127,1,223,255,215,2,127,1,225,255,236,2,127,1,228,255,236,2,127,1,246,255,236,2,127,2,7,255,236,2,127,2,11,255,236,2,127,2,160,255,215,2,127,2,170,255,236,2,127,2,182,255,236,2,127,2,188,255,215,2,127,2,190,255,236,2,127,2,192,255,236,2,127,2,194,255,236,2,127,2,203,255,215,2,127,2,213,255,236,2,127,2,230,255,215,2,127,2,248,255,236,2,127,2,250,255,236,2,127,2,252,255,236,2,127,2,254,255,236,2,127,3,6,255,215,2,127,3,8,255,215,2,127,3,14,255,236,2,127,3,16,255,236,2,127,3,24,255,236,2,128,0,15,255,133,2,128,0,17,255,133,2,128,1,159,255,236,2,128,1,164,255,154,2,128,1,170,255,113,2,128,1,174,255,154,2,128,1,181,255,154,2,128,1,184,255,236,2,128,1,187,255,236,2,128,1,190,255,195,2,128,1,201,255,236,2,128,1,206,255,174,2,128,1,207,255,215,2,128,1,213,255,174,2,128,1,216,255,215,2,128,1,219,255,215,2,128,1,222,255,215,2,128,1,225,255,215,2,128,1,234,255,215,2,128,1,235,0,102,2,128,1,237,255,215,2,128,1,238,255,236,2,128,1,242,255,174,2,128,1,244,0,102,2,128,2,8,255,133,2,128,2,12,255,133,2,128,2,106,255,215,2,128,2,108,255,236,2,128,2,114,255,113,2,128,2,115,255,174,2,128,2,126,255,236,2,128,2,127,255,215,2,128,2,132,255,236,2,128,2,133,255,215,2,128,2,134,255,236,2,128,2,135,255,215,2,128,2,136,255,236,2,128,2,137,255,215,2,128,2,138,255,236,2,128,2,140,255,236,2,128,2,141,255,215,2,128,2,152,0,102,2,128,2,168,0,102,2,128,2,177,255,236,2,128,2,178,255,215,2,128,2,179,255,236,2,128,2,180,255,215,2,128,2,192,255,215,2,128,2,194,255,215,2,128,2,197,255,215,2,128,2,198,255,195,2,128,2,199,255,215,2,128,2,200,255,195,2,128,2,206,255,154,2,128,2,207,255,174,2,128,2,213,255,215,2,128,2,217,255,113,2,128,2,219,255,113,2,128,2,221,255,113,2,128,2,224,255,215,2,128,2,239,255,236,2,128,2,240,255,215,2,128,2,241,255,236,2,128,2,242,255,215,2,128,2,243,255,236,2,128,2,244,255,215,2,128,2,254,255,215,2,128,3,9,255,113,2,128,3,10,255,215,2,128,3,11,255,113,2,128,3,12,255,215,2,128,3,17,255,154,2,128,3,18,255,174,2,128,3,21,255,236,2,128,3,22,255,215,2,128,3,26,255,215,2,128,3,27,255,154,2,128,3,28,255,174,2,129,0,15,255,174,2,129,0,17,255,174,2,129,1,206,255,215,2,129,1,213,255,215,2,129,1,242,255,215,2,129,2,8,255,174,2,129,2,12,255,174,2,129,2,115,255,215,2,129,2,207,255,215,2,129,3,18,255,215,2,129,3,28,255,215,2,130,0,15,255,133,2,130,0,17,255,133,2,130,1,159,255,236,2,130,1,164,255,154,2,130,1,170,255,113,2,130,1,174,255,154,2,130,1,181,255,154,2,130,1,184,255,236,2,130,1,187,255,236,2,130,1,190,255,195,2,130,1,201,255,236,2,130,1,206,255,174,2,130,1,207,255,215,2,130,1,213,255,174,2,130,1,216,255,215,2,130,1,219,255,215,2,130,1,222,255,215,2,130,1,225,255,215,2,130,1,234,255,215,2,130,1,235,0,102,2,130,1,237,255,215,2,130,1,238,255,236,2,130,1,242,255,174,2,130,1,244,0,102,2,130,2,8,255,133,2,130,2,12,255,133,2,130,2,106,255,215,2,130,2,108,255,236,2,130,2,114,255,113,2,130,2,115,255,174,2,130,2,126,255,236,2,130,2,127,255,215,2,130,2,132,255,236,2,130,2,133,255,215,2,130,2,134,255,236,2,130,2,135,255,215,2,130,2,136,255,236,2,130,2,137,255,215,2,130,2,138,255,236,2,130,2,140,255,236,2,130,2,141,255,215,2,130,2,152,0,102,2,130,2,168,0,102,2,130,2,177,255,236,2,130,2,178,255,215,2,130,2,179,255,236,2,130,2,180,255,215,2,130,2,192,255,215,2,130,2,194,255,215,2,130,2,197,255,215,2,130,2,198,255,195,2,130,2,199,255,215,2,130,2,200,255,195,2,130,2,206,255,154,2,130,2,207,255,174,2,130,2,213,255,215,2,130,2,217,255,113,2,130,2,219,255,113,2,130,2,221,255,113,2,130,2,224,255,215,2,130,2,239,255,236,2,130,2,240,255,215,2,130,2,241,255,236,2,130,2,242,255,215,2,130,2,243,255,236,2,130,2,244,255,215,2,130,2,254,255,215,2,130,3,9,255,113,2,130,3,10,255,215,2,130,3,11,255,113,2,130,3,12,255,215,2,130,3,17,255,154,2,130,3,18,255,174,2,130,3,21,255,236,2,130,3,22,255,215,2,130,3,26,255,215,2,130,3,27,255,154,2,130,3,28,255,174,2,131,0,15,255,174,2,131,0,17,255,174,2,131,1,206,255,215,2,131,1,213,255,215,2,131,1,242,255,215,2,131,2,8,255,174,2,131,2,12,255,174,2,131,2,115,255,215,2,131,2,207,255,215,2,131,3,18,255,215,2,131,3,28,255,215,2,132,0,15,255,174,2,132,0,17,255,174,2,132,1,206,255,215,2,132,1,213,255,215,2,132,1,242,255,215,2,132,2,8,255,174,2,132,2,12,255,174,2,132,2,115,255,215,2,132,2,207,255,215,2,132,3,18,255,215,2,132,3,28,255,215,2,133,0,15,255,174,2,133,0,17,255,174,2,133,1,206,255,215,2,133,1,213,255,215,2,133,1,242,255,215,2,133,2,8,255,174,2,133,2,12,255,174,2,133,2,115,255,215,2,133,2,207,255,215,2,133,3,18,255,215,2,133,3,28,255,215,2,134,0,15,255,174,2,134,0,17,255,174,2,134,1,157,255,236,2,134,1,164,255,215,2,134,1,166,255,236,2,134,1,168,255,215,2,134,1,170,255,215,2,134,1,174,255,215,2,134,1,176,255,215,2,134,1,177,255,236,2,134,1,181,255,215,2,134,1,188,255,195,2,134,1,189,255,215,2,134,1,191,255,215,2,134,1,193,255,215,2,134,1,196,255,236,2,134,1,199,255,236,2,134,1,206,255,236,2,134,1,213,255,236,2,134,1,242,255,236,2,134,2,8,255,174,2,134,2,12,255,174,2,134,2,114,255,215,2,134,2,115,255,236,2,134,2,122,255,236,2,134,2,124,255,215,2,134,2,128,255,236,2,134,2,130,255,236,2,134,2,159,255,215,2,134,2,161,255,236,2,134,2,169,255,236,2,134,2,181,255,195,2,134,2,183,255,236,2,134,2,185,255,236,2,134,2,187,255,215,2,134,2,189,255,236,2,134,2,191,255,215,2,134,2,193,255,215,2,134,2,202,255,215,2,134,2,206,255,215,2,134,2,207,255,236,2,134,2,212,255,215,2,134,2,217,255,215,2,134,2,219,255,215,2,134,2,221,255,215,2,134,2,229,255,215,2,134,2,231,255,236,2,134,2,245,255,236,2,134,2,247,255,215,2,134,2,249,255,215,2,134,2,251,255,215,2,134,2,253,255,215,2,134,3,5,255,215,2,134,3,7,255,215,2,134,3,13,255,215,2,134,3,15,255,215,2,134,3,17,255,215,2,134,3,18,255,236,2,134,3,23,255,236,2,134,3,27,255,215,2,134,3,28,255,236,2,135,0,5,255,236,2,135,0,10,255,236,2,135,1,208,255,215,2,135,1,220,255,236,2,135,1,221,255,236,2,135,1,223,255,215,2,135,1,225,255,236,2,135,1,228,255,236,2,135,1,246,255,236,2,135,2,7,255,236,2,135,2,11,255,236,2,135,2,160,255,215,2,135,2,170,255,236,2,135,2,182,255,236,2,135,2,188,255,215,2,135,2,190,255,236,2,135,2,192,255,236,2,135,2,194,255,236,2,135,2,203,255,215,2,135,2,213,255,236,2,135,2,230,255,215,2,135,2,248,255,236,2,135,2,250,255,236,2,135,2,252,255,236,2,135,2,254,255,236,2,135,3,6,255,215,2,135,3,8,255,215,2,135,3,14,255,236,2,135,3,16,255,236,2,135,3,24,255,236,2,136,0,15,255,174,2,136,0,17,255,174,2,136,1,157,255,236,2,136,1,164,255,215,2,136,1,166,255,236,2,136,1,168,255,215,2,136,1,170,255,215,2,136,1,174,255,215,2,136,1,176,255,215,2,136,1,177,255,236,2,136,1,181,255,215,2,136,1,188,255,195,2,136,1,189,255,215,2,136,1,191,255,215,2,136,1,193,255,215,2,136,1,196,255,236,2,136,1,199,255,236,2,136,1,206,255,236,2,136,1,213,255,236,2,136,1,242,255,236,2,136,2,8,255,174,2,136,2,12,255,174,2,136,2,114,255,215,2,136,2,115,255,236,2,136,2,122,255,236,2,136,2,124,255,215,2,136,2,128,255,236,2,136,2,130,255,236,2,136,2,159,255,215,2,136,2,161,255,236,2,136,2,169,255,236,2,136,2,181,255,195,2,136,2,183,255,236,2,136,2,185,255,236,2,136,2,187,255,215,2,136,2,189,255,236,2,136,2,191,255,215,2,136,2,193,255,215,2,136,2,202,255,215,2,136,2,206,255,215,2,136,2,207,255,236,2,136,2,212,255,215,2,136,2,217,255,215,2,136,2,219,255,215,2,136,2,221,255,215,2,136,2,229,255,215,2,136,2,231,255,236,2,136,2,245,255,236,2,136,2,247,255,215,2,136,2,249,255,215,2,136,2,251,255,215,2,136,2,253,255,215,2,136,3,5,255,215,2,136,3,7,255,215,2,136,3,13,255,215,2,136,3,15,255,215,2,136,3,17,255,215,2,136,3,18,255,236,2,136,3,23,255,236,2,136,3,27,255,215,2,136,3,28,255,236,2,137,0,5,255,236,2,137,0,10,255,236,2,137,1,208,255,215,2,137,1,220,255,236,2,137,1,221,255,236,2,137,1,223,255,215,2,137,1,225,255,236,2,137,1,228,255,236,2,137,1,246,255,236,2,137,2,7,255,236,2,137,2,11,255,236,2,137,2,160,255,215,2,137,2,170,255,236,2,137,2,182,255,236,2,137,2,188,255,215,2,137,2,190,255,236,2,137,2,192,255,236,2,137,2,194,255,236,2,137,2,203,255,215,2,137,2,213,255,236,2,137,2,230,255,215,2,137,2,248,255,236,2,137,2,250,255,236,2,137,2,252,255,236,2,137,2,254,255,236,2,137,3,6,255,215,2,137,3,8,255,215,2,137,3,14,255,236,2,137,3,16,255,236,2,137,3,24,255,236,2,138,0,15,255,174,2,138,0,17,255,174,2,138,1,157,255,236,2,138,1,164,255,215,2,138,1,166,255,236,2,138,1,168,255,215,2,138,1,170,255,215,2,138,1,174,255,215,2,138,1,176,255,215,2,138,1,177,255,236,2,138,1,181,255,215,2,138,1,188,255,195,2,138,1,189,255,215,2,138,1,191,255,215,2,138,1,193,255,215,2,138,1,196,255,236,2,138,1,199,255,236,2,138,1,206,255,236,2,138,1,213,255,236,2,138,1,242,255,236,2,138,2,8,255,174,2,138,2,12,255,174,2,138,2,114,255,215,2,138,2,115,255,236,2,138,2,122,255,236,2,138,2,124,255,215,2,138,2,128,255,236,2,138,2,130,255,236,2,138,2,159,255,215,2,138,2,161,255,236,2,138,2,169,255,236,2,138,2,181,255,195,2,138,2,183,255,236,2,138,2,185,255,236,2,138,2,187,255,215,2,138,2,189,255,236,2,138,2,191,255,215,2,138,2,193,255,215,2,138,2,202,255,215,2,138,2,206,255,215,2,138,2,207,255,236,2,138,2,212,255,215,2,138,2,217,255,215,2,138,2,219,255,215,2,138,2,221,255,215,2,138,2,229,255,215,2,138,2,231,255,236,2,138,2,245,255,236,2,138,2,247,255,215,2,138,2,249,255,215,2,138,2,251,255,215,2,138,2,253,255,215,2,138,3,5,255,215,2,138,3,7,255,215,2,138,3,13,255,215,2,138,3,15,255,215,2,138,3,17,255,215,2,138,3,18,255,236,2,138,3,23,255,236,2,138,3,27,255,215,2,138,3,28,255,236,2,139,0,15,255,174,2,139,0,17,255,174,2,139,1,206,255,215,2,139,1,213,255,215,2,139,1,242,255,215,2,139,2,8,255,174,2,139,2,12,255,174,2,139,2,115,255,215,2,139,2,207,255,215,2,139,3,18,255,215,2,139,3,28,255,215,2,140,1,159,255,215,2,140,1,184,255,215,2,140,1,187,255,215,2,140,1,190,255,215,2,140,1,225,255,215,2,140,2,108,255,215,2,140,2,126,255,215,2,140,2,132,255,215,2,140,2,134,255,215,2,140,2,136,255,215,2,140,2,138,255,215,2,140,2,140,255,215,2,140,2,177,255,215,2,140,2,179,255,215,2,140,2,192,255,215,2,140,2,194,255,215,2,140,2,197,255,215,2,140,2,199,255,215,2,140,2,213,255,215,2,140,2,239,255,215,2,140,2,241,255,215,2,140,2,243,255,215,2,140,2,254,255,215,2,140,3,9,255,215,2,140,3,11,255,215,2,140,3,14,255,215,2,140,3,16,255,215,2,140,3,21,255,215,2,149,1,163,0,225,2,149,2,234,0,41,2,149,3,14,255,215,2,149,3,16,255,215,2,150,0,5,255,236,2,150,0,10,255,236,2,150,2,7,255,236,2,150,2,11,255,236,2,151,0,5,255,174,2,151,0,10,255,174,2,151,1,157,255,215,2,151,1,166,255,215,2,151,1,188,255,174,2,151,1,193,255,174,2,151,1,196,255,215,2,151,1,220,255,215,2,151,1,228,255,215,2,151,2,7,255,174,2,151,2,11,255,174,2,151,2,124,255,174,2,151,2,128,255,195,2,151,2,130,255,195,2,151,2,169,255,215,2,151,2,170,255,215,2,151,2,181,255,174,2,151,2,182,255,215,2,151,2,183,255,195,2,151,2,185,255,195,2,151,2,189,255,215,2,151,2,190,255,215,2,151,2,191,255,174,2,151,2,193,255,174,2,151,2,212,255,174,2,151,2,253,255,174,2,151,3,13,255,154,2,151,3,15,255,154,2,151,3,23,255,215,2,151,3,24,255,215,2,152,0,5,255,133,2,152,0,10,255,133,2,152,1,208,255,215,2,152,1,220,255,154,2,152,1,221,255,195,2,152,1,223,255,215,2,152,1,225,255,174,2,152,1,228,255,154,2,152,1,246,255,195,2,152,2,7,255,133,2,152,2,11,255,133,2,152,2,109,255,215,2,152,2,129,255,215,2,152,2,131,255,215,2,152,2,139,255,215,2,152,2,160,255,215,2,152,2,170,255,154,2,152,2,182,255,154,2,152,2,184,255,195,2,152,2,186,255,195,2,152,2,188,255,215,2,152,2,190,255,154,2,152,2,192,255,174,2,152,2,194,255,174,2,152,2,198,255,215,2,152,2,200,255,215,2,152,2,203,255,215,2,152,2,213,255,174,2,152,2,230,255,215,2,152,2,234,255,215,2,152,2,248,255,195,2,152,2,250,255,195,2,152,2,252,255,195,2,152,2,254,255,174,2,152,3,6,255,215,2,152,3,8,255,215,2,152,3,14,255,154,2,152,3,16,255,154,2,152,3,24,255,154,2,153,0,15,254,246,2,153,0,17,254,246,2,153,1,164,255,133,2,153,1,170,255,154,2,153,1,174,255,133,2,153,1,176,255,215,2,153,1,181,255,133,2,153,1,191,255,215,2,153,1,206,255,154,2,153,1,213,255,154,2,153,1,242,255,154,2,153,2,8,254,246,2,153,2,12,254,246,2,153,2,114,255,154,2,153,2,115,255,154,2,153,2,118,255,236,2,153,2,159,255,215,2,153,2,187,255,215,2,153,2,202,255,215,2,153,2,206,255,133,2,153,2,207,255,154,2,153,2,217,255,154,2,153,2,219,255,154,2,153,2,221,255,154,2,153,2,229,255,215,2,153,3,5,255,215,2,153,3,7,255,215,2,153,3,9,255,174,2,153,3,11,255,174,2,153,3,17,255,133,2,153,3,18,255,154,2,153,3,27,255,133,2,153,3,28,255,154,2,154,0,5,255,236,2,154,0,10,255,236,2,154,1,208,255,215,2,154,1,220,255,236,2,154,1,221,255,236,2,154,1,223,255,215,2,154,1,225,255,236,2,154,1,228,255,236,2,154,1,246,255,236,2,154,2,7,255,236,2,154,2,11,255,236,2,154,2,160,255,215,2,154,2,170,255,236,2,154,2,182,255,236,2,154,2,188,255,215,2,154,2,190,255,236,2,154,2,192,255,236,2,154,2,194,255,236,2,154,2,203,255,215,2,154,2,213,255,236,2,154,2,230,255,215,2,154,2,248,255,236,2,154,2,250,255,236,2,154,2,252,255,236,2,154,2,254,255,236,2,154,3,6,255,215,2,154,3,8,255,215,2,154,3,14,255,236,2,154,3,16,255,236,2,154,3,24,255,236,2,155,0,15,255,154,2,155,0,16,255,215,2,155,0,17,255,154,2,155,1,157,0,41,2,155,1,159,255,215,2,155,1,164,255,174,2,155,1,166,0,41,2,155,1,170,255,133,2,155,1,174,255,174,2,155,1,181,255,174,2,155,1,184,255,215,2,155,1,187,255,215,2,155,1,188,0,41,2,155,1,190,255,195,2,155,1,196,0,41,2,155,1,204,255,195,2,155,1,205,255,195,2,155,1,206,255,154,2,155,1,207,255,174,2,155,1,208,255,215,2,155,1,209,255,215,2,155,1,210,255,195,2,155,1,211,255,195,2,155,1,212,255,195,2,155,1,213,255,154,2,155,1,214,255,195,2,155,1,215,255,195,2,155,1,216,255,174,2,155,1,217,255,195,2,155,1,218,255,195,2,155,1,219,255,174,2,155,1,222,255,174,2,155,1,223,255,215,2,155,1,224,255,195,2,155,1,225,255,154,2,155,1,226,255,195,2,155,1,227,255,195,2,155,1,229,255,195,2,155,1,230,255,195,2,155,1,231,255,215,2,155,1,232,255,195,2,155,1,234,255,174,2,155,1,235,0,41,2,155,1,236,255,195,2,155,1,237,255,174,2,155,1,238,255,195,2,155,1,242,255,154,2,155,1,243,255,195,2,155,1,244,0,41,2,155,1,245,255,195,2,155,1,247,255,195,2,155,1,249,255,195,2,155,2,2,255,215,2,155,2,3,255,215,2,155,2,4,255,215,2,155,2,8,255,154,2,155,2,12,255,154,2,155,2,106,255,174,2,155,2,107,255,195,2,155,2,108,255,215,2,155,2,113,255,195,2,155,2,114,255,133,2,155,2,115,255,154,2,155,2,117,255,195,2,155,2,119,255,215,2,155,2,121,255,195,2,155,2,125,255,195,2,155,2,126,255,215,2,155,2,127,255,174,2,155,2,132,255,215,2,155,2,133,255,174,2,155,2,134,255,215,2,155,2,135,255,174,2,155,2,136,255,215,2,155,2,137,255,174,2,155,2,138,255,215,2,155,2,140,255,215,2,155,2,141,255,174,2,155,2,150,255,195,2,155,2,152,0,41,2,155,2,154,255,195,2,155,2,158,255,195,2,155,2,160,255,215,2,155,2,162,255,215,2,155,2,164,255,195,2,155,2,166,255,195,2,155,2,168,0,41,2,155,2,169,0,41,2,155,2,172,255,195,2,155,2,174,255,195,2,155,2,176,255,195,2,155,2,177,255,215,2,155,2,178,255,174,2,155,2,179,255,215,2,155,2,180,255,174,2,155,2,181,0,41,2,155,2,188,255,215,2,155,2,189,0,41,2,155,2,192,255,154,2,155,2,194,255,154,2,155,2,196,255,195,2,155,2,197,255,215,2,155,2,198,255,195,2,155,2,199,255,215,2,155,2,200,255,195,2,155,2,203,255,215,2,155,2,205,255,195,2,155,2,206,255,174,2,155,2,207,255,154,2,155,2,209,255,195,2,155,2,211,255,195,2,155,2,213,255,154,2,155,2,215,255,195,2,155,2,217,255,133,2,155,2,219,255,133,2,155,2,221,255,133,2,155,2,224,255,174,2,155,2,230,255,215,2,155,2,232,255,215,2,155,2,236,255,195,2,155,2,238,255,195,2,155,2,239,255,215,2,155,2,240,255,174,2,155,2,241,255,215,2,155,2,242,255,174,2,155,2,243,255,215,2,155,2,244,255,174,2,155,2,246,255,215,2,155,2,254,255,154,2,155,3,0,255,195,2,155,3,2,255,195,2,155,3,6,255,215,2,155,3,8,255,215,2,155,3,9,255,154,2,155,3,10,255,174,2,155,3,11,255,154,2,155,3,12,255,174,2,155,3,14,255,215,2,155,3,16,255,215,2,155,3,17,255,174,2,155,3,18,255,154,2,155,3,20,255,195,2,155,3,21,255,215,2,155,3,22,255,174,2,155,3,23,0,41,2,155,3,26,255,174,2,155,3,27,255,174,2,155,3,28,255,154,2,156,0,15,255,195,2,156,0,17,255,195,2,156,1,206,255,195,2,156,1,207,255,215,2,156,1,213,255,195,2,156,1,216,255,215,2,156,1,219,255,215,2,156,1,222,255,215,2,156,1,234,255,215,2,156,1,237,255,215,2,156,1,242,255,195,2,156,2,8,255,195,2,156,2,12,255,195,2,156,2,106,255,215,2,156,2,115,255,195,2,156,2,127,255,215,2,156,2,133,255,215,2,156,2,135,255,215,2,156,2,137,255,215,2,156,2,141,255,215,2,156,2,178,255,215,2,156,2,180,255,215,2,156,2,207,255,195,2,156,2,224,255,215,2,156,2,240,255,215,2,156,2,242,255,215,2,156,2,244,255,215,2,156,3,10,255,215,2,156,3,12,255,215,2,156,3,18,255,195,2,156,3,22,255,215,2,156,3,26,255,215,2,156,3,28,255,195,2,157,0,5,255,195,2,157,0,10,255,195,2,157,1,157,255,195,2,157,1,163,0,102,2,157,1,166,255,195,2,157,1,188,255,195,2,157,1,193,255,174,2,157,1,196,255,195,2,157,1,220,255,215,2,157,1,225,255,215,2,157,1,228,255,215,2,157,2,7,255,195,2,157,2,11,255,195,2,157,2,124,255,174,2,157,2,128,255,195,2,157,2,130,255,195,2,157,2,169,255,195,2,157,2,170,255,215,2,157,2,181,255,195,2,157,2,182,255,215,2,157,2,183,255,215,2,157,2,185,255,215,2,157,2,189,255,195,2,157,2,190,255,215,2,157,2,191,255,174,2,157,2,192,255,215,2,157,2,193,255,174,2,157,2,194,255,215,2,157,2,212,255,174,2,157,2,213,255,215,2,157,2,253,255,174,2,157,2,254,255,215,2,157,3,13,255,215,2,157,3,14,255,195,2,157,3,15,255,215,2,157,3,16,255,195,2,157,3,23,255,195,2,157,3,24,255,215,2,158,0,5,255,195,2,158,0,10,255,195,2,158,2,7,255,195,2,158,2,11,255,195,2,158,3,14,255,215,2,158,3,16,255,215,2,159,1,159,255,215,2,159,1,163,0,225,2,159,1,184,255,215,2,159,1,187,255,215,2,159,1,190,255,195,2,159,1,220,255,215,2,159,1,225,255,174,2,159,1,228,255,215,2,159,2,108,255,215,2,159,2,123,0,61,2,159,2,125,255,236,2,159,2,126,255,215,2,159,2,132,255,215,2,159,2,134,255,215,2,159,2,136,255,215,2,159,2,138,255,215,2,159,2,140,255,215,2,159,2,170,255,215,2,159,2,177,255,215,2,159,2,179,255,215,2,159,2,182,255,215,2,159,2,190,255,215,2,159,2,192,255,174,2,159,2,194,255,174,2,159,2,197,255,195,2,159,2,198,255,215,2,159,2,199,255,195,2,159,2,200,255,215,2,159,2,213,255,174,2,159,2,239,255,215,2,159,2,241,255,215,2,159,2,243,255,215,2,159,2,254,255,174,2,159,3,14,255,215,2,159,3,16,255,215,2,159,3,21,255,215,2,159,3,24,255,215,2,160,1,207,255,236,2,160,1,216,255,236,2,160,1,219,255,236,2,160,1,222,255,236,2,160,1,225,255,236,2,160,1,234,255,236,2,160,1,237,255,236,2,160,2,106,255,236,2,160,2,127,255,236,2,160,2,133,255,236,2,160,2,135,255,236,2,160,2,137,255,236,2,160,2,141,255,236,2,160,2,178,255,236,2,160,2,180,255,236,2,160,2,192,255,236,2,160,2,194,255,236,2,160,2,213,255,236,2,160,2,224,255,236,2,160,2,240,255,236,2,160,2,242,255,236,2,160,2,244,255,236,2,160,2,254,255,236,2,160,3,10,255,236,2,160,3,12,255,236,2,160,3,14,255,215,2,160,3,16,255,215,2,160,3,22,255,236,2,160,3,26,255,236,2,161,0,15,255,174,2,161,0,17,255,174,2,161,2,8,255,174,2,161,2,12,255,174,2,161,2,128,255,236,2,161,2,130,255,236,2,161,2,183,255,236,2,161,2,185,255,236,2,161,3,13,255,215,2,161,3,15,255,215,2,162,1,233,0,41,2,163,1,159,255,215,2,163,1,163,0,225,2,163,1,184,255,215,2,163,1,187,255,215,2,163,1,190,255,195,2,163,1,220,255,215,2,163,1,225,255,174,2,163,1,228,255,215,2,163,2,108,255,215,2,163,2,123,0,61,2,163,2,125,255,236,2,163,2,126,255,215,2,163,2,132,255,215,2,163,2,134,255,215,2,163,2,136,255,215,2,163,2,138,255,215,2,163,2,140,255,215,2,163,2,170,255,215,2,163,2,177,255,215,2,163,2,179,255,215,2,163,2,182,255,215,2,163,2,190,255,215,2,163,2,192,255,174,2,163,2,194,255,174,2,163,2,197,255,195,2,163,2,198,255,215,2,163,2,199,255,195,2,163,2,200,255,215,2,163,2,213,255,174,2,163,2,239,255,215,2,163,2,241,255,215,2,163,2,243,255,215,2,163,2,254,255,174,2,163,3,14,255,215,2,163,3,16,255,215,2,163,3,21,255,215,2,163,3,24,255,215,2,164,1,207,255,236,2,164,1,216,255,236,2,164,1,219,255,236,2,164,1,222,255,236,2,164,1,225,255,236,2,164,1,234,255,236,2,164,1,237,255,236,2,164,2,106,255,236,2,164,2,127,255,236,2,164,2,133,255,236,2,164,2,135,255,236,2,164,2,137,255,236,2,164,2,141,255,236,2,164,2,178,255,236,2,164,2,180,255,236,2,164,2,192,255,236,2,164,2,194,255,236,2,164,2,213,255,236,2,164,2,224,255,236,2,164,2,240,255,236,2,164,2,242,255,236,2,164,2,244,255,236,2,164,2,254,255,236,2,164,3,10,255,236,2,164,3,12,255,236,2,164,3,14,255,215,2,164,3,16,255,215,2,164,3,22,255,236,2,164,3,26,255,236,2,165,1,159,255,215,2,165,1,184,255,215,2,165,1,187,255,215,2,165,1,190,255,215,2,165,1,193,255,215,2,165,1,225,255,215,2,165,2,108,255,215,2,165,2,124,255,215,2,165,2,126,255,215,2,165,2,132,255,215,2,165,2,134,255,215,2,165,2,136,255,215,2,165,2,138,255,215,2,165,2,140,255,215,2,165,2,177,255,215,2,165,2,179,255,215,2,165,2,191,255,215,2,165,2,192,255,215,2,165,2,193,255,215,2,165,2,194,255,215,2,165,2,197,255,154,2,165,2,199,255,154,2,165,2,212,255,215,2,165,2,213,255,215,2,165,2,239,255,215,2,165,2,241,255,215,2,165,2,243,255,215,2,165,2,253,255,215,2,165,2,254,255,215,2,165,3,9,255,215,2,165,3,11,255,215,2,165,3,14,255,215,2,165,3,16,255,215,2,165,3,21,255,215,2,165,3,25,255,236,2,166,1,207,255,215,2,166,1,216,255,215,2,166,1,219,255,215,2,166,1,222,255,215,2,166,1,225,255,215,2,166,1,234,255,215,2,166,1,237,255,215,2,166,2,106,255,215,2,166,2,127,255,215,2,166,2,133,255,215,2,166,2,135,255,215,2,166,2,137,255,215,2,166,2,141,255,215,2,166,2,178,255,215,2,166,2,180,255,215,2,166,2,192,255,215,2,166,2,194,255,215,2,166,2,198,255,215,2,166,2,200,255,215,2,166,2,213,255,215,2,166,2,224,255,215,2,166,2,240,255,215,2,166,2,242,255,215,2,166,2,244,255,215,2,166,2,254,255,215,2,166,3,10,255,215,2,166,3,12,255,215,2,166,3,22,255,215,2,166,3,26,255,215,2,167,1,159,255,215,2,167,1,184,255,215,2,167,1,187,255,215,2,167,1,190,255,215,2,167,1,193,255,215,2,167,1,225,255,215,2,167,2,108,255,215,2,167,2,124,255,215,2,167,2,126,255,215,2,167,2,132,255,215,2,167,2,134,255,215,2,167,2,136,255,215,2,167,2,138,255,215,2,167,2,140,255,215,2,167,2,177,255,215,2,167,2,179,255,215,2,167,2,191,255,215,2,167,2,192,255,215,2,167,2,193,255,215,2,167,2,194,255,215,2,167,2,197,255,154,2,167,2,199,255,154,2,167,2,212,255,215,2,167,2,213,255,215,2,167,2,239,255,215,2,167,2,241,255,215,2,167,2,243,255,215,2,167,2,253,255,215,2,167,2,254,255,215,2,167,3,9,255,215,2,167,3,11,255,215,2,167,3,14,255,215,2,167,3,16,255,215,2,167,3,21,255,215,2,167,3,25,255,236,2,168,1,207,255,215,2,168,1,216,255,215,2,168,1,219,255,215,2,168,1,222,255,215,2,168,1,225,255,215,2,168,1,234,255,215,2,168,1,237,255,215,2,168,2,106,255,215,2,168,2,127,255,215,2,168,2,133,255,215,2,168,2,135,255,215,2,168,2,137,255,215,2,168,2,141,255,215,2,168,2,178,255,215,2,168,2,180,255,215,2,168,2,192,255,215,2,168,2,194,255,215,2,168,2,198,255,215,2,168,2,200,255,215,2,168,2,213,255,215,2,168,2,224,255,215,2,168,2,240,255,215,2,168,2,242,255,215,2,168,2,244,255,215,2,168,2,254,255,215,2,168,3,10,255,215,2,168,3,12,255,215,2,168,3,22,255,215,2,168,3,26,255,215,2,169,1,159,255,215,2,169,1,184,255,215,2,169,1,187,255,215,2,169,1,190,255,215,2,169,1,193,255,215,2,169,1,225,255,215,2,169,2,108,255,215,2,169,2,124,255,215,2,169,2,126,255,215,2,169,2,132,255,215,2,169,2,134,255,215,2,169,2,136,255,215,2,169,2,138,255,215,2,169,2,140,255,215,2,169,2,177,255,215,2,169,2,179,255,215,2,169,2,191,255,215,2,169,2,192,255,215,2,169,2,193,255,215,2,169,2,194,255,215,2,169,2,197,255,154,2,169,2,199,255,154,2,169,2,212,255,215,2,169,2,213,255,215,2,169,2,239,255,215,2,169,2,241,255,215,2,169,2,243,255,215,2,169,2,253,255,215,2,169,2,254,255,215,2,169,3,9,255,215,2,169,3,11,255,215,2,169,3,14,255,215,2,169,3,16,255,215,2,169,3,21,255,215,2,169,3,25,255,236,2,170,1,207,255,215,2,170,1,216,255,215,2,170,1,219,255,215,2,170,1,222,255,215,2,170,1,225,255,215,2,170,1,234,255,215,2,170,1,237,255,215,2,170,2,106,255,215,2,170,2,127,255,215,2,170,2,133,255,215,2,170,2,135,255,215,2,170,2,137,255,215,2,170,2,141,255,215,2,170,2,178,255,215,2,170,2,180,255,215,2,170,2,192,255,215,2,170,2,194,255,215,2,170,2,198,255,215,2,170,2,200,255,215,2,170,2,213,255,215,2,170,2,224,255,215,2,170,2,240,255,215,2,170,2,242,255,215,2,170,2,244,255,215,2,170,2,254,255,215,2,170,3,10,255,215,2,170,3,12,255,215,2,170,3,22,255,215,2,170,3,26,255,215,2,171,1,163,0,225,2,171,2,234,0,41,2,171,3,14,255,215,2,171,3,16,255,215,2,172,0,5,255,236,2,172,0,10,255,236,2,172,2,7,255,236,2,172,2,11,255,236,2,173,0,15,255,154,2,173,0,16,255,215,2,173,0,17,255,154,2,173,1,157,0,41,2,173,1,159,255,215,2,173,1,164,255,174,2,173,1,166,0,41,2,173,1,170,255,133,2,173,1,174,255,174,2,173,1,181,255,174,2,173,1,184,255,215,2,173,1,187,255,215,2,173,1,188,0,41,2,173,1,190,255,195,2,173,1,196,0,41,2,173,1,204,255,195,2,173,1,205,255,195,2,173,1,206,255,154,2,173,1,207,255,174,2,173,1,208,255,215,2,173,1,209,255,215,2,173,1,210,255,195,2,173,1,211,255,195,2,173,1,212,255,195,2,173,1,213,255,154,2,173,1,214,255,195,2,173,1,215,255,195,2,173,1,216,255,174,2,173,1,217,255,195,2,173,1,218,255,195,2,173,1,219,255,174,2,173,1,222,255,174,2,173,1,223,255,215,2,173,1,224,255,195,2,173,1,225,255,154,2,173,1,226,255,195,2,173,1,227,255,195,2,173,1,229,255,195,2,173,1,230,255,195,2,173,1,231,255,215,2,173,1,232,255,195,2,173,1,234,255,174,2,173,1,235,0,41,2,173,1,236,255,195,2,173,1,237,255,174,2,173,1,238,255,195,2,173,1,242,255,154,2,173,1,243,255,195,2,173,1,244,0,41,2,173,1,245,255,195,2,173,1,247,255,195,2,173,1,249,255,195,2,173,2,2,255,215,2,173,2,3,255,215,2,173,2,4,255,215,2,173,2,8,255,154,2,173,2,12,255,154,2,173,2,106,255,174,2,173,2,107,255,195,2,173,2,108,255,215,2,173,2,113,255,195,2,173,2,114,255,133,2,173,2,115,255,154,2,173,2,117,255,195,2,173,2,119,255,215,2,173,2,121,255,195,2,173,2,125,255,195,2,173,2,126,255,215,2,173,2,127,255,174,2,173,2,132,255,215,2,173,2,133,255,174,2,173,2,134,255,215,2,173,2,135,255,174,2,173,2,136,255,215,2,173,2,137,255,174,2,173,2,138,255,215,2,173,2,140,255,215,2,173,2,141,255,174,2,173,2,150,255,195,2,173,2,152,0,41,2,173,2,154,255,195,2,173,2,158,255,195,2,173,2,160,255,215,2,173,2,162,255,215,2,173,2,164,255,195,2,173,2,166,255,195,2,173,2,168,0,41,2,173,2,169,0,41,2,173,2,172,255,195,2,173,2,174,255,195,2,173,2,176,255,195,2,173,2,177,255,215,2,173,2,178,255,174,2,173,2,179,255,215,2,173,2,180,255,174,2,173,2,181,0,41,2,173,2,188,255,215,2,173,2,189,0,41,2,173,2,192,255,154,2,173,2,194,255,154,2,173,2,196,255,195,2,173,2,197,255,215,2,173,2,198,255,195,2,173,2,199,255,215,2,173,2,200,255,195,2,173,2,203,255,215,2,173,2,205,255,195,2,173,2,206,255,174,2,173,2,207,255,154,2,173,2,209,255,195,2,173,2,211,255,195,2,173,2,213,255,154,2,173,2,215,255,195,2,173,2,217,255,133,2,173,2,219,255,133,2,173,2,221,255,133,2,173,2,224,255,174,2,173,2,230,255,215,2,173,2,232,255,215,2,173,2,236,255,195,2,173,2,238,255,195,2,173,2,239,255,215,2,173,2,240,255,174,2,173,2,241,255,215,2,173,2,242,255,174,2,173,2,243,255,215,2,173,2,244,255,174,2,173,2,246,255,215,2,173,2,254,255,154,2,173,3,0,255,195,2,173,3,2,255,195,2,173,3,6,255,215,2,173,3,8,255,215,2,173,3,9,255,154,2,173,3,10,255,174,2,173,3,11,255,154,2,173,3,12,255,174,2,173,3,14,255,215,2,173,3,16,255,215,2,173,3,17,255,174,2,173,3,18,255,154,2,173,3,20,255,195,2,173,3,21,255,215,2,173,3,22,255,174,2,173,3,23,0,41,2,173,3,26,255,174,2,173,3,27,255,174,2,173,3,28,255,154,2,174,0,15,255,154,2,174,0,16,255,215,2,174,0,17,255,154,2,174,1,206,255,195,2,174,1,207,255,236,2,174,1,213,255,195,2,174,1,216,255,236,2,174,1,219,255,236,2,174,1,222,255,236,2,174,1,234,255,236,2,174,1,237,255,236,2,174,1,242,255,195,2,174,2,2,255,215,2,174,2,3,255,215,2,174,2,4,255,215,2,174,2,8,255,154,2,174,2,12,255,154,2,174,2,106,255,236,2,174,2,115,255,195,2,174,2,127,255,236,2,174,2,133,255,236,2,174,2,135,255,236,2,174,2,137,255,236,2,174,2,141,255,236,2,174,2,178,255,236,2,174,2,180,255,236,2,174,2,207,255,195,2,174,2,224,255,236,2,174,2,240,255,236,2,174,2,242,255,236,2,174,2,244,255,236,2,174,3,10,255,236,2,174,3,12,255,236,2,174,3,18,255,195,2,174,3,22,255,236,2,174,3,26,255,236,2,174,3,28,255,195,2,175,0,5,255,92,2,175,0,10,255,92,2,175,1,157,255,154,2,175,1,163,0,102,2,175,1,166,255,154,2,175,1,188,255,72,2,175,1,193,255,133,2,175,1,196,255,154,2,175,1,220,255,174,2,175,1,225,255,215,2,175,1,228,255,174,2,175,2,7,255,92,2,175,2,11,255,92,2,175,2,124,255,133,2,175,2,128,255,113,2,175,2,130,255,113,2,175,2,169,255,154,2,175,2,170,255,174,2,175,2,181,255,72,2,175,2,182,255,174,2,175,2,183,255,154,2,175,2,185,255,154,2,175,2,189,255,154,2,175,2,190,255,174,2,175,2,191,255,133,2,175,2,192,255,215,2,175,2,193,255,133,2,175,2,194,255,215,2,175,2,197,255,195,2,175,2,198,255,215,2,175,2,199,255,195,2,175,2,200,255,215,2,175,2,212,255,133,2,175,2,213,255,215,2,175,2,253,255,133,2,175,2,254,255,215,2,175,3,13,255,72,2,175,3,14,255,174,2,175,3,15,255,72,2,175,3,16,255,174,2,175,3,23,255,154,2,175,3,24,255,174,2,176,0,5,255,113,2,176,0,10,255,113,2,176,1,220,255,154,2,176,1,225,255,215,2,176,1,228,255,154,2,176,2,7,255,113,2,176,2,11,255,113,2,176,2,109,255,215,2,176,2,129,255,215,2,176,2,131,255,215,2,176,2,139,255,215,2,176,2,170,255,154,2,176,2,182,255,154,2,176,2,184,255,215,2,176,2,186,255,215,2,176,2,190,255,154,2,176,2,192,255,215,2,176,2,194,255,215,2,176,2,198,255,215,2,176,2,200,255,215,2,176,2,213,255,215,2,176,2,254,255,215,2,176,3,14,255,113,2,176,3,16,255,113,2,176,3,24,255,154,2,177,1,157,255,215,2,177,1,166,255,215,2,177,1,188,255,195,2,177,1,196,255,215,2,177,2,128,255,236,2,177,2,130,255,236,2,177,2,169,255,215,2,177,2,181,255,195,2,177,2,183,255,236,2,177,2,185,255,236,2,177,2,189,255,215,2,177,3,13,255,215,2,177,3,15,255,215,2,177,3,23,255,215,2,178,0,5,255,236,2,178,0,10,255,236,2,178,1,208,255,215,2,178,1,220,255,236,2,178,1,221,255,236,2,178,1,223,255,215,2,178,1,225,255,236,2,178,1,228,255,236,2,178,1,246,255,236,2,178,2,7,255,236,2,178,2,11,255,236,2,178,2,160,255,215,2,178,2,170,255,236,2,178,2,182,255,236,2,178,2,188,255,215,2,178,2,190,255,236,2,178,2,192,255,236,2,178,2,194,255,236,2,178,2,203,255,215,2,178,2,213,255,236,2,178,2,230,255,215,2,178,2,248,255,236,2,178,2,250,255,236,2,178,2,252,255,236,2,178,2,254,255,236,2,178,3,6,255,215,2,178,3,8,255,215,2,178,3,14,255,236,2,178,3,16,255,236,2,178,3,24,255,236,2,179,1,159,255,215,2,179,1,184,255,215,2,179,1,187,255,215,2,179,1,190,255,215,2,179,1,225,255,215,2,179,2,108,255,215,2,179,2,126,255,215,2,179,2,132,255,215,2,179,2,134,255,215,2,179,2,136,255,215,2,179,2,138,255,215,2,179,2,140,255,215,2,179,2,177,255,215,2,179,2,179,255,215,2,179,2,192,255,215,2,179,2,194,255,215,2,179,2,197,255,215,2,179,2,199,255,215,2,179,2,213,255,215,2,179,2,239,255,215,2,179,2,241,255,215,2,179,2,243,255,215,2,179,2,254,255,215,2,179,3,9,255,215,2,179,3,11,255,215,2,179,3,14,255,215,2,179,3,16,255,215,2,179,3,21,255,215,2,181,0,15,255,133,2,181,0,16,255,174,2,181,0,17,255,133,2,181,1,159,255,215,2,181,1,164,255,154,2,181,1,170,255,113,2,181,1,174,255,154,2,181,1,181,255,154,2,181,1,184,255,215,2,181,1,187,255,215,2,181,1,188,0,41,2,181,1,190,255,174,2,181,1,204,255,154,2,181,1,205,255,154,2,181,1,206,255,133,2,181,1,207,255,113,2,181,1,208,255,215,2,181,1,209,255,215,2,181,1,210,255,154,2,181,1,211,255,154,2,181,1,212,255,154,2,181,1,213,255,133,2,181,1,214,255,154,2,181,1,215,255,154,2,181,1,216,255,113,2,181,1,217,255,154,2,181,1,218,255,154,2,181,1,219,255,113,2,181,1,220,255,174,2,181,1,221,255,174,2,181,1,222,255,113,2,181,1,223,255,215,2,181,1,224,255,154,2,181,1,225,255,154,2,181,1,226,255,154,2,181,1,227,255,154,2,181,1,228,255,174,2,181,1,229,255,154,2,181,1,230,255,154,2,181,1,231,255,215,2,181,1,232,255,154,2,181,1,233,255,195,2,181,1,234,255,113,2,181,1,236,255,154,2,181,1,237,255,113,2,181,1,238,255,133,2,181,1,242,255,133,2,181,1,243,255,154,2,181,1,245,255,154,2,181,1,246,255,174,2,181,1,247,255,154,2,181,1,249,255,154,2,181,2,2,255,174,2,181,2,3,255,174,2,181,2,4,255,174,2,181,2,8,255,133,2,181,2,12,255,133,2,181,2,106,255,113,2,181,2,107,255,154,2,181,2,108,255,215,2,181,2,109,255,215,2,181,2,113,255,154,2,181,2,114,255,113,2,181,2,115,255,133,2,181,2,117,255,154,2,181,2,119,255,154,2,181,2,121,255,154,2,181,2,125,255,154,2,181,2,126,255,215,2,181,2,127,255,113,2,181,2,129,255,215,2,181,2,131,255,215,2,181,2,132,255,215,2,181,2,133,255,113,2,181,2,134,255,215,2,181,2,135,255,113,2,181,2,136,255,215,2,181,2,137,255,113,2,181,2,138,255,215,2,181,2,139,255,215,2,181,2,140,255,215,2,181,2,141,255,113,2,181,2,150,255,154,2,181,2,154,255,154,2,181,2,158,255,154,2,181,2,160,255,215,2,181,2,162,255,215,2,181,2,164,255,154,2,181,2,166,255,154,2,181,2,170,255,174,2,181,2,172,255,154,2,181,2,174,255,154,2,181,2,176,255,154,2,181,2,177,255,215,2,181,2,178,255,113,2,181,2,179,255,215,2,181,2,180,255,113,2,181,2,181,0,41,2,181,2,182,255,174,2,181,2,184,255,174,2,181,2,186,255,174,2,181,2,188,255,215,2,181,2,190,255,174,2,181,2,192,255,154,2,181,2,194,255,154,2,181,2,196,255,154,2,181,2,197,255,154,2,181,2,198,255,113,2,181,2,199,255,154,2,181,2,200,255,113,2,181,2,203,255,215,2,181,2,205,255,154,2,181,2,206,255,154,2,181,2,207,255,133,2,181,2,209,255,154,2,181,2,211,255,154,2,181,2,213,255,154,2,181,2,215,255,154,2,181,2,217,255,113,2,181,2,219,255,113,2,181,2,221,255,113,2,181,2,224,255,113,2,181,2,230,255,215,2,181,2,232,255,215,2,181,2,234,255,195,2,181,2,236,255,154,2,181,2,238,255,154,2,181,2,239,255,215,2,181,2,240,255,113,2,181,2,241,255,215,2,181,2,242,255,113,2,181,2,243,255,215,2,181,2,244,255,113,2,181,2,246,255,215,2,181,2,248,255,174,2,181,2,250,255,174,2,181,2,252,255,174,2,181,2,254,255,154,2,181,3,0,255,154,2,181,3,2,255,154,2,181,3,6,255,215,2,181,3,8,255,215,2,181,3,9,255,113,2,181,3,10,255,113,2,181,3,11,255,113,2,181,3,12,255,113,2,181,3,14,255,154,2,181,3,16,255,154,2,181,3,17,255,154,2,181,3,18,255,133,2,181,3,20,255,154,2,181,3,21,255,215,2,181,3,22,255,113,2,181,3,24,255,174,2,181,3,26,255,113,2,181,3,27,255,154,2,181,3,28,255,133,2,182,0,15,255,154,2,182,0,16,255,215,2,182,0,17,255,154,2,182,1,206,255,195,2,182,1,207,255,236,2,182,1,213,255,195,2,182,1,216,255,236,2,182,1,219,255,236,2,182,1,222,255,236,2,182,1,234,255,236,2,182,1,237,255,236,2,182,1,242,255,195,2,182,2,2,255,215,2,182,2,3,255,215,2,182,2,4,255,215,2,182,2,8,255,154,2,182,2,12,255,154,2,182,2,106,255,236,2,182,2,115,255,195,2,182,2,127,255,236,2,182,2,133,255,236,2,182,2,135,255,236,2,182,2,137,255,236,2,182,2,141,255,236,2,182,2,178,255,236,2,182,2,180,255,236,2,182,2,207,255,195,2,182,2,224,255,236,2,182,2,240,255,236,2,182,2,242,255,236,2,182,2,244,255,236,2,182,3,10,255,236,2,182,3,12,255,236,2,182,3,18,255,195,2,182,3,22,255,236,2,182,3,26,255,236,2,182,3,28,255,195,2,183,0,15,255,133,2,183,0,17,255,133,2,183,1,159,255,215,2,183,1,164,255,174,2,183,1,170,255,133,2,183,1,174,255,174,2,183,1,181,255,174,2,183,1,184,255,215,2,183,1,187,255,215,2,183,1,190,255,195,2,183,1,202,255,174,2,183,1,204,255,195,2,183,1,205,255,195,2,183,1,206,255,154,2,183,1,207,255,154,2,183,1,210,255,195,2,183,1,211,255,195,2,183,1,212,255,195,2,183,1,213,255,154,2,183,1,214,255,195,2,183,1,215,255,195,2,183,1,216,255,154,2,183,1,217,255,195,2,183,1,218,255,195,2,183,1,219,255,154,2,183,1,222,255,154,2,183,1,224,255,195,2,183,1,225,255,174,2,183,1,226,255,195,2,183,1,227,255,195,2,183,1,229,255,195,2,183,1,230,255,195,2,183,1,232,255,195,2,183,1,233,255,215,2,183,1,234,255,154,2,183,1,235,0,41,2,183,1,236,255,195,2,183,1,237,255,154,2,183,1,238,255,174,2,183,1,242,255,154,2,183,1,243,255,195,2,183,1,244,0,41,2,183,1,245,255,195,2,183,1,247,255,195,2,183,1,249,255,195,2,183,2,8,255,133,2,183,2,12,255,133,2,183,2,106,255,154,2,183,2,107,255,195,2,183,2,108,255,215,2,183,2,113,255,195,2,183,2,114,255,133,2,183,2,115,255,154,2,183,2,117,255,195,2,183,2,119,255,215,2,183,2,121,255,195,2,183,2,125,255,215,2,183,2,126,255,215,2,183,2,127,255,154,2,183,2,132,255,215,2,183,2,133,255,154,2,183,2,134,255,215,2,183,2,135,255,154,2,183,2,136,255,215,2,183,2,137,255,154,2,183,2,138,255,215,2,183,2,140,255,215,2,183,2,141,255,154,2,183,2,150,255,195,2,183,2,152,0,41,2,183,2,154,255,195,2,183,2,158,255,195,2,183,2,164,255,195,2,183,2,166,255,195,2,183,2,168,0,41,2,183,2,172,255,195,2,183,2,174,255,195,2,183,2,176,255,195,2,183,2,177,255,215,2,183,2,178,255,154,2,183,2,179,255,215,2,183,2,180,255,154,2,183,2,192,255,174,2,183,2,194,255,174,2,183,2,196,255,195,2,183,2,198,255,174,2,183,2,200,255,174,2,183,2,205,255,195,2,183,2,206,255,174,2,183,2,207,255,154,2,183,2,209,255,195,2,183,2,211,255,195,2,183,2,213,255,174,2,183,2,215,255,195,2,183,2,217,255,133,2,183,2,218,255,174,2,183,2,219,255,133,2,183,2,220,255,174,2,183,2,221,255,133,2,183,2,222,255,174,2,183,2,224,255,154,2,183,2,225,255,236,2,183,2,226,255,174,2,183,2,227,255,236,2,183,2,228,255,174,2,183,2,236,255,195,2,183,2,238,255,195,2,183,2,239,255,215,2,183,2,240,255,154,2,183,2,241,255,215,2,183,2,242,255,154,2,183,2,243,255,215,2,183,2,244,255,154,2,183,2,254,255,174,2,183,3,0,255,195,2,183,3,2,255,195,2,183,3,9,255,174,2,183,3,10,255,154,2,183,3,11,255,174,2,183,3,12,255,154,2,183,3,14,255,215,2,183,3,16,255,215,2,183,3,17,255,174,2,183,3,18,255,154,2,183,3,20,255,195,2,183,3,21,255,215,2,183,3,22,255,154,2,183,3,25,255,236,2,183,3,26,255,154,2,183,3,27,255,174,2,183,3,28,255,154,2,184,0,15,255,174,2,184,0,17,255,174,2,184,1,206,255,236,2,184,1,213,255,236,2,184,1,242,255,236,2,184,2,8,255,174,2,184,2,12,255,174,2,184,2,115,255,236,2,184,2,207,255,236,2,184,3,18,255,236,2,184,3,28,255,236,2,185,0,15,255,133,2,185,0,17,255,133,2,185,1,159,255,215,2,185,1,164,255,174,2,185,1,170,255,133,2,185,1,174,255,174,2,185,1,181,255,174,2,185,1,184,255,215,2,185,1,187,255,215,2,185,1,190,255,195,2,185,1,202,255,174,2,185,1,204,255,195,2,185,1,205,255,195,2,185,1,206,255,154,2,185,1,207,255,154,2,185,1,210,255,195,2,185,1,211,255,195,2,185,1,212,255,195,2,185,1,213,255,154,2,185,1,214,255,195,2,185,1,215,255,195,2,185,1,216,255,154,2,185,1,217,255,195,2,185,1,218,255,195,2,185,1,219,255,154,2,185,1,222,255,154,2,185,1,224,255,195,2,185,1,225,255,174,2,185,1,226,255,195,2,185,1,227,255,195,2,185,1,229,255,195,2,185,1,230,255,195,2,185,1,232,255,195,2,185,1,233,255,215,2,185,1,234,255,154,2,185,1,235,0,41,2,185,1,236,255,195,2,185,1,237,255,154,2,185,1,238,255,174,2,185,1,242,255,154,2,185,1,243,255,195,2,185,1,244,0,41,2,185,1,245,255,195,2,185,1,247,255,195,2,185,1,249,255,195,2,185,2,8,255,133,2,185,2,12,255,133,2,185,2,106,255,154,2,185,2,107,255,195,2,185,2,108,255,215,2,185,2,113,255,195,2,185,2,114,255,133,2,185,2,115,255,154,2,185,2,117,255,195,2,185,2,119,255,215,2,185,2,121,255,195,2,185,2,125,255,215,2,185,2,126,255,215,2,185,2,127,255,154,2,185,2,132,255,215,2,185,2,133,255,154,2,185,2,134,255,215,2,185,2,135,255,154,2,185,2,136,255,215,2,185,2,137,255,154,2,185,2,138,255,215,2,185,2,140,255,215,2,185,2,141,255,154,2,185,2,150,255,195,2,185,2,152,0,41,2,185,2,154,255,195,2,185,2,158,255,195,2,185,2,164,255,195,2,185,2,166,255,195,2,185,2,168,0,41,2,185,2,172,255,195,2,185,2,174,255,195,2,185,2,176,255,195,2,185,2,177,255,215,2,185,2,178,255,154,2,185,2,179,255,215,2,185,2,180,255,154,2,185,2,192,255,174,2,185,2,194,255,174,2,185,2,196,255,195,2,185,2,198,255,174,2,185,2,200,255,174,2,185,2,205,255,195,2,185,2,206,255,174,2,185,2,207,255,154,2,185,2,209,255,195,2,185,2,211,255,195,2,185,2,213,255,174,2,185,2,215,255,195,2,185,2,217,255,133,2,185,2,218,255,174,2,185,2,219,255,133,2,185,2,220,255,174,2,185,2,221,255,133,2,185,2,222,255,174,2,185,2,224,255,154,2,185,2,225,255,236,2,185,2,226,255,174,2,185,2,227,255,236,2,185,2,228,255,174,2,185,2,236,255,195,2,185,2,238,255,195,2,185,2,239,255,215,2,185,2,240,255,154,2,185,2,241,255,215,2,185,2,242,255,154,2,185,2,243,255,215,2,185,2,244,255,154,2,185,2,254,255,174,2,185,3,0,255,195,2,185,3,2,255,195,2,185,3,9,255,174,2,185,3,10,255,154,2,185,3,11,255,174,2,185,3,12,255,154,2,185,3,14,255,215,2,185,3,16,255,215,2,185,3,17,255,174,2,185,3,18,255,154,2,185,3,20,255,195,2,185,3,21,255,215,2,185,3,22,255,154,2,185,3,25,255,236,2,185,3,26,255,154,2,185,3,27,255,174,2,185,3,28,255,154,2,186,0,15,255,174,2,186,0,17,255,174,2,186,1,206,255,236,2,186,1,213,255,236,2,186,1,242,255,236,2,186,2,8,255,174,2,186,2,12,255,174,2,186,2,115,255,236,2,186,2,207,255,236,2,186,3,18,255,236,2,186,3,28,255,236,2,187,1,159,255,215,2,187,1,163,0,225,2,187,1,184,255,215,2,187,1,187,255,215,2,187,1,190,255,195,2,187,1,220,255,215,2,187,1,225,255,174,2,187,1,228,255,215,2,187,2,108,255,215,2,187,2,123,0,61,2,187,2,125,255,236,2,187,2,126,255,215,2,187,2,132,255,215,2,187,2,134,255,215,2,187,2,136,255,215,2,187,2,138,255,215,2,187,2,140,255,215,2,187,2,170,255,215,2,187,2,177,255,215,2,187,2,179,255,215,2,187,2,182,255,215,2,187,2,190,255,215,2,187,2,192,255,174,2,187,2,194,255,174,2,187,2,197,255,195,2,187,2,198,255,215,2,187,2,199,255,195,2,187,2,200,255,215,2,187,2,213,255,174,2,187,2,239,255,215,2,187,2,241,255,215,2,187,2,243,255,215,2,187,2,254,255,174,2,187,3,14,255,215,2,187,3,16,255,215,2,187,3,21,255,215,2,187,3,24,255,215,2,188,1,207,255,236,2,188,1,216,255,236,2,188,1,219,255,236,2,188,1,222,255,236,2,188,1,225,255,236,2,188,1,234,255,236,2,188,1,237,255,236,2,188,2,106,255,236,2,188,2,127,255,236,2,188,2,133,255,236,2,188,2,135,255,236,2,188,2,137,255,236,2,188,2,141,255,236,2,188,2,178,255,236,2,188,2,180,255,236,2,188,2,192,255,236,2,188,2,194,255,236,2,188,2,213,255,236,2,188,2,224,255,236,2,188,2,240,255,236,2,188,2,242,255,236,2,188,2,244,255,236,2,188,2,254,255,236,2,188,3,10,255,236,2,188,3,12,255,236,2,188,3,14,255,215,2,188,3,16,255,215,2,188,3,22,255,236,2,188,3,26,255,236,2,189,1,163,0,225,2,189,2,234,0,41,2,189,3,14,255,215,2,189,3,16,255,215,2,190,0,5,255,236,2,190,0,10,255,236,2,190,2,7,255,236,2,190,2,11,255,236,2,191,1,163,0,225,2,191,2,234,0,41,2,191,3,14,255,215,2,191,3,16,255,215,2,192,0,5,255,236,2,192,0,10,255,236,2,192,2,7,255,236,2,192,2,11,255,236,2,195,0,5,255,195,2,195,0,10,255,195,2,195,1,157,255,215,2,195,1,166,255,215,2,195,1,188,255,133,2,195,1,193,255,174,2,195,1,196,255,215,2,195,1,220,255,215,2,195,1,221,255,236,2,195,1,225,255,236,2,195,1,228,255,215,2,195,1,246,255,236,2,195,2,7,255,195,2,195,2,11,255,195,2,195,2,124,255,174,2,195,2,128,255,195,2,195,2,130,255,195,2,195,2,169,255,215,2,195,2,170,255,215,2,195,2,181,255,133,2,195,2,182,255,215,2,195,2,183,255,154,2,195,2,185,255,154,2,195,2,189,255,215,2,195,2,190,255,215,2,195,2,191,255,174,2,195,2,192,255,236,2,195,2,193,255,174,2,195,2,194,255,236,2,195,2,212,255,174,2,195,2,213,255,236,2,195,2,248,255,236,2,195,2,250,255,236,2,195,2,252,255,236,2,195,2,253,255,174,2,195,2,254,255,236,2,195,3,13,255,174,2,195,3,14,255,215,2,195,3,15,255,174,2,195,3,16,255,215,2,195,3,23,255,215,2,195,3,24,255,215,2,196,0,5,255,154,2,196,0,10,255,154,2,196,1,220,255,215,2,196,1,221,255,215,2,196,1,228,255,215,2,196,1,246,255,215,2,196,2,7,255,154,2,196,2,11,255,154,2,196,2,170,255,215,2,196,2,182,255,215,2,196,2,184,255,215,2,196,2,186,255,215,2,196,2,190,255,215,2,196,2,248,255,215,2,196,2,250,255,215,2,196,2,252,255,215,2,196,3,14,255,174,2,196,3,16,255,174,2,196,3,24,255,215,2,197,1,188,255,215,2,197,2,128,255,236,2,197,2,130,255,236,2,197,2,181,255,215,2,197,2,183,255,236,2,197,2,185,255,236,2,197,3,13,255,236,2,197,3,15,255,236,2,198,0,5,255,236,2,198,0,10,255,236,2,198,2,7,255,236,2,198,2,11,255,236,2,199,1,188,255,215,2,199,2,128,255,236,2,199,2,130,255,236,2,199,2,181,255,215,2,199,2,183,255,236,2,199,2,185,255,236,2,199,3,13,255,236,2,199,3,15,255,236,2,200,0,5,255,236,2,200,0,10,255,236,2,200,2,7,255,236,2,200,2,11,255,236,2,202,1,159,255,215,2,202,1,184,255,215,2,202,1,187,255,215,2,202,1,190,255,215,2,202,1,193,255,215,2,202,1,225,255,215,2,202,2,108,255,215,2,202,2,124,255,215,2,202,2,126,255,215,2,202,2,132,255,215,2,202,2,134,255,215,2,202,2,136,255,215,2,202,2,138,255,215,2,202,2,140,255,215,2,202,2,177,255,215,2,202,2,179,255,215,2,202,2,191,255,215,2,202,2,192,255,215,2,202,2,193,255,215,2,202,2,194,255,215,2,202,2,197,255,154,2,202,2,199,255,154,2,202,2,212,255,215,2,202,2,213,255,215,2,202,2,239,255,215,2,202,2,241,255,215,2,202,2,243,255,215,2,202,2,253,255,215,2,202,2,254,255,215,2,202,3,9,255,215,2,202,3,11,255,215,2,202,3,14,255,215,2,202,3,16,255,215,2,202,3,21,255,215,2,202,3,25,255,236,2,203,1,207,255,215,2,203,1,216,255,215,2,203,1,219,255,215,2,203,1,222,255,215,2,203,1,225,255,215,2,203,1,234,255,215,2,203,1,237,255,215,2,203,2,106,255,215,2,203,2,127,255,215,2,203,2,133,255,215,2,203,2,135,255,215,2,203,2,137,255,215,2,203,2,141,255,215,2,203,2,178,255,215,2,203,2,180,255,215,2,203,2,192,255,215,2,203,2,194,255,215,2,203,2,198,255,215,2,203,2,200,255,215,2,203,2,213,255,215,2,203,2,224,255,215,2,203,2,240,255,215,2,203,2,242,255,215,2,203,2,244,255,215,2,203,2,254,255,215,2,203,3,10,255,215,2,203,3,12,255,215,2,203,3,22,255,215,2,203,3,26,255,215,2,204,0,5,255,195,2,204,0,10,255,195,2,204,1,163,0,102,2,204,1,188,255,215,2,204,1,190,255,215,2,204,1,193,255,174,2,204,1,220,255,195,2,204,1,225,255,215,2,204,1,228,255,195,2,204,2,7,255,195,2,204,2,11,255,195,2,204,2,109,255,236,2,204,2,124,255,174,2,204,2,128,255,215,2,204,2,129,255,236,2,204,2,130,255,215,2,204,2,131,255,236,2,204,2,139,255,236,2,204,2,170,255,195,2,204,2,181,255,215,2,204,2,182,255,195,2,204,2,183,255,215,2,204,2,184,255,236,2,204,2,185,255,215,2,204,2,186,255,236,2,204,2,190,255,195,2,204,2,191,255,174,2,204,2,192,255,215,2,204,2,193,255,174,2,204,2,194,255,215,2,204,2,197,255,195,2,204,2,198,255,215,2,204,2,199,255,195,2,204,2,200,255,215,2,204,2,212,255,174,2,204,2,213,255,215,2,204,2,253,255,174,2,204,2,254,255,215,2,204,3,13,255,215,2,204,3,14,255,195,2,204,3,15,255,215,2,204,3,16,255,195,2,204,3,24,255,195,2,205,1,225,255,215,2,205,2,192,255,215,2,205,2,194,255,215,2,205,2,213,255,215,2,205,2,254,255,215,2,206,1,163,0,225,2,206,2,234,0,41,2,206,3,14,255,215,2,206,3,16,255,215,2,207,0,5,255,236,2,207,0,10,255,236,2,207,2,7,255,236,2,207,2,11,255,236,2,210,1,163,0,225,2,210,2,234,0,41,2,210,3,14,255,215,2,210,3,16,255,215,2,211,0,5,255,236,2,211,0,10,255,236,2,211,2,7,255,236,2,211,2,11,255,236,2,214,1,163,0,225,2,214,2,234,0,41,2,214,3,14,255,215,2,214,3,16,255,215,2,215,0,5,255,236,2,215,0,10,255,236,2,215,2,7,255,236,2,215,2,11,255,236,2,217,0,5,255,113,2,217,0,10,255,113,2,217,1,157,255,154,2,217,1,166,255,154,2,217,1,188,255,113,2,217,1,190,255,215,2,217,1,193,255,154,2,217,1,196,255,154,2,217,1,220,255,215,2,217,1,225,255,215,2,217,1,228,255,215,2,217,2,7,255,113,2,217,2,11,255,113,2,217,2,110,255,215,2,217,2,124,255,154,2,217,2,128,255,174,2,217,2,130,255,174,2,217,2,151,255,215,2,217,2,155,255,215,2,217,2,167,255,215,2,217,2,169,255,154,2,217,2,170,255,215,2,217,2,181,255,113,2,217,2,182,255,215,2,217,2,183,255,133,2,217,2,185,255,133,2,217,2,189,255,154,2,217,2,190,255,215,2,217,2,191,255,154,2,217,2,192,255,215,2,217,2,193,255,154,2,217,2,194,255,215,2,217,2,197,255,154,2,217,2,199,255,154,2,217,2,212,255,154,2,217,2,213,255,215,2,217,2,225,255,215,2,217,2,227,255,215,2,217,2,253,255,154,2,217,2,254,255,215,2,217,3,3,255,215,2,217,3,13,255,113,2,217,3,14,255,215,2,217,3,15,255,113,2,217,3,16,255,215,2,217,3,23,255,154,2,217,3,24,255,215,2,218,0,5,255,236,2,218,0,10,255,236,2,218,2,7,255,236,2,218,2,11,255,236,2,219,0,5,255,113,2,219,0,10,255,113,2,219,1,157,255,154,2,219,1,166,255,154,2,219,1,188,255,113,2,219,1,190,255,215,2,219,1,193,255,154,2,219,1,196,255,154,2,219,1,220,255,215,2,219,1,225,255,215,2,219,1,228,255,215,2,219,2,7,255,113,2,219,2,11,255,113,2,219,2,110,255,215,2,219,2,124,255,154,2,219,2,128,255,174,2,219,2,130,255,174,2,219,2,151,255,215,2,219,2,155,255,215,2,219,2,167,255,215,2,219,2,169,255,154,2,219,2,170,255,215,2,219,2,181,255,113,2,219,2,182,255,215,2,219,2,183,255,133,2,219,2,185,255,133,2,219,2,189,255,154,2,219,2,190,255,215,2,219,2,191,255,154,2,219,2,192,255,215,2,219,2,193,255,154,2,219,2,194,255,215,2,219,2,197,255,154,2,219,2,199,255,154,2,219,2,212,255,154,2,219,2,213,255,215,2,219,2,225,255,215,2,219,2,227,255,215,2,219,2,253,255,154,2,219,2,254,255,215,2,219,3,3,255,215,2,219,3,13,255,113,2,219,3,14,255,215,2,219,3,15,255,113,2,219,3,16,255,215,2,219,3,23,255,154,2,219,3,24,255,215,2,220,0,5,255,236,2,220,0,10,255,236,2,220,2,7,255,236,2,220,2,11,255,236,2,222,0,5,255,236,2,222,0,10,255,236,2,222,2,7,255,236,2,222,2,11,255,236,2,224,0,5,255,236,2,224,0,10,255,236,2,224,2,7,255,236,2,224,2,11,255,236,2,225,0,15,255,174,2,225,0,17,255,174,2,225,1,157,255,236,2,225,1,164,255,215,2,225,1,166,255,236,2,225,1,168,255,215,2,225,1,170,255,215,2,225,1,174,255,215,2,225,1,176,255,215,2,225,1,177,255,236,2,225,1,181,255,215,2,225,1,188,255,195,2,225,1,189,255,215,2,225,1,191,255,215,2,225,1,193,255,215,2,225,1,196,255,236,2,225,1,199,255,236,2,225,1,206,255,236,2,225,1,213,255,236,2,225,1,242,255,236,2,225,2,8,255,174,2,225,2,12,255,174,2,225,2,114,255,215,2,225,2,115,255,236,2,225,2,122,255,236,2,225,2,124,255,215,2,225,2,128,255,236,2,225,2,130,255,236,2,225,2,159,255,215,2,225,2,161,255,236,2,225,2,169,255,236,2,225,2,181,255,195,2,225,2,183,255,236,2,225,2,185,255,236,2,225,2,187,255,215,2,225,2,189,255,236,2,225,2,191,255,215,2,225,2,193,255,215,2,225,2,202,255,215,2,225,2,206,255,215,2,225,2,207,255,236,2,225,2,212,255,215,2,225,2,217,255,215,2,225,2,219,255,215,2,225,2,221,255,215,2,225,2,229,255,215,2,225,2,231,255,236,2,225,2,245,255,236,2,225,2,247,255,215,2,225,2,249,255,215,2,225,2,251,255,215,2,225,2,253,255,215,2,225,3,5,255,215,2,225,3,7,255,215,2,225,3,13,255,215,2,225,3,15,255,215,2,225,3,17,255,215,2,225,3,18,255,236,2,225,3,23,255,236,2,225,3,27,255,215,2,225,3,28,255,236,2,226,0,5,255,236,2,226,0,10,255,236,2,226,1,208,255,215,2,226,1,220,255,236,2,226,1,221,255,236,2,226,1,223,255,215,2,226,1,225,255,236,2,226,1,228,255,236,2,226,1,246,255,236,2,226,2,7,255,236,2,226,2,11,255,236,2,226,2,160,255,215,2,226,2,170,255,236,2,226,2,182,255,236,2,226,2,188,255,215,2,226,2,190,255,236,2,226,2,192,255,236,2,226,2,194,255,236,2,226,2,203,255,215,2,226,2,213,255,236,2,226,2,230,255,215,2,226,2,248,255,236,2,226,2,250,255,236,2,226,2,252,255,236,2,226,2,254,255,236,2,226,3,6,255,215,2,226,3,8,255,215,2,226,3,14,255,236,2,226,3,16,255,236,2,226,3,24,255,236,2,227,0,15,255,174,2,227,0,17,255,174,2,227,1,157,255,236,2,227,1,164,255,215,2,227,1,166,255,236,2,227,1,168,255,215,2,227,1,170,255,215,2,227,1,174,255,215,2,227,1,176,255,215,2,227,1,177,255,236,2,227,1,181,255,215,2,227,1,188,255,195,2,227,1,189,255,215,2,227,1,191,255,215,2,227,1,193,255,215,2,227,1,196,255,236,2,227,1,199,255,236,2,227,1,206,255,236,2,227,1,213,255,236,2,227,1,242,255,236,2,227,2,8,255,174,2,227,2,12,255,174,2,227,2,114,255,215,2,227,2,115,255,236,2,227,2,122,255,236,2,227,2,124,255,215,2,227,2,128,255,236,2,227,2,130,255,236,2,227,2,159,255,215,2,227,2,161,255,236,2,227,2,169,255,236,2,227,2,181,255,195,2,227,2,183,255,236,2,227,2,185,255,236,2,227,2,187,255,215,2,227,2,189,255,236,2,227,2,191,255,215,2,227,2,193,255,215,2,227,2,202,255,215,2,227,2,206,255,215,2,227,2,207,255,236,2,227,2,212,255,215,2,227,2,217,255,215,2,227,2,219,255,215,2,227,2,221,255,215,2,227,2,229,255,215,2,227,2,231,255,236,2,227,2,245,255,236,2,227,2,247,255,215,2,227,2,249,255,215,2,227,2,251,255,215,2,227,2,253,255,215,2,227,3,5,255,215,2,227,3,7,255,215,2,227,3,13,255,215,2,227,3,15,255,215,2,227,3,17,255,215,2,227,3,18,255,236,2,227,3,23,255,236,2,227,3,27,255,215,2,227,3,28,255,236,2,228,0,5,255,236,2,228,0,10,255,236,2,228,1,208,255,215,2,228,1,220,255,236,2,228,1,221,255,236,2,228,1,223,255,215,2,228,1,225,255,236,2,228,1,228,255,236,2,228,1,246,255,236,2,228,2,7,255,236,2,228,2,11,255,236,2,228,2,160,255,215,2,228,2,170,255,236,2,228,2,182,255,236,2,228,2,188,255,215,2,228,2,190,255,236,2,228,2,192,255,236,2,228,2,194,255,236,2,228,2,203,255,215,2,228,2,213,255,236,2,228,2,230,255,215,2,228,2,248,255,236,2,228,2,250,255,236,2,228,2,252,255,236,2,228,2,254,255,236,2,228,3,6,255,215,2,228,3,8,255,215,2,228,3,14,255,236,2,228,3,16,255,236,2,228,3,24,255,236,2,229,1,159,255,215,2,229,1,184,255,215,2,229,1,187,255,215,2,229,1,190,255,215,2,229,1,193,255,215,2,229,1,225,255,215,2,229,2,108,255,215,2,229,2,124,255,215,2,229,2,126,255,215,2,229,2,132,255,215,2,229,2,134,255,215,2,229,2,136,255,215,2,229,2,138,255,215,2,229,2,140,255,215,2,229,2,177,255,215,2,229,2,179,255,215,2,229,2,191,255,215,2,229,2,192,255,215,2,229,2,193,255,215,2,229,2,194,255,215,2,229,2,197,255,154,2,229,2,199,255,154,2,229,2,212,255,215,2,229,2,213,255,215,2,229,2,239,255,215,2,229,2,241,255,215,2,229,2,243,255,215,2,229,2,253,255,215,2,229,2,254,255,215,2,229,3,9,255,215,2,229,3,11,255,215,2,229,3,14,255,215,2,229,3,16,255,215,2,229,3,21,255,215,2,229,3,25,255,236,2,230,1,207,255,215,2,230,1,216,255,215,2,230,1,219,255,215,2,230,1,222,255,215,2,230,1,225,255,215,2,230,1,234,255,215,2,230,1,237,255,215,2,230,2,106,255,215,2,230,2,127,255,215,2,230,2,133,255,215,2,230,2,135,255,215,2,230,2,137,255,215,2,230,2,141,255,215,2,230,2,178,255,215,2,230,2,180,255,215,2,230,2,192,255,215,2,230,2,194,255,215,2,230,2,198,255,215,2,230,2,200,255,215,2,230,2,213,255,215,2,230,2,224,255,215,2,230,2,240,255,215,2,230,2,242,255,215,2,230,2,244,255,215,2,230,2,254,255,215,2,230,3,10,255,215,2,230,3,12,255,215,2,230,3,22,255,215,2,230,3,26,255,215,2,231,0,15,255,174,2,231,0,17,255,174,2,231,2,8,255,174,2,231,2,12,255,174,2,231,2,128,255,236,2,231,2,130,255,236,2,231,2,183,255,236,2,231,2,185,255,236,2,231,3,13,255,215,2,231,3,15,255,215,2,232,1,233,0,41,2,233,0,5,255,236,2,233,0,10,255,236,2,233,2,7,255,236,2,233,2,11,255,236,2,233,3,14,255,215,2,233,3,16,255,215,2,239,0,15,255,174,2,239,0,17,255,174,2,239,1,157,255,236,2,239,1,164,255,215,2,239,1,166,255,236,2,239,1,168,255,215,2,239,1,170,255,215,2,239,1,174,255,215,2,239,1,176,255,215,2,239,1,177,255,236,2,239,1,181,255,215,2,239,1,188,255,195,2,239,1,189,255,215,2,239,1,191,255,215,2,239,1,193,255,215,2,239,1,196,255,236,2,239,1,199,255,236,2,239,1,206,255,236,2,239,1,213,255,236,2,239,1,242,255,236,2,239,2,8,255,174,2,239,2,12,255,174,2,239,2,114,255,215,2,239,2,115,255,236,2,239,2,122,255,236,2,239,2,124,255,215,2,239,2,128,255,236,2,239,2,130,255,236,2,239,2,159,255,215,2,239,2,161,255,236,2,239,2,169,255,236,2,239,2,181,255,195,2,239,2,183,255,236,2,239,2,185,255,236,2,239,2,187,255,215,2,239,2,189,255,236,2,239,2,191,255,215,2,239,2,193,255,215,2,239,2,202,255,215,2,239,2,206,255,215,2,239,2,207,255,236,2,239,2,212,255,215,2,239,2,217,255,215,2,239,2,219,255,215,2,239,2,221,255,215,2,239,2,229,255,215,2,239,2,231,255,236,2,239,2,245,255,236,2,239,2,247,255,215,2,239,2,249,255,215,2,239,2,251,255,215,2,239,2,253,255,215,2,239,3,5,255,215,2,239,3,7,255,215,2,239,3,13,255,215,2,239,3,15,255,215,2,239,3,17,255,215,2,239,3,18,255,236,2,239,3,23,255,236,2,239,3,27,255,215,2,239,3,28,255,236,2,240,0,5,255,236,2,240,0,10,255,236,2,240,1,208,255,215,2,240,1,220,255,236,2,240,1,221,255,236,2,240,1,223,255,215,2,240,1,225,255,236,2,240,1,228,255,236,2,240,1,246,255,236,2,240,2,7,255,236,2,240,2,11,255,236,2,240,2,160,255,215,2,240,2,170,255,236,2,240,2,182,255,236,2,240,2,188,255,215,2,240,2,190,255,236,2,240,2,192,255,236,2,240,2,194,255,236,2,240,2,203,255,215,2,240,2,213,255,236,2,240,2,230,255,215,2,240,2,248,255,236,2,240,2,250,255,236,2,240,2,252,255,236,2,240,2,254,255,236,2,240,3,6,255,215,2,240,3,8,255,215,2,240,3,14,255,236,2,240,3,16,255,236,2,240,3,24,255,236,2,241,0,15,255,174,2,241,0,17,255,174,2,241,1,157,255,236,2,241,1,164,255,215,2,241,1,166,255,236,2,241,1,168,255,215,2,241,1,170,255,215,2,241,1,174,255,215,2,241,1,176,255,215,2,241,1,177,255,236,2,241,1,181,255,215,2,241,1,188,255,195,2,241,1,189,255,215,2,241,1,191,255,215,2,241,1,193,255,215,2,241,1,196,255,236,2,241,1,199,255,236,2,241,1,206,255,236,2,241,1,213,255,236,2,241,1,242,255,236,2,241,2,8,255,174,2,241,2,12,255,174,2,241,2,114,255,215,2,241,2,115,255,236,2,241,2,122,255,236,2,241,2,124,255,215,2,241,2,128,255,236,2,241,2,130,255,236,2,241,2,159,255,215,2,241,2,161,255,236,2,241,2,169,255,236,2,241,2,181,255,195,2,241,2,183,255,236,2,241,2,185,255,236,2,241,2,187,255,215,2,241,2,189,255,236,2,241,2,191,255,215,2,241,2,193,255,215,2,241,2,202,255,215,2,241,2,206,255,215,2,241,2,207,255,236,2,241,2,212,255,215,2,241,2,217,255,215,2,241,2,219,255,215,2,241,2,221,255,215,2,241,2,229,255,215,2,241,2,231,255,236,2,241,2,245,255,236,2,241,2,247,255,215,2,241,2,249,255,215,2,241,2,251,255,215,2,241,2,253,255,215,2,241,3,5,255,215,2,241,3,7,255,215,2,241,3,13,255,215,2,241,3,15,255,215,2,241,3,17,255,215,2,241,3,18,255,236,2,241,3,23,255,236,2,241,3,27,255,215,2,241,3,28,255,236,2,242,0,5,255,236,2,242,0,10,255,236,2,242,1,208,255,215,2,242,1,220,255,236,2,242,1,221,255,236,2,242,1,223,255,215,2,242,1,225,255,236,2,242,1,228,255,236,2,242,1,246,255,236,2,242,2,7,255,236,2,242,2,11,255,236,2,242,2,160,255,215,2,242,2,170,255,236,2,242,2,182,255,236,2,242,2,188,255,215,2,242,2,190,255,236,2,242,2,192,255,236,2,242,2,194,255,236,2,242,2,203,255,215,2,242,2,213,255,236,2,242,2,230,255,215,2,242,2,248,255,236,2,242,2,250,255,236,2,242,2,252,255,236,2,242,2,254,255,236,2,242,3,6,255,215,2,242,3,8,255,215,2,242,3,14,255,236,2,242,3,16,255,236,2,242,3,24,255,236,2,243,0,15,255,174,2,243,0,17,255,174,2,243,1,157,255,236,2,243,1,164,255,215,2,243,1,166,255,236,2,243,1,168,255,215,2,243,1,170,255,215,2,243,1,174,255,215,2,243,1,176,255,215,2,243,1,177,255,236,2,243,1,181,255,215,2,243,1,188,255,195,2,243,1,189,255,215,2,243,1,191,255,215,2,243,1,193,255,215,2,243,1,196,255,236,2,243,1,199,255,236,2,243,1,206,255,236,2,243,1,213,255,236,2,243,1,242,255,236,2,243,2,8,255,174,2,243,2,12,255,174,2,243,2,114,255,215,2,243,2,115,255,236,2,243,2,122,255,236,2,243,2,124,255,215,2,243,2,128,255,236,2,243,2,130,255,236,2,243,2,159,255,215,2,243,2,161,255,236,2,243,2,169,255,236,2,243,2,181,255,195,2,243,2,183,255,236,2,243,2,185,255,236,2,243,2,187,255,215,2,243,2,189,255,236,2,243,2,191,255,215,2,243,2,193,255,215,2,243,2,202,255,215,2,243,2,206,255,215,2,243,2,207,255,236,2,243,2,212,255,215,2,243,2,217,255,215,2,243,2,219,255,215,2,243,2,221,255,215,2,243,2,229,255,215,2,243,2,231,255,236,2,243,2,245,255,236,2,243,2,247,255,215,2,243,2,249,255,215,2,243,2,251,255,215,2,243,2,253,255,215,2,243,3,5,255,215,2,243,3,7,255,215,2,243,3,13,255,215,2,243,3,15,255,215,2,243,3,17,255,215,2,243,3,18,255,236,2,243,3,23,255,236,2,243,3,27,255,215,2,243,3,28,255,236,2,244,0,5,255,236,2,244,0,10,255,236,2,244,1,208,255,215,2,244,1,220,255,236,2,244,1,221,255,236,2,244,1,223,255,215,2,244,1,225,255,236,2,244,1,228,255,236,2,244,1,246,255,236,2,244,2,7,255,236,2,244,2,11,255,236,2,244,2,160,255,215,2,244,2,170,255,236,2,244,2,182,255,236,2,244,2,188,255,215,2,244,2,190,255,236,2,244,2,192,255,236,2,244,2,194,255,236,2,244,2,203,255,215,2,244,2,213,255,236,2,244,2,230,255,215,2,244,2,248,255,236,2,244,2,250,255,236,2,244,2,252,255,236,2,244,2,254,255,236,2,244,3,6,255,215,2,244,3,8,255,215,2,244,3,14,255,236,2,244,3,16,255,236,2,244,3,24,255,236,2,245,0,15,255,174,2,245,0,17,255,174,2,245,1,157,255,236,2,245,1,164,255,215,2,245,1,166,255,236,2,245,1,168,255,215,2,245,1,170,255,215,2,245,1,174,255,215,2,245,1,176,255,215,2,245,1,177,255,236,2,245,1,181,255,215,2,245,1,188,255,195,2,245,1,189,255,215,2,245,1,191,255,215,2,245,1,193,255,215,2,245,1,196,255,236,2,245,1,199,255,236,2,245,1,206,255,236,2,245,1,213,255,236,2,245,1,242,255,236,2,245,2,8,255,174,2,245,2,12,255,174,2,245,2,114,255,215,2,245,2,115,255,236,2,245,2,122,255,236,2,245,2,124,255,215,2,245,2,128,255,236,2,245,2,130,255,236,2,245,2,159,255,215,2,245,2,161,255,236,2,245,2,169,255,236,2,245,2,181,255,195,2,245,2,183,255,236,2,245,2,185,255,236,2,245,2,187,255,215,2,245,2,189,255,236,2,245,2,191,255,215,2,245,2,193,255,215,2,245,2,202,255,215,2,245,2,206,255,215,2,245,2,207,255,236,2,245,2,212,255,215,2,245,2,217,255,215,2,245,2,219,255,215,2,245,2,221,255,215,2,245,2,229,255,215,2,245,2,231,255,236,2,245,2,245,255,236,2,245,2,247,255,215,2,245,2,249,255,215,2,245,2,251,255,215,2,245,2,253,255,215,2,245,3,5,255,215,2,245,3,7,255,215,2,245,3,13,255,215,2,245,3,15,255,215,2,245,3,17,255,215,2,245,3,18,255,236,2,245,3,23,255,236,2,245,3,27,255,215,2,245,3,28,255,236,2,246,0,5,255,236,2,246,0,10,255,236,2,246,1,208,255,215,2,246,1,220,255,236,2,246,1,221,255,236,2,246,1,223,255,215,2,246,1,225,255,236,2,246,1,228,255,236,2,246,1,246,255,236,2,246,2,7,255,236,2,246,2,11,255,236,2,246,2,160,255,215,2,246,2,170,255,236,2,246,2,182,255,236,2,246,2,188,255,215,2,246,2,190,255,236,2,246,2,192,255,236,2,246,2,194,255,236,2,246,2,203,255,215,2,246,2,213,255,236,2,246,2,230,255,215,2,246,2,248,255,236,2,246,2,250,255,236,2,246,2,252,255,236,2,246,2,254,255,236,2,246,3,6,255,215,2,246,3,8,255,215,2,246,3,14,255,236,2,246,3,16,255,236,2,246,3,24,255,236,2,247,0,15,255,133,2,247,0,17,255,133,2,247,1,159,255,236,2,247,1,164,255,154,2,247,1,170,255,113,2,247,1,174,255,154,2,247,1,181,255,154,2,247,1,184,255,236,2,247,1,187,255,236,2,247,1,190,255,195,2,247,1,201,255,236,2,247,1,206,255,174,2,247,1,207,255,215,2,247,1,213,255,174,2,247,1,216,255,215,2,247,1,219,255,215,2,247,1,222,255,215,2,247,1,225,255,215,2,247,1,234,255,215,2,247,1,235,0,102,2,247,1,237,255,215,2,247,1,238,255,236,2,247,1,242,255,174,2,247,1,244,0,102,2,247,2,8,255,133,2,247,2,12,255,133,2,247,2,106,255,215,2,247,2,108,255,236,2,247,2,114,255,113,2,247,2,115,255,174,2,247,2,126,255,236,2,247,2,127,255,215,2,247,2,132,255,236,2,247,2,133,255,215,2,247,2,134,255,236,2,247,2,135,255,215,2,247,2,136,255,236,2,247,2,137,255,215,2,247,2,138,255,236,2,247,2,140,255,236,2,247,2,141,255,215,2,247,2,152,0,102,2,247,2,168,0,102,2,247,2,177,255,236,2,247,2,178,255,215,2,247,2,179,255,236,2,247,2,180,255,215,2,247,2,192,255,215,2,247,2,194,255,215,2,247,2,197,255,215,2,247,2,198,255,195,2,247,2,199,255,215,2,247,2,200,255,195,2,247,2,206,255,154,2,247,2,207,255,174,2,247,2,213,255,215,2,247,2,217,255,113,2,247,2,219,255,113,2,247,2,221,255,113,2,247,2,224,255,215,2,247,2,239,255,236,2,247,2,240,255,215,2,247,2,241,255,236,2,247,2,242,255,215,2,247,2,243,255,236,2,247,2,244,255,215,2,247,2,254,255,215,2,247,3,9,255,113,2,247,3,10,255,215,2,247,3,11,255,113,2,247,3,12,255,215,2,247,3,17,255,154,2,247,3,18,255,174,2,247,3,21,255,236,2,247,3,22,255,215,2,247,3,26,255,215,2,247,3,27,255,154,2,247,3,28,255,174,2,248,0,15,255,174,2,248,0,17,255,174,2,248,1,206,255,215,2,248,1,213,255,215,2,248,1,242,255,215,2,248,2,8,255,174,2,248,2,12,255,174,2,248,2,115,255,215,2,248,2,207,255,215,2,248,3,18,255,215,2,248,3,28,255,215,2,249,0,15,255,133,2,249,0,17,255,133,2,249,1,159,255,236,2,249,1,164,255,154,2,249,1,170,255,113,2,249,1,174,255,154,2,249,1,181,255,154,2,249,1,184,255,236,2,249,1,187,255,236,2,249,1,190,255,195,2,249,1,201,255,236,2,249,1,206,255,174,2,249,1,207,255,215,2,249,1,213,255,174,2,249,1,216,255,215,2,249,1,219,255,215,2,249,1,222,255,215,2,249,1,225,255,215,2,249,1,234,255,215,2,249,1,235,0,102,2,249,1,237,255,215,2,249,1,238,255,236,2,249,1,242,255,174,2,249,1,244,0,102,2,249,2,8,255,133,2,249,2,12,255,133,2,249,2,106,255,215,2,249,2,108,255,236,2,249,2,114,255,113,2,249,2,115,255,174,2,249,2,126,255,236,2,249,2,127,255,215,2,249,2,132,255,236,2,249,2,133,255,215,2,249,2,134,255,236,2,249,2,135,255,215,2,249,2,136,255,236,2,249,2,137,255,215,2,249,2,138,255,236,2,249,2,140,255,236,2,249,2,141,255,215,2,249,2,152,0,102,2,249,2,168,0,102,2,249,2,177,255,236,2,249,2,178,255,215,2,249,2,179,255,236,2,249,2,180,255,215,2,249,2,192,255,215,2,249,2,194,255,215,2,249,2,197,255,215,2,249,2,198,255,195,2,249,2,199,255,215,2,249,2,200,255,195,2,249,2,206,255,154,2,249,2,207,255,174,2,249,2,213,255,215,2,249,2,217,255,113,2,249,2,219,255,113,2,249,2,221,255,113,2,249,2,224,255,215,2,249,2,239,255,236,2,249,2,240,255,215,2,249,2,241,255,236,2,249,2,242,255,215,2,249,2,243,255,236,2,249,2,244,255,215,2,249,2,254,255,215,2,249,3,9,255,113,2,249,3,10,255,215,2,249,3,11,255,113,2,249,3,12,255,215,2,249,3,17,255,154,2,249,3,18,255,174,2,249,3,21,255,236,2,249,3,22,255,215,2,249,3,26,255,215,2,249,3,27,255,154,2,249,3,28,255,174,2,250,0,15,255,174,2,250,0,17,255,174,2,250,1,206,255,215,2,250,1,213,255,215,2,250,1,242,255,215,2,250,2,8,255,174,2,250,2,12,255,174,2,250,2,115,255,215,2,250,2,207,255,215,2,250,3,18,255,215,2,250,3,28,255,215,2,251,0,15,255,133,2,251,0,17,255,133,2,251,1,159,255,236,2,251,1,164,255,154,2,251,1,170,255,113,2,251,1,174,255,154,2,251,1,181,255,154,2,251,1,184,255,236,2,251,1,187,255,236,2,251,1,190,255,195,2,251,1,201,255,236,2,251,1,206,255,174,2,251,1,207,255,215,2,251,1,213,255,174,2,251,1,216,255,215,2,251,1,219,255,215,2,251,1,222,255,215,2,251,1,225,255,215,2,251,1,234,255,215,2,251,1,235,0,102,2,251,1,237,255,215,2,251,1,238,255,236,2,251,1,242,255,174,2,251,1,244,0,102,2,251,2,8,255,133,2,251,2,12,255,133,2,251,2,106,255,215,2,251,2,108,255,236,2,251,2,114,255,113,2,251,2,115,255,174,2,251,2,126,255,236,2,251,2,127,255,215,2,251,2,132,255,236,2,251,2,133,255,215,2,251,2,134,255,236,2,251,2,135,255,215,2,251,2,136,255,236,2,251,2,137,255,215,2,251,2,138,255,236,2,251,2,140,255,236,2,251,2,141,255,215,2,251,2,152,0,102,2,251,2,168,0,102,2,251,2,177,255,236,2,251,2,178,255,215,2,251,2,179,255,236,2,251,2,180,255,215,2,251,2,192,255,215,2,251,2,194,255,215,2,251,2,197,255,215,2,251,2,198,255,195,2,251,2,199,255,215,2,251,2,200,255,195,2,251,2,206,255,154,2,251,2,207,255,174,2,251,2,213,255,215,2,251,2,217,255,113,2,251,2,219,255,113,2,251,2,221,255,113,2,251,2,224,255,215,2,251,2,239,255,236,2,251,2,240,255,215,2,251,2,241,255,236,2,251,2,242,255,215,2,251,2,243,255,236,2,251,2,244,255,215,2,251,2,254,255,215,2,251,3,9,255,113,2,251,3,10,255,215,2,251,3,11,255,113,2,251,3,12,255,215,2,251,3,17,255,154,2,251,3,18,255,174,2,251,3,21,255,236,2,251,3,22,255,215,2,251,3,26,255,215,2,251,3,27,255,154,2,251,3,28,255,174,2,252,0,15,255,174,2,252,0,17,255,174,2,252,1,206,255,215,2,252,1,213,255,215,2,252,1,242,255,215,2,252,2,8,255,174,2,252,2,12,255,174,2,252,2,115,255,215,2,252,2,207,255,215,2,252,3,18,255,215,2,252,3,28,255,215,2,255,0,15,255,133,2,255,0,16,255,174,2,255,0,17,255,133,2,255,1,159,255,215,2,255,1,164,255,154,2,255,1,170,255,113,2,255,1,174,255,154,2,255,1,181,255,154,2,255,1,184,255,215,2,255,1,187,255,215,2,255,1,188,0,41,2,255,1,190,255,174,2,255,1,204,255,154,2,255,1,205,255,154,2,255,1,206,255,133,2,255,1,207,255,113,2,255,1,208,255,215,2,255,1,209,255,215,2,255,1,210,255,154,2,255,1,211,255,154,2,255,1,212,255,154,2,255,1,213,255,133,2,255,1,214,255,154,2,255,1,215,255,154,2,255,1,216,255,113,2,255,1,217,255,154,2,255,1,218,255,154,2,255,1,219,255,113,2,255,1,220,255,174,2,255,1,221,255,174,2,255,1,222,255,113,2,255,1,223,255,215,2,255,1,224,255,154,2,255,1,225,255,154,2,255,1,226,255,154,2,255,1,227,255,154,2,255,1,228,255,174,2,255,1,229,255,154,2,255,1,230,255,154,2,255,1,231,255,215,2,255,1,232,255,154,2,255,1,233,255,195,2,255,1,234,255,113,2,255,1,236,255,154,2,255,1,237,255,113,2,255,1,238,255,133,2,255,1,242,255,133,2,255,1,243,255,154,2,255,1,245,255,154,2,255,1,246,255,174,2,255,1,247,255,154,2,255,1,249,255,154,2,255,2,2,255,174,2,255,2,3,255,174,2,255,2,4,255,174,2,255,2,8,255,133,2,255,2,12,255,133,2,255,2,106,255,113,2,255,2,107,255,154,2,255,2,108,255,215,2,255,2,109,255,215,2,255,2,113,255,154,2,255,2,114,255,113,2,255,2,115,255,133,2,255,2,117,255,154,2,255,2,119,255,154,2,255,2,121,255,154,2,255,2,125,255,154,2,255,2,126,255,215,2,255,2,127,255,113,2,255,2,129,255,215,2,255,2,131,255,215,2,255,2,132,255,215,2,255,2,133,255,113,2,255,2,134,255,215,2,255,2,135,255,113,2,255,2,136,255,215,2,255,2,137,255,113,2,255,2,138,255,215,2,255,2,139,255,215,2,255,2,140,255,215,2,255,2,141,255,113,2,255,2,150,255,154,2,255,2,154,255,154,2,255,2,158,255,154,2,255,2,160,255,215,2,255,2,162,255,215,2,255,2,164,255,154,2,255,2,166,255,154,2,255,2,170,255,174,2,255,2,172,255,154,2,255,2,174,255,154,2,255,2,176,255,154,2,255,2,177,255,215,2,255,2,178,255,113,2,255,2,179,255,215,2,255,2,180,255,113,2,255,2,181,0,41,2,255,2,182,255,174,2,255,2,184,255,174,2,255,2,186,255,174,2,255,2,188,255,215,2,255,2,190,255,174,2,255,2,192,255,154,2,255,2,194,255,154,2,255,2,196,255,154,2,255,2,197,255,154,2,255,2,198,255,113,2,255,2,199,255,154,2,255,2,200,255,113,2,255,2,203,255,215,2,255,2,205,255,154,2,255,2,206,255,154,2,255,2,207,255,133,2,255,2,209,255,154,2,255,2,211,255,154,2,255,2,213,255,154,2,255,2,215,255,154,2,255,2,217,255,113,2,255,2,219,255,113,2,255,2,221,255,113,2,255,2,224,255,113,2,255,2,230,255,215,2,255,2,232,255,215,2,255,2,234,255,195,2,255,2,236,255,154,2,255,2,238,255,154,2,255,2,239,255,215,2,255,2,240,255,113,2,255,2,241,255,215,2,255,2,242,255,113,2,255,2,243,255,215,2,255,2,244,255,113,2,255,2,246,255,215,2,255,2,248,255,174,2,255,2,250,255,174,2,255,2,252,255,174,2,255,2,254,255,154,2,255,3,0,255,154,2,255,3,2,255,154,2,255,3,6,255,215,2,255,3,8,255,215,2,255,3,9,255,113,2,255,3,10,255,113,2,255,3,11,255,113,2,255,3,12,255,113,2,255,3,14,255,154,2,255,3,16,255,154,2,255,3,17,255,154,2,255,3,18,255,133,2,255,3,20,255,154,2,255,3,21,255,215,2,255,3,22,255,113,2,255,3,24,255,174,2,255,3,26,255,113,2,255,3,27,255,154,2,255,3,28,255,133,3,0,0,15,255,154,3,0,0,16,255,215,3,0,0,17,255,154,3,0,1,206,255,195,3,0,1,207,255,236,3,0,1,213,255,195,3,0,1,216,255,236,3,0,1,219,255,236,3,0,1,222,255,236,3,0,1,234,255,236,3,0,1,237,255,236,3,0,1,242,255,195,3,0,2,2,255,215,3,0,2,3,255,215,3,0,2,4,255,215,3,0,2,8,255,154,3,0,2,12,255,154,3,0,2,106,255,236,3,0,2,115,255,195,3,0,2,127,255,236,3,0,2,133,255,236,3,0,2,135,255,236,3,0,2,137,255,236,3,0,2,141,255,236,3,0,2,178,255,236,3,0,2,180,255,236,3,0,2,207,255,195,3,0,2,224,255,236,3,0,2,240,255,236,3,0,2,242,255,236,3,0,2,244,255,236,3,0,3,10,255,236,3,0,3,12,255,236,3,0,3,18,255,195,3,0,3,22,255,236,3,0,3,26,255,236,3,0,3,28,255,195,3,3,0,15,255,154,3,3,0,16,255,215,3,3,0,17,255,154,3,3,1,157,0,41,3,3,1,159,255,215,3,3,1,164,255,174,3,3,1,166,0,41,3,3,1,170,255,133,3,3,1,174,255,174,3,3,1,181,255,174,3,3,1,184,255,215,3,3,1,187,255,215,3,3,1,188,0,41,3,3,1,190,255,195,3,3,1,196,0,41,3,3,1,204,255,195,3,3,1,205,255,195,3,3,1,206,255,154,3,3,1,207,255,174,3,3,1,208,255,215,3,3,1,209,255,215,3,3,1,210,255,195,3,3,1,211,255,195,3,3,1,212,255,195,3,3,1,213,255,154,3,3,1,214,255,195,3,3,1,215,255,195,3,3,1,216,255,174,3,3,1,217,255,195,3,3,1,218,255,195,3,3,1,219,255,174,3,3,1,222,255,174,3,3,1,223,255,215,3,3,1,224,255,195,3,3,1,225,255,154,3,3,1,226,255,195,3,3,1,227,255,195,3,3,1,229,255,195,3,3,1,230,255,195,3,3,1,231,255,215,3,3,1,232,255,195,3,3,1,234,255,174,3,3,1,235,0,41,3,3,1,236,255,195,3,3,1,237,255,174,3,3,1,238,255,195,3,3,1,242,255,154,3,3,1,243,255,195,3,3,1,244,0,41,3,3,1,245,255,195,3,3,1,247,255,195,3,3,1,249,255,195,3,3,2,2,255,215,3,3,2,3,255,215,3,3,2,4,255,215,3,3,2,8,255,154,3,3,2,12,255,154,3,3,2,106,255,174,3,3,2,107,255,195,3,3,2,108,255,215,3,3,2,113,255,195,3,3,2,114,255,133,3,3,2,115,255,154,3,3,2,117,255,195,3,3,2,119,255,215,3,3,2,121,255,195,3,3,2,125,255,195,3,3,2,126,255,215,3,3,2,127,255,174,3,3,2,132,255,215,3,3,2,133,255,174,3,3,2,134,255,215,3,3,2,135,255,174,3,3,2,136,255,215,3,3,2,137,255,174,3,3,2,138,255,215,3,3,2,140,255,215,3,3,2,141,255,174,3,3,2,150,255,195,3,3,2,152,0,41,3,3,2,154,255,195,3,3,2,158,255,195,3,3,2,160,255,215,3,3,2,162,255,215,3,3,2,164,255,195,3,3,2,166,255,195,3,3,2,168,0,41,3,3,2,169,0,41,3,3,2,172,255,195,3,3,2,174,255,195,3,3,2,176,255,195,3,3,2,177,255,215,3,3,2,178,255,174,3,3,2,179,255,215,3,3,2,180,255,174,3,3,2,181,0,41,3,3,2,188,255,215,3,3,2,189,0,41,3,3,2,192,255,154,3,3,2,194,255,154,3,3,2,196,255,195,3,3,2,197,255,215,3,3,2,198,255,195,3,3,2,199,255,215,3,3,2,200,255,195,3,3,2,203,255,215,3,3,2,205,255,195,3,3,2,206,255,174,3,3,2,207,255,154,3,3,2,209,255,195,3,3,2,211,255,195,3,3,2,213,255,154,3,3,2,215,255,195,3,3,2,217,255,133,3,3,2,219,255,133,3,3,2,221,255,133,3,3,2,224,255,174,3,3,2,230,255,215,3,3,2,232,255,215,3,3,2,236,255,195,3,3,2,238,255,195,3,3,2,239,255,215,3,3,2,240,255,174,3,3,2,241,255,215,3,3,2,242,255,174,3,3,2,243,255,215,3,3,2,244,255,174,3,3,2,246,255,215,3,3,2,254,255,154,3,3,3,0,255,195,3,3,3,2,255,195,3,3,3,6,255,215,3,3,3,8,255,215,3,3,3,9,255,154,3,3,3,10,255,174,3,3,3,11,255,154,3,3,3,12,255,174,3,3,3,14,255,215,3,3,3,16,255,215,3,3,3,17,255,174,3,3,3,18,255,154,3,3,3,20,255,195,3,3,3,21,255,215,3,3,3,22,255,174,3,3,3,23,0,41,3,3,3,26,255,174,3,3,3,27,255,174,3,3,3,28,255,154,3,4,0,15,255,195,3,4,0,17,255,195,3,4,1,206,255,195,3,4,1,207,255,215,3,4,1,213,255,195,3,4,1,216,255,215,3,4,1,219,255,215,3,4,1,222,255,215,3,4,1,234,255,215,3,4,1,237,255,215,3,4,1,242,255,195,3,4,2,8,255,195,3,4,2,12,255,195,3,4,2,106,255,215,3,4,2,115,255,195,3,4,2,127,255,215,3,4,2,133,255,215,3,4,2,135,255,215,3,4,2,137,255,215,3,4,2,141,255,215,3,4,2,178,255,215,3,4,2,180,255,215,3,4,2,207,255,195,3,4,2,224,255,215,3,4,2,240,255,215,3,4,2,242,255,215,3,4,2,244,255,215,3,4,3,10,255,215,3,4,3,12,255,215,3,4,3,18,255,195,3,4,3,22,255,215,3,4,3,26,255,215,3,4,3,28,255,195,3,5,1,159,255,215,3,5,1,163,0,225,3,5,1,184,255,215,3,5,1,187,255,215,3,5,1,190,255,195,3,5,1,220,255,215,3,5,1,225,255,174,3,5,1,228,255,215,3,5,2,108,255,215,3,5,2,123,0,61,3,5,2,125,255,236,3,5,2,126,255,215,3,5,2,132,255,215,3,5,2,134,255,215,3,5,2,136,255,215,3,5,2,138,255,215,3,5,2,140,255,215,3,5,2,170,255,215,3,5,2,177,255,215,3,5,2,179,255,215,3,5,2,182,255,215,3,5,2,190,255,215,3,5,2,192,255,174,3,5,2,194,255,174,3,5,2,197,255,195,3,5,2,198,255,215,3,5,2,199,255,195,3,5,2,200,255,215,3,5,2,213,255,174,3,5,2,239,255,215,3,5,2,241,255,215,3,5,2,243,255,215,3,5,2,254,255,174,3,5,3,14,255,215,3,5,3,16,255,215,3,5,3,21,255,215,3,5,3,24,255,215,3,6,1,207,255,236,3,6,1,216,255,236,3,6,1,219,255,236,3,6,1,222,255,236,3,6,1,225,255,236,3,6,1,234,255,236,3,6,1,237,255,236,3,6,2,106,255,236,3,6,2,127,255,236,3,6,2,133,255,236,3,6,2,135,255,236,3,6,2,137,255,236,3,6,2,141,255,236,3,6,2,178,255,236,3,6,2,180,255,236,3,6,2,192,255,236,3,6,2,194,255,236,3,6,2,213,255,236,3,6,2,224,255,236,3,6,2,240,255,236,3,6,2,242,255,236,3,6,2,244,255,236,3,6,2,254,255,236,3,6,3,10,255,236,3,6,3,12,255,236,3,6,3,14,255,215,3,6,3,16,255,215,3,6,3,22,255,236,3,6,3,26,255,236,3,7,1,159,255,215,3,7,1,184,255,215,3,7,1,187,255,215,3,7,1,190,255,215,3,7,1,193,255,215,3,7,1,225,255,215,3,7,2,108,255,215,3,7,2,124,255,215,3,7,2,126,255,215,3,7,2,132,255,215,3,7,2,134,255,215,3,7,2,136,255,215,3,7,2,138,255,215,3,7,2,140,255,215,3,7,2,177,255,215,3,7,2,179,255,215,3,7,2,191,255,215,3,7,2,192,255,215,3,7,2,193,255,215,3,7,2,194,255,215,3,7,2,197,255,154,3,7,2,199,255,154,3,7,2,212,255,215,3,7,2,213,255,215,3,7,2,239,255,215,3,7,2,241,255,215,3,7,2,243,255,215,3,7,2,253,255,215,3,7,2,254,255,215,3,7,3,9,255,215,3,7,3,11,255,215,3,7,3,14,255,215,3,7,3,16,255,215,3,7,3,21,255,215,3,7,3,25,255,236,3,8,1,207,255,236,3,8,1,216,255,236,3,8,1,219,255,236,3,8,1,222,255,236,3,8,1,225,255,236,3,8,1,234,255,236,3,8,1,237,255,236,3,8,2,106,255,236,3,8,2,127,255,236,3,8,2,133,255,236,3,8,2,135,255,236,3,8,2,137,255,236,3,8,2,141,255,236,3,8,2,178,255,236,3,8,2,180,255,236,3,8,2,192,255,236,3,8,2,194,255,236,3,8,2,213,255,236,3,8,2,224,255,236,3,8,2,240,255,236,3,8,2,242,255,236,3,8,2,244,255,236,3,8,2,254,255,236,3,8,3,10,255,236,3,8,3,12,255,236,3,8,3,14,255,215,3,8,3,16,255,215,3,8,3,22,255,236,3,8,3,26,255,236,3,11,0,5,255,154,3,11,0,10,255,154,3,11,1,157,255,174,3,11,1,166,255,174,3,11,1,168,255,195,3,11,1,170,255,195,3,11,1,176,255,195,3,11,1,188,255,113,3,11,1,189,255,195,3,11,1,191,255,195,3,11,1,193,255,195,3,11,1,196,255,174,3,11,1,208,255,215,3,11,1,220,255,195,3,11,1,223,255,215,3,11,1,225,255,215,3,11,1,228,255,195,3,11,2,7,255,154,3,11,2,11,255,154,3,11,2,114,255,195,3,11,2,118,255,215,3,11,2,124,255,195,3,11,2,128,255,195,3,11,2,130,255,195,3,11,2,159,255,195,3,11,2,160,255,215,3,11,2,169,255,174,3,11,2,170,255,195,3,11,2,181,255,113,3,11,2,182,255,195,3,11,2,183,255,195,3,11,2,185,255,195,3,11,2,187,255,195,3,11,2,188,255,215,3,11,2,189,255,174,3,11,2,190,255,195,3,11,2,191,255,195,3,11,2,192,255,215,3,11,2,193,255,195,3,11,2,194,255,215,3,11,2,202,255,195,3,11,2,203,255,215,3,11,2,212,255,195,3,11,2,213,255,215,3,11,2,217,255,195,3,11,2,219,255,195,3,11,2,221,255,195,3,11,2,229,255,195,3,11,2,230,255,215,3,11,2,247,255,195,3,11,2,249,255,195,3,11,2,251,255,195,3,11,2,253,255,195,3,11,2,254,255,215,3,11,3,5,255,195,3,11,3,6,255,215,3,11,3,7,255,195,3,11,3,8,255,215,3,11,3,13,255,215,3,11,3,14,255,215,3,11,3,15,255,215,3,11,3,16,255,215,3,11,3,23,255,174,3,11,3,24,255,195,3,12,0,5,255,154,3,12,0,10,255,154,3,12,1,208,255,215,3,12,1,220,255,195,3,12,1,221,255,215,3,12,1,223,255,215,3,12,1,225,255,215,3,12,1,228,255,195,3,12,1,246,255,215,3,12,2,7,255,154,3,12,2,11,255,154,3,12,2,160,255,215,3,12,2,170,255,195,3,12,2,182,255,195,3,12,2,188,255,215,3,12,2,190,255,195,3,12,2,192,255,215,3,12,2,194,255,215,3,12,2,203,255,215,3,12,2,213,255,215,3,12,2,230,255,215,3,12,2,248,255,215,3,12,2,250,255,215,3,12,2,252,255,215,3,12,2,254,255,215,3,12,3,6,255,215,3,12,3,8,255,215,3,12,3,14,255,154,3,12,3,16,255,154,3,12,3,24,255,195,3,13,0,5,255,154,3,13,0,10,255,154,3,13,1,157,255,174,3,13,1,166,255,174,3,13,1,168,255,195,3,13,1,170,255,195,3,13,1,176,255,195,3,13,1,188,255,113,3,13,1,189,255,195,3,13,1,191,255,195,3,13,1,193,255,195,3,13,1,196,255,174,3,13,1,208,255,215,3,13,1,220,255,195,3,13,1,223,255,215,3,13,1,225,255,215,3,13,1,228,255,195,3,13,2,7,255,154,3,13,2,11,255,154,3,13,2,114,255,195,3,13,2,118,255,215,3,13,2,124,255,195,3,13,2,128,255,195,3,13,2,130,255,195,3,13,2,159,255,195,3,13,2,160,255,215,3,13,2,169,255,174,3,13,2,170,255,195,3,13,2,181,255,113,3,13,2,182,255,195,3,13,2,183,255,195,3,13,2,185,255,195,3,13,2,187,255,195,3,13,2,188,255,215,3,13,2,189,255,174,3,13,2,190,255,195,3,13,2,191,255,195,3,13,2,192,255,215,3,13,2,193,255,195,3,13,2,194,255,215,3,13,2,202,255,195,3,13,2,203,255,215,3,13,2,212,255,195,3,13,2,213,255,215,3,13,2,217,255,195,3,13,2,219,255,195,3,13,2,221,255,195,3,13,2,229,255,195,3,13,2,230,255,215,3,13,2,247,255,195,3,13,2,249,255,195,3,13,2,251,255,195,3,13,2,253,255,195,3,13,2,254,255,215,3,13,3,5,255,195,3,13,3,6,255,215,3,13,3,7,255,195,3,13,3,8,255,215,3,13,3,13,255,215,3,13,3,14,255,215,3,13,3,15,255,215,3,13,3,16,255,215,3,13,3,23,255,174,3,13,3,24,255,195,3,14,0,5,255,154,3,14,0,10,255,154,3,14,1,208,255,215,3,14,1,220,255,195,3,14,1,221,255,215,3,14,1,223,255,215,3,14,1,225,255,215,3,14,1,228,255,195,3,14,1,246,255,215,3,14,2,7,255,154,3,14,2,11,255,154,3,14,2,160,255,215,3,14,2,170,255,195,3,14,2,182,255,195,3,14,2,188,255,215,3,14,2,190,255,195,3,14,2,192,255,215,3,14,2,194,255,215,3,14,2,203,255,215,3,14,2,213,255,215,3,14,2,230,255,215,3,14,2,248,255,215,3,14,2,250,255,215,3,14,2,252,255,215,3,14,2,254,255,215,3,14,3,6,255,215,3,14,3,8,255,215,3,14,3,14,255,154,3,14,3,16,255,154,3,14,3,24,255,195,3,15,1,163,0,225,3,15,2,234,0,41,3,15,3,14,255,215,3,15,3,16,255,215,3,16,0,5,255,236,3,16,0,10,255,236,3,16,2,7,255,236,3,16,2,11,255,236,3,17,0,5,255,154,3,17,0,10,255,154,3,17,1,157,255,174,3,17,1,166,255,174,3,17,1,168,255,195,3,17,1,170,255,195,3,17,1,176,255,195,3,17,1,188,255,113,3,17,1,189,255,195,3,17,1,191,255,195,3,17,1,193,255,195,3,17,1,196,255,174,3,17,1,208,255,215,3,17,1,220,255,195,3,17,1,223,255,215,3,17,1,225,255,215,3,17,1,228,255,195,3,17,2,7,255,154,3,17,2,11,255,154,3,17,2,114,255,195,3,17,2,118,255,215,3,17,2,124,255,195,3,17,2,128,255,195,3,17,2,130,255,195,3,17,2,159,255,195,3,17,2,160,255,215,3,17,2,169,255,174,3,17,2,170,255,195,3,17,2,181,255,113,3,17,2,182,255,195,3,17,2,183,255,195,3,17,2,185,255,195,3,17,2,187,255,195,3,17,2,188,255,215,3,17,2,189,255,174,3,17,2,190,255,195,3,17,2,191,255,195,3,17,2,192,255,215,3,17,2,193,255,195,3,17,2,194,255,215,3,17,2,202,255,195,3,17,2,203,255,215,3,17,2,212,255,195,3,17,2,213,255,215,3,17,2,217,255,195,3,17,2,219,255,195,3,17,2,221,255,195,3,17,2,229,255,195,3,17,2,230,255,215,3,17,2,247,255,195,3,17,2,249,255,195,3,17,2,251,255,195,3,17,2,253,255,195,3,17,2,254,255,215,3,17,3,5,255,195,3,17,3,6,255,215,3,17,3,7,255,195,3,17,3,8,255,215,3,17,3,13,255,215,3,17,3,14,255,215,3,17,3,15,255,215,3,17,3,16,255,215,3,17,3,23,255,174,3,17,3,24,255,195,3,18,0,5,255,154,3,18,0,10,255,154,3,18,1,208,255,215,3,18,1,220,255,195,3,18,1,221,255,215,3,18,1,223,255,215,3,18,1,225,255,215,3,18,1,228,255,195,3,18,1,246,255,215,3,18,2,7,255,154,3,18,2,11,255,154,3,18,2,160,255,215,3,18,2,170,255,195,3,18,2,182,255,195,3,18,2,188,255,215,3,18,2,190,255,195,3,18,2,192,255,215,3,18,2,194,255,215,3,18,2,203,255,215,3,18,2,213,255,215,3,18,2,230,255,215,3,18,2,248,255,215,3,18,2,250,255,215,3,18,2,252,255,215,3,18,2,254,255,215,3,18,3,6,255,215,3,18,3,8,255,215,3,18,3,14,255,154,3,18,3,16,255,154,3,18,3,24,255,195,3,19,0,5,255,154,3,19,0,10,255,154,3,19,1,157,255,174,3,19,1,166,255,174,3,19,1,168,255,195,3,19,1,170,255,195,3,19,1,176,255,195,3,19,1,188,255,113,3,19,1,189,255,195,3,19,1,191,255,195,3,19,1,193,255,195,3,19,1,196,255,174,3,19,1,208,255,215,3,19,1,220,255,195,3,19,1,223,255,215,3,19,1,225,255,215,3,19,1,228,255,195,3,19,2,7,255,154,3,19,2,11,255,154,3,19,2,114,255,195,3,19,2,118,255,215,3,19,2,124,255,195,3,19,2,128,255,195,3,19,2,130,255,195,3,19,2,159,255,195,3,19,2,160,255,215,3,19,2,169,255,174,3,19,2,170,255,195,3,19,2,181,255,113,3,19,2,182,255,195,3,19,2,183,255,195,3,19,2,185,255,195,3,19,2,187,255,195,3,19,2,188,255,215,3,19,2,189,255,174,3,19,2,190,255,195,3,19,2,191,255,195,3,19,2,192,255,215,3,19,2,193,255,195,3,19,2,194,255,215,3,19,2,202,255,195,3,19,2,203,255,215,3,19,2,212,255,195,3,19,2,213,255,215,3,19,2,217,255,195,3,19,2,219,255,195,3,19,2,221,255,195,3,19,2,229,255,195,3,19,2,230,255,215,3,19,2,247,255,195,3,19,2,249,255,195,3,19,2,251,255,195,3,19,2,253,255,195,3,19,2,254,255,215,3,19,3,5,255,195,3,19,3,6,255,215,3,19,3,7,255,195,3,19,3,8,255,215,3,19,3,13,255,215,3,19,3,14,255,215,3,19,3,15,255,215,3,19,3,16,255,215,3,19,3,23,255,174,3,19,3,24,255,195,3,20,0,5,255,154,3,20,0,10,255,154,3,20,1,208,255,215,3,20,1,220,255,195,3,20,1,221,255,215,3,20,1,223,255,215,3,20,1,225,255,215,3,20,1,228,255,195,3,20,1,246,255,215,3,20,2,7,255,154,3,20,2,11,255,154,3,20,2,160,255,215,3,20,2,170,255,195,3,20,2,182,255,195,3,20,2,188,255,215,3,20,2,190,255,195,3,20,2,192,255,215,3,20,2,194,255,215,3,20,2,203,255,215,3,20,2,213,255,215,3,20,2,230,255,215,3,20,2,248,255,215,3,20,2,250,255,215,3,20,2,252,255,215,3,20,2,254,255,215,3,20,3,6,255,215,3,20,3,8,255,215,3,20,3,14,255,154,3,20,3,16,255,154,3,20,3,24,255,195,3,21,0,15,255,174,3,21,0,17,255,174,3,21,1,170,255,236,3,21,1,176,255,215,3,21,1,188,255,215,3,21,1,191,255,215,3,21,2,8,255,174,3,21,2,12,255,174,3,21,2,114,255,236,3,21,2,128,255,236,3,21,2,130,255,236,3,21,2,159,255,215,3,21,2,181,255,215,3,21,2,183,255,236,3,21,2,185,255,236,3,21,2,187,255,215,3,21,2,202,255,215,3,21,2,217,255,236,3,21,2,219,255,236,3,21,2,221,255,236,3,21,2,229,255,215,3,21,3,5,255,215,3,21,3,7,255,215,3,22,0,5,255,215,3,22,0,10,255,215,3,22,1,208,255,236,3,22,1,221,255,236,3,22,1,223,255,236,3,22,1,246,255,236,3,22,2,7,255,215,3,22,2,11,255,215,3,22,2,160,255,236,3,22,2,188,255,236,3,22,2,203,255,236,3,22,2,230,255,236,3,22,2,248,255,236,3,22,2,250,255,236,3,22,2,252,255,236,3,22,3,6,255,236,3,22,3,8,255,236,3,22,3,14,255,215,3,22,3,16,255,215,3,23,0,5,255,174,3,23,0,10,255,174,3,23,1,157,255,195,3,23,1,166,255,195,3,23,1,170,255,215,3,23,1,176,255,215,3,23,1,188,255,195,3,23,1,191,255,215,3,23,1,193,255,215,3,23,1,196,255,195,3,23,1,220,255,215,3,23,1,228,255,215,3,23,2,7,255,174,3,23,2,11,255,174,3,23,2,114,255,215,3,23,2,124,255,215,3,23,2,128,255,215,3,23,2,130,255,215,3,23,2,159,255,215,3,23,2,169,255,195,3,23,2,170,255,215,3,23,2,181,255,195,3,23,2,182,255,215,3,23,2,183,255,215,3,23,2,185,255,215,3,23,2,187,255,215,3,23,2,189,255,195,3,23,2,190,255,215,3,23,2,191,255,215,3,23,2,193,255,215,3,23,2,202,255,215,3,23,2,212,255,215,3,23,2,217,255,215,3,23,2,219,255,215,3,23,2,221,255,215,3,23,2,229,255,215,3,23,2,253,255,215,3,23,3,5,255,215,3,23,3,7,255,215,3,23,3,13,255,215,3,23,3,15,255,215,3,23,3,23,255,195,3,23,3,24,255,215,3,24,0,5,255,154,3,24,0,10,255,154,3,24,1,208,255,215,3,24,1,220,255,195,3,24,1,221,255,215,3,24,1,223,255,215,3,24,1,225,255,215,3,24,1,228,255,195,3,24,1,246,255,215,3,24,2,7,255,154,3,24,2,11,255,154,3,24,2,160,255,215,3,24,2,170,255,195,3,24,2,182,255,195,3,24,2,188,255,215,3,24,2,190,255,195,3,24,2,192,255,215,3,24,2,194,255,215,3,24,2,203,255,215,3,24,2,213,255,215,3,24,2,230,255,215,3,24,2,248,255,215,3,24,2,250,255,215,3,24,2,252,255,215,3,24,2,254,255,215,3,24,3,6,255,215,3,24,3,8,255,215,3,24,3,14,255,154,3,24,3,16,255,154,3,24,3,24,255,195,3,25,1,225,255,215,3,25,2,192,255,215,3,25,2,194,255,215,3,25,2,213,255,215,3,25,2,254,255,215,3,27,1,163,0,225,3,27,2,234,0,41,3,27,3,14,255,215,3,27,3,16,255,215,3,28,0,5,255,236,3,28,0,10,255,236,3,28,2,7,255,236,3,28,2,11,255,236,3,29,0,5,255,113,3,29,0,10,255,113,3,29,0,38,255,215,3,29,0,42,255,215,3,29,0,45,1,10,3,29,0,50,255,215,3,29,0,52,255,215,3,29,0,55,255,113,3,29,0,57,255,174,3,29,0,58,255,174,3,29,0,60,255,133,3,29,0,137,255,215,3,29,0,148,255,215,3,29,0,149,255,215,3,29,0,150,255,215,3,29,0,151,255,215,3,29,0,152,255,215,3,29,0,154,255,215,3,29,0,159,255,133,3,29,0,200,255,215,3,29,0,202,255,215,3,29,0,204,255,215,3,29,0,206,255,215,3,29,0,222,255,215,3,29,0,224,255,215,3,29,0,226,255,215,3,29,0,228,255,215,3,29,1,14,255,215,3,29,1,16,255,215,3,29,1,18,255,215,3,29,1,20,255,215,3,29,1,36,255,113,3,29,1,38,255,113,3,29,1,54,255,174,3,29,1,56,255,133,3,29,1,58,255,133,3,29,1,71,255,215,3,29,1,250,255,174,3,29,1,252,255,174,3,29,1,254,255,174,3,29,2,0,255,133,3,29,2,7,255,113,3,29,2,11,255,113,3,29,2,95,255,215,3,29,3,73,255,215,3,29,3,75,255,215,3,29,3,77,255,215,3,29,3,79,255,215,3,29,3,81,255,215,3,29,3,83,255,215,3,29,3,85,255,215,3,29,3,87,255,215,3,29,3,89,255,215,3,29,3,91,255,215,3,29,3,93,255,215,3,29,3,95,255,215,3,29,3,111,255,133,3,29,3,113,255,133,3,29,3,115,255,133,3,29,3,143,255,113,3,30,0,5,255,236,3,30,0,10,255,236,3,30,2,7,255,236,3,30,2,11,255,236,3,31,0,5,255,113,3,31,0,10,255,113,3,31,0,38,255,215,3,31,0,42,255,215,3,31,0,45,1,10,3,31,0,50,255,215,3,31,0,52,255,215,3,31,0,55,255,113,3,31,0,57,255,174,3,31,0,58,255,174,3,31,0,60,255,133,3,31,0,137,255,215,3,31,0,148,255,215,3,31,0,149,255,215,3,31,0,150,255,215,3,31,0,151,255,215,3,31,0,152,255,215,3,31,0,154,255,215,3,31,0,159,255,133,3,31,0,200,255,215,3,31,0,202,255,215,3,31,0,204,255,215,3,31,0,206,255,215,3,31,0,222,255,215,3,31,0,224,255,215,3,31,0,226,255,215,3,31,0,228,255,215,3,31,1,14,255,215,3,31,1,16,255,215,3,31,1,18,255,215,3,31,1,20,255,215,3,31,1,36,255,113,3,31,1,38,255,113,3,31,1,54,255,174,3,31,1,56,255,133,3,31,1,58,255,133,3,31,1,71,255,215,3,31,1,250,255,174,3,31,1,252,255,174,3,31,1,254,255,174,3,31,2,0,255,133,3,31,2,7,255,113,3,31,2,11,255,113,3,31,2,95,255,215,3,31,3,73,255,215,3,31,3,75,255,215,3,31,3,77,255,215,3,31,3,79,255,215,3,31,3,81,255,215,3,31,3,83,255,215,3,31,3,85,255,215,3,31,3,87,255,215,3,31,3,89,255,215,3,31,3,91,255,215,3,31,3,93,255,215,3,31,3,95,255,215,3,31,3,111,255,133,3,31,3,113,255,133,3,31,3,115,255,133,3,31,3,143,255,113,3,32,0,5,255,236,3,32,0,10,255,236,3,32,2,7,255,236,3,32,2,11,255,236,3,33,0,5,255,113,3,33,0,10,255,113,3,33,0,38,255,215,3,33,0,42,255,215,3,33,0,45,1,10,3,33,0,50,255,215,3,33,0,52,255,215,3,33,0,55,255,113,3,33,0,57,255,174,3,33,0,58,255,174,3,33,0,60,255,133,3,33,0,137,255,215,3,33,0,148,255,215,3,33,0,149,255,215,3,33,0,150,255,215,3,33,0,151,255,215,3,33,0,152,255,215,3,33,0,154,255,215,3,33,0,159,255,133,3,33,0,200,255,215,3,33,0,202,255,215,3,33,0,204,255,215,3,33,0,206,255,215,3,33,0,222,255,215,3,33,0,224,255,215,3,33,0,226,255,215,3,33,0,228,255,215,3,33,1,14,255,215,3,33,1,16,255,215,3,33,1,18,255,215,3,33,1,20,255,215,3,33,1,36,255,113,3,33,1,38,255,113,3,33,1,54,255,174,3,33,1,56,255,133,3,33,1,58,255,133,3,33,1,71,255,215,3,33,1,250,255,174,3,33,1,252,255,174,3,33,1,254,255,174,3,33,2,0,255,133,3,33,2,7,255,113,3,33,2,11,255,113,3,33,2,95,255,215,3,33,3,73,255,215,3,33,3,75,255,215,3,33,3,77,255,215,3,33,3,79,255,215,3,33,3,81,255,215,3,33,3,83,255,215,3,33,3,85,255,215,3,33,3,87,255,215,3,33,3,89,255,215,3,33,3,91,255,215,3,33,3,93,255,215,3,33,3,95,255,215,3,33,3,111,255,133,3,33,3,113,255,133,3,33,3,115,255,133,3,33,3,143,255,113,3,34,0,5,255,236,3,34,0,10,255,236,3,34,2,7,255,236,3,34,2,11,255,236,3,35,0,5,255,113,3,35,0,10,255,113,3,35,0,38,255,215,3,35,0,42,255,215,3,35,0,45,1,10,3,35,0,50,255,215,3,35,0,52,255,215,3,35,0,55,255,113,3,35,0,57,255,174,3,35,0,58,255,174,3,35,0,60,255,133,3,35,0,137,255,215,3,35,0,148,255,215,3,35,0,149,255,215,3,35,0,150,255,215,3,35,0,151,255,215,3,35,0,152,255,215,3,35,0,154,255,215,3,35,0,159,255,133,3,35,0,200,255,215,3,35,0,202,255,215,3,35,0,204,255,215,3,35,0,206,255,215,3,35,0,222,255,215,3,35,0,224,255,215,3,35,0,226,255,215,3,35,0,228,255,215,3,35,1,14,255,215,3,35,1,16,255,215,3,35,1,18,255,215,3,35,1,20,255,215,3,35,1,36,255,113,3,35,1,38,255,113,3,35,1,54,255,174,3,35,1,56,255,133,3,35,1,58,255,133,3,35,1,71,255,215,3,35,1,250,255,174,3,35,1,252,255,174,3,35,1,254,255,174,3,35,2,0,255,133,3,35,2,7,255,113,3,35,2,11,255,113,3,35,2,95,255,215,3,35,3,73,255,215,3,35,3,75,255,215,3,35,3,77,255,215,3,35,3,79,255,215,3,35,3,81,255,215,3,35,3,83,255,215,3,35,3,85,255,215,3,35,3,87,255,215,3,35,3,89,255,215,3,35,3,91,255,215,3,35,3,93,255,215,3,35,3,95,255,215,3,35,3,111,255,133,3,35,3,113,255,133,3,35,3,115,255,133,3,35,3,143,255,113,3,36,0,5,255,236,3,36,0,10,255,236,3,36,2,7,255,236,3,36,2,11,255,236,3,37,0,5,255,113,3,37,0,10,255,113,3,37,0,38,255,215,3,37,0,42,255,215,3,37,0,45,1,10,3,37,0,50,255,215,3,37,0,52,255,215,3,37,0,55,255,113,3,37,0,57,255,174,3,37,0,58,255,174,3,37,0,60,255,133,3,37,0,137,255,215,3,37,0,148,255,215,3,37,0,149,255,215,3,37,0,150,255,215,3,37,0,151,255,215,3,37,0,152,255,215,3,37,0,154,255,215,3,37,0,159,255,133,3,37,0,200,255,215,3,37,0,202,255,215,3,37,0,204,255,215,3,37,0,206,255,215,3,37,0,222,255,215,3,37,0,224,255,215,3,37,0,226,255,215,3,37,0,228,255,215,3,37,1,14,255,215,3,37,1,16,255,215,3,37,1,18,255,215,3,37,1,20,255,215,3,37,1,36,255,113,3,37,1,38,255,113,3,37,1,54,255,174,3,37,1,56,255,133,3,37,1,58,255,133,3,37,1,71,255,215,3,37,1,250,255,174,3,37,1,252,255,174,3,37,1,254,255,174,3,37,2,0,255,133,3,37,2,7,255,113,3,37,2,11,255,113,3,37,2,95,255,215,3,37,3,73,255,215,3,37,3,75,255,215,3,37,3,77,255,215,3,37,3,79,255,215,3,37,3,81,255,215,3,37,3,83,255,215,3,37,3,85,255,215,3,37,3,87,255,215,3,37,3,89,255,215,3,37,3,91,255,215,3,37,3,93,255,215,3,37,3,95,255,215,3,37,3,111,255,133,3,37,3,113,255,133,3,37,3,115,255,133,3,37,3,143,255,113,3,38,0,5,255,236,3,38,0,10,255,236,3,38,2,7,255,236,3,38,2,11,255,236,3,39,0,5,255,113,3,39,0,10,255,113,3,39,0,38,255,215,3,39,0,42,255,215,3,39,0,45,1,10,3,39,0,50,255,215,3,39,0,52,255,215,3,39,0,55,255,113,3,39,0,57,255,174,3,39,0,58,255,174,3,39,0,60,255,133,3,39,0,137,255,215,3,39,0,148,255,215,3,39,0,149,255,215,3,39,0,150,255,215,3,39,0,151,255,215,3,39,0,152,255,215,3,39,0,154,255,215,3,39,0,159,255,133,3,39,0,200,255,215,3,39,0,202,255,215,3,39,0,204,255,215,3,39,0,206,255,215,3,39,0,222,255,215,3,39,0,224,255,215,3,39,0,226,255,215,3,39,0,228,255,215,3,39,1,14,255,215,3,39,1,16,255,215,3,39,1,18,255,215,3,39,1,20,255,215,3,39,1,36,255,113,3,39,1,38,255,113,3,39,1,54,255,174,3,39,1,56,255,133,3,39,1,58,255,133,3,39,1,71,255,215,3,39,1,250,255,174,3,39,1,252,255,174,3,39,1,254,255,174,3,39,2,0,255,133,3,39,2,7,255,113,3,39,2,11,255,113,3,39,2,95,255,215,3,39,3,73,255,215,3,39,3,75,255,215,3,39,3,77,255,215,3,39,3,79,255,215,3,39,3,81,255,215,3,39,3,83,255,215,3,39,3,85,255,215,3,39,3,87,255,215,3,39,3,89,255,215,3,39,3,91,255,215,3,39,3,93,255,215,3,39,3,95,255,215,3,39,3,111,255,133,3,39,3,113,255,133,3,39,3,115,255,133,3,39,3,143,255,113,3,40,0,5,255,236,3,40,0,10,255,236,3,40,2,7,255,236,3,40,2,11,255,236,3,41,0,5,255,113,3,41,0,10,255,113,3,41,0,38,255,215,3,41,0,42,255,215,3,41,0,45,1,10,3,41,0,50,255,215,3,41,0,52,255,215,3,41,0,55,255,113,3,41,0,57,255,174,3,41,0,58,255,174,3,41,0,60,255,133,3,41,0,137,255,215,3,41,0,148,255,215,3,41,0,149,255,215,3,41,0,150,255,215,3,41,0,151,255,215,3,41,0,152,255,215,3,41,0,154,255,215,3,41,0,159,255,133,3,41,0,200,255,215,3,41,0,202,255,215,3,41,0,204,255,215,3,41,0,206,255,215,3,41,0,222,255,215,3,41,0,224,255,215,3,41,0,226,255,215,3,41,0,228,255,215,3,41,1,14,255,215,3,41,1,16,255,215,3,41,1,18,255,215,3,41,1,20,255,215,3,41,1,36,255,113,3,41,1,38,255,113,3,41,1,54,255,174,3,41,1,56,255,133,3,41,1,58,255,133,3,41,1,71,255,215,3,41,1,250,255,174,3,41,1,252,255,174,3,41,1,254,255,174,3,41,2,0,255,133,3,41,2,7,255,113,3,41,2,11,255,113,3,41,2,95,255,215,3,41,3,73,255,215,3,41,3,75,255,215,3,41,3,77,255,215,3,41,3,79,255,215,3,41,3,81,255,215,3,41,3,83,255,215,3,41,3,85,255,215,3,41,3,87,255,215,3,41,3,89,255,215,3,41,3,91,255,215,3,41,3,93,255,215,3,41,3,95,255,215,3,41,3,111,255,133,3,41,3,113,255,133,3,41,3,115,255,133,3,41,3,143,255,113,3,42,0,5,255,236,3,42,0,10,255,236,3,42,2,7,255,236,3,42,2,11,255,236,3,43,0,5,255,113,3,43,0,10,255,113,3,43,0,38,255,215,3,43,0,42,255,215,3,43,0,45,1,10,3,43,0,50,255,215,3,43,0,52,255,215,3,43,0,55,255,113,3,43,0,57,255,174,3,43,0,58,255,174,3,43,0,60,255,133,3,43,0,137,255,215,3,43,0,148,255,215,3,43,0,149,255,215,3,43,0,150,255,215,3,43,0,151,255,215,3,43,0,152,255,215,3,43,0,154,255,215,3,43,0,159,255,133,3,43,0,200,255,215,3,43,0,202,255,215,3,43,0,204,255,215,3,43,0,206,255,215,3,43,0,222,255,215,3,43,0,224,255,215,3,43,0,226,255,215,3,43,0,228,255,215,3,43,1,14,255,215,3,43,1,16,255,215,3,43,1,18,255,215,3,43,1,20,255,215,3,43,1,36,255,113,3,43,1,38,255,113,3,43,1,54,255,174,3,43,1,56,255,133,3,43,1,58,255,133,3,43,1,71,255,215,3,43,1,250,255,174,3,43,1,252,255,174,3,43,1,254,255,174,3,43,2,0,255,133,3,43,2,7,255,113,3,43,2,11,255,113,3,43,2,95,255,215,3,43,3,73,255,215,3,43,3,75,255,215,3,43,3,77,255,215,3,43,3,79,255,215,3,43,3,81,255,215,3,43,3,83,255,215,3,43,3,85,255,215,3,43,3,87,255,215,3,43,3,89,255,215,3,43,3,91,255,215,3,43,3,93,255,215,3,43,3,95,255,215,3,43,3,111,255,133,3,43,3,113,255,133,3,43,3,115,255,133,3,43,3,143,255,113,3,44,0,5,255,236,3,44,0,10,255,236,3,44,2,7,255,236,3,44,2,11,255,236,3,45,0,5,255,113,3,45,0,10,255,113,3,45,0,38,255,215,3,45,0,42,255,215,3,45,0,45,1,10,3,45,0,50,255,215,3,45,0,52,255,215,3,45,0,55,255,113,3,45,0,57,255,174,3,45,0,58,255,174,3,45,0,60,255,133,3,45,0,137,255,215,3,45,0,148,255,215,3,45,0,149,255,215,3,45,0,150,255,215,3,45,0,151,255,215,3,45,0,152,255,215,3,45,0,154,255,215,3,45,0,159,255,133,3,45,0,200,255,215,3,45,0,202,255,215,3,45,0,204,255,215,3,45,0,206,255,215,3,45,0,222,255,215,3,45,0,224,255,215,3,45,0,226,255,215,3,45,0,228,255,215,3,45,1,14,255,215,3,45,1,16,255,215,3,45,1,18,255,215,3,45,1,20,255,215,3,45,1,36,255,113,3,45,1,38,255,113,3,45,1,54,255,174,3,45,1,56,255,133,3,45,1,58,255,133,3,45,1,71,255,215,3,45,1,250,255,174,3,45,1,252,255,174,3,45,1,254,255,174,3,45,2,0,255,133,3,45,2,7,255,113,3,45,2,11,255,113,3,45,2,95,255,215,3,45,3,73,255,215,3,45,3,75,255,215,3,45,3,77,255,215,3,45,3,79,255,215,3,45,3,81,255,215,3,45,3,83,255,215,3,45,3,85,255,215,3,45,3,87,255,215,3,45,3,89,255,215,3,45,3,91,255,215,3,45,3,93,255,215,3,45,3,95,255,215,3,45,3,111,255,133,3,45,3,113,255,133,3,45,3,115,255,133,3,45,3,143,255,113,3,46,0,5,255,236,3,46,0,10,255,236,3,46,2,7,255,236,3,46,2,11,255,236,3,47,0,5,255,113,3,47,0,10,255,113,3,47,0,38,255,215,3,47,0,42,255,215,3,47,0,45,1,10,3,47,0,50,255,215,3,47,0,52,255,215,3,47,0,55,255,113,3,47,0,57,255,174,3,47,0,58,255,174,3,47,0,60,255,133,3,47,0,137,255,215,3,47,0,148,255,215,3,47,0,149,255,215,3,47,0,150,255,215,3,47,0,151,255,215,3,47,0,152,255,215,3,47,0,154,255,215,3,47,0,159,255,133,3,47,0,200,255,215,3,47,0,202,255,215,3,47,0,204,255,215,3,47,0,206,255,215,3,47,0,222,255,215,3,47,0,224,255,215,3,47,0,226,255,215,3,47,0,228,255,215,3,47,1,14,255,215,3,47,1,16,255,215,3,47,1,18,255,215,3,47,1,20,255,215,3,47,1,36,255,113,3,47,1,38,255,113,3,47,1,54,255,174,3,47,1,56,255,133,3,47,1,58,255,133,3,47,1,71,255,215,3,47,1,250,255,174,3,47,1,252,255,174,3,47,1,254,255,174,3,47,2,0,255,133,3,47,2,7,255,113,3,47,2,11,255,113,3,47,2,95,255,215,3,47,3,73,255,215,3,47,3,75,255,215,3,47,3,77,255,215,3,47,3,79,255,215,3,47,3,81,255,215,3,47,3,83,255,215,3,47,3,85,255,215,3,47,3,87,255,215,3,47,3,89,255,215,3,47,3,91,255,215,3,47,3,93,255,215,3,47,3,95,255,215,3,47,3,111,255,133,3,47,3,113,255,133,3,47,3,115,255,133,3,47,3,143,255,113,3,48,0,5,255,236,3,48,0,10,255,236,3,48,2,7,255,236,3,48,2,11,255,236,3,49,0,5,255,113,3,49,0,10,255,113,3,49,0,38,255,215,3,49,0,42,255,215,3,49,0,45,1,10,3,49,0,50,255,215,3,49,0,52,255,215,3,49,0,55,255,113,3,49,0,57,255,174,3,49,0,58,255,174,3,49,0,60,255,133,3,49,0,137,255,215,3,49,0,148,255,215,3,49,0,149,255,215,3,49,0,150,255,215,3,49,0,151,255,215,3,49,0,152,255,215,3,49,0,154,255,215,3,49,0,159,255,133,3,49,0,200,255,215,3,49,0,202,255,215,3,49,0,204,255,215,3,49,0,206,255,215,3,49,0,222,255,215,3,49,0,224,255,215,3,49,0,226,255,215,3,49,0,228,255,215,3,49,1,14,255,215,3,49,1,16,255,215,3,49,1,18,255,215,3,49,1,20,255,215,3,49,1,36,255,113,3,49,1,38,255,113,3,49,1,54,255,174,3,49,1,56,255,133,3,49,1,58,255,133,3,49,1,71,255,215,3,49,1,250,255,174,3,49,1,252,255,174,3,49,1,254,255,174,3,49,2,0,255,133,3,49,2,7,255,113,3,49,2,11,255,113,3,49,2,95,255,215,3,49,3,73,255,215,3,49,3,75,255,215,3,49,3,77,255,215,3,49,3,79,255,215,3,49,3,81,255,215,3,49,3,83,255,215,3,49,3,85,255,215,3,49,3,87,255,215,3,49,3,89,255,215,3,49,3,91,255,215,3,49,3,93,255,215,3,49,3,95,255,215,3,49,3,111,255,133,3,49,3,113,255,133,3,49,3,115,255,133,3,49,3,143,255,113,3,50,0,5,255,236,3,50,0,10,255,236,3,50,2,7,255,236,3,50,2,11,255,236,3,51,0,5,255,113,3,51,0,10,255,113,3,51,0,38,255,215,3,51,0,42,255,215,3,51,0,45,1,10,3,51,0,50,255,215,3,51,0,52,255,215,3,51,0,55,255,113,3,51,0,57,255,174,3,51,0,58,255,174,3,51,0,60,255,133,3,51,0,137,255,215,3,51,0,148,255,215,3,51,0,149,255,215,3,51,0,150,255,215,3,51,0,151,255,215,3,51,0,152,255,215,3,51,0,154,255,215,3,51,0,159,255,133,3,51,0,200,255,215,3,51,0,202,255,215,3,51,0,204,255,215,3,51,0,206,255,215,3,51,0,222,255,215,3,51,0,224,255,215,3,51,0,226,255,215,3,51,0,228,255,215,3,51,1,14,255,215,3,51,1,16,255,215,3,51,1,18,255,215,3,51,1,20,255,215,3,51,1,36,255,113,3,51,1,38,255,113,3,51,1,54,255,174,3,51,1,56,255,133,3,51,1,58,255,133,3,51,1,71,255,215,3,51,1,250,255,174,3,51,1,252,255,174,3,51,1,254,255,174,3,51,2,0,255,133,3,51,2,7,255,113,3,51,2,11,255,113,3,51,2,95,255,215,3,51,3,73,255,215,3,51,3,75,255,215,3,51,3,77,255,215,3,51,3,79,255,215,3,51,3,81,255,215,3,51,3,83,255,215,3,51,3,85,255,215,3,51,3,87,255,215,3,51,3,89,255,215,3,51,3,91,255,215,3,51,3,93,255,215,3,51,3,95,255,215,3,51,3,111,255,133,3,51,3,113,255,133,3,51,3,115,255,133,3,51,3,143,255,113,3,52,0,5,255,236,3,52,0,10,255,236,3,52,2,7,255,236,3,52,2,11,255,236,3,53,0,45,0,123,3,54,0,5,255,236,3,54,0,10,255,236,3,54,0,89,255,215,3,54,0,90,255,215,3,54,0,91,255,215,3,54,0,92,255,215,3,54,0,93,255,236,3,54,0,191,255,215,3,54,1,55,255,215,3,54,1,60,255,236,3,54,1,62,255,236,3,54,1,64,255,236,3,54,1,251,255,215,3,54,1,253,255,215,3,54,2,7,255,236,3,54,2,11,255,236,3,54,3,112,255,215,3,55,0,45,0,123,3,56,0,5,255,236,3,56,0,10,255,236,3,56,0,89,255,215,3,56,0,90,255,215,3,56,0,91,255,215,3,56,0,92,255,215,3,56,0,93,255,236,3,56,0,191,255,215,3,56,1,55,255,215,3,56,1,60,255,236,3,56,1,62,255,236,3,56,1,64,255,236,3,56,1,251,255,215,3,56,1,253,255,215,3,56,2,7,255,236,3,56,2,11,255,236,3,56,3,112,255,215,3,57,0,45,0,123,3,58,0,5,255,236,3,58,0,10,255,236,3,58,0,89,255,215,3,58,0,90,255,215,3,58,0,91,255,215,3,58,0,92,255,215,3,58,0,93,255,236,3,58,0,191,255,215,3,58,1,55,255,215,3,58,1,60,255,236,3,58,1,62,255,236,3,58,1,64,255,236,3,58,1,251,255,215,3,58,1,253,255,215,3,58,2,7,255,236,3,58,2,11,255,236,3,58,3,112,255,215,3,59,0,45,0,123,3,60,0,5,255,236,3,60,0,10,255,236,3,60,0,89,255,215,3,60,0,90,255,215,3,60,0,91,255,215,3,60,0,92,255,215,3,60,0,93,255,236,3,60,0,191,255,215,3,60,1,55,255,215,3,60,1,60,255,236,3,60,1,62,255,236,3,60,1,64,255,236,3,60,1,251,255,215,3,60,1,253,255,215,3,60,2,7,255,236,3,60,2,11,255,236,3,60,3,112,255,215,3,61,0,45,0,123,3,62,0,5,255,236,3,62,0,10,255,236,3,62,0,89,255,215,3,62,0,90,255,215,3,62,0,91,255,215,3,62,0,92,255,215,3,62,0,93,255,236,3,62,0,191,255,215,3,62,1,55,255,215,3,62,1,60,255,236,3,62,1,62,255,236,3,62,1,64,255,236,3,62,1,251,255,215,3,62,1,253,255,215,3,62,2,7,255,236,3,62,2,11,255,236,3,62,3,112,255,215,3,63,0,45,0,123,3,64,0,5,255,236,3,64,0,10,255,236,3,64,0,89,255,215,3,64,0,90,255,215,3,64,0,91,255,215,3,64,0,92,255,215,3,64,0,93,255,236,3,64,0,191,255,215,3,64,1,55,255,215,3,64,1,60,255,236,3,64,1,62,255,236,3,64,1,64,255,236,3,64,1,251,255,215,3,64,1,253,255,215,3,64,2,7,255,236,3,64,2,11,255,236,3,64,3,112,255,215,3,65,0,45,0,123,3,66,0,5,255,236,3,66,0,10,255,236,3,66,0,89,255,215,3,66,0,90,255,215,3,66,0,91,255,215,3,66,0,92,255,215,3,66,0,93,255,236,3,66,0,191,255,215,3,66,1,55,255,215,3,66,1,60,255,236,3,66,1,62,255,236,3,66,1,64,255,236,3,66,1,251,255,215,3,66,1,253,255,215,3,66,2,7,255,236,3,66,2,11,255,236,3,66,3,112,255,215,3,67,0,45,0,123,3,68,0,5,255,236,3,68,0,10,255,236,3,68,0,89,255,215,3,68,0,90,255,215,3,68,0,91,255,215,3,68,0,92,255,215,3,68,0,93,255,236,3,68,0,191,255,215,3,68,1,55,255,215,3,68,1,60,255,236,3,68,1,62,255,236,3,68,1,64,255,236,3,68,1,251,255,215,3,68,1,253,255,215,3,68,2,7,255,236,3,68,2,11,255,236,3,68,3,112,255,215,3,73,0,15,255,174,3,73,0,17,255,174,3,73,0,36,255,215,3,73,0,55,255,195,3,73,0,57,255,236,3,73,0,58,255,236,3,73,0,59,255,215,3,73,0,60,255,236,3,73,0,61,255,236,3,73,0,130,255,215,3,73,0,131,255,215,3,73,0,132,255,215,3,73,0,133,255,215,3,73,0,134,255,215,3,73,0,135,255,215,3,73,0,159,255,236,3,73,0,194,255,215,3,73,0,196,255,215,3,73,0,198,255,215,3,73,1,36,255,195,3,73,1,38,255,195,3,73,1,54,255,236,3,73,1,56,255,236,3,73,1,58,255,236,3,73,1,59,255,236,3,73,1,61,255,236,3,73,1,63,255,236,3,73,1,67,255,215,3,73,1,160,255,236,3,73,1,250,255,236,3,73,1,252,255,236,3,73,1,254,255,236,3,73,2,0,255,236,3,73,2,8,255,174,3,73,2,12,255,174,3,73,2,88,255,215,3,73,3,29,255,215,3,73,3,31,255,215,3,73,3,33,255,215,3,73,3,35,255,215,3,73,3,37,255,215,3,73,3,39,255,215,3,73,3,41,255,215,3,73,3,43,255,215,3,73,3,45,255,215,3,73,3,47,255,215,3,73,3,49,255,215,3,73,3,51,255,215,3,73,3,111,255,236,3,73,3,113,255,236,3,73,3,115,255,236,3,73,3,143,255,195,3,74,0,5,255,236,3,74,0,10,255,236,3,74,0,89,255,215,3,74,0,90,255,215,3,74,0,91,255,215,3,74,0,92,255,215,3,74,0,93,255,236,3,74,0,191,255,215,3,74,1,55,255,215,3,74,1,60,255,236,3,74,1,62,255,236,3,74,1,64,255,236,3,74,1,251,255,215,3,74,1,253,255,215,3,74,2,7,255,236,3,74,2,11,255,236,3,74,3,112,255,215,3,75,0,15,255,174,3,75,0,17,255,174,3,75,0,36,255,215,3,75,0,55,255,195,3,75,0,57,255,236,3,75,0,58,255,236,3,75,0,59,255,215,3,75,0,60,255,236,3,75,0,61,255,236,3,75,0,130,255,215,3,75,0,131,255,215,3,75,0,132,255,215,3,75,0,133,255,215,3,75,0,134,255,215,3,75,0,135,255,215,3,75,0,159,255,236,3,75,0,194,255,215,3,75,0,196,255,215,3,75,0,198,255,215,3,75,1,36,255,195,3,75,1,38,255,195,3,75,1,54,255,236,3,75,1,56,255,236,3,75,1,58,255,236,3,75,1,59,255,236,3,75,1,61,255,236,3,75,1,63,255,236,3,75,1,67,255,215,3,75,1,160,255,236,3,75,1,250,255,236,3,75,1,252,255,236,3,75,1,254,255,236,3,75,2,0,255,236,3,75,2,8,255,174,3,75,2,12,255,174,3,75,2,88,255,215,3,75,3,29,255,215,3,75,3,31,255,215,3,75,3,33,255,215,3,75,3,35,255,215,3,75,3,37,255,215,3,75,3,39,255,215,3,75,3,41,255,215,3,75,3,43,255,215,3,75,3,45,255,215,3,75,3,47,255,215,3,75,3,49,255,215,3,75,3,51,255,215,3,75,3,111,255,236,3,75,3,113,255,236,3,75,3,115,255,236,3,75,3,143,255,195,3,76,0,5,255,236,3,76,0,10,255,236,3,76,0,89,255,215,3,76,0,90,255,215,3,76,0,91,255,215,3,76,0,92,255,215,3,76,0,93,255,236,3,76,0,191,255,215,3,76,1,55,255,215,3,76,1,60,255,236,3,76,1,62,255,236,3,76,1,64,255,236,3,76,1,251,255,215,3,76,1,253,255,215,3,76,2,7,255,236,3,76,2,11,255,236,3,76,3,112,255,215,3,77,0,15,255,174,3,77,0,17,255,174,3,77,0,36,255,215,3,77,0,55,255,195,3,77,0,57,255,236,3,77,0,58,255,236,3,77,0,59,255,215,3,77,0,60,255,236,3,77,0,61,255,236,3,77,0,130,255,215,3,77,0,131,255,215,3,77,0,132,255,215,3,77,0,133,255,215,3,77,0,134,255,215,3,77,0,135,255,215,3,77,0,159,255,236,3,77,0,194,255,215,3,77,0,196,255,215,3,77,0,198,255,215,3,77,1,36,255,195,3,77,1,38,255,195,3,77,1,54,255,236,3,77,1,56,255,236,3,77,1,58,255,236,3,77,1,59,255,236,3,77,1,61,255,236,3,77,1,63,255,236,3,77,1,67,255,215,3,77,1,160,255,236,3,77,1,250,255,236,3,77,1,252,255,236,3,77,1,254,255,236,3,77,2,0,255,236,3,77,2,8,255,174,3,77,2,12,255,174,3,77,2,88,255,215,3,77,3,29,255,215,3,77,3,31,255,215,3,77,3,33,255,215,3,77,3,35,255,215,3,77,3,37,255,215,3,77,3,39,255,215,3,77,3,41,255,215,3,77,3,43,255,215,3,77,3,45,255,215,3,77,3,47,255,215,3,77,3,49,255,215,3,77,3,51,255,215,3,77,3,111,255,236,3,77,3,113,255,236,3,77,3,115,255,236,3,77,3,143,255,195,3,79,0,15,255,174,3,79,0,17,255,174,3,79,0,36,255,215,3,79,0,55,255,195,3,79,0,57,255,236,3,79,0,58,255,236,3,79,0,59,255,215,3,79,0,60,255,236,3,79,0,61,255,236,3,79,0,130,255,215,3,79,0,131,255,215,3,79,0,132,255,215,3,79,0,133,255,215,3,79,0,134,255,215,3,79,0,135,255,215,3,79,0,159,255,236,3,79,0,194,255,215,3,79,0,196,255,215,3,79,0,198,255,215,3,79,1,36,255,195,3,79,1,38,255,195,3,79,1,54,255,236,3,79,1,56,255,236,3,79,1,58,255,236,3,79,1,59,255,236,3,79,1,61,255,236,3,79,1,63,255,236,3,79,1,67,255,215,3,79,1,160,255,236,3,79,1,250,255,236,3,79,1,252,255,236,3,79,1,254,255,236,3,79,2,0,255,236,3,79,2,8,255,174,3,79,2,12,255,174,3,79,2,88,255,215,3,79,3,29,255,215,3,79,3,31,255,215,3,79,3,33,255,215,3,79,3,35,255,215,3,79,3,37,255,215,3,79,3,39,255,215,3,79,3,41,255,215,3,79,3,43,255,215,3,79,3,45,255,215,3,79,3,47,255,215,3,79,3,49,255,215,3,79,3,51,255,215,3,79,3,111,255,236,3,79,3,113,255,236,3,79,3,115,255,236,3,79,3,143,255,195,3,81,0,15,255,174,3,81,0,17,255,174,3,81,0,36,255,215,3,81,0,55,255,195,3,81,0,57,255,236,3,81,0,58,255,236,3,81,0,59,255,215,3,81,0,60,255,236,3,81,0,61,255,236,3,81,0,130,255,215,3,81,0,131,255,215,3,81,0,132,255,215,3,81,0,133,255,215,3,81,0,134,255,215,3,81,0,135,255,215,3,81,0,159,255,236,3,81,0,194,255,215,3,81,0,196,255,215,3,81,0,198,255,215,3,81,1,36,255,195,3,81,1,38,255,195,3,81,1,54,255,236,3,81,1,56,255,236,3,81,1,58,255,236,3,81,1,59,255,236,3,81,1,61,255,236,3,81,1,63,255,236,3,81,1,67,255,215,3,81,1,160,255,236,3,81,1,250,255,236,3,81,1,252,255,236,3,81,1,254,255,236,3,81,2,0,255,236,3,81,2,8,255,174,3,81,2,12,255,174,3,81,2,88,255,215,3,81,3,29,255,215,3,81,3,31,255,215,3,81,3,33,255,215,3,81,3,35,255,215,3,81,3,37,255,215,3,81,3,39,255,215,3,81,3,41,255,215,3,81,3,43,255,215,3,81,3,45,255,215,3,81,3,47,255,215,3,81,3,49,255,215,3,81,3,51,255,215,3,81,3,111,255,236,3,81,3,113,255,236,3,81,3,115,255,236,3,81,3,143,255,195,3,83,0,15,255,174,3,83,0,17,255,174,3,83,0,36,255,215,3,83,0,55,255,195,3,83,0,57,255,236,3,83,0,58,255,236,3,83,0,59,255,215,3,83,0,60,255,236,3,83,0,61,255,236,3,83,0,130,255,215,3,83,0,131,255,215,3,83,0,132,255,215,3,83,0,133,255,215,3,83,0,134,255,215,3,83,0,135,255,215,3,83,0,159,255,236,3,83,0,194,255,215,3,83,0,196,255,215,3,83,0,198,255,215,3,83,1,36,255,195,3,83,1,38,255,195,3,83,1,54,255,236,3,83,1,56,255,236,3,83,1,58,255,236,3,83,1,59,255,236,3,83,1,61,255,236,3,83,1,63,255,236,3,83,1,67,255,215,3,83,1,160,255,236,3,83,1,250,255,236,3,83,1,252,255,236,3,83,1,254,255,236,3,83,2,0,255,236,3,83,2,8,255,174,3,83,2,12,255,174,3,83,2,88,255,215,3,83,3,29,255,215,3,83,3,31,255,215,3,83,3,33,255,215,3,83,3,35,255,215,3,83,3,37,255,215,3,83,3,39,255,215,3,83,3,41,255,215,3,83,3,43,255,215,3,83,3,45,255,215,3,83,3,47,255,215,3,83,3,49,255,215,3,83,3,51,255,215,3,83,3,111,255,236,3,83,3,113,255,236,3,83,3,115,255,236,3,83,3,143,255,195,3,85,0,15,255,174,3,85,0,17,255,174,3,85,0,36,255,215,3,85,0,55,255,195,3,85,0,57,255,236,3,85,0,58,255,236,3,85,0,59,255,215,3,85,0,60,255,236,3,85,0,61,255,236,3,85,0,130,255,215,3,85,0,131,255,215,3,85,0,132,255,215,3,85,0,133,255,215,3,85,0,134,255,215,3,85,0,135,255,215,3,85,0,159,255,236,3,85,0,194,255,215,3,85,0,196,255,215,3,85,0,198,255,215,3,85,1,36,255,195,3,85,1,38,255,195,3,85,1,54,255,236,3,85,1,56,255,236,3,85,1,58,255,236,3,85,1,59,255,236,3,85,1,61,255,236,3,85,1,63,255,236,3,85,1,67,255,215,3,85,1,160,255,236,3,85,1,250,255,236,3,85,1,252,255,236,3,85,1,254,255,236,3,85,2,0,255,236,3,85,2,8,255,174,3,85,2,12,255,174,3,85,2,88,255,215,3,85,3,29,255,215,3,85,3,31,255,215,3,85,3,33,255,215,3,85,3,35,255,215,3,85,3,37,255,215,3,85,3,39,255,215,3,85,3,41,255,215,3,85,3,43,255,215,3,85,3,45,255,215,3,85,3,47,255,215,3,85,3,49,255,215,3,85,3,51,255,215,3,85,3,111,255,236,3,85,3,113,255,236,3,85,3,115,255,236,3,85,3,143,255,195,3,88,0,73,0,82,3,88,0,87,0,82,3,88,0,89,0,102,3,88,0,90,0,102,3,88,0,91,0,102,3,88,0,92,0,102,3,88,0,191,0,102,3,88,1,37,0,82,3,88,1,39,0,82,3,88,1,55,0,102,3,88,1,251,0,102,3,88,1,253,0,102,3,88,2,52,0,82,3,88,2,53,0,82,3,88,2,93,0,82,3,88,2,94,0,82,3,88,3,112,0,102,3,88,3,141,0,82,3,88,3,144,0,82,3,90,0,73,0,82,3,90,0,87,0,82,3,90,0,89,0,102,3,90,0,90,0,102,3,90,0,91,0,102,3,90,0,92,0,102,3,90,0,191,0,102,3,90,1,37,0,82,3,90,1,39,0,82,3,90,1,55,0,102,3,90,1,251,0,102,3,90,1,253,0,102,3,90,2,52,0,82,3,90,2,53,0,82,3,90,2,93,0,82,3,90,2,94,0,82,3,90,3,112,0,102,3,90,3,141,0,82,3,90,3,144,0,82,3,92,0,73,0,82,3,92,0,87,0,82,3,92,0,89,0,102,3,92,0,90,0,102,3,92,0,91,0,102,3,92,0,92,0,102,3,92,0,191,0,102,3,92,1,37,0,82,3,92,1,39,0,82,3,92,1,55,0,102,3,92,1,251,0,102,3,92,1,253,0,102,3,92,2,52,0,82,3,92,2,53,0,82,3,92,2,93,0,82,3,92,2,94,0,82,3,92,3,112,0,102,3,92,3,141,0,82,3,92,3,144,0,82,3,94,0,73,0,82,3,94,0,87,0,82,3,94,0,89,0,102,3,94,0,90,0,102,3,94,0,91,0,102,3,94,0,92,0,102,3,94,0,191,0,102,3,94,1,37,0,82,3,94,1,39,0,82,3,94,1,55,0,102,3,94,1,251,0,102,3,94,1,253,0,102,3,94,2,52,0,82,3,94,2,53,0,82,3,94,2,93,0,82,3,94,2,94,0,82,3,94,3,112,0,102,3,94,3,141,0,82,3,94,3,144,0,82,3,96,0,73,0,82,3,96,0,87,0,82,3,96,0,89,0,102,3,96,0,90,0,102,3,96,0,91,0,102,3,96,0,92,0,102,3,96,0,191,0,102,3,96,1,37,0,82,3,96,1,39,0,82,3,96,1,55,0,102,3,96,1,251,0,102,3,96,1,253,0,102,3,96,2,52,0,82,3,96,2,53,0,82,3,96,2,93,0,82,3,96,2,94,0,82,3,96,3,112,0,102,3,96,3,141,0,82,3,96,3,144,0,82,3,97,0,15,255,215,3,97,0,17,255,215,3,97,0,36,255,236,3,97,0,130,255,236,3,97,0,131,255,236,3,97,0,132,255,236,3,97,0,133,255,236,3,97,0,134,255,236,3,97,0,135,255,236,3,97,0,194,255,236,3,97,0,196,255,236,3,97,0,198,255,236,3,97,1,67,255,236,3,97,2,8,255,215,3,97,2,12,255,215,3,97,2,88,255,236,3,97,3,29,255,236,3,97,3,31,255,236,3,97,3,33,255,236,3,97,3,35,255,236,3,97,3,37,255,236,3,97,3,39,255,236,3,97,3,41,255,236,3,97,3,43,255,236,3,97,3,45,255,236,3,97,3,47,255,236,3,97,3,49,255,236,3,97,3,51,255,236,3,102,0,73,0,102,3,102,0,87,0,102,3,102,0,89,0,102,3,102,0,90,0,102,3,102,0,91,0,102,3,102,0,92,0,102,3,102,0,191,0,102,3,102,1,37,0,102,3,102,1,39,0,102,3,102,1,55,0,102,3,102,1,251,0,102,3,102,1,253,0,102,3,102,2,52,0,102,3,102,2,53,0,102,3,102,2,93,0,102,3,102,2,94,0,102,3,102,3,112,0,102,3,102,3,141,0,102,3,102,3,144,0,102,3,104,0,73,0,102,3,104,0,87,0,102,3,104,0,89,0,102,3,104,0,90,0,102,3,104,0,91,0,102,3,104,0,92,0,102,3,104,0,191,0,102,3,104,1,37,0,102,3,104,1,39,0,102,3,104,1,55,0,102,3,104,1,251,0,102,3,104,1,253,0,102,3,104,2,52,0,102,3,104,2,53,0,102,3,104,2,93,0,102,3,104,2,94,0,102,3,104,3,112,0,102,3,104,3,141,0,102,3,104,3,144,0,102,3,106,0,73,0,102,3,106,0,87,0,102,3,106,0,89,0,102,3,106,0,90,0,102,3,106,0,91,0,102,3,106,0,92,0,102,3,106,0,191,0,102,3,106,1,37,0,102,3,106,1,39,0,102,3,106,1,55,0,102,3,106,1,251,0,102,3,106,1,253,0,102,3,106,2,52,0,102,3,106,2,53,0,102,3,106,2,93,0,102,3,106,2,94,0,102,3,106,3,112,0,102,3,106,3,141,0,102,3,106,3,144,0,102,3,108,0,73,0,102,3,108,0,87,0,102,3,108,0,89,0,102,3,108,0,90,0,102,3,108,0,91,0,102,3,108,0,92,0,102,3,108,0,191,0,102,3,108,1,37,0,102,3,108,1,39,0,102,3,108,1,55,0,102,3,108,1,251,0,102,3,108,1,253,0,102,3,108,2,52,0,102,3,108,2,53,0,102,3,108,2,93,0,102,3,108,2,94,0,102,3,108,3,112,0,102,3,108,3,141,0,102,3,108,3,144,0,102,3,110,0,73,0,102,3,110,0,87,0,102,3,110,0,89,0,102,3,110,0,90,0,102,3,110,0,91,0,102,3,110,0,92,0,102,3,110,0,191,0,102,3,110,1,37,0,102,3,110,1,39,0,102,3,110,1,55,0,102,3,110,1,251,0,102,3,110,1,253,0,102,3,110,2,52,0,102,3,110,2,53,0,102,3,110,2,93,0,102,3,110,2,94,0,102,3,110,3,112,0,102,3,110,3,141,0,102,3,110,3,144,0,102,3,111,0,15,255,133,3,111,0,17,255,133,3,111,0,34,0,41,3,111,0,36,255,133,3,111,0,38,255,215,3,111,0,42,255,215,3,111,0,50,255,215,3,111,0,52,255,215,3,111,0,68,255,154,3,111,0,70,255,154,3,111,0,71,255,154,3,111,0,72,255,154,3,111,0,74,255,215,3,111,0,80,255,195,3,111,0,81,255,195,3,111,0,82,255,154,3,111,0,83,255,195,3,111,0,84,255,154,3,111,0,85,255,195,3,111,0,86,255,174,3,111,0,88,255,195,3,111,0,93,255,215,3,111,0,130,255,133,3,111,0,131,255,133,3,111,0,132,255,133,3,111,0,133,255,133,3,111,0,134,255,133,3,111,0,135,255,133,3,111,0,137,255,215,3,111,0,148,255,215,3,111,0,149,255,215,3,111,0,150,255,215,3,111,0,151,255,215,3,111,0,152,255,215,3,111,0,154,255,215,3,111,0,162,255,154,3,111,0,163,255,154,3,111,0,164,255,154,3,111,0,165,255,154,3,111,0,166,255,154,3,111,0,167,255,154,3,111,0,168,255,154,3,111,0,169,255,154,3,111,0,170,255,154,3,111,0,171,255,154,3,111,0,172,255,154,3,111,0,173,255,154,3,111,0,180,255,154,3,111,0,181,255,154,3,111,0,182,255,154,3,111,0,183,255,154,3,111,0,184,255,154,3,111,0,186,255,154,3,111,0,187,255,195,3,111,0,188,255,195,3,111,0,189,255,195,3,111,0,190,255,195,3,111,0,194,255,133,3,111,0,195,255,154,3,111,0,196,255,133,3,111,0,197,255,154,3,111,0,198,255,133,3,111,0,199,255,154,3,111,0,200,255,215,3,111,0,201,255,154,3,111,0,202,255,215,3,111,0,203,255,154,3,111,0,204,255,215,3,111,0,205,255,154,3,111,0,206,255,215,3,111,0,207,255,154,3,111,0,209,255,154,3,111,0,211,255,154,3,111,0,213,255,154,3,111,0,215,255,154,3,111,0,217,255,154,3,111,0,219,255,154,3,111,0,221,255,154,3,111,0,222,255,215,3,111,0,223,255,215,3,111,0,224,255,215,3,111,0,225,255,215,3,111,0,226,255,215,3,111,0,227,255,215,3,111,0,228,255,215,3,111,0,229,255,215,3,111,0,250,255,195,3,111,1,6,255,195,3,111,1,8,255,195,3,111,1,13,255,195,3,111,1,14,255,215,3,111,1,15,255,154,3,111,1,16,255,215,3,111,1,17,255,154,3,111,1,18,255,215,3,111,1,19,255,154,3,111,1,20,255,215,3,111,1,21,255,154,3,111,1,23,255,195,3,111,1,25,255,195,3,111,1,29,255,174,3,111,1,33,255,174,3,111,1,43,255,195,3,111,1,45,255,195,3,111,1,47,255,195,3,111,1,49,255,195,3,111,1,51,255,195,3,111,1,53,255,195,3,111,1,60,255,215,3,111,1,62,255,215,3,111,1,64,255,215,3,111,1,67,255,133,3,111,1,68,255,154,3,111,1,70,255,154,3,111,1,71,255,215,3,111,1,72,255,154,3,111,1,74,255,174,3,111,2,8,255,133,3,111,2,12,255,133,3,111,2,87,255,195,3,111,2,88,255,133,3,111,2,89,255,154,3,111,2,95,255,215,3,111,2,96,255,154,3,111,2,98,255,195,3,111,3,29,255,133,3,111,3,30,255,154,3,111,3,31,255,133,3,111,3,32,255,154,3,111,3,33,255,133,3,111,3,34,255,154,3,111,3,35,255,133,3,111,3,37,255,133,3,111,3,38,255,154,3,111,3,39,255,133,3,111,3,40,255,154,3,111,3,41,255,133,3,111,3,42,255,154,3,111,3,43,255,133,3,111,3,44,255,154,3,111,3,45,255,133,3,111,3,46,255,154,3,111,3,47,255,133,3,111,3,48,255,154,3,111,3,49,255,133,3,111,3,50,255,154,3,111,3,51,255,133,3,111,3,52,255,154,3,111,3,54,255,154,3,111,3,56,255,154,3,111,3,58,255,154,3,111,3,60,255,154,3,111,3,64,255,154,3,111,3,66,255,154,3,111,3,68,255,154,3,111,3,73,255,215,3,111,3,74,255,154,3,111,3,75,255,215,3,111,3,76,255,154,3,111,3,77,255,215,3,111,3,78,255,154,3,111,3,79,255,215,3,111,3,81,255,215,3,111,3,82,255,154,3,111,3,83,255,215,3,111,3,84,255,154,3,111,3,85,255,215,3,111,3,86,255,154,3,111,3,87,255,215,3,111,3,88,255,154,3,111,3,89,255,215,3,111,3,90,255,154,3,111,3,91,255,215,3,111,3,92,255,154,3,111,3,93,255,215,3,111,3,94,255,154,3,111,3,95,255,215,3,111,3,96,255,154,3,111,3,98,255,195,3,111,3,100,255,195,3,111,3,102,255,195,3,111,3,104,255,195,3,111,3,106,255,195,3,111,3,108,255,195,3,111,3,110,255,195,3,112,0,5,0,82,3,112,0,10,0,82,3,112,0,15,255,174,3,112,0,17,255,174,3,112,0,34,0,41,3,112,2,7,0,82,3,112,2,8,255,174,3,112,2,11,0,82,3,112,2,12,255,174,3,113,0,15,255,133,3,113,0,17,255,133,3,113,0,34,0,41,3,113,0,36,255,133,3,113,0,38,255,215,3,113,0,42,255,215,3,113,0,50,255,215,3,113,0,52,255,215,3,113,0,68,255,154,3,113,0,70,255,154,3,113,0,71,255,154,3,113,0,72,255,154,3,113,0,74,255,215,3,113,0,80,255,195,3,113,0,81,255,195,3,113,0,82,255,154,3,113,0,83,255,195,3,113,0,84,255,154,3,113,0,85,255,195,3,113,0,86,255,174,3,113,0,88,255,195,3,113,0,93,255,215,3,113,0,130,255,133,3,113,0,131,255,133,3,113,0,132,255,133,3,113,0,133,255,133,3,113,0,134,255,133,3,113,0,135,255,133,3,113,0,137,255,215,3,113,0,148,255,215,3,113,0,149,255,215,3,113,0,150,255,215,3,113,0,151,255,215,3,113,0,152,255,215,3,113,0,154,255,215,3,113,0,162,255,154,3,113,0,163,255,154,3,113,0,164,255,154,3,113,0,165,255,154,3,113,0,166,255,154,3,113,0,167,255,154,3,113,0,168,255,154,3,113,0,169,255,154,3,113,0,170,255,154,3,113,0,171,255,154,3,113,0,172,255,154,3,113,0,173,255,154,3,113,0,180,255,154,3,113,0,181,255,154,3,113,0,182,255,154,3,113,0,183,255,154,3,113,0,184,255,154,3,113,0,186,255,154,3,113,0,187,255,195,3,113,0,188,255,195,3,113,0,189,255,195,3,113,0,190,255,195,3,113,0,194,255,133,3,113,0,195,255,154,3,113,0,196,255,133,3,113,0,197,255,154,3,113,0,198,255,133,3,113,0,199,255,154,3,113,0,200,255,215,3,113,0,201,255,154,3,113,0,202,255,215,3,113,0,203,255,154,3,113,0,204,255,215,3,113,0,205,255,154,3,113,0,206,255,215,3,113,0,207,255,154,3,113,0,209,255,154,3,113,0,211,255,154,3,113,0,213,255,154,3,113,0,215,255,154,3,113,0,217,255,154,3,113,0,219,255,154,3,113,0,221,255,154,3,113,0,222,255,215,3,113,0,223,255,215,3,113,0,224,255,215,3,113,0,225,255,215,3,113,0,226,255,215,3,113,0,227,255,215,3,113,0,228,255,215,3,113,0,229,255,215,3,113,0,250,255,195,3,113,1,6,255,195,3,113,1,8,255,195,3,113,1,13,255,195,3,113,1,14,255,215,3,113,1,15,255,154,3,113,1,16,255,215,3,113,1,17,255,154,3,113,1,18,255,215,3,113,1,19,255,154,3,113,1,20,255,215,3,113,1,21,255,154,3,113,1,23,255,195,3,113,1,25,255,195,3,113,1,29,255,174,3,113,1,33,255,174,3,113,1,43,255,195,3,113,1,45,255,195,3,113,1,47,255,195,3,113,1,49,255,195,3,113,1,51,255,195,3,113,1,53,255,195,3,113,1,60,255,215,3,113,1,62,255,215,3,113,1,64,255,215,3,113,1,67,255,133,3,113,1,68,255,154,3,113,1,70,255,154,3,113,1,71,255,215,3,113,1,72,255,154,3,113,1,74,255,174,3,113,2,8,255,133,3,113,2,12,255,133,3,113,2,87,255,195,3,113,2,88,255,133,3,113,2,89,255,154,3,113,2,95,255,215,3,113,2,96,255,154,3,113,2,98,255,195,3,113,3,29,255,133,3,113,3,30,255,154,3,113,3,31,255,133,3,113,3,32,255,154,3,113,3,33,255,133,3,113,3,34,255,154,3,113,3,35,255,133,3,113,3,37,255,133,3,113,3,38,255,154,3,113,3,39,255,133,3,113,3,40,255,154,3,113,3,41,255,133,3,113,3,42,255,154,3,113,3,43,255,133,3,113,3,44,255,154,3,113,3,45,255,133,3,113,3,46,255,154,3,113,3,47,255,133,3,113,3,48,255,154,3,113,3,49,255,133,3,113,3,50,255,154,3,113,3,51,255,133,3,113,3,52,255,154,3,113,3,54,255,154,3,113,3,56,255,154,3,113,3,58,255,154,3,113,3,60,255,154,3,113,3,64,255,154,3,113,3,66,255,154,3,113,3,68,255,154,3,113,3,73,255,215,3,113,3,74,255,154,3,113,3,75,255,215,3,113,3,76,255,154,3,113,3,77,255,215,3,113,3,78,255,154,3,113,3,79,255,215,3,113,3,81,255,215,3,113,3,82,255,154,3,113,3,83,255,215,3,113,3,84,255,154,3,113,3,85,255,215,3,113,3,86,255,154,3,113,3,87,255,215,3,113,3,88,255,154,3,113,3,89,255,215,3,113,3,90,255,154,3,113,3,91,255,215,3,113,3,92,255,154,3,113,3,93,255,215,3,113,3,94,255,154,3,113,3,95,255,215,3,113,3,96,255,154,3,113,3,98,255,195,3,113,3,100,255,195,3,113,3,102,255,195,3,113,3,104,255,195,3,113,3,106,255,195,3,113,3,108,255,195,3,113,3,110,255,195,3,114,0,5,0,82,3,114,0,10,0,82,3,114,0,15,255,174,3,114,0,17,255,174,3,114,0,34,0,41,3,114,2,7,0,82,3,114,2,8,255,174,3,114,2,11,0,82,3,114,2,12,255,174,3,115,0,15,255,133,3,115,0,17,255,133,3,115,0,34,0,41,3,115,0,36,255,133,3,115,0,38,255,215,3,115,0,42,255,215,3,115,0,50,255,215,3,115,0,52,255,215,3,115,0,68,255,154,3,115,0,70,255,154,3,115,0,71,255,154,3,115,0,72,255,154,3,115,0,74,255,215,3,115,0,80,255,195,3,115,0,81,255,195,3,115,0,82,255,154,3,115,0,83,255,195,3,115,0,84,255,154,3,115,0,85,255,195,3,115,0,86,255,174,3,115,0,88,255,195,3,115,0,93,255,215,3,115,0,130,255,133,3,115,0,131,255,133,3,115,0,132,255,133,3,115,0,133,255,133,3,115,0,134,255,133,3,115,0,135,255,133,3,115,0,137,255,215,3,115,0,148,255,215,3,115,0,149,255,215,3,115,0,150,255,215,3,115,0,151,255,215,3,115,0,152,255,215,3,115,0,154,255,215,3,115,0,162,255,154,3,115,0,163,255,154,3,115,0,164,255,154,3,115,0,165,255,154,3,115,0,166,255,154,3,115,0,167,255,154,3,115,0,168,255,154,3,115,0,169,255,154,3,115,0,170,255,154,3,115,0,171,255,154,3,115,0,172,255,154,3,115,0,173,255,154,3,115,0,180,255,154,3,115,0,181,255,154,3,115,0,182,255,154,3,115,0,183,255,154,3,115,0,184,255,154,3,115,0,186,255,154,3,115,0,187,255,195,3,115,0,188,255,195,3,115,0,189,255,195,3,115,0,190,255,195,3,115,0,194,255,133,3,115,0,195,255,154,3,115,0,196,255,133,3,115,0,197,255,154,3,115,0,198,255,133,3,115,0,199,255,154,3,115,0,200,255,215,3,115,0,201,255,154,3,115,0,202,255,215,3,115,0,203,255,154,3,115,0,204,255,215,3,115,0,205,255,154,3,115,0,206,255,215,3,115,0,207,255,154,3,115,0,209,255,154,3,115,0,211,255,154,3,115,0,213,255,154,3,115,0,215,255,154,3,115,0,217,255,154,3,115,0,219,255,154,3,115,0,221,255,154,3,115,0,222,255,215,3,115,0,223,255,215,3,115,0,224,255,215,3,115,0,225,255,215,3,115,0,226,255,215,3,115,0,227,255,215,3,115,0,228,255,215,3,115,0,229,255,215,3,115,0,250,255,195,3,115,1,6,255,195,3,115,1,8,255,195,3,115,1,13,255,195,3,115,1,14,255,215,3,115,1,15,255,154,3,115,1,16,255,215,3,115,1,17,255,154,3,115,1,18,255,215,3,115,1,19,255,154,3,115,1,20,255,215,3,115,1,21,255,154,3,115,1,23,255,195,3,115,1,25,255,195,3,115,1,29,255,174,3,115,1,33,255,174,3,115,1,43,255,195,3,115,1,45,255,195,3,115,1,47,255,195,3,115,1,49,255,195,3,115,1,51,255,195,3,115,1,53,255,195,3,115,1,60,255,215,3,115,1,62,255,215,3,115,1,64,255,215,3,115,1,67,255,133,3,115,1,68,255,154,3,115,1,70,255,154,3,115,1,71,255,215,3,115,1,72,255,154,3,115,1,74,255,174,3,115,2,8,255,133,3,115,2,12,255,133,3,115,2,87,255,195,3,115,2,88,255,133,3,115,2,89,255,154,3,115,2,95,255,215,3,115,2,96,255,154,3,115,2,98,255,195,3,115,3,29,255,133,3,115,3,30,255,154,3,115,3,31,255,133,3,115,3,32,255,154,3,115,3,33,255,133,3,115,3,34,255,154,3,115,3,35,255,133,3,115,3,37,255,133,3,115,3,38,255,154,3,115,3,39,255,133,3,115,3,40,255,154,3,115,3,41,255,133,3,115,3,42,255,154,3,115,3,43,255,133,3,115,3,44,255,154,3,115,3,45,255,133,3,115,3,46,255,154,3,115,3,47,255,133,3,115,3,48,255,154,3,115,3,49,255,133,3,115,3,50,255,154,3,115,3,51,255,133,3,115,3,52,255,154,3,115,3,54,255,154,3,115,3,56,255,154,3,115,3,58,255,154,3,115,3,60,255,154,3,115,3,64,255,154,3,115,3,66,255,154,3,115,3,68,255,154,3,115,3,73,255,215,3,115,3,74,255,154,3,115,3,75,255,215,3,115,3,76,255,154,3,115,3,77,255,215,3,115,3,78,255,154,3,115,3,79,255,215,3,115,3,81,255,215,3,115,3,82,255,154,3,115,3,83,255,215,3,115,3,84,255,154,3,115,3,85,255,215,3,115,3,86,255,154,3,115,3,87,255,215,3,115,3,88,255,154,3,115,3,89,255,215,3,115,3,90,255,154,3,115,3,91,255,215,3,115,3,92,255,154,3,115,3,93,255,215,3,115,3,94,255,154,3,115,3,95,255,215,3,115,3,96,255,154,3,115,3,98,255,195,3,115,3,100,255,195,3,115,3,102,255,195,3,115,3,104,255,195,3,115,3,106,255,195,3,115,3,108,255,195,3,115,3,110,255,195,3,116,0,5,0,82,3,116,0,10,0,82,3,116,0,15,255,174,3,116,0,17,255,174,3,116,0,34,0,41,3,116,2,7,0,82,3,116,2,8,255,174,3,116,2,11,0,82,3,116,2,12,255,174,3,141,0,5,0,123,3,141,0,10,0,123,3,141,2,7,0,123,3,141,2,11,0,123,3,143,0,15,255,133,3,143,0,16,255,174,3,143,0,17,255,133,3,143,0,34,0,41,3,143,0,36,255,113,3,143,0,38,255,215,3,143,0,42,255,215,3,143,0,50,255,215,3,143,0,52,255,215,3,143,0,55,0,41,3,143,0,68,255,92,3,143,0,70,255,113,3,143,0,71,255,113,3,143,0,72,255,113,3,143,0,74,255,113,3,143,0,80,255,154,3,143,0,81,255,154,3,143,0,82,255,113,3,143,0,83,255,154,3,143,0,84,255,113,3,143,0,85,255,154,3,143,0,86,255,133,3,143,0,88,255,154,3,143,0,89,255,215,3,143,0,90,255,215,3,143,0,91,255,215,3,143,0,92,255,215,3,143,0,93,255,174,3,143,0,130,255,113,3,143,0,131,255,113,3,143,0,132,255,113,3,143,0,133,255,113,3,143,0,134,255,113,3,143,0,135,255,113,3,143,0,137,255,215,3,143,0,148,255,215,3,143,0,149,255,215,3,143,0,150,255,215,3,143,0,151,255,215,3,143,0,152,255,215,3,143,0,154,255,215,3,143,0,162,255,113,3,143,0,163,255,92,3,143,0,164,255,92,3,143,0,165,255,92,3,143,0,166,255,92,3,143,0,167,255,92,3,143,0,168,255,92,3,143,0,169,255,113,3,143,0,170,255,113,3,143,0,171,255,113,3,143,0,172,255,113,3,143,0,173,255,113,3,143,0,180,255,113,3,143,0,181,255,113,3,143,0,182,255,113,3,143,0,183,255,113,3,143,0,184,255,113,3,143,0,186,255,113,3,143,0,187,255,154,3,143,0,188,255,154,3,143,0,189,255,154,3,143,0,190,255,154,3,143,0,191,255,215,3,143,0,194,255,113,3,143,0,195,255,92,3,143,0,196,255,113,3,143,0,197,255,92,3,143,0,198,255,113,3,143,0,199,255,92,3,143,0,200,255,215,3,143,0,201,255,113,3,143,0,202,255,215,3,143,0,203,255,113,3,143,0,204,255,215,3,143,0,205,255,113,3,143,0,206,255,215,3,143,0,207,255,113,3,143,0,209,255,113,3,143,0,211,255,113,3,143,0,213,255,113,3,143,0,215,255,113,3,143,0,217,255,113,3,143,0,219,255,113,3,143,0,221,255,113,3,143,0,222,255,215,3,143,0,223,255,113,3,143,0,224,255,215,3,143,0,225,255,113,3,143,0,226,255,215,3,143,0,227,255,113,3,143,0,228,255,215,3,143,0,229,255,113,3,143,0,250,255,154,3,143,1,6,255,154,3,143,1,8,255,154,3,143,1,13,255,154,3,143,1,14,255,215,3,143,1,15,255,113,3,143,1,16,255,215,3,143,1,17,255,113,3,143,1,18,255,215,3,143,1,19,255,113,3,143,1,20,255,215,3,143,1,21,255,113,3,143,1,23,255,154,3,143,1,25,255,154,3,143,1,29,255,133,3,143,1,33,255,133,3,143,1,36,0,41,3,143,1,38,0,41,3,143,1,43,255,154,3,143,1,45,255,154,3,143,1,47,255,154,3,143,1,49,255,154,3,143,1,51,255,154,3,143,1,53,255,154,3,143,1,55,255,215,3,143,1,60,255,174,3,143,1,62,255,174,3,143,1,64,255,174,3,143,1,67,255,113,3,143,1,68,255,92,3,143,1,70,255,92,3,143,1,71,255,215,3,143,1,72,255,113,3,143,1,74,255,133,3,143,1,251,255,215,3,143,1,253,255,215,3,143,2,2,255,174,3,143,2,3,255,174,3,143,2,4,255,174,3,143,2,8,255,133,3,143,2,12,255,133,3,143,2,87,255,154,3,143,2,88,255,113,3,143,2,89,255,92,3,143,2,95,255,215,3,143,2,96,255,113,3,143,2,98,255,154,3,143,3,29,255,113,3,143,3,30,255,92,3,143,3,31,255,113,3,143,3,32,255,92,3,143,3,33,255,113,3,143,3,34,255,92,3,143,3,35,255,113,3,143,3,37,255,113,3,143,3,38,255,92,3,143,3,39,255,113,3,143,3,40,255,92,3,143,3,41,255,113,3,143,3,42,255,92,3,143,3,43,255,113,3,143,3,44,255,92,3,143,3,45,255,113,3,143,3,46,255,92,3,143,3,47,255,113,3,143,3,48,255,92,3,143,3,49,255,113,3,143,3,50,255,92,3,143,3,51,255,113,3,143,3,52,255,92,3,143,3,54,255,113,3,143,3,56,255,113,3,143,3,58,255,113,3,143,3,60,255,113,3,143,3,64,255,113,3,143,3,66,255,113,3,143,3,68,255,113,3,143,3,73,255,215,3,143,3,74,255,113,3,143,3,75,255,215,3,143,3,76,255,113,3,143,3,77,255,215,3,143,3,78,255,113,3,143,3,79,255,215,3,143,3,81,255,215,3,143,3,82,255,113,3,143,3,83,255,215,3,143,3,84,255,113,3,143,3,85,255,215,3,143,3,86,255,113,3,143,3,87,255,215,3,143,3,88,255,113,3,143,3,89,255,215,3,143,3,90,255,113,3,143,3,91,255,215,3,143,3,92,255,113,3,143,3,93,255,215,3,143,3,94,255,113,3,143,3,95,255,215,3,143,3,96,255,113,3,143,3,98,255,154,3,143,3,100,255,154,3,143,3,102,255,154,3,143,3,104,255,154,3,143,3,106,255,154,3,143,3,108,255,154,3,143,3,110,255,154,3,143,3,112,255,215,3,143,3,143,0,41,3,144,0,5,0,41,3,144,0,10,0,41,3,144,2,7,0,41,3,144,2,11,0,41,0,0,0,0,0,26,1,62,0,1,0,0,0,0,0,0,0,57,0,0,0,1,0,0,0,0,0,1,0,9,0,57,0,1,0,0,0,0,0,2,0,7,0,66,0,1,0,0,0,0,0,3,0,30,0,73,0,1,0,0,0,0,0,4,0,9,0,57,0,1,0,0,0,0,0,5,0,12,0,103,0,1,0,0,0,0,0,6,0,8,0,115,0,1,0,0,0,0,0,7,0,82,0,123,0,1,0,0,0,0,0,8,0,20,0,205,0,1,0,0,0,0,0,11,0,28,0,225,0,1,0,0,0,0,0,12,0,46,0,253,0,1,0,0,0,0,0,13,0,46,1,43,0,1,0,0,0,0,0,14,0,42,1,89,0,3,0,1,4,9,0,0,0,114,1,131,0,3,0,1,4,9,0,1,0,18,1,245,0,3,0,1,4,9,0,2,0,14,2,7,0,3,0,1,4,9,0,3,0,60,2,21,0,3,0,1,4,9,0,4,0,18,1,245,0,3,0,1,4,9,0,5,0,24,2,81,0,3,0,1,4,9,0,6,0,16,2,105,0,3,0,1,4,9,0,7,0,164,2,121,0,3,0,1,4,9,0,8,0,40,3,29,0,3,0,1,4,9,0,11,0,56,3,69,0,3,0,1,4,9,0,12,0,92,3,125,0,3,0,1,4,9,0,13,0,92,3,217,0,3,0,1,4,9,0,14,0,84,4,53,68,105,103,105,116,105,122,101,100,32,100,97,116,97,32,99,111,112,121,114,105,103,104,116,32,169,32,50,48,49,48,45,50,48,49,49,44,32,71,111,111,103,108,101,32,67,111,114,112,111,114,97,116,105,111,110,46,79,112,101,110,32,83,97,110,115,82,101,103,117,108,97,114,65,115,99,101,110,100,101,114,32,45,32,79,112,101,110,32,83,97,110,115,32,66,117,105,108,100,32,49,48,48,86,101,114,115,105,111,110,32,49,46,49,48,79,112,101,110,83,97,110,115,79,112,101,110,32,83,97,110,115,32,105,115,32,97,32,116,114,97,100,101,109,97,114,107,32,111,102,32,71,111,111,103,108,101,32,97,110,100,32,109,97,121,32,98,101,32,114,101,103,105,115,116,101,114,101,100,32,105,110,32,99,101,114,116,97,105,110,32,106,117,114,105,115,100,105,99,116,105,111,110,115,46,65,115,99,101,110,100,101,114,32,67,111,114,112,111,114,97,116,105,111,110,104,116,116,112,58,47,47,119,119,119,46,97,115,99,101,110,100,101,114,99,111,114,112,46,99,111,109,47,104,116,116,112,58,47,47,119,119,119,46,97,115,99,101,110,100,101,114,99,111,114,112,46,99,111,109,47,116,121,112,101,100,101,115,105,103,110,101,114,115,46,104,116,109,108,76,105,99,101,110,115,101,100,32,117,110,100,101,114,32,116,104,101,32,65,112,97,99,104,101,32,76,105,99,101,110,115,101,44,32,86,101,114,115,105,111,110,32,50,46,48,104,116,116,112,58,47,47,119,119,119,46,97,112,97,99,104,101,46,111,114,103,47,108,105,99,101,110,115,101,115,47,76,73,67,69,78,83,69,45,50,46,48,0,68,0,105,0,103,0,105,0,116,0,105,0,122,0,101,0,100,0,32,0,100,0,97,0,116,0,97,0,32,0,99,0,111,0,112,0,121,0,114,0,105,0,103,0,104,0,116,0,32,0,169,0,32,0,50,0,48,0,49,0,48,0,45,0,50,0,48,0,49,0,49,0,44,0,32,0,71,0,111,0,111,0,103,0,108,0,101,0,32,0,67,0,111,0,114,0,112,0,111,0,114,0,97,0,116,0,105,0,111,0,110,0,46,0,79,0,112,0,101,0,110,0,32,0,83,0,97,0,110,0,115,0,82,0,101,0,103,0,117,0,108,0,97,0,114,0,65,0,115,0,99,0,101,0,110,0,100,0,101,0,114,0,32,0,45,0,32,0,79,0,112,0,101,0,110,0,32,0,83,0,97,0,110,0,115,0,32,0,66,0,117,0,105,0,108,0,100,0,32,0,49,0,48,0,48,0,86,0,101,0,114,0,115,0,105,0,111,0,110,0,32,0,49,0,46,0,49,0,48,0,79,0,112,0,101,0,110,0,83,0,97,0,110,0,115,0,79,0,112,0,101,0,110,0,32,0,83,0,97,0,110,0,115,0,32,0,105,0,115,0,32,0,97,0,32,0,116,0,114,0,97,0,100,0,101,0,109,0,97,0,114,0,107,0,32,0,111,0,102,0,32,0,71,0,111,0,111,0,103,0,108,0,101,0,32,0,97,0,110,0,100,0,32,0,109,0,97,0,121,0,32,0,98,0,101,0,32,0,114,0,101,0,103,0,105,0,115,0,116,0,101,0,114,0,101,0,100,0,32,0,105,0,110,0,32,0,99,0,101,0,114,0,116,0,97,0,105,0,110,0,32,0,106,0,117,0,114,0,105,0,115,0,100,0,105,0,99,0,116,0,105,0,111,0,110,0,115,0,46,0,65,0,115,0,99,0,101,0,110,0,100,0,101,0,114,0,32,0,67,0,111,0,114,0,112,0,111,0,114,0,97,0,116,0,105,0,111,0,110,0,104,0,116,0,116,0,112,0,58,0,47,0,47,0,119,0,119,0,119,0,46,0,97,0,115,0,99,0,101,0,110,0,100,0,101,0,114,0,99,0,111,0,114,0,112,0,46,0,99,0,111,0,109,0,47,0,104,0,116,0,116,0,112,0,58,0,47,0,47,0,119,0,119,0,119,0,46,0,97,0,115,0,99,0,101,0,110,0,100,0,101,0,114,0,99,0,111,0,114,0,112,0,46,0,99,0,111,0,109,0,47,0,116,0,121,0,112,0,101,0,100,0,101,0,115,0,105,0,103,0,110,0,101,0,114,0,115,0,46,0,104,0,116,0,109,0,108,0,76,0,105,0,99,0,101,0,110,0,115,0,101,0,100,0,32,0,117,0,110,0,100,0,101,0,114,0,32,0,116,0,104,0,101,0,32,0,65,0,112,0,97,0,99,0,104,0,101,0,32,0,76,0,105,0,99,0,101,0,110,0,115,0,101,0,44,0,32,0,86,0,101,0,114,0,115,0,105,0,111,0,110,0,32,0,50,0,46,0,48,0,104,0,116,0,116,0,112,0,58,0,47,0,47,0,119,0,119,0,119,0,46,0,97,0,112,0,97,0,99,0,104,0,101,0,46,0,111,0,114,0,103,0,47,0,108,0,105,0,99,0,101,0,110,0,115,0,101,0,115,0,47,0,76,0,73,0,67,0,69,0,78,0,83,0,69,0,45,0,50,0,46,0,48,0,0,2,0,0,0,0,0,0,255,102,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,170,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,45,1,46,1,47,1,48,1,49,1,50,1,51,1,52,1,53,1,54,1,55,1,56,1,57,1,58,1,59,1,60,1,61,1,62,1,63,1,64,1,65,1,66,1,67,1,68,1,69,1,70,1,71,1,72,1,73,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,1,91,1,92,1,93,1,94,1,95,1,96,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,1,123,1,124,1,125,1,126,1,127,1,128,1,129,1,130,1,131,1,132,1,133,1,134,1,135,1,136,1,137,1,138,1,139,1,140,1,141,1,142,1,143,1,144,1,145,1,146,1,147,1,148,1,149,1,150,1,151,1,152,1,153,1,154,1,155,1,156,1,157,1,158,1,159,1,160,1,161,1,162,1,163,1,164,1,165,1,166,1,167,1,168,1,169,1,170,1,171,1,172,1,173,1,174,1,175,1,176,1,177,1,178,1,179,1,180,1,181,1,182,1,183,1,184,1,185,1,186,1,187,1,188,1,189,1,190,1,191,1,192,1,193,1,194,1,195,1,196,1,197,1,198,1,199,1,200,1,201,1,202,1,203,1,204,1,205,1,206,1,207,1,208,1,209,1,210,1,211,1,212,1,213,1,214,1,215,1,216,1,217,1,218,1,219,1,220,1,221,1,222,1,223,1,224,1,225,1,226,1,227,1,228,1,229,1,230,1,231,1,232,1,233,1,234,1,235,1,236,1,237,1,238,1,239,1,240,1,241,1,242,1,243,1,244,1,245,1,246,1,247,1,248,1,249,1,250,1,251,1,252,1,253,1,254,1,255,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2,24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,52,2,53,2,54,2,55,2,56,2,57,2,58,2,59,2,60,2,61,2,62,2,63,2,64,2,65,2,66,2,67,2,68,2,69,2,70,2,71,2,72,2,73,2,74,2,75,2,76,2,77,2,78,2,79,2,80,2,81,2,82,2,83,2,84,2,85,2,86,2,87,2,88,2,89,2,90,2,91,2,92,2,93,2,94,2,95,2,96,2,97,2,98,2,99,2,100,2,101,2,102,2,103,2,104,2,105,2,106,2,107,2,108,2,109,2,110,2,111,2,112,2,113,2,114,2,115,2,116,2,117,2,118,2,119,2,120,2,121,2,122,2,123,2,124,2,125,2,126,2,127,2,128,2,129,2,130,2,131,2,132,2,133,2,134,2,135,2,136,2,137,2,138,2,139,2,140,2,141,2,142,2,143,2,144,2,145,2,146,2,147,2,148,2,149,2,150,2,151,2,152,2,153,2,154,2,155,2,156,2,157,2,158,2,159,2,160,2,161,2,162,2,163,2,164,2,165,2,166,2,167,2,168,2,169,2,170,2,171,2,172,2,173,2,174,2,175,2,176,2,177,2,178,2,179,2,180,2,181,2,182,2,183,2,184,2,185,2,186,2,187,2,188,2,189,2,190,2,191,2,192,2,193,2,194,2,195,2,196,2,197,2,198,2,199,2,200,2,201,2,202,2,203,2,204,2,205,2,206,2,207,2,208,2,209,2,210,2,211,2,212,2,213,2,214,2,215,2,216,2,217,2,218,2,219,2,220,2,221,2,222,2,223,2,224,2,225,2,226,2,227,2,228,2,229,2,230,2,231,2,232,2,233,2,234,2,235,2,236,2,237,2,238,2,239,2,240,2,241,2,242,2,243,2,244,2,245,2,246,2,247,2,248,2,249,2,250,2,251,2,252,2,253,2,254,2,255,3,0,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,3,15,3,16,3,17,3,18,3,19,3,20,3,21,3,22,3,23,3,24,3,25,3,26,3,27,3,28,3,29,3,30,3,31,3,32,3,33,3,34,3,35,3,36,3,37,3,38,3,39,3,40,3,41,3,42,3,43,3,44,3,45,3,46,3,47,3,48,3,49,3,50,3,51,3,52,3,53,3,54,3,55,3,56,3,57,3,58,3,59,3,60,3,61,3,62,3,63,3,64,3,65,3,66,3,67,3,68,3,69,3,70,3,71,3,72,3,73,3,74,3,75,3,76,3,77,3,78,3,79,3,80,3,81,3,82,3,83,3,84,3,85,3,86,3,87,3,88,3,89,3,90,3,91,3,92,3,93,3,94,3,95,3,96,3,97,3,98,3,99,3,100,3,101,3,102,3,103,3,104,3,105,3,106,3,107,3,108,3,109,3,110,3,111,3,112,3,113,3,114,3,115,3,116,3,117,3,118,3,119,3,120,3,121,3,122,3,123,3,124,3,125,3,126,3,127,3,128,3,129,3,130,3,131,3,132,3,133,3,134,3,135,3,136,3,137,3,138,3,139,3,140,3,141,3,142,3,143,3,144,3,145,3,146,3,147,3,148,3,149,3,150,3,151,3,152,3,153,3,154,3,155,3,156,3,157,3,158,3,159,3,160,3,161,3,162,3,163,3,164,3,165,3,166,3,167,3,168,3,169,3,170,3,171,3,172,3,173,3,174,3,175,3,176,3,177,3,178,3,179,3,180,3,181,3,182,3,183,3,184,3,185,3,186,3,187,3,188,3,189,3,190,3,191,3,192,3,193,3,194,3,195,3,196,3,197,3,198,3,199,3,200,3,201,3,202,3,203,3,204,3,205,3,206,3,207,3,208,3,209,3,210,3,211,3,212,3,213,3,214,3,215,3,216,3,217,3,218,3,219,3,220,3,221,3,222,3,223,3,224,3,225,3,226,3,227,3,228,3,229,3,230,3,231,3,232,3,233,3,234,3,235,3,236,3,237,3,238,3,239,3,240,3,241,3,242,3,243,3,244,3,245,3,246,3,247,3,248,3,249,3,250,3,251,3,252,3,253,3,254,3,255,4,0,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,9,4,10,4,11,4,12,4,13,4,14,4,15,4,16,4,17,4,18,4,19,4,20,4,21,4,22,4,23,4,24,4,25,4,26,4,27,4,28,4,29,4,30,4,31,4,32,4,33,4,34,4,35,4,36,4,37,4,38,4,39,4,40,4,41,4,42,4,43,4,44,4,45,4,46,4,47,4,48,4,49,4,50,4,51,4,52,4,53,4,54,4,55,4,56,4,57,4,58,4,59,4,60,4,61,4,62,4,63,4,64,4,65,4,66,4,67,4,68,4,69,4,70,4,71,4,72,4,73,4,74,4,75,4,76,4,77,4,78,4,79,4,80,4,81,4,82,4,83,4,84,4,85,4,86,4,87,4,88,4,89,4,90,4,91,4,92,4,93,4,94,4,95,4,96,4,97,4,98,4,99,4,100,4,101,4,102,4,103,4,104,4,105,4,106,4,107,4,108,4,109,4,110,4,111,4,112,4,113,4,114,4,115,4,116,4,117,4,118,4,119,4,120,4,121,4,122,4,123,4,124,4,125,4,126,4,127,4,128,4,129,4,130,4,131,4,132,4,133,4,134,4,135,4,136,4,137,4,138,4,139,4,140,4,141,4,142,4,143,4,144,4,145,4,146,4,147,4,148,4,149,4,150,4,151,4,152,4,153,4,154,4,155,4,156,4,157,4,158,4,159,4,160,4,161,4,162,4,163,4,164,4,165,4,166,4,167,4,168,4,169,4,170,4,171,7,46,110,111,116,100,101,102,4,110,117,108,108,16,110,111,110,109,97,114,107,105,110,103,114,101,116,117,114,110,5,115,112,97,99,101,6,101,120,99,108,97,109,8,113,117,111,116,101,100,98,108,10,110,117,109,98,101,114,115,105,103,110,6,100,111,108,108,97,114,7,112,101,114,99,101,110,116,9,97,109,112,101,114,115,97,110,100,11,113,117,111,116,101,115,105,110,103,108,101,9,112,97,114,101,110,108,101,102,116,10,112,97,114,101,110,114,105,103,104,116,8,97,115,116,101,114,105,115,107,4,112,108,117,115,5,99,111,109,109,97,6,104,121,112,104,101,110,6,112,101,114,105,111,100,5,115,108,97,115,104,4,122,101,114,111,3,111,110,101,3,116,119,111,5,116,104,114,101,101,4,102,111,117,114,4,102,105,118,101,3,115,105,120,5,115,101,118,101,110,5,101,105,103,104,116,4,110,105,110,101,5,99,111,108,111,110,9,115,101,109,105,99,111,108,111,110,4,108,101,115,115,5,101,113,117,97,108,7,103,114,101,97,116,101,114,8,113,117,101,115,116,105,111,110,2,97,116,1,65,1,66,1,67,1,68,1,69,1,70,1,71,1,72,5,73,46,97,108,116,1,74,1,75,1,76,1,77,1,78,1,79,1,80,1,81,1,82,1,83,1,84,1,85,1,86,1,87,1,88,1,89,1,90,11,98,114,97,99,107,101,116,108,101,102,116,9,98,97,99,107,115,108,97,115,104,12,98,114,97,99,107,101,116,114,105,103,104,116,11,97,115,99,105,105,99,105,114,99,117,109,10,117,110,100,101,114,115,99,111,114,101,5,103,114,97,118,101,1,97,1,98,1,99,1,100,1,101,1,102,1,103,1,104,1,105,1,106,1,107,1,108,1,109,1,110,1,111,1,112,1,113,1,114,1,115,1,116,1,117,1,118,1,119,1,120,1,121,1,122,9,98,114,97,99,101,108,101,102,116,3,98,97,114,10,98,114,97,99,101,114,105,103,104,116,10,97,115,99,105,105,116,105,108,100,101,16,110,111,110,98,114,101,97,107,105,110,103,115,112,97,99,101,10,101,120,99,108,97,109,100,111,119,110,4,99,101,110,116,8,115,116,101,114,108,105,110,103,8,99,117,114,114,101,110,99,121,3,121,101,110,9,98,114,111,107,101,110,98,97,114,7,115,101,99,116,105,111,110,8,100,105,101,114,101,115,105,115,9,99,111,112,121,114,105,103,104,116,11,111,114,100,102,101,109,105,110,105,110,101,13,103,117,105,108,108,101,109,111,116,108,101,102,116,10,108,111,103,105,99,97,108,110,111,116,7,117,110,105,48,48,65,68,10,114,101,103,105,115,116,101,114,101,100,9,111,118,101,114,115,99,111,114,101,6,100,101,103,114,101,101,9,112,108,117,115,109,105,110,117,115,11,116,119,111,115,117,112,101,114,105,111,114,13,116,104,114,101,101,115,117,112,101,114,105,111,114,5,97,99,117,116,101,2,109,117,9,112,97,114,97,103,114,97,112,104,14,112,101,114,105,111,100,99,101,110,116,101,114,101,100,7,99,101,100,105,108,108,97,11,111,110,101,115,117,112,101,114,105,111,114,12,111,114,100,109,97,115,99,117,108,105,110,101,14,103,117,105,108,108,101,109,111,116,114,105,103,104,116,10,111,110,101,113,117,97,114,116,101,114,7,111,110,101,104,97,108,102,13,116,104,114,101,101,113,117,97,114,116,101,114,115,12,113,117,101,115,116,105,111,110,100,111,119,110,6,65,103,114,97,118,101,6,65,97,99,117,116,101,11,65,99,105,114,99,117,109,102,108,101,120,6,65,116,105,108,100,101,9,65,100,105,101,114,101,115,105,115,5,65,114,105,110,103,2,65,69,8,67,99,101,100,105,108,108,97,6,69,103,114,97,118,101,6,69,97,99,117,116,101,11,69,99,105,114,99,117,109,102,108,101,120,9,69,100,105,101,114,101,115,105,115,10,73,103,114,97,118,101,46,97,108,116,10,73,97,99,117,116,101,46,97,108,116,15,73,99,105,114,99,117,109,102,108,101,120,46,97,108,116,13,73,100,105,101,114,101,115,105,115,46,97,108,116,3,69,116,104,6,78,116,105,108,100,101,6,79,103,114,97,118,101,6,79,97,99,117,116,101,11,79,99,105,114,99,117,109,102,108,101,120,6,79,116,105,108,100,101,9,79,100,105,101,114,101,115,105,115,8,109,117,108,116,105,112,108,121,6,79,115,108,97,115,104,6,85,103,114,97,118,101,6,85,97,99,117,116,101,11,85,99,105,114,99,117,109,102,108,101,120,9,85,100,105,101,114,101,115,105,115,6,89,97,99,117,116,101,5,84,104,111,114,110,10,103,101,114,109,97,110,100,98,108,115,6,97,103,114,97,118,101,6,97,97,99,117,116,101,11,97,99,105,114,99,117,109,102,108,101,120,6,97,116,105,108,100,101,9,97,100,105,101,114,101,115,105,115,5,97,114,105,110,103,2,97,101,8,99,99,101,100,105,108,108,97,6,101,103,114,97,118,101,6,101,97,99,117,116,101,11,101,99,105,114,99,117,109,102,108,101,120,9,101,100,105,101,114,101,115,105,115,6,105,103,114,97,118,101,6,105,97,99,117,116,101,11,105,99,105,114,99,117,109,102,108,101,120,9,105,100,105,101,114,101,115,105,115,3,101,116,104,6,110,116,105,108,100,101,6,111,103,114,97,118,101,6,111,97,99,117,116,101,11,111,99,105,114,99,117,109,102,108,101,120,6,111,116,105,108,100,101,9,111,100,105,101,114,101,115,105,115,6,100,105,118,105,100,101,6,111,115,108,97,115,104,6,117,103,114,97,118,101,6,117,97,99,117,116,101,11,117,99,105,114,99,117,109,102,108,101,120,9,117,100,105,101,114,101,115,105,115,6,121,97,99,117,116,101,5,116,104,111,114,110,9,121,100,105,101,114,101,115,105,115,7,65,109,97,99,114,111,110,7,97,109,97,99,114,111,110,6,65,98,114,101,118,101,6,97,98,114,101,118,101,7,65,111,103,111,110,101,107,7,97,111,103,111,110,101,107,6,67,97,99,117,116,101,6,99,97,99,117,116,101,11,67,99,105,114,99,117,109,102,108,101,120,11,99,99,105,114,99,117,109,102,108,101,120,4,67,100,111,116,4,99,100,111,116,6,67,99,97,114,111,110,6,99,99,97,114,111,110,6,68,99,97,114,111,110,6,100,99,97,114,111,110,6,68,99,114,111,97,116,6,100,99,114,111,97,116,7,69,109,97,99,114,111,110,7,101,109,97,99,114,111,110,6,69,98,114,101,118,101,6,101,98,114,101,118,101,10,69,100,111,116,97,99,99,101,110,116,10,101,100,111,116,97,99,99,101,110,116,7,69,111,103,111,110,101,107,7,101,111,103,111,110,101,107,6,69,99,97,114,111,110,6,101,99,97,114,111,110,11,71,99,105,114,99,117,109,102,108,101,120,11,103,99,105,114,99,117,109,102,108,101,120,6,71,98,114,101,118,101,6,103,98,114,101,118,101,4,71,100,111,116,4,103,100,111,116,12,71,99,111,109,109,97,97,99,99,101,110,116,12,103,99,111,109,109,97,97,99,99,101,110,116,11,72,99,105,114,99,117,109,102,108,101,120,11,104,99,105,114,99,117,109,102,108,101,120,4,72,98,97,114,4,104,98,97,114,10,73,116,105,108,100,101,46,97,108,116,6,105,116,105,108,100,101,11,73,109,97,99,114,111,110,46,97,108,116,7,105,109,97,99,114,111,110,10,73,98,114,101,118,101,46,97,108,116,6,105,98,114,101,118,101,11,73,111,103,111,110,101,107,46,97,108,116,7,105,111,103,111,110,101,107,14,73,100,111,116,97,99,99,101,110,116,46,97,108,116,8,100,111,116,108,101,115,115,105,6,73,74,46,97,108,116,2,105,106,11,74,99,105,114,99,117,109,102,108,101,120,11,106,99,105,114,99,117,109,102,108,101,120,12,75,99,111,109,109,97,97,99,99,101,110,116,12,107,99,111,109,109,97,97,99,99,101,110,116,12,107,103,114,101,101,110,108,97,110,100,105,99,6,76,97,99,117,116,101,6,108,97,99,117,116,101,12,76,99,111,109,109,97,97,99,99,101,110,116,12,108,99,111,109,109,97,97,99,99,101,110,116,6,76,99,97,114,111,110,6,108,99,97,114,111,110,4,76,100,111,116,4,108,100,111,116,6,76,115,108,97,115,104,6,108,115,108,97,115,104,6,78,97,99,117,116,101,6,110,97,99,117,116,101,12,78,99,111,109,109,97,97,99,99,101,110,116,12,110,99,111,109,109,97,97,99,99,101,110,116,6,78,99,97,114,111,110,6,110,99,97,114,111,110,11,110,97,112,111,115,116,114,111,112,104,101,3,69,110,103,3,101,110,103,7,79,109,97,99,114,111,110,7,111,109,97,99,114,111,110,6,79,98,114,101,118,101,6,111,98,114,101,118,101,13,79,104,117,110,103,97,114,117,109,108,97,117,116,13,111,104,117,110,103,97,114,117,109,108,97,117,116,2,79,69,2,111,101,6,82,97,99,117,116,101,6,114,97,99,117,116,101,12,82,99,111,109,109,97,97,99,99,101,110,116,12,114,99,111,109,109,97,97,99,99,101,110,116,6,82,99,97,114,111,110,6,114,99,97,114,111,110,6,83,97,99,117,116,101,6,115,97,99,117,116,101,11,83,99,105,114,99,117,109,102,108,101,120,11,115,99,105,114,99,117,109,102,108,101,120,8,83,99,101,100,105,108,108,97,8,115,99,101,100,105,108,108,97,6,83,99,97,114,111,110,6,115,99,97,114,111,110,12,84,99,111,109,109,97,97,99,99,101,110,116,12,116,99,111,109,109,97,97,99,99,101,110,116,6,84,99,97,114,111,110,6,116,99,97,114,111,110,4,84,98,97,114,4,116,98,97,114,6,85,116,105,108,100,101,6,117,116,105,108,100,101,7,85,109,97,99,114,111,110,7,117,109,97,99,114,111,110,6,85,98,114,101,118,101,6,117,98,114,101,118,101,5,85,114,105,110,103,5,117,114,105,110,103,13,85,104,117,110,103,97,114,117,109,108,97,117,116,13,117,104,117,110,103,97,114,117,109,108,97,117,116,7,85,111,103,111,110,101,107,7,117,111,103,111,110,101,107,11,87,99,105,114,99,117,109,102,108,101,120,11,119,99,105,114,99,117,109,102,108,101,120,11,89,99,105,114,99,117,109,102,108,101,120,11,121,99,105,114,99,117,109,102,108,101,120,9,89,100,105,101,114,101,115,105,115,6,90,97,99,117,116,101,6,122,97,99,117,116,101,10,90,100,111,116,97,99,99,101,110,116,10,122,100,111,116,97,99,99,101,110,116,6,90,99,97,114,111,110,6,122,99,97,114,111,110,5,108,111,110,103,115,6,102,108,111,114,105,110,10,65,114,105,110,103,97,99,117,116,101,10,97,114,105,110,103,97,99,117,116,101,7,65,69,97,99,117,116,101,7,97,101,97,99,117,116,101,11,79,115,108,97,115,104,97,99,117,116,101,11,111,115,108,97,115,104,97,99,117,116,101,12,83,99,111,109,109,97,97,99,99,101,110,116,12,115,99,111,109,109,97,97,99,99,101,110,116,10,99,105,114,99,117,109,102,108,101,120,5,99,97,114,111,110,6,109,97,99,114,111,110,5,98,114,101,118,101,9,100,111,116,97,99,99,101,110,116,4,114,105,110,103,6,111,103,111,110,101,107,5,116,105,108,100,101,12,104,117,110,103,97,114,117,109,108,97,117,116,5,116,111,110,111,115,13,100,105,101,114,101,115,105,115,116,111,110,111,115,10,65,108,112,104,97,116,111,110,111,115,9,97,110,111,116,101,108,101,105,97,12,69,112,115,105,108,111,110,116,111,110,111,115,8,69,116,97,116,111,110,111,115,13,73,111,116,97,116,111,110,111,115,46,97,108,116,12,79,109,105,99,114,111,110,116,111,110,111,115,12,85,112,115,105,108,111,110,116,111,110,111,115,10,79,109,101,103,97,116,111,110,111,115,17,105,111,116,97,100,105,101,114,101,115,105,115,116,111,110,111,115,5,65,108,112,104,97,4,66,101,116,97,5,71,97,109,109,97,7,117,110,105,48,51,57,52,7,69,112,115,105,108,111,110,4,90,101,116,97,3,69,116,97,5,84,104,101,116,97,8,73,111,116,97,46,97,108,116,5,75,97,112,112,97,6,76,97,109,98,100,97,2,77,117,2,78,117,2,88,105,7,79,109,105,99,114,111,110,2,80,105,3,82,104,111,5,83,105,103,109,97,3,84,97,117,7,85,112,115,105,108,111,110,3,80,104,105,3,67,104,105,3,80,115,105,7,117,110,105,48,51,65,57,16,73,111,116,97,100,105,101,114,101,115,105,115,46,97,108,116,15,85,112,115,105,108,111,110,100,105,101,114,101,115,105,115,10,97,108,112,104,97,116,111,110,111,115,12,101,112,115,105,108,111,110,116,111,110,111,115,8,101,116,97,116,111,110,111,115,9,105,111,116,97,116,111,110,111,115,20,117,112,115,105,108,111,110,100,105,101,114,101,115,105,115,116,111,110,111,115,5,97,108,112,104,97,4,98,101,116,97,5,103,97,109,109,97,5,100,101,108,116,97,7,101,112,115,105,108,111,110,4,122,101,116,97,3,101,116,97,5,116,104,101,116,97,4,105,111,116,97,5,107,97,112,112,97,6,108,97,109,98,100,97,7,117,110,105,48,51,66,67,2,110,117,2,120,105,7,111,109,105,99,114,111,110,2,112,105,3,114,104,111,6,115,105,103,109,97,49,5,115,105,103,109,97,3,116,97,117,7,117,112,115,105,108,111,110,3,112,104,105,3,99,104,105,3,112,115,105,5,111,109,101,103,97,12,105,111,116,97,100,105,101,114,101,115,105,115,15,117,112,115,105,108,111,110,100,105,101,114,101,115,105,115,12,111,109,105,99,114,111,110,116,111,110,111,115,12,117,112,115,105,108,111,110,116,111,110,111,115,10,111,109,101,103,97,116,111,110,111,115,9,97,102,105,105,49,48,48,50,51,9,97,102,105,105,49,48,48,53,49,9,97,102,105,105,49,48,48,53,50,9,97,102,105,105,49,48,48,53,51,9,97,102,105,105,49,48,48,53,52,13,97,102,105,105,49,48,48,53,53,46,97,108,116,13,97,102,105,105,49,48,48,53,54,46,97,108,116,9,97,102,105,105,49,48,48,53,55,9,97,102,105,105,49,48,48,53,56,9,97,102,105,105,49,48,48,53,57,9,97,102,105,105,49,48,48,54,48,9,97,102,105,105,49,48,48,54,49,9,97,102,105,105,49,48,48,54,50,9,97,102,105,105,49,48,49,52,53,9,97,102,105,105,49,48,48,49,55,9,97,102,105,105,49,48,48,49,56,9,97,102,105,105,49,48,48,49,57,9,97,102,105,105,49,48,48,50,48,9,97,102,105,105,49,48,48,50,49,9,97,102,105,105,49,48,48,50,50,9,97,102,105,105,49,48,48,50,52,9,97,102,105,105,49,48,48,50,53,9,97,102,105,105,49,48,48,50,54,9,97,102,105,105,49,48,48,50,55,9,97,102,105,105,49,48,48,50,56,9,97,102,105,105,49,48,48,50,57,9,97,102,105,105,49,48,48,51,48,9,97,102,105,105,49,48,48,51,49,9,97,102,105,105,49,48,48,51,50,9,97,102,105,105,49,48,48,51,51,9,97,102,105,105,49,48,48,51,52,9,97,102,105,105,49,48,48,51,53,9,97,102,105,105,49,48,48,51,54,9,97,102,105,105,49,48,48,51,55,9,97,102,105,105,49,48,48,51,56,9,97,102,105,105,49,48,48,51,57,9,97,102,105,105,49,48,48,52,48,9,97,102,105,105,49,48,48,52,49,9,97,102,105,105,49,48,48,52,50,9,97,102,105,105,49,48,48,52,51,9,97,102,105,105,49,48,48,52,52,9,97,102,105,105,49,48,48,52,53,9,97,102,105,105,49,48,48,52,54,9,97,102,105,105,49,48,48,52,55,9,97,102,105,105,49,48,48,52,56,9,97,102,105,105,49,48,48,52,57,9,97,102,105,105,49,48,48,54,53,9,97,102,105,105,49,48,48,54,54,9,97,102,105,105,49,48,48,54,55,9,97,102,105,105,49,48,48,54,56,9,97,102,105,105,49,48,48,54,57,9,97,102,105,105,49,48,48,55,48,9,97,102,105,105,49,48,48,55,50,9,97,102,105,105,49,48,48,55,51,9,97,102,105,105,49,48,48,55,52,9,97,102,105,105,49,48,48,55,53,9,97,102,105,105,49,48,48,55,54,9,97,102,105,105,49,48,48,55,55,9,97,102,105,105,49,48,48,55,56,9,97,102,105,105,49,48,48,55,57,9,97,102,105,105,49,48,48,56,48,9,97,102,105,105,49,48,48,56,49,9,97,102,105,105,49,48,48,56,50,9,97,102,105,105,49,48,48,56,51,9,97,102,105,105,49,48,48,56,52,9,97,102,105,105,49,48,48,56,53,9,97,102,105,105,49,48,48,56,54,9,97,102,105,105,49,48,48,56,55,9,97,102,105,105,49,48,48,56,56,9,97,102,105,105,49,48,48,56,57,9,97,102,105,105,49,48,48,57,48,9,97,102,105,105,49,48,48,57,49,9,97,102,105,105,49,48,48,57,50,9,97,102,105,105,49,48,48,57,51,9,97,102,105,105,49,48,48,57,52,9,97,102,105,105,49,48,48,57,53,9,97,102,105,105,49,48,48,57,54,9,97,102,105,105,49,48,48,57,55,9,97,102,105,105,49,48,48,55,49,9,97,102,105,105,49,48,48,57,57,9,97,102,105,105,49,48,49,48,48,9,97,102,105,105,49,48,49,48,49,9,97,102,105,105,49,48,49,48,50,9,97,102,105,105,49,48,49,48,51,9,97,102,105,105,49,48,49,48,52,9,97,102,105,105,49,48,49,48,53,9,97,102,105,105,49,48,49,48,54,9,97,102,105,105,49,48,49,48,55,9,97,102,105,105,49,48,49,48,56,9,97,102,105,105,49,48,49,48,57,9,97,102,105,105,49,48,49,49,48,9,97,102,105,105,49,48,49,57,51,9,97,102,105,105,49,48,48,53,48,9,97,102,105,105,49,48,48,57,56,6,87,103,114,97,118,101,6,119,103,114,97,118,101,6,87,97,99,117,116,101,6,119,97,99,117,116,101,9,87,100,105,101,114,101,115,105,115,9,119,100,105,101,114,101,115,105,115,6,89,103,114,97,118,101,6,121,103,114,97,118,101,6,101,110,100,97,115,104,6,101,109,100,97,115,104,9,97,102,105,105,48,48,50,48,56,13,117,110,100,101,114,115,99,111,114,101,100,98,108,9,113,117,111,116,101,108,101,102,116,10,113,117,111,116,101,114,105,103,104,116,14,113,117,111,116,101,115,105,110,103,108,98,97,115,101,13,113,117,111,116,101,114,101,118,101,114,115,101,100,12,113,117,111,116,101,100,98,108,108,101,102,116,13,113,117,111,116,101,100,98,108,114,105,103,104,116,12,113,117,111,116,101,100,98,108,98,97,115,101,6,100,97,103,103,101,114,9,100,97,103,103,101,114,100,98,108,6,98,117,108,108,101,116,8,101,108,108,105,112,115,105,115,11,112,101,114,116,104,111,117,115,97,110,100,6,109,105,110,117,116,101,6,115,101,99,111,110,100,13,103,117,105,108,115,105,110,103,108,108,101,102,116,14,103,117,105,108,115,105,110,103,108,114,105,103,104,116,9,101,120,99,108,97,109,100,98,108,8,102,114,97,99,116,105,111,110,9,110,115,117,112,101,114,105,111,114,5,102,114,97,110,99,9,97,102,105,105,48,56,57,52,49,6,112,101,115,101,116,97,4,69,117,114,111,9,97,102,105,105,54,49,50,52,56,9,97,102,105,105,54,49,50,56,57,9,97,102,105,105,54,49,51,53,50,9,116,114,97,100,101,109,97,114,107,5,79,109,101,103,97,9,101,115,116,105,109,97,116,101,100,9,111,110,101,101,105,103,104,116,104,12,116,104,114,101,101,101,105,103,104,116,104,115,11,102,105,118,101,101,105,103,104,116,104,115,12,115,101,118,101,110,101,105,103,104,116,104,115,11,112,97,114,116,105,97,108,100,105,102,102,5,68,101,108,116,97,7,112,114,111,100,117,99,116,9,115,117,109,109,97,116,105,111,110,5,109,105,110,117,115,7,114,97,100,105,99,97,108,8,105,110,102,105,110,105,116,121,8,105,110,116,101,103,114,97,108,11,97,112,112,114,111,120,101,113,117,97,108,8,110,111,116,101,113,117,97,108,9,108,101,115,115,101,113,117,97,108,12,103,114,101,97,116,101,114,101,113,117,97,108,7,108,111,122,101,110,103,101,7,117,110,105,70,66,48,49,7,117,110,105,70,66,48,50,13,99,121,114,105,108,108,105,99,98,114,101,118,101,8,100,111,116,108,101,115,115,106,16,99,97,114,111,110,99,111,109,109,97,97,99,99,101,110,116,11,99,111,109,109,97,97,99,99,101,110,116,17,99,111,109,109,97,97,99,99,101,110,116,114,111,116,97,116,101,12,122,101,114,111,115,117,112,101,114,105,111,114,12,102,111,117,114,115,117,112,101,114,105,111,114,12,102,105,118,101,115,117,112,101,114,105,111,114,11,115,105,120,115,117,112,101,114,105,111,114,13,115,101,118,101,110,115,117,112,101,114,105,111,114,13,101,105,103,104,116,115,117,112,101,114,105,111,114,12,110,105,110,101,115,117,112,101,114,105,111,114,7,117,110,105,50,48,48,48,7,117,110,105,50,48,48,49,7,117,110,105,50,48,48,50,7,117,110,105,50,48,48,51,7,117,110,105,50,48,48,52,7,117,110,105,50,48,48,53,7,117,110,105,50,48,48,54,7,117,110,105,50,48,48,55,7,117,110,105,50,48,48,56,7,117,110,105,50,48,48,57,7,117,110,105,50,48,48,65,7,117,110,105,50,48,48,66,7,117,110,105,70,69,70,70,7,117,110,105,70,70,70,67,7,117,110,105,70,70,70,68,7,117,110,105,48,49,70,48,7,117,110,105,48,50,66,67,7,117,110,105,48,51,68,49,7,117,110,105,48,51,68,50,7,117,110,105,48,51,68,54,7,117,110,105,49,69,51,69,7,117,110,105,49,69,51,70,7,117,110,105,49,69,48,48,7,117,110,105,49,69,48,49,7,117,110,105,49,70,52,68,7,117,110,105,48,50,70,51,9,100,97,115,105,97,111,120,105,97,7,117,110,105,70,66,48,51,7,117,110,105,70,66,48,52,5,79,104,111,114,110,5,111,104,111,114,110,5,85,104,111,114,110,5,117,104,111,114,110,7,117,110,105,48,51,48,48,7,117,110,105,48,51,48,49,7,117,110,105,48,51,48,51,4,104,111,111,107,8,100,111,116,98,101,108,111,119,7,117,110,105,48,52,48,48,7,117,110,105,48,52,48,68,7,117,110,105,48,52,53,48,7,117,110,105,48,52,53,68,7,117,110,105,48,52,54,48,7,117,110,105,48,52,54,49,7,117,110,105,48,52,54,50,7,117,110,105,48,52,54,51,7,117,110,105,48,52,54,52,7,117,110,105,48,52,54,53,7,117,110,105,48,52,54,54,7,117,110,105,48,52,54,55,7,117,110,105,48,52,54,56,7,117,110,105,48,52,54,57,7,117,110,105,48,52,54,65,7,117,110,105,48,52,54,66,7,117,110,105,48,52,54,67,7,117,110,105,48,52,54,68,7,117,110,105,48,52,54,69,7,117,110,105,48,52,54,70,7,117,110,105,48,52,55,48,7,117,110,105,48,52,55,49,7,117,110,105,48,52,55,50,7,117,110,105,48,52,55,51,7,117,110,105,48,52,55,52,7,117,110,105,48,52,55,53,7,117,110,105,48,52,55,54,7,117,110,105,48,52,55,55,7,117,110,105,48,52,55,56,7,117,110,105,48,52,55,57,7,117,110,105,48,52,55,65,7,117,110,105,48,52,55,66,7,117,110,105,48,52,55,67,7,117,110,105,48,52,55,68,7,117,110,105,48,52,55,69,7,117,110,105,48,52,55,70,7,117,110,105,48,52,56,48,7,117,110,105,48,52,56,49,7,117,110,105,48,52,56,50,7,117,110,105,48,52,56,51,7,117,110,105,48,52,56,52,7,117,110,105,48,52,56,53,7,117,110,105,48,52,56,54,7,117,110,105,48,52,56,56,7,117,110,105,48,52,56,57,7,117,110,105,48,52,56,65,7,117,110,105,48,52,56,66,7,117,110,105,48,52,56,67,7,117,110,105,48,52,56,68,7,117,110,105,48,52,56,69,7,117,110,105,48,52,56,70,7,117,110,105,48,52,57,50,7,117,110,105,48,52,57,51,7,117,110,105,48,52,57,52,7,117,110,105,48,52,57,53,7,117,110,105,48,52,57,54,7,117,110,105,48,52,57,55,7,117,110,105,48,52,57,56,7,117,110,105,48,52,57,57,7,117,110,105,48,52,57,65,7,117,110,105,48,52,57,66,7,117,110,105,48,52,57,67,7,117,110,105,48,52,57,68,7,117,110,105,48,52,57,69,7,117,110,105,48,52,57,70,7,117,110,105,48,52,65,48,7,117,110,105,48,52,65,49,7,117,110,105,48,52,65,50,7,117,110,105,48,52,65,51,7,117,110,105,48,52,65,52,7,117,110,105,48,52,65,53,7,117,110,105,48,52,65,54,7,117,110,105,48,52,65,55,7,117,110,105,48,52,65,56,7,117,110,105,48,52,65,57,7,117,110,105,48,52,65,65,7,117,110,105,48,52,65,66,7,117,110,105,48,52,65,67,7,117,110,105,48,52,65,68,7,117,110,105,48,52,65,69,7,117,110,105,48,52,65,70,7,117,110,105,48,52,66,48,7,117,110,105,48,52,66,49,7,117,110,105,48,52,66,50,7,117,110,105,48,52,66,51,7,117,110,105,48,52,66,52,7,117,110,105,48,52,66,53,7,117,110,105,48,52,66,54,7,117,110,105,48,52,66,55,7,117,110,105,48,52,66,56,7,117,110,105,48,52,66,57,7,117,110,105,48,52,66,65,7,117,110,105,48,52,66,66,7,117,110,105,48,52,66,67,7,117,110,105,48,52,66,68,7,117,110,105,48,52,66,69,7,117,110,105,48,52,66,70,11,117,110,105,48,52,67,48,46,97,108,116,7,117,110,105,48,52,67,49,7,117,110,105,48,52,67,50,7,117,110,105,48,52,67,51,7,117,110,105,48,52,67,52,7,117,110,105,48,52,67,53,7,117,110,105,48,52,67,54,7,117,110,105,48,52,67,55,7,117,110,105,48,52,67,56,7,117,110,105,48,52,67,57,7,117,110,105,48,52,67,65,7,117,110,105,48,52,67,66,7,117,110,105,48,52,67,67,7,117,110,105,48,52,67,68,7,117,110,105,48,52,67,69,11,117,110,105,48,52,67,70,46,97,108,116,7,117,110,105,48,52,68,48,7,117,110,105,48,52,68,49,7,117,110,105,48,52,68,50,7,117,110,105,48,52,68,51,7,117,110,105,48,52,68,52,7,117,110,105,48,52,68,53,7,117,110,105,48,52,68,54,7,117,110,105,48,52,68,55,7,117,110,105,48,52,68,56,7,117,110,105,48,52,68,57,7,117,110,105,48,52,68,65,7,117,110,105,48,52,68,66,7,117,110,105,48,52,68,67,7,117,110,105,48,52,68,68,7,117,110,105,48,52,68,69,7,117,110,105,48,52,68,70,7,117,110,105,48,52,69,48,7,117,110,105,48,52,69,49,7,117,110,105,48,52,69,50,7,117,110,105,48,52,69,51,7,117,110,105,48,52,69,52,7,117,110,105,48,52,69,53,7,117,110,105,48,52,69,54,7,117,110,105,48,52,69,55,7,117,110,105,48,52,69,56,7,117,110,105,48,52,69,57,7,117,110,105,48,52,69,65,7,117,110,105,48,52,69,66,7,117,110,105,48,52,69,67,7,117,110,105,48,52,69,68,7,117,110,105,48,52,69,69,7,117,110,105,48,52,69,70,7,117,110,105,48,52,70,48,7,117,110,105,48,52,70,49,7,117,110,105,48,52,70,50,7,117,110,105,48,52,70,51,7,117,110,105,48,52,70,52,7,117,110,105,48,52,70,53,7,117,110,105,48,52,70,54,7,117,110,105,48,52,70,55,7,117,110,105,48,52,70,56,7,117,110,105,48,52,70,57,7,117,110,105,48,52,70,65,7,117,110,105,48,52,70,66,7,117,110,105,48,52,70,67,7,117,110,105,48,52,70,68,7,117,110,105,48,52,70,69,7,117,110,105,48,52,70,70,7,117,110,105,48,53,48,48,7,117,110,105,48,53,48,49,7,117,110,105,48,53,48,50,7,117,110,105,48,53,48,51,7,117,110,105,48,53,48,52,7,117,110,105,48,53,48,53,7,117,110,105,48,53,48,54,7,117,110,105,48,53,48,55,7,117,110,105,48,53,48,56,7,117,110,105,48,53,48,57,7,117,110,105,48,53,48,65,7,117,110,105,48,53,48,66,7,117,110,105,48,53,48,67,7,117,110,105,48,53,48,68,7,117,110,105,48,53,48,69,7,117,110,105,48,53,48,70,7,117,110,105,48,53,49,48,7,117,110,105,48,53,49,49,7,117,110,105,48,53,49,50,7,117,110,105,48,53,49,51,7,117,110,105,49,69,65,48,7,117,110,105,49,69,65,49,7,117,110,105,49,69,65,50,7,117,110,105,49,69,65,51,7,117,110,105,49,69,65,52,7,117,110,105,49,69,65,53,7,117,110,105,49,69,65,54,7,117,110,105,49,69,65,55,7,117,110,105,49,69,65,56,7,117,110,105,49,69,65,57,7,117,110,105,49,69,65,65,7,117,110,105,49,69,65,66,7,117,110,105,49,69,65,67,7,117,110,105,49,69,65,68,7,117,110,105,49,69,65,69,7,117,110,105,49,69,65,70,7,117,110,105,49,69,66,48,7,117,110,105,49,69,66,49,7,117,110,105,49,69,66,50,7,117,110,105,49,69,66,51,7,117,110,105,49,69,66,52,7,117,110,105,49,69,66,53,7,117,110,105,49,69,66,54,7,117,110,105,49,69,66,55,7,117,110,105,49,69,66,56,7,117,110,105,49,69,66,57,7,117,110,105,49,69,66,65,7,117,110,105,49,69,66,66,7,117,110,105,49,69,66,67,7,117,110,105,49,69,66,68,7,117,110,105,49,69,66,69,7,117,110,105,49,69,66,70,7,117,110,105,49,69,67,48,7,117,110,105,49,69,67,49,7,117,110,105,49,69,67,50,7,117,110,105,49,69,67,51,7,117,110,105,49,69,67,52,7,117,110,105,49,69,67,53,7,117,110,105,49,69,67,54,7,117,110,105,49,69,67,55,11,117,110,105,49,69,67,56,46,97,108,116,7,117,110,105,49,69,67,57,11,117,110,105,49,69,67,65,46,97,108,116,7,117,110,105,49,69,67,66,7,117,110,105,49,69,67,67,7,117,110,105,49,69,67,68,7,117,110,105,49,69,67,69,7,117,110,105,49,69,67,70,7,117,110,105,49,69,68,48,7,117,110,105,49,69,68,49,7,117,110,105,49,69,68,50,7,117,110,105,49,69,68,51,7,117,110,105,49,69,68,52,7,117,110,105,49,69,68,53,7,117,110,105,49,69,68,54,7,117,110,105,49,69,68,55,7,117,110,105,49,69,68,56,7,117,110,105,49,69,68,57,7,117,110,105,49,69,68,65,7,117,110,105,49,69,68,66,7,117,110,105,49,69,68,67,7,117,110,105,49,69,68,68,7,117,110,105,49,69,68,69,7,117,110,105,49,69,68,70,7,117,110,105,49,69,69,48,7,117,110,105,49,69,69,49,7,117,110,105,49,69,69,50,7,117,110,105,49,69,69,51,7,117,110,105,49,69,69,52,7,117,110,105,49,69,69,53,7,117,110,105,49,69,69,54,7,117,110,105,49,69,69,55,7,117,110,105,49,69,69,56,7,117,110,105,49,69,69,57,7,117,110,105,49,69,69,65,7,117,110,105,49,69,69,66,7,117,110,105,49,69,69,67,7,117,110,105,49,69,69,68,7,117,110,105,49,69,69,69,7,117,110,105,49,69,69,70,7,117,110,105,49,69,70,48,7,117,110,105,49,69,70,49,7,117,110,105,49,69,70,52,7,117,110,105,49,69,70,53,7,117,110,105,49,69,70,54,7,117,110,105,49,69,70,55,7,117,110,105,49,69,70,56,7,117,110,105,49,69,70,57,7,117,110,105,50,48,65,66,7,117,110,105,48,51,48,70,19,99,105,114,99,117,109,102,108,101,120,97,99,117,116,101,99,111,109,98,19,99,105,114,99,117,109,102,108,101,120,103,114,97,118,101,99,111,109,98,18,99,105,114,99,117,109,102,108,101,120,104,111,111,107,99,111,109,98,19,99,105,114,99,117,109,102,108,101,120,116,105,108,100,101,99,111,109,98,14,98,114,101,118,101,97,99,117,116,101,99,111,109,98,14,98,114,101,118,101,103,114,97,118,101,99,111,109,98,13,98,114,101,118,101,104,111,111,107,99,111,109,98,14,98,114,101,118,101,116,105,108,100,101,99,111,109,98,16,99,121,114,105,108,108,105,99,104,111,111,107,108,101,102,116,17,99,121,114,105,108,108,105,99,98,105,103,104,111,111,107,85,67,17,99,121,114,105,108,108,105,99,98,105,103,104,111,111,107,76,67,8,111,110,101,46,112,110,117,109,7,122,101,114,111,46,111,115,6,111,110,101,46,111,115,6,116,119,111,46,111,115,8,116,104,114,101,101,46,111,115,7,102,111,117,114,46,111,115,7,102,105,118,101,46,111,115,6,115,105,120,46,111,115,8,115,101,118,101,110,46,111,115,8,101,105,103,104,116,46,111,115,7,110,105,110,101,46,111,115,2,102,102,7,117,110,105,50,49,50,48,8,84,99,101,100,105,108,108,97,8,116,99,101,100,105,108,108,97,5,103,46,97,108,116,15,103,99,105,114,99,117,109,102,108,101,120,46,97,108,116,10,103,98,114,101,118,101,46,97,108,116,8,103,100,111,116,46,97,108,116,16,103,99,111,109,109,97,97,99,99,101,110,116,46,97,108,116,1,73,6,73,103,114,97,118,101,6,73,97,99,117,116,101,11,73,99,105,114,99,117,109,102,108,101,120,9,73,100,105,101,114,101,115,105,115,6,73,116,105,108,100,101,7,73,109,97,99,114,111,110,6,73,98,114,101,118,101,7,73,111,103,111,110,101,107,10,73,100,111,116,97,99,99,101,110,116,2,73,74,9,73,111,116,97,116,111,110,111,115,4,73,111,116,97,12,73,111,116,97,100,105,101,114,101,115,105,115,9,97,102,105,105,49,48,48,53,53,9,97,102,105,105,49,48,48,53,54,7,117,110,105,48,52,67,48,7,117,110,105,48,52,67,70,7,117,110,105,49,69,67,56,7,117,110,105,49,69,67,65,0,0,1,0,3,0,8,0,10,0,13,0,7,255,255,0,15,0,1,0,0,0,12,0,0,0,22,0,0,0,2,0,1,0,0,3,169,0,1,0,4,0,0,0,1,0,0,0,0,0,1,0,0,0,10,0,52,0,54,0,1,108,97,116,110,0,8,0,16,0,2,77,79,76,32,0,22,82,79,77,32,0,28,0,0,255,255,0,0,0,0,255,255,0,0,0,0,255,255,0,0,0,0,0,0,0,1,0,0,0,10,0,110,1,228,0,1,108,97,116,110,0,8,0,16,0,2,77,79,76,32,0,40,82,79,77,32,0,66,0,0,255,255,0,9,0,3,0,8,0,11,0,0,0,14,0,17,0,20,0,23,0,26,0,0,255,255,0,10,0,4,0,6,0,9,0,12,0,1,0,15,0,18,0,21,0,24,0,27,0,0,255,255,0,10,0,5,0,7,0,10,0,13,0,2,0,16,0,19,0,22,0,25,0,28,0,29,108,105,103,97,0,176,108,105,103,97,0,182,108,105,103,97,0,188,108,110,117,109,0,194,108,110,117,109,0,200,108,110,117,109,0,206,108,111,99,108,0,212,108,111,99,108,0,218,111,110,117,109,0,224,111,110,117,109,0,232,111,110,117,109,0,240,112,110,117,109,0,248,112,110,117,109,0,254,112,110,117,109,1,4,115,97,108,116,1,10,115,97,108,116,1,18,115,97,108,116,1,26,115,115,48,49,1,34,115,115,48,49,1,42,115,115,48,49,1,50,115,115,48,50,1,58,115,115,48,50,1,64,115,115,48,50,1,70,115,115,48,51,1,76,115,115,48,51,1,82,115,115,48,51,1,88,116,110,117,109,1,94,116,110,117,109,1,102,116,110,117,109,1,110,0,0,0,1,0,9,0,0,0,1,0,9,0,0,0,1,0,9,0,0,0,1,0,7,0,0,0,1,0,7,0,0,0,1,0,7,0,0,0,1,0,8,0,0,0,1,0,8,0,0,0,2,0,2,0,3,0,0,0,2,0,2,0,3,0,0,0,2,0,2,0,3,0,0,0,1,0,4,0,0,0,1,0,4,0,0,0,1,0,4,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,2,0,5,0,6,0,0,0,2,0,5,0,6,0,0,0,2,0,5,0,6,0,10,0,22,0,30,0,38,0,46,0,54,0,62,0,70,0,78,0,86,0,94,0,1,0,0,0,1,0,80,0,1,0,0,0,1,0,122,0,1,0,0,0,1,0,170,0,1,0,0,0,1,0,198,0,1,0,0,0,1,0,238,0,1,0,0,0,1,0,244,0,1,0,0,0,1,1,16,0,1,0,0,0,1,1,22,0,1,0,0,0,1,1,50,0,4,0,0,0,1,1,72,0,2,0,16,0,5,3,145,3,146,3,147,3,148,3,149,0,2,0,5,0,74,0,74,0,0,0,223,0,223,0,1,0,225,0,225,0,2,0,227,0,227,0,3,0,229,0,229,0,4,0,2,0,46,0,20,0,44,0,142,0,143,0,144,0,145,0,234,0,236,0,238,0,240,0,242,0,244,1,90,1,103,1,119,1,161,1,162,2,201,2,216,3,69,3,71,0,2,0,1,3,150,3,169,0,0,0,2,0,26,0,10,3,131,3,132,3,133,3,134,3,135,3,136,3,137,3,138,3,139,3,140,0,2,0,1,0,19,0,28,0,0,0,2,0,26,0,10,3,131,3,133,3,134,3,135,3,136,3,137,3,138,3,139,3,140,3,132,0,2,0,3,0,19,0,19,0,0,0,21,0,28,0,1,3,130,3,130,0,9,0,2,0,8,0,1,3,130,0,1,0,1,0,20,0,2,0,26,0,10,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,2,0,1,3,131,3,140,0,0,0,2,0,8,0,1,0,20,0,1,0,1,3,130,0,2,0,26,0,10,0,19,3,130,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,2,0,1,3,131,3,140,0,0,0,2,0,14,0,4,3,143,3,144,1,32,1,33,0,2,0,2,1,36,1,37,0,0,1,73,1,74,0,2,0,1,0,54,0,1,0,8,0,5,0,12,0,20,0,28,0,34,0,40,2,94,0,3,0,73,0,79,2,93,0,3,0,73,0,76,3,141,0,2,0,73,2,53,0,2,0,79,2,52,0,2,0,76,0,1,0,1,0,73,0,0,0,0,0,1,0,1,0,1,0,0,0,1,0,0,21,94,0,0,0,20,0,0,0,0,0,0,21,86,48,130,21,82,6,9,42,134,72,134,247,13,1,7,2,160,130,21,67,48,130,21,63,2,1,1,49,11,48,9,6,5,43,14,3,2,26,5,0,48,97,6,10,43,6,1,4,1,130,55,2,1,4,160,83,48,81,48,44,6,10,43,6,1,4,1,130,55,2,1,28,162,30,128,28,0,60,0,60,0,60,0,79,0,98,0,115,0,111,0,108,0,101,0,116,0,101,0,62,0,62,0,62,48,33,48,9,6,5,43,14,3,2,26,5,0,4,20,130,184,185,128,143,217,245,64,166,109,110,179,21,84,65,54,153,222,211,125,160,130,17,93,48,130,3,122,48,130,2,98,160,3,2,1,2,2,16,56,37,215,250,248,97,175,158,244,144,231,38,181,214,90,213,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,48,83,49,11,48,9,6,3,85,4,6,19,2,85,83,49,23,48,21,6,3,85,4,10,19,14,86,101,114,105,83,105,103,110,44,32,73,110,99,46,49,43,48,41,6,3,85,4,3,19,34,86,101,114,105,83,105,103,110,32,84,105,109,101,32,83,116,97,109,112,105,110,103,32,83,101,114,118,105,99,101,115,32,67,65,48,30,23,13,48,55,48,54,49,53,48,48,48,48,48,48,90,23,13,49,50,48,54,49,52,50,51,53,57,53,57,90,48,92,49,11,48,9,6,3,85,4,6,19,2,85,83,49,23,48,21,6,3,85,4,10,19,14,86,101,114,105,83,105,103,110,44,32,73,110,99,46,49,52,48,50,6,3,85,4,3,19,43,86,101,114,105,83,105,103,110,32,84,105,109,101,32,83,116,97,109,112,105,110,103,32,83,101,114,118,105,99,101,115,32,83,105,103,110,101,114,32,45,32,71,50,48,129,159,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,3,129,141,0,48,129,137,2,129,129,0,196,181,242,82,21,188,136,134,96,41,22,74,91,47,75,145,107,135,145,243,53,84,88,53,234,209,54,94,98,77,82,81,52,113,194,123,102,29,137,200,221,42,196,106,10,246,55,217,152,116,145,246,146,174,176,181,118,150,241,169,74,99,69,71,46,107,11,146,78,75,43,140,238,88,74,139,212,7,228,26,44,248,130,170,88,217,205,66,243,45,192,117,222,141,171,199,142,29,154,108,76,8,149,30,222,219,239,103,225,114,194,73,194,158,96,60,225,226,190,22,163,99,120,105,20,123,173,45,2,3,1,0,1,163,129,196,48,129,193,48,52,6,8,43,6,1,5,5,7,1,1,4,40,48,38,48,36,6,8,43,6,1,5,5,7,48,1,134,24,104,116,116,112,58,47,47,111,99,115,112,46,118,101,114,105,115,105,103,110,46,99,111,109,48,12,6,3,85,29,19,1,1,255,4,2,48,0,48,51,6,3,85,29,31,4,44,48,42,48,40,160,38,160,36,134,34,104,116,116,112,58,47,47,99,114,108,46,118,101,114,105,115,105,103,110,46,99,111,109,47,116,115,115,45,99,97,46,99,114,108,48,22,6,3,85,29,37,1,1,255,4,12,48,10,6,8,43,6,1,5,5,7,3,8,48,14,6,3,85,29,15,1,1,255,4,4,3,2,6,192,48,30,6,3,85,29,17,4,23,48,21,164,19,48,17,49,15,48,13,6,3,85,4,3,19,6,84,83,65,49,45,50,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,3,130,1,1,0,80,197,75,200,36,128,223,228,13,36,194,222,26,177,161,2,161,166,130,45,12,131,21,129,55,10,130,14,44,176,90,23,97,181,216,5,254,136,219,241,145,145,179,86,26,64,166,235,146,190,56,57,176,117,54,116,58,152,79,228,55,186,153,137,202,149,66,29,176,185,199,160,141,87,224,250,213,100,4,66,53,78,1,209,51,162,23,200,77,170,39,199,242,225,134,76,2,56,77,131,120,198,252,83,224,235,224,6,135,221,164,150,158,94,12,152,226,165,190,191,130,133,195,96,225,223,173,40,216,199,165,75,100,218,199,27,91,189,172,57,8,213,56,34,161,51,139,47,138,154,235,188,7,33,63,68,65,9,7,181,101,28,36,188,72,211,68,128,235,161,207,201,2,180,20,207,84,199,22,163,128,92,249,121,62,93,114,125,136,23,158,44,67,162,202,83,206,125,61,246,42,58,184,79,148,0,165,109,10,131,93,249,94,83,244,24,179,87,15,112,195,251,245,173,149,160,14,23,222,196,22,128,96,201,15,43,110,134,4,241,235,244,120,39,209,5,197,238,52,91,94,185,73,50,242,51,48,130,3,196,48,130,3,45,160,3,2,1,2,2,16,71,191,25,149,223,141,82,70,67,247,219,109,72,13,49,164,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,48,129,139,49,11,48,9,6,3,85,4,6,19,2,90,65,49,21,48,19,6,3,85,4,8,19,12,87,101,115,116,101,114,110,32,67,97,112,101,49,20,48,18,6,3,85,4,7,19,11,68,117,114,98,97,110,118,105,108,108,101,49,15,48,13,6,3,85,4,10,19,6,84,104,97,119,116,101,49,29,48,27,6,3,85,4,11,19,20,84,104,97,119,116,101,32,67,101,114,116,105,102,105,99,97,116,105,111,110,49,31,48,29,6,3,85,4,3,19,22,84,104,97,119,116,101,32,84,105,109,101,115,116,97,109,112,105,110,103,32,67,65,48,30,23,13,48,51,49,50,48,52,48,48,48,48,48,48,90,23,13,49,51,49,50,48,51,50,51,53,57,53,57,90,48,83,49,11,48,9,6,3,85,4,6,19,2,85,83,49,23,48,21,6,3,85,4,10,19,14,86,101,114,105,83,105,103,110,44,32,73,110,99,46,49,43,48,41,6,3,85,4,3,19,34,86,101,114,105,83,105,103,110,32,84,105,109,101,32,83,116,97,109,112,105,110,103,32,83,101,114,118,105,99,101,115,32,67,65,48,130,1,34,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,3,130,1,15,0,48,130,1,10,2,130,1,1,0,169,202,178,164,204,205,32,175,10,125,137,172,135,117,240,180,78,241,223,193,15,191,103,97,189,163,100,28,218,187,249,202,51,171,132,48,137,88,126,140,219,107,221,54,158,15,191,209,236,120,242,119,166,126,111,60,191,147,175,13,186,104,244,108,148,202,189,82,45,171,72,61,245,182,213,93,95,27,2,159,250,47,107,30,164,247,163,154,166,26,200,2,225,127,76,82,227,14,96,236,64,28,126,185,13,222,63,199,180,223,135,189,95,122,106,49,46,3,153,129,19,168,71,32,206,49,115,13,87,45,205,120,52,51,149,18,153,18,185,222,104,47,170,230,227,194,138,140,42,195,139,33,135,102,189,131,88,87,111,117,191,60,170,38,135,93,202,16,21,60,159,132,234,84,193,10,110,196,254,197,74,221,185,7,17,151,34,124,219,62,39,209,30,120,236,159,49,201,241,230,34,25,219,196,179,71,67,154,26,95,160,30,144,228,94,245,238,124,241,125,171,98,1,143,245,77,11,222,208,34,86,168,149,205,174,136,118,174,238,186,13,243,228,77,217,160,251,104,160,174,20,59,179,135,193,187,2,3,1,0,1,163,129,219,48,129,216,48,52,6,8,43,6,1,5,5,7,1,1,4,40,48,38,48,36,6,8,43,6,1,5,5,7,48,1,134,24,104,116,116,112,58,47,47,111,99,115,112,46,118,101,114,105,115,105,103,110,46,99,111,109,48,18,6,3,85,29,19,1,1,255,4,8,48,6,1,1,255,2,1,0,48,65,6,3,85,29,31,4,58,48,56,48,54,160,52,160,50,134,48,104,116,116,112,58,47,47,99,114,108,46,118,101,114,105,115,105,103,110,46,99,111,109,47,84,104,97,119,116,101,84,105,109,101,115,116,97,109,112,105,110,103,67,65,46,99,114,108,48,19,6,3,85,29,37,4,12,48,10,6,8,43,6,1,5,5,7,3,8,48,14,6,3,85,29,15,1,1,255,4,4,3,2,1,6,48,36,6,3,85,29,17,4,29,48,27,164,25,48,23,49,21,48,19,6,3,85,4,3,19,12,84,83,65,50,48,52,56,45,49,45,53,51,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,3,129,129,0,74,107,249,234,88,194,68,28,49,137,121,153,43,150,191,130,172,1,214,28,76,205,176,138,88,110,223,8,41,163,94,200,202,147,19,231,4,82,13,239,71,39,47,0,56,176,228,201,147,78,154,212,34,98,21,247,63,55,33,79,112,49,128,241,139,56,135,179,232,232,151,0,254,207,85,150,78,36,210,169,39,78,122,174,183,97,65,243,42,206,231,201,217,94,221,187,43,133,62,181,157,181,217,225,87,255,190,180,197,126,245,207,12,158,240,151,254,43,211,59,82,27,27,56,39,247,63,74,48,130,4,252,48,130,4,101,160,3,2,1,2,2,16,101,82,38,225,178,46,24,225,89,15,41,133,172,34,231,92,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,48,95,49,11,48,9,6,3,85,4,6,19,2,85,83,49,23,48,21,6,3,85,4,10,19,14,86,101,114,105,83,105,103,110,44,32,73,110,99,46,49,55,48,53,6,3,85,4,11,19,46,67,108,97,115,115,32,51,32,80,117,98,108,105,99,32,80,114,105,109,97,114,121,32,67,101,114,116,105,102,105,99,97,116,105,111,110,32,65,117,116,104,111,114,105,116,121,48,30,23,13,48,57,48,53,50,49,48,48,48,48,48,48,90,23,13,49,57,48,53,50,48,50,51,53,57,53,57,90,48,129,182,49,11,48,9,6,3,85,4,6,19,2,85,83,49,23,48,21,6,3,85,4,10,19,14,86,101,114,105,83,105,103,110,44,32,73,110,99,46,49,31,48,29,6,3,85,4,11,19,22,86,101,114,105,83,105,103,110,32,84,114,117,115,116,32,78,101,116,119,111,114,107,49,59,48,57,6,3,85,4,11,19,50,84,101,114,109,115,32,111,102,32,117,115,101,32,97,116,32,104,116,116,112,115,58,47,47,119,119,119,46,118,101,114,105,115,105,103,110,46,99,111,109,47,114,112,97,32,40,99,41,48,57,49,48,48,46,6,3,85,4,3,19,39,86,101,114,105,83,105,103,110,32,67,108,97,115,115,32,51,32,67,111,100,101,32,83,105,103,110,105,110,103,32,50,48,48,57,45,50,32,67,65,48,130,1,34,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,3,130,1,15,0,48,130,1,10,2,130,1,1,0,190,103,29,180,96,170,16,73,111,86,23,124,102,201,94,134,13,213,241,172,167,113,131,142,139,137,248,136,4,137,21,6,186,45,132,33,149,228,209,156,80,76,251,210,34,189,218,242,178,53,59,30,143,195,9,251,252,19,46,90,191,137,124,61,59,37,30,246,243,88,123,156,244,1,181,198,10,184,128,206,190,39,116,97,103,39,77,106,229,236,129,97,88,121,163,224,23,16,18,21,39,176,225,77,52,127,43,71,32,68,185,222,102,36,102,138,205,79,186,31,197,56,200,84,144,225,114,246,25,102,117,106,185,73,104,207,56,121,13,170,48,168,219,44,96,72,158,215,170,20,1,169,131,215,56,145,48,57,19,150,3,58,124,64,84,182,173,224,47,27,131,220,168,17,82,62,2,179,215,43,253,33,182,167,92,163,15,11,169,166,16,80,14,52,46,77,167,206,201,94,37,212,140,188,243,110,124,41,188,1,93,252,49,135,90,213,140,133,103,88,136,25,160,191,53,240,234,43,163,33,231,144,246,131,229,168,237,96,120,94,123,96,131,253,87,11,93,65,13,99,84,96,214,67,33,239,2,3,1,0,1,163,130,1,219,48,130,1,215,48,18,6,3,85,29,19,1,1,255,4,8,48,6,1,1,255,2,1,0,48,112,6,3,85,29,32,4,105,48,103,48,101,6,11,96,134,72,1,134,248,69,1,7,23,3,48,86,48,40,6,8,43,6,1,5,5,7,2,1,22,28,104,116,116,112,115,58,47,47,119,119,119,46,118,101,114,105,115,105,103,110,46,99,111,109,47,99,112,115,48,42,6,8,43,6,1,5,5,7,2,2,48,30,26,28,104,116,116,112,115,58,47,47,119,119,119,46,118,101,114,105,115,105,103,110,46,99,111,109,47,114,112,97,48,14,6,3,85,29,15,1,1,255,4,4,3,2,1,6,48,109,6,8,43,6,1,5,5,7,1,12,4,97,48,95,161,93,160,91,48,89,48,87,48,85,22,9,105,109,97,103,101,47,103,105,102,48,33,48,31,48,7,6,5,43,14,3,2,26,4,20,143,229,211,26,134,172,141,142,107,195,207,128,106,212,72,24,44,123,25,46,48,37,22,35,104,116,116,112,58,47,47,108,111,103,111,46,118,101,114,105,115,105,103,110,46,99,111,109,47,118,115,108,111,103,111,46,103,105,102,48,29,6,3,85,29,37,4,22,48,20,6,8,43,6,1,5,5,7,3,2,6,8,43,6,1,5,5,7,3,3,48,52,6,8,43,6,1,5,5,7,1,1,4,40,48,38,48,36,6,8,43,6,1,5,5,7,48,1,134,24,104,116,116,112,58,47,47,111,99,115,112,46,118,101,114,105,115,105,103,110,46,99,111,109,48,49,6,3,85,29,31,4,42,48,40,48,38,160,36,160,34,134,32,104,116,116,112,58,47,47,99,114,108,46,118,101,114,105,115,105,103,110,46,99,111,109,47,112,99,97,51,46,99,114,108,48,41,6,3,85,29,17,4,34,48,32,164,30,48,28,49,26,48,24,6,3,85,4,3,19,17,67,108,97,115,115,51,67,65,50,48,52,56,45,49,45,53,53,48,29,6,3,85,29,14,4,22,4,20,151,208,107,168,38,112,200,161,63,148,31,8,45,196,53,155,164,161,30,242,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,3,129,129,0,139,3,192,221,148,216,65,162,97,105,176,21,168,120,199,48,198,144,60,126,66,247,36,182,228,131,115,23,4,127,4,16,156,161,226,250,129,47,235,192,202,68,231,114,224,80,182,85,16,32,131,110,150,146,228,154,81,106,180,55,49,220,165,45,235,140,0,199,29,79,231,77,50,186,133,248,78,190,250,103,85,101,240,106,190,122,202,100,56,26,16,16,120,69,118,49,243,134,122,3,15,96,194,179,93,157,246,139,102,118,130,27,89,225,131,229,189,73,165,56,86,229,222,65,119,14,88,15,48,130,5,19,48,130,3,251,160,3,2,1,2,2,16,102,227,240,103,121,202,21,22,109,80,83,111,136,25,26,131,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,48,129,182,49,11,48,9,6,3,85,4,6,19,2,85,83,49,23,48,21,6,3,85,4,10,19,14,86,101,114,105,83,105,103,110,44,32,73,110,99,46,49,31,48,29,6,3,85,4,11,19,22,86,101,114,105,83,105,103,110,32,84,114,117,115,116,32,78,101,116,119,111,114,107,49,59,48,57,6,3,85,4,11,19,50,84,101,114,109,115,32,111,102,32,117,115,101,32,97,116,32,104,116,116,112,115,58,47,47,119,119,119,46,118,101,114,105,115,105,103,110,46,99,111,109,47,114,112,97,32,40,99,41,48,57,49,48,48,46,6,3,85,4,3,19,39,86,101,114,105,83,105,103,110,32,67,108,97,115,115,32,51,32,67,111,100,101,32,83,105,103,110,105,110,103,32,50,48,48,57,45,50,32,67,65,48,30,23,13,49,48,48,55,50,57,48,48,48,48,48,48,90,23,13,49,50,48,56,48,56,50,51,53,57,53,57,90,48,129,208,49,11,48,9,6,3,85,4,6,19,2,85,83,49,22,48,20,6,3,85,4,8,19,13,77,97,115,115,97,99,104,117,115,101,116,116,115,49,15,48,13,6,3,85,4,7,19,6,87,111,98,117,114,110,49,30,48,28,6,3,85,4,10,20,21,77,111,110,111,116,121,112,101,32,73,109,97,103,105,110,103,32,73,110,99,46,49,62,48,60,6,3,85,4,11,19,53,68,105,103,105,116,97,108,32,73,68,32,67,108,97,115,115,32,51,32,45,32,77,105,99,114,111,115,111,102,116,32,83,111,102,116,119,97,114,101,32,86,97,108,105,100,97,116,105,111,110,32,118,50,49,24,48,22,6,3,85,4,11,20,15,84,121,112,101,32,79,112,101,114,97,116,105,111,110,115,49,30,48,28,6,3,85,4,3,20,21,77,111,110,111,116,121,112,101,32,73,109,97,103,105,110,103,32,73,110,99,46,48,129,159,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,3,129,141,0,48,129,137,2,129,129,0,148,68,160,149,105,124,85,13,208,219,22,141,50,53,138,76,51,171,94,32,161,76,215,42,135,56,215,152,165,64,240,25,73,11,34,30,83,79,194,67,166,202,139,169,86,239,110,72,6,168,5,21,57,30,99,59,36,18,144,185,152,207,202,8,53,125,114,227,71,87,253,121,203,138,74,231,64,112,45,53,99,127,174,128,207,196,175,216,251,247,201,252,137,216,215,164,160,219,9,242,162,242,123,239,205,117,193,247,101,80,100,34,157,189,125,188,173,184,75,204,88,69,14,77,209,89,76,77,2,3,1,0,1,163,130,1,131,48,130,1,127,48,9,6,3,85,29,19,4,2,48,0,48,14,6,3,85,29,15,1,1,255,4,4,3,2,7,128,48,68,6,3,85,29,31,4,61,48,59,48,57,160,55,160,53,134,51,104,116,116,112,58,47,47,99,115,99,51,45,50,48,48,57,45,50,45,99,114,108,46,118,101,114,105,115,105,103,110,46,99,111,109,47,67,83,67,51,45,50,48,48,57,45,50,46,99,114,108,48,68,6,3,85,29,32,4,61,48,59,48,57,6,11,96,134,72,1,134,248,69,1,7,23,3,48,42,48,40,6,8,43,6,1,5,5,7,2,1,22,28,104,116,116,112,115,58,47,47,119,119,119,46,118,101,114,105,115,105,103,110,46,99,111,109,47,114,112,97,48,19,6,3,85,29,37,4,12,48,10,6,8,43,6,1,5,5,7,3,3,48,117,6,8,43,6,1,5,5,7,1,1,4,105,48,103,48,36,6,8,43,6,1,5,5,7,48,1,134,24,104,116,116,112,58,47,47,111,99,115,112,46,118,101,114,105,115,105,103,110,46,99,111,109,48,63,6,8,43,6,1,5,5,7,48,2,134,51,104,116,116,112,58,47,47,99,115,99,51,45,50,48,48,57,45,50,45,97,105,97,46,118,101,114,105,115,105,103,110,46,99,111,109,47,67,83,67,51,45,50,48,48,57,45,50,46,99,101,114,48,31,6,3,85,29,35,4,24,48,22,128,20,151,208,107,168,38,112,200,161,63,148,31,8,45,196,53,155,164,161,30,242,48,17,6,9,96,134,72,1,134,248,66,1,1,4,4,3,2,4,16,48,22,6,10,43,6,1,4,1,130,55,2,1,27,4,8,48,6,1,1,0,1,1,255,48,13,6,9,42,134,72,134,247,13,1,1,5,5,0,3,130,1,1,0,78,230,34,135,223,103,65,21,23,226,210,238,126,14,206,194,153,214,99,189,240,181,147,229,106,114,98,225,245,210,60,56,238,168,61,8,95,186,71,129,130,95,91,75,73,244,29,32,250,15,147,9,208,29,25,86,68,23,162,136,243,251,141,157,174,247,13,53,222,60,12,172,68,148,96,69,42,155,254,155,111,76,59,177,52,103,112,16,134,255,90,57,92,90,227,108,130,171,53,124,101,75,253,152,109,181,21,148,73,156,136,112,16,190,61,177,98,149,180,219,180,212,218,232,157,65,144,126,254,125,185,164,146,235,110,242,34,138,198,119,54,77,138,90,11,83,5,49,211,43,40,175,82,225,141,122,107,181,119,68,189,12,173,244,93,37,44,227,205,138,48,62,75,3,156,121,202,166,78,174,11,194,204,36,7,11,193,148,130,246,16,241,186,144,182,155,154,216,92,60,19,241,234,2,6,24,39,77,60,137,111,51,138,211,134,222,233,88,51,117,61,235,147,105,226,68,111,78,0,108,207,213,133,218,86,166,154,166,63,203,76,33,104,144,242,96,186,225,232,6,93,57,33,19,50,237,49,130,3,103,48,130,3,99,2,1,1,48,129,203,48,129,182,49,11,48,9,6,3,85,4,6,19,2,85,83,49,23,48,21,6,3,85,4,10,19,14,86,101,114,105,83,105,103,110,44,32,73,110,99,46,49,31,48,29,6,3,85,4,11,19,22,86,101,114,105,83,105,103,110,32,84,114,117,115,116,32,78,101,116,119,111,114,107,49,59,48,57,6,3,85,4,11,19,50,84,101,114,109,115,32,111,102,32,117,115,101,32,97,116,32,104,116,116,112,115,58,47,47,119,119,119,46,118,101,114,105,115,105,103,110,46,99,111,109,47,114,112,97,32,40,99,41,48,57,49,48,48,46,6,3,85,4,3,19,39,86,101,114,105,83,105,103,110,32,67,108,97,115,115,32,51,32,67,111,100,101,32,83,105,103,110,105,110,103,32,50,48,48,57,45,50,32,67,65,2,16,102,227,240,103,121,202,21,22,109,80,83,111,136,25,26,131,48,9,6,5,43,14,3,2,26,5,0,160,112,48,16,6,10,43,6,1,4,1,130,55,2,1,12,49,2,48,0,48,25,6,9,42,134,72,134,247,13,1,9,3,49,12,6,10,43,6,1,4,1,130,55,2,1,4,48,28,6,10,43,6,1,4,1,130,55,2,1,11,49,14,48,12,6,10,43,6,1,4,1,130,55,2,1,21,48,35,6,9,42,134,72,134,247,13,1,9,4,49,22,4,20,72,227,234,219,23,99,143,198,177,21,87,39,32,183,101,244,25,83,149,24,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,4,129,128,69,59,188,212,186,239,218,27,191,98,59,222,18,236,74,6,132,69,113,65,201,2,254,46,14,149,243,137,177,82,244,65,235,109,50,44,72,191,41,145,188,178,47,93,100,36,52,46,186,150,180,182,74,115,151,224,246,159,65,247,247,104,182,245,128,6,120,65,190,83,144,192,126,120,82,91,28,170,14,33,66,220,190,9,156,51,211,70,80,144,59,5,153,16,43,89,105,236,133,216,99,209,45,195,6,150,52,237,20,163,156,242,241,84,64,213,71,23,160,11,0,31,140,102,239,222,62,27,161,130,1,127,48,130,1,123,6,9,42,134,72,134,247,13,1,9,6,49,130,1,108,48,130,1,104,2,1,1,48,103,48,83,49,11,48,9,6,3,85,4,6,19,2,85,83,49,23,48,21,6,3,85,4,10,19,14,86,101,114,105,83,105,103,110,44,32,73,110,99,46,49,43,48,41,6,3,85,4,3,19,34,86,101,114,105,83,105,103,110,32,84,105,109,101,32,83,116,97,109,112,105,110,103,32,83,101,114,118,105,99,101,115,32,67,65,2,16,56,37,215,250,248,97,175,158,244,144,231,38,181,214,90,213,48,9,6,5,43,14,3,2,26,5,0,160,93,48,24,6,9,42,134,72,134,247,13,1,9,3,49,11,6,9,42,134,72,134,247,13,1,7,1,48,28,6,9,42,134,72,134,247,13,1,9,5,49,15,23,13,49,49,48,53,48,53,49,54,53,53,49,48,90,48,35,6,9,42,134,72,134,247,13,1,9,4,49,22,4,20,84,23,8,43,11,189,238,26,39,14,31,141,252,83,147,244,56,86,16,15,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,4,129,128,29,193,119,137,174,155,111,34,227,107,229,69,218,78,145,64,240,159,239,59,31,39,74,86,172,58,253,168,148,106,124,247,156,193,127,123,147,96,78,27,196,43,87,149,148,203,22,225,154,103,51,209,43,41,19,200,236,190,188,89,177,3,164,41,153,236,29,136,153,36,135,119,15,155,202,20,251,212,212,73,76,116,14,200,61,46,111,32,201,3,205,232,229,15,208,33,57,179,86,25,213,251,172,189,172,169,56,189,176,213,12,163,217,99,173,176,149,180,104,88,195,226,215,41,255,145,164,199,0,0, \ No newline at end of file diff --git a/src/Nazara/Utility/RichTextDrawer.cpp b/src/Nazara/Utility/RichTextDrawer.cpp new file mode 100644 index 000000000..87e64c326 --- /dev/null +++ b/src/Nazara/Utility/RichTextDrawer.cpp @@ -0,0 +1,582 @@ +// 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 +#include +#include + +namespace Nz +{ + RichTextDrawer::RichTextDrawer() : + m_defaultColor(Color::White), + m_defaultOutlineColor(Color::Black), + m_defaultStyle(TextStyle_Regular), + m_glyphUpdated(false), + m_maxLineWidth(std::numeric_limits::infinity()), + m_defaultCharacterSpacingOffset(0.f), + m_defaultLineSpacingOffset(0.f), + m_defaultOutlineThickness(0.f), + m_defaultCharacterSize(24) + { + SetDefaultFont(Font::GetDefault()); + } + + RichTextDrawer::RichTextDrawer(const RichTextDrawer& drawer) : + m_defaultColor(drawer.m_defaultColor), + m_defaultStyle(drawer.m_defaultStyle), + m_fontIndexes(drawer.m_fontIndexes), + m_blocks(drawer.m_blocks), + m_glyphUpdated(false), + m_defaultOutlineColor(drawer.m_defaultOutlineColor), + m_maxLineWidth(drawer.m_maxLineWidth), + m_defaultCharacterSpacingOffset(drawer.m_defaultCharacterSpacingOffset), + m_defaultLineSpacingOffset(drawer.m_defaultLineSpacingOffset), + m_defaultOutlineThickness(drawer.m_defaultOutlineThickness), + m_defaultCharacterSize(drawer.m_defaultCharacterSize) + { + m_fonts.resize(drawer.m_fonts.size()); + for (std::size_t i = 0; i < m_fonts.size(); ++i) + { + m_fonts[i].font = drawer.m_fonts[i].font; + m_fonts[i].useCount = drawer.m_fonts[i].useCount; + } + + SetDefaultFont(drawer.m_defaultFont); + + ConnectFontSlots(); + } + + RichTextDrawer::RichTextDrawer(RichTextDrawer&& drawer) + { + operator=(std::move(drawer)); + } + + RichTextDrawer::~RichTextDrawer() = default; + + auto RichTextDrawer::AppendText(const String& str, bool forceNewBlock) -> BlockRef + { + NazaraAssert(!str.IsEmpty(), "String cannot be empty"); + + std::size_t defaultFontIndex = HandleFontAddition(m_defaultFont); + + auto HasDefaultProperties = [&](const Block& block) + { + return block.characterSize == m_defaultCharacterSize && + block.color == m_defaultColor && + block.fontIndex == defaultFontIndex && + block.characterSpacingOffset == m_defaultCharacterSpacingOffset && + block.lineSpacingOffset == m_defaultLineSpacingOffset && + block.outlineColor == m_defaultOutlineColor && + block.outlineThickness == m_defaultOutlineThickness && + block.style == m_defaultStyle; + }; + + // Check if last block has the same property as default, else create a new block + if (forceNewBlock || m_blocks.empty() || !HasDefaultProperties(m_blocks.back())) + { + std::size_t glyphIndex; + if (!m_blocks.empty()) + { + Block& lastBlock = m_blocks.back(); + glyphIndex = lastBlock.glyphIndex + lastBlock.text.GetLength(); + } + else + glyphIndex = 0; + + m_blocks.emplace_back(); + Block& newBlock = m_blocks.back(); + newBlock.characterSize = m_defaultCharacterSize; + newBlock.characterSpacingOffset = m_defaultCharacterSpacingOffset; + newBlock.color = m_defaultColor; + newBlock.fontIndex = defaultFontIndex; + newBlock.glyphIndex = glyphIndex; + newBlock.lineSpacingOffset = m_defaultLineSpacingOffset; + newBlock.outlineColor = m_defaultOutlineColor; + newBlock.outlineThickness = m_defaultOutlineThickness; + newBlock.style = m_defaultStyle; + newBlock.text = str; + + assert(newBlock.fontIndex < m_fonts.size()); + m_fonts[newBlock.fontIndex].useCount++; + } + else + m_blocks.back().text += str; + + InvalidateGlyphs(); + + return BlockRef(*this, m_blocks.size() - 1); + } + + void RichTextDrawer::Clear() + { + m_fontIndexes.clear(); + m_blocks.clear(); + m_fonts.clear(); + m_glyphs.clear(); + ClearGlyphs(); + } + + const Rectf& RichTextDrawer::GetBounds() const + { + if (!m_glyphUpdated) + UpdateGlyphs(); + + return m_bounds; + } + + Font* RichTextDrawer::GetFont(std::size_t index) const + { + NazaraAssert(index < m_fonts.size(), "Font index out of range"); + + return m_fonts[index].font; + } + + std::size_t RichTextDrawer::GetFontCount() const + { + return m_fonts.size(); + } + + const AbstractTextDrawer::Glyph& RichTextDrawer::GetGlyph(std::size_t index) const + { + if (!m_glyphUpdated) + UpdateGlyphs(); + + return m_glyphs[index]; + } + + std::size_t RichTextDrawer::GetGlyphCount() const + { + if (!m_glyphUpdated) + UpdateGlyphs(); + + return m_glyphs.size(); + } + + const AbstractTextDrawer::Line& RichTextDrawer::GetLine(std::size_t index) const + { + if (!m_glyphUpdated) + UpdateGlyphs(); + + NazaraAssert(index < m_lines.size(), "Line index out of range"); + return m_lines[index]; + } + + std::size_t RichTextDrawer::GetLineCount() const + { + if (!m_glyphUpdated) + UpdateGlyphs(); + + return m_lines.size(); + } + + float RichTextDrawer::GetMaxLineWidth() const + { + return m_maxLineWidth; + } + + void RichTextDrawer::MergeBlocks() + { + auto TestBlockProperties = [](const Block& lhs, const Block& rhs) + { + return lhs.characterSize == rhs.characterSize && + lhs.color == rhs.color && + lhs.fontIndex == rhs.fontIndex && + lhs.characterSpacingOffset == rhs.characterSpacingOffset && + lhs.lineSpacingOffset == rhs.lineSpacingOffset && + lhs.outlineColor == rhs.outlineColor && + lhs.outlineThickness == rhs.outlineThickness && + lhs.style == rhs.style; + }; + + std::size_t previousBlockIndex = 0; + for (std::size_t i = 1; i < m_blocks.size(); ++i) + { + if (TestBlockProperties(m_blocks[previousBlockIndex], m_blocks[i])) + { + m_blocks[previousBlockIndex].text += m_blocks[i].text; + + RemoveBlock(i); + --i; + } + else + previousBlockIndex = i; + } + } + + void RichTextDrawer::RemoveBlock(std::size_t index) + { + NazaraAssert(index < m_blocks.size(), "Invalid block index"); + + std::size_t textLength = m_blocks[index].text.GetLength(); + + ReleaseFont(m_blocks[index].fontIndex); + m_blocks.erase(m_blocks.begin() + index); + + for (std::size_t i = index; i < m_blocks.size(); ++i) + { + assert(m_blocks[i].glyphIndex > textLength); + m_blocks[i].glyphIndex -= textLength; + } + + InvalidateGlyphs(); + } + + void RichTextDrawer::SetMaxLineWidth(float lineWidth) + { + m_maxLineWidth = lineWidth; + + InvalidateGlyphs(); + } + + RichTextDrawer& RichTextDrawer::operator=(const RichTextDrawer& drawer) + { + DisconnectFontSlots(); + + m_blocks = drawer.m_blocks; + m_defaultCharacterSize = drawer.m_defaultCharacterSize; + m_defaultCharacterSpacingOffset = drawer.m_defaultCharacterSpacingOffset; + m_defaultColor = drawer.m_defaultColor; + m_defaultFont = drawer.m_defaultFont; + m_defaultLineSpacingOffset = drawer.m_defaultLineSpacingOffset; + m_defaultOutlineColor = drawer.m_defaultOutlineColor; + m_defaultOutlineThickness = drawer.m_defaultOutlineThickness; + m_defaultStyle = drawer.m_defaultStyle; + m_fontIndexes = drawer.m_fontIndexes; + + m_fonts.resize(drawer.m_fonts.size()); + for (std::size_t i = 0; i < m_fonts.size(); ++i) + { + m_fonts[i].font = drawer.m_fonts[i].font; + m_fonts[i].useCount = drawer.m_fonts[i].useCount; + } + + ConnectFontSlots(); + InvalidateGlyphs(); + + return *this; + } + + RichTextDrawer& RichTextDrawer::operator=(RichTextDrawer&& drawer) + { + DisconnectFontSlots(); + + m_blocks = std::move(drawer.m_blocks); + m_bounds = std::move(m_bounds); + m_defaultCharacterSize = std::move(drawer.m_defaultCharacterSize); + m_defaultCharacterSpacingOffset = std::move(drawer.m_defaultCharacterSpacingOffset); + m_defaultColor = std::move(drawer.m_defaultColor); + m_defaultFont = std::move(drawer.m_defaultFont); + m_defaultLineSpacingOffset = std::move(drawer.m_defaultLineSpacingOffset); + m_defaultOutlineColor = std::move(drawer.m_defaultOutlineColor); + m_defaultOutlineThickness = std::move(drawer.m_defaultOutlineThickness); + m_defaultStyle = std::move(drawer.m_defaultStyle); + m_drawPos = std::move(m_drawPos); + m_fontIndexes = std::move(drawer.m_fontIndexes); + m_fonts = std::move(drawer.m_fonts); + m_glyphs = std::move(m_glyphs); + m_lines = std::move(m_lines); + m_glyphUpdated = std::move(m_glyphUpdated); + + drawer.DisconnectFontSlots(); + ConnectFontSlots(); + + return *this; + } + + void RichTextDrawer::AppendNewLine(const Font* font, unsigned int characterSize, float lineSpacingOffset, std::size_t glyphIndex, float glyphPosition) const + { + // Ensure we're appending from last line + Line& lastLine = m_lines.back(); + + const Font::SizeInfo& sizeInfo = font->GetSizeInfo(characterSize); + + float previousDrawPos = m_drawPos.x; + + float lineHeight = GetLineHeight(lineSpacingOffset, sizeInfo); + + // Reset cursor + m_drawPos.x = 0; + m_drawPos.y += lineHeight; + m_lastSeparatorGlyph = InvalidGlyph; + + m_bounds.ExtendTo(lastLine.bounds); + m_lines.emplace_back(Line{ Rectf(0.f, lineHeight * m_lines.size(), 0.f, lineHeight), m_glyphs.size() + 1 }); + + if (glyphIndex != InvalidGlyph && glyphIndex > lastLine.glyphIndex) + { + Line& newLine = m_lines.back(); + newLine.glyphIndex = glyphIndex; + + for (std::size_t i = glyphIndex; i < m_glyphs.size(); ++i) + { + Glyph& glyph = m_glyphs[i]; + glyph.bounds.x -= glyphPosition; + glyph.bounds.y += lineHeight; + + for (auto& corner : glyph.corners) + { + corner.x -= glyphPosition; + corner.y += lineHeight; + } + + newLine.bounds.ExtendTo(glyph.bounds); + } + + assert(previousDrawPos >= glyphPosition); + m_drawPos.x += previousDrawPos - glyphPosition; + + lastLine.bounds.width -= lastLine.bounds.GetMaximum().x - glyphPosition; + + // Regenerate bounds + m_bounds.MakeZero(); + for (auto& line : m_lines) + m_bounds.ExtendTo(line.bounds); + } + } + + bool RichTextDrawer::GenerateGlyph(Glyph& glyph, char32_t character, float outlineThickness, bool lineWrap, const Font* font, const Color& color, TextStyleFlags style, float lineSpacingOffset, unsigned int characterSize, int renderOrder, int* advance) const + { + const Font::Glyph& fontGlyph = font->GetGlyph(characterSize, style, outlineThickness, character); + if (fontGlyph.valid && fontGlyph.fauxOutlineThickness <= 0.f) + { + glyph.atlas = font->GetAtlas()->GetLayer(fontGlyph.layerIndex); + glyph.atlasRect = fontGlyph.atlasRect; + glyph.color = color; + glyph.flipped = fontGlyph.flipped; + glyph.renderOrder = renderOrder; + + glyph.bounds.Set(fontGlyph.aabb); + + if (lineWrap && ShouldLineWrap(glyph.bounds.width)) + AppendNewLine(font, characterSize, lineSpacingOffset, m_lastSeparatorGlyph, m_lastSeparatorPosition); + + glyph.bounds.x += m_drawPos.x; + glyph.bounds.y += m_drawPos.y; + + // Faux bold and faux outline thickness are not supported + + // We "lean" the glyph to simulate italics style + float italic = (fontGlyph.requireFauxItalic) ? 0.208f : 0.f; + float italicTop = italic * glyph.bounds.y; + float italicBottom = italic * glyph.bounds.GetMaximum().y; + + glyph.corners[0].Set(glyph.bounds.x - italicTop - outlineThickness, glyph.bounds.y - outlineThickness); + glyph.corners[1].Set(glyph.bounds.x + glyph.bounds.width - italicTop - outlineThickness, glyph.bounds.y - outlineThickness); + glyph.corners[2].Set(glyph.bounds.x - italicBottom - outlineThickness, glyph.bounds.y + glyph.bounds.height - outlineThickness); + glyph.corners[3].Set(glyph.bounds.x + glyph.bounds.width - italicBottom - outlineThickness, glyph.bounds.y + glyph.bounds.height - outlineThickness); + + if (advance) + *advance = fontGlyph.advance; + + return true; + } + else + return false; + }; + + void RichTextDrawer::GenerateGlyphs(const Font* font, const Color& color, TextStyleFlags style, unsigned int characterSize, const Color& outlineColor, float characterSpacingOffset, float lineSpacingOffset, float outlineThickness, const String& text) const + { + if (text.IsEmpty()) + return; + + ///TODO: Allow iteration on Unicode characters without allocating any buffer + std::u32string characters = text.GetUtf32String(); + if (characters.empty()) + { + NazaraError("Invalid character set"); + return; + } + + char32_t previousCharacter = 0; + + const Font::SizeInfo& sizeInfo = font->GetSizeInfo(characterSize); + float lineHeight = GetLineHeight(lineSpacingOffset, sizeInfo); + + float heightDifference = lineHeight - m_lines.back().bounds.height; + if (heightDifference > 0.f) + { + for (std::size_t glyphIndex = m_lines.back().glyphIndex; glyphIndex < m_glyphs.size(); ++glyphIndex) + { + Glyph& glyph = m_glyphs[glyphIndex]; + glyph.bounds.y += heightDifference; + + for (auto& corner : glyph.corners) + corner.y += heightDifference; + } + + m_drawPos.y += heightDifference; + m_lines.back().bounds.height += heightDifference; + } + + m_glyphs.reserve(m_glyphs.size() + characters.size() * ((outlineThickness > 0.f) ? 2 : 1)); + for (char32_t character : characters) + { + if (previousCharacter != 0) + m_drawPos.x += font->GetKerning(characterSize, previousCharacter, character); + + previousCharacter = character; + + bool whitespace = true; + float advance = characterSpacingOffset; + switch (character) + { + case ' ': + case '\n': + advance += float(sizeInfo.spaceAdvance); + break; + + case '\t': + advance += float(sizeInfo.spaceAdvance) * 4.f; + break; + + default: + whitespace = false; + break; + } + + Glyph glyph; + if (!whitespace) + { + int iAdvance; + if (!GenerateGlyph(glyph, character, 0.f, true, font, color, style, lineSpacingOffset, characterSize, 0, &iAdvance)) + continue; // Glyph failed to load, just skip it (can't do much) + + advance += float(iAdvance); + + if (outlineThickness > 0.f) + { + Glyph outlineGlyph; + if (GenerateGlyph(outlineGlyph, character, outlineThickness, false, font, outlineColor, style, lineSpacingOffset, characterSize, -1, nullptr)) + m_glyphs.push_back(outlineGlyph); + } + } + else + { + if (ShouldLineWrap(advance)) + AppendNewLine(font, characterSize, lineSpacingOffset, m_lastSeparatorGlyph, m_lastSeparatorPosition); + + glyph.atlas = nullptr; + glyph.bounds.Set(m_drawPos.x, m_lines.back().bounds.y, advance, 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)); + } + + m_lines.back().bounds.ExtendTo(glyph.bounds); + + switch (character) + { + case '\n': + { + AppendNewLine(font, characterSize, lineSpacingOffset); + break; + } + + default: + m_drawPos.x += advance; + break; + } + + if (whitespace) + { + m_lastSeparatorGlyph = m_glyphs.size(); + m_lastSeparatorPosition = m_drawPos.x; + } + + m_glyphs.push_back(glyph); + } + + m_bounds.ExtendTo(m_lines.back().bounds); + + m_glyphUpdated = true; + } + + void RichTextDrawer::OnFontAtlasLayerChanged(const Font* font, AbstractImage* oldLayer, AbstractImage* newLayer) + { + NazaraUnused(font); + +#ifdef NAZARA_DEBUG + auto it = std::find_if(m_fonts.begin(), m_fonts.end(), [font](const auto& fontData) { return fontData.font == font; }); + if (it == m_fonts.end()) + { + NazaraInternalError("Not listening to " + String::Pointer(font)); + return; + } +#endif + + // Update atlas layer pointer + // Note: This can happen while updating + for (Glyph& glyph : m_glyphs) + { + if (glyph.atlas == oldLayer) + glyph.atlas = newLayer; + } + } + + void RichTextDrawer::OnFontInvalidated(const Font* font) + { + NazaraUnused(font); + +#ifdef NAZARA_DEBUG + auto it = std::find_if(m_fonts.begin(), m_fonts.end(), [font](const auto& fontData) { return fontData.font == font; }); + if (it == m_fonts.end()) + { + NazaraInternalError("Not listening to " + String::Pointer(font)); + return; + } +#endif + + m_glyphUpdated = false; + } + + void RichTextDrawer::OnFontRelease(const Font* font) + { + NazaraUnused(font); + NazaraUnused(font); + +#ifdef NAZARA_DEBUG + auto it = std::find_if(m_fonts.begin(), m_fonts.end(), [font](const auto& fontData) { return fontData.font == font; }); + if (it == m_fonts.end()) + { + NazaraInternalError("Not listening to " + String::Pointer(font)); + return; + } +#endif + + //SetFont(nullptr); + } + + void RichTextDrawer::UpdateGlyphs() const + { + ClearGlyphs(); + + if (!m_blocks.empty()) + { + const Block& firstBlock = m_blocks.front(); + + assert(firstBlock.fontIndex < m_fonts.size()); + const auto& firstFont = m_fonts[firstBlock.fontIndex]; + + if (firstFont.font) + m_lines.emplace_back(Line{ Rectf(0.f, 0.f, 0.f, GetLineHeight(firstBlock)), 0 }); + else + m_lines.emplace_back(Line{ Rectf::Zero(), 0 }); + + m_drawPos.Set(0, float(firstBlock.characterSize)); + + for (const Block& block : m_blocks) + { + assert(block.fontIndex < m_fonts.size()); + const auto& fontData = m_fonts[block.fontIndex]; + + GenerateGlyphs(fontData.font, block.color, block.style, block.characterSize, block.outlineColor, block.outlineThickness, block.characterSpacingOffset, block.lineSpacingOffset, block.text); + } + } + else + m_lines.emplace_back(Line{ Rectf::Zero(), 0 }); //< Ensure there's always a line + } +} diff --git a/src/Nazara/Utility/SimpleTextDrawer.cpp b/src/Nazara/Utility/SimpleTextDrawer.cpp index 89accf012..ebaf28b3a 100644 --- a/src/Nazara/Utility/SimpleTextDrawer.cpp +++ b/src/Nazara/Utility/SimpleTextDrawer.cpp @@ -3,53 +3,19 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include +#include #include #include namespace Nz { - SimpleTextDrawer::SimpleTextDrawer() : - m_color(Color::White), - m_style(TextStyle_Regular), - m_colorUpdated(true), - m_glyphUpdated(true), - m_characterSize(24) - { - SetFont(Font::GetDefault()); - } - - SimpleTextDrawer::SimpleTextDrawer(const SimpleTextDrawer& drawer) : - m_color(drawer.m_color), - m_text(drawer.m_text), - m_style(drawer.m_style), - m_colorUpdated(false), - m_glyphUpdated(false), - m_characterSize(drawer.m_characterSize) - { - SetFont(drawer.m_font); - } - - SimpleTextDrawer::SimpleTextDrawer(SimpleTextDrawer&& drawer) - { - operator=(std::move(drawer)); - } - - SimpleTextDrawer::~SimpleTextDrawer() = default; - - void SimpleTextDrawer::AppendText(const String& str) - { - m_text.Append(str); - if (m_glyphUpdated) - GenerateGlyphs(str); - } - void SimpleTextDrawer::Clear() { m_text.Clear(true); ClearGlyphs(); } - const Recti& SimpleTextDrawer::GetBounds() const + const Rectf& SimpleTextDrawer::GetBounds() const { if (!m_glyphUpdated) UpdateGlyphs(); @@ -57,27 +23,12 @@ namespace Nz return m_bounds; } - unsigned int SimpleTextDrawer::GetCharacterSize() const - { - return m_characterSize; - } - - const Color& SimpleTextDrawer::GetColor() const - { - return m_color; - } - - Font* SimpleTextDrawer::GetFont() const - { - return m_font; - } - Font* SimpleTextDrawer::GetFont(std::size_t index) const { NazaraAssert(index == 0, "Font index out of range"); NazaraUnused(index); - return m_font; + return GetFont(); } std::size_t SimpleTextDrawer::GetFontCount() const @@ -120,148 +71,116 @@ namespace Nz return m_lines.size(); } - UInt32 SimpleTextDrawer::GetStyle() const + float SimpleTextDrawer::GetMaxLineWidth() const { - return m_style; + return m_maxLineWidth; } - const String& SimpleTextDrawer::GetText() const + void SimpleTextDrawer::AppendNewLine(std::size_t glyphIndex, float glyphPosition) const { - return m_text; - } + // Ensure we're appending from last line + Line& lastLine = m_lines.back(); - void SimpleTextDrawer::SetCharacterSize(unsigned int characterSize) - { - m_characterSize = characterSize; + float previousDrawPos = m_drawPos.x; - m_glyphUpdated = false; - } + float lineHeight = GetLineHeight(); - void SimpleTextDrawer::SetColor(const Color& color) - { - m_color = color; + // Reset cursor + m_drawPos.x = 0.f; + m_drawPos.y += lineHeight; + m_lastSeparatorGlyph = InvalidGlyph; - m_colorUpdated = false; - } + m_bounds.ExtendTo(lastLine.bounds); + m_lines.emplace_back(Line{ Rectf(0.f, lineHeight * m_lines.size(), 0.f, lineHeight), m_glyphs.size() + 1 }); - void SimpleTextDrawer::SetFont(Font* font) - { - if (m_font != font) + if (glyphIndex != InvalidGlyph && glyphIndex > lastLine.glyphIndex) { - m_font = font; + Line& newLine = m_lines.back(); + newLine.glyphIndex = glyphIndex; - if (m_font) - ConnectFontSlots(); - else - DisconnectFontSlots(); + for (std::size_t i = glyphIndex; i < m_glyphs.size(); ++i) + { + Glyph& glyph = m_glyphs[i]; + glyph.bounds.x -= glyphPosition; + glyph.bounds.y += lineHeight; - m_glyphUpdated = false; + for (auto& corner : glyph.corners) + { + corner.x -= glyphPosition; + corner.y += lineHeight; + } + + newLine.bounds.ExtendTo(glyph.bounds); + } + + assert(previousDrawPos >= glyphPosition); + m_drawPos.x += previousDrawPos - glyphPosition; + + lastLine.bounds.width -= lastLine.bounds.GetMaximum().x - glyphPosition; + + // Regenerate bounds + m_bounds.MakeZero(); + for (auto& line : m_lines) + m_bounds.ExtendTo(line.bounds); } } - void SimpleTextDrawer::SetStyle(UInt32 style) - { - m_style = style; - - m_glyphUpdated = false; - } - - void SimpleTextDrawer::SetText(const String& str) - { - m_text = str; - - m_glyphUpdated = false; - } - - SimpleTextDrawer& SimpleTextDrawer::operator=(const SimpleTextDrawer& drawer) - { - m_characterSize = drawer.m_characterSize; - m_color = drawer.m_color; - m_style = drawer.m_style; - m_text = drawer.m_text; - - m_colorUpdated = false; - m_glyphUpdated = false; - SetFont(drawer.m_font); - - return *this; - } - - SimpleTextDrawer& SimpleTextDrawer::operator=(SimpleTextDrawer&& drawer) - { - DisconnectFontSlots(); - - m_bounds = std::move(drawer.m_bounds); - m_colorUpdated = std::move(drawer.m_colorUpdated); - m_characterSize = std::move(drawer.m_characterSize); - m_color = std::move(drawer.m_color); - m_glyphs = std::move(drawer.m_glyphs); - m_glyphUpdated = std::move(drawer.m_glyphUpdated); - m_font = std::move(drawer.m_font); - m_style = std::move(drawer.m_style); - m_text = std::move(drawer.m_text); - - // Update slot pointers (TODO: Improve the way of doing this) - ConnectFontSlots(); - - return *this; - } - - SimpleTextDrawer SimpleTextDrawer::Draw(const String& str, unsigned int characterSize, UInt32 style, const Color& color) - { - SimpleTextDrawer drawer; - drawer.SetCharacterSize(characterSize); - drawer.SetColor(color); - drawer.SetStyle(style); - drawer.SetText(str); - - return drawer; - } - - SimpleTextDrawer SimpleTextDrawer::Draw(Font* font, const String& str, unsigned int characterSize, UInt32 style, const Color& color) - { - SimpleTextDrawer drawer; - drawer.SetCharacterSize(characterSize); - drawer.SetColor(color); - drawer.SetFont(font); - drawer.SetStyle(style); - drawer.SetText(str); - - return drawer; - } - void SimpleTextDrawer::ClearGlyphs() const { m_bounds.MakeZero(); m_colorUpdated = true; - m_drawPos.Set(0, m_characterSize); //< Our draw "cursor" + m_drawPos.Set(0, float(m_characterSize)); //< Our draw "cursor" + m_lastSeparatorGlyph = InvalidGlyph; m_lines.clear(); m_glyphs.clear(); m_glyphUpdated = true; m_previousCharacter = 0; - m_workingBounds.MakeZero(); //< Compute bounds as float to speedup bounds computation (as casting between floats and integers is costly) if (m_font) - m_lines.emplace_back(Line{Rectf(0.f, 0.f, 0.f, float(m_font->GetSizeInfo(m_characterSize).lineHeight)), 0}); + m_lines.emplace_back(Line{Rectf(0.f, 0.f, 0.f, GetLineHeight()), 0}); else m_lines.emplace_back(Line{Rectf::Zero(), 0}); } - void SimpleTextDrawer::ConnectFontSlots() + bool SimpleTextDrawer::GenerateGlyph(Glyph& glyph, char32_t character, float outlineThickness, bool lineWrap, Nz::Color color, int renderOrder, int* advance) const { - m_atlasChangedSlot.Connect(m_font->OnFontAtlasChanged, this, &SimpleTextDrawer::OnFontInvalidated); - m_atlasLayerChangedSlot.Connect(m_font->OnFontAtlasLayerChanged, this, &SimpleTextDrawer::OnFontAtlasLayerChanged); - m_fontReleaseSlot.Connect(m_font->OnFontRelease, this, &SimpleTextDrawer::OnFontRelease); - m_glyphCacheClearedSlot.Connect(m_font->OnFontGlyphCacheCleared, this, &SimpleTextDrawer::OnFontInvalidated); - } + const Font::Glyph& fontGlyph = m_font->GetGlyph(m_characterSize, m_style, outlineThickness, character); + if (fontGlyph.valid && fontGlyph.fauxOutlineThickness <= 0.f) + { + glyph.atlas = m_font->GetAtlas()->GetLayer(fontGlyph.layerIndex); + glyph.atlasRect = fontGlyph.atlasRect; + glyph.color = color; + glyph.flipped = fontGlyph.flipped; + glyph.renderOrder = renderOrder; - void SimpleTextDrawer::DisconnectFontSlots() - { - m_atlasChangedSlot.Disconnect(); - m_atlasLayerChangedSlot.Disconnect(); - m_fontReleaseSlot.Disconnect(); - m_glyphCacheClearedSlot.Disconnect(); - } + glyph.bounds.Set(fontGlyph.aabb); + + if (lineWrap && ShouldLineWrap(glyph.bounds.width)) + AppendNewLine(m_lastSeparatorGlyph, m_lastSeparatorPosition); + + glyph.bounds.x += m_drawPos.x; + glyph.bounds.y += m_drawPos.y; + + // Faux bold and faux outline thickness are not supported + + // We "lean" the glyph to simulate italics style + float italic = (fontGlyph.requireFauxItalic) ? 0.208f : 0.f; + float italicTop = italic * glyph.bounds.y; + float italicBottom = italic * glyph.bounds.GetMaximum().y; + + glyph.corners[0].Set(glyph.bounds.x - italicTop - outlineThickness, glyph.bounds.y - outlineThickness); + glyph.corners[1].Set(glyph.bounds.x + glyph.bounds.width - italicTop - outlineThickness, glyph.bounds.y - outlineThickness); + glyph.corners[2].Set(glyph.bounds.x - italicBottom - outlineThickness, glyph.bounds.y + glyph.bounds.height - outlineThickness); + glyph.corners[3].Set(glyph.bounds.x + glyph.bounds.width - italicBottom - outlineThickness, glyph.bounds.y + glyph.bounds.height - outlineThickness); + + if (advance) + *advance = fontGlyph.advance; + + return true; + } + else + return false; + }; void SimpleTextDrawer::GenerateGlyphs(const String& text) const { @@ -278,7 +197,7 @@ namespace Nz const Font::SizeInfo& sizeInfo = m_font->GetSizeInfo(m_characterSize); - m_glyphs.reserve(m_glyphs.size() + characters.size()); + m_glyphs.reserve(m_glyphs.size() + characters.size() * ((m_outlineThickness > 0.f) ? 2 : 1)); for (char32_t character : characters) { if (m_previousCharacter != 0) @@ -287,16 +206,16 @@ namespace Nz m_previousCharacter = character; bool whitespace = true; - int advance = 0; + float advance = m_characterSpacingOffset; switch (character) { case ' ': case '\n': - advance = sizeInfo.spaceAdvance; + advance += float(sizeInfo.spaceAdvance); break; case '\t': - advance = sizeInfo.spaceAdvance * 4; + advance += float(sizeInfo.spaceAdvance) * 4.f; break; default: @@ -307,54 +226,26 @@ namespace Nz Glyph glyph; if (!whitespace) { - const Font::Glyph& fontGlyph = m_font->GetGlyph(m_characterSize, m_style, character); - if (!fontGlyph.valid) + int iAdvance; + if (!GenerateGlyph(glyph, character, 0.f, true, m_color, 0, &iAdvance)) continue; // Glyph failed to load, just skip it (can't do much) - advance = fontGlyph.advance; + advance += float(iAdvance); - glyph.atlas = m_font->GetAtlas()->GetLayer(fontGlyph.layerIndex); - glyph.atlasRect = fontGlyph.atlasRect; - glyph.color = m_color; - glyph.flipped = fontGlyph.flipped; - - glyph.bounds.Set(fontGlyph.aabb); - glyph.bounds.x += m_drawPos.x; - glyph.bounds.y += m_drawPos.y; - - if (fontGlyph.requireFauxBold) + if (m_outlineThickness > 0.f) { - // Let's simulate bold by enlarging the glyph (not a neat idea, but should work) - Vector2f center = glyph.bounds.GetCenter(); - - // Enlarge by 10% - glyph.bounds.width *= 1.1f; - glyph.bounds.height *= 1.1f; - - // Replace it at the correct height - Vector2f offset(glyph.bounds.GetCenter() - center); - glyph.bounds.x -= offset.x; - glyph.bounds.y -= offset.y; - - // Adjust advance (+10%) - advance += advance / 10; + Glyph outlineGlyph; + if (GenerateGlyph(outlineGlyph, character, m_outlineThickness, false, m_outlineColor, -1, nullptr)) + m_glyphs.push_back(outlineGlyph); } - - // We "lean" the glyph to simulate italics style - float italic = (fontGlyph.requireFauxItalic) ? 0.208f : 0.f; - float italicTop = italic * glyph.bounds.y; - float italicBottom = italic * glyph.bounds.GetMaximum().y; - - glyph.corners[0].Set(glyph.bounds.x - italicTop, glyph.bounds.y); - glyph.corners[1].Set(glyph.bounds.x + glyph.bounds.width - italicTop, glyph.bounds.y); - glyph.corners[2].Set(glyph.bounds.x - italicBottom, glyph.bounds.y + glyph.bounds.height); - glyph.corners[3].Set(glyph.bounds.x + glyph.bounds.width - italicBottom, glyph.bounds.y + glyph.bounds.height); } else { - glyph.atlas = nullptr; + if (ShouldLineWrap(advance)) + AppendNewLine(m_lastSeparatorGlyph, m_lastSeparatorPosition); - glyph.bounds.Set(float(m_drawPos.x), m_lines.back().bounds.y, float(advance), float(sizeInfo.lineHeight)); + glyph.atlas = nullptr; + glyph.bounds.Set(m_drawPos.x, m_lines.back().bounds.y, advance, GetLineHeight(sizeInfo)); glyph.corners[0].Set(glyph.bounds.GetCorner(RectCorner_LeftTop)); glyph.corners[1].Set(glyph.bounds.GetCorner(RectCorner_RightTop)); @@ -363,18 +254,12 @@ namespace Nz } 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}); + AppendNewLine(); break; } @@ -383,12 +268,16 @@ namespace Nz break; } + if (whitespace) + { + m_lastSeparatorGlyph = m_glyphs.size(); + m_lastSeparatorPosition = m_drawPos.x; + } + m_glyphs.push_back(glyph); } - 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))); + m_bounds.ExtendTo(m_lines.back().bounds); m_colorUpdated = true; m_glyphUpdated = true; @@ -407,7 +296,7 @@ namespace Nz #endif // Update atlas layer pointer - // Note: This can happen while updating + // Note: This can happen while updating glyphs for (Glyph& glyph : m_glyphs) { if (glyph.atlas == oldLayer) @@ -427,7 +316,7 @@ namespace Nz } #endif - m_glyphUpdated = false; + InvalidateGlyphs(); } void SimpleTextDrawer::OnFontRelease(const Font* font) @@ -445,20 +334,4 @@ namespace Nz SetFont(nullptr); } - - void SimpleTextDrawer::UpdateGlyphColor() const - { - for (Glyph& glyph : m_glyphs) - glyph.color = m_color; - - m_colorUpdated = true; - } - - void SimpleTextDrawer::UpdateGlyphs() const - { - NazaraAssert(m_font && m_font->IsValid(), "Invalid font"); - - ClearGlyphs(); - GenerateGlyphs(m_text); - } } 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/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]") diff --git a/tests/Engine/Core/StackVector.cpp b/tests/Engine/Core/StackVector.cpp new file mode 100644 index 000000000..62e67404b --- /dev/null +++ b/tests/Engine/Core/StackVector.cpp @@ -0,0 +1,347 @@ +#include +#include +#include +#include +#include + +// This is a quick way to check that checks are valid +#define USE_STD_VECTOR 0 + +class DestructionCounter +{ + public: + DestructionCounter() : + m_counter(nullptr), + m_value(0) + { + } + + DestructionCounter(std::size_t* counter, int value) : + m_counter(counter), + m_value(value) + { + if (m_counter) + (*m_counter)++; + } + + DestructionCounter(const DestructionCounter& counter) : + m_counter(counter.m_counter), + m_value(counter.m_value) + { + if (m_counter) + (*m_counter)++; + } + + DestructionCounter(DestructionCounter&& counter) : + m_counter(counter.m_counter), + m_value(counter.m_value) + { + if (m_counter) + (*m_counter)++; + } + + ~DestructionCounter() + { + if (m_counter) + { + assert(*m_counter > 0); + (*m_counter)--; + } + } + + operator int() const + { + return m_value; + } + + DestructionCounter& operator=(const DestructionCounter& counter) + { + if (m_counter) + { + assert(*m_counter > 0); + (*m_counter)--; + } + + m_counter = counter.m_counter; + m_value = counter.m_value; + + if (m_counter) + (*m_counter)++; + + return *this; + } + + DestructionCounter& operator=(DestructionCounter&& counter) + { + if (this == &counter) + return *this; + + if (m_counter) + { + assert(*m_counter > 0); + (*m_counter)--; + } + + m_counter = counter.m_counter; + m_value = counter.m_value; + + if (m_counter) + (*m_counter)++; + + return *this; + } + + private: + std::size_t* m_counter; + int m_value; +}; + +SCENARIO("StackVector", "[CORE][STACKVECTOR]") +{ + GIVEN("A StackVector to contain multiple int") + { + std::size_t counter = 0; + { + volatile std::size_t capacity = 50; +#if USE_STD_VECTOR + std::vector vector; + vector.reserve(capacity); +#else + Nz::StackVector vector = NazaraStackVector(DestructionCounter, capacity); +#endif + + WHEN("At construction, the vector is empty but has capacity") + { + CHECK(vector.capacity() == capacity); + CHECK(vector.empty()); + CHECK(vector.size() == 0); +#if !USE_STD_VECTOR + CHECK(vector.max_size() == capacity); +#endif + } + + WHEN("Resizing it changes its size and create/destroy elements") + { + vector.resize(vector.capacity()); + CHECK(vector.size() == vector.capacity()); + CHECK(counter == 0); + vector.resize(0); + CHECK(vector.empty()); + CHECK(vector.size() == 0); + CHECK(counter == 0); + } + + WHEN("Resizing it allocates elements") + { + vector.resize(vector.capacity(), DestructionCounter(&counter, 0)); + CHECK(vector.size() == vector.capacity()); + CHECK(counter == capacity); + vector.resize(0); + CHECK(vector.empty()); + CHECK(vector.size() == 0); + CHECK(counter == 0); + } + + WHEN("Emplacing five elements, vector size increase accordingly") + { + for (std::size_t i = 0; i < 5; ++i) + { +#if USE_STD_VECTOR + vector.emplace_back(&counter, int(i)); +#else + CHECK(vector.emplace_back(&counter, int(i)) == int(i)); +#endif + } + + 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) + { + DestructionCounter val(&counter, int(i)); +#if USE_STD_VECTOR + vector.push_back(val); +#else + CHECK(vector.push_back(val) == val); +#endif + } + + 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); + CHECK(counter == 0); + } + } + } + + WHEN("We generate its content will iota") + { + vector.resize(10); + for (std::size_t i = 0; i < vector.size(); ++i) + vector[i] = DestructionCounter(&counter, -5 + int(i)); + + std::array expectedValues = { -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 }; + CHECK(vector.size() == expectedValues.size()); + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + + AND_WHEN("We pop back some elements") + { + for (std::size_t i = 0; i < 5; ++i) + vector.pop_back(); + + std::array expectedValues = { -5, -4, -3, -2, -1 }; + CHECK(vector.size() == expectedValues.size()); + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + AND_WHEN("We erase elements at the beginning") + { + vector.erase(vector.begin()); + vector.erase(vector.begin()); + + std::array expectedValues = { -3, -2, -1, 0, 1, 2, 3, 4 }; + CHECK(vector.size() == expectedValues.size()); + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + AND_WHEN("We erase elements in the middle") + { + vector.erase(vector.begin() + 2); + vector.erase(vector.begin() + 2); + vector.erase(vector.begin() + 6); + + std::array expectedValues = { -5, -4, -1, 0, 1, 2, 4 }; + CHECK(vector.size() == expectedValues.size()); + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + AND_WHEN("We erase elements at the end") + { + vector.erase(vector.end() - 1); + vector.erase(vector.end() - 1); + + std::array expectedValues = { -5, -4, -3, -2, -1, 0, 1, 2 }; + CHECK(vector.size() == expectedValues.size()); + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + AND_WHEN("We erase a range") + { + vector.erase(vector.begin() + 2, vector.end() - 3); + + std::array expectedValues = { -5, -4, 2, 3, 4 }; + CHECK(vector.size() == expectedValues.size()); + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + AND_WHEN("We erase everything") + { + vector.erase(vector.begin(), vector.end()); + + CHECK(vector.empty()); + } + } + + WHEN("We generate its content using emplace") + { + for (std::size_t i = 0; i < 5; ++i) + CHECK(*vector.emplace(vector.end(), &counter, int(i)) == int(i)); + + 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) + CHECK(*vector.emplace(vector.begin(), &counter, int(i)) == int(i)); + + 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) + CHECK(*vector.emplace(vector.begin() + i / 2, &counter, int(i)) == int(i)); + + 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) + CHECK(*vector.insert(vector.end(), DestructionCounter(&counter, int(i))) == int(i)); + + 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) + CHECK(*vector.insert(vector.begin(), DestructionCounter(&counter, int(i))) == int(i)); + + 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) + CHECK(*vector.insert(vector.begin() + i / 2, DestructionCounter(&counter, int(i))) == int(i)); + + 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())); + } + } + + CHECK(counter == 0); + } +} diff --git a/tests/Engine/Graphics/Billboard.cpp b/tests/Engine/Graphics/Billboard.cpp index 5136e3af6..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); @@ -20,7 +19,7 @@ SCENARIO("Billboard", "[GRAPHICS][BILLBOARD]") { REQUIRE(billboard.GetColor() == materialColor); REQUIRE(billboard.GetMaterial().Get() == materialRef.Get()); - REQUIRE(billboard.GetRotation() == 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/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 +} 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]); + } + } } } diff --git a/tests/Engine/Math/Angle.cpp b/tests/Engine/Math/Angle.cpp new file mode 100644 index 000000000..7eddb3d3e --- /dev/null +++ b/tests/Engine/Math/Angle.cpp @@ -0,0 +1,206 @@ +#include +#include +#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.ToDegreeAngle(); + + 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.ToRadianAngle() == 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 sin/cos 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)); + } + } + } + + 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()); + } + } + } + } + + 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 -300deg") + { + Nz::DegreeAnglef angle(-300.f); + + WHEN("We normalize it") + { + angle.Normalize(); + + THEN("It should be equal to a normalized version of itself") + { + Nz::DegreeAnglef expectedResult(60.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.ToRadianAngle(); + + 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.ToDegreeAngle() == 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)); + } + } + + 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") + { + 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); + } + } + } +} 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)); } } } diff --git a/tests/Engine/Network/IpAddress.cpp b/tests/Engine/Network/IpAddress.cpp index abcb65909..571e7ec75 100644 --- a/tests/Engine/Network/IpAddress.cpp +++ b/tests/Engine/Network/IpAddress.cpp @@ -40,7 +40,9 @@ SCENARIO("IpAddress", "[NETWORK][IPADDRESS]") Nz::IpAddress google(8, 8, 8, 8); THEN("Google (DNS) is 8.8.8.8") { - CHECK(Nz::IpAddress::ResolveAddress(google) == "google-public-dns-a.google.com"); + Nz::String dnsAddress = Nz::IpAddress::ResolveAddress(google); + bool dnsCheck = dnsAddress == "google-public-dns-a.google.com" || dnsAddress == "dns.google"; + CHECK(dnsCheck); } } } 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..e554746d8 100644 --- a/tests/Engine/Physics2D/RigidBody2D.cpp +++ b/tests/Engine/Physics2D/RigidBody2D.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include Nz::RigidBody2D CreateBody(Nz::PhysWorld2D& world); @@ -93,6 +94,7 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") std::vector tmp; tmp.push_back(CreateBody(world)); tmp.push_back(CreateBody(world)); + world.Step(1.f); THEN("They should be valid") @@ -112,11 +114,14 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") Nz::Rectf aabb(positionAABB.x, positionAABB.y, 1.f, 2.f); Nz::Collider2DRef box = Nz::BoxCollider2D::New(aabb); float mass = 1.f; - Nz::RigidBody2D body(&world, mass, box); + Nz::RigidBody2D body(&world, mass); + body.SetGeom(box, true, false); + bool userData = false; body.SetUserdata(&userData); Nz::Vector2f position = Nz::Vector2f::Zero(); + body.SetPosition(position); world.Step(1.f); @@ -125,12 +130,12 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") THEN("We expect those to be true") { CHECK(body.GetAABB() == aabb); - CHECK(body.GetAngularVelocity() == Approx(0.f)); - CHECK(body.GetCenterOfGravity() == Nz::Vector2f::Zero()); + CHECK(body.GetAngularVelocity() == 0.f); + CHECK(body.GetMassCenter(Nz::CoordSys_Global) == position); CHECK(body.GetGeom() == box); CHECK(body.GetMass() == Approx(mass)); CHECK(body.GetPosition() == position); - CHECK(body.GetRotation() == Approx(0.f)); + CHECK(body.GetRotation().value == Approx(0.f)); CHECK(body.GetUserdata() == &userData); CHECK(body.GetVelocity() == Nz::Vector2f::Zero()); @@ -150,7 +155,7 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") { aabb.Translate(velocity); CHECK(body.GetAABB() == aabb); - CHECK(body.GetCenterOfGravity() == Nz::Vector2f::Zero()); + CHECK(body.GetMassCenter(Nz::CoordSys_Global) == position); CHECK(body.GetPosition() == position); CHECK(body.GetVelocity() == velocity); } @@ -166,39 +171,38 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") WHEN("We set an angular velocity") { - float angularSpeed = Nz::FromDegrees(90.f); + Nz::RadianAnglef angularSpeed = Nz::RadianAnglef::FromDegrees(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::DegreeAnglef(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().value >= 0.f); + CHECK(body.GetRotation().value >= 0.f); } } } @@ -212,7 +216,9 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") float radius = 5.f; Nz::Collider2DRef circle = Nz::CircleCollider2D::New(radius, position); float mass = 1.f; - Nz::RigidBody2D body(&world, mass, circle); + Nz::RigidBody2D body(&world, mass); + body.SetGeom(circle, true, false); + world.Step(1.f); WHEN("We ask for the aabb of the circle") @@ -241,7 +247,9 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") Nz::CompoundCollider2DRef compound = Nz::CompoundCollider2D::New(colliders); float mass = 1.f; - Nz::RigidBody2D body(&world, mass, compound); + Nz::RigidBody2D body(&world, mass); + body.SetGeom(compound, true, false); + world.Step(1.f); WHEN("We ask for the aabb of the compound") @@ -268,7 +276,9 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") Nz::SparsePtr sparsePtr(vertices.data()); Nz::ConvexCollider2DRef convex = Nz::ConvexCollider2D::New(sparsePtr, vertices.size()); float mass = 1.f; - Nz::RigidBody2D body(&world, mass, convex); + Nz::RigidBody2D body(&world, mass); + body.SetGeom(convex, true, false); + world.Step(1.f); WHEN("We ask for the aabb of the convex") @@ -290,7 +300,9 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") Nz::Vector2f positionB(1.f, -4.f); Nz::Collider2DRef segment = Nz::SegmentCollider2D::New(positionA, positionB, 0.f); float mass = 1.f; - Nz::RigidBody2D body(&world, mass, segment); + Nz::RigidBody2D body(&world, mass); + body.SetGeom(segment, true, false); + world.Step(1.f); WHEN("We ask for the aabb of the segment") @@ -310,19 +322,23 @@ Nz::RigidBody2D CreateBody(Nz::PhysWorld2D& world) Nz::Rectf aabb(positionAABB.x, positionAABB.y, 1.f, 2.f); Nz::Collider2DRef box = Nz::BoxCollider2D::New(aabb); float mass = 1.f; - return Nz::RigidBody2D(&world, mass, box); + + Nz::RigidBody2D body(&world, mass, box); + body.SetPosition(Nz::Vector2f::Zero()); + + return body; } 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.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().value == Approx(right.GetRotation().value)); CHECK(left.GetUserdata() == right.GetUserdata()); CHECK(left.GetVelocity() == right.GetVelocity()); } diff --git a/tests/SDK/NDK/EntityOwner.cpp b/tests/SDK/NDK/EntityOwner.cpp index 2d240a6d0..b7ce87e15 100644 --- a/tests/SDK/NDK/EntityOwner.cpp +++ b/tests/SDK/NDK/EntityOwner.cpp @@ -105,4 +105,25 @@ SCENARIO("EntityOwner", "[NDK][ENTITYOWNER]") } } } + + GIVEN("A vector of EntityOwner") + { + Ndk::World world(false); + + std::vector entityOwners; + for (std::size_t i = 1; i <= 10; ++i) + { + for (const Ndk::EntityHandle& entity : world.CreateEntities(10 * i)) + entityOwners.emplace_back(entity); + + entityOwners.clear(); + world.Refresh(); + + std::size_t aliveEntities = 0; + for (const Ndk::EntityHandle& entity : world.GetEntities()) + aliveEntities++; + + CHECK(aliveEntities == 0); + } + } } diff --git a/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp b/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp index 53808dc42..770f1e190 100644 --- a/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp +++ b/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp @@ -6,7 +6,7 @@ #include #include -Ndk::EntityHandle CreateBaseEntity(Ndk::World& world, const Nz::Vector2f& position, const Nz::Rectf AABB); +Ndk::EntityHandle CreateBaseEntity(Ndk::World& world, const Nz::Vector2f& position, const Nz::Rectf& AABB); SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") { @@ -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") { @@ -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); @@ -80,27 +80,29 @@ SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") Ndk::EntityHandle movingEntity = CreateBaseEntity(world, position, movingAABB); Ndk::NodeComponent& nodeComponent = movingEntity->GetComponent(); Ndk::PhysicsComponent2D& physicsComponent2D = movingEntity->AddComponent(); + physicsComponent2D.SetMassCenter(Nz::Vector2f::Zero()); + physicsComponent2D.SetPosition(position); world.GetSystem().SetFixedUpdateRate(30.f); WHEN("We make rotate our entity") { - float angularSpeed = Nz::FromDegrees(45.f); + Nz::RadianAnglef angularSpeed = Nz::RadianAnglef::FromDegrees(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::FromDegrees(90.f)); CHECK(nodeComponent.GetRotation().ToEulerAngles().roll == Approx(Nz::FromDegrees(90.f))); } } 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); @@ -124,12 +126,14 @@ SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") Ndk::EntityHandle movingEntity = CreateBaseEntity(world, position, movingAABB); Ndk::NodeComponent& nodeComponent = movingEntity->GetComponent(); Ndk::PhysicsComponent2D& physicsComponent2D = movingEntity->AddComponent(); + physicsComponent2D.SetMassCenter(Nz::Vector2f::Zero()); + physicsComponent2D.SetPosition(position); world.GetSystem().SetFixedUpdateRate(30.f); WHEN("We make rotate our entity") { - float angularSpeed = Nz::FromDegrees(45.f); + Nz::RadianAnglef angularSpeed = Nz::RadianAnglef::FromDegrees(45.f); physicsComponent2D.SetAngularVelocity(angularSpeed); world.Update(2.f); @@ -137,7 +141,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))); } @@ -145,7 +149,7 @@ SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") } } -Ndk::EntityHandle CreateBaseEntity(Ndk::World& world, const Nz::Vector2f& position, const Nz::Rectf AABB) +Ndk::EntityHandle CreateBaseEntity(Ndk::World& world, const Nz::Vector2f& position, const Nz::Rectf& AABB) { Ndk::EntityHandle entity = world.CreateEntity(); Ndk::NodeComponent& nodeComponent = entity->AddComponent(); diff --git a/tests/SDK/NDK/Systems/RenderSystem.cpp b/tests/SDK/NDK/Systems/RenderSystem.cpp index ec22d6e57..e30fa3a03 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]") { @@ -76,45 +76,44 @@ 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()); } } WHEN("We set an angular velocity") { - float angularSpeed = Nz::FromDegrees(90.f); + Nz::RadianAnglef angularSpeed = Nz::RadianAnglef::FromDegrees(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.GetAABB() == Nz::Rectf(1.f, 4.f, 2.f, 1.f)); - CompareAABB(physicsComponent2D.GetAABB(), graphicsComponent.GetBoundingVolume()); + CHECK(physicsComponent2D.GetAngularVelocity() == angularSpeed); + CHECK(physicsComponent2D.GetRotation() == angularSpeed); + CHECK(physicsComponent2D.GetAABB() == Nz::Rectf(2.5f, 4.5f, 2.f, 1.f)); + 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()); + CHECK(physicsComponent2D.GetRotation() == 2.f * angularSpeed); + CHECK(physicsComponent2D.GetAABB() == Nz::Rectf(3.f, 4.0f, 1.f, 2.f)); + 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()); + CHECK(physicsComponent2D.GetRotation() == 3.f * angularSpeed); + CHECK(physicsComponent2D.GetAABB() == Nz::Rectf(2.5f, 4.5f, 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); } } } } -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)); CHECK(aabb.height == Approx(box.height)); -} \ No newline at end of file +} diff --git a/tests/SDK/NDK/World.cpp b/tests/SDK/NDK/World.cpp index 4d25db5f6..f98a7e2e1 100644 --- a/tests/SDK/NDK/World.cpp +++ b/tests/SDK/NDK/World.cpp @@ -100,4 +100,63 @@ 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()); + } + } + } + + GIVEN("An empty world") + { + Ndk::World world(false); + + WHEN("We create two entities") + { + Ndk::EntityHandle a = world.CreateEntity(); + REQUIRE(a->GetId() == 0); + Ndk::EntityHandle b = world.CreateEntity(); + REQUIRE(b->GetId() == 1); + + b->OnEntityDestruction.Connect([a](Ndk::Entity*) + { + REQUIRE(a.IsValid()); + a->Kill(); + }); + + THEN("We kill the second entity which will kill the first one") + { + b->Kill(); + world.Refresh(); + + AND_THEN("Both entities should be dead next refresh") + { + world.Refresh(); + + REQUIRE_FALSE(a.IsValid()); + REQUIRE_FALSE(b.IsValid()); + } + } + } + } +} diff --git a/thirdparty/include/GL3/glcorearb.h b/thirdparty/include/GL/glcorearb.h similarity index 100% rename from thirdparty/include/GL3/glcorearb.h rename to thirdparty/include/GL/glcorearb.h diff --git a/thirdparty/include/GL3/glext.h b/thirdparty/include/GL/glext.h similarity index 100% rename from thirdparty/include/GL3/glext.h rename to thirdparty/include/GL/glext.h diff --git a/thirdparty/include/GL3/glxext.h b/thirdparty/include/GL/glxext.h similarity index 100% rename from thirdparty/include/GL3/glxext.h rename to thirdparty/include/GL/glxext.h diff --git a/thirdparty/include/GL3/wglext.h b/thirdparty/include/GL/wglext.h similarity index 100% rename from thirdparty/include/GL3/wglext.h rename to thirdparty/include/GL/wglext.h diff --git a/thirdparty/src/Lua/loadlib.cpp b/thirdparty/src/Lua/loadlib.cpp index a20e68efc..f5319da42 100644 --- a/thirdparty/src/Lua/loadlib.cpp +++ b/thirdparty/src/Lua/loadlib.cpp @@ -176,6 +176,8 @@ static lua_CFunction lsys_sym (lua_State *L, void *lib, const char *sym) { ** ======================================================================= */ +#define WIN32_LEAN_AND_MEAN + #include #undef setprogdir diff --git a/thirdparty/src/chipmunk/chipmunk.c b/thirdparty/src/chipmunk/chipmunk.c index 503265cf6..a6cc9d6d4 100644 --- a/thirdparty/src/chipmunk/chipmunk.c +++ b/thirdparty/src/chipmunk/chipmunk.c @@ -89,7 +89,7 @@ cpAreaForSegment(cpVect a, cpVect b, cpFloat r) } cpFloat -cpMomentForPoly(cpFloat m, const int count, const cpVect *verts, cpVect offset, cpFloat r) +cpMomentForPoly(cpFloat m, int count, const cpVect *verts, cpVect offset, cpFloat r) { // TODO account for radius. if(count == 2) return cpMomentForSegment(m, verts[0], verts[1], 0.0f);