diff --git a/Programs/Simian/Extensions/AssetManager.cs b/Programs/Simian/Extensions/AssetManager.cs index ca63e1db..7648d9b4 100644 --- a/Programs/Simian/Extensions/AssetManager.cs +++ b/Programs/Simian/Extensions/AssetManager.cs @@ -169,6 +169,7 @@ namespace Simian string[] clothing = Directory.GetFiles(path, "*.clothing", SearchOption.TopDirectoryOnly); string[] bodyparts = Directory.GetFiles(path, "*.bodypart", SearchOption.TopDirectoryOnly); string[] sounds = Directory.GetFiles(path, "*.ogg", SearchOption.TopDirectoryOnly); + string[] scripts = Directory.GetFiles(path, "*.lsl", SearchOption.TopDirectoryOnly); for (int i = 0; i < textures.Length; i++) { @@ -201,6 +202,14 @@ namespace Simian asset.Temporary = true; StoreAsset(asset); } + + for (int i = 0; i < scripts.Length; i++) + { + UUID assetID = ParseUUIDFromFilename(scripts[i]); + Asset asset = new AssetScriptText(assetID, File.ReadAllBytes(scripts[i])); + asset.Temporary = true; + StoreAsset(asset); + } } catch (Exception ex) { diff --git a/Programs/Simian/Extensions/SceneManager.cs b/Programs/Simian/Extensions/SceneManager.cs index 210fa90f..dacaef76 100644 --- a/Programs/Simian/Extensions/SceneManager.cs +++ b/Programs/Simian/Extensions/SceneManager.cs @@ -247,11 +247,11 @@ namespace Simian #region Object Interfaces - public void ObjectAddOrUpdate(object sender, SimulationObject obj, UUID ownerID, int scriptStartParam, PrimFlags creatorFlags, UpdateFlags updateFlags) + public void ObjectAddOrUpdate(object sender, SimulationObject obj, UUID ownerID, PrimFlags creatorFlags, UpdateFlags updateFlags) { if (OnObjectAddOrUpdate != null) { - OnObjectAddOrUpdate(sender, obj, ownerID, scriptStartParam, creatorFlags, updateFlags); + OnObjectAddOrUpdate(sender, obj, ownerID, creatorFlags, updateFlags); } #region Initialize new objects @@ -493,7 +493,7 @@ namespace Simian obj.Prim = prim; // Inform clients - ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.FullUpdate); + ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, PrimFlags.None, UpdateFlags.FullUpdate); } else { @@ -518,7 +518,7 @@ namespace Simian obj.Prim = prim; // Inform clients - ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.FullUpdate); + ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, PrimFlags.None, UpdateFlags.FullUpdate); } else { @@ -1223,7 +1223,7 @@ namespace Simian void CompleteAgentMovementHandler(Packet packet, Agent agent) { // Add this avatar as an object in the scene - ObjectAddOrUpdate(this, agent.Avatar, agent.Avatar.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.FullUpdate); + ObjectAddOrUpdate(this, agent.Avatar, agent.Avatar.Prim.OwnerID, PrimFlags.None, UpdateFlags.FullUpdate); // Send a response back to the client AgentMovementCompletePacket complete = new AgentMovementCompletePacket(); diff --git a/Programs/Simian/Interfaces/ISceneProvider.cs b/Programs/Simian/Interfaces/ISceneProvider.cs index 55fdb8f2..8a825608 100644 --- a/Programs/Simian/Interfaces/ISceneProvider.cs +++ b/Programs/Simian/Interfaces/ISceneProvider.cs @@ -89,7 +89,7 @@ namespace Simian #region Scene delegates - public delegate void ObjectAddOrUpdateCallback(object sender, SimulationObject obj, UUID ownerID, int scriptStartParam, PrimFlags creatorFlags, UpdateFlags updateFlags); + public delegate void ObjectAddOrUpdateCallback(object sender, SimulationObject obj, UUID ownerID, PrimFlags creatorFlags, UpdateFlags updateFlags); public delegate void ObjectRemoveCallback(object sender, SimulationObject obj); public delegate void ObjectSetRotationAxisCallback(object sender, SimulationObject obj, Vector3 rotationAxis); public delegate void ObjectApplyImpulseCallback(object sender, SimulationObject obj, Vector3 impulse); @@ -158,7 +158,7 @@ namespace Simian bool Start(Simian server, RegionInfo regionInfo, X509Certificate2 regionCert, string defaultTerrainFile, int staticObjects, int physicalObjects); void Stop(); - void ObjectAddOrUpdate(object sender, SimulationObject obj, UUID ownerID, int scriptStartParam, PrimFlags creatorFlags, UpdateFlags updateFlags); + void ObjectAddOrUpdate(object sender, SimulationObject obj, UUID ownerID, PrimFlags creatorFlags, UpdateFlags updateFlags); bool ObjectRemove(object sender, uint localID); bool ObjectRemove(object sender, UUID id); void ObjectSetRotationAxis(object sender, SimulationObject obj, Vector3 rotationAxis); diff --git a/Programs/Simian/Interfaces/IScriptEngine.cs b/Programs/Simian/Interfaces/IScriptEngine.cs index 1dcbf480..a8eb6f2e 100644 --- a/Programs/Simian/Interfaces/IScriptEngine.cs +++ b/Programs/Simian/Interfaces/IScriptEngine.cs @@ -73,10 +73,56 @@ namespace Simian } } + public class ScriptInstance + { + public bool Running; + public bool ShuttingDown; + public string State; + public UUID AppDomain; + //public string PrimName; + //public string ScriptName; + public UUID ScriptItemID; + public UUID ScriptAssetID; + public UUID HostObjectID; + public int StartParam; + + ISceneProvider scene; + + public ScriptInstance() + { + } + + public void Start() + { + } + + public void Stop() + { + } + + public void SetState(string state) + { + } + + public void PostEvent(EventParams data) + { + } + + public void ClearQueue() + { + } + + public void RemoveState() + { + } + } + #endregion Scripting Support Classes public interface IScriptEngine { + bool RezScript(UUID scriptID, UUID scriptSourceAssetID, SimulationObject hostObject, int startParam); + bool PostScriptEvent(UUID scriptID, EventParams parms); bool PostObjectEvent(UUID hostObjectID, EventParams parms); @@ -84,8 +130,8 @@ namespace Simian DetectParams GetDetectParams(UUID scriptID, int detectIndex); - bool GetScriptState(UUID scriptID); - void SetScriptState(UUID scriptID, bool state); + bool IsScriptEnabled(UUID scriptID); + void SetScriptEnabled(UUID scriptID, bool enabled); void SetStartParameter(UUID scriptID, int startParam); int GetStartParameter(UUID scriptID); diff --git a/Programs/Simian/LLUDP/LLAssets.cs b/Programs/Simian/LLUDP/LLAssets.cs index 361a3eb3..af532df2 100644 --- a/Programs/Simian/LLUDP/LLAssets.cs +++ b/Programs/Simian/LLUDP/LLAssets.cs @@ -266,6 +266,87 @@ namespace Simian #region Transfer System + void TransferDownload(UUID agentID, UUID transferID, UUID assetID, AssetType type, Asset asset) + { + if (type == asset.AssetType) + { + Logger.DebugLog(String.Format("Transferring asset {0} ({1})", asset.AssetID, asset.AssetType)); + + TransferInfoPacket response = new TransferInfoPacket(); + response.TransferInfo = new TransferInfoPacket.TransferInfoBlock(); + response.TransferInfo.TransferID = transferID; + + // Set the response channel type + response.TransferInfo.ChannelType = (int)ChannelType.Asset; + + // Params + response.TransferInfo.Params = new byte[20]; + assetID.ToBytes(response.TransferInfo.Params, 0); + Utils.IntToBytes((int)type, response.TransferInfo.Params, 16); + + response.TransferInfo.Size = asset.AssetData.Length; + response.TransferInfo.Status = (int)StatusCode.OK; + response.TransferInfo.TargetType = (int)TargetType.Unknown; // Doesn't seem to be used by the client + + scene.UDP.SendPacket(agentID, response, PacketCategory.Asset); + + // Transfer system does not wait for ACKs, just sends all of the + // packets for this transfer out + const int MAX_CHUNK_SIZE = Settings.MAX_PACKET_SIZE - 100; + int processedLength = 0; + int packetNum = 0; + while (processedLength < asset.AssetData.Length) + { + TransferPacketPacket transfer = new TransferPacketPacket(); + transfer.TransferData.ChannelType = (int)ChannelType.Asset; + transfer.TransferData.TransferID = transferID; + transfer.TransferData.Packet = packetNum++; + + int chunkSize = Math.Min(asset.AssetData.Length - processedLength, MAX_CHUNK_SIZE); + transfer.TransferData.Data = new byte[chunkSize]; + Buffer.BlockCopy(asset.AssetData, processedLength, transfer.TransferData.Data, 0, chunkSize); + processedLength += chunkSize; + + if (processedLength >= asset.AssetData.Length) + transfer.TransferData.Status = (int)StatusCode.Done; + else + transfer.TransferData.Status = (int)StatusCode.OK; + + scene.UDP.SendPacket(agentID, transfer, PacketCategory.Asset); + } + } + else + { + Logger.Log(String.Format("Request for asset {0} with type {1} does not match actual asset type {2}", + assetID, type, asset.AssetType), Helpers.LogLevel.Warning); + + TransferNotFound(agentID, transferID, assetID, type); + } + } + + void TransferNotFound(UUID agentID, UUID transferID, UUID assetID, AssetType type) + { + Logger.Log("TransferNotFound for asset " + assetID + " with type " + type, Helpers.LogLevel.Info); + + TransferInfoPacket response = new TransferInfoPacket(); + response.TransferInfo = new TransferInfoPacket.TransferInfoBlock(); + response.TransferInfo.TransferID = transferID; + + // Set the response channel type + response.TransferInfo.ChannelType = (int)ChannelType.Asset; + + // Params + response.TransferInfo.Params = new byte[20]; + assetID.ToBytes(response.TransferInfo.Params, 0); + Utils.IntToBytes((int)type, response.TransferInfo.Params, 16); + + response.TransferInfo.Size = 0; + response.TransferInfo.Status = (int)StatusCode.UnknownSource; + response.TransferInfo.TargetType = (int)TargetType.Unknown; + + scene.UDP.SendPacket(agentID, response, PacketCategory.Asset); + } + void TransferRequestHandler(Packet packet, Agent agent) { TransferRequestPacket request = (TransferRequestPacket)packet; @@ -275,92 +356,18 @@ namespace Simian if (channel == ChannelType.Asset) { - // Construct the response packet - TransferInfoPacket response = new TransferInfoPacket(); - response.TransferInfo = new TransferInfoPacket.TransferInfoBlock(); - response.TransferInfo.TransferID = request.TransferInfo.TransferID; - if (source == SourceType.Asset) { // Parse the request UUID assetID = new UUID(request.TransferInfo.Params, 0); AssetType type = (AssetType)(sbyte)Utils.BytesToInt(request.TransferInfo.Params, 16); - // Set the response channel type - response.TransferInfo.ChannelType = (int)ChannelType.Asset; - - // Params - response.TransferInfo.Params = new byte[20]; - Buffer.BlockCopy(assetID.GetBytes(), 0, response.TransferInfo.Params, 0, 16); - Buffer.BlockCopy(Utils.IntToBytes((int)type), 0, response.TransferInfo.Params, 16, 4); - // Check if we have this asset Asset asset; if (scene.Server.Assets.TryGetAsset(assetID, out asset)) - { - if (asset.AssetType == type) - { - Logger.DebugLog(String.Format("Transferring asset {0} ({1})", asset.AssetID, asset.AssetType)); - - // Asset found - response.TransferInfo.Size = asset.AssetData.Length; - response.TransferInfo.Status = (int)StatusCode.OK; - response.TransferInfo.TargetType = (int)TargetType.Unknown; // Doesn't seem to be used by the client - - scene.UDP.SendPacket(agent.ID, response, PacketCategory.Asset); - - // Transfer system does not wait for ACKs, just sends all of the - // packets for this transfer out - const int MAX_CHUNK_SIZE = Settings.MAX_PACKET_SIZE - 100; - int processedLength = 0; - int packetNum = 0; - while (processedLength < asset.AssetData.Length) - { - TransferPacketPacket transfer = new TransferPacketPacket(); - transfer.TransferData.ChannelType = (int)ChannelType.Asset; - transfer.TransferData.TransferID = request.TransferInfo.TransferID; - transfer.TransferData.Packet = packetNum++; - - int chunkSize = Math.Min(asset.AssetData.Length - processedLength, MAX_CHUNK_SIZE); - transfer.TransferData.Data = new byte[chunkSize]; - Buffer.BlockCopy(asset.AssetData, processedLength, transfer.TransferData.Data, 0, chunkSize); - processedLength += chunkSize; - - if (processedLength >= asset.AssetData.Length) - transfer.TransferData.Status = (int)StatusCode.Done; - else - transfer.TransferData.Status = (int)StatusCode.OK; - - scene.UDP.SendPacket(agent.ID, transfer, PacketCategory.Asset); - } - } - else - { - Logger.Log(String.Format( - "Request for asset {0} with type {1} does not match actual asset type {2}", - assetID, type, asset.AssetType), Helpers.LogLevel.Warning); - } - } + TransferDownload(agent.ID, request.TransferInfo.TransferID, assetID, type, asset); else - { - Logger.Log(String.Format("Request for missing asset {0} with type {1}", - assetID, type), Helpers.LogLevel.Warning); - - // Asset not found - response.TransferInfo.Size = 0; - response.TransferInfo.Status = (int)StatusCode.UnknownSource; - response.TransferInfo.TargetType = (int)TargetType.Unknown; - - scene.UDP.SendPacket(agent.ID, response, PacketCategory.Asset); - } - } - else if (source == SourceType.SimEstate) - { - UUID agentID = new UUID(request.TransferInfo.Params, 0); - UUID sessionID = new UUID(request.TransferInfo.Params, 16); - EstateAssetType type = (EstateAssetType)Utils.BytesToInt(request.TransferInfo.Params, 32); - - Logger.Log("Please implement estate asset transfers", Helpers.LogLevel.Warning); + TransferNotFound(agent.ID, request.TransferInfo.TransferID, assetID, type); } else if (source == SourceType.SimInventoryItem) { @@ -372,16 +379,23 @@ namespace Simian UUID assetID = new UUID(request.TransferInfo.Params, 80); AssetType type = (AssetType)(sbyte)Utils.BytesToInt(request.TransferInfo.Params, 96); - if (taskID != UUID.Zero) - { - // Task (prim) inventory request - Logger.Log("Please implement task inventory transfers", Helpers.LogLevel.Warning); - } + //if (taskID != UUID.Zero) // Task (prim) inventory request + //else // Agent inventory request + + // Check if we have this asset + Asset asset; + if (scene.Server.Assets.TryGetAsset(assetID, out asset)) + TransferDownload(agent.ID, request.TransferInfo.TransferID, assetID, type, asset); else - { - // Agent inventory request - Logger.Log("Please implement agent inventory transfer", Helpers.LogLevel.Warning); - } + TransferNotFound(agent.ID, request.TransferInfo.TransferID, assetID, type); + } + else if (source == SourceType.SimEstate) + { + UUID agentID = new UUID(request.TransferInfo.Params, 0); + UUID sessionID = new UUID(request.TransferInfo.Params, 16); + EstateAssetType type = (EstateAssetType)Utils.BytesToInt(request.TransferInfo.Params, 32); + + Logger.Log("Please implement estate asset transfers", Helpers.LogLevel.Warning); } else { diff --git a/Programs/Simian/LLUDP/LLMovement.cs b/Programs/Simian/LLUDP/LLMovement.cs index a5aaadaa..ebd363a1 100644 --- a/Programs/Simian/LLUDP/LLMovement.cs +++ b/Programs/Simian/LLUDP/LLMovement.cs @@ -79,7 +79,7 @@ namespace Simian obj.Prim.Scale.Z * 0.5f, agent.Avatar.Prim.Scale.Z * 0.33f); - scene.ObjectAddOrUpdate(this, avObj, avObj.Prim.OwnerID, 0, PrimFlags.None, + scene.ObjectAddOrUpdate(this, avObj, avObj.Prim.OwnerID, PrimFlags.None, UpdateFlags.PrimFlags | UpdateFlags.ParentID | UpdateFlags.Position); scene.Avatars.SetDefaultAnimation(agent, Animations.SIT); scene.Avatars.SendAnimations(agent); @@ -126,7 +126,7 @@ namespace Simian agent.Avatar.Prim.Flags |= PrimFlags.Physics; } - scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Position | UpdateFlags.Rotation); + scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, PrimFlags.None, UpdateFlags.Position | UpdateFlags.Rotation); } } diff --git a/Programs/Simian/LLUDP/LLObjects.cs b/Programs/Simian/LLUDP/LLObjects.cs index c88f33f2..764eb65b 100644 --- a/Programs/Simian/LLUDP/LLObjects.cs +++ b/Programs/Simian/LLUDP/LLObjects.cs @@ -164,7 +164,7 @@ namespace Simian // Add this prim to the object database SimulationObject simObj = new SimulationObject(prim, scene); - scene.ObjectAddOrUpdate(this, simObj, agent.ID, 0, flags, UpdateFlags.FullUpdate); + scene.ObjectAddOrUpdate(this, simObj, agent.ID, flags, UpdateFlags.FullUpdate); } void ObjectAttachHandler(Packet packet, Agent agent) @@ -186,7 +186,7 @@ namespace Simian obj.Prim.PrimData.AttachmentPoint = (point == AttachmentPoint.Default ? obj.LastAttachmentPoint : point); // Send an update out to everyone - scene.ObjectAddOrUpdate(this, obj, agent.ID, 0, obj.Prim.Flags, + scene.ObjectAddOrUpdate(this, obj, agent.ID, obj.Prim.Flags, UpdateFlags.ParentID | UpdateFlags.Position | UpdateFlags.Rotation | UpdateFlags.AttachmentPoint); } } @@ -212,7 +212,7 @@ namespace Simian newObj.Prim.LocalID = 0; newObj.Prim.Properties.CreationDate = DateTime.Now; - scene.ObjectAddOrUpdate(this, newObj, agent.ID, 0, flags, UpdateFlags.FullUpdate); + scene.ObjectAddOrUpdate(this, newObj, agent.ID, flags, UpdateFlags.FullUpdate); } else { @@ -360,7 +360,7 @@ namespace Simian linkSet[i].Prim.ParentID = 0; } - scene.ObjectAddOrUpdate(this, linkSet[i], agent.ID, 0, linkSet[i].Prim.Flags, + scene.ObjectAddOrUpdate(this, linkSet[i], agent.ID, linkSet[i].Prim.Flags, UpdateFlags.Position | UpdateFlags.Rotation | UpdateFlags.ParentID); } } @@ -402,7 +402,7 @@ namespace Simian linkSet[i].Prim.Rotation *= linkSet[0].Prim.Rotation; } - scene.ObjectAddOrUpdate(this, linkSet[i], agent.ID, 0, linkSet[i].Prim.Flags, + scene.ObjectAddOrUpdate(this, linkSet[i], agent.ID, linkSet[i].Prim.Flags, UpdateFlags.Position | UpdateFlags.Rotation | UpdateFlags.ParentID); } } @@ -440,7 +440,7 @@ namespace Simian data.ProfileHollow = Primitive.UnpackProfileHollow(block.ProfileHollow); obj.Prim.PrimData = data; - scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.PrimData); + scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, PrimFlags.None, UpdateFlags.PrimData); } else { @@ -480,7 +480,7 @@ namespace Simian flags &= ~PrimFlags.Physics; obj.Prim.Flags = flags; - scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.PrimFlags); + scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, PrimFlags.None, UpdateFlags.PrimFlags); } else { @@ -533,7 +533,7 @@ namespace Simian } } - scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.ExtraData); + scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, PrimFlags.None, UpdateFlags.ExtraData); } } } @@ -549,7 +549,7 @@ namespace Simian { obj.Prim.MediaURL = Utils.BytesToString(image.ObjectData[i].MediaURL); obj.Prim.Textures = new Primitive.TextureEntry(image.ObjectData[i].TextureEntry, 0, image.ObjectData[i].TextureEntry.Length); - scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.MediaURL | UpdateFlags.Textures); + scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, PrimFlags.None, UpdateFlags.MediaURL | UpdateFlags.Textures); } } } @@ -626,7 +626,7 @@ namespace Simian obj.Prim.Rotation = rotation; if (scaled) obj.Prim.Scale = scale; - scene.ObjectAddOrUpdate(this, obj, agent.ID, 0, PrimFlags.None, updateFlags); + scene.ObjectAddOrUpdate(this, obj, agent.ID, PrimFlags.None, updateFlags); } else { diff --git a/Programs/Simian/LLUDP/LLTaskInventory.cs b/Programs/Simian/LLUDP/LLTaskInventory.cs index 38726fd3..def9a202 100644 --- a/Programs/Simian/LLUDP/LLTaskInventory.cs +++ b/Programs/Simian/LLUDP/LLTaskInventory.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Text; using System.Threading; using ExtensionLoader; using OpenMetaverse; @@ -9,6 +10,8 @@ namespace Simian { public class LLTaskInventory : IExtension { + static readonly UUID DEFAULT_SCRIPT = new UUID("a7f70b8e-b2ee-46bb-85c0-5d973137cd47"); + ISceneProvider scene; public LLTaskInventory() @@ -21,6 +24,7 @@ namespace Simian scene.UDP.RegisterPacketCallback(PacketType.RequestTaskInventory, RequestTaskInventoryHandler); scene.UDP.RegisterPacketCallback(PacketType.UpdateTaskInventory, UpdateTaskInventoryHandler); + scene.UDP.RegisterPacketCallback(PacketType.RezScript, RezScriptHandler); scene.UDP.RegisterPacketCallback(PacketType.RemoveTaskInventory, RemoveTaskInventoryHandler); scene.UDP.RegisterPacketCallback(PacketType.MoveTaskInventory, MoveTaskInventoryHandler); return true; @@ -54,101 +58,155 @@ namespace Simian InventoryTaskItem item; SimulationObject targetObj; InventoryObject invObj; - - if (update.UpdateData.Key == 0) + + if (update.UpdateData.Key != 0) { - if (scene.TryGetObject(update.UpdateData.LocalID, out targetObj)) + Logger.Log("Got an UpdateTaskInventory packet with a Key of " + update.UpdateData.Key, + Helpers.LogLevel.Warning); + return; + } + + if (scene.TryGetObject(update.UpdateData.LocalID, out targetObj)) + { + if (update.InventoryData.ItemID != UUID.Zero) { if (targetObj.Inventory.TryGetItem(update.InventoryData.ItemID, out item)) { // Updating an existing item in the task inventory - } - else if (scene.Server.Inventory.TryGetInventory(agent.ID, update.InventoryData.ItemID, out invObj)) - { - // Create a new item in the task inventory - if (invObj is InventoryItem) - { - InventoryItem fromItem = (InventoryItem)invObj; - - item = new InventoryTaskItem(); - //item.ID will be assigned in AddOrUpdateItem - item.AssetID = fromItem.AssetID; - item.AssetType = fromItem.AssetType; - item.CreationDate = fromItem.CreationDate; - item.CreatorID = fromItem.CreatorID; - item.Description = fromItem.Description; - item.Flags = fromItem.Flags; - item.GrantedPermissions = 0; - item.GroupID = fromItem.GroupID; - item.GroupOwned = fromItem.GroupOwned; - item.InventoryType = fromItem.InventoryType; - item.Name = fromItem.Name; - item.OwnerID = agent.ID; - item.ParentID = update.InventoryData.FolderID; - item.Parent = null; // TODO: Try to find a parent folder in task inventory? - item.ParentObjectID = targetObj.Prim.ID; - item.PermissionGranter = UUID.Zero; - item.Permissions = fromItem.Permissions.GetNextPermissions(); - item.SalePrice = fromItem.SalePrice; - item.SaleType = fromItem.SaleType; - - bool allowDrop = (targetObj.Prim.Flags & PrimFlags.AllowInventoryDrop) != 0; - - targetObj.Inventory.AddOrUpdateItem(item, false, allowDrop); - Logger.Log("Created new task inventory item: " + item.Name, Helpers.LogLevel.Info); - - // Send an ObjectPropertiesReply to inform the client that inventory has changed - ObjectPropertiesPacket props = new ObjectPropertiesPacket(); - props.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; - props.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock(); - props.ObjectData[0].AggregatePerms = targetObj.Prim.Properties.AggregatePerms; - props.ObjectData[0].AggregatePermTextures = targetObj.Prim.Properties.AggregatePermTextures; - props.ObjectData[0].AggregatePermTexturesOwner = targetObj.Prim.Properties.AggregatePermTexturesOwner; - props.ObjectData[0].BaseMask = (uint)targetObj.Prim.Properties.Permissions.BaseMask; - props.ObjectData[0].Category = (uint)targetObj.Prim.Properties.Category; - props.ObjectData[0].CreationDate = Utils.DateTimeToUnixTime(targetObj.Prim.Properties.CreationDate); - props.ObjectData[0].CreatorID = targetObj.Prim.Properties.CreatorID; - props.ObjectData[0].Description = Utils.StringToBytes(targetObj.Prim.Properties.Description); - props.ObjectData[0].EveryoneMask = (uint)targetObj.Prim.Properties.Permissions.EveryoneMask; - props.ObjectData[0].FolderID = targetObj.Prim.Properties.FolderID; - props.ObjectData[0].FromTaskID = targetObj.Prim.Properties.FromTaskID; - props.ObjectData[0].GroupID = targetObj.Prim.Properties.GroupID; - props.ObjectData[0].GroupMask = (uint)targetObj.Prim.Properties.Permissions.GroupMask; - props.ObjectData[0].InventorySerial = targetObj.Prim.Properties.InventorySerial; - props.ObjectData[0].ItemID = targetObj.Prim.Properties.ItemID; - props.ObjectData[0].LastOwnerID = targetObj.Prim.Properties.LastOwnerID; - props.ObjectData[0].Name = Utils.StringToBytes(targetObj.Prim.Properties.Name); - props.ObjectData[0].NextOwnerMask = (uint)targetObj.Prim.Properties.Permissions.NextOwnerMask; - props.ObjectData[0].ObjectID = targetObj.Prim.ID; - props.ObjectData[0].OwnerID = targetObj.Prim.Properties.OwnerID; - props.ObjectData[0].OwnerMask = (uint)targetObj.Prim.Properties.Permissions.OwnerMask; - props.ObjectData[0].OwnershipCost = targetObj.Prim.Properties.OwnershipCost; - props.ObjectData[0].SalePrice = targetObj.Prim.Properties.SalePrice; - props.ObjectData[0].SaleType = (byte)targetObj.Prim.Properties.SaleType; - props.ObjectData[0].SitName = Utils.StringToBytes(targetObj.Prim.Properties.SitName); - props.ObjectData[0].TextureID = targetObj.Prim.Properties.GetTextureIDBytes(); - props.ObjectData[0].TouchName = Utils.StringToBytes(targetObj.Prim.Properties.TouchName); - - scene.UDP.SendPacket(agent.ID, props, PacketCategory.Transaction); - } - else - { - Logger.Log("[TODO] Handle dropping folders in task inventory", Helpers.LogLevel.Warning); - } + Logger.Log("[TODO] Implement updating task inventory items", Helpers.LogLevel.Error); } else { - Logger.Log("Got an UpdateTaskInventory packet referencing an unknown inventory item", Helpers.LogLevel.Warning); + Logger.Log("UpdateTaskInventory for unknown inventory item " + update.InventoryData.ItemID, Helpers.LogLevel.Warning); + } + } + else if (scene.Server.Inventory.TryGetInventory(agent.ID, update.InventoryData.ItemID, out invObj)) + { + // Create a new item in the task inventory + if (invObj is InventoryItem) + { + InventoryItem fromItem = (InventoryItem)invObj; + + item = new InventoryTaskItem(); + //item.ID will be assigned in AddOrUpdateItem + item.AssetID = fromItem.AssetID; + item.AssetType = fromItem.AssetType; + item.CreationDate = fromItem.CreationDate; + item.CreatorID = fromItem.CreatorID; + item.Description = fromItem.Description; + item.Flags = fromItem.Flags; + item.GrantedPermissions = 0; + item.GroupID = fromItem.GroupID; + item.GroupOwned = fromItem.GroupOwned; + item.InventoryType = fromItem.InventoryType; + item.Name = fromItem.Name; + item.OwnerID = agent.ID; + item.ParentID = update.InventoryData.FolderID; + item.Parent = null; // TODO: Try to find a parent folder in task inventory? + item.ParentObjectID = targetObj.Prim.ID; + item.PermissionGranter = UUID.Zero; + item.Permissions = fromItem.Permissions.GetNextPermissions(); + item.SalePrice = fromItem.SalePrice; + item.SaleType = fromItem.SaleType; + + bool allowDrop = (targetObj.Prim.Flags & PrimFlags.AllowInventoryDrop) != 0; + + targetObj.Inventory.AddOrUpdateItem(item, false, allowDrop); + Logger.Log("Created new task inventory item: " + item.Name, Helpers.LogLevel.Info); + + // Send an ObjectPropertiesReply to inform the client that inventory has changed + ObjectPropertiesPacket props = new ObjectPropertiesPacket(); + props.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; + props.ObjectData[0] = SimulationObject.BuildPropertiesBlock(targetObj.Prim); + scene.UDP.SendPacket(agent.ID, props, PacketCategory.Transaction); + } + else + { + Logger.Log("[TODO] Handle dropping folders in task inventory", Helpers.LogLevel.Warning); } } else { - Logger.Log("Got an UpdateTaskInventory packet referencing an unknown object", Helpers.LogLevel.Warning); + Logger.Log("Got an UpdateTaskInventory packet referencing an unknown inventory item", Helpers.LogLevel.Warning); } } else { - Logger.Log("Got an UpdateTaskInventory packet with a Key of " + update.UpdateData.Key, Helpers.LogLevel.Warning); + Logger.Log("Got an UpdateTaskInventory packet referencing an unknown object", Helpers.LogLevel.Warning); + } + } + + void RezScriptHandler(Packet packet, Agent agent) + { + RezScriptPacket rez = (RezScriptPacket)packet; + + InventoryTaskItem scriptItem; + SimulationObject targetObj; + InventoryObject invObj; + + if (scene.TryGetObject(rez.UpdateBlock.ObjectLocalID, out targetObj)) + { + if (rez.InventoryBlock.ItemID != UUID.Zero) + { + if (scene.Server.Inventory.TryGetInventory(agent.ID, rez.InventoryBlock.ItemID, out invObj)) + { + // Rezzing a script from agent inventory + Asset defaultScript; + if (scene.Server.Assets.TryGetAsset(DEFAULT_SCRIPT, out defaultScript)) + { + Logger.Log("[TODO] RezScript from agent inventory", Helpers.LogLevel.Error); + } + } + else + { + Logger.Log("RezScript for unknown inventory item " + rez.InventoryBlock.ItemID, Helpers.LogLevel.Warning); + } + } + else + { + // Rezzing a new script + scriptItem = new InventoryTaskItem(); + scriptItem.AssetID = DEFAULT_SCRIPT; + scriptItem.AssetType = AssetType.LSLText; + scriptItem.CreationDate = DateTime.Now; + scriptItem.CreatorID = agent.ID; + scriptItem.Description = String.Empty; + scriptItem.Flags = 0; + scriptItem.GrantedPermissions = 0; + scriptItem.GroupID = UUID.Zero; + scriptItem.GroupOwned = false; + scriptItem.ID = UUID.Random(); + scriptItem.InventoryType = InventoryType.LSL; + scriptItem.Name = "New script"; + scriptItem.OwnerID = agent.ID; + scriptItem.ParentID = rez.InventoryBlock.FolderID; + scriptItem.Parent = null; // TODO: Try to find a parent folder in task inventory? + scriptItem.ParentObjectID = targetObj.Prim.ID; + scriptItem.PermissionGranter = UUID.Zero; + scriptItem.Permissions = scene.Server.Permissions.GetDefaultPermissions(); + scriptItem.SalePrice = 10; + scriptItem.SaleType = SaleType.Not; + + targetObj.Inventory.AddOrUpdateItem(scriptItem, false, false); + Logger.Log("Created new task inventory script: " + scriptItem.Name, Helpers.LogLevel.Info); + + // Send an ObjectPropertiesReply to inform the client that inventory has changed + ObjectPropertiesPacket props = new ObjectPropertiesPacket(); + props.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; + props.ObjectData[0] = SimulationObject.BuildPropertiesBlock(targetObj.Prim); + scene.UDP.SendPacket(agent.ID, props, PacketCategory.Transaction); + + // Mark this object as scripted + targetObj.Prim.Flags |= PrimFlags.Scripted; + scene.ObjectAddOrUpdate(this, targetObj, targetObj.Prim.OwnerID, PrimFlags.None, UpdateFlags.PrimFlags); + + // Run the script + scene.ScriptEngine.RezScript(scriptItem.ID, scriptItem.AssetID, targetObj, 0); + } + } + else + { + Logger.Log("Got a RezScript packet referencing an unknown object", Helpers.LogLevel.Warning); } } diff --git a/Programs/Simian/SceneExtensions/Periscope.cs b/Programs/Simian/SceneExtensions/Periscope.cs index 6487b701..e1087628 100644 --- a/Programs/Simian/SceneExtensions/Periscope.cs +++ b/Programs/Simian/SceneExtensions/Periscope.cs @@ -79,13 +79,13 @@ namespace Simian SimulationObject simObj = new SimulationObject(prim, scene); if (MasterAgent != null) simObj.Prim.OwnerID = MasterAgent.ID; - scene.ObjectAddOrUpdate(this, simObj, MasterAgent.ID, 0, PrimFlags.None, UpdateFlags.FullUpdate); + scene.ObjectAddOrUpdate(this, simObj, MasterAgent.ID, PrimFlags.None, UpdateFlags.FullUpdate); } void Objects_OnNewAttachment(Simulator simulator, Primitive prim, ulong regionHandle, ushort timeDilation) { SimulationObject simObj = new SimulationObject(prim, scene); - scene.ObjectAddOrUpdate(this, simObj, MasterAgent.ID, 0, PrimFlags.None, UpdateFlags.FullUpdate); + scene.ObjectAddOrUpdate(this, simObj, MasterAgent.ID, PrimFlags.None, UpdateFlags.FullUpdate); } void Objects_OnNewAvatar(Simulator simulator, Avatar avatar, ulong regionHandle, ushort timeDilation) @@ -95,7 +95,7 @@ namespace Simian Agent agent = new Agent(obj, AgentInfoFromAvatar(avatar)); scene.AgentAdd(this, agent, avatar.Flags); - scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.FullUpdate); + scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, PrimFlags.None, UpdateFlags.FullUpdate); } void Objects_OnObjectUpdated(Simulator simulator, ObjectUpdate update, ulong regionHandle, ushort timeDilation) @@ -117,7 +117,7 @@ namespace Simian if (update.Avatar) obj.Prim.CollisionPlane = update.CollisionPlane; if (update.Textures != null) obj.Prim.Textures = update.Textures; - scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, 0, PrimFlags.None, flags); + scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, PrimFlags.None, flags); } if (update.LocalID == client.Self.LocalID) @@ -130,7 +130,7 @@ namespace Simian if (update.Avatar) MasterAgent.Avatar.Prim.CollisionPlane = update.CollisionPlane; if (update.Textures != null) MasterAgent.Avatar.Prim.Textures = update.Textures; - scene.ObjectAddOrUpdate(this, MasterAgent.Avatar, MasterAgent.ID, 0, PrimFlags.None, flags); + scene.ObjectAddOrUpdate(this, MasterAgent.Avatar, MasterAgent.ID, PrimFlags.None, flags); } } diff --git a/Programs/Simian/SceneExtensions/PeriscopeMovement.cs b/Programs/Simian/SceneExtensions/PeriscopeMovement.cs index ed2a4fa6..2b1ecdd2 100644 --- a/Programs/Simian/SceneExtensions/PeriscopeMovement.cs +++ b/Programs/Simian/SceneExtensions/PeriscopeMovement.cs @@ -332,7 +332,7 @@ namespace Simian if (scene.TryGetObject(update.AgentData.AgentID, out obj)) { obj.Prim.Rotation = update.AgentData.BodyRotation; - scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Rotation); + scene.ObjectAddOrUpdate(this, obj, obj.Prim.OwnerID, PrimFlags.None, UpdateFlags.Rotation); } } diff --git a/Programs/Simian/SceneExtensions/PhysicsSimple.cs b/Programs/Simian/SceneExtensions/PhysicsSimple.cs index a4973750..36895d36 100644 --- a/Programs/Simian/SceneExtensions/PhysicsSimple.cs +++ b/Programs/Simian/SceneExtensions/PhysicsSimple.cs @@ -424,7 +424,7 @@ namespace Simian } } - void Scene_OnObjectAddOrUpdate(object sender, SimulationObject obj, UUID ownerID, int scriptStartParam, PrimFlags creatorFlags, UpdateFlags update) + void Scene_OnObjectAddOrUpdate(object sender, SimulationObject obj, UUID ownerID, PrimFlags creatorFlags, UpdateFlags update) { // Recompute meshes for bool forceMeshing = false; diff --git a/Programs/Simian/SceneExtensions/XScriptEngine.cs b/Programs/Simian/SceneExtensions/XScriptEngine.cs index 65e39aa8..aeecc592 100644 --- a/Programs/Simian/SceneExtensions/XScriptEngine.cs +++ b/Programs/Simian/SceneExtensions/XScriptEngine.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Text; using ExtensionLoader; using OpenMetaverse; @@ -24,6 +25,32 @@ namespace Simian { } + public bool RezScript(UUID scriptID, UUID scriptSourceAssetID, SimulationObject hostObject, int scriptStartParam) + { + Asset sourceAsset; + Asset binaryAsset; + + // Try to fetch the script source code asset + if (scene.Server.Assets.TryGetAsset(scriptSourceAssetID, out sourceAsset) && sourceAsset is AssetScriptText) + { + // The script binary assetID is the MD5 hash of the source to avoid lots of duplicate compiles + UUID scriptBinaryAssetID = new UUID(Utils.MD5(sourceAsset.AssetData), 0); + + // Check if a compiled assembly already exists for this script + if (scene.Server.Assets.TryGetAsset(scriptBinaryAssetID, out binaryAsset)) + { + Logger.Log("Using existing compile for scriptID " + scriptID, Helpers.LogLevel.Info); + } + else + { + ScriptCompiler compiler = new ScriptCompiler(); + string csText = compiler.Convert(Encoding.UTF8.GetString(sourceAsset.AssetData)); + } + } + + return false; + } + public bool PostScriptEvent(UUID scriptID, EventParams parms) { return false; @@ -44,12 +71,12 @@ namespace Simian return parms; } - public bool GetScriptState(UUID scriptID) + public bool IsScriptEnabled(UUID scriptID) { return false; } - public void SetScriptState(UUID scriptID, bool state) + public void SetScriptEnabled(UUID scriptID, bool enabled) { } diff --git a/Programs/Simian/Scripting/CSReservedWords.cs b/Programs/Simian/Scripting/CSReservedWords.cs new file mode 100644 index 00000000..fc467cdb --- /dev/null +++ b/Programs/Simian/Scripting/CSReservedWords.cs @@ -0,0 +1,91 @@ +/* +* Copyright (c) Contributors, http://opensimulator.org/ +* See CONTRIBUTORS.TXT for a full list of copyright holders. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* * Neither the name of the OpenSim Project nor the +* names of its contributors may be used to endorse or promote products +* derived from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS AS IS AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ + +using System; +using System.Collections.Generic; + +namespace Simian +{ + /// + /// A container for all of the reserved C# words that are not also reserved words in LSL. + /// The words must be maintained in alphabetical order. + /// The words that are key words in lsl are picked up by the lsl compiler as errors. + /// The LSL reserved words have been left in the list as comments for completeness + /// + public static class CSReservedWords + { + static List reservedWords = new List(new string[] { + "abstract","as", + "base","bool","break","byte", + "case","catch","char","checked","class","const","continue", + "decimal","default","delegate", + //"do", + "double", + //"else", + "enum", + //"event", + "explicit","extern", + "false","finally","fixed", + //"float","for", + "foreach", + "goto", + //"if", + "implicit","in","int","interface","internal","is", + "lock","long", + "namespace","new","null", + "object","operator","out","override", + "params","private","protected","public", + "readonly","ref", + //"return", + "sbyte","sealed","short","sizeof","stackalloc","static", + //"string", + "struct","switch", + "this","throw","true","try","typeof", + "uint","ulong","unchecked","unsafe","ushort","using", + "virtual","void","volatile", + //"while" + }); + + /// + /// Returns true if the passed string is in the list of reserved words with + /// a little simple pre-filtering. + /// + public static bool IsReservedWord(string word) + { + // A couple of quick filters to weed out single characters, ll functions and + // anything that starts with an uppercase letter + if (String.IsNullOrEmpty(word)) return false; + if (word.Length < 2) return false; + if (word.StartsWith("ll")) return false; + char first = word.ToCharArray(0,1)[0]; + if (first >= 'A' && first <= 'Z') return false; + + return (reservedWords.BinarySearch(word) >= 0); + } + } +} diff --git a/Programs/Simian/Scripting/LSL2CSCodeTransformer.cs b/Programs/Simian/Scripting/LSL2CSCodeTransformer.cs new file mode 100644 index 00000000..83d47d8c --- /dev/null +++ b/Programs/Simian/Scripting/LSL2CSCodeTransformer.cs @@ -0,0 +1,183 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using Tools; + +namespace Simian +{ + public class LSL2CSCodeTransformer + { + private SYMBOL m_astRoot = null; + private static Dictionary m_datatypeLSL2OpenSim = null; + + /// + /// Pass the new CodeTranformer an abstract syntax tree. + /// + /// The root node of the AST. + public LSL2CSCodeTransformer(SYMBOL astRoot) + { + m_astRoot = astRoot; + + // let's populate the dictionary + if (null == m_datatypeLSL2OpenSim) + { + m_datatypeLSL2OpenSim = new Dictionary(); + m_datatypeLSL2OpenSim.Add("integer", "ScriptTypes.LSL_Integer"); + m_datatypeLSL2OpenSim.Add("float", "ScriptTypes.LSL_Float"); + //m_datatypeLSL2OpenSim.Add("key", "ScriptTypes.LSL_Key"); // key doesn't seem to be used + m_datatypeLSL2OpenSim.Add("key", "ScriptTypes.LSL_String"); + m_datatypeLSL2OpenSim.Add("string", "ScriptTypes.LSL_String"); + m_datatypeLSL2OpenSim.Add("vector", "ScriptTypes.LSL_Vector"); + m_datatypeLSL2OpenSim.Add("rotation", "ScriptTypes.LSL_Rotation"); + m_datatypeLSL2OpenSim.Add("list", "ScriptTypes.LSL_List"); + } + } + + /// + /// Transform the code in the AST we have. + /// + /// The root node of the transformed AST + public SYMBOL Transform() + { + foreach (SYMBOL s in m_astRoot.kids) + TransformNode(s); + + return m_astRoot; + } + + /// + /// Recursively called to transform each type of node. Will transform this + /// node, then all it's children. + /// + /// The current node to transform. + private void TransformNode(SYMBOL s) + { + // make sure to put type lower in the inheritance hierarchy first + // ie: since IdentConstant and StringConstant inherit from Constant, + // put IdentConstant and StringConstant before Constant + if (s is Declaration) + ((Declaration) s).Datatype = m_datatypeLSL2OpenSim[((Declaration) s).Datatype]; + else if (s is Constant) + ((Constant) s).Type = m_datatypeLSL2OpenSim[((Constant) s).Type]; + else if (s is TypecastExpression) + ((TypecastExpression) s).TypecastType = m_datatypeLSL2OpenSim[((TypecastExpression) s).TypecastType]; + else if (s is GlobalFunctionDefinition && "void" != ((GlobalFunctionDefinition) s).ReturnType) // we don't need to translate "void" + ((GlobalFunctionDefinition) s).ReturnType = m_datatypeLSL2OpenSim[((GlobalFunctionDefinition) s).ReturnType]; + + for (int i = 0; i < s.kids.Count; i++) + { + if (!(s is Assignment || s is ArgumentDeclarationList) && s.kids[i] is Declaration) + AddImplicitInitialization(s, i); + + TransformNode((SYMBOL) s.kids[i]); + } + } + + /// + /// Replaces an instance of the node at s.kids[didx] with an assignment + /// node. The assignment node has the Declaration node on the left hand + /// side and a default initializer on the right hand side. + /// + /// + /// The node containing the Declaration node that needs replacing. + /// + /// Index of the Declaration node to replace. + private void AddImplicitInitialization(SYMBOL s, int didx) + { + // We take the kids for a while to play with them. + int sKidSize = s.kids.Count; + object [] sKids = new object[sKidSize]; + for (int i = 0; i < sKidSize; i++) + sKids[i] = s.kids.Pop(); + + // The child to be changed. + Declaration currentDeclaration = (Declaration) sKids[didx]; + + // We need an assignment node. + Assignment newAssignment = new Assignment(currentDeclaration.yyps, + currentDeclaration, + GetZeroConstant(currentDeclaration.yyps, currentDeclaration.Datatype), + "="); + sKids[didx] = newAssignment; + + // Put the kids back where they belong. + for (int i = 0; i < sKidSize; i++) + s.kids.Add(sKids[i]); + } + + /// + /// Generates the node structure required to generate a default + /// initialization. + /// + /// + /// Tools.Parser instance to use when instantiating nodes. + /// + /// String describing the datatype. + /// + /// A SYMBOL node conaining the appropriate structure for intializing a + /// constantType. + /// + private SYMBOL GetZeroConstant(Parser p, string constantType) + { + switch (constantType) + { + case "integer": + return new Constant(p, constantType, "0"); + case "float": + return new Constant(p, constantType, "0.0"); + case "string": + case "key": + return new Constant(p, constantType, ""); + case "list": + ArgumentList al = new ArgumentList(p); + return new ListConstant(p, al); + case "vector": + Constant vca = new Constant(p, "float", "0.0"); + Constant vcb = new Constant(p, "float", "0.0"); + Constant vcc = new Constant(p, "float", "0.0"); + ConstantExpression vcea = new ConstantExpression(p, vca); + ConstantExpression vceb = new ConstantExpression(p, vcb); + ConstantExpression vcec = new ConstantExpression(p, vcc); + return new VectorConstant(p, vcea, vceb, vcec); + case "rotation": + Constant rca = new Constant(p, "float", "0.0"); + Constant rcb = new Constant(p, "float", "0.0"); + Constant rcc = new Constant(p, "float", "0.0"); + Constant rcd = new Constant(p, "float", "0.0"); + ConstantExpression rcea = new ConstantExpression(p, rca); + ConstantExpression rceb = new ConstantExpression(p, rcb); + ConstantExpression rcec = new ConstantExpression(p, rcc); + ConstantExpression rced = new ConstantExpression(p, rcd); + return new RotationConstant(p, rcea, rceb, rcec, rced); + default: + return null; // this will probably break stuff + } + } + } +} diff --git a/Programs/Simian/ScriptApi.cs b/Programs/Simian/Scripting/ScriptApi.cs similarity index 96% rename from Programs/Simian/ScriptApi.cs rename to Programs/Simian/Scripting/ScriptApi.cs index e56ddd72..29d5d24c 100644 --- a/Programs/Simian/ScriptApi.cs +++ b/Programs/Simian/Scripting/ScriptApi.cs @@ -247,7 +247,7 @@ namespace Simian if ((otherScriptID = ScriptByName(name)) != UUID.Zero) { - return scene.ScriptEngine.GetScriptState(otherScriptID) ? 1 : 0; + return scene.ScriptEngine.IsScriptEnabled(otherScriptID) ? 1 : 0; } ShoutError("llGetScriptState: script " + name + " not found"); @@ -264,7 +264,7 @@ namespace Simian if ((otherScriptID = ScriptByName(name)) != UUID.Zero) { - scene.ScriptEngine.SetScriptState(otherScriptID, run == 0 ? false : true); + scene.ScriptEngine.SetScriptEnabled(otherScriptID, run == 0 ? false : true); } else { @@ -1022,7 +1022,7 @@ namespace Simian scene.ObjectSetRotationAxis(this, parent, rotationAxis); } - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.PrimFlags); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.OwnerID, PrimFlags.None, UpdateFlags.PrimFlags); } public LSL_Integer llGetStatus(int status) @@ -1078,7 +1078,7 @@ namespace Simian // TODO: Apply constraints hostObject.Prim.Scale = new Vector3((float)scale.x, (float)scale.y, (float)scale.z); - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.Scale); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.Scale); } public LSL_Vector llGetScale() @@ -1092,7 +1092,7 @@ namespace Simian hostObject.AddScriptLPS(1); hostObject.Prim.ClickAction = (ClickAction)action; - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.ClickAction); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.ClickAction); } public void llSetColor(LSL_Vector color, int face) @@ -1258,7 +1258,7 @@ namespace Simian // Child prims do not have velocity, only parents SimulationObject parent = hostObject.GetLinksetParent(); parent.Prim.Velocity = velocity; - scene.ObjectAddOrUpdate(this, parent, parent.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Velocity); + scene.ObjectAddOrUpdate(this, parent, parent.Prim.OwnerID, PrimFlags.None, UpdateFlags.Velocity); } public LSL_Vector llGetForce() @@ -1464,7 +1464,7 @@ namespace Simian hostObject.Prim.SoundFlags = SoundFlags.Loop; hostObject.Prim.SoundRadius = 20f; // TODO: Randomly selected - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.Sound); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.Sound); } public void llLoopSoundMaster(string sound, double volume) @@ -1479,7 +1479,7 @@ namespace Simian hostObject.Prim.SoundFlags = SoundFlags.Loop | SoundFlags.SyncMaster; hostObject.Prim.SoundRadius = 20f; // TODO: Randomly selected - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.Sound); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.Sound); } public void llLoopSoundSlave(string sound, double volume) @@ -1494,7 +1494,7 @@ namespace Simian hostObject.Prim.SoundFlags = SoundFlags.Loop | SoundFlags.SyncSlave; hostObject.Prim.SoundRadius = 20f; // TODO: Randomly selected - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.Sound); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.Sound); } public void llPlaySoundSlave(string sound, double volume) @@ -1509,7 +1509,7 @@ namespace Simian hostObject.Prim.SoundFlags = SoundFlags.SyncSlave; hostObject.Prim.SoundRadius = 20f; // TODO: Randomly selected - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.Sound); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.Sound); } public void llTriggerSound(string sound, double volume) @@ -1531,7 +1531,7 @@ namespace Simian hostObject.Prim.SoundFlags = SoundFlags.None; hostObject.Prim.SoundRadius = 0f; - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.Sound); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.Sound); } public void llPreloadSound(string sound) @@ -1546,7 +1546,7 @@ namespace Simian hostObject.Prim.SoundFlags = SoundFlags.Queue; // TODO: Is this correct? hostObject.Prim.SoundRadius = 20f; // TODO: Randomly selected - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.Sound); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.Sound); // ScriptSleep(1000); } @@ -1836,7 +1836,7 @@ namespace Simian Quaternion llrot = new Quaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s); if (Vector3.Distance(llpos, hostObject.GetSimulatorPosition()) > 10.0f) - return; // wiki says, if it's further than 10m away, silently fail. + return; // wiki says if it's further than 10m away, silently fail. // need the magnitude later float velmag = llvel.Length(); @@ -1876,7 +1876,16 @@ namespace Simian newObj.Prim.Rotation = llrot; } - scene.ObjectAddOrUpdate(this, newObj, hostObject.Prim.Properties.OwnerID, param, PrimFlags.None, UpdateFlags.FullUpdate); + // Start scripts + hostObject.Inventory.ForEachItem( + delegate(InventoryTaskItem taskItem) + { + if (taskItem.AssetType == AssetType.LSLText) + scene.ScriptEngine.RezScript(taskItem.ID, taskItem.AssetID, hostObject, param); + } + ); + + scene.ObjectAddOrUpdate(this, newObj, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.FullUpdate); if (newObj.Prim.ParentID == 0) newParent = newObj; @@ -2103,7 +2112,7 @@ namespace Simian parent.Prim.Position = newPosition; // Don't set UpdateFlags.PrimFlags since Flying is a server-side only flag - scene.ObjectAddOrUpdate(this, parent, parent.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Position); + scene.ObjectAddOrUpdate(this, parent, parent.Prim.OwnerID, PrimFlags.None, UpdateFlags.Position); } public void llStopHover() @@ -2115,7 +2124,7 @@ namespace Simian // Trigger an object transformation even though we don't directly manipulate any parameters that are sent // to the client. This will make sure the physics engine realizes the flying flag has been turned off - scene.ObjectAddOrUpdate(this, parent, parent.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Position); + scene.ObjectAddOrUpdate(this, parent, parent.Prim.OwnerID, PrimFlags.None, UpdateFlags.Position); } public void llMinEventDelay(double delay) @@ -2224,7 +2233,7 @@ namespace Simian angVel *= (float)spinrate; hostObject.Prim.AngularVelocity = angVel; - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.AngularVelocity); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.OwnerID, PrimFlags.None, UpdateFlags.AngularVelocity); } public LSL_Integer llGetStartParameter() @@ -2545,7 +2554,7 @@ namespace Simian (float)Utils.Clamp(alpha, 0f, 1f)); hostObject.Prim.Text = text; - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.Text); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.Text); } public LSL_Float llWater(LSL_Vector offset) @@ -3441,7 +3450,7 @@ namespace Simian pTexAnim.Start = (float)start; hostObject.Prim.TextureAnim = pTexAnim; - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.TextureAnim); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.TextureAnim); } public void llTriggerSoundLimited(string sound, double volume, LSL_Vector top_north_east, LSL_Vector bottom_south_west) @@ -3789,7 +3798,7 @@ namespace Simian hostObject.Prim.ParticleSys = prules; } - scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.Particles); + scene.ObjectAddOrUpdate(this, hostObject, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.Particles); } public void llGroundRepel(double height, int water, double tau) @@ -5195,7 +5204,7 @@ namespace Simian texcolor.A = Utils.Clamp((float)alpha, 0.0f, 1.0f); tex.FaceTextures[face].RGBA = texcolor; - scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Textures); + scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, PrimFlags.None, UpdateFlags.Textures); } else if (face == ScriptTypes.ALL_SIDES) { @@ -5213,7 +5222,7 @@ namespace Simian texcolor.A = Utils.Clamp((float)alpha, 0.0f, 1.0f); tex.DefaultTexture.RGBA = texcolor; - scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Textures); + scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, PrimFlags.None, UpdateFlags.Textures); } } @@ -5239,7 +5248,7 @@ namespace Simian part.Prim.PrimData.PathCurve = PathCurve.Line; } - scene.ObjectAddOrUpdate(this, part, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.ExtraData | UpdateFlags.PrimData); + scene.ObjectAddOrUpdate(this, part, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.ExtraData | UpdateFlags.PrimData); } private void SetPointLight(SimulationObject part, bool light, LSL_Vector color, float intensity, float radius, float falloff) @@ -5262,7 +5271,7 @@ namespace Simian part.Prim.Light = null; } - scene.ObjectAddOrUpdate(this, part, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.ExtraData); + scene.ObjectAddOrUpdate(this, part, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.ExtraData); } private LSL_Vector GetColor(SimulationObject part, int face) @@ -5565,7 +5574,7 @@ namespace Simian prim.Prim.PrimData.ProfileBegin = Primitive.UnpackBeginCut((ushort)(50000.0 * dimple.x)); prim.Prim.PrimData.ProfileEnd = Primitive.UnpackBeginCut((ushort)(50000.0 * (1.0 - dimple.y))); - scene.ObjectAddOrUpdate(this, prim, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.PrimData); + scene.ObjectAddOrUpdate(this, prim, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.PrimData); } private void SetPrimitiveShapeParams(SimulationObject prim, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist, @@ -5960,7 +5969,7 @@ namespace Simian else parent.Prim.Flags &= ~PrimFlags.Phantom; - scene.ObjectAddOrUpdate(this, parent, parent.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.PrimFlags); + scene.ObjectAddOrUpdate(this, parent, parent.Prim.OwnerID, PrimFlags.None, UpdateFlags.PrimFlags); break; case ScriptTypes.PRIM_PHYSICS: if (remain < 1) return; @@ -5972,7 +5981,7 @@ namespace Simian else parent.Prim.Flags &= ~PrimFlags.Physics; - scene.ObjectAddOrUpdate(this, parent, parent.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.PrimFlags); + scene.ObjectAddOrUpdate(this, parent, parent.Prim.OwnerID, PrimFlags.None, UpdateFlags.PrimFlags); break; case ScriptTypes.PRIM_TEMP_ON_REZ: if (remain < 1) return; @@ -5984,7 +5993,7 @@ namespace Simian else parent.Prim.Flags &= ~PrimFlags.TemporaryOnRez; - scene.ObjectAddOrUpdate(this, parent, parent.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.PrimFlags); + scene.ObjectAddOrUpdate(this, parent, parent.Prim.OwnerID, PrimFlags.None, UpdateFlags.PrimFlags); break; } } @@ -5999,7 +6008,7 @@ namespace Simian return; part.Prim.Scale = new Vector3((float)scale.x, (float)scale.y, (float)scale.z); - scene.ObjectAddOrUpdate(this, part, hostObject.Prim.Properties.OwnerID, 0, PrimFlags.None, UpdateFlags.Scale); + scene.ObjectAddOrUpdate(this, part, hostObject.Prim.Properties.OwnerID, PrimFlags.None, UpdateFlags.Scale); } private void SetColor(SimulationObject part, LSL_Vector color, int face) @@ -6037,7 +6046,7 @@ namespace Simian } part.Prim.Textures = tex; - scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Textures); + scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, PrimFlags.None, UpdateFlags.Textures); } public void SetGlow(SimulationObject part, int face, float glow) @@ -6061,7 +6070,7 @@ namespace Simian } part.Prim.Textures = tex; - scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Textures); + scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, PrimFlags.None, UpdateFlags.Textures); } public void SetShiny(SimulationObject part, int face, int shiny, Bumpiness bump) @@ -6111,7 +6120,7 @@ namespace Simian } part.Prim.Textures = tex; - scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Textures); + scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, PrimFlags.None, UpdateFlags.Textures); } public void SetFullBright(SimulationObject part, int face, bool bright) @@ -6137,7 +6146,7 @@ namespace Simian } part.Prim.Textures = tex; - scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Textures); + scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, PrimFlags.None, UpdateFlags.Textures); } private void SetTexture(SimulationObject part, string texture, int face) @@ -6172,7 +6181,7 @@ namespace Simian } part.Prim.Textures = tex; - scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Textures); + scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, PrimFlags.None, UpdateFlags.Textures); } private void ScaleTexture(SimulationObject part, double u, double v, int face) @@ -6202,7 +6211,7 @@ namespace Simian } part.Prim.Textures = tex; - scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Textures); + scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, PrimFlags.None, UpdateFlags.Textures); } private void OffsetTexture(SimulationObject part, double u, double v, int face) @@ -6232,7 +6241,7 @@ namespace Simian } part.Prim.Textures = tex; - scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Textures); + scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, PrimFlags.None, UpdateFlags.Textures); } private void RotateTexture(SimulationObject part, double rotation, int face) @@ -6259,7 +6268,7 @@ namespace Simian } part.Prim.Textures = tex; - scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Textures); + scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, PrimFlags.None, UpdateFlags.Textures); } private void SetPos(SimulationObject part, LSL_Vector targetPos) @@ -6270,13 +6279,13 @@ namespace Simian targetPos = currentPos + SCRIPT_DISTANCE_FACTOR * 10.0f * llVecNorm(targetPos - currentPos); part.Prim.Position = new Vector3((float)targetPos.x, (float)targetPos.y, (float)targetPos.z); - scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Position); + scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, PrimFlags.None, UpdateFlags.Position); } private void SetRot(SimulationObject part, Quaternion rot) { part.Prim.Rotation = rot; - scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.Rotation); + scene.ObjectAddOrUpdate(this, part, part.Prim.OwnerID, PrimFlags.None, UpdateFlags.Rotation); } private LSL_Vector GetTextureOffset(SimulationObject part, int face) diff --git a/Programs/Simian/Scripting/ScriptCompiler.cs b/Programs/Simian/Scripting/ScriptCompiler.cs new file mode 100644 index 00000000..ec79ed68 --- /dev/null +++ b/Programs/Simian/Scripting/ScriptCompiler.cs @@ -0,0 +1,1089 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.IO; +using System.Collections.Generic; +using Tools; + +namespace Simian +{ + public class ScriptCompiler + { + private SYMBOL m_astRoot = null; + private Dictionary, KeyValuePair> m_positionMap; + private int m_indentWidth = 4; // for indentation + private int m_braceCount; // for indentation + private int m_CSharpLine; // the current line of generated C# code + private int m_CSharpCol; // the current column of generated C# code + private List m_warnings = new List(); + + /// + /// Creates an 'empty' CSCodeGenerator instance. + /// + public ScriptCompiler() + { + ResetCounters(); + } + + /// + /// Get the mapping between LSL and C# line/column number. + /// + public Dictionary, KeyValuePair> PositionMap + { + get { return m_positionMap; } + } + + /// + /// Get the mapping between LSL and C# line/column number. + /// + /// SYMBOL pointing to root of the abstract syntax tree. + public SYMBOL ASTRoot + { + get { return m_astRoot; } + } + + /// + /// Resets various counters and metadata. + /// + private void ResetCounters() + { + m_braceCount = 0; + m_CSharpLine = 0; + m_CSharpCol = 1; + m_positionMap = new Dictionary, KeyValuePair>(); + m_astRoot = null; + } + + /// + /// Generate the code from the AST we have. + /// + /// The LSL source as a string. + /// String containing the generated C# code. + public string Convert(string script) + { + m_warnings.Clear(); + ResetCounters(); + Parser p = new LSLSyntax(new yyLSLSyntax(), new ErrorHandler(true)); + // Obviously this needs to be in a try/except block. + LSL2CSCodeTransformer codeTransformer; + try + { + codeTransformer = new LSL2CSCodeTransformer(p.Parse(script)); + } + catch (CSToolsException e) + { + string message; + + // LL start numbering lines at 0 - geeks! + // Also need to subtract one line we prepend! + // + string emessage = e.Message; + string slinfo = e.slInfo.ToString(); + + // Remove wrong line number info + // + if (emessage.StartsWith(slinfo + ": ")) + emessage = emessage.Substring(slinfo.Length + 2); + + message = String.Format("Line ({0},{1}) {2}", + e.slInfo.lineNumber - 2, + e.slInfo.charPosition - 1, emessage); + + throw new Exception(message); + } + + m_astRoot = codeTransformer.Transform(); + + string retstr = String.Empty; + + // standard preamble + //retstr = GenerateLine("using OpenSim.Region.ScriptEngine.Common;"); + //retstr += GenerateLine("using System.Collections.Generic;"); + //retstr += GenerateLine(""); + //retstr += GenerateLine("namespace SecondLife"); + //retstr += GenerateLine("{"); + m_braceCount++; + //retstr += GenerateIndentedLine("public class Script : OpenSim.Region.ScriptEngine.Common"); + //retstr += GenerateIndentedLine("{"); + m_braceCount++; + + // line number + m_CSharpLine += 3; + + // here's the payload + retstr += GenerateLine(); + foreach (SYMBOL s in m_astRoot.kids) + retstr += GenerateNode(s); + + // close braces! + m_braceCount--; + //retstr += GenerateIndentedLine("}"); + m_braceCount--; + //retstr += GenerateLine("}"); + + // Removes all carriage return characters which may be generated in Windows platform. Is there + // cleaner way of doing this? + retstr = retstr.Replace("\r", ""); + + return retstr; + } + + /// + /// Get the set of warnings generated during compilation. + /// + /// + public string[] GetWarnings() + { + return m_warnings.ToArray(); + } + + private void AddWarning(string warning) + { + if (!m_warnings.Contains(warning)) + { + m_warnings.Add(warning); + } + } + + /// + /// Recursively called to generate each type of node. Will generate this + /// node, then all it's children. + /// + /// The current node to generate code for. + /// String containing C# code for SYMBOL s. + private string GenerateNode(SYMBOL s) + { + string retstr = String.Empty; + + // make sure to put type lower in the inheritance hierarchy first + // ie: since IdentArgument and ExpressionArgument inherit from + // Argument, put IdentArgument and ExpressionArgument before Argument + if (s is GlobalFunctionDefinition) + retstr += GenerateGlobalFunctionDefinition((GlobalFunctionDefinition)s); + else if (s is GlobalVariableDeclaration) + retstr += GenerateGlobalVariableDeclaration((GlobalVariableDeclaration)s); + else if (s is State) + retstr += GenerateState((State)s); + else if (s is CompoundStatement) + retstr += GenerateCompoundStatement((CompoundStatement)s); + else if (s is Declaration) + retstr += GenerateDeclaration((Declaration)s); + else if (s is Statement) + retstr += GenerateStatement((Statement)s); + else if (s is ReturnStatement) + retstr += GenerateReturnStatement((ReturnStatement)s); + else if (s is JumpLabel) + retstr += GenerateJumpLabel((JumpLabel)s); + else if (s is JumpStatement) + retstr += GenerateJumpStatement((JumpStatement)s); + else if (s is StateChange) + retstr += GenerateStateChange((StateChange)s); + else if (s is IfStatement) + retstr += GenerateIfStatement((IfStatement)s); + else if (s is WhileStatement) + retstr += GenerateWhileStatement((WhileStatement)s); + else if (s is DoWhileStatement) + retstr += GenerateDoWhileStatement((DoWhileStatement)s); + else if (s is ForLoop) + retstr += GenerateForLoop((ForLoop)s); + else if (s is ArgumentList) + retstr += GenerateArgumentList((ArgumentList)s); + else if (s is Assignment) + retstr += GenerateAssignment((Assignment)s); + else if (s is BinaryExpression) + retstr += GenerateBinaryExpression((BinaryExpression)s); + else if (s is ParenthesisExpression) + retstr += GenerateParenthesisExpression((ParenthesisExpression)s); + else if (s is UnaryExpression) + retstr += GenerateUnaryExpression((UnaryExpression)s); + else if (s is IncrementDecrementExpression) + retstr += GenerateIncrementDecrementExpression((IncrementDecrementExpression)s); + else if (s is TypecastExpression) + retstr += GenerateTypecastExpression((TypecastExpression)s); + else if (s is FunctionCall) + retstr += GenerateFunctionCall((FunctionCall)s); + else if (s is VectorConstant) + retstr += GenerateVectorConstant((VectorConstant)s); + else if (s is RotationConstant) + retstr += GenerateRotationConstant((RotationConstant)s); + else if (s is ListConstant) + retstr += GenerateListConstant((ListConstant)s); + else if (s is Constant) + retstr += GenerateConstant((Constant)s); + else if (s is IdentDotExpression) + retstr += Generate(CheckName(((IdentDotExpression)s).Name) + "." + ((IdentDotExpression)s).Member, s); + else if (s is IdentExpression) + retstr += Generate(CheckName(((IdentExpression)s).Name), s); + else if (s is IDENT) + retstr += Generate(CheckName(((TOKEN)s).yytext), s); + else + { + foreach (SYMBOL kid in s.kids) + retstr += GenerateNode(kid); + } + + return retstr; + } + + /// + /// Generates the code for a GlobalFunctionDefinition node. + /// + /// The GlobalFunctionDefinition node. + /// String containing C# code for GlobalFunctionDefinition gf. + private string GenerateGlobalFunctionDefinition(GlobalFunctionDefinition gf) + { + string retstr = String.Empty; + + // we need to separate the argument declaration list from other kids + List argumentDeclarationListKids = new List(); + List remainingKids = new List(); + + foreach (SYMBOL kid in gf.kids) + if (kid is ArgumentDeclarationList) + argumentDeclarationListKids.Add(kid); + else + remainingKids.Add(kid); + + retstr += GenerateIndented(String.Format("{0} {1}(", gf.ReturnType, CheckName(gf.Name)), gf); + + // print the state arguments, if any + foreach (SYMBOL kid in argumentDeclarationListKids) + retstr += GenerateArgumentDeclarationList((ArgumentDeclarationList)kid); + + retstr += GenerateLine(")"); + + foreach (SYMBOL kid in remainingKids) + retstr += GenerateNode(kid); + + return retstr; + } + + /// + /// Generates the code for a GlobalVariableDeclaration node. + /// + /// The GlobalVariableDeclaration node. + /// String containing C# code for GlobalVariableDeclaration gv. + private string GenerateGlobalVariableDeclaration(GlobalVariableDeclaration gv) + { + string retstr = String.Empty; + + foreach (SYMBOL s in gv.kids) + { + retstr += Indent(); + retstr += GenerateNode(s); + retstr += GenerateLine(";"); + } + + return retstr; + } + + /// + /// Generates the code for a State node. + /// + /// The State node. + /// String containing C# code for State s. + private string GenerateState(State s) + { + string retstr = String.Empty; + + foreach (SYMBOL kid in s.kids) + if (kid is StateEvent) + retstr += GenerateStateEvent((StateEvent)kid, s.Name); + + return retstr; + } + + /// + /// Generates the code for a StateEvent node. + /// + /// The StateEvent node. + /// The name of the parent state. + /// String containing C# code for StateEvent se. + private string GenerateStateEvent(StateEvent se, string parentStateName) + { + string retstr = String.Empty; + + // we need to separate the argument declaration list from other kids + List argumentDeclarationListKids = new List(); + List remainingKids = new List(); + + foreach (SYMBOL kid in se.kids) + if (kid is ArgumentDeclarationList) + argumentDeclarationListKids.Add(kid); + else + remainingKids.Add(kid); + + // "state" (function) declaration + retstr += GenerateIndented(String.Format("public void {0}_event_{1}(", parentStateName, se.Name), se); + + // print the state arguments, if any + foreach (SYMBOL kid in argumentDeclarationListKids) + retstr += GenerateArgumentDeclarationList((ArgumentDeclarationList)kid); + + retstr += GenerateLine(")"); + + foreach (SYMBOL kid in remainingKids) + retstr += GenerateNode(kid); + + return retstr; + } + + /// + /// Generates the code for an ArgumentDeclarationList node. + /// + /// The ArgumentDeclarationList node. + /// String containing C# code for ArgumentDeclarationList adl. + private string GenerateArgumentDeclarationList(ArgumentDeclarationList adl) + { + string retstr = String.Empty; + + int comma = adl.kids.Count - 1; // tells us whether to print a comma + + foreach (Declaration d in adl.kids) + { + retstr += Generate(String.Format("{0} {1}", d.Datatype, CheckName(d.Id)), d); + if (0 < comma--) + retstr += Generate(", "); + } + + return retstr; + } + + /// + /// Generates the code for an ArgumentList node. + /// + /// The ArgumentList node. + /// String containing C# code for ArgumentList al. + private string GenerateArgumentList(ArgumentList al) + { + string retstr = String.Empty; + + int comma = al.kids.Count - 1; // tells us whether to print a comma + + foreach (SYMBOL s in al.kids) + { + retstr += GenerateNode(s); + if (0 < comma--) + retstr += Generate(", "); + } + + return retstr; + } + + /// + /// Generates the code for a CompoundStatement node. + /// + /// The CompoundStatement node. + /// String containing C# code for CompoundStatement cs. + private string GenerateCompoundStatement(CompoundStatement cs) + { + string retstr = String.Empty; + + // opening brace + retstr += GenerateIndentedLine("{"); + m_braceCount++; + + foreach (SYMBOL kid in cs.kids) + retstr += GenerateNode(kid); + + // closing brace + m_braceCount--; + retstr += GenerateIndentedLine("}"); + + return retstr; + } + + /// + /// Generates the code for a Declaration node. + /// + /// The Declaration node. + /// String containing C# code for Declaration d. + private string GenerateDeclaration(Declaration d) + { + return Generate(String.Format("{0} {1}", d.Datatype, CheckName(d.Id)), d); + } + + /// + /// Generates the code for a Statement node. + /// + /// The Statement node. + /// String containing C# code for Statement s. + private string GenerateStatement(Statement s) + { + string retstr = String.Empty; + bool printSemicolon = true; + + retstr += Indent(); + + if (0 < s.kids.Count) + { + // Jump label prints its own colon, we don't need a semicolon. + printSemicolon = !(s.kids.Top is JumpLabel); + + foreach (SYMBOL kid in s.kids) + retstr += GenerateNode(kid); + } + + if (printSemicolon) + retstr += GenerateLine(";"); + + return retstr; + } + + /// + /// Generates the code for an Assignment node. + /// + /// The Assignment node. + /// String containing C# code for Assignment a. + private string GenerateAssignment(Assignment a) + { + string retstr = String.Empty; + + List identifiers = new List(); + checkForMultipleAssignments(identifiers, a); + + retstr += GenerateNode((SYMBOL)a.kids.Pop()); + retstr += Generate(String.Format(" {0} ", a.AssignmentType), a); + foreach (SYMBOL kid in a.kids) + retstr += GenerateNode(kid); + + return retstr; + } + + // This code checks for LSL of the following forms, and generates a + // warning if it finds them. + // + // list l = [ "foo" ]; + // l = (l=[]) + l + ["bar"]; + // (produces l=["foo","bar"] in SL but l=["bar"] in OS) + // + // integer i; + // integer j; + // i = (j = 3) + (j = 4) + (j = 5); + // (produces j=3 in SL but j=5 in OS) + // + // Without this check, that code passes compilation, but does not do what + // the end user expects, because LSL in SL evaluates right to left instead + // of left to right. + // + // The theory here is that producing an error and alerting the end user that + // something needs to change is better than silently generating incorrect code. + private void checkForMultipleAssignments(List identifiers, SYMBOL s) + { + if (s is Assignment) + { + Assignment a = (Assignment)s; + string newident = null; + + if (a.kids[0] is Declaration) + { + newident = ((Declaration)a.kids[0]).Id; + } + else if (a.kids[0] is IDENT) + { + newident = ((IDENT)a.kids[0]).yytext; + } + else if (a.kids[0] is IdentDotExpression) + { + newident = ((IdentDotExpression)a.kids[0]).Name; // +"." + ((IdentDotExpression)a.kids[0]).Member; + } + else + { + AddWarning(String.Format("Multiple assignments checker internal error '{0}' at line {1} column {2}.", a.kids[0].GetType(), ((SYMBOL)a.kids[0]).Line - 1, ((SYMBOL)a.kids[0]).Position)); + } + + if (identifiers.Contains(newident)) + { + AddWarning(String.Format("Multiple assignments to '{0}' at line {1} column {2}; results may differ between LSL and OSSL.", newident, ((SYMBOL)a.kids[0]).Line - 1, ((SYMBOL)a.kids[0]).Position)); + } + identifiers.Add(newident); + } + + int index; + for (index = 0; index < s.kids.Count; index++) + { + checkForMultipleAssignments(identifiers, (SYMBOL)s.kids[index]); + } + } + + /// + /// Generates the code for a ReturnStatement node. + /// + /// The ReturnStatement node. + /// String containing C# code for ReturnStatement rs. + private string GenerateReturnStatement(ReturnStatement rs) + { + string retstr = String.Empty; + + retstr += Generate("return ", rs); + + foreach (SYMBOL kid in rs.kids) + retstr += GenerateNode(kid); + + return retstr; + } + + /// + /// Generates the code for a JumpLabel node. + /// + /// The JumpLabel node. + /// String containing C# code for JumpLabel jl. + private string GenerateJumpLabel(JumpLabel jl) + { + return Generate(String.Format("{0}:", CheckName(jl.LabelName)), jl) + " NoOp();\n"; + } + + /// + /// Generates the code for a JumpStatement node. + /// + /// The JumpStatement node. + /// String containing C# code for JumpStatement js. + private string GenerateJumpStatement(JumpStatement js) + { + return Generate(String.Format("goto {0}", CheckName(js.TargetName)), js); + } + + /// + /// Generates the code for an IfStatement node. + /// + /// The IfStatement node. + /// String containing C# code for IfStatement ifs. + private string GenerateIfStatement(IfStatement ifs) + { + string retstr = String.Empty; + + retstr += GenerateIndented("if (", ifs); + retstr += GenerateNode((SYMBOL)ifs.kids.Pop()); + retstr += GenerateLine(")"); + + // CompoundStatement handles indentation itself but we need to do it + // otherwise. + bool indentHere = ifs.kids.Top is Statement; + if (indentHere) m_braceCount++; + retstr += GenerateNode((SYMBOL)ifs.kids.Pop()); + if (indentHere) m_braceCount--; + + if (0 < ifs.kids.Count) // do it again for an else + { + retstr += GenerateIndentedLine("else", ifs); + + indentHere = ifs.kids.Top is Statement; + if (indentHere) m_braceCount++; + retstr += GenerateNode((SYMBOL)ifs.kids.Pop()); + if (indentHere) m_braceCount--; + } + + return retstr; + } + + /// + /// Generates the code for a StateChange node. + /// + /// The StateChange node. + /// String containing C# code for StateChange sc. + private string GenerateStateChange(StateChange sc) + { + return Generate(String.Format("state(\"{0}\")", sc.NewState), sc); + } + + /// + /// Generates the code for a WhileStatement node. + /// + /// The WhileStatement node. + /// String containing C# code for WhileStatement ws. + private string GenerateWhileStatement(WhileStatement ws) + { + string retstr = String.Empty; + + retstr += GenerateIndented("while (", ws); + retstr += GenerateNode((SYMBOL)ws.kids.Pop()); + retstr += GenerateLine(")"); + + // CompoundStatement handles indentation itself but we need to do it + // otherwise. + bool indentHere = ws.kids.Top is Statement; + if (indentHere) m_braceCount++; + retstr += GenerateNode((SYMBOL)ws.kids.Pop()); + if (indentHere) m_braceCount--; + + return retstr; + } + + /// + /// Generates the code for a DoWhileStatement node. + /// + /// The DoWhileStatement node. + /// String containing C# code for DoWhileStatement dws. + private string GenerateDoWhileStatement(DoWhileStatement dws) + { + string retstr = String.Empty; + + retstr += GenerateIndentedLine("do", dws); + + // CompoundStatement handles indentation itself but we need to do it + // otherwise. + bool indentHere = dws.kids.Top is Statement; + if (indentHere) m_braceCount++; + retstr += GenerateNode((SYMBOL)dws.kids.Pop()); + if (indentHere) m_braceCount--; + + retstr += GenerateIndented("while (", dws); + retstr += GenerateNode((SYMBOL)dws.kids.Pop()); + retstr += GenerateLine(");"); + + return retstr; + } + + /// + /// Generates the code for a ForLoop node. + /// + /// The ForLoop node. + /// String containing C# code for ForLoop fl. + private string GenerateForLoop(ForLoop fl) + { + string retstr = String.Empty; + + retstr += GenerateIndented("for (", fl); + + // for ( x = 0 ; x < 10 ; x++ ) + // ^^^^^^^ + retstr += GenerateForLoopStatement((ForLoopStatement)fl.kids.Pop()); + retstr += Generate("; "); + // for ( x = 0 ; x < 10 ; x++ ) + // ^^^^^^^^ + retstr += GenerateNode((SYMBOL)fl.kids.Pop()); + retstr += Generate("; "); + // for ( x = 0 ; x < 10 ; x++ ) + // ^^^^^ + retstr += GenerateForLoopStatement((ForLoopStatement)fl.kids.Pop()); + retstr += GenerateLine(")"); + + // CompoundStatement handles indentation itself but we need to do it + // otherwise. + bool indentHere = fl.kids.Top is Statement; + if (indentHere) m_braceCount++; + retstr += GenerateNode((SYMBOL)fl.kids.Pop()); + if (indentHere) m_braceCount--; + + return retstr; + } + + /// + /// Generates the code for a ForLoopStatement node. + /// + /// The ForLoopStatement node. + /// String containing C# code for ForLoopStatement fls. + private string GenerateForLoopStatement(ForLoopStatement fls) + { + string retstr = String.Empty; + + int comma = fls.kids.Count - 1; // tells us whether to print a comma + + foreach (SYMBOL s in fls.kids) + { + retstr += GenerateNode(s); + if (0 < comma--) + retstr += Generate(", "); + } + + return retstr; + } + + /// + /// Generates the code for a BinaryExpression node. + /// + /// The BinaryExpression node. + /// String containing C# code for BinaryExpression be. + private string GenerateBinaryExpression(BinaryExpression be) + { + string retstr = String.Empty; + + if (be.ExpressionSymbol.Equals("&&") || be.ExpressionSymbol.Equals("||")) + { + // special case handling for logical and/or, see Mantis 3174 + retstr += "((bool)("; + retstr += GenerateNode((SYMBOL)be.kids.Pop()); + retstr += "))"; + retstr += Generate(String.Format(" {0} ", be.ExpressionSymbol.Substring(0, 1)), be); + retstr += "((bool)("; + foreach (SYMBOL kid in be.kids) + retstr += GenerateNode(kid); + retstr += "))"; + } + else + { + retstr += GenerateNode((SYMBOL)be.kids.Pop()); + retstr += Generate(String.Format(" {0} ", be.ExpressionSymbol), be); + foreach (SYMBOL kid in be.kids) + retstr += GenerateNode(kid); + } + + return retstr; + } + + /// + /// Generates the code for a UnaryExpression node. + /// + /// The UnaryExpression node. + /// String containing C# code for UnaryExpression ue. + private string GenerateUnaryExpression(UnaryExpression ue) + { + string retstr = String.Empty; + + retstr += Generate(ue.UnarySymbol, ue); + retstr += GenerateNode((SYMBOL)ue.kids.Pop()); + + return retstr; + } + + /// + /// Generates the code for a ParenthesisExpression node. + /// + /// The ParenthesisExpression node. + /// String containing C# code for ParenthesisExpression pe. + private string GenerateParenthesisExpression(ParenthesisExpression pe) + { + string retstr = String.Empty; + + retstr += Generate("("); + foreach (SYMBOL kid in pe.kids) + retstr += GenerateNode(kid); + retstr += Generate(")"); + + return retstr; + } + + /// + /// Generates the code for a IncrementDecrementExpression node. + /// + /// The IncrementDecrementExpression node. + /// String containing C# code for IncrementDecrementExpression ide. + private string GenerateIncrementDecrementExpression(IncrementDecrementExpression ide) + { + string retstr = String.Empty; + + if (0 < ide.kids.Count) + { + IdentDotExpression dot = (IdentDotExpression)ide.kids.Top; + retstr += Generate(String.Format("{0}", ide.PostOperation ? CheckName(dot.Name) + "." + dot.Member + ide.Operation : ide.Operation + CheckName(dot.Name) + "." + dot.Member), ide); + } + else + retstr += Generate(String.Format("{0}", ide.PostOperation ? CheckName(ide.Name) + ide.Operation : ide.Operation + CheckName(ide.Name)), ide); + + return retstr; + } + + /// + /// Generates the code for a TypecastExpression node. + /// + /// The TypecastExpression node. + /// String containing C# code for TypecastExpression te. + private string GenerateTypecastExpression(TypecastExpression te) + { + string retstr = String.Empty; + + // we wrap all typecasted statements in parentheses + retstr += Generate(String.Format("({0}) (", te.TypecastType), te); + retstr += GenerateNode((SYMBOL)te.kids.Pop()); + retstr += Generate(")"); + + return retstr; + } + + /// + /// Generates the code for a FunctionCall node. + /// + /// The FunctionCall node. + /// String containing C# code for FunctionCall fc. + private string GenerateFunctionCall(FunctionCall fc) + { + string retstr = String.Empty; + + retstr += Generate(String.Format("{0}(", CheckName(fc.Id)), fc); + + foreach (SYMBOL kid in fc.kids) + retstr += GenerateNode(kid); + + retstr += Generate(")"); + + return retstr; + } + + /// + /// Generates the code for a Constant node. + /// + /// The Constant node. + /// String containing C# code for Constant c. + private string GenerateConstant(Constant c) + { + string retstr = String.Empty; + + // Supprt LSL's weird acceptance of floats with no trailing digits + // after the period. Turn float x = 10.; into float x = 10.0; + if ("ScriptTypes.LSL_Float" == c.Type) + { + int dotIndex = c.Value.IndexOf('.') + 1; + if (0 < dotIndex && (dotIndex == c.Value.Length || !Char.IsDigit(c.Value[dotIndex]))) + c.Value = c.Value.Insert(dotIndex, "0"); + c.Value = "new ScriptTypes.LSL_Float(" + c.Value + ")"; + } + else if ("ScriptTypes.LSL_Integer" == c.Type) + { + c.Value = "new ScriptTypes.LSL_Integer(" + c.Value + ")"; + } + else if ("ScriptTypes.LSL_String" == c.Type) + { + c.Value = "new ScriptTypes.LSL_String(\"" + c.Value + "\")"; + } + + retstr += Generate(c.Value, c); + + return retstr; + } + + /// + /// Generates the code for a VectorConstant node. + /// + /// The VectorConstant node. + /// String containing C# code for VectorConstant vc. + private string GenerateVectorConstant(VectorConstant vc) + { + string retstr = String.Empty; + + retstr += Generate(String.Format("new {0}(", vc.Type), vc); + retstr += GenerateNode((SYMBOL)vc.kids.Pop()); + retstr += Generate(", "); + retstr += GenerateNode((SYMBOL)vc.kids.Pop()); + retstr += Generate(", "); + retstr += GenerateNode((SYMBOL)vc.kids.Pop()); + retstr += Generate(")"); + + return retstr; + } + + /// + /// Generates the code for a RotationConstant node. + /// + /// The RotationConstant node. + /// String containing C# code for RotationConstant rc. + private string GenerateRotationConstant(RotationConstant rc) + { + string retstr = String.Empty; + + retstr += Generate(String.Format("new {0}(", rc.Type), rc); + retstr += GenerateNode((SYMBOL)rc.kids.Pop()); + retstr += Generate(", "); + retstr += GenerateNode((SYMBOL)rc.kids.Pop()); + retstr += Generate(", "); + retstr += GenerateNode((SYMBOL)rc.kids.Pop()); + retstr += Generate(", "); + retstr += GenerateNode((SYMBOL)rc.kids.Pop()); + retstr += Generate(")"); + + return retstr; + } + + /// + /// Generates the code for a ListConstant node. + /// + /// The ListConstant node. + /// String containing C# code for ListConstant lc. + private string GenerateListConstant(ListConstant lc) + { + string retstr = String.Empty; + + retstr += Generate(String.Format("new {0}(", lc.Type), lc); + + foreach (SYMBOL kid in lc.kids) + retstr += GenerateNode(kid); + + retstr += Generate(")"); + + return retstr; + } + + /// + /// Prints a newline. + /// + /// A newline. + private string GenerateLine() + { + return GenerateLine(""); + } + + /// + /// Prints text, followed by a newline. + /// + /// String of text to print. + /// String s followed by newline. + private string GenerateLine(string s) + { + return GenerateLine(s, null); + } + + /// + /// Prints text, followed by a newline. + /// + /// String of text to print. + /// Symbol being generated to extract original line + /// number and column from. + /// String s followed by newline. + private string GenerateLine(string s, SYMBOL sym) + { + string retstr = Generate(s, sym) + "\n"; + + m_CSharpLine++; + m_CSharpCol = 1; + + return retstr; + } + + /// + /// Prints text. + /// + /// String of text to print. + /// String s. + private string Generate(string s) + { + return Generate(s, null); + } + + /// + /// Prints text. + /// + /// String of text to print. + /// Symbol being generated to extract original line + /// number and column from. + /// String s. + private string Generate(string s, SYMBOL sym) + { + if (null != sym) + m_positionMap.Add(new KeyValuePair(m_CSharpLine, m_CSharpCol), new KeyValuePair(sym.Line, sym.Position)); + + m_CSharpCol += s.Length; + + return s; + } + + /// + /// Prints text correctly indented, followed by a newline. + /// + /// String of text to print. + /// Properly indented string s followed by newline. + private string GenerateIndentedLine(string s) + { + return GenerateIndentedLine(s, null); + } + + /// + /// Prints text correctly indented, followed by a newline. + /// + /// String of text to print. + /// Symbol being generated to extract original line + /// number and column from. + /// Properly indented string s followed by newline. + private string GenerateIndentedLine(string s, SYMBOL sym) + { + string retstr = GenerateIndented(s, sym) + "\n"; + + m_CSharpLine++; + m_CSharpCol = 1; + + return retstr; + } + + /// + /// Prints text correctly indented. + /// + /// String of text to print. + /// Properly indented string s. + //private string GenerateIndented(string s) + //{ + // return GenerateIndented(s, null); + //} + // THIS FUNCTION IS COMMENTED OUT TO SUPPRESS WARNINGS + + /// + /// Prints text correctly indented. + /// + /// String of text to print. + /// Symbol being generated to extract original line + /// number and column from. + /// Properly indented string s. + private string GenerateIndented(string s, SYMBOL sym) + { + string retstr = Indent() + s; + + if (null != sym) + m_positionMap.Add(new KeyValuePair(m_CSharpLine, m_CSharpCol), new KeyValuePair(sym.Line, sym.Position)); + + m_CSharpCol += s.Length; + + return retstr; + } + + /// + /// Prints correct indentation. + /// + /// Indentation based on brace count. + private string Indent() + { + string retstr = String.Empty; + + for (int i = 0; i < m_braceCount; i++) + for (int j = 0; j < m_indentWidth; j++) + { + retstr += " "; + m_CSharpCol++; + } + + return retstr; + } + + /// + /// Returns the passed name with an underscore prepended if that name is a reserved word in C# + /// and not resevered in LSL otherwise it just returns the passed name. + /// + /// This makes no attempt to cache the results to minimise future lookups. For a non trivial + /// scripts the number of unique identifiers could easily grow to the size of the reserved word + /// list so maintaining a list or dictionary and doing the lookup there firstwould probably not + /// give any real speed advantage. + /// + /// I believe there is a class Microsoft.CSharp.CSharpCodeProvider that has a function + /// CreateValidIdentifier(str) that will return either the value of str if it is not a C# + /// key word or "_"+str if it is. But availability under Mono? + /// + private string CheckName(string s) + { + if (CSReservedWords.IsReservedWord(s)) + return "@" + s; + else + return s; + } + } +} diff --git a/Programs/Simian/ScriptTypes.cs b/Programs/Simian/Scripting/ScriptTypes.cs similarity index 100% rename from Programs/Simian/ScriptTypes.cs rename to Programs/Simian/Scripting/ScriptTypes.cs diff --git a/Programs/Simian/Scripting/lsl.lexer.cs b/Programs/Simian/Scripting/lsl.lexer.cs new file mode 100644 index 00000000..281bfe14 --- /dev/null +++ b/Programs/Simian/Scripting/lsl.lexer.cs @@ -0,0 +1,18545 @@ +using System;using Tools; +namespace Simian { +//%+STRING_CONSTANT+3 +public class STRING_CONSTANT : TOKEN{ +public override string yyname { get { return "STRING_CONSTANT"; }} +public override int yynum { get { return 3; }} +public STRING_CONSTANT(Lexer yyl):base(yyl){}} +//%INCREMENT+4 +public class INCREMENT : TOKEN{ public override string yyname { get { return "INCREMENT";}} +public override int yynum { get { return 4; }} + public INCREMENT(Lexer yyl):base(yyl) {}} +//%DECREMENT+5 +public class DECREMENT : TOKEN{ public override string yyname { get { return "DECREMENT";}} +public override int yynum { get { return 5; }} + public DECREMENT(Lexer yyl):base(yyl) {}} +//%PLUS_EQUALS+6 +public class PLUS_EQUALS : TOKEN{ public override string yyname { get { return "PLUS_EQUALS";}} +public override int yynum { get { return 6; }} + public PLUS_EQUALS(Lexer yyl):base(yyl) {}} +//%MINUS_EQUALS+7 +public class MINUS_EQUALS : TOKEN{ public override string yyname { get { return "MINUS_EQUALS";}} +public override int yynum { get { return 7; }} + public MINUS_EQUALS(Lexer yyl):base(yyl) {}} +//%STAR_EQUALS+8 +public class STAR_EQUALS : TOKEN{ public override string yyname { get { return "STAR_EQUALS";}} +public override int yynum { get { return 8; }} + public STAR_EQUALS(Lexer yyl):base(yyl) {}} +//%SLASH_EQUALS+9 +public class SLASH_EQUALS : TOKEN{ public override string yyname { get { return "SLASH_EQUALS";}} +public override int yynum { get { return 9; }} + public SLASH_EQUALS(Lexer yyl):base(yyl) {}} +//%PERCENT_EQUALS+10 +public class PERCENT_EQUALS : TOKEN{ public override string yyname { get { return "PERCENT_EQUALS";}} +public override int yynum { get { return 10; }} + public PERCENT_EQUALS(Lexer yyl):base(yyl) {}} +//%SEMICOLON+11 +public class SEMICOLON : TOKEN{ public override string yyname { get { return "SEMICOLON";}} +public override int yynum { get { return 11; }} + public SEMICOLON(Lexer yyl):base(yyl) {}} +//%LEFT_BRACE+12 +public class LEFT_BRACE : TOKEN{ public override string yyname { get { return "LEFT_BRACE";}} +public override int yynum { get { return 12; }} + public LEFT_BRACE(Lexer yyl):base(yyl) {}} +//%RIGHT_BRACE+13 +public class RIGHT_BRACE : TOKEN{ public override string yyname { get { return "RIGHT_BRACE";}} +public override int yynum { get { return 13; }} + public RIGHT_BRACE(Lexer yyl):base(yyl) {}} +//%COMMA+14 +public class COMMA : TOKEN{ public override string yyname { get { return "COMMA";}} +public override int yynum { get { return 14; }} + public COMMA(Lexer yyl):base(yyl) {}} +//%EQUALS+15 +public class EQUALS : TOKEN{ public override string yyname { get { return "EQUALS";}} +public override int yynum { get { return 15; }} + public EQUALS(Lexer yyl):base(yyl) {}} +//%LEFT_PAREN+16 +public class LEFT_PAREN : TOKEN{ public override string yyname { get { return "LEFT_PAREN";}} +public override int yynum { get { return 16; }} + public LEFT_PAREN(Lexer yyl):base(yyl) {}} +//%RIGHT_PAREN+17 +public class RIGHT_PAREN : TOKEN{ public override string yyname { get { return "RIGHT_PAREN";}} +public override int yynum { get { return 17; }} + public RIGHT_PAREN(Lexer yyl):base(yyl) {}} +//%PLUS+18 +public class PLUS : TOKEN{ public override string yyname { get { return "PLUS";}} +public override int yynum { get { return 18; }} + public PLUS(Lexer yyl):base(yyl) {}} +//%MINUS+19 +public class MINUS : TOKEN{ public override string yyname { get { return "MINUS";}} +public override int yynum { get { return 19; }} + public MINUS(Lexer yyl):base(yyl) {}} +//%STAR+20 +public class STAR : TOKEN{ public override string yyname { get { return "STAR";}} +public override int yynum { get { return 20; }} + public STAR(Lexer yyl):base(yyl) {}} +//%SLASH+21 +public class SLASH : TOKEN{ public override string yyname { get { return "SLASH";}} +public override int yynum { get { return 21; }} + public SLASH(Lexer yyl):base(yyl) {}} +//%PERCENT+22 +public class PERCENT : TOKEN{ public override string yyname { get { return "PERCENT";}} +public override int yynum { get { return 22; }} + public PERCENT(Lexer yyl):base(yyl) {}} +//%AT+23 +public class AT : TOKEN{ public override string yyname { get { return "AT";}} +public override int yynum { get { return 23; }} + public AT(Lexer yyl):base(yyl) {}} +//%PERIOD+24 +public class PERIOD : TOKEN{ public override string yyname { get { return "PERIOD";}} +public override int yynum { get { return 24; }} + public PERIOD(Lexer yyl):base(yyl) {}} +//%LEFT_ANGLE+25 +public class LEFT_ANGLE : TOKEN{ public override string yyname { get { return "LEFT_ANGLE";}} +public override int yynum { get { return 25; }} + public LEFT_ANGLE(Lexer yyl):base(yyl) {}} +//%RIGHT_ANGLE+26 +public class RIGHT_ANGLE : TOKEN{ public override string yyname { get { return "RIGHT_ANGLE";}} +public override int yynum { get { return 26; }} + public RIGHT_ANGLE(Lexer yyl):base(yyl) {}} +//%LEFT_BRACKET+27 +public class LEFT_BRACKET : TOKEN{ public override string yyname { get { return "LEFT_BRACKET";}} +public override int yynum { get { return 27; }} + public LEFT_BRACKET(Lexer yyl):base(yyl) {}} +//%RIGHT_BRACKET+28 +public class RIGHT_BRACKET : TOKEN{ public override string yyname { get { return "RIGHT_BRACKET";}} +public override int yynum { get { return 28; }} + public RIGHT_BRACKET(Lexer yyl):base(yyl) {}} +//%EQUALS_EQUALS+29 +public class EQUALS_EQUALS : TOKEN{ public override string yyname { get { return "EQUALS_EQUALS";}} +public override int yynum { get { return 29; }} + public EQUALS_EQUALS(Lexer yyl):base(yyl) {}} +//%EXCLAMATION_EQUALS+30 +public class EXCLAMATION_EQUALS : TOKEN{ public override string yyname { get { return "EXCLAMATION_EQUALS";}} +public override int yynum { get { return 30; }} + public EXCLAMATION_EQUALS(Lexer yyl):base(yyl) {}} +//%LESS_EQUALS+31 +public class LESS_EQUALS : TOKEN{ public override string yyname { get { return "LESS_EQUALS";}} +public override int yynum { get { return 31; }} + public LESS_EQUALS(Lexer yyl):base(yyl) {}} +//%GREATER_EQUALS+32 +public class GREATER_EQUALS : TOKEN{ public override string yyname { get { return "GREATER_EQUALS";}} +public override int yynum { get { return 32; }} + public GREATER_EQUALS(Lexer yyl):base(yyl) {}} +//%AMP+33 +public class AMP : TOKEN{ public override string yyname { get { return "AMP";}} +public override int yynum { get { return 33; }} + public AMP(Lexer yyl):base(yyl) {}} +//%STROKE+34 +public class STROKE : TOKEN{ public override string yyname { get { return "STROKE";}} +public override int yynum { get { return 34; }} + public STROKE(Lexer yyl):base(yyl) {}} +//%CARET+35 +public class CARET : TOKEN{ public override string yyname { get { return "CARET";}} +public override int yynum { get { return 35; }} + public CARET(Lexer yyl):base(yyl) {}} +//%TILDE+36 +public class TILDE : TOKEN{ public override string yyname { get { return "TILDE";}} +public override int yynum { get { return 36; }} + public TILDE(Lexer yyl):base(yyl) {}} +//%EXCLAMATION+37 +public class EXCLAMATION : TOKEN{ public override string yyname { get { return "EXCLAMATION";}} +public override int yynum { get { return 37; }} + public EXCLAMATION(Lexer yyl):base(yyl) {}} +//%AMP_AMP+38 +public class AMP_AMP : TOKEN{ public override string yyname { get { return "AMP_AMP";}} +public override int yynum { get { return 38; }} + public AMP_AMP(Lexer yyl):base(yyl) {}} +//%STROKE_STROKE+39 +public class STROKE_STROKE : TOKEN{ public override string yyname { get { return "STROKE_STROKE";}} +public override int yynum { get { return 39; }} + public STROKE_STROKE(Lexer yyl):base(yyl) {}} +//%LEFT_SHIFT+40 +public class LEFT_SHIFT : TOKEN{ public override string yyname { get { return "LEFT_SHIFT";}} +public override int yynum { get { return 40; }} + public LEFT_SHIFT(Lexer yyl):base(yyl) {}} +//%RIGHT_SHIFT+41 +public class RIGHT_SHIFT : TOKEN{ public override string yyname { get { return "RIGHT_SHIFT";}} +public override int yynum { get { return 41; }} + public RIGHT_SHIFT(Lexer yyl):base(yyl) {}} +//%IF+42 +public class IF : TOKEN{ public override string yyname { get { return "IF";}} +public override int yynum { get { return 42; }} + public IF(Lexer yyl):base(yyl) {}} +//%ELSE+43 +public class ELSE : TOKEN{ public override string yyname { get { return "ELSE";}} +public override int yynum { get { return 43; }} + public ELSE(Lexer yyl):base(yyl) {}} +//%DO+44 +public class DO : TOKEN{ public override string yyname { get { return "DO";}} +public override int yynum { get { return 44; }} + public DO(Lexer yyl):base(yyl) {}} +//%WHILE+45 +public class WHILE : TOKEN{ public override string yyname { get { return "WHILE";}} +public override int yynum { get { return 45; }} + public WHILE(Lexer yyl):base(yyl) {}} +//%FOR+46 +public class FOR : TOKEN{ public override string yyname { get { return "FOR";}} +public override int yynum { get { return 46; }} + public FOR(Lexer yyl):base(yyl) {}} +//%DEFAULT_STATE+47 +public class DEFAULT_STATE : TOKEN{ public override string yyname { get { return "DEFAULT_STATE";}} +public override int yynum { get { return 47; }} + public DEFAULT_STATE(Lexer yyl):base(yyl) {}} +//%STATE+48 +public class STATE : TOKEN{ public override string yyname { get { return "STATE";}} +public override int yynum { get { return 48; }} + public STATE(Lexer yyl):base(yyl) {}} +//%JUMP+49 +public class JUMP : TOKEN{ public override string yyname { get { return "JUMP";}} +public override int yynum { get { return 49; }} + public JUMP(Lexer yyl):base(yyl) {}} +//%RETURN+50 +public class RETURN : TOKEN{ public override string yyname { get { return "RETURN";}} +public override int yynum { get { return 50; }} + public RETURN(Lexer yyl):base(yyl) {}} +//%INTEGER_TYPE+51 +public class INTEGER_TYPE : TOKEN{ public override string yyname { get { return "INTEGER_TYPE";}} +public override int yynum { get { return 51; }} + public INTEGER_TYPE(Lexer yyl):base(yyl) {}} +//%FLOAT_TYPE+52 +public class FLOAT_TYPE : TOKEN{ public override string yyname { get { return "FLOAT_TYPE";}} +public override int yynum { get { return 52; }} + public FLOAT_TYPE(Lexer yyl):base(yyl) {}} +//%STRING_TYPE+53 +public class STRING_TYPE : TOKEN{ public override string yyname { get { return "STRING_TYPE";}} +public override int yynum { get { return 53; }} + public STRING_TYPE(Lexer yyl):base(yyl) {}} +//%KEY_TYPE+54 +public class KEY_TYPE : TOKEN{ public override string yyname { get { return "KEY_TYPE";}} +public override int yynum { get { return 54; }} + public KEY_TYPE(Lexer yyl):base(yyl) {}} +//%VECTOR_TYPE+55 +public class VECTOR_TYPE : TOKEN{ public override string yyname { get { return "VECTOR_TYPE";}} +public override int yynum { get { return 55; }} + public VECTOR_TYPE(Lexer yyl):base(yyl) {}} +//%ROTATION_TYPE+56 +public class ROTATION_TYPE : TOKEN{ public override string yyname { get { return "ROTATION_TYPE";}} +public override int yynum { get { return 56; }} + public ROTATION_TYPE(Lexer yyl):base(yyl) {}} +//%LIST_TYPE+57 +public class LIST_TYPE : TOKEN{ public override string yyname { get { return "LIST_TYPE";}} +public override int yynum { get { return 57; }} + public LIST_TYPE(Lexer yyl):base(yyl) {}} +//%AT_ROT_TARGET_EVENT+58 +public class AT_ROT_TARGET_EVENT : TOKEN{ public override string yyname { get { return "AT_ROT_TARGET_EVENT";}} +public override int yynum { get { return 58; }} + public AT_ROT_TARGET_EVENT(Lexer yyl):base(yyl) {}} +//%AT_TARGET_EVENT+59 +public class AT_TARGET_EVENT : TOKEN{ public override string yyname { get { return "AT_TARGET_EVENT";}} +public override int yynum { get { return 59; }} + public AT_TARGET_EVENT(Lexer yyl):base(yyl) {}} +//%ATTACH_EVENT+60 +public class ATTACH_EVENT : TOKEN{ public override string yyname { get { return "ATTACH_EVENT";}} +public override int yynum { get { return 60; }} + public ATTACH_EVENT(Lexer yyl):base(yyl) {}} +//%CHANGED_EVENT+61 +public class CHANGED_EVENT : TOKEN{ public override string yyname { get { return "CHANGED_EVENT";}} +public override int yynum { get { return 61; }} + public CHANGED_EVENT(Lexer yyl):base(yyl) {}} +//%COLLISION_EVENT+62 +public class COLLISION_EVENT : TOKEN{ public override string yyname { get { return "COLLISION_EVENT";}} +public override int yynum { get { return 62; }} + public COLLISION_EVENT(Lexer yyl):base(yyl) {}} +//%COLLISION_END_EVENT+63 +public class COLLISION_END_EVENT : TOKEN{ public override string yyname { get { return "COLLISION_END_EVENT";}} +public override int yynum { get { return 63; }} + public COLLISION_END_EVENT(Lexer yyl):base(yyl) {}} +//%COLLISION_START_EVENT+64 +public class COLLISION_START_EVENT : TOKEN{ public override string yyname { get { return "COLLISION_START_EVENT";}} +public override int yynum { get { return 64; }} + public COLLISION_START_EVENT(Lexer yyl):base(yyl) {}} +//%CONTROL_EVENT+65 +public class CONTROL_EVENT : TOKEN{ public override string yyname { get { return "CONTROL_EVENT";}} +public override int yynum { get { return 65; }} + public CONTROL_EVENT(Lexer yyl):base(yyl) {}} +//%DATASERVER_EVENT+66 +public class DATASERVER_EVENT : TOKEN{ public override string yyname { get { return "DATASERVER_EVENT";}} +public override int yynum { get { return 66; }} + public DATASERVER_EVENT(Lexer yyl):base(yyl) {}} +//%EMAIL_EVENT+67 +public class EMAIL_EVENT : TOKEN{ public override string yyname { get { return "EMAIL_EVENT";}} +public override int yynum { get { return 67; }} + public EMAIL_EVENT(Lexer yyl):base(yyl) {}} +//%HTTP_RESPONSE_EVENT+68 +public class HTTP_RESPONSE_EVENT : TOKEN{ public override string yyname { get { return "HTTP_RESPONSE_EVENT";}} +public override int yynum { get { return 68; }} + public HTTP_RESPONSE_EVENT(Lexer yyl):base(yyl) {}} +//%LAND_COLLISION_EVENT+69 +public class LAND_COLLISION_EVENT : TOKEN{ public override string yyname { get { return "LAND_COLLISION_EVENT";}} +public override int yynum { get { return 69; }} + public LAND_COLLISION_EVENT(Lexer yyl):base(yyl) {}} +//%LAND_COLLISION_END_EVENT+70 +public class LAND_COLLISION_END_EVENT : TOKEN{ public override string yyname { get { return "LAND_COLLISION_END_EVENT";}} +public override int yynum { get { return 70; }} + public LAND_COLLISION_END_EVENT(Lexer yyl):base(yyl) {}} +//%LAND_COLLISION_START_EVENT+71 +public class LAND_COLLISION_START_EVENT : TOKEN{ public override string yyname { get { return "LAND_COLLISION_START_EVENT";}} +public override int yynum { get { return 71; }} + public LAND_COLLISION_START_EVENT(Lexer yyl):base(yyl) {}} +//%LINK_MESSAGE_EVENT+72 +public class LINK_MESSAGE_EVENT : TOKEN{ public override string yyname { get { return "LINK_MESSAGE_EVENT";}} +public override int yynum { get { return 72; }} + public LINK_MESSAGE_EVENT(Lexer yyl):base(yyl) {}} +//%LISTEN_EVENT+73 +public class LISTEN_EVENT : TOKEN{ public override string yyname { get { return "LISTEN_EVENT";}} +public override int yynum { get { return 73; }} + public LISTEN_EVENT(Lexer yyl):base(yyl) {}} +//%MONEY_EVENT+74 +public class MONEY_EVENT : TOKEN{ public override string yyname { get { return "MONEY_EVENT";}} +public override int yynum { get { return 74; }} + public MONEY_EVENT(Lexer yyl):base(yyl) {}} +//%MOVING_END_EVENT+75 +public class MOVING_END_EVENT : TOKEN{ public override string yyname { get { return "MOVING_END_EVENT";}} +public override int yynum { get { return 75; }} + public MOVING_END_EVENT(Lexer yyl):base(yyl) {}} +//%MOVING_START_EVENT+76 +public class MOVING_START_EVENT : TOKEN{ public override string yyname { get { return "MOVING_START_EVENT";}} +public override int yynum { get { return 76; }} + public MOVING_START_EVENT(Lexer yyl):base(yyl) {}} +//%NO_SENSOR_EVENT+77 +public class NO_SENSOR_EVENT : TOKEN{ public override string yyname { get { return "NO_SENSOR_EVENT";}} +public override int yynum { get { return 77; }} + public NO_SENSOR_EVENT(Lexer yyl):base(yyl) {}} +//%NOT_AT_ROT_TARGET_EVENT+78 +public class NOT_AT_ROT_TARGET_EVENT : TOKEN{ public override string yyname { get { return "NOT_AT_ROT_TARGET_EVENT";}} +public override int yynum { get { return 78; }} + public NOT_AT_ROT_TARGET_EVENT(Lexer yyl):base(yyl) {}} +//%NOT_AT_TARGET_EVENT+79 +public class NOT_AT_TARGET_EVENT : TOKEN{ public override string yyname { get { return "NOT_AT_TARGET_EVENT";}} +public override int yynum { get { return 79; }} + public NOT_AT_TARGET_EVENT(Lexer yyl):base(yyl) {}} +//%OBJECT_REZ_EVENT+80 +public class OBJECT_REZ_EVENT : TOKEN{ public override string yyname { get { return "OBJECT_REZ_EVENT";}} +public override int yynum { get { return 80; }} + public OBJECT_REZ_EVENT(Lexer yyl):base(yyl) {}} +//%ON_REZ_EVENT+81 +public class ON_REZ_EVENT : TOKEN{ public override string yyname { get { return "ON_REZ_EVENT";}} +public override int yynum { get { return 81; }} + public ON_REZ_EVENT(Lexer yyl):base(yyl) {}} +//%REMOTE_DATA_EVENT+82 +public class REMOTE_DATA_EVENT : TOKEN{ public override string yyname { get { return "REMOTE_DATA_EVENT";}} +public override int yynum { get { return 82; }} + public REMOTE_DATA_EVENT(Lexer yyl):base(yyl) {}} +//%RUN_TIME_PERMISSIONS_EVENT+83 +public class RUN_TIME_PERMISSIONS_EVENT : TOKEN{ public override string yyname { get { return "RUN_TIME_PERMISSIONS_EVENT";}} +public override int yynum { get { return 83; }} + public RUN_TIME_PERMISSIONS_EVENT(Lexer yyl):base(yyl) {}} +//%SENSOR_EVENT+84 +public class SENSOR_EVENT : TOKEN{ public override string yyname { get { return "SENSOR_EVENT";}} +public override int yynum { get { return 84; }} + public SENSOR_EVENT(Lexer yyl):base(yyl) {}} +//%STATE_ENTRY_EVENT+85 +public class STATE_ENTRY_EVENT : TOKEN{ public override string yyname { get { return "STATE_ENTRY_EVENT";}} +public override int yynum { get { return 85; }} + public STATE_ENTRY_EVENT(Lexer yyl):base(yyl) {}} +//%STATE_EXIT_EVENT+86 +public class STATE_EXIT_EVENT : TOKEN{ public override string yyname { get { return "STATE_EXIT_EVENT";}} +public override int yynum { get { return 86; }} + public STATE_EXIT_EVENT(Lexer yyl):base(yyl) {}} +//%TIMER_EVENT+87 +public class TIMER_EVENT : TOKEN{ public override string yyname { get { return "TIMER_EVENT";}} +public override int yynum { get { return 87; }} + public TIMER_EVENT(Lexer yyl):base(yyl) {}} +//%TOUCH_EVENT+88 +public class TOUCH_EVENT : TOKEN{ public override string yyname { get { return "TOUCH_EVENT";}} +public override int yynum { get { return 88; }} + public TOUCH_EVENT(Lexer yyl):base(yyl) {}} +//%TOUCH_START_EVENT+89 +public class TOUCH_START_EVENT : TOKEN{ public override string yyname { get { return "TOUCH_START_EVENT";}} +public override int yynum { get { return 89; }} + public TOUCH_START_EVENT(Lexer yyl):base(yyl) {}} +//%TOUCH_END_EVENT+90 +public class TOUCH_END_EVENT : TOKEN{ public override string yyname { get { return "TOUCH_END_EVENT";}} +public override int yynum { get { return 90; }} + public TOUCH_END_EVENT(Lexer yyl):base(yyl) {}} +//%IDENT+91 +public class IDENT : TOKEN{ public override string yyname { get { return "IDENT";}} +public override int yynum { get { return 91; }} + public IDENT(Lexer yyl):base(yyl) {}} +//%INTEGER_CONSTANT+92 +public class INTEGER_CONSTANT : TOKEN{ public override string yyname { get { return "INTEGER_CONSTANT";}} +public override int yynum { get { return 92; }} + public INTEGER_CONSTANT(Lexer yyl):base(yyl) {}} +//%HEX_INTEGER_CONSTANT+93 +public class HEX_INTEGER_CONSTANT : TOKEN{ public override string yyname { get { return "HEX_INTEGER_CONSTANT";}} +public override int yynum { get { return 93; }} + public HEX_INTEGER_CONSTANT(Lexer yyl):base(yyl) {}} +//%FLOAT_CONSTANT+94 +public class FLOAT_CONSTANT : TOKEN{ public override string yyname { get { return "FLOAT_CONSTANT";}} +public override int yynum { get { return 94; }} + public FLOAT_CONSTANT(Lexer yyl):base(yyl) {}} +//%|LSLTokens +public class yyLSLTokens : YyLexer { + public yyLSLTokens(ErrorHandler eh):base(eh) { arr = new int[] { +101,4,6,52,0, +46,0,53,0,6, +102,4,16,117,0, +115,0,45,0,97, +0,115,0,99,0, +105,0,105,0,2, +0,103,5,27,7, +0,104,9,1,0, +3,192,0,105,5, +27,3,65,0,2, +1,3,66,0,2, +1,3,67,0,2, +1,3,68,0,2, +1,3,69,0,2, +1,3,70,0,2, +1,3,71,0,2, +1,3,72,0,2, +1,3,73,0,2, +1,3,74,0,2, +1,3,75,0,2, +1,3,76,0,2, +1,3,77,0,2, +1,3,78,0,2, +1,3,79,0,2, +1,3,80,0,2, +1,3,81,0,2, +1,3,82,0,2, +1,3,83,0,2, +1,3,84,0,2, +1,3,85,0,2, +1,3,86,0,2, +1,3,87,0,2, +1,3,88,0,2, +1,3,89,0,2, +1,3,90,0,2, +1,3,192,0,2, +1,7,1,106,9, +1,1,3,170,0, +107,5,27,3,109, +0,2,1,3,110, +0,2,1,3,111, +0,2,1,3,112, +0,2,1,3,113, +0,2,1,3,114, +0,2,1,3,115, +0,2,1,3,116, +0,2,1,3,117, +0,2,1,3,118, +0,2,1,3,119, +0,2,1,3,120, +0,2,1,3,121, +0,2,1,3,122, +0,2,1,3,170, +0,2,1,3,97, +0,2,1,3,98, +0,2,1,3,99, +0,2,1,3,100, +0,2,1,3,101, +0,2,1,3,102, +0,2,1,3,103, +0,2,1,3,104, +0,2,1,3,105, +0,2,1,3,106, +0,2,1,3,107, +0,2,1,3,108, +0,2,1,7,2, +108,9,1,2,3, +197,1,109,5,1, +3,197,1,2,1, +7,3,110,9,1, +3,3,176,2,111, +5,1,3,176,2, +2,1,7,4,112, +9,1,4,3,187, +1,113,5,1,3, +187,1,2,1,7, +5,114,9,1,5, +3,0,3,115,5, +1,3,0,3,2, +1,7,6,116,9, +1,6,3,3,9, +117,5,1,3,3, +9,2,1,7,7, +118,9,1,7,3, +136,4,119,5,1, +3,136,4,2,1, +7,8,120,9,1, +8,3,96,6,121, +5,11,3,96,6, +2,1,3,48,0, +2,1,3,49,0, +2,1,3,50,0, +2,1,3,51,0, +2,1,3,52,0, +2,1,3,53,0, +2,1,3,54,0, +2,1,3,55,0, +2,1,3,56,0, +2,1,3,57,0, +2,1,7,9,122, +9,1,9,3,96, +33,123,5,1,3, +96,33,2,1,7, +10,124,9,1,10, +3,178,0,125,5, +1,3,178,0,2, +1,7,11,126,9, +1,11,3,160,0, +127,5,2,3,160, +0,2,1,3,32, +0,2,1,7,12, +128,9,1,12,3, +40,32,129,5,1, +3,40,32,2,1, +7,13,130,9,1, +13,3,41,32,131, +5,1,3,41,32, +2,1,7,14,132, +9,1,14,3,1, +0,133,5,5,3, +0,0,2,1,3, +1,0,2,1,3, +13,0,2,1,3, +9,0,2,1,3, +10,0,2,1,7, +15,134,9,1,15, +3,15,7,135,5, +1,3,15,7,2, +1,7,17,136,9, +1,17,3,0,224, +137,5,1,3,0, +224,2,1,7,18, +138,9,1,18,3, +63,32,139,5,2, +3,63,32,2,1, +3,95,0,2,1, +7,19,140,9,1, +19,3,173,0,141, +5,2,3,45,0, +2,1,3,173,0, +2,1,7,20,142, +9,1,20,3,58, +15,143,5,4,3, +123,0,2,1,3, +91,0,2,1,3, +58,15,2,1,3, +40,0,2,1,7, +21,144,9,1,21, +3,59,15,145,5, +4,3,59,15,2, +1,3,125,0,2, +1,3,93,0,2, +1,3,41,0,2, +1,7,22,146,9, +1,22,3,171,0, +147,5,1,3,171, +0,2,1,7,23, +148,9,1,23,3, +187,0,149,5,1, +3,187,0,2,1, +7,24,150,9,1, +24,3,35,0,151, +5,12,3,37,0, +2,1,3,38,0, +2,1,3,42,0, +2,1,3,44,0, +2,1,3,46,0, +2,1,3,47,0, +2,1,3,92,0, +2,1,3,59,0, +2,1,3,64,0, +2,1,3,33,0, +2,1,3,34,0, +2,1,3,35,0, +2,1,7,25,152, +9,1,25,3,172, +0,153,5,7,3, +172,0,2,1,3, +124,0,2,1,3, +126,0,2,1,3, +60,0,2,1,3, +61,0,2,1,3, +62,0,2,1,3, +43,0,2,1,7, +26,154,9,1,26, +3,36,0,155,5, +1,3,36,0,2, +1,7,27,156,9, +1,27,3,96,0, +157,5,2,3,94, +0,2,1,3,96, +0,2,1,7,27, +2,0,158,5,3, +159,4,14,67,0, +79,0,77,0,77, +0,69,0,78,0, +84,0,160,12,1, +1057,161,5,119,3, +1,0,162,12,1, +1058,163,5,0,164, +11,1,1025,0,165, +4,0,1,-1,3, +9,0,162,3,10, +0,166,12,1,1259, +167,5,0,168,11, +1,1029,0,165,1, +-1,3,13,0,162, +3,0,3,162,3, +96,33,162,3,32, +0,162,3,33,0, +162,3,34,0,162, +3,35,0,162,3, +36,0,162,3,37, +0,162,3,38,0, +162,3,40,0,162, +3,41,0,162,3, +42,0,169,12,1, +1398,170,5,1,3, +47,0,171,12,1, +1502,172,5,0,173, +11,1,1011,0,165, +1,-1,174,11,1, +1025,0,165,1,-1, +3,43,0,162,3, +44,0,162,3,45, +0,162,3,46,0, +162,3,47,0,162, +3,3,9,162,3, +49,0,162,3,50, +0,162,3,48,0, +162,3,52,0,162, +3,53,0,162,3, +51,0,162,3,55, +0,162,3,56,0, +162,3,54,0,162, +3,59,0,162,3, +57,0,162,3,61, +0,162,3,62,0, +162,3,60,0,162, +3,64,0,162,3, +65,0,162,3,66, +0,162,3,67,0, +162,3,68,0,162, +3,69,0,162,3, +70,0,162,3,71, +0,162,3,72,0, +162,3,73,0,162, +3,74,0,162,3, +75,0,162,3,76, +0,162,3,77,0, +162,3,78,0,162, +3,79,0,162,3, +80,0,162,3,81, +0,162,3,82,0, +162,3,83,0,162, +3,84,0,162,3, +85,0,162,3,86, +0,162,3,87,0, +162,3,88,0,162, +3,89,0,162,3, +90,0,162,3,91, +0,162,3,92,0, +162,3,93,0,162, +3,94,0,162,3, +95,0,162,3,96, +0,162,3,97,0, +162,3,98,0,162, +3,99,0,162,3, +100,0,162,3,101, +0,162,3,102,0, +162,3,103,0,162, +3,104,0,162,3, +105,0,162,3,106, +0,162,3,107,0, +162,3,108,0,162, +3,109,0,162,3, +110,0,162,3,111, +0,162,3,112,0, +162,3,113,0,162, +3,114,0,162,3, +115,0,162,3,116, +0,162,3,117,0, +162,3,118,0,162, +3,119,0,162,3, +120,0,162,3,121, +0,162,3,122,0, +162,3,123,0,162, +3,124,0,162,3, +125,0,162,3,96, +6,162,3,126,0, +162,3,58,15,162, +3,59,15,162,3, +136,4,162,3,160, +0,162,3,15,7, +162,3,170,0,162, +3,171,0,162,3, +172,0,162,3,173, +0,162,3,178,0, +162,3,176,2,162, +3,187,0,162,3, +187,1,162,3,192, +0,162,3,41,32, +162,3,197,1,162, +3,0,224,162,3, +40,32,162,3,63, +32,162,0,165,1, +-1,175,4,18,89, +0,89,0,73,0, +78,0,73,0,84, +0,73,0,65,0, +76,0,176,12,1, +1658,177,5,91,3, +9,0,178,12,1, +39893,179,5,0,180, +11,1,1034,0,165, +1,-1,3,10,0, +178,3,13,0,178, +3,32,0,178,3, +33,0,181,12,1, +42926,182,5,1,3, +61,0,183,12,1, +43041,184,5,0,185, +11,1,142,0,186, +4,36,69,0,88, +0,67,0,76,0, +65,0,77,0,65, +0,84,0,73,0, +79,0,78,0,95, +0,69,0,81,0, +85,0,65,0,76, +0,83,0,1,-1, +187,11,1,180,0, +188,4,22,69,0, +88,0,67,0,76, +0,65,0,77,0, +65,0,84,0,73, +0,79,0,78,0, +1,-1,3,34,0, +189,12,1,43167,190, +5,0,191,11,1, +925,0,165,1,-1, +3,37,0,192,12, +1,41117,193,5,1, +3,61,0,194,12, +1,41232,195,5,0, +196,11,1,40,0, +197,4,28,80,0, +69,0,82,0,67, +0,69,0,78,0, +84,0,95,0,69, +0,81,0,85,0, +65,0,76,0,83, +0,1,-1,198,11, +1,101,0,199,4, +14,80,0,69,0, +82,0,67,0,69, +0,78,0,84,0, +1,-1,3,38,0, +200,12,1,41358,201, +5,1,3,38,0, +202,12,1,41458,203, +5,0,204,11,1, +185,0,205,4,14, +65,0,77,0,80, +0,95,0,65,0, +77,0,80,0,1, +-1,206,11,1,160, +0,207,4,6,65, +0,77,0,80,0, +1,-1,3,40,0, +208,12,1,40630,209, +5,0,210,11,1, +71,0,211,4,20, +76,0,69,0,70, +0,84,0,95,0, +80,0,65,0,82, +0,69,0,78,0, +1,-1,3,41,0, +212,12,1,40994,213, +5,0,214,11,1, +76,0,215,4,22, +82,0,73,0,71, +0,72,0,84,0, +95,0,80,0,65, +0,82,0,69,0, +78,0,1,-1,3, +42,0,216,12,1, +41599,217,5,1,3, +61,0,218,12,1, +41714,219,5,0,220, +11,1,28,0,221, +4,22,83,0,84, +0,65,0,82,0, +95,0,69,0,81, +0,85,0,65,0, +76,0,83,0,1, +-1,222,11,1,91, +0,223,4,8,83, +0,84,0,65,0, +82,0,1,-1,3, +43,0,224,12,1, +44615,225,5,2,3, +61,0,226,12,1, +44730,227,5,0,228, +11,1,16,0,229, +4,22,80,0,76, +0,85,0,83,0, +95,0,69,0,81, +0,85,0,65,0, +76,0,83,0,1, +-1,3,43,0,230, +12,1,44852,231,5, +0,232,11,1,2, +0,233,4,18,73, +0,78,0,67,0, +82,0,69,0,77, +0,69,0,78,0, +84,0,1,-1,234, +11,1,81,0,235, +4,8,80,0,76, +0,85,0,83,0, +1,-1,3,44,0, +236,12,1,41840,237, +5,0,238,11,1, +61,0,239,4,10, +67,0,79,0,77, +0,77,0,65,0, +1,-1,3,45,0, +240,12,1,40025,241, +5,2,3,45,0, +242,12,1,40112,243, +5,0,244,11,1, +10,0,245,4,18, +68,0,69,0,67, +0,82,0,69,0, +77,0,69,0,78, +0,84,0,1,-1, +3,61,0,246,12, +1,40260,247,5,0, +248,11,1,22,0, +249,4,24,77,0, +73,0,78,0,85, +0,83,0,95,0, +69,0,81,0,85, +0,65,0,76,0, +83,0,1,-1,250, +11,1,86,0,251, +4,10,77,0,73, +0,78,0,85,0, +83,0,1,-1,3, +46,0,252,12,1, +41961,253,5,14,3, +48,0,254,12,1, +39627,255,5,14,3, +48,0,254,3,49, +0,254,3,50,0, +254,3,51,0,254, +3,52,0,254,3, +53,0,254,3,54, +0,254,3,55,0, +254,3,56,0,254, +3,57,0,254,3, +101,0,256,12,1, +39090,257,5,12,3, +43,0,258,12,1, +39417,259,5,10,3, +48,0,260,12,1, +39152,261,5,12,3, +48,0,260,3,49, +0,260,3,50,0, +260,3,51,0,260, +3,52,0,260,3, +53,0,260,3,54, +0,260,3,55,0, +260,3,56,0,260, +3,57,0,260,3, +102,0,262,12,1, +39158,263,5,0,264, +11,1,866,0,265, +4,28,70,0,76, +0,79,0,65,0, +84,0,95,0,67, +0,79,0,78,0, +83,0,84,0,65, +0,78,0,84,0, +1,-1,3,70,0, +262,266,11,1,866, +0,265,1,-1,3, +49,0,260,3,50, +0,260,3,51,0, +260,3,52,0,260, +3,53,0,260,3, +54,0,260,3,55, +0,260,3,56,0, +260,3,57,0,260, +0,165,1,-1,3, +45,0,258,3,48, +0,260,3,49,0, +260,3,50,0,260, +3,51,0,260,3, +52,0,260,3,53, +0,260,3,54,0, +260,3,55,0,260, +3,56,0,260,3, +57,0,260,0,165, +1,-1,3,102,0, +262,3,69,0,256, +3,70,0,262,267, +11,1,866,0,265, +1,-1,3,49,0, +254,3,50,0,254, +3,51,0,254,3, +52,0,254,3,53, +0,254,3,54,0, +254,3,55,0,254, +3,56,0,254,3, +57,0,254,3,101, +0,256,3,102,0, +262,3,69,0,256, +3,70,0,262,268, +11,1,111,0,269, +4,12,80,0,69, +0,82,0,73,0, +79,0,68,0,1, +-1,3,47,0,270, +12,1,42082,271,5, +3,3,47,0,272, +12,1,42306,273,5, +118,3,1,0,274, +12,1,42307,275,5, +118,3,1,0,274, +3,9,0,274,3, +96,33,274,3,13, +0,274,3,0,3, +274,3,32,0,274, +3,33,0,274,3, +34,0,274,3,35, +0,274,3,36,0, +274,3,37,0,274, +3,38,0,274,3, +40,0,274,3,41, +0,274,3,42,0, +274,3,43,0,274, +3,44,0,274,3, +45,0,274,3,46, +0,274,3,47,0, +274,3,3,9,274, +3,49,0,274,3, +50,0,274,3,48, +0,274,3,52,0, +274,3,53,0,274, +3,51,0,274,3, +55,0,274,3,56, +0,274,3,54,0, +274,3,59,0,274, +3,57,0,274,3, +61,0,274,3,62, +0,274,3,60,0, +274,3,64,0,274, +3,65,0,274,3, +66,0,274,3,67, +0,274,3,68,0, +274,3,69,0,274, +3,70,0,274,3, +71,0,274,3,72, +0,274,3,73,0, +274,3,74,0,274, +3,75,0,274,3, +76,0,274,3,77, +0,274,3,78,0, +274,3,79,0,274, +3,80,0,274,3, +81,0,274,3,82, +0,274,3,83,0, +274,3,84,0,274, +3,85,0,274,3, +86,0,274,3,87, +0,274,3,88,0, +274,3,89,0,274, +3,90,0,274,3, +91,0,274,3,92, +0,274,3,93,0, +274,3,94,0,274, +3,95,0,274,3, +96,0,274,3,97, +0,274,3,98,0, +274,3,99,0,274, +3,100,0,274,3, +101,0,274,3,102, +0,274,3,103,0, +274,3,104,0,274, +3,105,0,274,3, +106,0,274,3,107, +0,274,3,15,7, +274,3,109,0,274, +3,110,0,274,3, +111,0,274,3,112, +0,274,3,113,0, +274,3,114,0,274, +3,115,0,274,3, +116,0,274,3,117, +0,274,3,118,0, +274,3,119,0,274, +3,120,0,274,3, +121,0,274,3,122, +0,274,3,108,0, +274,3,124,0,274, +3,125,0,274,3, +96,6,274,3,123, +0,274,3,126,0, +274,3,58,15,274, +3,59,15,274,3, +136,4,274,3,160, +0,274,3,170,0, +274,3,171,0,274, +3,172,0,274,3, +173,0,274,3,178, +0,274,3,176,2, +274,3,187,0,274, +3,187,1,274,3, +192,0,274,3,41, +32,274,3,197,1, +274,3,0,224,274, +3,40,32,274,3, +63,32,274,276,11, +1,1038,0,165,1, +-1,3,9,0,274, +3,96,33,274,3, +13,0,274,3,0, +3,274,3,32,0, +274,3,33,0,274, +3,34,0,274,3, +35,0,274,3,36, +0,274,3,37,0, +274,3,38,0,274, +3,40,0,274,3, +41,0,274,3,42, +0,274,3,43,0, +274,3,44,0,274, +3,45,0,274,3, +46,0,274,3,47, +0,274,3,3,9, +274,3,49,0,274, +3,50,0,274,3, +48,0,274,3,52, +0,274,3,53,0, +274,3,51,0,274, +3,55,0,274,3, +56,0,274,3,54, +0,274,3,59,0, +274,3,57,0,274, +3,61,0,274,3, +62,0,274,3,60, +0,274,3,64,0, +274,3,65,0,274, +3,66,0,274,3, +67,0,274,3,68, +0,274,3,69,0, +274,3,70,0,274, +3,71,0,274,3, +72,0,274,3,73, +0,274,3,74,0, +274,3,75,0,274, +3,76,0,274,3, +77,0,274,3,78, +0,274,3,79,0, +274,3,80,0,274, +3,81,0,274,3, +82,0,274,3,83, +0,274,3,84,0, +274,3,85,0,274, +3,86,0,274,3, +87,0,274,3,88, +0,274,3,89,0, +274,3,90,0,274, +3,91,0,274,3, +92,0,274,3,93, +0,274,3,94,0, +274,3,95,0,274, +3,96,0,274,3, +97,0,274,3,98, +0,274,3,99,0, +274,3,100,0,274, +3,101,0,274,3, +102,0,274,3,103, +0,274,3,104,0, +274,3,105,0,274, +3,106,0,274,3, +107,0,274,3,15, +7,274,3,109,0, +274,3,110,0,274, +3,111,0,274,3, +112,0,274,3,113, +0,274,3,114,0, +274,3,115,0,274, +3,116,0,274,3, +117,0,274,3,118, +0,274,3,119,0, +274,3,120,0,274, +3,121,0,274,3, +122,0,274,3,108, +0,274,3,124,0, +274,3,125,0,274, +3,96,6,274,3, +123,0,274,3,126, +0,274,3,58,15, +274,3,59,15,274, +3,136,4,274,3, +160,0,274,3,170, +0,274,3,171,0, +274,3,172,0,274, +3,173,0,274,3, +178,0,274,3,176, +2,274,3,187,0, +274,3,187,1,274, +3,192,0,274,3, +41,32,274,3,197, +1,274,3,0,224, +274,3,40,32,274, +3,63,32,274,277, +11,1,1038,0,165, +1,-1,3,61,0, +278,12,1,42557,279, +5,0,280,11,1, +34,0,281,4,24, +83,0,76,0,65, +0,83,0,72,0, +95,0,69,0,81, +0,85,0,65,0, +76,0,83,0,1, +-1,3,42,0,282, +12,1,42183,283,5, +0,284,11,1,999, +0,165,1,-1,285, +11,1,96,0,286, +4,10,83,0,76, +0,65,0,83,0, +72,0,1,-1,3, +48,0,287,12,1, +38680,288,5,13,3, +120,0,289,12,1, +38704,290,5,22,3, +102,0,291,12,1, +38705,292,5,22,3, +102,0,291,3,48, +0,291,3,49,0, +291,3,50,0,291, +3,51,0,291,3, +52,0,291,3,53, +0,291,3,54,0, +291,3,55,0,291, +3,56,0,291,3, +57,0,291,3,97, +0,291,3,98,0, +291,3,99,0,291, +3,100,0,291,3, +101,0,291,3,65, +0,291,3,66,0, +291,3,67,0,291, +3,68,0,291,3, +69,0,291,3,70, +0,291,293,11,1, +847,0,294,4,40, +72,0,69,0,88, +0,95,0,73,0, +78,0,84,0,69, +0,71,0,69,0, +82,0,95,0,67, +0,79,0,78,0, +83,0,84,0,65, +0,78,0,84,0, +1,-1,3,48,0, +291,3,49,0,291, +3,50,0,291,3, +51,0,291,3,52, +0,291,3,53,0, +291,3,54,0,291, +3,55,0,291,3, +56,0,291,3,57, +0,291,3,97,0, +291,3,98,0,291, +3,99,0,291,3, +100,0,291,3,101, +0,291,3,65,0, +291,3,66,0,291, +3,67,0,291,3, +68,0,291,3,69, +0,291,3,70,0, +291,0,165,1,-1, +3,48,0,295,12, +1,38982,296,5,11, +3,46,0,297,12, +1,39085,298,5,14, +3,48,0,254,3, +49,0,254,3,50, +0,254,3,51,0, +254,3,52,0,254, +3,53,0,254,3, +54,0,254,3,55, +0,254,3,56,0, +254,3,57,0,254, +3,101,0,256,3, +102,0,262,3,69, +0,256,3,70,0, +262,299,11,1,866, +0,265,1,-1,3, +48,0,295,3,49, +0,295,3,50,0, +295,3,51,0,295, +3,52,0,295,3, +53,0,295,3,54, +0,295,3,55,0, +295,3,56,0,295, +3,57,0,295,300, +11,1,841,0,301, +4,32,73,0,78, +0,84,0,69,0, +71,0,69,0,82, +0,95,0,67,0, +79,0,78,0,83, +0,84,0,65,0, +78,0,84,0,1, +-1,3,49,0,295, +3,50,0,295,3, +88,0,289,3,52, +0,295,3,53,0, +295,3,51,0,295, +3,55,0,295,3, +56,0,295,3,54, +0,295,3,46,0, +297,3,57,0,295, +302,11,1,841,0, +301,1,-1,3,49, +0,295,3,50,0, +295,3,51,0,295, +3,52,0,295,3, +53,0,295,3,54, +0,295,3,55,0, +295,3,56,0,295, +3,57,0,295,3, +59,0,303,12,1, +42684,304,5,0,305, +11,1,46,0,306, +4,18,83,0,69, +0,77,0,73,0, +67,0,79,0,76, +0,79,0,78,0, +1,-1,3,60,0, +307,12,1,43652,308, +5,2,3,60,0, +309,12,1,43766,310, +5,0,311,11,1, +197,0,312,4,20, +76,0,69,0,70, +0,84,0,95,0, +83,0,72,0,73, +0,70,0,84,0, +1,-1,3,61,0, +313,12,1,43887,314, +5,0,315,11,1, +148,0,316,4,22, +76,0,69,0,83, +0,83,0,95,0, +69,0,81,0,85, +0,65,0,76,0, +83,0,1,-1,317, +11,1,116,0,318, +4,20,76,0,69, +0,70,0,84,0, +95,0,65,0,78, +0,71,0,76,0, +69,0,1,-1,3, +61,0,319,12,1, +44013,320,5,1,3, +61,0,321,12,1, +44128,322,5,0,323, +11,1,136,0,324, +4,26,69,0,81, +0,85,0,65,0, +76,0,83,0,95, +0,69,0,81,0, +85,0,65,0,76, +0,83,0,1,-1, +325,11,1,66,0, +326,4,12,69,0, +81,0,85,0,65, +0,76,0,83,0, +1,-1,3,62,0, +327,12,1,44254,328, +5,2,3,61,0, +329,12,1,44369,330, +5,0,331,11,1, +154,0,332,4,28, +71,0,82,0,69, +0,65,0,84,0, +69,0,82,0,95, +0,69,0,81,0, +85,0,65,0,76, +0,83,0,1,-1, +3,62,0,333,12, +1,44490,334,5,0, +335,11,1,203,0, +336,4,22,82,0, +73,0,71,0,72, +0,84,0,95,0, +83,0,72,0,73, +0,70,0,84,0, +1,-1,337,11,1, +121,0,338,4,22, +82,0,73,0,71, +0,72,0,84,0, +95,0,65,0,78, +0,71,0,76,0, +69,0,1,-1,3, +64,0,339,12,1, +42805,340,5,0,341, +11,1,106,0,342, +4,4,65,0,84, +0,1,-1,3,65, +0,343,12,1,1659, +344,5,63,3,109, +0,345,12,1,1660, +346,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +347,11,1,829,0, +348,4,10,73,0, +68,0,69,0,78, +0,84,0,1,-1, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,349,11, +1,829,0,348,1, +-1,3,66,0,343, +3,67,0,343,3, +68,0,343,3,69, +0,343,3,70,0, +343,3,71,0,343, +3,72,0,343,3, +73,0,343,3,74, +0,343,3,75,0, +343,3,76,0,343, +3,77,0,343,3, +78,0,343,3,79, +0,343,3,80,0, +343,3,81,0,343, +3,82,0,343,3, +83,0,343,3,84, +0,343,3,85,0, +343,3,86,0,343, +3,87,0,343,3, +88,0,343,3,89, +0,343,3,90,0, +343,3,91,0,350, +12,1,40508,351,5, +0,352,11,1,126, +0,353,4,24,76, +0,69,0,70,0, +84,0,95,0,66, +0,82,0,65,0, +67,0,75,0,69, +0,84,0,1,-1, +3,93,0,354,12, +1,40873,355,5,0, +356,11,1,131,0, +357,4,26,82,0, +73,0,71,0,72, +0,84,0,95,0, +66,0,82,0,65, +0,67,0,75,0, +69,0,84,0,1, +-1,3,94,0,358, +12,1,44977,359,5, +0,360,11,1,170, +0,361,4,10,67, +0,65,0,82,0, +69,0,84,0,1, +-1,3,95,0,343, +3,97,0,362,12, +1,20661,363,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,364,12,1,20696, +365,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,366, +12,1,20731,367,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,368,12, +1,20774,369,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +370,12,1,20819,371, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,372,12,1, +20869,373,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,374,11,1,380, +0,375,4,24,65, +0,84,0,84,0, +65,0,67,0,72, +0,95,0,69,0, +86,0,69,0,78, +0,84,0,1,-1, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,376,11,1,829, +0,348,1,-1,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +377,11,1,829,0, +348,1,-1,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,378,11,1, +829,0,348,1,-1, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,379,12,1,21262, +380,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,381,12,1,21295, +382,5,63,3,109, +0,345,3,110,0, +345,3,111,0,383, +12,1,21325,384,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,385,12,1, +21360,386,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,387,12,1, +21446,388,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +389,12,1,21481,390, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,391, +12,1,21524,392,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,393, +12,1,21557,394,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,395,12,1, +21606,396,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,397,12,1, +21653,398,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +399,12,1,21688,400, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,401, +11,1,350,0,402, +4,38,65,0,84, +0,95,0,82,0, +79,0,84,0,95, +0,84,0,65,0, +82,0,71,0,69, +0,84,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,-1,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,403,11,1, +829,0,348,1,-1, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,404,11, +1,829,0,348,1, +-1,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,405,11,1,829, +0,348,1,-1,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,406,11,1, +829,0,348,1,-1, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,407, +11,1,829,0,348, +1,-1,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,408,11,1, +829,0,348,1,-1, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,409,11, +1,829,0,348,1, +-1,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,410,11,1,829, +0,348,1,-1,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,411, +11,1,829,0,348, +1,-1,3,115,0, +345,3,116,0,412, +12,1,22497,413,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,414,12, +1,22540,415,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,416,12, +1,22573,417,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,418,12,1,22622, +419,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,420,12,1,22669, +421,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,422, +12,1,22704,423,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,424,11, +1,367,0,425,4, +30,65,0,84,0, +95,0,84,0,65, +0,82,0,71,0, +69,0,84,0,95, +0,69,0,86,0, +69,0,78,0,84, +0,1,-1,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,426,11, +1,829,0,348,1, +-1,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,427, +11,1,829,0,348, +1,-1,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,428,11,1, +829,0,348,1,-1, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,429,11, +1,829,0,348,1, +-1,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +430,11,1,829,0, +348,1,-1,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,431,11, +1,829,0,348,1, +-1,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,432, +11,1,829,0,348, +1,-1,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,433,11,1, +829,0,348,1,-1, +3,98,0,343,3, +99,0,434,12,1, +23423,435,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +436,12,1,23453,437, +5,63,3,109,0, +345,3,110,0,438, +12,1,23482,439,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,440,12,1, +23517,441,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,442,12,1, +23550,443,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +444,12,1,23580,445, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,446,12, +1,23634,447,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,448,11,1, +450,0,449,4,26, +67,0,79,0,78, +0,84,0,82,0, +79,0,76,0,95, +0,69,0,86,0, +69,0,78,0,84, +0,1,-1,450,11, +1,829,0,348,1, +-1,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,451,11,1,829, +0,348,1,-1,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,452,11,1, +829,0,348,1,-1, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +453,11,1,829,0, +348,1,-1,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,454,12,1,24107, +455,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,456, +12,1,24161,457,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +458,12,1,24212,459, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,460, +12,1,24246,461,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +462,12,1,24297,463, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,464,12, +1,24327,465,5,63, +3,109,0,345,3, +110,0,466,12,1, +24356,467,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,468,12,1, +24442,469,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,470,12,1,24476, +471,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,472, +12,1,24511,473,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,474,12, +1,24554,475,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,476,12, +1,24587,477,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,478,12,1,24622, +479,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +480,11,1,431,0, +481,4,42,67,0, +79,0,76,0,76, +0,73,0,83,0, +73,0,79,0,78, +0,95,0,83,0, +84,0,65,0,82, +0,84,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,-1,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,482,11,1, +829,0,348,1,-1, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,483,11, +1,829,0,348,1, +-1,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +484,11,1,829,0, +348,1,-1,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,485,11, +1,829,0,348,1, +-1,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,486,12,1,25089, +487,5,63,3,109, +0,345,3,110,0, +488,12,1,25118,489, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,490,12,1,25164, +491,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +492,11,1,414,0, +493,4,38,67,0, +79,0,76,0,76, +0,73,0,83,0, +73,0,79,0,78, +0,95,0,69,0, +78,0,68,0,95, +0,69,0,86,0, +69,0,78,0,84, +0,1,-1,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +494,11,1,829,0, +348,1,-1,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,495,11,1, +829,0,348,1,-1, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,496,11, +1,829,0,348,1, +-1,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,497, +11,1,401,0,498, +4,30,67,0,79, +0,76,0,76,0, +73,0,83,0,73, +0,79,0,78,0, +95,0,69,0,86, +0,69,0,78,0, +84,0,1,-1,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,499,11, +1,829,0,348,1, +-1,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,500,11,1,829, +0,348,1,-1,3, +106,0,345,3,107, +0,345,3,108,0, +345,501,11,1,829, +0,348,1,-1,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,502,11, +1,829,0,348,1, +-1,3,106,0,345, +3,107,0,345,3, +108,0,345,503,11, +1,829,0,348,1, +-1,504,11,1,829, +0,348,1,-1,505, +11,1,829,0,348, +1,-1,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +506,12,1,26113,507, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,508, +12,1,26156,509,5, +63,3,109,0,345, +3,110,0,510,12, +1,26185,511,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,512,12,1,26234, +513,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,514,12,1,26281, +515,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,516,12,1, +26327,517,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,518,11,1,390, +0,519,4,26,67, +0,72,0,65,0, +78,0,71,0,69, +0,68,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,-1,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,520, +11,1,829,0,348, +1,-1,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +521,11,1,829,0, +348,1,-1,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,522,11, +1,829,0,348,1, +-1,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +523,11,1,829,0, +348,1,-1,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,524,11,1, +829,0,348,1,-1, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,525,11,1,829, +0,348,1,-1,3, +100,0,526,12,1, +26904,527,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +528,12,1,26934,529, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,530, +11,1,223,0,531, +4,4,68,0,79, +0,1,-1,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,532,12, +1,27067,533,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,534,12,1,27102, +535,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +536,12,1,27145,537, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,538, +12,1,27179,539,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,540, +12,1,27226,541,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,542, +12,1,27259,543,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +544,12,1,27296,545, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +546,12,1,27343,547, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +548,12,1,27376,549, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,550, +11,1,461,0,551, +4,32,68,0,65, +0,84,0,65,0, +83,0,69,0,82, +0,86,0,69,0, +82,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +-1,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,552, +11,1,829,0,348, +1,-1,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +553,11,1,829,0, +348,1,-1,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +554,11,1,829,0, +348,1,-1,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,555,11,1,829, +0,348,1,-1,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,556,11,1, +829,0,348,1,-1, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,557, +11,1,829,0,348, +1,-1,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,558,11,1,829, +0,348,1,-1,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,559, +11,1,829,0,348, +1,-1,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,560,12,1, +28151,561,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,562,12,1,28199, +563,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +564,12,1,28242,565, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,566,12,1, +28278,567,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +568,12,1,28332,569, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,570,12, +1,28367,571,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,572,11,1, +245,0,573,4,26, +68,0,69,0,70, +0,65,0,85,0, +76,0,84,0,95, +0,83,0,84,0, +65,0,84,0,69, +0,1,-1,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,574,11, +1,829,0,348,1, +-1,575,11,1,829, +0,348,1,-1,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +576,11,1,829,0, +348,1,-1,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,577,11,1, +829,0,348,1,-1, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,578, +11,1,829,0,348, +1,-1,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +579,11,1,829,0, +348,1,-1,3,101, +0,580,12,1,28945, +581,5,63,3,109, +0,582,12,1,28973, +583,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +584,12,1,29016,585, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,586,12,1,29067, +587,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,588, +12,1,29121,589,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,590,11, +1,475,0,591,4, +22,69,0,77,0, +65,0,73,0,76, +0,95,0,69,0, +86,0,69,0,78, +0,84,0,1,-1, +592,11,1,829,0, +348,1,-1,3,106, +0,345,3,107,0, +345,3,108,0,345, +593,11,1,829,0, +348,1,-1,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,594,11,1, +829,0,348,1,-1, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,595,12,1, +29479,596,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,597,12,1,29513, +598,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,599,12,1,29560, +600,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +601,11,1,215,0, +602,4,8,69,0, +76,0,83,0,69, +0,1,-1,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,603,11,1,829, +0,348,1,-1,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,604,11, +1,829,0,348,1, +-1,605,11,1,829, +0,348,1,-1,3, +102,0,606,12,1, +29906,607,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +608,12,1,29936,609, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +610,12,1,29969,611, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,612, +11,1,238,0,613, +4,6,70,0,79, +0,82,0,1,-1, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,614,11, +1,829,0,348,1, +-1,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +615,12,1,30200,616, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,617,12, +1,30230,618,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,619,12,1, +30273,620,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +621,12,1,30308,622, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,623, +11,1,294,0,624, +4,20,70,0,76, +0,79,0,65,0, +84,0,95,0,84, +0,89,0,80,0, +69,0,1,-1,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,625, +11,1,829,0,348, +1,-1,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,626,11,1,829, +0,348,1,-1,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,627, +11,1,829,0,348, +1,-1,628,11,1, +829,0,348,1,-1, +3,103,0,343,3, +104,0,629,12,1, +30748,630,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +631,12,1,30783,632, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,633,12, +1,30818,634,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +635,12,1,30849,636, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +637,12,1,30935,638, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +639,12,1,30968,640, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +641,12,1,31015,642, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,643, +12,1,31049,644,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,645,12,1,31080, +646,5,63,3,109, +0,345,3,110,0, +345,3,111,0,647, +12,1,31110,648,5, +63,3,109,0,345, +3,110,0,649,12, +1,31139,650,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,651,12,1, +31173,652,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,653,12,1, +31220,654,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,655,11,1,484, +0,656,4,38,72, +0,84,0,84,0, +80,0,95,0,82, +0,69,0,83,0, +80,0,79,0,78, +0,83,0,69,0, +95,0,69,0,86, +0,69,0,78,0, +84,0,1,-1,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,657,11,1, +829,0,348,1,-1, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,658, +11,1,829,0,348, +1,-1,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,659,11,1,829, +0,348,1,-1,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,660, +11,1,829,0,348, +1,-1,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,661,11, +1,829,0,348,1, +-1,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +662,11,1,829,0, +348,1,-1,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,663,11,1,829, +0,348,1,-1,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,664,11,1, +829,0,348,1,-1, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,665,11, +1,829,0,348,1, +-1,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,666,11,1, +829,0,348,1,-1, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +667,11,1,829,0, +348,1,-1,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,668,11, +1,829,0,348,1, +-1,3,105,0,669, +12,1,32309,670,5, +63,3,109,0,345, +3,110,0,671,12, +1,32338,672,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,673,12,1,32373, +674,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,675,12,1,32420, +676,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,677, +12,1,32469,678,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,679, +12,1,32516,680,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,681, +12,1,32549,682,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,683,11, +1,283,0,684,4, +24,73,0,78,0, +84,0,69,0,71, +0,69,0,82,0, +95,0,84,0,89, +0,80,0,69,0, +1,-1,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +685,11,1,829,0, +348,1,-1,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,686,11,1,829, +0,348,1,-1,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,687, +11,1,829,0,348, +1,-1,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +688,11,1,829,0, +348,1,-1,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,689,11, +1,829,0,348,1, +-1,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +690,12,1,33077,691, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,692, +11,1,209,0,693, +4,4,73,0,70, +0,1,-1,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,694,11,1, +829,0,348,1,-1, +3,106,0,695,12, +1,33270,696,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +697,12,1,33306,698, +5,63,3,109,0, +699,12,1,33334,700, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,701,12,1, +33365,702,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,703,11,1,265, +0,704,4,8,74, +0,85,0,77,0, +80,0,1,-1,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +705,11,1,829,0, +348,1,-1,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,706,11,1,829, +0,348,1,-1,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +707,11,1,829,0, +348,1,-1,3,107, +0,708,12,1,33751, +709,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,710,12,1,33798, +711,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,712, +12,1,33838,713,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,714,11, +1,313,0,715,4, +16,75,0,69,0, +89,0,95,0,84, +0,89,0,80,0, +69,0,1,-1,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,716, +11,1,829,0,348, +1,-1,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +717,11,1,829,0, +348,1,-1,3,108, +0,718,12,1,34112, +719,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +720,12,1,34155,721, +5,63,3,109,0, +345,3,110,0,722, +12,1,34184,723,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +724,12,1,34230,725, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +726,12,1,34316,727, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,728,12,1, +34361,729,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +730,12,1,34391,731, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,732,12, +1,34445,733,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,734,12,1,34499, +735,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,736,12,1, +34550,737,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,738,12,1,34584, +739,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,740,12,1, +34635,741,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +742,12,1,34665,743, +5,63,3,109,0, +345,3,110,0,744, +12,1,34694,745,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,746, +12,1,34780,747,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,748,12, +1,34814,749,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,750,12,1,34849, +751,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +752,12,1,34892,753, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +754,12,1,34925,755, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,756,12, +1,34960,757,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,758,11,1, +541,0,759,4,52, +76,0,65,0,78, +0,68,0,95,0, +67,0,79,0,76, +0,76,0,73,0, +83,0,73,0,79, +0,78,0,95,0, +83,0,84,0,65, +0,82,0,84,0, +95,0,69,0,86, +0,69,0,78,0, +84,0,1,-1,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,760, +11,1,829,0,348, +1,-1,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +761,11,1,829,0, +348,1,-1,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,762,11,1, +829,0,348,1,-1, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +763,11,1,829,0, +348,1,-1,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,764,12, +1,35427,765,5,63, +3,109,0,345,3, +110,0,766,12,1, +35456,767,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,768,12, +1,35502,769,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,770,11,1, +519,0,771,4,48, +76,0,65,0,78, +0,68,0,95,0, +67,0,79,0,76, +0,76,0,73,0, +83,0,73,0,79, +0,78,0,95,0, +69,0,78,0,68, +0,95,0,69,0, +86,0,69,0,78, +0,84,0,1,-1, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,772,11,1, +829,0,348,1,-1, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,773, +11,1,829,0,348, +1,-1,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +774,11,1,829,0, +348,1,-1,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,775,11,1,501, +0,776,4,40,76, +0,65,0,78,0, +68,0,95,0,67, +0,79,0,76,0, +76,0,73,0,83, +0,73,0,79,0, +78,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +-1,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +777,11,1,829,0, +348,1,-1,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,778,11, +1,829,0,348,1, +-1,3,106,0,345, +3,107,0,345,3, +108,0,345,779,11, +1,829,0,348,1, +-1,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +780,11,1,829,0, +348,1,-1,3,106, +0,345,3,107,0, +345,3,108,0,345, +781,11,1,829,0, +348,1,-1,782,11, +1,829,0,348,1, +-1,783,11,1,829, +0,348,1,-1,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,784, +11,1,829,0,348, +1,-1,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,785,11, +1,829,0,348,1, +-1,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,786, +11,1,829,0,348, +1,-1,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,787, +11,1,829,0,348, +1,-1,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,788,11,1,829, +0,348,1,-1,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +789,12,1,36803,790, +5,63,3,109,0, +345,3,110,0,791, +12,1,36832,792,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,793,12, +1,36885,794,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,795,12, +1,36971,796,5,63, +3,109,0,797,12, +1,36999,798,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,799,12, +1,37046,800,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,801,12,1, +37080,802,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,803,12,1,37114, +804,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +805,12,1,37157,806, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,807,12, +1,37206,808,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,809,12, +1,37253,810,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,811,11,1, +565,0,812,4,36, +76,0,73,0,78, +0,75,0,95,0, +77,0,69,0,83, +0,83,0,65,0, +71,0,69,0,95, +0,69,0,86,0, +69,0,78,0,84, +0,1,-1,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,813,11,1,829, +0,348,1,-1,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,814, +11,1,829,0,348, +1,-1,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,815,11,1,829, +0,348,1,-1,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,816,11, +1,829,0,348,1, +-1,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +817,11,1,829,0, +348,1,-1,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,818,11,1,829, +0,348,1,-1,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,819,11,1, +829,0,348,1,-1, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,820,11, +1,829,0,348,1, +-1,3,108,0,345, +821,11,1,829,0, +348,1,-1,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,822,12,1, +38037,823,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +824,12,1,38072,825, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +826,12,1,38119,827, +5,63,3,109,0, +345,3,110,0,828, +12,1,38148,829,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,830,11, +1,581,0,831,4, +24,76,0,73,0, +83,0,84,0,69, +0,78,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,-1,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,832,11,1,829, +0,348,1,-1,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,833,11,1, +342,0,834,4,18, +76,0,73,0,83, +0,84,0,95,0, +84,0,89,0,80, +0,69,0,1,-1, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +835,11,1,829,0, +348,1,-1,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,836,11,1, +829,0,348,1,-1, +3,106,0,345,3, +107,0,345,3,108, +0,345,837,11,1, +829,0,348,1,-1, +3,109,0,838,12, +1,1926,839,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,840,12,1,1956, +841,5,63,3,109, +0,345,3,110,0, +842,12,1,1985,843, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +844,12,1,2032,845, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,846,12, +1,2072,847,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,848,11,1, +591,0,849,4,22, +77,0,79,0,78, +0,69,0,89,0, +95,0,69,0,86, +0,69,0,78,0, +84,0,1,-1,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,850, +11,1,829,0,348, +1,-1,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +851,11,1,829,0, +348,1,-1,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,852, +12,1,2353,853,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +854,12,1,2404,855, +5,63,3,109,0, +345,3,110,0,856, +12,1,2433,857,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,858,12,1, +2482,859,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,860,12,1, +2568,861,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,862,12,1,2602, +863,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,864, +12,1,2637,865,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,866,12, +1,2680,867,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,868,12, +1,2713,869,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,870,12,1,2748, +871,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +872,11,1,614,0, +873,4,36,77,0, +79,0,86,0,73, +0,78,0,71,0, +95,0,83,0,84, +0,65,0,82,0, +84,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +-1,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,874,11,1,829, +0,348,1,-1,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,875,11,1, +829,0,348,1,-1, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,876, +11,1,829,0,348, +1,-1,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,877,11,1, +829,0,348,1,-1, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +878,12,1,3215,879, +5,63,3,109,0, +345,3,110,0,880, +12,1,3244,881,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +882,12,1,3290,883, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,884, +11,1,600,0,885, +4,32,77,0,79, +0,86,0,73,0, +78,0,71,0,95, +0,69,0,78,0, +68,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +-1,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,886,11, +1,829,0,348,1, +-1,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +887,11,1,829,0, +348,1,-1,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,888,11,1,829, +0,348,1,-1,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,889,11,1, +829,0,348,1,-1, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +890,11,1,829,0, +348,1,-1,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,891,11,1, +829,0,348,1,-1, +3,106,0,345,3, +107,0,345,3,108, +0,345,892,11,1, +829,0,348,1,-1, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,893,11,1, +829,0,348,1,-1, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +894,11,1,829,0, +348,1,-1,3,110, +0,895,12,1,4087, +896,5,63,3,109, +0,345,3,110,0, +345,3,111,0,897, +12,1,4117,898,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,899,12,1, +4152,900,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,901,12,1, +4238,902,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,903,12,1,4281, +904,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,905, +12,1,4316,906,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,907, +12,1,4402,908,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,909, +12,1,4435,910,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,911,12,1, +4465,912,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +913,12,1,4500,914, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +915,12,1,4586,916, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,917,12, +1,4621,918,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,919,12,1, +4664,920,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,921,12,1, +4697,922,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +923,12,1,4746,924, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +925,12,1,4793,926, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,927,12, +1,4828,928,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,929,11,1, +643,0,930,4,46, +78,0,79,0,84, +0,95,0,65,0, +84,0,95,0,82, +0,79,0,84,0, +95,0,84,0,65, +0,82,0,71,0, +69,0,84,0,95, +0,69,0,86,0, +69,0,78,0,84, +0,1,-1,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,931,11, +1,829,0,348,1, +-1,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,932, +11,1,829,0,348, +1,-1,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,933,11,1, +829,0,348,1,-1, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,934,11, +1,829,0,348,1, +-1,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +935,11,1,829,0, +348,1,-1,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,936,11, +1,829,0,348,1, +-1,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,937, +11,1,829,0,348, +1,-1,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,938,11,1, +829,0,348,1,-1, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +939,11,1,829,0, +348,1,-1,3,115, +0,345,3,116,0, +940,12,1,5637,941, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,942, +12,1,5680,943,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,944, +12,1,5713,945,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,946,12,1, +5762,947,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,948,12,1, +5809,949,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +950,12,1,5844,951, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,952, +11,1,664,0,953, +4,38,78,0,79, +0,84,0,95,0, +65,0,84,0,95, +0,84,0,65,0, +82,0,71,0,69, +0,84,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,-1,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,954,11,1, +829,0,348,1,-1, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,955,11, +1,829,0,348,1, +-1,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,956,11,1,829, +0,348,1,-1,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,957,11,1, +829,0,348,1,-1, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,958, +11,1,829,0,348, +1,-1,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,959,11,1, +829,0,348,1,-1, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,960,11, +1,829,0,348,1, +-1,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,961,11,1,829, +0,348,1,-1,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,962,11, +1,829,0,348,1, +-1,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,963, +11,1,829,0,348, +1,-1,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,964,12, +1,6723,965,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,966,12,1, +6757,967,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,968,12,1, +6804,969,5,63,3, +109,0,345,3,110, +0,970,12,1,6833, +971,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +972,12,1,6867,973, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,974,12, +1,6897,975,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,976,12, +1,6930,977,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,978,11,1, +630,0,979,4,30, +78,0,79,0,95, +0,83,0,69,0, +78,0,83,0,79, +0,82,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,-1,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +980,11,1,829,0, +348,1,-1,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,981,11, +1,829,0,348,1, +-1,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +982,11,1,829,0, +348,1,-1,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,983,11,1, +829,0,348,1,-1, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,984,11, +1,829,0,348,1, +-1,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +985,11,1,829,0, +348,1,-1,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,986,11,1,829, +0,348,1,-1,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,987, +11,1,829,0,348, +1,-1,3,111,0, +988,12,1,7688,989, +5,63,3,109,0, +345,3,110,0,990, +12,1,7717,991,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,992, +12,1,7803,993,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,994, +12,1,7836,995,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,996, +12,1,7883,997,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,998,12,1,7924, +999,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1000,11,1,695,0, +1001,4,24,79,0, +78,0,95,0,82, +0,69,0,90,0, +95,0,69,0,86, +0,69,0,78,0, +84,0,1,-1,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1002,11,1,829,0, +348,1,-1,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1003,11,1,829, +0,348,1,-1,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1004,11,1, +829,0,348,1,-1, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1005,11, +1,829,0,348,1, +-1,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,1006, +12,1,8332,1007,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,1008, +12,1,8384,1009,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,1010, +12,1,8431,1011,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,1012,12,1,8476, +1013,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,1014, +12,1,8511,1015,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,1016, +12,1,8597,1017,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,1018, +12,1,8630,1019,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,1020, +12,1,8677,1021,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,1022,12,1,8718, +1023,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1024,11,1,681,0, +1025,4,32,79,0, +66,0,74,0,69, +0,67,0,84,0, +95,0,82,0,69, +0,90,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,-1,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1026,11, +1,829,0,348,1, +-1,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1027, +11,1,829,0,348, +1,-1,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1028,11,1,829,0, +348,1,-1,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1029,11,1,829, +0,348,1,-1,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1030, +11,1,829,0,348, +1,-1,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1031,11, +1,829,0,348,1, +-1,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1032, +11,1,829,0,348, +1,-1,3,107,0, +345,3,108,0,345, +1033,11,1,829,0, +348,1,-1,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1034,11, +1,829,0,348,1, +-1,3,112,0,343, +3,113,0,343,3, +114,0,1035,12,1, +9491,1036,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +1037,12,1,9521,1038, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,1039,12, +1,9556,1040,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,1041,12,1, +9599,1042,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +1043,12,1,9634,1044, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,1045,12,1,9685, +1046,5,63,3,109, +0,345,3,110,0, +345,3,111,0,1047, +12,1,9715,1048,5, +63,3,109,0,345, +3,110,0,1049,12, +1,9744,1050,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1051,11,1, +330,0,1052,4,26, +82,0,79,0,84, +0,65,0,84,0, +73,0,79,0,78, +0,95,0,84,0, +89,0,80,0,69, +0,1,-1,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1053,11,1, +829,0,348,1,-1, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1054,11,1,829,0, +348,1,-1,3,106, +0,345,3,107,0, +345,3,108,0,345, +1055,11,1,829,0, +348,1,-1,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1056,11, +1,829,0,348,1, +-1,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1057,11,1,829,0, +348,1,-1,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1058,11, +1,829,0,348,1, +-1,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,1059, +12,1,10367,1060,5, +63,3,109,0,345, +3,110,0,1061,12, +1,10396,1062,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,1063,12, +1,10482,1064,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,1065,12,1,10517, +1066,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,1067,12,1, +10568,1068,5,63,3, +109,0,1069,12,1, +10596,1070,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,1071,12,1, +10643,1072,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,1073,12,1, +10729,1074,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,1075, +12,1,10760,1076,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,1077, +12,1,10807,1078,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,1079, +12,1,10840,1080,5, +63,3,109,0,1081, +12,1,10868,1082,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +1083,12,1,10919,1084, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,1085, +12,1,10953,1086,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,1087,12, +1,10987,1088,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,1089, +12,1,11038,1090,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,1091,12,1, +11068,1092,5,63,3, +109,0,345,3,110, +0,1093,12,1,11097, +1094,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +1095,12,1,11131,1096, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1097, +11,1,720,0,1098, +4,52,82,0,85, +0,78,0,95,0, +84,0,73,0,77, +0,69,0,95,0, +80,0,69,0,82, +0,77,0,73,0, +83,0,83,0,73, +0,79,0,78,0, +83,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +-1,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1099,11,1,829,0, +348,1,-1,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1100,11,1, +829,0,348,1,-1, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1101,11,1,829,0, +348,1,-1,3,106, +0,345,3,107,0, +345,3,108,0,345, +1102,11,1,829,0, +348,1,-1,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1103,11,1, +829,0,348,1,-1, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1104, +11,1,829,0,348, +1,-1,3,106,0, +345,3,107,0,345, +3,108,0,345,1105, +11,1,829,0,348, +1,-1,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1106,11,1,829,0, +348,1,-1,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1107,11,1,829, +0,348,1,-1,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1108,11,1, +829,0,348,1,-1, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1109,11,1,829, +0,348,1,-1,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1110,11,1, +829,0,348,1,-1, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1111,11, +1,829,0,348,1, +-1,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1112, +11,1,829,0,348, +1,-1,3,106,0, +345,3,107,0,345, +3,108,0,345,1113, +11,1,829,0,348, +1,-1,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1114,11,1, +829,0,348,1,-1, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1115,11, +1,829,0,348,1, +-1,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1116,11,1,829,0, +348,1,-1,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +1117,12,1,12658,1118, +5,63,3,109,0, +1119,12,1,12686,1120, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,1121,12, +1,12716,1122,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,1123,12,1,12751, +1124,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,1125,12,1,12798, +1126,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,1127,12,1,12884, +1128,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,1129,12,1, +12930,1130,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,1131,12,1,12973, +1132,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,1133, +12,1,13008,1134,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,1135,12, +1,13051,1136,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1137,11,1, +705,0,1138,4,34, +82,0,69,0,77, +0,79,0,84,0, +69,0,95,0,68, +0,65,0,84,0, +65,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +-1,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1139,11,1,829,0, +348,1,-1,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1140,11, +1,829,0,348,1, +-1,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1141,11,1,829,0, +348,1,-1,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1142,11,1,829,0, +348,1,-1,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1143,11,1,829, +0,348,1,-1,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1144,11,1, +829,0,348,1,-1, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1145,11,1,829,0, +348,1,-1,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1146,11, +1,829,0,348,1, +-1,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,1147,12, +1,13773,1148,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +1149,12,1,13809,1150, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +1151,12,1,13842,1152, +5,63,3,109,0, +345,3,110,0,1153, +12,1,13871,1154,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1155,11, +1,273,0,1156,4, +12,82,0,69,0, +84,0,85,0,82, +0,78,0,1,-1, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1157, +11,1,829,0,348, +1,-1,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1158,11,1,829,0, +348,1,-1,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1159, +11,1,829,0,348, +1,-1,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1160,11,1, +829,0,348,1,-1, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1161,11, +1,829,0,348,1, +-1,3,115,0,1162, +12,1,14412,1163,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,1164,12,1, +14447,1165,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,1166,12,1, +14480,1167,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,1168,12, +1,14531,1169,5,63, +3,109,0,345,3, +110,0,1170,12,1, +14560,1171,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +1172,12,1,14609,1173, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1174, +11,1,303,0,1175, +4,22,83,0,84, +0,82,0,73,0, +78,0,71,0,95, +0,84,0,89,0, +80,0,69,0,1, +-1,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1176,11,1,829, +0,348,1,-1,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1177,11, +1,829,0,348,1, +-1,3,106,0,345, +3,107,0,345,3, +108,0,345,1178,11, +1,829,0,348,1, +-1,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,1179, +12,1,14970,1180,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,1181,12,1, +15005,1182,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,1183,12,1, +15052,1184,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,1185,12,1, +15138,1186,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,1187,12,1, +15185,1188,5,63,3, +109,0,345,3,110, +0,1189,12,1,15214, +1190,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,1191, +12,1,15249,1192,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,1193, +12,1,15282,1194,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,1195,12,1, +15322,1196,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1197,11,1,754, +0,1198,4,34,83, +0,84,0,65,0, +84,0,69,0,95, +0,69,0,78,0, +84,0,82,0,89, +0,95,0,69,0, +86,0,69,0,78, +0,84,0,1,-1, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1199,11,1,829,0, +348,1,-1,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1200,11,1,829, +0,348,1,-1,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1201, +11,1,829,0,348, +1,-1,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,1202,12,1,15704, +1203,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,1204,12,1, +15755,1205,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +1206,12,1,15790,1207, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1208, +11,1,769,0,1209, +4,32,83,0,84, +0,65,0,84,0, +69,0,95,0,69, +0,88,0,73,0, +84,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +-1,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1210,11,1,829, +0,348,1,-1,3, +106,0,345,3,107, +0,345,3,108,0, +345,1211,11,1,829, +0,348,1,-1,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1212,11, +1,829,0,348,1, +-1,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1213, +11,1,829,0,348, +1,-1,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1214,11,1,256,0, +1215,4,10,83,0, +84,0,65,0,84, +0,69,0,1,-1, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1216,11, +1,829,0,348,1, +-1,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1217,11,1,829, +0,348,1,-1,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1218,11, +1,829,0,348,1, +-1,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,1219,12,1, +16499,1220,5,63,3, +109,0,345,3,110, +0,1221,12,1,16528, +1222,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +1223,12,1,16562,1224, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,1225,12, +1,16592,1226,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,1227,12, +1,16625,1228,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1229,11,1, +744,0,1230,4,24, +83,0,69,0,78, +0,83,0,79,0, +82,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +-1,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1231, +11,1,829,0,348, +1,-1,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1232,11,1, +829,0,348,1,-1, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1233, +11,1,829,0,348, +1,-1,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1234,11,1,829, +0,348,1,-1,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1235,11,1, +829,0,348,1,-1, +3,116,0,1236,12, +1,17173,1237,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,1238,12,1,17203, +1239,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,1240,12, +1,17239,1241,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +1242,12,1,17284,1243, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,1244,12,1, +17334,1245,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,1246,12,1, +17420,1247,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,1248,12,1,17454, +1249,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,1250, +12,1,17489,1251,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,1252,12, +1,17532,1253,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,1254,12, +1,17565,1255,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,1256,12,1,17600, +1257,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1258,11,1,801,0, +1259,4,34,84,0, +79,0,85,0,67, +0,72,0,95,0, +83,0,84,0,65, +0,82,0,84,0, +95,0,69,0,86, +0,69,0,78,0, +84,0,1,-1,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1260, +11,1,829,0,348, +1,-1,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1261,11,1,829,0, +348,1,-1,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1262,11,1, +829,0,348,1,-1, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1263,11,1,829,0, +348,1,-1,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,1264,12, +1,18067,1265,5,63, +3,109,0,345,3, +110,0,1266,12,1, +18096,1267,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,1268,12, +1,18142,1269,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1270,11,1, +816,0,1271,4,30, +84,0,79,0,85, +0,67,0,72,0, +95,0,69,0,78, +0,68,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,-1,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1272, +11,1,829,0,348, +1,-1,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1273,11,1,829, +0,348,1,-1,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1274,11,1, +829,0,348,1,-1, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1275,11, +1,792,0,1276,4, +22,84,0,79,0, +85,0,67,0,72, +0,95,0,69,0, +86,0,69,0,78, +0,84,0,1,-1, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +345,1277,11,1,829, +0,348,1,-1,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1278,11,1,829,0, +348,1,-1,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1279, +11,1,829,0,348, +1,-1,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,1280, +12,1,18784,1281,5, +63,3,109,0,1282, +12,1,18812,1283,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,1284, +12,1,18859,1285,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,1286, +12,1,18892,1287,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1288,11, +1,783,0,1289,4, +22,84,0,73,0, +77,0,69,0,82, +0,95,0,69,0, +86,0,69,0,78, +0,84,0,1,-1, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1290,11, +1,829,0,348,1, +-1,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1291, +11,1,829,0,348, +1,-1,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1292,11,1,829,0, +348,1,-1,3,106, +0,345,3,107,0, +345,3,108,0,345, +1293,11,1,829,0, +348,1,-1,3,117, +0,343,3,118,0, +1294,12,1,19335,1295, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +1296,12,1,19382,1297, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,1298,12,1, +19427,1299,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +1300,12,1,19462,1301, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,1302,12, +1,19492,1303,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,1304,12, +1,19525,1305,5,63, +3,109,0,345,3, +110,0,345,3,111, +0,345,3,112,0, +345,3,113,0,345, +3,114,0,345,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1306,11,1, +320,0,1307,4,22, +86,0,69,0,67, +0,84,0,79,0, +82,0,95,0,84, +0,89,0,80,0, +69,0,1,-1,3, +115,0,345,3,116, +0,345,3,117,0, +345,3,118,0,345, +3,119,0,345,3, +120,0,345,3,121, +0,345,3,122,0, +345,3,48,0,345, +3,49,0,345,3, +50,0,345,3,51, +0,345,3,52,0, +345,3,53,0,345, +3,54,0,345,3, +55,0,345,3,56, +0,345,3,57,0, +345,3,65,0,345, +3,66,0,345,3, +67,0,345,3,68, +0,345,3,69,0, +345,3,70,0,345, +3,71,0,345,3, +72,0,345,3,73, +0,345,3,74,0, +345,3,75,0,345, +3,76,0,345,3, +77,0,345,3,78, +0,345,3,79,0, +345,3,80,0,345, +3,81,0,345,3, +82,0,345,3,83, +0,345,3,84,0, +345,3,85,0,345, +3,86,0,345,3, +87,0,345,3,88, +0,345,3,89,0, +345,3,90,0,345, +3,95,0,345,3, +97,0,345,3,98, +0,345,3,99,0, +345,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1308,11,1, +829,0,348,1,-1, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,345,3,106, +0,345,3,107,0, +345,3,108,0,345, +1309,11,1,829,0, +348,1,-1,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1310,11, +1,829,0,348,1, +-1,3,100,0,345, +3,101,0,345,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1311,11,1, +829,0,348,1,-1, +3,102,0,345,3, +103,0,345,3,104, +0,345,3,105,0, +345,3,106,0,345, +3,107,0,345,3, +108,0,345,1312,11, +1,829,0,348,1, +-1,3,119,0,1313, +12,1,20056,1314,5, +63,3,109,0,345, +3,110,0,345,3, +111,0,345,3,112, +0,345,3,113,0, +345,3,114,0,345, +3,115,0,345,3, +116,0,345,3,117, +0,345,3,118,0, +345,3,119,0,345, +3,120,0,345,3, +121,0,345,3,122, +0,345,3,48,0, +345,3,49,0,345, +3,50,0,345,3, +51,0,345,3,52, +0,345,3,53,0, +345,3,54,0,345, +3,55,0,345,3, +56,0,345,3,57, +0,345,3,65,0, +345,3,66,0,345, +3,67,0,345,3, +68,0,345,3,69, +0,345,3,70,0, +345,3,71,0,345, +3,72,0,345,3, +73,0,345,3,74, +0,345,3,75,0, +345,3,76,0,345, +3,77,0,345,3, +78,0,345,3,79, +0,345,3,80,0, +345,3,81,0,345, +3,82,0,345,3, +83,0,345,3,84, +0,345,3,85,0, +345,3,86,0,345, +3,87,0,345,3, +88,0,345,3,89, +0,345,3,90,0, +345,3,95,0,345, +3,97,0,345,3, +98,0,345,3,99, +0,345,3,100,0, +345,3,101,0,345, +3,102,0,345,3, +103,0,345,3,104, +0,1315,12,1,20106, +1316,5,63,3,109, +0,345,3,110,0, +345,3,111,0,345, +3,112,0,345,3, +113,0,345,3,114, +0,345,3,115,0, +345,3,116,0,345, +3,117,0,345,3, +118,0,345,3,119, +0,345,3,120,0, +345,3,121,0,345, +3,122,0,345,3, +48,0,345,3,49, +0,345,3,50,0, +345,3,51,0,345, +3,52,0,345,3, +53,0,345,3,54, +0,345,3,55,0, +345,3,56,0,345, +3,57,0,345,3, +65,0,345,3,66, +0,345,3,67,0, +345,3,68,0,345, +3,69,0,345,3, +70,0,345,3,71, +0,345,3,72,0, +345,3,73,0,345, +3,74,0,345,3, +75,0,345,3,76, +0,345,3,77,0, +345,3,78,0,345, +3,79,0,345,3, +80,0,345,3,81, +0,345,3,82,0, +345,3,83,0,345, +3,84,0,345,3, +85,0,345,3,86, +0,345,3,87,0, +345,3,88,0,345, +3,89,0,345,3, +90,0,345,3,95, +0,345,3,97,0, +345,3,98,0,345, +3,99,0,345,3, +100,0,345,3,101, +0,345,3,102,0, +345,3,103,0,345, +3,104,0,345,3, +105,0,1317,12,1, +20157,1318,5,63,3, +109,0,345,3,110, +0,345,3,111,0, +345,3,112,0,345, +3,113,0,345,3, +114,0,345,3,115, +0,345,3,116,0, +345,3,117,0,345, +3,118,0,345,3, +119,0,345,3,120, +0,345,3,121,0, +345,3,122,0,345, +3,48,0,345,3, +49,0,345,3,50, +0,345,3,51,0, +345,3,52,0,345, +3,53,0,345,3, +54,0,345,3,55, +0,345,3,56,0, +345,3,57,0,345, +3,65,0,345,3, +66,0,345,3,67, +0,345,3,68,0, +345,3,69,0,345, +3,70,0,345,3, +71,0,345,3,72, +0,345,3,73,0, +345,3,74,0,345, +3,75,0,345,3, +76,0,345,3,77, +0,345,3,78,0, +345,3,79,0,345, +3,80,0,345,3, +81,0,345,3,82, +0,345,3,83,0, +345,3,84,0,345, +3,85,0,345,3, +86,0,345,3,87, +0,345,3,88,0, +345,3,89,0,345, +3,90,0,345,3, +95,0,345,3,97, +0,345,3,98,0, +345,3,99,0,345, +3,100,0,345,3, +101,0,345,3,102, +0,345,3,103,0, +345,3,104,0,345, +3,105,0,345,3, +106,0,345,3,107, +0,345,3,108,0, +1319,12,1,20211,1320, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +1321,12,1,20258,1322, +5,63,3,109,0, +345,3,110,0,345, +3,111,0,345,3, +112,0,345,3,113, +0,345,3,114,0, +345,3,115,0,345, +3,116,0,345,3, +117,0,345,3,118, +0,345,3,119,0, +345,3,120,0,345, +3,121,0,345,3, +122,0,345,3,48, +0,345,3,49,0, +345,3,50,0,345, +3,51,0,345,3, +52,0,345,3,53, +0,345,3,54,0, +345,3,55,0,345, +3,56,0,345,3, +57,0,345,3,65, +0,345,3,66,0, +345,3,67,0,345, +3,68,0,345,3, +69,0,345,3,70, +0,345,3,71,0, +345,3,72,0,345, +3,73,0,345,3, +74,0,345,3,75, +0,345,3,76,0, +345,3,77,0,345, +3,78,0,345,3, +79,0,345,3,80, +0,345,3,81,0, +345,3,82,0,345, +3,83,0,345,3, +84,0,345,3,85, +0,345,3,86,0, +345,3,87,0,345, +3,88,0,345,3, +89,0,345,3,90, +0,345,3,95,0, +345,3,97,0,345, +3,98,0,345,3, +99,0,345,3,100, +0,345,3,101,0, +345,3,102,0,345, +3,103,0,345,3, +104,0,345,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1323, +11,1,229,0,1324, +4,10,87,0,72, +0,73,0,76,0, +69,0,1,-1,3, +102,0,345,3,103, +0,345,3,104,0, +345,3,105,0,345, +3,106,0,345,3, +107,0,345,3,108, +0,345,1325,11,1, +829,0,348,1,-1, +1326,11,1,829,0, +348,1,-1,3,106, +0,345,3,107,0, +345,3,108,0,345, +1327,11,1,829,0, +348,1,-1,3,105, +0,345,3,106,0, +345,3,107,0,345, +3,108,0,345,1328, +11,1,829,0,348, +1,-1,3,120,0, +343,3,121,0,343, +3,122,0,343,3, +123,0,1329,12,1, +40387,1330,5,0,1331, +11,1,51,0,1332, +4,20,76,0,69, +0,70,0,84,0, +95,0,66,0,82, +0,65,0,67,0, +69,0,1,-1,3, +124,0,1333,12,1, +43290,1334,5,1,3, +124,0,1335,12,1, +43402,1336,5,0,1337, +11,1,191,0,1338, +4,26,83,0,84, +0,82,0,79,0, +75,0,69,0,95, +0,83,0,84,0, +82,0,79,0,75, +0,69,0,1,-1, +1339,11,1,165,0, +1340,4,12,83,0, +84,0,82,0,79, +0,75,0,69,0, +1,-1,3,125,0, +1341,12,1,40752,1342, +5,0,1343,11,1, +56,0,1344,4,22, +82,0,73,0,71, +0,72,0,84,0, +95,0,66,0,82, +0,65,0,67,0, +69,0,1,-1,3, +126,0,1345,12,1, +43531,1346,5,0,1347, +11,1,175,0,1348, +4,10,84,0,73, +0,76,0,68,0, +69,0,1,-1,0, +165,1,-1,1349,4, +12,83,0,84,0, +82,0,73,0,78, +0,71,0,1350,12, +1,45099,1351,5,119, +3,1,0,1352,12, +1,45100,1353,5,0, +1354,11,1,930,0, +165,1,-1,3,9, +0,1352,3,10,0, +1355,12,1,45301,1356, +5,0,1357,11,1, +936,0,165,1,-1, +3,13,0,1352,3, +0,3,1352,3,96, +33,1352,3,32,0, +1352,3,33,0,1352, +3,34,0,1358,12, +1,46048,1359,5,0, +1360,11,1,994,0, +165,1,-1,3,35, +0,1352,3,36,0, +1352,3,37,0,1352, +3,38,0,1352,3, +40,0,1352,3,41, +0,1352,3,42,0, +1352,3,43,0,1352, +3,44,0,1352,3, +45,0,1352,3,46, +0,1352,3,47,0, +1352,3,3,9,1352, +3,49,0,1352,3, +50,0,1352,3,48, +0,1352,3,52,0, +1352,3,53,0,1352, +3,51,0,1352,3, +55,0,1352,3,56, +0,1352,3,54,0, +1352,3,59,0,1352, +3,57,0,1352,3, +61,0,1352,3,62, +0,1352,3,60,0, +1352,3,64,0,1352, +3,65,0,1352,3, +66,0,1352,3,67, +0,1352,3,68,0, +1352,3,69,0,1352, +3,70,0,1352,3, +71,0,1352,3,72, +0,1352,3,73,0, +1352,3,74,0,1352, +3,75,0,1352,3, +76,0,1352,3,77, +0,1352,3,78,0, +1352,3,79,0,1352, +3,80,0,1352,3, +81,0,1352,3,82, +0,1352,3,83,0, +1352,3,84,0,1352, +3,85,0,1352,3, +86,0,1352,3,87, +0,1352,3,88,0, +1352,3,89,0,1352, +3,90,0,1352,3, +91,0,1352,3,92, +0,1361,12,1,45444, +1362,5,4,3,110, +0,1363,12,1,45473, +1364,5,0,1365,11, +1,941,0,165,1, +-1,3,34,0,1366, +12,1,45913,1367,5, +0,1368,11,1,965, +0,165,1,-1,3, +92,0,1369,12,1, +45789,1370,5,0,1371, +11,1,977,0,165, +1,-1,3,116,0, +1372,12,1,45599,1373, +5,0,1374,11,1, +953,0,165,1,-1, +1375,11,1,989,0, +165,1,-1,3,93, +0,1352,3,94,0, +1352,3,95,0,1352, +3,96,0,1352,3, +97,0,1352,3,98, +0,1352,3,99,0, +1352,3,100,0,1352, +3,101,0,1352,3, +102,0,1352,3,103, +0,1352,3,104,0, +1352,3,105,0,1352, +3,106,0,1352,3, +107,0,1352,3,108, +0,1352,3,109,0, +1352,3,110,0,1352, +3,111,0,1352,3, +112,0,1352,3,113, +0,1352,3,114,0, +1352,3,115,0,1352, +3,116,0,1352,3, +117,0,1352,3,118, +0,1352,3,119,0, +1352,3,120,0,1352, +3,121,0,1352,3, +122,0,1352,3,123, +0,1352,3,124,0, +1352,3,125,0,1352, +3,96,6,1352,3, +126,0,1352,3,58, +15,1352,3,59,15, +1352,3,136,4,1352, +3,160,0,1352,3, +15,7,1352,3,170, +0,1352,3,171,0, +1352,3,172,0,1352, +3,173,0,1352,3, +178,0,1352,3,176, +2,1352,3,187,0, +1352,3,187,1,1352, +3,192,0,1352,3, +41,32,1352,3,197, +1,1352,3,0,224, +1352,3,40,32,1352, +3,63,32,1352,0, +165,1,-1,1376,5, +92,251,1377,10,251, +1,19,573,1378,10, +573,1,47,301,1379, +10,301,1,92,1156, +1380,10,1156,1,50, +1025,1381,10,1025,1, +80,1175,1382,10,1175, +1,53,188,1383,10, +188,1,37,602,1384, +10,602,1,43,684, +1385,10,684,1,51, +613,1386,10,613,1, +46,211,1387,10,211, +1,16,215,1388,10, +215,1,17,656,1389, +10,656,1,68,885, +1390,10,885,1,75, +361,1391,10,361,1, +35,223,1392,10,223, +1,20,229,1393,10, +229,1,6,199,1394, +10,199,1,22,286, +1395,10,286,1,21, +265,1396,10,265,1, +94,1276,1397,10,1276, +1,88,481,1398,10, +481,1,64,704,1399, +10,704,1,49,357, +1400,10,357,1,28, +318,1401,10,318,1, +25,693,1402,10,693, +1,42,776,1403,10, +776,1,69,1215,1404, +10,1215,1,48,336, +1405,10,336,1,41, +834,1406,10,834,1, +57,233,1407,10,233, +1,4,342,1408,10, +342,1,23,493,1409, +10,493,1,63,1230, +1410,10,1230,1,84, +324,1411,10,324,1, +29,245,1412,10,245, +1,5,316,1413,10, +316,1,31,624,1414, +10,624,1,52,873, +1415,10,873,1,76, +1098,1416,10,1098,1, +83,1001,1417,10,1001, +1,81,979,1418,10, +979,1,77,186,1419, +10,186,1,30,249, +1420,10,249,1,7, +831,1421,10,831,1, +73,197,1422,10,197, +1,10,353,1423,10, +353,1,27,294,1424, +10,294,1,93,239, +1425,10,239,1,14, +269,1426,10,269,1, +24,715,1427,10,715, +1,54,281,1428,10, +281,1,9,1209,1429, +10,1209,1,86,498, +1430,10,498,1,62, +1431,4,30,83,0, +84,0,82,0,73, +0,78,0,71,0, +95,0,67,0,79, +0,78,0,83,0, +84,0,65,0,78, +0,84,0,1432,10, +1431,1,3,1324,1433, +10,1324,1,45,348, +1434,10,348,1,91, +551,1435,10,551,1, +66,1052,1436,10,1052, +1,56,402,1437,10, +402,1,58,1332,1438, +10,1332,1,12,531, +1439,10,531,1,44, +312,1440,10,312,1, +40,1138,1441,10,1138, +1,82,591,1442,10, +591,1,67,930,1443, +10,930,1,78,1348, +1444,10,1348,1,36, +1340,1445,10,1340,1, +34,771,1446,10,771, +1,70,1289,1447,10, +1289,1,87,849,1448, +10,849,1,74,338, +1449,10,338,1,26, +425,1450,10,425,1, +59,207,1451,10,207, +1,33,306,1452,10, +306,1,11,205,1453, +10,205,1,38,519, +1454,10,519,1,61, +812,1455,10,812,1, +72,1271,1456,10,1271, +1,90,326,1457,10, +326,1,15,953,1458, +10,953,1,79,1338, +1459,10,1338,1,39, +332,1460,10,332,1, +32,1259,1461,10,1259, +1,89,375,1462,10, +375,1,60,1307,1463, +10,1307,1,55,1344, +1464,10,1344,1,13, +1198,1465,10,1198,1, +85,235,1466,10,235, +1,18,221,1467,10, +221,1,8,759,1468, +10,759,1,71,449, +1469,10,449,1,65, +1470,5,0,0}; + new Tfactory(this,"MINUS",new TCreator(MINUS_factory)); + new Tfactory(this,"DEFAULT_STATE",new TCreator(DEFAULT_STATE_factory)); + new Tfactory(this,"INTEGER_CONSTANT",new TCreator(INTEGER_CONSTANT_factory)); + new Tfactory(this,"RETURN",new TCreator(RETURN_factory)); + new Tfactory(this,"OBJECT_REZ_EVENT",new TCreator(OBJECT_REZ_EVENT_factory)); + new Tfactory(this,"STRING_TYPE",new TCreator(STRING_TYPE_factory)); + new Tfactory(this,"EXCLAMATION",new TCreator(EXCLAMATION_factory)); + new Tfactory(this,"ELSE",new TCreator(ELSE_factory)); + new Tfactory(this,"INTEGER_TYPE",new TCreator(INTEGER_TYPE_factory)); + new Tfactory(this,"FOR",new TCreator(FOR_factory)); + new Tfactory(this,"LEFT_PAREN",new TCreator(LEFT_PAREN_factory)); + new Tfactory(this,"RIGHT_PAREN",new TCreator(RIGHT_PAREN_factory)); + new Tfactory(this,"HTTP_RESPONSE_EVENT",new TCreator(HTTP_RESPONSE_EVENT_factory)); + new Tfactory(this,"MOVING_END_EVENT",new TCreator(MOVING_END_EVENT_factory)); + new Tfactory(this,"CARET",new TCreator(CARET_factory)); + new Tfactory(this,"STAR",new TCreator(STAR_factory)); + new Tfactory(this,"PLUS_EQUALS",new TCreator(PLUS_EQUALS_factory)); + new Tfactory(this,"PERCENT",new TCreator(PERCENT_factory)); + new Tfactory(this,"SLASH",new TCreator(SLASH_factory)); + new Tfactory(this,"FLOAT_CONSTANT",new TCreator(FLOAT_CONSTANT_factory)); + new Tfactory(this,"TOUCH_EVENT",new TCreator(TOUCH_EVENT_factory)); + new Tfactory(this,"COLLISION_START_EVENT",new TCreator(COLLISION_START_EVENT_factory)); + new Tfactory(this,"JUMP",new TCreator(JUMP_factory)); + new Tfactory(this,"RIGHT_BRACKET",new TCreator(RIGHT_BRACKET_factory)); + new Tfactory(this,"LEFT_ANGLE",new TCreator(LEFT_ANGLE_factory)); + new Tfactory(this,"IF",new TCreator(IF_factory)); + new Tfactory(this,"LAND_COLLISION_EVENT",new TCreator(LAND_COLLISION_EVENT_factory)); + new Tfactory(this,"STATE",new TCreator(STATE_factory)); + new Tfactory(this,"RIGHT_SHIFT",new TCreator(RIGHT_SHIFT_factory)); + new Tfactory(this,"LIST_TYPE",new TCreator(LIST_TYPE_factory)); + new Tfactory(this,"INCREMENT",new TCreator(INCREMENT_factory)); + new Tfactory(this,"AT",new TCreator(AT_factory)); + new Tfactory(this,"COLLISION_END_EVENT",new TCreator(COLLISION_END_EVENT_factory)); + new Tfactory(this,"SENSOR_EVENT",new TCreator(SENSOR_EVENT_factory)); + new Tfactory(this,"EQUALS_EQUALS",new TCreator(EQUALS_EQUALS_factory)); + new Tfactory(this,"DECREMENT",new TCreator(DECREMENT_factory)); + new Tfactory(this,"LESS_EQUALS",new TCreator(LESS_EQUALS_factory)); + new Tfactory(this,"FLOAT_TYPE",new TCreator(FLOAT_TYPE_factory)); + new Tfactory(this,"MOVING_START_EVENT",new TCreator(MOVING_START_EVENT_factory)); + new Tfactory(this,"RUN_TIME_PERMISSIONS_EVENT",new TCreator(RUN_TIME_PERMISSIONS_EVENT_factory)); + new Tfactory(this,"ON_REZ_EVENT",new TCreator(ON_REZ_EVENT_factory)); + new Tfactory(this,"NO_SENSOR_EVENT",new TCreator(NO_SENSOR_EVENT_factory)); + new Tfactory(this,"EXCLAMATION_EQUALS",new TCreator(EXCLAMATION_EQUALS_factory)); + new Tfactory(this,"MINUS_EQUALS",new TCreator(MINUS_EQUALS_factory)); + new Tfactory(this,"LISTEN_EVENT",new TCreator(LISTEN_EVENT_factory)); + new Tfactory(this,"PERCENT_EQUALS",new TCreator(PERCENT_EQUALS_factory)); + new Tfactory(this,"LEFT_BRACKET",new TCreator(LEFT_BRACKET_factory)); + new Tfactory(this,"HEX_INTEGER_CONSTANT",new TCreator(HEX_INTEGER_CONSTANT_factory)); + new Tfactory(this,"COMMA",new TCreator(COMMA_factory)); + new Tfactory(this,"PERIOD",new TCreator(PERIOD_factory)); + new Tfactory(this,"KEY_TYPE",new TCreator(KEY_TYPE_factory)); + new Tfactory(this,"SLASH_EQUALS",new TCreator(SLASH_EQUALS_factory)); + new Tfactory(this,"STATE_EXIT_EVENT",new TCreator(STATE_EXIT_EVENT_factory)); + new Tfactory(this,"COLLISION_EVENT",new TCreator(COLLISION_EVENT_factory)); + new Tfactory(this,"STRING_CONSTANT",new TCreator(STRING_CONSTANT_factory)); + new Tfactory(this,"WHILE",new TCreator(WHILE_factory)); + new Tfactory(this,"IDENT",new TCreator(IDENT_factory)); + new Tfactory(this,"DATASERVER_EVENT",new TCreator(DATASERVER_EVENT_factory)); + new Tfactory(this,"ROTATION_TYPE",new TCreator(ROTATION_TYPE_factory)); + new Tfactory(this,"AT_ROT_TARGET_EVENT",new TCreator(AT_ROT_TARGET_EVENT_factory)); + new Tfactory(this,"LEFT_BRACE",new TCreator(LEFT_BRACE_factory)); + new Tfactory(this,"DO",new TCreator(DO_factory)); + new Tfactory(this,"LEFT_SHIFT",new TCreator(LEFT_SHIFT_factory)); + new Tfactory(this,"REMOTE_DATA_EVENT",new TCreator(REMOTE_DATA_EVENT_factory)); + new Tfactory(this,"EMAIL_EVENT",new TCreator(EMAIL_EVENT_factory)); + new Tfactory(this,"NOT_AT_ROT_TARGET_EVENT",new TCreator(NOT_AT_ROT_TARGET_EVENT_factory)); + new Tfactory(this,"TILDE",new TCreator(TILDE_factory)); + new Tfactory(this,"STROKE",new TCreator(STROKE_factory)); + new Tfactory(this,"LAND_COLLISION_END_EVENT",new TCreator(LAND_COLLISION_END_EVENT_factory)); + new Tfactory(this,"TIMER_EVENT",new TCreator(TIMER_EVENT_factory)); + new Tfactory(this,"MONEY_EVENT",new TCreator(MONEY_EVENT_factory)); + new Tfactory(this,"RIGHT_ANGLE",new TCreator(RIGHT_ANGLE_factory)); + new Tfactory(this,"AT_TARGET_EVENT",new TCreator(AT_TARGET_EVENT_factory)); + new Tfactory(this,"AMP",new TCreator(AMP_factory)); + new Tfactory(this,"SEMICOLON",new TCreator(SEMICOLON_factory)); + new Tfactory(this,"AMP_AMP",new TCreator(AMP_AMP_factory)); + new Tfactory(this,"CHANGED_EVENT",new TCreator(CHANGED_EVENT_factory)); + new Tfactory(this,"LINK_MESSAGE_EVENT",new TCreator(LINK_MESSAGE_EVENT_factory)); + new Tfactory(this,"TOUCH_END_EVENT",new TCreator(TOUCH_END_EVENT_factory)); + new Tfactory(this,"EQUALS",new TCreator(EQUALS_factory)); + new Tfactory(this,"NOT_AT_TARGET_EVENT",new TCreator(NOT_AT_TARGET_EVENT_factory)); + new Tfactory(this,"STROKE_STROKE",new TCreator(STROKE_STROKE_factory)); + new Tfactory(this,"GREATER_EQUALS",new TCreator(GREATER_EQUALS_factory)); + new Tfactory(this,"TOUCH_START_EVENT",new TCreator(TOUCH_START_EVENT_factory)); + new Tfactory(this,"ATTACH_EVENT",new TCreator(ATTACH_EVENT_factory)); + new Tfactory(this,"VECTOR_TYPE",new TCreator(VECTOR_TYPE_factory)); + new Tfactory(this,"RIGHT_BRACE",new TCreator(RIGHT_BRACE_factory)); + new Tfactory(this,"STATE_ENTRY_EVENT",new TCreator(STATE_ENTRY_EVENT_factory)); + new Tfactory(this,"PLUS",new TCreator(PLUS_factory)); + new Tfactory(this,"STAR_EQUALS",new TCreator(STAR_EQUALS_factory)); + new Tfactory(this,"LAND_COLLISION_START_EVENT",new TCreator(LAND_COLLISION_START_EVENT_factory)); + new Tfactory(this,"CONTROL_EVENT",new TCreator(CONTROL_EVENT_factory)); +} +public static object MINUS_factory(Lexer yyl) { return new MINUS(yyl);} +public static object DEFAULT_STATE_factory(Lexer yyl) { return new DEFAULT_STATE(yyl);} +public static object INTEGER_CONSTANT_factory(Lexer yyl) { return new INTEGER_CONSTANT(yyl);} +public static object RETURN_factory(Lexer yyl) { return new RETURN(yyl);} +public static object OBJECT_REZ_EVENT_factory(Lexer yyl) { return new OBJECT_REZ_EVENT(yyl);} +public static object STRING_TYPE_factory(Lexer yyl) { return new STRING_TYPE(yyl);} +public static object EXCLAMATION_factory(Lexer yyl) { return new EXCLAMATION(yyl);} +public static object ELSE_factory(Lexer yyl) { return new ELSE(yyl);} +public static object INTEGER_TYPE_factory(Lexer yyl) { return new INTEGER_TYPE(yyl);} +public static object FOR_factory(Lexer yyl) { return new FOR(yyl);} +public static object LEFT_PAREN_factory(Lexer yyl) { return new LEFT_PAREN(yyl);} +public static object RIGHT_PAREN_factory(Lexer yyl) { return new RIGHT_PAREN(yyl);} +public static object HTTP_RESPONSE_EVENT_factory(Lexer yyl) { return new HTTP_RESPONSE_EVENT(yyl);} +public static object MOVING_END_EVENT_factory(Lexer yyl) { return new MOVING_END_EVENT(yyl);} +public static object CARET_factory(Lexer yyl) { return new CARET(yyl);} +public static object STAR_factory(Lexer yyl) { return new STAR(yyl);} +public static object PLUS_EQUALS_factory(Lexer yyl) { return new PLUS_EQUALS(yyl);} +public static object PERCENT_factory(Lexer yyl) { return new PERCENT(yyl);} +public static object SLASH_factory(Lexer yyl) { return new SLASH(yyl);} +public static object FLOAT_CONSTANT_factory(Lexer yyl) { return new FLOAT_CONSTANT(yyl);} +public static object TOUCH_EVENT_factory(Lexer yyl) { return new TOUCH_EVENT(yyl);} +public static object COLLISION_START_EVENT_factory(Lexer yyl) { return new COLLISION_START_EVENT(yyl);} +public static object JUMP_factory(Lexer yyl) { return new JUMP(yyl);} +public static object RIGHT_BRACKET_factory(Lexer yyl) { return new RIGHT_BRACKET(yyl);} +public static object LEFT_ANGLE_factory(Lexer yyl) { return new LEFT_ANGLE(yyl);} +public static object IF_factory(Lexer yyl) { return new IF(yyl);} +public static object LAND_COLLISION_EVENT_factory(Lexer yyl) { return new LAND_COLLISION_EVENT(yyl);} +public static object STATE_factory(Lexer yyl) { return new STATE(yyl);} +public static object RIGHT_SHIFT_factory(Lexer yyl) { return new RIGHT_SHIFT(yyl);} +public static object LIST_TYPE_factory(Lexer yyl) { return new LIST_TYPE(yyl);} +public static object INCREMENT_factory(Lexer yyl) { return new INCREMENT(yyl);} +public static object AT_factory(Lexer yyl) { return new AT(yyl);} +public static object COLLISION_END_EVENT_factory(Lexer yyl) { return new COLLISION_END_EVENT(yyl);} +public static object SENSOR_EVENT_factory(Lexer yyl) { return new SENSOR_EVENT(yyl);} +public static object EQUALS_EQUALS_factory(Lexer yyl) { return new EQUALS_EQUALS(yyl);} +public static object DECREMENT_factory(Lexer yyl) { return new DECREMENT(yyl);} +public static object LESS_EQUALS_factory(Lexer yyl) { return new LESS_EQUALS(yyl);} +public static object FLOAT_TYPE_factory(Lexer yyl) { return new FLOAT_TYPE(yyl);} +public static object MOVING_START_EVENT_factory(Lexer yyl) { return new MOVING_START_EVENT(yyl);} +public static object RUN_TIME_PERMISSIONS_EVENT_factory(Lexer yyl) { return new RUN_TIME_PERMISSIONS_EVENT(yyl);} +public static object ON_REZ_EVENT_factory(Lexer yyl) { return new ON_REZ_EVENT(yyl);} +public static object NO_SENSOR_EVENT_factory(Lexer yyl) { return new NO_SENSOR_EVENT(yyl);} +public static object EXCLAMATION_EQUALS_factory(Lexer yyl) { return new EXCLAMATION_EQUALS(yyl);} +public static object MINUS_EQUALS_factory(Lexer yyl) { return new MINUS_EQUALS(yyl);} +public static object LISTEN_EVENT_factory(Lexer yyl) { return new LISTEN_EVENT(yyl);} +public static object PERCENT_EQUALS_factory(Lexer yyl) { return new PERCENT_EQUALS(yyl);} +public static object LEFT_BRACKET_factory(Lexer yyl) { return new LEFT_BRACKET(yyl);} +public static object HEX_INTEGER_CONSTANT_factory(Lexer yyl) { return new HEX_INTEGER_CONSTANT(yyl);} +public static object COMMA_factory(Lexer yyl) { return new COMMA(yyl);} +public static object PERIOD_factory(Lexer yyl) { return new PERIOD(yyl);} +public static object KEY_TYPE_factory(Lexer yyl) { return new KEY_TYPE(yyl);} +public static object SLASH_EQUALS_factory(Lexer yyl) { return new SLASH_EQUALS(yyl);} +public static object STATE_EXIT_EVENT_factory(Lexer yyl) { return new STATE_EXIT_EVENT(yyl);} +public static object COLLISION_EVENT_factory(Lexer yyl) { return new COLLISION_EVENT(yyl);} +public static object STRING_CONSTANT_factory(Lexer yyl) { return new STRING_CONSTANT(yyl);} +public static object WHILE_factory(Lexer yyl) { return new WHILE(yyl);} +public static object IDENT_factory(Lexer yyl) { return new IDENT(yyl);} +public static object DATASERVER_EVENT_factory(Lexer yyl) { return new DATASERVER_EVENT(yyl);} +public static object ROTATION_TYPE_factory(Lexer yyl) { return new ROTATION_TYPE(yyl);} +public static object AT_ROT_TARGET_EVENT_factory(Lexer yyl) { return new AT_ROT_TARGET_EVENT(yyl);} +public static object LEFT_BRACE_factory(Lexer yyl) { return new LEFT_BRACE(yyl);} +public static object DO_factory(Lexer yyl) { return new DO(yyl);} +public static object LEFT_SHIFT_factory(Lexer yyl) { return new LEFT_SHIFT(yyl);} +public static object REMOTE_DATA_EVENT_factory(Lexer yyl) { return new REMOTE_DATA_EVENT(yyl);} +public static object EMAIL_EVENT_factory(Lexer yyl) { return new EMAIL_EVENT(yyl);} +public static object NOT_AT_ROT_TARGET_EVENT_factory(Lexer yyl) { return new NOT_AT_ROT_TARGET_EVENT(yyl);} +public static object TILDE_factory(Lexer yyl) { return new TILDE(yyl);} +public static object STROKE_factory(Lexer yyl) { return new STROKE(yyl);} +public static object LAND_COLLISION_END_EVENT_factory(Lexer yyl) { return new LAND_COLLISION_END_EVENT(yyl);} +public static object TIMER_EVENT_factory(Lexer yyl) { return new TIMER_EVENT(yyl);} +public static object MONEY_EVENT_factory(Lexer yyl) { return new MONEY_EVENT(yyl);} +public static object RIGHT_ANGLE_factory(Lexer yyl) { return new RIGHT_ANGLE(yyl);} +public static object AT_TARGET_EVENT_factory(Lexer yyl) { return new AT_TARGET_EVENT(yyl);} +public static object AMP_factory(Lexer yyl) { return new AMP(yyl);} +public static object SEMICOLON_factory(Lexer yyl) { return new SEMICOLON(yyl);} +public static object AMP_AMP_factory(Lexer yyl) { return new AMP_AMP(yyl);} +public static object CHANGED_EVENT_factory(Lexer yyl) { return new CHANGED_EVENT(yyl);} +public static object LINK_MESSAGE_EVENT_factory(Lexer yyl) { return new LINK_MESSAGE_EVENT(yyl);} +public static object TOUCH_END_EVENT_factory(Lexer yyl) { return new TOUCH_END_EVENT(yyl);} +public static object EQUALS_factory(Lexer yyl) { return new EQUALS(yyl);} +public static object NOT_AT_TARGET_EVENT_factory(Lexer yyl) { return new NOT_AT_TARGET_EVENT(yyl);} +public static object STROKE_STROKE_factory(Lexer yyl) { return new STROKE_STROKE(yyl);} +public static object GREATER_EQUALS_factory(Lexer yyl) { return new GREATER_EQUALS(yyl);} +public static object TOUCH_START_EVENT_factory(Lexer yyl) { return new TOUCH_START_EVENT(yyl);} +public static object ATTACH_EVENT_factory(Lexer yyl) { return new ATTACH_EVENT(yyl);} +public static object VECTOR_TYPE_factory(Lexer yyl) { return new VECTOR_TYPE(yyl);} +public static object RIGHT_BRACE_factory(Lexer yyl) { return new RIGHT_BRACE(yyl);} +public static object STATE_ENTRY_EVENT_factory(Lexer yyl) { return new STATE_ENTRY_EVENT(yyl);} +public static object PLUS_factory(Lexer yyl) { return new PLUS(yyl);} +public static object STAR_EQUALS_factory(Lexer yyl) { return new STAR_EQUALS(yyl);} +public static object LAND_COLLISION_START_EVENT_factory(Lexer yyl) { return new LAND_COLLISION_START_EVENT(yyl);} +public static object CONTROL_EVENT_factory(Lexer yyl) { return new CONTROL_EVENT(yyl);} +public override TOKEN OldAction(Lexer yym,ref string yytext,int action, ref bool reject) { + switch(action) { + case -1: break; + case 1011: { yym.yy_begin("YYINITIAL"); } + break; + case 1025: ; + break; + case 1029: ; + break; + case 977: { ((LSLTokens)yym).str += "\\\\"; } + break; + case 1034: ; + break; + case 1038: ; + break; + case 925: { yym.yy_begin("STRING"); ((LSLTokens)yym).str = "";} + break; + case 930: { ((LSLTokens)yym).str += yytext; } + break; + case 936: { ((LSLTokens)yym).str += "\\n"; } + break; + case 941: { ((LSLTokens)yym).str += "\\n"; } + break; + case 953: { ((LSLTokens)yym).str += " "; } + break; + case 965: { ((LSLTokens)yym).str += "\\\""; } + break; + case 989: { ((LSLTokens)yym).str += '\\'; } + break; + case 994: { yym.yy_begin("YYINITIAL"); ((LSLTokens)yym).yytext = ((LSLTokens)yym).str; ((LSLTokens)yym).str = String.Empty; return new STRING_CONSTANT(yym); } + break; + case 999: { yym.yy_begin("COMMENT"); } + break; + } + return null; +}} +public class LSLTokens:Lexer { +public LSLTokens():base(new yyLSLTokens(new ErrorHandler(false))) {} +public LSLTokens(ErrorHandler eh):base(new yyLSLTokens(eh)) {} +public LSLTokens(YyLexer tks):base(tks){} + + public string str; + + } +} diff --git a/Programs/Simian/Scripting/lsl.parser.cs b/Programs/Simian/Scripting/lsl.parser.cs new file mode 100644 index 00000000..3aa9efdc --- /dev/null +++ b/Programs/Simian/Scripting/lsl.parser.cs @@ -0,0 +1,11044 @@ +using System;using Tools; +namespace Simian { +//%+LSLProgramRoot+95 +public class LSLProgramRoot : SYMBOL{ + public LSLProgramRoot (Parser yyp, States s ):base(((LSLSyntax +)yyp)){ while (0< s . kids . Count ) kids . Add ( s . kids . Pop ()); +} + public LSLProgramRoot (Parser yyp, GlobalDefinitions gd , States s ):base(((LSLSyntax +)yyp)){ while (0< gd . kids . Count ) kids . Add ( gd . kids . Pop ()); + while (0< s . kids . Count ) kids . Add ( s . kids . Pop ()); +} + +public override string yyname { get { return "LSLProgramRoot"; }} +public override int yynum { get { return 95; }} +public LSLProgramRoot(Parser yyp):base(yyp){}} +//%+GlobalDefinitions+96 +public class GlobalDefinitions : SYMBOL{ + public GlobalDefinitions (Parser yyp, GlobalVariableDeclaration gvd ):base(((LSLSyntax +)yyp)){ kids . Add ( gvd ); +} + public GlobalDefinitions (Parser yyp, GlobalDefinitions gd , GlobalVariableDeclaration gvd ):base(((LSLSyntax +)yyp)){ while (0< gd . kids . Count ) kids . Add ( gd . kids . Pop ()); + kids . Add ( gvd ); +} + public GlobalDefinitions (Parser yyp, GlobalFunctionDefinition gfd ):base(((LSLSyntax +)yyp)){ kids . Add ( gfd ); +} + public GlobalDefinitions (Parser yyp, GlobalDefinitions gd , GlobalFunctionDefinition gfd ):base(((LSLSyntax +)yyp)){ while (0< gd . kids . Count ) kids . Add ( gd . kids . Pop ()); + kids . Add ( gfd ); +} + +public override string yyname { get { return "GlobalDefinitions"; }} +public override int yynum { get { return 96; }} +public GlobalDefinitions(Parser yyp):base(yyp){}} +//%+GlobalVariableDeclaration+97 +public class GlobalVariableDeclaration : SYMBOL{ + public GlobalVariableDeclaration (Parser yyp, Declaration d ):base(((LSLSyntax +)yyp)){ kids . Add ( d ); +} + public GlobalVariableDeclaration (Parser yyp, Assignment a ):base(((LSLSyntax +)yyp)){ kids . Add ( a ); +} + +public override string yyname { get { return "GlobalVariableDeclaration"; }} +public override int yynum { get { return 97; }} +public GlobalVariableDeclaration(Parser yyp):base(yyp){}} +//%+GlobalFunctionDefinition+98 +public class GlobalFunctionDefinition : SYMBOL{ + private string m_returnType ; + private string m_name ; + public GlobalFunctionDefinition (Parser yyp, string returnType , string name , ArgumentDeclarationList adl , CompoundStatement cs ):base(((LSLSyntax +)yyp)){ m_returnType = returnType ; + m_name = name ; + kids . Add ( adl ); + kids . Add ( cs ); +} + public string ReturnType { get { return m_returnType ; +} + set { m_returnType = value ; +} +} + public string Name { get { return m_name ; +} +} + +public override string yyname { get { return "GlobalFunctionDefinition"; }} +public override int yynum { get { return 98; }} +public GlobalFunctionDefinition(Parser yyp):base(yyp){}} +//%+States+99 +public class States : SYMBOL{ + public States (Parser yyp, State ds ):base(((LSLSyntax +)yyp)){ kids . Add ( ds ); +} + public States (Parser yyp, States s , State us ):base(((LSLSyntax +)yyp)){ while (0< s . kids . Count ) kids . Add ( s . kids . Pop ()); + kids . Add ( us ); +} + +public override string yyname { get { return "States"; }} +public override int yynum { get { return 99; }} +public States(Parser yyp):base(yyp){}} +//%+State+100 +public class State : SYMBOL{ + private string m_name ; + public State (Parser yyp, string name , StateBody sb ):base(((LSLSyntax +)yyp)){ m_name = name ; + while (0< sb . kids . Count ) kids . Add ( sb . kids . Pop ()); +} + public override string ToString (){ return "STATE<"+ m_name +">"; +} + public string Name { get { return m_name ; +} +} + +public override string yyname { get { return "State"; }} +public override int yynum { get { return 100; }} +public State(Parser yyp):base(yyp){}} +//%+StateBody+101 +public class StateBody : SYMBOL{ + public StateBody (Parser yyp, StateBody sb , StateEvent se ):base(((LSLSyntax +)yyp)){ while (0< sb . kids . Count ) kids . Add ( sb . kids . Pop ()); + kids . Add ( se ); +} + public StateBody (Parser yyp, StateEvent se ):base(((LSLSyntax +)yyp)){ kids . Add ( se ); +} + +public override string yyname { get { return "StateBody"; }} +public override int yynum { get { return 101; }} +public StateBody(Parser yyp):base(yyp){}} +//%+StateEvent+102 +public class StateEvent : SYMBOL{ + private string m_name ; + public StateEvent (Parser yyp, string name , CompoundStatement cs ):base(((LSLSyntax +)yyp)){ m_name = name ; + kids . Add ( cs ); +} + public StateEvent (Parser yyp, string name , ArgumentDeclarationList dal , CompoundStatement cs ):base(((LSLSyntax +)yyp)){ m_name = name ; + if (0< dal . kids . Count ) kids . Add ( dal ); + kids . Add ( cs ); +} + public override string ToString (){ return "EVENT<"+ m_name +">"; +} + public string Name { get { return m_name ; +} +} + +public override string yyname { get { return "StateEvent"; }} +public override int yynum { get { return 102; }} +public StateEvent(Parser yyp):base(yyp){}} +//%+ArgumentDeclarationList+103 +public class ArgumentDeclarationList : SYMBOL{ + public ArgumentDeclarationList (Parser yyp, Declaration d ):base(((LSLSyntax +)yyp)){ kids . Add ( d ); +} + public ArgumentDeclarationList (Parser yyp, ArgumentDeclarationList adl , Declaration d ):base(((LSLSyntax +)yyp)){ while (0< adl . kids . Count ) kids . Add ( adl . kids . Pop ()); + kids . Add ( d ); +} + +public override string yyname { get { return "ArgumentDeclarationList"; }} +public override int yynum { get { return 103; }} +public ArgumentDeclarationList(Parser yyp):base(yyp){}} +//%+Declaration+104 +public class Declaration : SYMBOL{ + private string m_datatype ; + private string m_id ; + public Declaration (Parser yyp, string type , string id ):base(((LSLSyntax +)yyp)){ m_datatype = type ; + m_id = id ; +} + public override string ToString (){ return "Declaration<"+ m_datatype +":"+ m_id +">"; +} + public string Datatype { get { return m_datatype ; +} + set { m_datatype = value ; +} +} + public string Id { get { return m_id ; +} +} + +public override string yyname { get { return "Declaration"; }} +public override int yynum { get { return 104; }} +public Declaration(Parser yyp):base(yyp){}} +//%+Typename+105 +public class Typename : SYMBOL{ + public string yytext ; + public Typename (Parser yyp, string text ):base(((LSLSyntax +)yyp)){ yytext = text ; +} + +public override string yyname { get { return "Typename"; }} +public override int yynum { get { return 105; }} +public Typename(Parser yyp):base(yyp){}} +//%+Event+106 +public class Event : SYMBOL{ + public string yytext ; + public Event (Parser yyp, string text ):base(((LSLSyntax +)yyp)){ yytext = text ; +} + +public override string yyname { get { return "Event"; }} +public override int yynum { get { return 106; }} +public Event(Parser yyp):base(yyp){}} +//%+CompoundStatement+107 +public class CompoundStatement : SYMBOL{ + public CompoundStatement (Parser yyp):base(((LSLSyntax +)yyp)){} + public CompoundStatement (Parser yyp, StatementList sl ):base(((LSLSyntax +)yyp)){ while (0< sl . kids . Count ) kids . Add ( sl . kids . Pop ()); +} + +public override string yyname { get { return "CompoundStatement"; }} +public override int yynum { get { return 107; }} +} +//%+StatementList+108 +public class StatementList : SYMBOL{ + private void AddStatement ( Statement s ){ if ( s . kids . Top is IfStatement || s . kids . Top is WhileStatement || s . kids . Top is DoWhileStatement || s . kids . Top is ForLoop ) kids . Add ( s . kids . Pop ()); + else kids . Add ( s ); +} + public StatementList (Parser yyp, Statement s ):base(((LSLSyntax +)yyp)){ AddStatement ( s ); +} + public StatementList (Parser yyp, StatementList sl , Statement s ):base(((LSLSyntax +)yyp)){ while (0< sl . kids . Count ) kids . Add ( sl . kids . Pop ()); + AddStatement ( s ); +} + +public override string yyname { get { return "StatementList"; }} +public override int yynum { get { return 108; }} +public StatementList(Parser yyp):base(yyp){}} +//%+Statement+109 +public class Statement : SYMBOL{ + public Statement (Parser yyp, Declaration d ):base(((LSLSyntax +)yyp)){ kids . Add ( d ); +} + public Statement (Parser yyp, CompoundStatement cs ):base(((LSLSyntax +)yyp)){ kids . Add ( cs ); +} + public Statement (Parser yyp, FunctionCall fc ):base(((LSLSyntax +)yyp)){ kids . Add ( fc ); +} + public Statement (Parser yyp, Assignment a ):base(((LSLSyntax +)yyp)){ kids . Add ( a ); +} + public Statement (Parser yyp, Expression e ):base(((LSLSyntax +)yyp)){ kids . Add ( e ); +} + public Statement (Parser yyp, ReturnStatement rs ):base(((LSLSyntax +)yyp)){ kids . Add ( rs ); +} + public Statement (Parser yyp, StateChange sc ):base(((LSLSyntax +)yyp)){ kids . Add ( sc ); +} + public Statement (Parser yyp, IfStatement ifs ):base(((LSLSyntax +)yyp)){ kids . Add ( ifs ); +} + public Statement (Parser yyp, WhileStatement ifs ):base(((LSLSyntax +)yyp)){ kids . Add ( ifs ); +} + public Statement (Parser yyp, DoWhileStatement ifs ):base(((LSLSyntax +)yyp)){ kids . Add ( ifs ); +} + public Statement (Parser yyp, ForLoop fl ):base(((LSLSyntax +)yyp)){ kids . Add ( fl ); +} + public Statement (Parser yyp, JumpLabel jl ):base(((LSLSyntax +)yyp)){ kids . Add ( jl ); +} + public Statement (Parser yyp, JumpStatement js ):base(((LSLSyntax +)yyp)){ kids . Add ( js ); +} + public Statement (Parser yyp, EmptyStatement es ):base(((LSLSyntax +)yyp)){ kids . Add ( es ); +} + +public override string yyname { get { return "Statement"; }} +public override int yynum { get { return 109; }} +public Statement(Parser yyp):base(yyp){}} +//%+EmptyStatement+110 +public class EmptyStatement : SYMBOL{ + public EmptyStatement (Parser yyp):base(((LSLSyntax +)yyp)){} + public override string ToString (){ return base . ToString (); +} + +public override string yyname { get { return "EmptyStatement"; }} +public override int yynum { get { return 110; }} +} +//%+Assignment+111 +public class Assignment : SYMBOL{ + protected string m_assignmentType ; + public Assignment (Parser yyp, SYMBOL lhs , SYMBOL rhs , string assignmentType ):base(((LSLSyntax +)yyp)){ m_assignmentType = assignmentType ; + kids . Add ( lhs ); + if ( rhs is ConstantExpression ) while (0< rhs . kids . Count ) kids . Add ( rhs . kids . Pop ()); + else kids . Add ( rhs ); +} + public Assignment (Parser yyp, SimpleAssignment sa ):base(((LSLSyntax +)yyp)){ m_assignmentType = sa . AssignmentType ; + while (0< sa . kids . Count ) kids . Add ( sa . kids . Pop ()); +} + public string AssignmentType { get { return m_assignmentType ; +} +} + public override string ToString (){ return base . ToString ()+"<"+ m_assignmentType +">"; +} + +public override string yyname { get { return "Assignment"; }} +public override int yynum { get { return 111; }} +public Assignment(Parser yyp):base(yyp){}} +//%+SimpleAssignment+112 +public class SimpleAssignment : Assignment{ + public SimpleAssignment (Parser yyp, SYMBOL lhs , SYMBOL rhs , string assignmentType ):base(((LSLSyntax +)yyp)){ m_assignmentType = assignmentType ; + kids . Add ( lhs ); + if ( rhs is ConstantExpression ) while (0< rhs . kids . Count ) kids . Add ( rhs . kids . Pop ()); + else kids . Add ( rhs ); +} + +public override string yyname { get { return "SimpleAssignment"; }} +public override int yynum { get { return 112; }} +public SimpleAssignment(Parser yyp):base(yyp){}} +//%+ReturnStatement+113 +public class ReturnStatement : SYMBOL{ + public ReturnStatement (Parser yyp):base(((LSLSyntax +)yyp)){} + public ReturnStatement (Parser yyp, Expression e ):base(((LSLSyntax +)yyp)){ if ( e is ConstantExpression ) while (0< e . kids . Count ) kids . Add ( e . kids . Pop ()); + else kids . Add ( e ); +} + +public override string yyname { get { return "ReturnStatement"; }} +public override int yynum { get { return 113; }} +} +//%+JumpLabel+114 +public class JumpLabel : SYMBOL{ + private string m_labelName ; + public JumpLabel (Parser yyp, string labelName ):base(((LSLSyntax +)yyp)){ m_labelName = labelName ; +} + public string LabelName { get { return m_labelName ; +} +} + public override string ToString (){ return base . ToString ()+"<"+ m_labelName +">"; +} + +public override string yyname { get { return "JumpLabel"; }} +public override int yynum { get { return 114; }} +public JumpLabel(Parser yyp):base(yyp){}} +//%+JumpStatement+115 +public class JumpStatement : SYMBOL{ + private string m_targetName ; + public JumpStatement (Parser yyp, string targetName ):base(((LSLSyntax +)yyp)){ m_targetName = targetName ; +} + public string TargetName { get { return m_targetName ; +} +} + public override string ToString (){ return base . ToString ()+"<"+ m_targetName +">"; +} + +public override string yyname { get { return "JumpStatement"; }} +public override int yynum { get { return 115; }} +public JumpStatement(Parser yyp):base(yyp){}} +//%+StateChange+116 +public class StateChange : SYMBOL{ + private string m_newState ; + public StateChange (Parser yyp, string newState ):base(((LSLSyntax +)yyp)){ m_newState = newState ; +} + public string NewState { get { return m_newState ; +} +} + +public override string yyname { get { return "StateChange"; }} +public override int yynum { get { return 116; }} +public StateChange(Parser yyp):base(yyp){}} +//%+IfStatement+117 +public class IfStatement : SYMBOL{ + private void AddStatement ( Statement s ){ if (0< s . kids . Count && s . kids . Top is CompoundStatement ) kids . Add ( s . kids . Pop ()); + else kids . Add ( s ); +} + public IfStatement (Parser yyp, SYMBOL s , Statement ifs ):base(((LSLSyntax +)yyp)){ kids . Add ( s ); + AddStatement ( ifs ); +} + public IfStatement (Parser yyp, SYMBOL s , Statement ifs , Statement es ):base(((LSLSyntax +)yyp)){ kids . Add ( s ); + AddStatement ( ifs ); + if (0< es . kids . Count && es . kids . Top is IfStatement ) kids . Add ( es . kids . Pop ()); + else AddStatement ( es ); +} + +public override string yyname { get { return "IfStatement"; }} +public override int yynum { get { return 117; }} +public IfStatement(Parser yyp):base(yyp){}} +//%+WhileStatement+118 +public class WhileStatement : SYMBOL{ + public WhileStatement (Parser yyp, SYMBOL s , Statement st ):base(((LSLSyntax +)yyp)){ kids . Add ( s ); + if (0< st . kids . Count && st . kids . Top is CompoundStatement ) kids . Add ( st . kids . Pop ()); + else kids . Add ( st ); +} + +public override string yyname { get { return "WhileStatement"; }} +public override int yynum { get { return 118; }} +public WhileStatement(Parser yyp):base(yyp){}} +//%+DoWhileStatement+119 +public class DoWhileStatement : SYMBOL{ + public DoWhileStatement (Parser yyp, SYMBOL s , Statement st ):base(((LSLSyntax +)yyp)){ if (0< st . kids . Count && st . kids . Top is CompoundStatement ) kids . Add ( st . kids . Pop ()); + else kids . Add ( st ); + kids . Add ( s ); +} + +public override string yyname { get { return "DoWhileStatement"; }} +public override int yynum { get { return 119; }} +public DoWhileStatement(Parser yyp):base(yyp){}} +//%+ForLoop+120 +public class ForLoop : SYMBOL{ + public ForLoop (Parser yyp, ForLoopStatement flsa , Expression e , ForLoopStatement flsb , Statement s ):base(((LSLSyntax +)yyp)){ kids . Add ( flsa ); + kids . Add ( e ); + kids . Add ( flsb ); + if (0< s . kids . Count && s . kids . Top is CompoundStatement ) kids . Add ( s . kids . Pop ()); + else kids . Add ( s ); +} + +public override string yyname { get { return "ForLoop"; }} +public override int yynum { get { return 120; }} +public ForLoop(Parser yyp):base(yyp){}} +//%+ForLoopStatement+121 +public class ForLoopStatement : SYMBOL{ + public ForLoopStatement (Parser yyp, Expression e ):base(((LSLSyntax +)yyp)){ kids . Add ( e ); +} + public ForLoopStatement (Parser yyp, SimpleAssignment sa ):base(((LSLSyntax +)yyp)){ kids . Add ( sa ); +} + public ForLoopStatement (Parser yyp, ForLoopStatement fls , Expression e ):base(((LSLSyntax +)yyp)){ while (0< fls . kids . Count ) kids . Add ( fls . kids . Pop ()); + kids . Add ( e ); +} + public ForLoopStatement (Parser yyp, ForLoopStatement fls , SimpleAssignment sa ):base(((LSLSyntax +)yyp)){ while (0< fls . kids . Count ) kids . Add ( fls . kids . Pop ()); + kids . Add ( sa ); +} + +public override string yyname { get { return "ForLoopStatement"; }} +public override int yynum { get { return 121; }} +public ForLoopStatement(Parser yyp):base(yyp){}} +//%+FunctionCall+122 +public class FunctionCall : SYMBOL{ + private string m_id ; + public FunctionCall (Parser yyp, string id , ArgumentList al ):base(((LSLSyntax +)yyp)){ m_id = id ; + kids . Add ( al ); +} + public override string ToString (){ return base . ToString ()+"<"+ m_id +">"; +} + public string Id { get { return m_id ; +} +} + +public override string yyname { get { return "FunctionCall"; }} +public override int yynum { get { return 122; }} +public FunctionCall(Parser yyp):base(yyp){}} +//%+ArgumentList+123 +public class ArgumentList : SYMBOL{ + public ArgumentList (Parser yyp, Argument a ):base(((LSLSyntax +)yyp)){ AddArgument ( a ); +} + public ArgumentList (Parser yyp, ArgumentList al , Argument a ):base(((LSLSyntax +)yyp)){ while (0< al . kids . Count ) kids . Add ( al . kids . Pop ()); + AddArgument ( a ); +} + private void AddArgument ( Argument a ){ if ( a is ExpressionArgument ) while (0< a . kids . Count ) kids . Add ( a . kids . Pop ()); + else kids . Add ( a ); +} + +public override string yyname { get { return "ArgumentList"; }} +public override int yynum { get { return 123; }} +public ArgumentList(Parser yyp):base(yyp){}} +//%+Argument+124 +public class Argument : SYMBOL{ +public override string yyname { get { return "Argument"; }} +public override int yynum { get { return 124; }} +public Argument(Parser yyp):base(yyp){}} +//%+ExpressionArgument+125 +public class ExpressionArgument : Argument{ + public ExpressionArgument (Parser yyp, Expression e ):base(((LSLSyntax +)yyp)){ if ( e is ConstantExpression ) while (0< e . kids . Count ) kids . Add ( e . kids . Pop ()); + else kids . Add ( e ); +} + +public override string yyname { get { return "ExpressionArgument"; }} +public override int yynum { get { return 125; }} +public ExpressionArgument(Parser yyp):base(yyp){}} +//%+Constant+126 +public class Constant : SYMBOL{ + private string m_type ; + private string m_val ; + public Constant (Parser yyp, string type , string val ):base(((LSLSyntax +)yyp)){ m_type = type ; + m_val = val ; +} + public override string ToString (){ return base . ToString ()+"<"+ m_type +":"+ m_val +">"; +} + public string Value { get { return m_val ; +} + set { m_val = value ; +} +} + public string Type { get { return m_type ; +} + set { m_type = value ; +} +} + +public override string yyname { get { return "Constant"; }} +public override int yynum { get { return 126; }} +public Constant(Parser yyp):base(yyp){}} +//%+VectorConstant+127 +public class VectorConstant : Constant{ + public VectorConstant (Parser yyp, Expression valX , Expression valY , Expression valZ ):base(((LSLSyntax +)yyp),"vector", null ){ kids . Add ( valX ); + kids . Add ( valY ); + kids . Add ( valZ ); +} + +public override string yyname { get { return "VectorConstant"; }} +public override int yynum { get { return 127; }} +public VectorConstant(Parser yyp):base(yyp){}} +//%+RotationConstant+128 +public class RotationConstant : Constant{ + public RotationConstant (Parser yyp, Expression valX , Expression valY , Expression valZ , Expression valS ):base(((LSLSyntax +)yyp),"rotation", null ){ kids . Add ( valX ); + kids . Add ( valY ); + kids . Add ( valZ ); + kids . Add ( valS ); +} + +public override string yyname { get { return "RotationConstant"; }} +public override int yynum { get { return 128; }} +public RotationConstant(Parser yyp):base(yyp){}} +//%+ListConstant+129 +public class ListConstant : Constant{ + public ListConstant (Parser yyp, ArgumentList al ):base(((LSLSyntax +)yyp),"list", null ){ kids . Add ( al ); +} + +public override string yyname { get { return "ListConstant"; }} +public override int yynum { get { return 129; }} +public ListConstant(Parser yyp):base(yyp){}} +//%+Expression+130 +public class Expression : SYMBOL{ + protected void AddExpression ( Expression e ){ if ( e is ConstantExpression ) while (0< e . kids . Count ) kids . Add ( e . kids . Pop ()); + else kids . Add ( e ); +} + +public override string yyname { get { return "Expression"; }} +public override int yynum { get { return 130; }} +public Expression(Parser yyp):base(yyp){}} +//%+ConstantExpression+131 +public class ConstantExpression : Expression{ + public ConstantExpression (Parser yyp, Constant c ):base(((LSLSyntax +)yyp)){ kids . Add ( c ); +} + +public override string yyname { get { return "ConstantExpression"; }} +public override int yynum { get { return 131; }} +public ConstantExpression(Parser yyp):base(yyp){}} +//%+IdentExpression+132 +public class IdentExpression : Expression{ + protected string m_name ; + public IdentExpression (Parser yyp, string name ):base(((LSLSyntax +)yyp)){ m_name = name ; +} + public override string ToString (){ return base . ToString ()+"<"+ m_name +">"; +} + public string Name { get { return m_name ; +} +} + +public override string yyname { get { return "IdentExpression"; }} +public override int yynum { get { return 132; }} +public IdentExpression(Parser yyp):base(yyp){}} +//%+IdentDotExpression+133 +public class IdentDotExpression : IdentExpression{ + private string m_member ; + public IdentDotExpression (Parser yyp, string name , string member ):base(((LSLSyntax +)yyp), name ){ m_member = member ; +} + public override string ToString (){ string baseToString = base . ToString (); + return baseToString . Substring (0, baseToString . Length -1)+"."+ m_member +">"; +} + public string Member { get { return m_member ; +} +} + +public override string yyname { get { return "IdentDotExpression"; }} +public override int yynum { get { return 133; }} +public IdentDotExpression(Parser yyp):base(yyp){}} +//%+FunctionCallExpression+134 +public class FunctionCallExpression : Expression{ + public FunctionCallExpression (Parser yyp, FunctionCall fc ):base(((LSLSyntax +)yyp)){ kids . Add ( fc ); +} + +public override string yyname { get { return "FunctionCallExpression"; }} +public override int yynum { get { return 134; }} +public FunctionCallExpression(Parser yyp):base(yyp){}} +//%+BinaryExpression+135 +public class BinaryExpression : Expression{ + private string m_expressionSymbol ; + public BinaryExpression (Parser yyp, Expression lhs , Expression rhs , string expressionSymbol ):base(((LSLSyntax +)yyp)){ m_expressionSymbol = expressionSymbol ; + AddExpression ( lhs ); + AddExpression ( rhs ); +} + public string ExpressionSymbol { get { return m_expressionSymbol ; +} +} + public override string ToString (){ return base . ToString ()+"<"+ m_expressionSymbol +">"; +} + +public override string yyname { get { return "BinaryExpression"; }} +public override int yynum { get { return 135; }} +public BinaryExpression(Parser yyp):base(yyp){}} +//%+UnaryExpression+136 +public class UnaryExpression : Expression{ + private string m_unarySymbol ; + public UnaryExpression (Parser yyp, string unarySymbol , Expression e ):base(((LSLSyntax +)yyp)){ m_unarySymbol = unarySymbol ; + AddExpression ( e ); +} + public string UnarySymbol { get { return m_unarySymbol ; +} +} + public override string ToString (){ return base . ToString ()+"<"+ m_unarySymbol +">"; +} + +public override string yyname { get { return "UnaryExpression"; }} +public override int yynum { get { return 136; }} +public UnaryExpression(Parser yyp):base(yyp){}} +//%+TypecastExpression+137 +public class TypecastExpression : Expression{ + private string m_typecastType ; + public TypecastExpression (Parser yyp, string typecastType , SYMBOL rhs ):base(((LSLSyntax +)yyp)){ m_typecastType = typecastType ; + kids . Add ( rhs ); +} + public string TypecastType { get { return m_typecastType ; +} + set { m_typecastType = value ; +} +} + +public override string yyname { get { return "TypecastExpression"; }} +public override int yynum { get { return 137; }} +public TypecastExpression(Parser yyp):base(yyp){}} +//%+ParenthesisExpression+138 +public class ParenthesisExpression : Expression{ + public ParenthesisExpression (Parser yyp, SYMBOL s ):base(((LSLSyntax +)yyp)){ kids . Add ( s ); +} + +public override string yyname { get { return "ParenthesisExpression"; }} +public override int yynum { get { return 138; }} +public ParenthesisExpression(Parser yyp):base(yyp){}} +//%+IncrementDecrementExpression+139 +public class IncrementDecrementExpression : Expression{ + private string m_name ; + private string m_operation ; + private bool m_postOperation ; + public IncrementDecrementExpression (Parser yyp, string name , string operation , bool postOperation ):base(((LSLSyntax +)yyp)){ m_name = name ; + m_operation = operation ; + m_postOperation = postOperation ; +} + public IncrementDecrementExpression (Parser yyp, IdentDotExpression ide , string operation , bool postOperation ):base(((LSLSyntax +)yyp)){ m_operation = operation ; + m_postOperation = postOperation ; + kids . Add ( ide ); +} + public override string ToString (){ return base . ToString ()+"<"+( m_postOperation ? m_name + m_operation : m_operation + m_name )+">"; +} + public string Name { get { return m_name ; +} +} + public string Operation { get { return m_operation ; +} +} + public bool PostOperation { get { return m_postOperation ; +} +} + +public override string yyname { get { return "IncrementDecrementExpression"; }} +public override int yynum { get { return 139; }} +public IncrementDecrementExpression(Parser yyp):base(yyp){}} + +public class LSLProgramRoot_1 : LSLProgramRoot { + public LSLProgramRoot_1(Parser yyq):base(yyq, + ((GlobalDefinitions)(yyq.StackAt(1).m_value)) + , + ((States)(yyq.StackAt(0).m_value)) + ){}} + +public class LSLProgramRoot_2 : LSLProgramRoot { + public LSLProgramRoot_2(Parser yyq):base(yyq, + ((States)(yyq.StackAt(0).m_value)) + ){}} + +public class GlobalDefinitions_1 : GlobalDefinitions { + public GlobalDefinitions_1(Parser yyq):base(yyq, + ((GlobalVariableDeclaration)(yyq.StackAt(0).m_value)) + ){}} + +public class GlobalDefinitions_2 : GlobalDefinitions { + public GlobalDefinitions_2(Parser yyq):base(yyq, + ((GlobalDefinitions)(yyq.StackAt(1).m_value)) + , + ((GlobalVariableDeclaration)(yyq.StackAt(0).m_value)) + ){}} + +public class GlobalDefinitions_3 : GlobalDefinitions { + public GlobalDefinitions_3(Parser yyq):base(yyq, + ((GlobalFunctionDefinition)(yyq.StackAt(0).m_value)) + ){}} + +public class GlobalDefinitions_4 : GlobalDefinitions { + public GlobalDefinitions_4(Parser yyq):base(yyq, + ((GlobalDefinitions)(yyq.StackAt(1).m_value)) + , + ((GlobalFunctionDefinition)(yyq.StackAt(0).m_value)) + ){}} + +public class GlobalVariableDeclaration_1 : GlobalVariableDeclaration { + public GlobalVariableDeclaration_1(Parser yyq):base(yyq, + ((Declaration)(yyq.StackAt(1).m_value)) + ){}} + +public class GlobalVariableDeclaration_2 : GlobalVariableDeclaration { + public GlobalVariableDeclaration_2(Parser yyq):base(yyq,new Assignment(((LSLSyntax +)yyq), + ((Declaration)(yyq.StackAt(3).m_value)) + , + ((Expression)(yyq.StackAt(1).m_value)) + , + ((EQUALS)(yyq.StackAt(2).m_value)) + .yytext)){}} + +public class GlobalFunctionDefinition_1 : GlobalFunctionDefinition { + public GlobalFunctionDefinition_1(Parser yyq):base(yyq,"void", + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((ArgumentDeclarationList)(yyq.StackAt(2).m_value)) + , + ((CompoundStatement)(yyq.StackAt(0).m_value)) + ){}} + +public class GlobalFunctionDefinition_2 : GlobalFunctionDefinition { + public GlobalFunctionDefinition_2(Parser yyq):base(yyq, + ((Typename)(yyq.StackAt(5).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((ArgumentDeclarationList)(yyq.StackAt(2).m_value)) + , + ((CompoundStatement)(yyq.StackAt(0).m_value)) + ){}} + +public class States_1 : States { + public States_1(Parser yyq):base(yyq, + ((State)(yyq.StackAt(0).m_value)) + ){}} + +public class States_2 : States { + public States_2(Parser yyq):base(yyq, + ((States)(yyq.StackAt(1).m_value)) + , + ((State)(yyq.StackAt(0).m_value)) + ){}} + +public class State_1 : State { + public State_1(Parser yyq):base(yyq, + ((DEFAULT_STATE)(yyq.StackAt(3).m_value)) + .yytext, + ((StateBody)(yyq.StackAt(1).m_value)) + ){}} + +public class State_2 : State { + public State_2(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(3).m_value)) + .yytext, + ((StateBody)(yyq.StackAt(1).m_value)) + ){}} + +public class StateBody_1 : StateBody { + public StateBody_1(Parser yyq):base(yyq, + ((StateEvent)(yyq.StackAt(0).m_value)) + ){}} + +public class StateBody_2 : StateBody { + public StateBody_2(Parser yyq):base(yyq, + ((StateBody)(yyq.StackAt(1).m_value)) + , + ((StateEvent)(yyq.StackAt(0).m_value)) + ){}} + +public class StateEvent_1 : StateEvent { + public StateEvent_1(Parser yyq):base(yyq, + ((Event)(yyq.StackAt(4).m_value)) + .yytext, + ((ArgumentDeclarationList)(yyq.StackAt(2).m_value)) + , + ((CompoundStatement)(yyq.StackAt(0).m_value)) + ){}} + +public class ArgumentDeclarationList_1 : ArgumentDeclarationList { + public ArgumentDeclarationList_1(Parser yyq):base(yyq, + ((Declaration)(yyq.StackAt(0).m_value)) + ){}} + +public class ArgumentDeclarationList_2 : ArgumentDeclarationList { + public ArgumentDeclarationList_2(Parser yyq):base(yyq, + ((ArgumentDeclarationList)(yyq.StackAt(2).m_value)) + , + ((Declaration)(yyq.StackAt(0).m_value)) + ){}} + +public class Declaration_1 : Declaration { + public Declaration_1(Parser yyq):base(yyq, + ((Typename)(yyq.StackAt(1).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class CompoundStatement_1 : CompoundStatement { + public CompoundStatement_1(Parser yyq):base(yyq){}} + +public class CompoundStatement_2 : CompoundStatement { + public CompoundStatement_2(Parser yyq):base(yyq, + ((StatementList)(yyq.StackAt(1).m_value)) + ){}} + +public class StatementList_1 : StatementList { + public StatementList_1(Parser yyq):base(yyq, + ((Statement)(yyq.StackAt(0).m_value)) + ){}} + +public class StatementList_2 : StatementList { + public StatementList_2(Parser yyq):base(yyq, + ((StatementList)(yyq.StackAt(1).m_value)) + , + ((Statement)(yyq.StackAt(0).m_value)) + ){}} + +public class EmptyStatement_1 : EmptyStatement { + public EmptyStatement_1(Parser yyq):base(yyq){}} + +public class Statement_1 : Statement { + public Statement_1(Parser yyq):base(yyq, + ((EmptyStatement)(yyq.StackAt(1).m_value)) + ){}} + +public class Statement_2 : Statement { + public Statement_2(Parser yyq):base(yyq, + ((Declaration)(yyq.StackAt(1).m_value)) + ){}} + +public class Statement_3 : Statement { + public Statement_3(Parser yyq):base(yyq, + ((Assignment)(yyq.StackAt(1).m_value)) + ){}} + +public class Statement_4 : Statement { + public Statement_4(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(1).m_value)) + ){}} + +public class Statement_5 : Statement { + public Statement_5(Parser yyq):base(yyq, + ((ReturnStatement)(yyq.StackAt(1).m_value)) + ){}} + +public class Statement_6 : Statement { + public Statement_6(Parser yyq):base(yyq, + ((JumpLabel)(yyq.StackAt(1).m_value)) + ){}} + +public class Statement_7 : Statement { + public Statement_7(Parser yyq):base(yyq, + ((JumpStatement)(yyq.StackAt(1).m_value)) + ){}} + +public class Statement_8 : Statement { + public Statement_8(Parser yyq):base(yyq, + ((StateChange)(yyq.StackAt(1).m_value)) + ){}} + +public class Statement_9 : Statement { + public Statement_9(Parser yyq):base(yyq, + ((IfStatement)(yyq.StackAt(0).m_value)) + ){}} + +public class Statement_10 : Statement { + public Statement_10(Parser yyq):base(yyq, + ((WhileStatement)(yyq.StackAt(0).m_value)) + ){}} + +public class Statement_11 : Statement { + public Statement_11(Parser yyq):base(yyq, + ((DoWhileStatement)(yyq.StackAt(0).m_value)) + ){}} + +public class Statement_12 : Statement { + public Statement_12(Parser yyq):base(yyq, + ((ForLoop)(yyq.StackAt(0).m_value)) + ){}} + +public class Statement_13 : Statement { + public Statement_13(Parser yyq):base(yyq, + ((CompoundStatement)(yyq.StackAt(0).m_value)) + ){}} + +public class JumpLabel_1 : JumpLabel { + public JumpLabel_1(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class JumpStatement_1 : JumpStatement { + public JumpStatement_1(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class StateChange_1 : StateChange { + public StateChange_1(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class StateChange_2 : StateChange { + public StateChange_2(Parser yyq):base(yyq, + ((DEFAULT_STATE)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class IfStatement_1 : IfStatement { + public IfStatement_1(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Statement)(yyq.StackAt(0).m_value)) + ){}} + +public class IfStatement_2 : IfStatement { + public IfStatement_2(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(4).m_value)) + , + ((Statement)(yyq.StackAt(2).m_value)) + , + ((Statement)(yyq.StackAt(0).m_value)) + ){}} + +public class IfStatement_3 : IfStatement { + public IfStatement_3(Parser yyq):base(yyq, + ((SimpleAssignment)(yyq.StackAt(2).m_value)) + , + ((Statement)(yyq.StackAt(0).m_value)) + ){}} + +public class IfStatement_4 : IfStatement { + public IfStatement_4(Parser yyq):base(yyq, + ((SimpleAssignment)(yyq.StackAt(4).m_value)) + , + ((Statement)(yyq.StackAt(2).m_value)) + , + ((Statement)(yyq.StackAt(0).m_value)) + ){}} + +public class WhileStatement_1 : WhileStatement { + public WhileStatement_1(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Statement)(yyq.StackAt(0).m_value)) + ){}} + +public class WhileStatement_2 : WhileStatement { + public WhileStatement_2(Parser yyq):base(yyq, + ((SimpleAssignment)(yyq.StackAt(2).m_value)) + , + ((Statement)(yyq.StackAt(0).m_value)) + ){}} + +public class DoWhileStatement_1 : DoWhileStatement { + public DoWhileStatement_1(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Statement)(yyq.StackAt(5).m_value)) + ){}} + +public class DoWhileStatement_2 : DoWhileStatement { + public DoWhileStatement_2(Parser yyq):base(yyq, + ((SimpleAssignment)(yyq.StackAt(2).m_value)) + , + ((Statement)(yyq.StackAt(5).m_value)) + ){}} + +public class ForLoop_1 : ForLoop { + public ForLoop_1(Parser yyq):base(yyq, + ((ForLoopStatement)(yyq.StackAt(6).m_value)) + , + ((Expression)(yyq.StackAt(4).m_value)) + , + ((ForLoopStatement)(yyq.StackAt(2).m_value)) + , + ((Statement)(yyq.StackAt(0).m_value)) + ){}} + +public class ForLoopStatement_1 : ForLoopStatement { + public ForLoopStatement_1(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(0).m_value)) + ){}} + +public class ForLoopStatement_2 : ForLoopStatement { + public ForLoopStatement_2(Parser yyq):base(yyq, + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + ){}} + +public class ForLoopStatement_3 : ForLoopStatement { + public ForLoopStatement_3(Parser yyq):base(yyq, + ((ForLoopStatement)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + ){}} + +public class ForLoopStatement_4 : ForLoopStatement { + public ForLoopStatement_4(Parser yyq):base(yyq, + ((ForLoopStatement)(yyq.StackAt(2).m_value)) + , + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + ){}} + +public class Assignment_1 : Assignment { + public Assignment_1(Parser yyq):base(yyq, + ((Declaration)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class Assignment_2 : Assignment { + public Assignment_2(Parser yyq):base(yyq, + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + ){}} + +public class SimpleAssignment_1 : SimpleAssignment { + public SimpleAssignment_1(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_2 : SimpleAssignment { + public SimpleAssignment_2(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((PLUS_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_3 : SimpleAssignment { + public SimpleAssignment_3(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((MINUS_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_4 : SimpleAssignment { + public SimpleAssignment_4(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((STAR_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_5 : SimpleAssignment { + public SimpleAssignment_5(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((SLASH_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_6 : SimpleAssignment { + public SimpleAssignment_6(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((PERCENT_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_7 : SimpleAssignment { + public SimpleAssignment_7(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext), + ((Expression)(yyq.StackAt(0).m_value)) + , + ((EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_8 : SimpleAssignment { + public SimpleAssignment_8(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext), + ((Expression)(yyq.StackAt(0).m_value)) + , + ((PLUS_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_9 : SimpleAssignment { + public SimpleAssignment_9(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext), + ((Expression)(yyq.StackAt(0).m_value)) + , + ((MINUS_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_10 : SimpleAssignment { + public SimpleAssignment_10(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext), + ((Expression)(yyq.StackAt(0).m_value)) + , + ((STAR_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_11 : SimpleAssignment { + public SimpleAssignment_11(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext), + ((Expression)(yyq.StackAt(0).m_value)) + , + ((SLASH_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_12 : SimpleAssignment { + public SimpleAssignment_12(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext), + ((Expression)(yyq.StackAt(0).m_value)) + , + ((PERCENT_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_13 : SimpleAssignment { + public SimpleAssignment_13(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + , + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + , + ((EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_14 : SimpleAssignment { + public SimpleAssignment_14(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + , + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + , + ((PLUS_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_15 : SimpleAssignment { + public SimpleAssignment_15(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + , + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + , + ((MINUS_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_16 : SimpleAssignment { + public SimpleAssignment_16(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + , + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + , + ((STAR_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_17 : SimpleAssignment { + public SimpleAssignment_17(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + , + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + , + ((SLASH_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_18 : SimpleAssignment { + public SimpleAssignment_18(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + , + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + , + ((PERCENT_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_19 : SimpleAssignment { + public SimpleAssignment_19(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext), + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + , + ((EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_20 : SimpleAssignment { + public SimpleAssignment_20(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext), + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + , + ((PLUS_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_21 : SimpleAssignment { + public SimpleAssignment_21(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext), + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + , + ((MINUS_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_22 : SimpleAssignment { + public SimpleAssignment_22(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext), + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + , + ((STAR_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_23 : SimpleAssignment { + public SimpleAssignment_23(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext), + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + , + ((SLASH_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class SimpleAssignment_24 : SimpleAssignment { + public SimpleAssignment_24(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(4).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext), + ((SimpleAssignment)(yyq.StackAt(0).m_value)) + , + ((PERCENT_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class ReturnStatement_1 : ReturnStatement { + public ReturnStatement_1(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(0).m_value)) + ){}} + +public class ReturnStatement_2 : ReturnStatement { + public ReturnStatement_2(Parser yyq):base(yyq){}} + +public class Constant_1 : Constant { + public Constant_1(Parser yyq):base(yyq,"integer", + ((INTEGER_CONSTANT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Constant_2 : Constant { + public Constant_2(Parser yyq):base(yyq,"integer", + ((HEX_INTEGER_CONSTANT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Constant_3 : Constant { + public Constant_3(Parser yyq):base(yyq,"float", + ((FLOAT_CONSTANT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Constant_4 : Constant { + public Constant_4(Parser yyq):base(yyq,"string", + ((STRING_CONSTANT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class ListConstant_1 : ListConstant { + public ListConstant_1(Parser yyq):base(yyq, + ((ArgumentList)(yyq.StackAt(1).m_value)) + ){}} + +public class VectorConstant_1 : VectorConstant { + public VectorConstant_1(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(5).m_value)) + , + ((Expression)(yyq.StackAt(3).m_value)) + , + ((Expression)(yyq.StackAt(1).m_value)) + ){}} + +public class RotationConstant_1 : RotationConstant { + public RotationConstant_1(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(7).m_value)) + , + ((Expression)(yyq.StackAt(5).m_value)) + , + ((Expression)(yyq.StackAt(3).m_value)) + , + ((Expression)(yyq.StackAt(1).m_value)) + ){}} + +public class ConstantExpression_1 : ConstantExpression { + public ConstantExpression_1(Parser yyq):base(yyq, + ((Constant)(yyq.StackAt(0).m_value)) + ){}} + +public class IdentExpression_1 : IdentExpression { + public IdentExpression_1(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class IdentDotExpression_1 : IdentDotExpression { + public IdentDotExpression_1(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class IncrementDecrementExpression_1 : IncrementDecrementExpression { + public IncrementDecrementExpression_1(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(1).m_value)) + .yytext, + ((INCREMENT)(yyq.StackAt(0).m_value)) + .yytext, true){}} + +public class IncrementDecrementExpression_2 : IncrementDecrementExpression { + public IncrementDecrementExpression_2(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(1).m_value)) + .yytext, + ((DECREMENT)(yyq.StackAt(0).m_value)) + .yytext, true){}} + +public class IncrementDecrementExpression_3 : IncrementDecrementExpression { + public IncrementDecrementExpression_3(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(3).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(1).m_value)) + .yytext), + ((INCREMENT)(yyq.StackAt(0).m_value)) + .yytext, true){}} + +public class IncrementDecrementExpression_4 : IncrementDecrementExpression { + public IncrementDecrementExpression_4(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(3).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(1).m_value)) + .yytext), + ((DECREMENT)(yyq.StackAt(0).m_value)) + .yytext, true){}} + +public class IncrementDecrementExpression_5 : IncrementDecrementExpression { + public IncrementDecrementExpression_5(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(0).m_value)) + .yytext, + ((INCREMENT)(yyq.StackAt(1).m_value)) + .yytext, false){}} + +public class IncrementDecrementExpression_6 : IncrementDecrementExpression { + public IncrementDecrementExpression_6(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(0).m_value)) + .yytext, + ((DECREMENT)(yyq.StackAt(1).m_value)) + .yytext, false){}} + +public class IncrementDecrementExpression_7 : IncrementDecrementExpression { + public IncrementDecrementExpression_7(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(0).m_value)) + .yytext), + ((INCREMENT)(yyq.StackAt(3).m_value)) + .yytext, false){}} + +public class IncrementDecrementExpression_8 : IncrementDecrementExpression { + public IncrementDecrementExpression_8(Parser yyq):base(yyq,new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(0).m_value)) + .yytext), + ((DECREMENT)(yyq.StackAt(3).m_value)) + .yytext, false){}} + +public class FunctionCallExpression_1 : FunctionCallExpression { + public FunctionCallExpression_1(Parser yyq):base(yyq, + ((FunctionCall)(yyq.StackAt(0).m_value)) + ){}} + +public class BinaryExpression_1 : BinaryExpression { + public BinaryExpression_1(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((PLUS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_2 : BinaryExpression { + public BinaryExpression_2(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((MINUS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_3 : BinaryExpression { + public BinaryExpression_3(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((STAR)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_4 : BinaryExpression { + public BinaryExpression_4(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((SLASH)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_5 : BinaryExpression { + public BinaryExpression_5(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((PERCENT)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_6 : BinaryExpression { + public BinaryExpression_6(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((AMP)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_7 : BinaryExpression { + public BinaryExpression_7(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((STROKE)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_8 : BinaryExpression { + public BinaryExpression_8(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((CARET)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_9 : BinaryExpression { + public BinaryExpression_9(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((RIGHT_ANGLE)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_10 : BinaryExpression { + public BinaryExpression_10(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((LEFT_ANGLE)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_11 : BinaryExpression { + public BinaryExpression_11(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((EQUALS_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_12 : BinaryExpression { + public BinaryExpression_12(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((EXCLAMATION_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_13 : BinaryExpression { + public BinaryExpression_13(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((LESS_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_14 : BinaryExpression { + public BinaryExpression_14(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((GREATER_EQUALS)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_15 : BinaryExpression { + public BinaryExpression_15(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((AMP_AMP)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_16 : BinaryExpression { + public BinaryExpression_16(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((STROKE_STROKE)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_17 : BinaryExpression { + public BinaryExpression_17(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((LEFT_SHIFT)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class BinaryExpression_18 : BinaryExpression { + public BinaryExpression_18(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(2).m_value)) + , + ((Expression)(yyq.StackAt(0).m_value)) + , + ((RIGHT_SHIFT)(yyq.StackAt(1).m_value)) + .yytext){}} + +public class UnaryExpression_1 : UnaryExpression { + public UnaryExpression_1(Parser yyq):base(yyq, + ((EXCLAMATION)(yyq.StackAt(1).m_value)) + .yytext, + ((Expression)(yyq.StackAt(0).m_value)) + ){}} + +public class UnaryExpression_2 : UnaryExpression { + public UnaryExpression_2(Parser yyq):base(yyq, + ((MINUS)(yyq.StackAt(1).m_value)) + .yytext, + ((Expression)(yyq.StackAt(0).m_value)) + ){}} + +public class UnaryExpression_3 : UnaryExpression { + public UnaryExpression_3(Parser yyq):base(yyq, + ((TILDE)(yyq.StackAt(1).m_value)) + .yytext, + ((Expression)(yyq.StackAt(0).m_value)) + ){}} + +public class ParenthesisExpression_1 : ParenthesisExpression { + public ParenthesisExpression_1(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(1).m_value)) + ){}} + +public class ParenthesisExpression_2 : ParenthesisExpression { + public ParenthesisExpression_2(Parser yyq):base(yyq, + ((SimpleAssignment)(yyq.StackAt(1).m_value)) + ){}} + +public class TypecastExpression_1 : TypecastExpression { + public TypecastExpression_1(Parser yyq):base(yyq, + ((Typename)(yyq.StackAt(2).m_value)) + .yytext, + ((Constant)(yyq.StackAt(0).m_value)) + ){}} + +public class TypecastExpression_2 : TypecastExpression { + public TypecastExpression_2(Parser yyq):base(yyq, + ((Typename)(yyq.StackAt(2).m_value)) + .yytext, new IdentExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(0).m_value)) + .yytext)){}} + +public class TypecastExpression_3 : TypecastExpression { + public TypecastExpression_3(Parser yyq):base(yyq, + ((Typename)(yyq.StackAt(4).m_value)) + .yytext, new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(2).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(0).m_value)) + .yytext)){}} + +public class TypecastExpression_4 : TypecastExpression { + public TypecastExpression_4(Parser yyq):base(yyq, + ((Typename)(yyq.StackAt(3).m_value)) + .yytext, new IncrementDecrementExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(1).m_value)) + .yytext, + ((INCREMENT)(yyq.StackAt(0).m_value)) + .yytext, true)){}} + +public class TypecastExpression_5 : TypecastExpression { + public TypecastExpression_5(Parser yyq):base(yyq, + ((Typename)(yyq.StackAt(5).m_value)) + .yytext, new IncrementDecrementExpression(((LSLSyntax +)yyq), new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(3).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(1).m_value)) + .yytext), + ((INCREMENT)(yyq.StackAt(0).m_value)) + .yytext, true)){}} + +public class TypecastExpression_6 : TypecastExpression { + public TypecastExpression_6(Parser yyq):base(yyq, + ((Typename)(yyq.StackAt(3).m_value)) + .yytext, new IncrementDecrementExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(1).m_value)) + .yytext, + ((DECREMENT)(yyq.StackAt(0).m_value)) + .yytext, true)){}} + +public class TypecastExpression_7 : TypecastExpression { + public TypecastExpression_7(Parser yyq):base(yyq, + ((Typename)(yyq.StackAt(5).m_value)) + .yytext, new IncrementDecrementExpression(((LSLSyntax +)yyq), new IdentDotExpression(((LSLSyntax +)yyq), + ((IDENT)(yyq.StackAt(3).m_value)) + .yytext, + ((IDENT)(yyq.StackAt(1).m_value)) + .yytext), + ((DECREMENT)(yyq.StackAt(0).m_value)) + .yytext, true)){}} + +public class TypecastExpression_8 : TypecastExpression { + public TypecastExpression_8(Parser yyq):base(yyq, + ((Typename)(yyq.StackAt(2).m_value)) + .yytext, + ((FunctionCall)(yyq.StackAt(0).m_value)) + ){}} + +public class TypecastExpression_9 : TypecastExpression { + public TypecastExpression_9(Parser yyq):base(yyq, + ((Typename)(yyq.StackAt(4).m_value)) + .yytext, + ((Expression)(yyq.StackAt(1).m_value)) + ){}} + +public class FunctionCall_1 : FunctionCall { + public FunctionCall_1(Parser yyq):base(yyq, + ((IDENT)(yyq.StackAt(3).m_value)) + .yytext, + ((ArgumentList)(yyq.StackAt(1).m_value)) + ){}} + +public class ArgumentList_1 : ArgumentList { + public ArgumentList_1(Parser yyq):base(yyq, + ((Argument)(yyq.StackAt(0).m_value)) + ){}} + +public class ArgumentList_2 : ArgumentList { + public ArgumentList_2(Parser yyq):base(yyq, + ((ArgumentList)(yyq.StackAt(2).m_value)) + , + ((Argument)(yyq.StackAt(0).m_value)) + ){}} + +public class ExpressionArgument_1 : ExpressionArgument { + public ExpressionArgument_1(Parser yyq):base(yyq, + ((Expression)(yyq.StackAt(0).m_value)) + ){}} + +public class Typename_1 : Typename { + public Typename_1(Parser yyq):base(yyq, + ((INTEGER_TYPE)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Typename_2 : Typename { + public Typename_2(Parser yyq):base(yyq, + ((FLOAT_TYPE)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Typename_3 : Typename { + public Typename_3(Parser yyq):base(yyq, + ((STRING_TYPE)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Typename_4 : Typename { + public Typename_4(Parser yyq):base(yyq, + ((KEY_TYPE)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Typename_5 : Typename { + public Typename_5(Parser yyq):base(yyq, + ((VECTOR_TYPE)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Typename_6 : Typename { + public Typename_6(Parser yyq):base(yyq, + ((ROTATION_TYPE)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Typename_7 : Typename { + public Typename_7(Parser yyq):base(yyq, + ((LIST_TYPE)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_1 : Event { + public Event_1(Parser yyq):base(yyq, + ((AT_ROT_TARGET_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_2 : Event { + public Event_2(Parser yyq):base(yyq, + ((AT_TARGET_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_3 : Event { + public Event_3(Parser yyq):base(yyq, + ((ATTACH_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_4 : Event { + public Event_4(Parser yyq):base(yyq, + ((CHANGED_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_5 : Event { + public Event_5(Parser yyq):base(yyq, + ((COLLISION_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_6 : Event { + public Event_6(Parser yyq):base(yyq, + ((COLLISION_END_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_7 : Event { + public Event_7(Parser yyq):base(yyq, + ((COLLISION_START_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_8 : Event { + public Event_8(Parser yyq):base(yyq, + ((CONTROL_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_9 : Event { + public Event_9(Parser yyq):base(yyq, + ((DATASERVER_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_10 : Event { + public Event_10(Parser yyq):base(yyq, + ((EMAIL_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_11 : Event { + public Event_11(Parser yyq):base(yyq, + ((HTTP_RESPONSE_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_12 : Event { + public Event_12(Parser yyq):base(yyq, + ((LAND_COLLISION_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_13 : Event { + public Event_13(Parser yyq):base(yyq, + ((LAND_COLLISION_END_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_14 : Event { + public Event_14(Parser yyq):base(yyq, + ((LAND_COLLISION_START_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_15 : Event { + public Event_15(Parser yyq):base(yyq, + ((LINK_MESSAGE_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_16 : Event { + public Event_16(Parser yyq):base(yyq, + ((LISTEN_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_17 : Event { + public Event_17(Parser yyq):base(yyq, + ((MONEY_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_18 : Event { + public Event_18(Parser yyq):base(yyq, + ((MOVING_END_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_19 : Event { + public Event_19(Parser yyq):base(yyq, + ((MOVING_START_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_20 : Event { + public Event_20(Parser yyq):base(yyq, + ((NO_SENSOR_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_21 : Event { + public Event_21(Parser yyq):base(yyq, + ((NOT_AT_ROT_TARGET_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_22 : Event { + public Event_22(Parser yyq):base(yyq, + ((NOT_AT_TARGET_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_23 : Event { + public Event_23(Parser yyq):base(yyq, + ((OBJECT_REZ_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_24 : Event { + public Event_24(Parser yyq):base(yyq, + ((ON_REZ_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_25 : Event { + public Event_25(Parser yyq):base(yyq, + ((REMOTE_DATA_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_26 : Event { + public Event_26(Parser yyq):base(yyq, + ((RUN_TIME_PERMISSIONS_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_27 : Event { + public Event_27(Parser yyq):base(yyq, + ((SENSOR_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_28 : Event { + public Event_28(Parser yyq):base(yyq, + ((STATE_ENTRY_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_29 : Event { + public Event_29(Parser yyq):base(yyq, + ((STATE_EXIT_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_30 : Event { + public Event_30(Parser yyq):base(yyq, + ((TIMER_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_31 : Event { + public Event_31(Parser yyq):base(yyq, + ((TOUCH_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_32 : Event { + public Event_32(Parser yyq):base(yyq, + ((TOUCH_END_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} + +public class Event_33 : Event { + public Event_33(Parser yyq):base(yyq, + ((TOUCH_START_EVENT)(yyq.StackAt(0).m_value)) + .yytext){}} +public class yyLSLSyntax +: YyParser { + public override object Action(Parser yyq,SYMBOL yysym, int yyact) { + switch(yyact) { + case -1: break; //// keep compiler happy +} return null; } + +public class ArgumentDeclarationList_3 : ArgumentDeclarationList { + public ArgumentDeclarationList_3(Parser yyq):base(yyq){}} + +public class ArgumentList_3 : ArgumentList { + public ArgumentList_3(Parser yyq):base(yyq){}} + +public class ArgumentDeclarationList_4 : ArgumentDeclarationList { + public ArgumentDeclarationList_4(Parser yyq):base(yyq){}} + +public class ArgumentDeclarationList_5 : ArgumentDeclarationList { + public ArgumentDeclarationList_5(Parser yyq):base(yyq){}} + +public class ArgumentList_4 : ArgumentList { + public ArgumentList_4(Parser yyq):base(yyq){}} +public yyLSLSyntax +():base() { arr = new int[] { +101,4,6,52,0, +46,0,53,0,102, +20,103,4,28,76, +0,83,0,76,0, +80,0,114,0,111, +0,103,0,114,0, +97,0,109,0,82, +0,111,0,111,0, +116,0,1,95,1, +2,104,18,1,2610, +102,2,0,105,5, +313,1,0,106,18, +1,0,0,2,0, +1,1,107,18,1, +1,108,20,109,4, +18,76,0,73,0, +83,0,84,0,95, +0,84,0,89,0, +80,0,69,0,1, +57,1,1,2,0, +1,2,110,18,1, +2,111,20,112,4, +26,82,0,79,0, +84,0,65,0,84, +0,73,0,79,0, +78,0,95,0,84, +0,89,0,80,0, +69,0,1,56,1, +1,2,0,1,3, +113,18,1,3,114, +20,115,4,22,86, +0,69,0,67,0, +84,0,79,0,82, +0,95,0,84,0, +89,0,80,0,69, +0,1,55,1,1, +2,0,1,4,116, +18,1,4,117,20, +118,4,16,75,0, +69,0,89,0,95, +0,84,0,89,0, +80,0,69,0,1, +54,1,1,2,0, +1,5,119,18,1, +5,120,20,121,4, +22,83,0,84,0, +82,0,73,0,78, +0,71,0,95,0, +84,0,89,0,80, +0,69,0,1,53, +1,1,2,0,1, +6,122,18,1,6, +123,20,124,4,20, +70,0,76,0,79, +0,65,0,84,0, +95,0,84,0,89, +0,80,0,69,0, +1,52,1,1,2, +0,1,7,125,18, +1,7,126,20,127, +4,24,73,0,78, +0,84,0,69,0, +71,0,69,0,82, +0,95,0,84,0, +89,0,80,0,69, +0,1,51,1,1, +2,0,1,8,128, +18,1,8,129,20, +130,4,16,84,0, +121,0,112,0,101, +0,110,0,97,0, +109,0,101,0,1, +105,1,2,2,0, +1,9,131,18,1, +9,132,20,133,4, +10,73,0,68,0, +69,0,78,0,84, +0,1,91,1,1, +2,0,1,10,134, +18,1,10,135,20, +136,4,20,76,0, +69,0,70,0,84, +0,95,0,80,0, +65,0,82,0,69, +0,78,0,1,16, +1,1,2,0,1, +18,137,18,1,18, +129,2,0,1,19, +138,18,1,19,132, +2,0,1,20,139, +18,1,20,140,20, +141,4,46,65,0, +114,0,103,0,117, +0,109,0,101,0, +110,0,116,0,68, +0,101,0,99,0, +108,0,97,0,114, +0,97,0,116,0, +105,0,111,0,110, +0,76,0,105,0, +115,0,116,0,1, +103,1,2,2,0, +1,21,142,18,1, +21,143,20,144,4, +10,67,0,79,0, +77,0,77,0,65, +0,1,14,1,1, +2,0,1,1694,145, +18,1,1694,146,20, +147,4,32,70,0, +111,0,114,0,76, +0,111,0,111,0, +112,0,83,0,116, +0,97,0,116,0, +101,0,109,0,101, +0,110,0,116,0, +1,121,1,2,2, +0,1,1695,148,18, +1,1695,143,2,0, +1,30,149,18,1, +30,150,20,151,4, +22,68,0,101,0, +99,0,108,0,97, +0,114,0,97,0, +116,0,105,0,111, +0,110,0,1,104, +1,2,2,0,1, +31,152,18,1,31, +153,20,154,4,22, +82,0,73,0,71, +0,72,0,84,0, +95,0,80,0,65, +0,82,0,69,0, +78,0,1,17,1, +1,2,0,1,32, +155,18,1,32,156, +20,157,4,20,76, +0,69,0,70,0, +84,0,95,0,66, +0,82,0,65,0, +67,0,69,0,1, +12,1,1,2,0, +1,1114,158,18,1, +1114,132,2,0,1, +1152,159,18,1,1152, +160,20,161,4,32, +83,0,105,0,109, +0,112,0,108,0, +101,0,65,0,115, +0,115,0,105,0, +103,0,110,0,109, +0,101,0,110,0, +116,0,1,112,1, +2,2,0,1,1117, +162,18,1,1117,163, +20,164,4,28,80, +0,69,0,82,0, +67,0,69,0,78, +0,84,0,95,0, +69,0,81,0,85, +0,65,0,76,0, +83,0,1,10,1, +1,2,0,1,40, +165,18,1,40,132, +2,0,1,41,166, +18,1,41,135,2, +0,1,42,167,18, +1,42,168,20,169, +4,20,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,1,130,1, +2,2,0,1,43, +170,18,1,43,171, +20,172,4,22,82, +0,73,0,71,0, +72,0,84,0,95, +0,83,0,72,0, +73,0,70,0,84, +0,1,41,1,1, +2,0,1,44,173, +18,1,44,132,2, +0,1,1159,174,18, +1,1159,168,2,0, +1,46,175,18,1, +46,176,20,177,4, +12,80,0,69,0, +82,0,73,0,79, +0,68,0,1,24, +1,1,2,0,1, +47,178,18,1,47, +132,2,0,1,48, +179,18,1,48,180, +20,181,4,18,68, +0,69,0,67,0, +82,0,69,0,77, +0,69,0,78,0, +84,0,1,5,1, +1,2,0,1,49, +182,18,1,49,183, +20,184,4,18,73, +0,78,0,67,0, +82,0,69,0,77, +0,69,0,78,0, +84,0,1,4,1, +1,2,0,1,50, +185,18,1,50,180, +2,0,1,51,186, +18,1,51,183,2, +0,1,52,187,18, +1,52,135,2,0, +1,2281,188,18,1, +2281,160,2,0,1, +1730,189,18,1,1730, +160,2,0,1,1731, +190,18,1,1731,191, +20,192,4,18,83, +0,69,0,77,0, +73,0,67,0,79, +0,76,0,79,0, +78,0,1,11,1, +1,2,0,1,61, +193,18,1,61,129, +2,0,1,62,194, +18,1,62,153,2, +0,1,63,195,18, +1,63,132,2,0, +1,65,196,18,1, +65,176,2,0,1, +66,197,18,1,66, +132,2,0,1,67, +198,18,1,67,180, +2,0,1,68,199, +18,1,68,183,2, +0,1,69,200,18, +1,69,180,2,0, +1,70,201,18,1, +70,183,2,0,1, +71,202,18,1,71, +135,2,0,1,73, +203,18,1,73,168, +2,0,1,74,204, +18,1,74,153,2, +0,1,1189,205,18, +1,1189,206,20,207, +4,22,83,0,84, +0,65,0,82,0, +95,0,69,0,81, +0,85,0,65,0, +76,0,83,0,1, +8,1,1,2,0, +1,76,208,18,1, +76,209,20,210,4, +20,76,0,69,0, +70,0,84,0,95, +0,83,0,72,0, +73,0,70,0,84, +0,1,40,1,1, +2,0,1,1153,211, +18,1,1153,212,20, +213,4,24,83,0, +76,0,65,0,83, +0,72,0,95,0, +69,0,81,0,85, +0,65,0,76,0, +83,0,1,9,1, +1,2,0,1,79, +214,18,1,79,215, +20,216,4,10,84, +0,73,0,76,0, +68,0,69,0,1, +36,1,1,2,0, +1,1195,217,18,1, +1195,168,2,0,1, +82,218,18,1,82, +168,2,0,1,1123, +219,18,1,1123,168, +2,0,1,85,220, +18,1,85,221,20, +222,4,26,83,0, +84,0,82,0,79, +0,75,0,69,0, +95,0,83,0,84, +0,82,0,79,0, +75,0,69,0,1, +39,1,1,2,0, +1,89,223,18,1, +89,224,20,225,4, +10,77,0,73,0, +78,0,85,0,83, +0,1,19,1,1, +2,0,1,93,226, +18,1,93,168,2, +0,1,97,227,18, +1,97,228,20,229, +4,14,65,0,77, +0,80,0,95,0, +65,0,77,0,80, +0,1,38,1,1, +2,0,1,102,230, +18,1,102,231,20, +232,4,22,69,0, +88,0,67,0,76, +0,65,0,77,0, +65,0,84,0,73, +0,79,0,78,0, +1,37,1,1,2, +0,1,1775,233,18, +1,1775,153,2,0, +1,107,234,18,1, +107,168,2,0,1, +1224,235,18,1,1224, +160,2,0,1,1225, +236,18,1,1225,237, +20,238,4,24,77, +0,73,0,78,0, +85,0,83,0,95, +0,69,0,81,0, +85,0,65,0,76, +0,83,0,1,7, +1,1,2,0,1, +112,239,18,1,112, +240,20,241,4,28, +71,0,82,0,69, +0,65,0,84,0, +69,0,82,0,95, +0,69,0,81,0, +85,0,65,0,76, +0,83,0,1,32, +1,1,2,0,1, +1188,242,18,1,1188, +160,2,0,1,1231, +243,18,1,1231,168, +2,0,1,118,244, +18,1,118,168,2, +0,1,1737,245,18, +1,1737,168,2,0, +1,124,246,18,1, +124,247,20,248,4, +22,76,0,69,0, +83,0,83,0,95, +0,69,0,81,0, +85,0,65,0,76, +0,83,0,1,31, +1,1,2,0,1, +2355,249,18,1,2355, +250,20,251,4,18, +83,0,116,0,97, +0,116,0,101,0, +109,0,101,0,110, +0,116,0,1,109, +1,2,2,0,1, +2356,252,18,1,2356, +253,20,254,4,22, +82,0,73,0,71, +0,72,0,84,0, +95,0,66,0,82, +0,65,0,67,0, +69,0,1,13,1, +1,2,0,1,130, +255,18,1,130,168, +2,0,1,1802,256, +18,1,1802,250,2, +0,1,1804,257,18, +1,1804,258,20,259, +4,4,68,0,79, +0,1,44,1,1, +2,0,1,2363,260, +18,1,2363,261,20, +262,4,34,67,0, +111,0,109,0,112, +0,111,0,117,0, +110,0,100,0,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,1,107,1, +2,2,0,1,2364, +263,18,1,2364,150, +2,0,1,137,264, +18,1,137,265,20, +266,4,36,69,0, +88,0,67,0,76, +0,65,0,77,0, +65,0,84,0,73, +0,79,0,78,0, +95,0,69,0,81, +0,85,0,65,0, +76,0,83,0,1, +30,1,1,2,0, +1,2366,267,18,1, +2366,132,2,0,1, +2367,268,18,1,2367, +156,2,0,1,1701, +269,18,1,1701,168, +2,0,1,1756,270, +18,1,1756,191,2, +0,1,2370,271,18, +1,2370,272,20,273, +4,22,84,0,79, +0,85,0,67,0, +72,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +88,1,1,2,0, +1,143,274,18,1, +143,168,2,0,1, +2372,275,18,1,2372, +276,20,277,4,32, +83,0,84,0,65, +0,84,0,69,0, +95,0,69,0,88, +0,73,0,84,0, +95,0,69,0,86, +0,69,0,78,0, +84,0,1,86,1, +1,2,0,1,2373, +278,18,1,2373,279, +20,280,4,34,83, +0,84,0,65,0, +84,0,69,0,95, +0,69,0,78,0, +84,0,82,0,89, +0,95,0,69,0, +86,0,69,0,78, +0,84,0,1,85, +1,1,2,0,1, +1260,281,18,1,1260, +160,2,0,1,1261, +282,18,1,1261,283, +20,284,4,22,80, +0,76,0,85,0, +83,0,95,0,69, +0,81,0,85,0, +65,0,76,0,83, +0,1,6,1,1, +2,0,1,2376,285, +18,1,2376,286,20, +287,4,34,82,0, +69,0,77,0,79, +0,84,0,69,0, +95,0,68,0,65, +0,84,0,65,0, +95,0,69,0,86, +0,69,0,78,0, +84,0,1,82,1, +1,2,0,1,2377, +288,18,1,2377,289, +20,290,4,24,79, +0,78,0,95,0, +82,0,69,0,90, +0,95,0,69,0, +86,0,69,0,78, +0,84,0,1,81, +1,1,2,0,1, +2378,291,18,1,2378, +292,20,293,4,32, +79,0,66,0,74, +0,69,0,67,0, +84,0,95,0,82, +0,69,0,90,0, +95,0,69,0,86, +0,69,0,78,0, +84,0,1,80,1, +1,2,0,1,151, +294,18,1,151,295, +20,296,4,26,69, +0,81,0,85,0, +65,0,76,0,83, +0,95,0,69,0, +81,0,85,0,65, +0,76,0,83,0, +1,29,1,1,2, +0,1,2380,297,18, +1,2380,298,20,299, +4,46,78,0,79, +0,84,0,95,0, +65,0,84,0,95, +0,82,0,79,0, +84,0,95,0,84, +0,65,0,82,0, +71,0,69,0,84, +0,95,0,69,0, +86,0,69,0,78, +0,84,0,1,78, +1,1,2,0,1, +1267,300,18,1,1267, +168,2,0,1,2382, +301,18,1,2382,302, +20,303,4,36,77, +0,79,0,86,0, +73,0,78,0,71, +0,95,0,83,0, +84,0,65,0,82, +0,84,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,76,1,1,2, +0,1,2383,304,18, +1,2383,305,20,306, +4,32,77,0,79, +0,86,0,73,0, +78,0,71,0,95, +0,69,0,78,0, +68,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +75,1,1,2,0, +1,2310,307,18,1, +2310,308,20,309,4, +26,83,0,116,0, +97,0,116,0,101, +0,109,0,101,0, +110,0,116,0,76, +0,105,0,115,0, +116,0,1,108,1, +2,2,0,1,157, +310,18,1,157,168, +2,0,1,2386,311, +18,1,2386,312,20, +313,4,36,76,0, +73,0,78,0,75, +0,95,0,77,0, +69,0,83,0,83, +0,65,0,71,0, +69,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +72,1,1,2,0, +1,1773,314,18,1, +1773,146,2,0,1, +2388,315,18,1,2388, +316,20,317,4,48, +76,0,65,0,78, +0,68,0,95,0, +67,0,79,0,76, +0,76,0,73,0, +83,0,73,0,79, +0,78,0,95,0, +69,0,78,0,68, +0,95,0,69,0, +86,0,69,0,78, +0,84,0,1,70, +1,1,2,0,1, +1832,318,18,1,1832, +250,2,0,1,1833, +319,18,1,1833,320, +20,321,4,10,87, +0,72,0,73,0, +76,0,69,0,1, +45,1,1,2,0, +1,1834,322,18,1, +1834,135,2,0,1, +2392,323,18,1,2392, +324,20,325,4,32, +68,0,65,0,84, +0,65,0,83,0, +69,0,82,0,86, +0,69,0,82,0, +95,0,69,0,86, +0,69,0,78,0, +84,0,1,66,1, +1,2,0,1,2393, +326,18,1,2393,327, +20,328,4,26,67, +0,79,0,78,0, +84,0,82,0,79, +0,76,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,65,1,1,2, +0,1,166,329,18, +1,166,330,20,331, +4,20,76,0,69, +0,70,0,84,0, +95,0,65,0,78, +0,71,0,76,0, +69,0,1,25,1, +1,2,0,1,2395, +332,18,1,2395,333, +20,334,4,38,67, +0,79,0,76,0, +76,0,73,0,83, +0,73,0,79,0, +78,0,95,0,69, +0,78,0,68,0, +95,0,69,0,86, +0,69,0,78,0, +84,0,1,63,1, +1,2,0,1,2396, +335,18,1,2396,336, +20,337,4,30,67, +0,79,0,76,0, +76,0,73,0,83, +0,73,0,79,0, +78,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +62,1,1,2,0, +1,1840,338,18,1, +1840,168,2,0,1, +2398,339,18,1,2398, +340,20,341,4,24, +65,0,84,0,84, +0,65,0,67,0, +72,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +60,1,1,2,0, +1,2399,342,18,1, +2399,343,20,344,4, +30,65,0,84,0, +95,0,84,0,65, +0,82,0,71,0, +69,0,84,0,95, +0,69,0,86,0, +69,0,78,0,84, +0,1,59,1,1, +2,0,1,172,345, +18,1,172,168,2, +0,1,2401,346,18, +1,2401,347,20,348, +4,10,69,0,118, +0,101,0,110,0, +116,0,1,106,1, +2,2,0,1,2402, +349,18,1,2402,135, +2,0,1,1296,350, +18,1,1296,160,2, +0,1,1297,351,18, +1,1297,352,20,353, +4,12,69,0,81, +0,85,0,65,0, +76,0,83,0,1, +15,1,1,2,0, +1,2413,354,18,1, +2413,153,2,0,1, +2415,355,18,1,2415, +261,2,0,1,1859, +356,18,1,1859,153, +2,0,1,1860,357, +18,1,1860,191,2, +0,1,188,358,18, +1,188,168,2,0, +1,182,359,18,1, +182,360,20,361,4, +22,82,0,73,0, +71,0,72,0,84, +0,95,0,65,0, +78,0,71,0,76, +0,69,0,1,26, +1,1,2,0,1, +199,362,18,1,199, +363,20,364,4,10, +67,0,65,0,82, +0,69,0,84,0, +1,35,1,1,2, +0,1,1871,365,18, +1,1871,160,2,0, +1,1872,366,18,1, +1872,153,2,0,1, +1873,367,18,1,1873, +191,2,0,1,1875, +368,18,1,1875,320, +2,0,1,205,369, +18,1,205,168,2, +0,1,2359,370,18, +1,2359,250,2,0, +1,2361,371,18,1, +2361,253,2,0,1, +1882,372,18,1,1882, +168,2,0,1,2227, +373,18,1,2227,250, +2,0,1,2368,374, +18,1,2368,375,20, +376,4,34,84,0, +79,0,85,0,67, +0,72,0,95,0, +83,0,84,0,65, +0,82,0,84,0, +95,0,69,0,86, +0,69,0,78,0, +84,0,1,89,1, +1,2,0,1,217, +377,18,1,217,378, +20,379,4,12,83, +0,84,0,82,0, +79,0,75,0,69, +0,1,34,1,1, +2,0,1,1332,380, +18,1,1332,160,2, +0,1,2371,381,18, +1,2371,382,20,383, +4,22,84,0,73, +0,77,0,69,0, +82,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +87,1,1,2,0, +1,1335,384,18,1, +1335,163,2,0,1, +2374,385,18,1,2374, +386,20,387,4,24, +83,0,69,0,78, +0,83,0,79,0, +82,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +84,1,1,2,0, +1,223,388,18,1, +223,168,2,0,1, +2452,389,18,1,2452, +390,20,391,4,20, +83,0,116,0,97, +0,116,0,101,0, +69,0,118,0,101, +0,110,0,116,0, +1,102,1,2,2, +0,1,2453,392,18, +1,2453,253,2,0, +1,2454,393,18,1, +2454,390,2,0,1, +1341,394,18,1,1341, +168,2,0,1,2456, +395,18,1,2456,156, +2,0,1,2381,396, +18,1,2381,397,20, +398,4,30,78,0, +79,0,95,0,83, +0,69,0,78,0, +83,0,79,0,82, +0,95,0,69,0, +86,0,69,0,78, +0,84,0,1,77, +1,1,2,0,1, +1901,399,18,1,1901, +153,2,0,1,1303, +400,18,1,1303,168, +2,0,1,2384,401, +18,1,2384,402,20, +403,4,22,77,0, +79,0,78,0,69, +0,89,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,74,1,1,2, +0,1,2385,404,18, +1,2385,405,20,406, +4,24,76,0,73, +0,83,0,84,0, +69,0,78,0,95, +0,69,0,86,0, +69,0,78,0,84, +0,1,73,1,1, +2,0,1,2387,407, +18,1,2387,408,20, +409,4,52,76,0, +65,0,78,0,68, +0,95,0,67,0, +79,0,76,0,76, +0,73,0,83,0, +73,0,79,0,78, +0,95,0,83,0, +84,0,65,0,82, +0,84,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,71,1,1,2, +0,1,236,410,18, +1,236,411,20,412, +4,6,65,0,77, +0,80,0,1,33, +1,1,2,0,1, +2389,413,18,1,2389, +414,20,415,4,40, +76,0,65,0,78, +0,68,0,95,0, +67,0,79,0,76, +0,76,0,73,0, +83,0,73,0,79, +0,78,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,69,1,1,2, +0,1,2390,416,18, +1,2390,417,20,418, +4,38,72,0,84, +0,84,0,80,0, +95,0,82,0,69, +0,83,0,80,0, +79,0,78,0,83, +0,69,0,95,0, +69,0,86,0,69, +0,78,0,84,0, +1,68,1,1,2, +0,1,2391,419,18, +1,2391,420,20,421, +4,22,69,0,77, +0,65,0,73,0, +76,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +67,1,1,2,0, +1,242,422,18,1, +242,168,2,0,1, +2397,423,18,1,2397, +424,20,425,4,26, +67,0,72,0,65, +0,78,0,71,0, +69,0,68,0,95, +0,69,0,86,0, +69,0,78,0,84, +0,1,61,1,1, +2,0,1,2400,426, +18,1,2400,427,20, +428,4,38,65,0, +84,0,95,0,82, +0,79,0,84,0, +95,0,84,0,65, +0,82,0,71,0, +69,0,84,0,95, +0,69,0,86,0, +69,0,78,0,84, +0,1,58,1,1, +2,0,1,256,429, +18,1,256,430,20, +431,4,14,80,0, +69,0,82,0,67, +0,69,0,78,0, +84,0,1,22,1, +1,2,0,1,1371, +432,18,1,1371,212, +2,0,1,1931,433, +18,1,1931,250,2, +0,1,1932,434,18, +1,1932,435,20,436, +4,4,73,0,70, +0,1,42,1,1, +2,0,1,262,437, +18,1,262,168,2, +0,1,1377,438,18, +1,1377,168,2,0, +1,1876,439,18,1, +1876,135,2,0,1, +2417,440,18,1,2417, +441,20,442,4,18, +83,0,116,0,97, +0,116,0,101,0, +66,0,111,0,100, +0,121,0,1,101, +1,2,2,0,1, +1939,443,18,1,1939, +168,2,0,1,827, +444,18,1,827,168, +2,0,1,277,445, +18,1,277,446,20, +447,4,10,83,0, +76,0,65,0,83, +0,72,0,1,21, +1,1,2,0,1, +283,448,18,1,283, +168,2,0,1,1958, +449,18,1,1958,153, +2,0,1,1406,450, +18,1,1406,160,2, +0,1,1407,451,18, +1,1407,206,2,0, +1,299,452,18,1, +299,453,20,454,4, +8,83,0,84,0, +65,0,82,0,1, +20,1,1,2,0, +1,1370,455,18,1, +1370,160,2,0,1, +2529,456,18,1,2529, +457,20,458,4,12, +83,0,116,0,97, +0,116,0,101,0, +115,0,1,99,1, +2,2,0,1,2527, +459,18,1,2527,253, +2,0,1,2379,460, +18,1,2379,461,20, +462,4,38,78,0, +79,0,84,0,95, +0,65,0,84,0, +95,0,84,0,65, +0,82,0,71,0, +69,0,84,0,95, +0,69,0,86,0, +69,0,78,0,84, +0,1,79,1,1, +2,0,1,2532,463, +18,1,2532,464,20, +465,4,10,83,0, +116,0,97,0,116, +0,101,0,1,100, +1,2,2,0,1, +305,466,18,1,305, +168,2,0,1,2534, +467,18,1,2534,132, +2,0,1,2535,468, +18,1,2535,135,2, +0,1,2599,469,18, +1,2599,457,2,0, +1,2544,470,18,1, +2544,140,2,0,1, +1989,471,18,1,1989, +250,2,0,1,1990, +472,18,1,1990,473, +20,474,4,8,69, +0,76,0,83,0, +69,0,1,43,1, +1,2,0,1,2548, +475,18,1,2548,261, +2,0,1,322,476, +18,1,322,224,2, +0,1,2551,477,18, +1,2551,352,2,0, +1,1933,478,18,1, +1933,135,2,0,1, +883,479,18,1,883, +168,2,0,1,328, +480,18,1,328,168, +2,0,1,1443,481, +18,1,1443,237,2, +0,1,1449,482,18, +1,1449,168,2,0, +1,2411,483,18,1, +2411,140,2,0,1, +2491,484,18,1,2491, +441,2,0,1,1413, +485,18,1,1413,168, +2,0,1,346,486, +18,1,346,487,20, +488,4,8,80,0, +76,0,85,0,83, +0,1,18,1,1, +2,0,1,2576,489, +18,1,2576,191,2, +0,1,2021,490,18, +1,2021,250,2,0, +1,2022,491,18,1, +2022,492,20,493,4, +10,83,0,84,0, +65,0,84,0,69, +0,1,48,1,1, +2,0,1,352,494, +18,1,352,168,2, +0,1,2024,495,18, +1,2024,132,2,0, +1,2025,496,18,1, +2025,497,20,498,4, +8,74,0,85,0, +77,0,80,0,1, +49,1,1,2,0, +1,2026,499,18,1, +2026,132,2,0,1, +2027,500,18,1,2027, +501,20,502,4,4, +65,0,84,0,1, +23,1,1,2,0, +1,2028,503,18,1, +2028,132,2,0,1, +2029,504,18,1,2029, +261,2,0,1,2030, +505,18,1,2030,506, +20,507,4,14,70, +0,111,0,114,0, +76,0,111,0,111, +0,112,0,1,120, +1,2,2,0,1, +2031,508,18,1,2031, +509,20,510,4,32, +68,0,111,0,87, +0,104,0,105,0, +108,0,101,0,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,1,119,1, +2,2,0,1,2032, +511,18,1,2032,512, +20,513,4,28,87, +0,104,0,105,0, +108,0,101,0,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,1,118,1, +2,2,0,1,2033, +514,18,1,2033,515, +20,516,4,22,73, +0,102,0,83,0, +116,0,97,0,116, +0,101,0,109,0, +101,0,110,0,116, +0,1,117,1,2, +2,0,1,2034,517, +18,1,2034,518,20, +519,4,22,83,0, +116,0,97,0,116, +0,101,0,67,0, +104,0,97,0,110, +0,103,0,101,0, +1,116,1,2,2, +0,1,1478,520,18, +1,1478,160,2,0, +1,1479,521,18,1, +1479,283,2,0,1, +2037,522,18,1,2037, +191,2,0,1,2038, +523,18,1,2038,524, +20,525,4,18,74, +0,117,0,109,0, +112,0,76,0,97, +0,98,0,101,0, +108,0,1,114,1, +2,2,0,1,2039, +526,18,1,2039,191, +2,0,1,2040,527, +18,1,2040,528,20, +529,4,30,82,0, +101,0,116,0,117, +0,114,0,110,0, +83,0,116,0,97, +0,116,0,101,0, +109,0,101,0,110, +0,116,0,1,113, +1,2,2,0,1, +2041,530,18,1,2041, +191,2,0,1,1485, +531,18,1,1485,168, +2,0,1,372,532, +18,1,372,180,2, +0,1,373,533,18, +1,373,132,2,0, +1,374,534,18,1, +374,176,2,0,1, +375,535,18,1,375, +132,2,0,1,376, +536,18,1,376,183, +2,0,1,377,537, +18,1,377,132,2, +0,1,378,538,18, +1,378,176,2,0, +1,379,539,18,1, +379,132,2,0,1, +380,540,18,1,380, +541,20,542,4,16, +67,0,111,0,110, +0,115,0,116,0, +97,0,110,0,116, +0,1,126,1,2, +2,0,1,381,543, +18,1,381,330,2, +0,1,2610,104,1, +2455,544,18,1,2455, +545,20,546,4,26, +68,0,69,0,70, +0,65,0,85,0, +76,0,84,0,95, +0,83,0,84,0, +65,0,84,0,69, +0,1,47,1,1, +2,0,1,371,547, +18,1,371,548,20, +549,4,24,70,0, +117,0,110,0,99, +0,116,0,105,0, +111,0,110,0,67, +0,97,0,108,0, +108,0,1,122,1, +2,2,0,1,942, +550,18,1,942,168, +2,0,1,2533,551, +18,1,2533,464,2, +0,1,387,552,18, +1,387,168,2,0, +1,2394,553,18,1, +2394,554,20,555,4, +42,67,0,79,0, +76,0,76,0,73, +0,83,0,73,0, +79,0,78,0,95, +0,83,0,84,0, +65,0,82,0,84, +0,95,0,69,0, +86,0,69,0,78, +0,84,0,1,64, +1,1,2,0,1, +2546,556,18,1,2546, +153,2,0,1,1514, +557,18,1,1514,160, +2,0,1,1515,558, +18,1,1515,352,2, +0,1,2606,559,18, +1,2606,560,20,561, +4,48,71,0,108, +0,111,0,98,0, +97,0,108,0,70, +0,117,0,110,0, +99,0,116,0,105, +0,111,0,110,0, +68,0,101,0,102, +0,105,0,110,0, +105,0,116,0,105, +0,111,0,110,0, +1,98,1,2,2, +0,1,2074,562,18, +1,2074,160,2,0, +1,2075,563,18,1, +2075,153,2,0,1, +406,564,18,1,406, +143,2,0,1,1521, +565,18,1,1521,168, +2,0,1,2557,566, +18,1,2557,168,2, +0,1,412,567,18, +1,412,168,2,0, +1,2023,568,18,1, +2023,545,2,0,1, +1442,569,18,1,1442, +160,2,0,1,2035, +570,18,1,2035,191, +2,0,1,2036,571, +18,1,2036,572,20, +573,4,26,74,0, +117,0,109,0,112, +0,83,0,116,0, +97,0,116,0,101, +0,109,0,101,0, +110,0,116,0,1, +115,1,2,2,0, +1,431,574,18,1, +431,143,2,0,1, +2105,575,18,1,2105, +250,2,0,1,2106, +576,18,1,2106,473, +2,0,1,1550,577, +18,1,1550,160,2, +0,1,437,578,18, +1,437,168,2,0, +1,2044,579,18,1, +2044,580,20,581,4, +28,69,0,109,0, +112,0,116,0,121, +0,83,0,116,0, +97,0,116,0,101, +0,109,0,101,0, +110,0,116,0,1, +110,1,2,2,0, +1,2045,582,18,1, +2045,191,2,0,1, +1555,583,18,1,1555, +168,2,0,1,2588, +584,18,1,2588,585, +20,586,4,34,71, +0,108,0,111,0, +98,0,97,0,108, +0,68,0,101,0, +102,0,105,0,110, +0,105,0,116,0, +105,0,111,0,110, +0,115,0,1,96, +1,2,2,0,1, +1001,587,18,1,1001, +548,2,0,1,1002, +588,18,1,1002,541, +2,0,1,447,589, +18,1,447,360,2, +0,1,2375,590,18, +1,2375,591,20,592, +4,52,82,0,85, +0,78,0,95,0, +84,0,73,0,77, +0,69,0,95,0, +80,0,69,0,82, +0,77,0,73,0, +83,0,83,0,73, +0,79,0,78,0, +83,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +83,1,1,2,0, +1,1010,593,18,1, +1010,160,2,0,1, +1011,594,18,1,1011, +153,2,0,1,1012, +595,18,1,1012,168, +2,0,1,1013,596, +18,1,1013,153,2, +0,1,459,597,18, +1,459,598,20,599, +4,24,76,0,69, +0,70,0,84,0, +95,0,66,0,82, +0,65,0,67,0, +75,0,69,0,84, +0,1,27,1,1, +2,0,1,1574,600, +18,1,1574,191,2, +0,1,461,601,18, +1,461,602,20,603, +4,24,65,0,114, +0,103,0,117,0, +109,0,101,0,110, +0,116,0,76,0, +105,0,115,0,116, +0,1,123,1,2, +2,0,1,462,604, +18,1,462,143,2, +0,1,2608,605,18, +1,2608,560,2,0, +1,464,606,18,1, +464,607,20,608,4, +16,65,0,114,0, +103,0,117,0,109, +0,101,0,110,0, +116,0,1,124,1, +2,2,0,1,2136, +609,18,1,2136,250, +2,0,1,2611,610, +18,1,2611,611,23, +612,4,6,69,0, +79,0,70,0,1, +2,1,6,2,0, +1,1585,613,18,1, +1585,614,20,615,4, +12,82,0,69,0, +84,0,85,0,82, +0,78,0,1,50, +1,1,2,0,1, +476,616,18,1,476, +617,20,618,4,30, +83,0,84,0,82, +0,73,0,78,0, +71,0,95,0,67, +0,79,0,78,0, +83,0,84,0,65, +0,78,0,84,0, +1,3,1,1,2, +0,1,477,619,18, +1,477,620,20,621, +4,28,70,0,76, +0,79,0,65,0, +84,0,95,0,67, +0,79,0,78,0, +83,0,84,0,65, +0,78,0,84,0, +1,94,1,1,2, +0,1,478,622,18, +1,478,623,20,624, +4,40,72,0,69, +0,88,0,95,0, +73,0,78,0,84, +0,69,0,71,0, +69,0,82,0,95, +0,67,0,79,0, +78,0,83,0,84, +0,65,0,78,0, +84,0,1,93,1, +1,2,0,1,479, +625,18,1,479,626, +20,627,4,32,73, +0,78,0,84,0, +69,0,71,0,69, +0,82,0,95,0, +67,0,79,0,78, +0,83,0,84,0, +65,0,78,0,84, +0,1,92,1,1, +2,0,1,480,628, +18,1,480,629,20, +630,4,26,82,0, +73,0,71,0,72, +0,84,0,95,0, +66,0,82,0,65, +0,67,0,75,0, +69,0,84,0,1, +28,1,1,2,0, +1,481,631,18,1, +481,607,2,0,1, +2550,632,18,1,2550, +150,2,0,1,2607, +633,18,1,2607,634, +20,635,4,50,71, +0,108,0,111,0, +98,0,97,0,108, +0,86,0,97,0, +114,0,105,0,97, +0,98,0,108,0, +101,0,68,0,101, +0,99,0,108,0, +97,0,114,0,97, +0,116,0,105,0, +111,0,110,0,1, +97,1,2,2,0, +1,1048,636,18,1, +1048,168,2,0,1, +2042,637,18,1,2042, +638,20,639,4,20, +65,0,115,0,115, +0,105,0,103,0, +110,0,109,0,101, +0,110,0,116,0, +1,111,1,2,2, +0,1,2043,640,18, +1,2043,191,2,0, +1,1620,641,18,1, +1620,160,2,0,1, +1621,642,18,1,1621, +150,2,0,1,1622, +643,18,1,1622,352, +2,0,1,509,644, +18,1,509,143,2, +0,1,2365,645,18, +1,2365,492,2,0, +1,1628,646,18,1, +1628,168,2,0,1, +515,647,18,1,515, +168,2,0,1,2369, +648,18,1,2369,649, +20,650,4,30,84, +0,79,0,85,0, +67,0,72,0,95, +0,69,0,78,0, +68,0,95,0,69, +0,86,0,69,0, +78,0,84,0,1, +90,1,1,2,0, +1,2587,651,18,1, +2587,191,2,0,1, +525,652,18,1,525, +360,2,0,1,2197, +653,18,1,2197,160, +2,0,1,2198,654, +18,1,2198,153,2, +0,1,1591,655,18, +1,1591,168,2,0, +1,1094,656,18,1, +1094,602,2,0,1, +1096,657,18,1,1096, +153,2,0,1,1657, +658,18,1,1657,191, +2,0,1,1658,659, +18,1,1658,660,20, +661,4,6,70,0, +79,0,82,0,1, +46,1,1,2,0, +1,1659,662,18,1, +1659,135,2,0,1, +2609,663,18,1,2609, +634,2,0,1,1665, +664,18,1,1665,168, +2,0,1,1113,665, +18,1,1113,176,2, +0,666,5,0,667, +5,321,1,2,668, +19,612,1,2,669, +5,6,1,2453,670, +17,671,15,672,4, +12,37,0,83,0, +116,0,97,0,116, +0,101,0,1,-1, +1,5,673,20,674, +4,14,83,0,116, +0,97,0,116,0, +101,0,95,0,50, +0,1,154,1,3, +1,6,1,5,675, +22,1,14,1,2532, +676,17,677,15,678, +4,14,37,0,83, +0,116,0,97,0, +116,0,101,0,115, +0,1,-1,1,5, +679,20,680,4,16, +83,0,116,0,97, +0,116,0,101,0, +115,0,95,0,50, +0,1,152,1,3, +1,3,1,2,681, +22,1,12,1,2599, +682,17,683,15,684, +4,30,37,0,76, +0,83,0,76,0, +80,0,114,0,111, +0,103,0,114,0, +97,0,109,0,82, +0,111,0,111,0, +116,0,1,-1,1, +5,685,20,686,4, +32,76,0,83,0, +76,0,80,0,114, +0,111,0,103,0, +114,0,97,0,109, +0,82,0,111,0, +111,0,116,0,95, +0,49,0,1,141, +1,3,1,3,1, +2,687,22,1,1, +1,2533,688,17,689, +15,678,1,-1,1, +5,690,20,691,4, +16,83,0,116,0, +97,0,116,0,101, +0,115,0,95,0, +49,0,1,151,1, +3,1,2,1,1, +692,22,1,11,1, +2527,693,17,694,15, +672,1,-1,1,5, +695,20,696,4,14, +83,0,116,0,97, +0,116,0,101,0, +95,0,49,0,1, +153,1,3,1,5, +1,4,697,22,1, +13,1,2529,698,17, +699,15,684,1,-1, +1,5,700,20,701, +4,32,76,0,83, +0,76,0,80,0, +114,0,111,0,103, +0,114,0,97,0, +109,0,82,0,111, +0,111,0,116,0, +95,0,50,0,1, +142,1,3,1,2, +1,1,702,22,1, +2,1,3,703,19, +618,1,3,704,5, +91,1,256,705,16, +0,616,1,1261,706, +16,0,616,1,509, +707,16,0,616,1, +1515,708,16,0,616, +1,2021,709,17,710, +15,711,4,24,37, +0,73,0,102,0, +83,0,116,0,97, +0,116,0,101,0, +109,0,101,0,110, +0,116,0,1,-1, +1,5,712,20,713, +4,26,73,0,102, +0,83,0,116,0, +97,0,116,0,101, +0,109,0,101,0, +110,0,116,0,95, +0,50,0,1,184, +1,3,1,8,1, +7,714,22,1,45, +1,1775,715,16,0, +616,1,2029,716,17, +717,15,718,4,20, +37,0,83,0,116, +0,97,0,116,0, +101,0,109,0,101, +0,110,0,116,0, +1,-1,1,5,719, +20,720,4,24,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,95,0,49, +0,51,0,1,178, +1,3,1,2,1, +1,721,22,1,39, +1,2030,722,17,723, +15,718,1,-1,1, +5,724,20,725,4, +24,83,0,116,0, +97,0,116,0,101, +0,109,0,101,0, +110,0,116,0,95, +0,49,0,50,0, +1,177,1,3,1, +2,1,1,726,22, +1,38,1,2031,727, +17,728,15,718,1, +-1,1,5,729,20, +730,4,24,83,0, +116,0,97,0,116, +0,101,0,109,0, +101,0,110,0,116, +0,95,0,49,0, +49,0,1,176,1, +3,1,2,1,1, +731,22,1,37,1, +2032,732,17,733,15, +718,1,-1,1,5, +734,20,735,4,24, +83,0,116,0,97, +0,116,0,101,0, +109,0,101,0,110, +0,116,0,95,0, +49,0,48,0,1, +175,1,3,1,2, +1,1,736,22,1, +36,1,2033,737,17, +738,15,718,1,-1, +1,5,739,20,740, +4,22,83,0,116, +0,97,0,116,0, +101,0,109,0,101, +0,110,0,116,0, +95,0,57,0,1, +174,1,3,1,2, +1,1,741,22,1, +35,1,277,742,16, +0,616,1,2035,743, +17,744,15,718,1, +-1,1,5,745,20, +746,4,22,83,0, +116,0,97,0,116, +0,101,0,109,0, +101,0,110,0,116, +0,95,0,56,0, +1,173,1,3,1, +3,1,2,747,22, +1,34,1,2037,748, +17,749,15,718,1, +-1,1,5,750,20, +751,4,22,83,0, +116,0,97,0,116, +0,101,0,109,0, +101,0,110,0,116, +0,95,0,55,0, +1,172,1,3,1, +3,1,2,752,22, +1,33,1,2039,753, +17,754,15,718,1, +-1,1,5,755,20, +756,4,22,83,0, +116,0,97,0,116, +0,101,0,109,0, +101,0,110,0,116, +0,95,0,54,0, +1,171,1,3,1, +3,1,2,757,22, +1,32,1,32,758, +16,0,616,1,2041, +759,17,760,15,718, +1,-1,1,5,761, +20,762,4,22,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,95,0,53, +0,1,170,1,3, +1,3,1,2,763, +22,1,31,1,2043, +764,17,765,15,718, +1,-1,1,5,766, +20,767,4,22,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,95,0,51, +0,1,168,1,3, +1,3,1,2,768, +22,1,29,1,2045, +769,17,770,15,718, +1,-1,1,5,771, +20,772,4,22,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,95,0,49, +0,1,166,1,3, +1,3,1,2,773, +22,1,27,1,41, +774,16,0,616,1, +1297,775,16,0,616, +1,43,776,16,0, +616,1,1802,777,17, +778,15,779,4,16, +37,0,70,0,111, +0,114,0,76,0, +111,0,111,0,112, +0,1,-1,1,5, +780,20,781,4,18, +70,0,111,0,114, +0,76,0,111,0, +111,0,112,0,95, +0,49,0,1,191, +1,3,1,10,1, +9,782,22,1,52, +1,1804,783,16,0, +616,1,299,784,16, +0,616,1,2310,785, +16,0,616,1,52, +786,16,0,616,1, +525,787,16,0,616, +1,62,788,16,0, +616,1,2075,789,16, +0,616,1,1574,790, +17,791,15,718,1, +-1,1,5,792,20, +793,4,22,83,0, +116,0,97,0,116, +0,101,0,109,0, +101,0,110,0,116, +0,95,0,52,0, +1,169,1,3,1, +3,1,2,794,22, +1,30,1,71,795, +16,0,616,1,76, +796,16,0,616,1, +1834,797,16,0,616, +1,79,798,16,0, +616,1,1335,799,16, +0,616,1,322,800, +16,0,616,1,85, +801,16,0,616,1, +89,802,16,0,616, +1,346,803,16,0, +616,1,2355,804,17, +805,15,806,4,28, +37,0,83,0,116, +0,97,0,116,0, +101,0,109,0,101, +0,110,0,116,0, +76,0,105,0,115, +0,116,0,1,-1, +1,5,807,20,808, +4,30,83,0,116, +0,97,0,116,0, +101,0,109,0,101, +0,110,0,116,0, +76,0,105,0,115, +0,116,0,95,0, +50,0,1,164,1, +3,1,3,1,2, +809,22,1,25,1, +2105,810,17,811,15, +711,1,-1,1,5, +812,20,813,4,26, +73,0,102,0,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,95,0,51, +0,1,185,1,3, +1,6,1,5,814, +22,1,46,1,2106, +815,16,0,616,1, +2359,816,17,817,15, +806,1,-1,1,5, +818,20,819,4,30, +83,0,116,0,97, +0,116,0,101,0, +109,0,101,0,110, +0,116,0,76,0, +105,0,115,0,116, +0,95,0,49,0, +1,163,1,3,1, +2,1,1,820,22, +1,24,1,2361,821, +17,822,15,823,4, +36,37,0,67,0, +111,0,109,0,112, +0,111,0,117,0, +110,0,100,0,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,1,-1,1, +5,824,20,825,4, +38,67,0,111,0, +109,0,112,0,111, +0,117,0,110,0, +100,0,83,0,116, +0,97,0,116,0, +101,0,109,0,101, +0,110,0,116,0, +95,0,49,0,1, +161,1,3,1,3, +1,2,826,22,1, +22,1,1860,827,17, +828,15,829,4,34, +37,0,68,0,111, +0,87,0,104,0, +105,0,108,0,101, +0,83,0,116,0, +97,0,116,0,101, +0,109,0,101,0, +110,0,116,0,1, +-1,1,5,830,20, +831,4,36,68,0, +111,0,87,0,104, +0,105,0,108,0, +101,0,83,0,116, +0,97,0,116,0, +101,0,109,0,101, +0,110,0,116,0, +95,0,49,0,1, +189,1,3,1,8, +1,7,832,22,1, +50,1,97,833,16, +0,616,1,112,834, +16,0,616,1,1117, +835,16,0,616,1, +1873,836,17,837,15, +829,1,-1,1,5, +838,20,839,4,36, +68,0,111,0,87, +0,104,0,105,0, +108,0,101,0,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,95,0,50, +0,1,190,1,3, +1,8,1,7,840, +22,1,51,1,102, +841,16,0,616,1, +1876,842,16,0,616, +1,2551,843,16,0, +616,1,124,844,16, +0,616,1,2136,845, +17,846,15,711,1, +-1,1,5,847,20, +848,4,26,73,0, +102,0,83,0,116, +0,97,0,116,0, +101,0,109,0,101, +0,110,0,116,0, +95,0,52,0,1, +186,1,3,1,8, +1,7,849,22,1, +47,1,381,850,16, +0,616,1,137,851, +16,0,616,1,1901, +852,16,0,616,1, +1153,853,16,0,616, +1,151,854,16,0, +616,1,1407,855,16, +0,616,1,1659,856, +16,0,616,1,406, +857,16,0,616,1, +1371,858,16,0,616, +1,166,859,16,0, +616,1,1622,860,16, +0,616,1,2356,861, +17,862,15,823,1, +-1,1,5,863,20, +864,4,38,67,0, +111,0,109,0,112, +0,111,0,117,0, +110,0,100,0,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,95,0,50, +0,1,162,1,3, +1,4,1,3,865, +22,1,23,1,1931, +866,17,867,15,868, +4,30,37,0,87, +0,104,0,105,0, +108,0,101,0,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,1,-1,1, +5,869,20,870,4, +32,87,0,104,0, +105,0,108,0,101, +0,83,0,116,0, +97,0,116,0,101, +0,109,0,101,0, +110,0,116,0,95, +0,49,0,1,187, +1,3,1,6,1, +5,871,22,1,48, +1,1933,872,16,0, +616,1,431,873,16, +0,616,1,1585,874, +16,0,616,1,182, +875,16,0,616,1, +1189,876,16,0,616, +1,1443,877,16,0, +616,1,1695,878,16, +0,616,1,2198,879, +16,0,616,1,447, +880,16,0,616,1, +199,881,16,0,616, +1,1958,882,16,0, +616,1,1657,883,17, +884,15,718,1,-1, +1,5,885,20,886, +4,22,83,0,116, +0,97,0,116,0, +101,0,109,0,101, +0,110,0,116,0, +95,0,50,0,1, +167,1,3,1,3, +1,2,887,22,1, +28,1,459,888,16, +0,616,1,462,889, +16,0,616,1,217, +890,16,0,616,1, +2227,891,17,892,15, +868,1,-1,1,5, +893,20,894,4,32, +87,0,104,0,105, +0,108,0,101,0, +83,0,116,0,97, +0,116,0,101,0, +109,0,101,0,110, +0,116,0,95,0, +50,0,1,188,1, +3,1,6,1,5, +895,22,1,49,1, +1225,896,16,0,616, +1,1479,897,16,0, +616,1,1731,898,16, +0,616,1,1989,899, +17,900,15,711,1, +-1,1,5,901,20, +902,4,26,73,0, +102,0,83,0,116, +0,97,0,116,0, +101,0,109,0,101, +0,110,0,116,0, +95,0,49,0,1, +183,1,3,1,6, +1,5,903,22,1, +44,1,1990,904,16, +0,616,1,236,905, +16,0,616,1,1756, +906,16,0,616,1, +4,907,19,184,1, +4,908,5,96,1, +256,909,16,0,536, +1,1261,910,16,0, +536,1,509,911,16, +0,536,1,1515,912, +16,0,536,1,2021, +709,1,1775,913,16, +0,536,1,2029,716, +1,2030,722,1,2031, +727,1,2032,732,1, +2033,737,1,277,914, +16,0,536,1,2035, +743,1,2037,748,1, +2039,753,1,32,915, +16,0,536,1,2041, +759,1,2043,764,1, +2045,769,1,40,916, +16,0,186,1,2551, +917,16,0,536,1, +1297,918,16,0,536, +1,43,919,16,0, +536,1,41,920,16, +0,536,1,1802,777, +1,1804,921,16,0, +536,1,299,922,16, +0,536,1,44,923, +16,0,186,1,2310, +924,16,0,536,1, +52,925,16,0,536, +1,47,926,16,0, +182,1,525,927,16, +0,536,1,63,928, +16,0,201,1,66, +929,16,0,199,1, +2075,930,16,0,536, +1,1574,790,1,71, +931,16,0,536,1, +76,932,16,0,536, +1,1834,933,16,0, +536,1,79,934,16, +0,536,1,1335,935, +16,0,536,1,322, +936,16,0,536,1, +85,937,16,0,536, +1,89,938,16,0, +536,1,346,939,16, +0,536,1,2355,804, +1,2105,810,1,2106, +940,16,0,536,1, +2359,816,1,2361,821, +1,1860,827,1,97, +941,16,0,536,1, +1114,942,16,0,182, +1,112,943,16,0, +536,1,1117,944,16, +0,536,1,1873,836, +1,102,945,16,0, +536,1,1876,946,16, +0,536,1,124,947, +16,0,536,1,2136, +845,1,381,948,16, +0,536,1,137,949, +16,0,536,1,1901, +950,16,0,536,1, +1153,951,16,0,536, +1,151,952,16,0, +536,1,1407,953,16, +0,536,1,1659,954, +16,0,536,1,406, +955,16,0,536,1, +1371,956,16,0,536, +1,166,957,16,0, +536,1,1622,958,16, +0,536,1,2356,861, +1,1931,866,1,1933, +959,16,0,536,1, +431,960,16,0,536, +1,1585,961,16,0, +536,1,182,962,16, +0,536,1,1189,963, +16,0,536,1,1443, +964,16,0,536,1, +1695,965,16,0,536, +1,2198,966,16,0, +536,1,447,967,16, +0,536,1,199,968, +16,0,536,1,1958, +969,16,0,536,1, +1657,883,1,459,970, +16,0,536,1,462, +971,16,0,536,1, +217,972,16,0,536, +1,2227,891,1,1225, +973,16,0,536,1, +1479,974,16,0,536, +1,1731,975,16,0, +536,1,1989,899,1, +1990,976,16,0,536, +1,236,977,16,0, +536,1,1756,978,16, +0,536,1,5,979, +19,181,1,5,980, +5,96,1,256,981, +16,0,532,1,1261, +982,16,0,532,1, +509,983,16,0,532, +1,1515,984,16,0, +532,1,2021,709,1, +1775,985,16,0,532, +1,2029,716,1,2030, +722,1,2031,727,1, +2032,732,1,2033,737, +1,277,986,16,0, +532,1,2035,743,1, +2037,748,1,2039,753, +1,32,987,16,0, +532,1,2041,759,1, +2043,764,1,2045,769, +1,40,988,16,0, +185,1,2551,989,16, +0,532,1,1297,990, +16,0,532,1,43, +991,16,0,532,1, +41,992,16,0,532, +1,1802,777,1,1804, +993,16,0,532,1, +299,994,16,0,532, +1,44,995,16,0, +185,1,2310,996,16, +0,532,1,52,997, +16,0,532,1,47, +998,16,0,179,1, +525,999,16,0,532, +1,63,1000,16,0, +200,1,66,1001,16, +0,198,1,2075,1002, +16,0,532,1,1574, +790,1,71,1003,16, +0,532,1,76,1004, +16,0,532,1,1834, +1005,16,0,532,1, +79,1006,16,0,532, +1,1335,1007,16,0, +532,1,322,1008,16, +0,532,1,85,1009, +16,0,532,1,89, +1010,16,0,532,1, +346,1011,16,0,532, +1,2355,804,1,2105, +810,1,2106,1012,16, +0,532,1,2359,816, +1,2361,821,1,1860, +827,1,97,1013,16, +0,532,1,1114,1014, +16,0,179,1,112, +1015,16,0,532,1, +1117,1016,16,0,532, +1,1873,836,1,102, +1017,16,0,532,1, +1876,1018,16,0,532, +1,124,1019,16,0, +532,1,2136,845,1, +381,1020,16,0,532, +1,137,1021,16,0, +532,1,1901,1022,16, +0,532,1,1153,1023, +16,0,532,1,151, +1024,16,0,532,1, +1407,1025,16,0,532, +1,1659,1026,16,0, +532,1,406,1027,16, +0,532,1,1371,1028, +16,0,532,1,166, +1029,16,0,532,1, +1622,1030,16,0,532, +1,2356,861,1,1931, +866,1,1933,1031,16, +0,532,1,431,1032, +16,0,532,1,1585, +1033,16,0,532,1, +182,1034,16,0,532, +1,1189,1035,16,0, +532,1,1443,1036,16, +0,532,1,1695,1037, +16,0,532,1,2198, +1038,16,0,532,1, +447,1039,16,0,532, +1,199,1040,16,0, +532,1,1958,1041,16, +0,532,1,1657,883, +1,459,1042,16,0, +532,1,462,1043,16, +0,532,1,217,1044, +16,0,532,1,2227, +891,1,1225,1045,16, +0,532,1,1479,1046, +16,0,532,1,1731, +1047,16,0,532,1, +1989,899,1,1990,1048, +16,0,532,1,236, +1049,16,0,532,1, +1756,1050,16,0,532, +1,6,1051,19,284, +1,6,1052,5,2, +1,1114,1053,16,0, +282,1,40,1054,16, +0,521,1,7,1055, +19,238,1,7,1056, +5,2,1,1114,1057, +16,0,236,1,40, +1058,16,0,481,1, +8,1059,19,207,1, +8,1060,5,2,1, +1114,1061,16,0,205, +1,40,1062,16,0, +451,1,9,1063,19, +213,1,9,1064,5, +2,1,1114,1065,16, +0,211,1,40,1066, +16,0,432,1,10, +1067,19,164,1,10, +1068,5,2,1,1114, +1069,16,0,162,1, +40,1070,16,0,384, +1,11,1071,19,192, +1,11,1072,5,142, +1,1260,1073,17,1074, +15,1075,4,34,37, +0,83,0,105,0, +109,0,112,0,108, +0,101,0,65,0, +115,0,115,0,105, +0,103,0,110,0, +109,0,101,0,110, +0,116,0,1,-1, +1,5,1076,20,1077, +4,38,83,0,105, +0,109,0,112,0, +108,0,101,0,65, +0,115,0,115,0, +105,0,103,0,110, +0,109,0,101,0, +110,0,116,0,95, +0,50,0,49,0, +1,218,1,3,1, +6,1,5,1078,22, +1,79,1,1011,1079, +17,1080,15,1081,4, +44,37,0,80,0, +97,0,114,0,101, +0,110,0,116,0, +104,0,101,0,115, +0,105,0,115,0, +69,0,120,0,112, +0,114,0,101,0, +115,0,115,0,105, +0,111,0,110,0, +1,-1,1,5,1082, +20,1083,4,46,80, +0,97,0,114,0, +101,0,110,0,116, +0,104,0,101,0, +115,0,105,0,115, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,95,0,50,0, +1,265,1,3,1, +4,1,3,1084,22, +1,126,1,1514,1085, +17,1086,15,1075,1, +-1,1,5,1087,20, +1088,4,38,83,0, +105,0,109,0,112, +0,108,0,101,0, +65,0,115,0,115, +0,105,0,103,0, +110,0,109,0,101, +0,110,0,116,0, +95,0,49,0,52, +0,1,211,1,3, +1,4,1,3,1089, +22,1,72,1,9, +1090,17,1091,15,1092, +4,24,37,0,68, +0,101,0,99,0, +108,0,97,0,114, +0,97,0,116,0, +105,0,111,0,110, +0,1,-1,1,5, +1093,20,1094,4,26, +68,0,101,0,99, +0,108,0,97,0, +114,0,97,0,116, +0,105,0,111,0, +110,0,95,0,49, +0,1,160,1,3, +1,3,1,2,1095, +22,1,21,1,262, +1096,17,1097,15,1098, +4,34,37,0,66, +0,105,0,110,0, +97,0,114,0,121, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,1,-1,1,5, +1099,20,1100,4,36, +66,0,105,0,110, +0,97,0,114,0, +121,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,95,0,53, +0,1,247,1,3, +1,4,1,3,1101, +22,1,108,1,1267, +1102,17,1103,15,1075, +1,-1,1,5,1104, +20,1105,4,36,83, +0,105,0,109,0, +112,0,108,0,101, +0,65,0,115,0, +115,0,105,0,103, +0,110,0,109,0, +101,0,110,0,116, +0,95,0,56,0, +1,205,1,3,1, +6,1,5,1106,22, +1,66,1,2021,709, +1,1521,1107,17,1108, +15,1075,1,-1,1, +5,1109,20,1110,4, +36,83,0,105,0, +109,0,112,0,108, +0,101,0,65,0, +115,0,115,0,105, +0,103,0,110,0, +109,0,101,0,110, +0,116,0,95,0, +49,0,1,198,1, +3,1,4,1,3, +1111,22,1,59,1, +2024,1112,17,1113,15, +1114,4,24,37,0, +83,0,116,0,97, +0,116,0,101,0, +67,0,104,0,97, +0,110,0,103,0, +101,0,1,-1,1, +5,1115,20,1116,4, +26,83,0,116,0, +97,0,116,0,101, +0,67,0,104,0, +97,0,110,0,103, +0,101,0,95,0, +49,0,1,181,1, +3,1,3,1,2, +1117,22,1,42,1, +1775,1118,17,1119,15, +1120,4,30,37,0, +69,0,109,0,112, +0,116,0,121,0, +83,0,116,0,97, +0,116,0,101,0, +109,0,101,0,110, +0,116,0,1,-1, +1,5,1121,20,1122, +4,32,69,0,109, +0,112,0,116,0, +121,0,83,0,116, +0,97,0,116,0, +101,0,109,0,101, +0,110,0,116,0, +95,0,49,0,1, +165,1,3,1,1, +1,0,1123,22,1, +26,1,19,1124,17, +1091,1,2,1095,1, +2028,1125,17,1126,15, +1127,4,20,37,0, +74,0,117,0,109, +0,112,0,76,0, +97,0,98,0,101, +0,108,0,1,-1, +1,5,1128,20,1129, +4,22,74,0,117, +0,109,0,112,0, +76,0,97,0,98, +0,101,0,108,0, +95,0,49,0,1, +179,1,3,1,3, +1,2,1130,22,1, +40,1,2029,716,1, +2281,1131,17,1132,15, +1133,4,34,37,0, +70,0,111,0,114, +0,76,0,111,0, +111,0,112,0,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,1,-1,1, +5,1134,20,1135,4, +36,70,0,111,0, +114,0,76,0,111, +0,111,0,112,0, +83,0,116,0,97, +0,116,0,101,0, +109,0,101,0,110, +0,116,0,95,0, +50,0,1,193,1, +3,1,2,1,1, +1136,22,1,54,1, +2031,727,1,2032,732, +1,2033,737,1,2034, +1137,16,0,570,1, +2035,743,1,2036,1138, +16,0,522,1,2037, +748,1,2038,1139,16, +0,526,1,2039,753, +1,32,1140,17,1119, +1,0,1123,1,2041, +759,1,2042,1141,16, +0,640,1,2043,764, +1,2044,1142,16,0, +582,1,2045,769,1, +40,1143,17,1144,15, +1145,4,32,37,0, +73,0,100,0,101, +0,110,0,116,0, +69,0,120,0,112, +0,114,0,101,0, +115,0,115,0,105, +0,111,0,110,0, +1,-1,1,5,1146, +20,1147,4,34,73, +0,100,0,101,0, +110,0,116,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,49,0,1,232, +1,3,1,2,1, +1,1148,22,1,93, +1,1296,1149,17,1150, +15,1075,1,-1,1, +5,1151,20,1152,4, +38,83,0,105,0, +109,0,112,0,108, +0,101,0,65,0, +115,0,115,0,105, +0,103,0,110,0, +109,0,101,0,110, +0,116,0,95,0, +50,0,48,0,1, +217,1,3,1,6, +1,5,1153,22,1, +78,1,283,1154,17, +1155,15,1098,1,-1, +1,5,1156,20,1157, +4,36,66,0,105, +0,110,0,97,0, +114,0,121,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,52,0,1,246, +1,3,1,4,1, +3,1158,22,1,107, +1,44,1159,17,1144, +1,1,1148,1,1802, +777,1,47,1160,17, +1161,15,1162,4,38, +37,0,73,0,100, +0,101,0,110,0, +116,0,68,0,111, +0,116,0,69,0, +120,0,112,0,114, +0,101,0,115,0, +115,0,105,0,111, +0,110,0,1,-1, +1,5,1163,20,1164, +4,40,73,0,100, +0,101,0,110,0, +116,0,68,0,111, +0,116,0,69,0, +120,0,112,0,114, +0,101,0,115,0, +115,0,105,0,111, +0,110,0,95,0, +49,0,1,233,1, +3,1,4,1,3, +1165,22,1,94,1, +48,1166,17,1167,15, +1168,4,58,37,0, +73,0,110,0,99, +0,114,0,101,0, +109,0,101,0,110, +0,116,0,68,0, +101,0,99,0,114, +0,101,0,109,0, +101,0,110,0,116, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,1,-1,1,5, +1169,20,1170,4,60, +73,0,110,0,99, +0,114,0,101,0, +109,0,101,0,110, +0,116,0,68,0, +101,0,99,0,114, +0,101,0,109,0, +101,0,110,0,116, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,95,0,52,0, +1,237,1,3,1, +5,1,4,1171,22, +1,98,1,49,1172, +17,1173,15,1168,1, +-1,1,5,1174,20, +1175,4,60,73,0, +110,0,99,0,114, +0,101,0,109,0, +101,0,110,0,116, +0,68,0,101,0, +99,0,114,0,101, +0,109,0,101,0, +110,0,116,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,51,0,1,236, +1,3,1,5,1, +4,1176,22,1,97, +1,50,1177,17,1178, +15,1168,1,-1,1, +5,1179,20,1180,4, +60,73,0,110,0, +99,0,114,0,101, +0,109,0,101,0, +110,0,116,0,68, +0,101,0,99,0, +114,0,101,0,109, +0,101,0,110,0, +116,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,95,0,50, +0,1,235,1,3, +1,3,1,2,1181, +22,1,96,1,51, +1182,17,1183,15,1168, +1,-1,1,5,1184, +20,1185,4,60,73, +0,110,0,99,0, +114,0,101,0,109, +0,101,0,110,0, +116,0,68,0,101, +0,99,0,114,0, +101,0,109,0,101, +0,110,0,116,0, +69,0,120,0,112, +0,114,0,101,0, +115,0,115,0,105, +0,111,0,110,0, +95,0,49,0,1, +234,1,3,1,3, +1,2,1186,22,1, +95,1,305,1187,17, +1188,15,1098,1,-1, +1,5,1189,20,1190, +4,36,66,0,105, +0,110,0,97,0, +114,0,121,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,51,0,1,245, +1,3,1,4,1, +3,1191,22,1,106, +1,525,1192,17,1193, +15,1194,4,34,37, +0,82,0,111,0, +116,0,97,0,116, +0,105,0,111,0, +110,0,67,0,111, +0,110,0,115,0, +116,0,97,0,110, +0,116,0,1,-1, +1,5,1195,20,1196, +4,36,82,0,111, +0,116,0,97,0, +116,0,105,0,111, +0,110,0,67,0, +111,0,110,0,115, +0,116,0,97,0, +110,0,116,0,95, +0,49,0,1,230, +1,3,1,10,1, +9,1197,22,1,91, +1,63,1198,17,1199, +15,1200,4,38,37, +0,84,0,121,0, +112,0,101,0,99, +0,97,0,115,0, +116,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,1,-1,1, +5,1201,20,1202,4, +40,84,0,121,0, +112,0,101,0,99, +0,97,0,115,0, +116,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,95,0,50, +0,1,267,1,3, +1,5,1,4,1203, +22,1,128,1,66, +1204,17,1205,15,1200, +1,-1,1,5,1206, +20,1207,4,40,84, +0,121,0,112,0, +101,0,99,0,97, +0,115,0,116,0, +69,0,120,0,112, +0,114,0,101,0, +115,0,115,0,105, +0,111,0,110,0, +95,0,51,0,1, +268,1,3,1,7, +1,6,1208,22,1, +129,1,67,1209,17, +1210,15,1200,1,-1, +1,5,1211,20,1212, +4,40,84,0,121, +0,112,0,101,0, +99,0,97,0,115, +0,116,0,69,0, +120,0,112,0,114, +0,101,0,115,0, +115,0,105,0,111, +0,110,0,95,0, +55,0,1,272,1, +3,1,8,1,7, +1213,22,1,133,1, +68,1214,17,1215,15, +1200,1,-1,1,5, +1216,20,1217,4,40, +84,0,121,0,112, +0,101,0,99,0, +97,0,115,0,116, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,95,0,53,0, +1,270,1,3,1, +8,1,7,1218,22, +1,131,1,69,1219, +17,1220,15,1200,1, +-1,1,5,1221,20, +1222,4,40,84,0, +121,0,112,0,101, +0,99,0,97,0, +115,0,116,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,54,0,1,271, +1,3,1,6,1, +5,1223,22,1,132, +1,70,1224,17,1225, +15,1200,1,-1,1, +5,1226,20,1227,4, +40,84,0,121,0, +112,0,101,0,99, +0,97,0,115,0, +116,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,95,0,52, +0,1,269,1,3, +1,6,1,5,1228, +22,1,130,1,74, +1229,17,1230,15,1200, +1,-1,1,5,1231, +20,1232,4,40,84, +0,121,0,112,0, +101,0,99,0,97, +0,115,0,116,0, +69,0,120,0,112, +0,114,0,101,0, +115,0,115,0,105, +0,111,0,110,0, +95,0,57,0,1, +274,1,3,1,7, +1,6,1233,22,1, +135,1,1013,1234,17, +1235,15,1081,1,-1, +1,5,1236,20,1237, +4,46,80,0,97, +0,114,0,101,0, +110,0,116,0,104, +0,101,0,115,0, +105,0,115,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,49,0,1,264, +1,3,1,4,1, +3,1238,22,1,125, +1,1332,1239,17,1240, +15,1075,1,-1,1, +5,1241,20,1242,4, +38,83,0,105,0, +109,0,112,0,108, +0,101,0,65,0, +115,0,115,0,105, +0,103,0,110,0, +109,0,101,0,110, +0,116,0,95,0, +49,0,57,0,1, +216,1,3,1,6, +1,5,1243,22,1, +77,1,1048,1244,17, +1245,15,1098,1,-1, +1,5,1246,20,1247, +4,38,66,0,105, +0,110,0,97,0, +114,0,121,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,49,0,56,0, +1,260,1,3,1, +4,1,3,1248,22, +1,121,1,1585,1249, +17,1250,15,1251,4, +32,37,0,82,0, +101,0,116,0,117, +0,114,0,110,0, +83,0,116,0,97, +0,116,0,101,0, +109,0,101,0,110, +0,116,0,1,-1, +1,5,1252,20,1253, +4,34,82,0,101, +0,116,0,117,0, +114,0,110,0,83, +0,116,0,97,0, +116,0,101,0,109, +0,101,0,110,0, +116,0,95,0,50, +0,1,223,1,3, +1,2,1,1,1254, +22,1,84,1,2023, +1255,17,1256,15,1114, +1,-1,1,5,1257, +20,1258,4,26,83, +0,116,0,97,0, +116,0,101,0,67, +0,104,0,97,0, +110,0,103,0,101, +0,95,0,50,0, +1,182,1,3,1, +3,1,2,1259,22, +1,43,1,2136,845, +1,82,1260,17,1261, +15,1262,4,32,37, +0,85,0,110,0, +97,0,114,0,121, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,1,-1,1,5, +1263,20,1264,4,34, +85,0,110,0,97, +0,114,0,121,0, +69,0,120,0,112, +0,114,0,101,0, +115,0,115,0,105, +0,111,0,110,0, +95,0,51,0,1, +263,1,3,1,3, +1,2,1265,22,1, +124,1,2026,1266,17, +1267,15,1268,4,28, +37,0,74,0,117, +0,109,0,112,0, +83,0,116,0,97, +0,116,0,101,0, +109,0,101,0,110, +0,116,0,1,-1, +1,5,1269,20,1270, +4,30,74,0,117, +0,109,0,112,0, +83,0,116,0,97, +0,116,0,101,0, +109,0,101,0,110, +0,116,0,95,0, +49,0,1,180,1, +3,1,3,1,2, +1271,22,1,41,1, +1591,1272,17,1273,15, +1251,1,-1,1,5, +1274,20,1275,4,34, +82,0,101,0,116, +0,117,0,114,0, +110,0,83,0,116, +0,97,0,116,0, +101,0,109,0,101, +0,110,0,116,0, +95,0,49,0,1, +222,1,3,1,3, +1,2,1276,22,1, +83,1,1341,1277,17, +1278,15,1075,1,-1, +1,5,1279,20,1280, +4,36,83,0,105, +0,109,0,112,0, +108,0,101,0,65, +0,115,0,115,0, +105,0,103,0,110, +0,109,0,101,0, +110,0,116,0,95, +0,54,0,1,203, +1,3,1,4,1, +3,1281,22,1,64, +1,2030,722,1,328, +1282,17,1283,15,1098, +1,-1,1,5,1284, +20,1285,4,36,66, +0,105,0,110,0, +97,0,114,0,121, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,95,0,50,0, +1,244,1,3,1, +4,1,3,1286,22, +1,105,1,1303,1287, +17,1288,15,1075,1, +-1,1,5,1289,20, +1290,4,36,83,0, +105,0,109,0,112, +0,108,0,101,0, +65,0,115,0,115, +0,105,0,103,0, +110,0,109,0,101, +0,110,0,116,0, +95,0,55,0,1, +204,1,3,1,6, +1,5,1291,22,1, +65,1,1096,1292,17, +1293,15,1294,4,26, +37,0,70,0,117, +0,110,0,99,0, +116,0,105,0,111, +0,110,0,67,0, +97,0,108,0,108, +0,1,-1,1,5, +1295,20,1296,4,28, +70,0,117,0,110, +0,99,0,116,0, +105,0,111,0,110, +0,67,0,97,0, +108,0,108,0,95, +0,49,0,1,275, +1,3,1,5,1, +4,1297,22,1,136, +1,93,1298,17,1299, +15,1262,1,-1,1, +5,1300,20,1301,4, +34,85,0,110,0, +97,0,114,0,121, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,95,0,50,0, +1,262,1,3,1, +3,1,2,1302,22, +1,123,1,1550,1303, +17,1304,15,1075,1, +-1,1,5,1305,20, +1306,4,38,83,0, +105,0,109,0,112, +0,108,0,101,0, +65,0,115,0,115, +0,105,0,103,0, +110,0,109,0,101, +0,110,0,116,0, +95,0,49,0,51, +0,1,210,1,3, +1,4,1,3,1307, +22,1,71,1,2355, +804,1,2356,861,1, +2106,1308,17,1119,1, +0,1123,1,1555,1309, +16,0,600,1,2359, +816,1,352,1310,17, +1311,15,1098,1,-1, +1,5,1312,20,1313, +4,36,66,0,105, +0,110,0,97,0, +114,0,121,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,49,0,1,243, +1,3,1,4,1, +3,1314,22,1,104, +1,1859,1315,16,0, +357,1,1860,827,1, +1804,1316,17,1119,1, +0,1123,1,107,1317, +17,1318,15,1262,1, +-1,1,5,1319,20, +1320,4,34,85,0, +110,0,97,0,114, +0,121,0,69,0, +120,0,112,0,114, +0,101,0,115,0, +115,0,105,0,111, +0,110,0,95,0, +49,0,1,261,1, +3,1,3,1,2, +1321,22,1,122,1, +1114,1322,17,1161,1, +3,1165,1,2105,810, +1,1872,1323,16,0, +367,1,1873,836,1, +118,1324,17,1325,15, +1098,1,-1,1,5, +1326,20,1327,4,38, +66,0,105,0,110, +0,97,0,114,0, +121,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,95,0,49, +0,52,0,1,256, +1,3,1,4,1, +3,1328,22,1,117, +1,1123,1329,17,1330, +15,1075,1,-1,1, +5,1331,20,1332,4, +38,83,0,105,0, +109,0,112,0,108, +0,101,0,65,0, +115,0,115,0,105, +0,103,0,110,0, +109,0,101,0,110, +0,116,0,95,0, +49,0,50,0,1, +209,1,3,1,6, +1,5,1333,22,1, +70,1,371,1334,17, +1335,15,1336,4,46, +37,0,70,0,117, +0,110,0,99,0, +116,0,105,0,111, +0,110,0,67,0, +97,0,108,0,108, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,1,-1,1,5, +1337,20,1338,4,48, +70,0,117,0,110, +0,99,0,116,0, +105,0,111,0,110, +0,67,0,97,0, +108,0,108,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,49,0,1,242, +1,3,1,2,1, +1,1339,22,1,103, +1,2550,1340,16,0, +651,1,1377,1341,17, +1342,15,1075,1,-1, +1,5,1343,20,1344, +4,36,83,0,105, +0,109,0,112,0, +108,0,101,0,65, +0,115,0,115,0, +105,0,103,0,110, +0,109,0,101,0, +110,0,116,0,95, +0,53,0,1,202, +1,3,1,4,1, +3,1345,22,1,63, +1,375,1346,17,1347, +15,1168,1,-1,1, +5,1348,20,1349,4, +60,73,0,110,0, +99,0,114,0,101, +0,109,0,101,0, +110,0,116,0,68, +0,101,0,99,0, +114,0,101,0,109, +0,101,0,110,0, +116,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,95,0,56, +0,1,241,1,3, +1,5,1,4,1350, +22,1,102,1,2310, +1351,17,1119,1,0, +1123,1,377,1352,17, +1353,15,1168,1,-1, +1,5,1354,20,1355, +4,60,73,0,110, +0,99,0,114,0, +101,0,109,0,101, +0,110,0,116,0, +68,0,101,0,99, +0,114,0,101,0, +109,0,101,0,110, +0,116,0,69,0, +120,0,112,0,114, +0,101,0,115,0, +115,0,105,0,111, +0,110,0,95,0, +53,0,1,238,1, +3,1,3,1,2, +1356,22,1,99,1, +827,1357,17,1358,15, +1098,1,-1,1,5, +1359,20,1360,4,38, +66,0,105,0,110, +0,97,0,114,0, +121,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,95,0,49, +0,53,0,1,257, +1,3,1,4,1, +3,1361,22,1,118, +1,380,1362,17,1363, +15,1364,4,38,37, +0,67,0,111,0, +110,0,115,0,116, +0,97,0,110,0, +116,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,1,-1,1, +5,1365,20,1366,4, +40,67,0,111,0, +110,0,115,0,116, +0,97,0,110,0, +116,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,95,0,49, +0,1,231,1,3, +1,2,1,1,1367, +22,1,92,1,883, +1368,17,1369,15,1098, +1,-1,1,5,1370, +20,1371,4,38,66, +0,105,0,110,0, +97,0,114,0,121, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,95,0,49,0, +54,0,1,258,1, +3,1,4,1,3, +1372,22,1,119,1, +1628,1373,17,1374,15, +1375,4,22,37,0, +65,0,115,0,115, +0,105,0,103,0, +110,0,109,0,101, +0,110,0,116,0, +1,-1,1,5,1376, +20,1377,4,24,65, +0,115,0,115,0, +105,0,103,0,110, +0,109,0,101,0, +110,0,116,0,95, +0,49,0,1,196, +1,3,1,4,1, +3,1378,22,1,57, +1,2075,1379,17,1119, +1,0,1123,1,373, +1380,17,1381,15,1168, +1,-1,1,5,1382, +20,1383,4,60,73, +0,110,0,99,0, +114,0,101,0,109, +0,101,0,110,0, +116,0,68,0,101, +0,99,0,114,0, +101,0,109,0,101, +0,110,0,116,0, +69,0,120,0,112, +0,114,0,101,0, +115,0,115,0,105, +0,111,0,110,0, +95,0,54,0,1, +239,1,3,1,3, +1,2,1384,22,1, +100,1,130,1385,17, +1386,15,1098,1,-1, +1,5,1387,20,1388, +4,38,66,0,105, +0,110,0,97,0, +114,0,121,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,49,0,51,0, +1,255,1,3,1, +4,1,3,1389,22, +1,116,1,379,1390, +17,1391,15,1168,1, +-1,1,5,1392,20, +1393,4,60,73,0, +110,0,99,0,114, +0,101,0,109,0, +101,0,110,0,116, +0,68,0,101,0, +99,0,114,0,101, +0,109,0,101,0, +110,0,116,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,55,0,1,240, +1,3,1,5,1, +4,1394,22,1,101, +1,143,1395,17,1396, +15,1098,1,-1,1, +5,1397,20,1398,4, +38,66,0,105,0, +110,0,97,0,114, +0,121,0,69,0, +120,0,112,0,114, +0,101,0,115,0, +115,0,105,0,111, +0,110,0,95,0, +49,0,50,0,1, +254,1,3,1,4, +1,3,1399,22,1, +115,1,1901,1400,17, +1119,1,0,1123,1, +1152,1401,17,1402,15, +1075,1,-1,1,5, +1403,20,1404,4,38, +83,0,105,0,109, +0,112,0,108,0, +101,0,65,0,115, +0,115,0,105,0, +103,0,110,0,109, +0,101,0,110,0, +116,0,95,0,50, +0,52,0,1,221, +1,3,1,6,1, +5,1405,22,1,82, +1,1406,1406,17,1407, +15,1075,1,-1,1, +5,1408,20,1409,4, +38,83,0,105,0, +109,0,112,0,108, +0,101,0,65,0, +115,0,115,0,105, +0,103,0,110,0, +109,0,101,0,110, +0,116,0,95,0, +49,0,55,0,1, +214,1,3,1,4, +1,3,1410,22,1, +75,1,1159,1411,17, +1412,15,1075,1,-1, +1,5,1413,20,1414, +4,38,83,0,105, +0,109,0,112,0, +108,0,101,0,65, +0,115,0,115,0, +105,0,103,0,110, +0,109,0,101,0, +110,0,116,0,95, +0,49,0,49,0, +1,208,1,3,1, +6,1,5,1415,22, +1,69,1,157,1416, +17,1417,15,1098,1, +-1,1,5,1418,20, +1419,4,38,66,0, +105,0,110,0,97, +0,114,0,121,0, +69,0,120,0,112, +0,114,0,101,0, +115,0,115,0,105, +0,111,0,110,0, +95,0,49,0,49, +0,1,253,1,3, +1,4,1,3,1420, +22,1,114,1,1413, +1421,17,1422,15,1075, +1,-1,1,5,1423, +20,1424,4,36,83, +0,105,0,109,0, +112,0,108,0,101, +0,65,0,115,0, +115,0,105,0,103, +0,110,0,109,0, +101,0,110,0,116, +0,95,0,52,0, +1,201,1,3,1, +4,1,3,1425,22, +1,62,1,1370,1426, +17,1427,15,1075,1, +-1,1,5,1428,20, +1429,4,38,83,0, +105,0,109,0,112, +0,108,0,101,0, +65,0,115,0,115, +0,105,0,103,0, +110,0,109,0,101, +0,110,0,116,0, +95,0,49,0,56, +0,1,215,1,3, +1,4,1,3,1430, +22,1,76,1,2040, +1431,16,0,530,1, +1478,1432,17,1433,15, +1075,1,-1,1,5, +1434,20,1435,4,38, +83,0,105,0,109, +0,112,0,108,0, +101,0,65,0,115, +0,115,0,105,0, +103,0,110,0,109, +0,101,0,110,0, +116,0,95,0,49, +0,53,0,1,212, +1,3,1,4,1, +3,1436,22,1,73, +1,1620,1437,17,1438, +15,1375,1,-1,1, +5,1439,20,1440,4, +24,65,0,115,0, +115,0,105,0,103, +0,110,0,109,0, +101,0,110,0,116, +0,95,0,50,0, +1,197,1,3,1, +2,1,1,1441,22, +1,58,1,1621,1442, +16,0,658,1,1574, +790,1,172,1443,17, +1444,15,1098,1,-1, +1,5,1445,20,1446, +4,38,66,0,105, +0,110,0,97,0, +114,0,121,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,49,0,48,0, +1,252,1,3,1, +4,1,3,1447,22, +1,113,1,1931,866, +1,2361,821,1,1188, +1448,17,1449,15,1075, +1,-1,1,5,1450, +20,1451,4,38,83, +0,105,0,109,0, +112,0,108,0,101, +0,65,0,115,0, +115,0,105,0,103, +0,110,0,109,0, +101,0,110,0,116, +0,95,0,50,0, +51,0,1,220,1, +3,1,6,1,5, +1452,22,1,81,1, +1442,1453,17,1454,15, +1075,1,-1,1,5, +1455,20,1456,4,38, +83,0,105,0,109, +0,112,0,108,0, +101,0,65,0,115, +0,115,0,105,0, +103,0,110,0,109, +0,101,0,110,0, +116,0,95,0,49, +0,54,0,1,213, +1,3,1,4,1, +3,1457,22,1,74, +1,1694,1458,16,0, +190,1,942,1459,17, +1460,15,1098,1,-1, +1,5,1461,20,1462, +4,38,66,0,105, +0,110,0,97,0, +114,0,121,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,49,0,55,0, +1,259,1,3,1, +4,1,3,1463,22, +1,120,1,2198,1464, +17,1119,1,0,1123, +1,1195,1465,17,1466, +15,1075,1,-1,1, +5,1467,20,1468,4, +38,83,0,105,0, +109,0,112,0,108, +0,101,0,65,0, +115,0,115,0,105, +0,103,0,110,0, +109,0,101,0,110, +0,116,0,95,0, +49,0,48,0,1, +207,1,3,1,6, +1,5,1469,22,1, +68,1,1449,1470,17, +1471,15,1075,1,-1, +1,5,1472,20,1473, +4,36,83,0,105, +0,109,0,112,0, +108,0,101,0,65, +0,115,0,115,0, +105,0,103,0,110, +0,109,0,101,0, +110,0,116,0,95, +0,51,0,1,200, +1,3,1,4,1, +3,1474,22,1,61, +1,1701,1475,17,1476, +15,1133,1,-1,1, +5,1477,20,1478,4, +36,70,0,111,0, +114,0,76,0,111, +0,111,0,112,0, +83,0,116,0,97, +0,116,0,101,0, +109,0,101,0,110, +0,116,0,95,0, +51,0,1,194,1, +3,1,4,1,3, +1479,22,1,55,1, +447,1480,17,1481,15, +1482,4,30,37,0, +86,0,101,0,99, +0,116,0,111,0, +114,0,67,0,111, +0,110,0,115,0, +116,0,97,0,110, +0,116,0,1,-1, +1,5,1483,20,1484, +4,32,86,0,101, +0,99,0,116,0, +111,0,114,0,67, +0,111,0,110,0, +115,0,116,0,97, +0,110,0,116,0, +95,0,49,0,1, +229,1,3,1,8, +1,7,1485,22,1, +90,1,1958,1486,17, +1119,1,0,1123,1, +188,1487,17,1488,15, +1098,1,-1,1,5, +1489,20,1490,4,36, +66,0,105,0,110, +0,97,0,114,0, +121,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,95,0,57, +0,1,251,1,3, +1,4,1,3,1491, +22,1,112,1,1657, +883,1,205,1492,17, +1493,15,1098,1,-1, +1,5,1494,20,1495, +4,36,66,0,105, +0,110,0,97,0, +114,0,121,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,56,0,1,250, +1,3,1,4,1, +3,1496,22,1,111, +1,2557,1497,16,0, +489,1,1665,1498,17, +1499,15,1133,1,-1, +1,5,1500,20,1501, +4,36,70,0,111, +0,114,0,76,0, +111,0,111,0,112, +0,83,0,116,0, +97,0,116,0,101, +0,109,0,101,0, +110,0,116,0,95, +0,49,0,1,192, +1,3,1,2,1, +1,1502,22,1,53, +1,2227,891,1,1224, +1503,17,1504,15,1075, +1,-1,1,5,1505, +20,1506,4,38,83, +0,105,0,109,0, +112,0,108,0,101, +0,65,0,115,0, +115,0,105,0,103, +0,110,0,109,0, +101,0,110,0,116, +0,95,0,50,0, +50,0,1,219,1, +3,1,6,1,5, +1507,22,1,80,1, +223,1508,17,1509,15, +1098,1,-1,1,5, +1510,20,1511,4,36, +66,0,105,0,110, +0,97,0,114,0, +121,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,95,0,55, +0,1,249,1,3, +1,4,1,3,1512, +22,1,110,1,1730, +1513,17,1514,15,1133, +1,-1,1,5,1515, +20,1516,4,36,70, +0,111,0,114,0, +76,0,111,0,111, +0,112,0,83,0, +116,0,97,0,116, +0,101,0,109,0, +101,0,110,0,116, +0,95,0,52,0, +1,195,1,3,1, +4,1,3,1517,22, +1,56,1,476,1518, +17,1519,15,1520,4, +18,37,0,67,0, +111,0,110,0,115, +0,116,0,97,0, +110,0,116,0,1, +-1,1,5,1521,20, +1522,4,20,67,0, +111,0,110,0,115, +0,116,0,97,0, +110,0,116,0,95, +0,52,0,1,227, +1,3,1,2,1, +1,1523,22,1,88, +1,477,1524,17,1525, +15,1520,1,-1,1, +5,1526,20,1527,4, +20,67,0,111,0, +110,0,115,0,116, +0,97,0,110,0, +116,0,95,0,51, +0,1,226,1,3, +1,2,1,1,1528, +22,1,87,1,1231, +1529,17,1530,15,1075, +1,-1,1,5,1531, +20,1532,4,36,83, +0,105,0,109,0, +112,0,108,0,101, +0,65,0,115,0, +115,0,105,0,103, +0,110,0,109,0, +101,0,110,0,116, +0,95,0,57,0, +1,206,1,3,1, +6,1,5,1533,22, +1,67,1,479,1534, +17,1535,15,1520,1, +-1,1,5,1536,20, +1537,4,20,67,0, +111,0,110,0,115, +0,116,0,97,0, +110,0,116,0,95, +0,49,0,1,224, +1,3,1,2,1, +1,1538,22,1,85, +1,480,1539,17,1540, +15,1541,4,26,37, +0,76,0,105,0, +115,0,116,0,67, +0,111,0,110,0, +115,0,116,0,97, +0,110,0,116,0, +1,-1,1,5,1542, +20,1543,4,28,76, +0,105,0,115,0, +116,0,67,0,111, +0,110,0,115,0, +116,0,97,0,110, +0,116,0,95,0, +49,0,1,228,1, +3,1,4,1,3, +1544,22,1,89,1, +1485,1545,17,1546,15, +1075,1,-1,1,5, +1547,20,1548,4,36, +83,0,105,0,109, +0,112,0,108,0, +101,0,65,0,115, +0,115,0,105,0, +103,0,110,0,109, +0,101,0,110,0, +116,0,95,0,50, +0,1,199,1,3, +1,4,1,3,1549, +22,1,60,1,1737, +1550,16,0,270,1, +1989,899,1,1990,1551, +17,1119,1,0,1123, +1,242,1552,17,1553, +15,1098,1,-1,1, +5,1554,20,1555,4, +36,66,0,105,0, +110,0,97,0,114, +0,121,0,69,0, +120,0,112,0,114, +0,101,0,115,0, +115,0,105,0,111, +0,110,0,95,0, +54,0,1,248,1, +3,1,4,1,3, +1556,22,1,109,1, +478,1557,17,1558,15, +1520,1,-1,1,5, +1559,20,1560,4,20, +67,0,111,0,110, +0,115,0,116,0, +97,0,110,0,116, +0,95,0,50,0, +1,225,1,3,1, +2,1,1,1561,22, +1,86,1,1001,1562, +17,1563,15,1200,1, +-1,1,5,1564,20, +1565,4,40,84,0, +121,0,112,0,101, +0,99,0,97,0, +115,0,116,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,95, +0,56,0,1,273, +1,3,1,5,1, +4,1566,22,1,134, +1,1002,1567,17,1568, +15,1200,1,-1,1, +5,1569,20,1570,4, +40,84,0,121,0, +112,0,101,0,99, +0,97,0,115,0, +116,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,95,0,49, +0,1,266,1,3, +1,5,1,4,1571, +22,1,127,1,12, +1572,19,157,1,12, +1573,5,41,1,2075, +1574,16,0,155,1, +1860,827,1,2413,1575, +16,0,155,1,2198, +1576,16,0,155,1, +1873,836,1,2310,1577, +16,0,155,1,1657, +883,1,1989,899,1, +1990,1578,16,0,155, +1,31,1579,16,0, +155,1,32,1580,16, +0,155,1,2356,861, +1,2105,810,1,2106, +1581,16,0,155,1, +2359,816,1,2546,1582, +16,0,155,1,2227, +891,1,1901,1583,16, +0,155,1,2455,1584, +16,0,395,1,1802, +777,1,2021,709,1, +1804,1585,16,0,155, +1,2136,845,1,2355, +804,1,2029,716,1, +2030,722,1,2031,727, +1,2032,732,1,2033, +737,1,2361,821,1, +2035,743,1,2037,748, +1,2366,1586,16,0, +268,1,1931,866,1, +2041,759,1,2043,764, +1,2045,769,1,1775, +1587,16,0,155,1, +2039,753,1,1574,790, +1,1958,1588,16,0, +155,1,13,1589,19, +254,1,13,1590,5, +33,1,1860,827,1, +2415,1591,17,1592,15, +1593,4,22,37,0, +83,0,116,0,97, +0,116,0,101,0, +69,0,118,0,101, +0,110,0,116,0, +1,-1,1,5,1594, +20,1595,4,24,83, +0,116,0,97,0, +116,0,101,0,69, +0,118,0,101,0, +110,0,116,0,95, +0,49,0,1,157, +1,3,1,6,1, +5,1596,22,1,17, +1,2417,1597,16,0, +392,1,1873,836,1, +2310,1598,16,0,252, +1,1657,883,1,2029, +716,1,1989,899,1, +32,1599,16,0,371, +1,2105,810,1,2359, +816,1,2227,891,1, +1574,790,1,2452,1600, +17,1601,15,1602,4, +20,37,0,83,0, +116,0,97,0,116, +0,101,0,66,0, +111,0,100,0,121, +0,1,-1,1,5, +1603,20,1604,4,22, +83,0,116,0,97, +0,116,0,101,0, +66,0,111,0,100, +0,121,0,95,0, +50,0,1,156,1, +3,1,3,1,2, +1605,22,1,16,1, +2454,1606,17,1607,15, +1602,1,-1,1,5, +1608,20,1609,4,22, +83,0,116,0,97, +0,116,0,101,0, +66,0,111,0,100, +0,121,0,95,0, +49,0,1,155,1, +3,1,2,1,1, +1610,22,1,15,1, +1802,777,1,2021,709, +1,2136,845,1,2355, +804,1,2356,861,1, +2030,722,1,2031,727, +1,2032,732,1,2033, +737,1,2361,821,1, +2035,743,1,2037,748, +1,2039,753,1,1931, +866,1,2041,759,1, +2043,764,1,2045,769, +1,2491,1611,16,0, +459,1,14,1612,19, +144,1,14,1613,5, +104,1,1260,1073,1, +1011,1079,1,1514,1085, +1,9,1090,1,10, +1614,17,1615,15,1616, +4,48,37,0,65, +0,114,0,103,0, +117,0,109,0,101, +0,110,0,116,0, +68,0,101,0,99, +0,108,0,97,0, +114,0,97,0,116, +0,105,0,111,0, +110,0,76,0,105, +0,115,0,116,0, +1,-1,1,5,140, +1,0,1,0,1617, +22,1,18,1,262, +1096,1,1267,1102,1, +1521,1107,1,1773,1618, +16,0,148,1,19, +1124,1,20,1619,16, +0,142,1,2281,1131, +1,525,1192,1,2535, +1620,17,1621,15,1616, +1,-1,1,5,140, +1,0,1,0,1617, +1,30,1622,17,1623, +15,1616,1,-1,1, +5,1624,20,1625,4, +50,65,0,114,0, +103,0,117,0,109, +0,101,0,110,0, +116,0,68,0,101, +0,99,0,108,0, +97,0,114,0,97, +0,116,0,105,0, +111,0,110,0,76, +0,105,0,115,0, +116,0,95,0,50, +0,1,159,1,3, +1,4,1,3,1626, +22,1,20,1,283, +1154,1,2544,1627,16, +0,142,1,40,1143, +1,41,1628,17,1629, +15,1630,4,26,37, +0,65,0,114,0, +103,0,117,0,109, +0,101,0,110,0, +116,0,76,0,105, +0,115,0,116,0, +1,-1,1,5,602, +1,0,1,0,1631, +22,1,137,1,42, +1632,17,1633,15,1634, +4,38,37,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,65, +0,114,0,103,0, +117,0,109,0,101, +0,110,0,116,0, +1,-1,1,5,1635, +20,1636,4,40,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,65, +0,114,0,103,0, +117,0,109,0,101, +0,110,0,116,0, +95,0,49,0,1, +278,1,3,1,2, +1,1,1637,22,1, +140,1,44,1159,1, +47,1160,1,48,1166, +1,49,1172,1,50, +1177,1,51,1182,1, +305,1187,1,63,1198, +1,66,1204,1,67, +1209,1,1478,1432,1, +69,1219,1,70,1224, +1,68,1214,1,74, +1229,1,1013,1234,1, +1332,1239,1,1048,1244, +1,82,1260,1,1296, +1149,1,1341,1277,1, +328,1282,1,1303,1287, +1,1096,1292,1,93, +1298,1,1550,1303,1, +352,1310,1,2364,1638, +17,1639,15,1616,1, +-1,1,5,1640,20, +1641,4,50,65,0, +114,0,103,0,117, +0,109,0,101,0, +110,0,116,0,68, +0,101,0,99,0, +108,0,97,0,114, +0,97,0,116,0, +105,0,111,0,110, +0,76,0,105,0, +115,0,116,0,95, +0,49,0,1,158, +1,3,1,2,1, +1,1642,22,1,19, +1,107,1317,1,1114, +1322,1,1370,1426,1, +118,1324,1,1123,1329, +1,371,1334,1,1377, +1341,1,375,1346,1, +377,1352,1,379,1390, +1,380,1362,1,883, +1368,1,373,1380,1, +130,1385,1,2402,1643, +17,1644,15,1616,1, +-1,1,5,140,1, +0,1,0,1617,1, +1152,1401,1,143,1395, +1,387,1645,16,0, +564,1,1406,1406,1, +2411,1646,16,0,142, +1,1159,1411,1,157, +1416,1,1413,1421,1, +1665,1498,1,412,1647, +16,0,574,1,1094, +1648,16,0,604,1, +172,1443,1,827,1357, +1,1188,1448,1,437, +1649,16,0,644,1, +1442,1453,1,1694,1650, +16,0,148,1,942, +1459,1,1195,1465,1, +1449,1470,1,1701,1475, +1,447,1480,1,188, +1487,1,205,1492,1, +459,1651,17,1652,15, +1630,1,-1,1,5, +602,1,0,1,0, +1631,1,461,1653,16, +0,604,1,464,1654, +17,1655,15,1630,1, +-1,1,5,1656,20, +1657,4,28,65,0, +114,0,103,0,117, +0,109,0,101,0, +110,0,116,0,76, +0,105,0,115,0, +116,0,95,0,50, +0,1,277,1,3, +1,4,1,3,1658, +22,1,139,1,1224, +1503,1,223,1508,1, +1730,1513,1,476,1518, +1,477,1524,1,1231, +1529,1,479,1534,1, +480,1539,1,1485,1545, +1,242,1552,1,478, +1557,1,481,1659,17, +1660,15,1630,1,-1, +1,5,1661,20,1662, +4,28,65,0,114, +0,103,0,117,0, +109,0,101,0,110, +0,116,0,76,0, +105,0,115,0,116, +0,95,0,49,0, +1,276,1,3,1, +2,1,1,1663,22, +1,138,1,1001,1562, +1,1002,1567,1,15, +1664,19,353,1,15, +1665,5,6,1,1114, +1666,16,0,351,1, +1621,1667,16,0,643, +1,40,1668,16,0, +558,1,19,1124,1, +9,1090,1,2550,1669, +16,0,477,1,16, +1670,19,136,1,16, +1671,5,134,1,256, +1672,16,0,187,1, +1261,1673,16,0,187, +1,509,1674,16,0, +187,1,9,1675,16, +0,134,1,2021,709, +1,2372,1676,17,1677, +15,1678,4,12,37, +0,69,0,118,0, +101,0,110,0,116, +0,1,-1,1,5, +1679,20,1680,4,16, +69,0,118,0,101, +0,110,0,116,0, +95,0,50,0,57, +0,1,314,1,3, +1,2,1,1,1681, +22,1,176,1,1775, +1682,16,0,187,1, +2029,716,1,2030,722, +1,2031,727,1,2534, +1683,16,0,468,1, +2033,737,1,277,1684, +16,0,187,1,2035, +743,1,2037,748,1, +2039,753,1,32,1685, +16,0,187,1,2041, +759,1,2043,764,1, +2045,769,1,40,1686, +16,0,166,1,41, +1687,16,0,187,1, +1297,1688,16,0,187, +1,43,1689,16,0, +187,1,44,1690,16, +0,166,1,1802,777, +1,1804,1691,16,0, +187,1,299,1692,16, +0,187,1,2310,1693, +16,0,187,1,52, +1694,16,0,187,1, +1515,1695,16,0,187, +1,525,1696,16,0, +187,1,62,1697,16, +0,202,1,63,1698, +16,0,166,1,2075, +1699,16,0,187,1, +1574,790,1,71,1700, +16,0,187,1,1833, +1701,16,0,322,1, +1834,1702,16,0,187, +1,79,1703,16,0, +187,1,1335,1704,16, +0,187,1,2136,845, +1,322,1705,16,0, +187,1,76,1706,16, +0,187,1,85,1707, +16,0,187,1,89, +1708,16,0,187,1, +346,1709,16,0,187, +1,2355,804,1,2356, +861,1,2106,1710,16, +0,187,1,2359,816, +1,2361,821,1,1860, +827,1,97,1711,16, +0,187,1,2368,1712, +17,1713,15,1678,1, +-1,1,5,1714,20, +1715,4,16,69,0, +118,0,101,0,110, +0,116,0,95,0, +51,0,51,0,1, +318,1,3,1,2, +1,1,1716,22,1, +180,1,2369,1717,17, +1718,15,1678,1,-1, +1,5,1719,20,1720, +4,16,69,0,118, +0,101,0,110,0, +116,0,95,0,51, +0,50,0,1,317, +1,3,1,2,1, +1,1721,22,1,179, +1,2370,1722,17,1723, +15,1678,1,-1,1, +5,1724,20,1725,4, +16,69,0,118,0, +101,0,110,0,116, +0,95,0,51,0, +49,0,1,316,1, +3,1,2,1,1, +1726,22,1,178,1, +112,1727,16,0,187, +1,1117,1728,16,0, +187,1,2373,1729,17, +1730,15,1678,1,-1, +1,5,1731,20,1732, +4,16,69,0,118, +0,101,0,110,0, +116,0,95,0,50, +0,56,0,1,313, +1,3,1,2,1, +1,1733,22,1,175, +1,2374,1734,17,1735, +15,1678,1,-1,1, +5,1736,20,1737,4, +16,69,0,118,0, +101,0,110,0,116, +0,95,0,50,0, +55,0,1,312,1, +3,1,2,1,1, +1738,22,1,174,1, +1873,836,1,2376,1739, +17,1740,15,1678,1, +-1,1,5,1741,20, +1742,4,16,69,0, +118,0,101,0,110, +0,116,0,95,0, +50,0,53,0,1, +310,1,3,1,2, +1,1,1743,22,1, +172,1,1875,1744,16, +0,439,1,2378,1745, +17,1746,15,1678,1, +-1,1,5,1747,20, +1748,4,16,69,0, +118,0,101,0,110, +0,116,0,95,0, +50,0,51,0,1, +308,1,3,1,2, +1,1,1749,22,1, +170,1,2379,1750,17, +1751,15,1678,1,-1, +1,5,1752,20,1753, +4,16,69,0,118, +0,101,0,110,0, +116,0,95,0,50, +0,50,0,1,307, +1,3,1,2,1, +1,1754,22,1,169, +1,2380,1755,17,1756, +15,1678,1,-1,1, +5,1757,20,1758,4, +16,69,0,118,0, +101,0,110,0,116, +0,95,0,50,0, +49,0,1,306,1, +3,1,2,1,1, +1759,22,1,168,1, +2381,1760,17,1761,15, +1678,1,-1,1,5, +1762,20,1763,4,16, +69,0,118,0,101, +0,110,0,116,0, +95,0,50,0,48, +0,1,305,1,3, +1,2,1,1,1764, +22,1,167,1,2382, +1765,17,1766,15,1678, +1,-1,1,5,1767, +20,1768,4,16,69, +0,118,0,101,0, +110,0,116,0,95, +0,49,0,57,0, +1,304,1,3,1, +2,1,1,1769,22, +1,166,1,124,1770, +16,0,187,1,2384, +1771,17,1772,15,1678, +1,-1,1,5,1773, +20,1774,4,16,69, +0,118,0,101,0, +110,0,116,0,95, +0,49,0,55,0, +1,302,1,3,1, +2,1,1,1775,22, +1,164,1,2385,1776, +17,1777,15,1678,1, +-1,1,5,1778,20, +1779,4,16,69,0, +118,0,101,0,110, +0,116,0,95,0, +49,0,54,0,1, +301,1,3,1,2, +1,1,1780,22,1, +163,1,2386,1781,17, +1782,15,1678,1,-1, +1,5,1783,20,1784, +4,16,69,0,118, +0,101,0,110,0, +116,0,95,0,49, +0,53,0,1,300, +1,3,1,2,1, +1,1785,22,1,162, +1,2387,1786,17,1787, +15,1678,1,-1,1, +5,1788,20,1789,4, +16,69,0,118,0, +101,0,110,0,116, +0,95,0,49,0, +52,0,1,299,1, +3,1,2,1,1, +1790,22,1,161,1, +2388,1791,17,1792,15, +1678,1,-1,1,5, +1793,20,1794,4,16, +69,0,118,0,101, +0,110,0,116,0, +95,0,49,0,51, +0,1,298,1,3, +1,2,1,1,1795, +22,1,160,1,2389, +1796,17,1797,15,1678, +1,-1,1,5,1798, +20,1799,4,16,69, +0,118,0,101,0, +110,0,116,0,95, +0,49,0,50,0, +1,297,1,3,1, +2,1,1,1800,22, +1,159,1,2390,1801, +17,1802,15,1678,1, +-1,1,5,1803,20, +1804,4,16,69,0, +118,0,101,0,110, +0,116,0,95,0, +49,0,49,0,1, +296,1,3,1,2, +1,1,1805,22,1, +158,1,2391,1806,17, +1807,15,1678,1,-1, +1,5,1808,20,1809, +4,16,69,0,118, +0,101,0,110,0, +116,0,95,0,49, +0,48,0,1,295, +1,3,1,2,1, +1,1810,22,1,157, +1,2392,1811,17,1812, +15,1678,1,-1,1, +5,1813,20,1814,4, +14,69,0,118,0, +101,0,110,0,116, +0,95,0,57,0, +1,294,1,3,1, +2,1,1,1815,22, +1,156,1,2393,1816, +17,1817,15,1678,1, +-1,1,5,1818,20, +1819,4,14,69,0, +118,0,101,0,110, +0,116,0,95,0, +56,0,1,293,1, +3,1,2,1,1, +1820,22,1,155,1, +2394,1821,17,1822,15, +1678,1,-1,1,5, +1823,20,1824,4,14, +69,0,118,0,101, +0,110,0,116,0, +95,0,55,0,1, +292,1,3,1,2, +1,1,1825,22,1, +154,1,2395,1826,17, +1827,15,1678,1,-1, +1,5,1828,20,1829, +4,14,69,0,118, +0,101,0,110,0, +116,0,95,0,54, +0,1,291,1,3, +1,2,1,1,1830, +22,1,153,1,137, +1831,16,0,187,1, +2397,1832,17,1833,15, +1678,1,-1,1,5, +1834,20,1835,4,14, +69,0,118,0,101, +0,110,0,116,0, +95,0,52,0,1, +289,1,3,1,2, +1,1,1836,22,1, +151,1,2398,1837,17, +1838,15,1678,1,-1, +1,5,1839,20,1840, +4,14,69,0,118, +0,101,0,110,0, +116,0,95,0,51, +0,1,288,1,3, +1,2,1,1,1841, +22,1,150,1,2399, +1842,17,1843,15,1678, +1,-1,1,5,1844, +20,1845,4,14,69, +0,118,0,101,0, +110,0,116,0,95, +0,50,0,1,287, +1,3,1,2,1, +1,1846,22,1,149, +1,2400,1847,17,1848, +15,1678,1,-1,1, +5,1849,20,1850,4, +14,69,0,118,0, +101,0,110,0,116, +0,95,0,49,0, +1,286,1,3,1, +2,1,1,1851,22, +1,148,1,2401,1852, +16,0,349,1,381, +1853,16,0,187,1, +1901,1854,16,0,187, +1,102,1855,16,0, +187,1,1153,1856,16, +0,187,1,151,1857, +16,0,187,1,1407, +1858,16,0,187,1, +1659,1859,16,0,187, +1,2032,732,1,406, +1860,16,0,187,1, +1371,1861,16,0,187, +1,2105,810,1,166, +1862,16,0,187,1, +1622,1863,16,0,187, +1,1931,866,1,1932, +1864,16,0,478,1, +1933,1865,16,0,187, +1,1876,1866,16,0, +187,1,431,1867,16, +0,187,1,1585,1868, +16,0,187,1,182, +1869,16,0,187,1, +1189,1870,16,0,187, +1,2371,1871,17,1872, +15,1678,1,-1,1, +5,1873,20,1874,4, +16,69,0,118,0, +101,0,110,0,116, +0,95,0,51,0, +48,0,1,315,1, +3,1,2,1,1, +1875,22,1,177,1, +1695,1876,16,0,187, +1,2198,1877,16,0, +187,1,2375,1878,17, +1879,15,1678,1,-1, +1,5,1880,20,1881, +4,16,69,0,118, +0,101,0,110,0, +116,0,95,0,50, +0,54,0,1,311, +1,3,1,2,1, +1,1882,22,1,173, +1,2377,1883,17,1884, +15,1678,1,-1,1, +5,1885,20,1886,4, +16,69,0,118,0, +101,0,110,0,116, +0,95,0,50,0, +52,0,1,309,1, +3,1,2,1,1, +1887,22,1,171,1, +447,1888,16,0,187, +1,199,1889,16,0, +187,1,2383,1890,17, +1891,15,1678,1,-1, +1,5,1892,20,1893, +4,16,69,0,118, +0,101,0,110,0, +116,0,95,0,49, +0,56,0,1,303, +1,3,1,2,1, +1,1894,22,1,165, +1,1958,1895,16,0, +187,1,2551,1896,16, +0,187,1,1657,883, +1,1658,1897,16,0, +662,1,459,1898,16, +0,187,1,462,1899, +16,0,187,1,2396, +1900,17,1901,15,1678, +1,-1,1,5,1902, +20,1903,4,14,69, +0,118,0,101,0, +110,0,116,0,95, +0,53,0,1,290, +1,3,1,2,1, +1,1904,22,1,152, +1,217,1905,16,0, +187,1,2227,891,1, +1225,1906,16,0,187, +1,1479,1907,16,0, +187,1,1731,1908,16, +0,187,1,1989,899, +1,1990,1909,16,0, +187,1,1443,1910,16, +0,187,1,236,1911, +16,0,187,1,1756, +1912,16,0,187,1, +17,1913,19,154,1, +17,1914,5,116,1, +1,1915,17,1916,15, +1917,4,18,37,0, +84,0,121,0,112, +0,101,0,110,0, +97,0,109,0,101, +0,1,-1,1,5, +1918,20,1919,4,20, +84,0,121,0,112, +0,101,0,110,0, +97,0,109,0,101, +0,95,0,55,0, +1,285,1,3,1, +2,1,1,1920,22, +1,147,1,2,1921, +17,1922,15,1917,1, +-1,1,5,1923,20, +1924,4,20,84,0, +121,0,112,0,101, +0,110,0,97,0, +109,0,101,0,95, +0,54,0,1,284, +1,3,1,2,1, +1,1925,22,1,146, +1,3,1926,17,1927, +15,1917,1,-1,1, +5,1928,20,1929,4, +20,84,0,121,0, +112,0,101,0,110, +0,97,0,109,0, +101,0,95,0,53, +0,1,283,1,3, +1,2,1,1,1930, +22,1,145,1,4, +1931,17,1932,15,1917, +1,-1,1,5,1933, +20,1934,4,20,84, +0,121,0,112,0, +101,0,110,0,97, +0,109,0,101,0, +95,0,52,0,1, +282,1,3,1,2, +1,1,1935,22,1, +144,1,5,1936,17, +1937,15,1917,1,-1, +1,5,1938,20,1939, +4,20,84,0,121, +0,112,0,101,0, +110,0,97,0,109, +0,101,0,95,0, +51,0,1,281,1, +3,1,2,1,1, +1940,22,1,143,1, +6,1941,17,1942,15, +1917,1,-1,1,5, +1943,20,1944,4,20, +84,0,121,0,112, +0,101,0,110,0, +97,0,109,0,101, +0,95,0,50,0, +1,280,1,3,1, +2,1,1,1945,22, +1,142,1,7,1946, +17,1947,15,1917,1, +-1,1,5,1948,20, +1949,4,20,84,0, +121,0,112,0,101, +0,110,0,97,0, +109,0,101,0,95, +0,49,0,1,279, +1,3,1,2,1, +1,1950,22,1,141, +1,1514,1085,1,9, +1090,1,10,1614,1, +262,1096,1,1267,1102, +1,1521,1107,1,1773, +1951,16,0,233,1, +19,1124,1,20,1952, +16,0,152,1,2281, +1131,1,525,1192,1, +2535,1620,1,30,1622, +1,283,1154,1,2544, +1953,16,0,556,1, +1010,1954,16,0,594, +1,40,1143,1,41, +1628,1,42,1632,1, +44,1159,1,2402,1643, +1,47,1160,1,1303, +1287,1,49,1172,1, +50,1177,1,48,1166, +1,305,1187,1,51, +1182,1,61,1955,16, +0,194,1,63,1198, +1,66,1204,1,67, +1209,1,68,1214,1, +69,1219,1,70,1224, +1,73,1956,16,0, +204,1,74,1229,1, +1013,1234,1,328,1282, +1,1048,1244,1,82, +1260,1,1840,1957,16, +0,356,1,1341,1277, +1,1260,1073,1,1094, +1958,16,0,657,1, +1096,1292,1,93,1298, +1,1550,1303,1,352, +1310,1,2364,1638,1, +1011,1079,1,107,1317, +1,1114,1322,1,1871, +1959,16,0,366,1, +1370,1426,1,1478,1432, +1,118,1324,1,1123, +1329,1,1332,1239,1, +1377,1341,1,375,1346, +1,1882,1960,16,0, +399,1,377,1352,1, +827,1357,1,380,1362, +1,130,1385,1,2074, +1961,16,0,563,1, +371,1334,1,373,1380, +1,1012,1962,16,0, +596,1,379,1390,1, +143,1395,1,1152,1401, +1,1406,1406,1,2411, +1963,16,0,354,1, +1159,1411,1,157,1416, +1,1413,1421,1,883, +1368,1,1296,1149,1, +172,1443,1,1665,1498, +1,1939,1964,16,0, +449,1,1188,1448,1, +1442,1453,1,188,1487, +1,942,1459,1,1195, +1465,1,1449,1470,1, +1701,1475,1,447,1480, +1,205,1492,1,459, +1651,1,464,1654,1, +2197,1965,16,0,654, +1,1224,1503,1,223, +1508,1,1730,1513,1, +476,1518,1,477,1524, +1,1231,1529,1,479, +1534,1,480,1539,1, +1485,1545,1,242,1552, +1,478,1557,1,481, +1659,1,1001,1562,1, +1002,1567,1,18,1966, +19,488,1,18,1967, +5,83,1,1011,1079, +1,1012,1968,16,0, +486,1,1013,1234,1, +262,1096,1,1267,1969, +16,0,486,1,515, +1970,16,0,486,1, +1521,1971,16,0,486, +1,525,1192,1,283, +1154,1,2557,1972,16, +0,486,1,40,1143, +1,42,1973,16,0, +486,1,44,1159,1, +47,1160,1,1303,1974, +16,0,486,1,1555, +1975,16,0,486,1, +50,1177,1,48,1166, +1,49,1172,1,51, +1182,1,63,1198,1, +305,1187,1,66,1204, +1,67,1209,1,68, +1214,1,69,1219,1, +70,1224,1,73,1976, +16,0,486,1,74, +1229,1,328,1282,1, +1048,1977,16,0,486, +1,82,1978,16,0, +486,1,1840,1979,16, +0,486,1,1591,1980, +16,0,486,1,1341, +1981,16,0,486,1, +1096,1292,1,93,1298, +1,352,1310,1,107, +1982,16,0,486,1, +1114,1322,1,118,1983, +16,0,486,1,1123, +1984,16,0,486,1, +371,1334,1,1628,1985, +16,0,486,1,375, +1346,1,1882,1986,16, +0,486,1,377,1352, +1,379,1390,1,380, +1362,1,883,1987,16, +0,486,1,373,1380, +1,130,1988,16,0, +486,1,143,1989,16, +0,486,1,387,1990, +16,0,486,1,1159, +1991,16,0,486,1, +157,1992,16,0,486, +1,1413,1993,16,0, +486,1,1665,1994,16, +0,486,1,412,1995, +16,0,486,1,1377, +1996,16,0,486,1, +172,1997,16,0,486, +1,1939,1998,16,0, +486,1,437,1999,16, +0,486,1,188,2000, +16,0,486,1,942, +2001,16,0,486,1, +1195,2002,16,0,486, +1,1449,2003,16,0, +486,1,1701,2004,16, +0,486,1,447,1480, +1,205,2005,16,0, +486,1,827,2006,16, +0,486,1,223,2007, +16,0,486,1,476, +1518,1,477,1524,1, +1231,2008,16,0,486, +1,479,1534,1,480, +1539,1,1485,2009,16, +0,486,1,1737,2010, +16,0,486,1,242, +2011,16,0,486,1, +478,1557,1,1001,1562, +1,1002,1567,1,19, +2012,19,225,1,19, +2013,5,171,1,256, +2014,16,0,223,1, +1261,2015,16,0,223, +1,1011,1079,1,1012, +2016,16,0,476,1, +1515,2017,16,0,223, +1,262,1096,1,1267, +2018,16,0,476,1, +2021,709,1,1521,2019, +16,0,476,1,1775, +2020,16,0,223,1, +2029,716,1,2030,722, +1,2031,727,1,2032, +732,1,2033,737,1, +277,2021,16,0,223, +1,2035,743,1,2037, +748,1,2039,753,1, +32,2022,16,0,223, +1,2041,759,1,2043, +764,1,2045,769,1, +40,1143,1,41,2023, +16,0,223,1,42, +2024,16,0,476,1, +43,2025,16,0,223, +1,44,1159,1,1802, +777,1,1804,2026,16, +0,223,1,1303,2027, +16,0,476,1,49, +1172,1,47,1160,1, +48,1166,1,52,2028, +16,0,223,1,50, +1177,1,51,1182,1, +509,2029,16,0,223, +1,299,2030,16,0, +223,1,283,1154,1, +63,1198,1,305,1187, +1,66,1204,1,67, +1209,1,68,1214,1, +69,1219,1,70,1224, +1,71,2031,16,0, +223,1,73,2032,16, +0,476,1,74,1229, +1,1013,1234,1,76, +2033,16,0,223,1, +1834,2034,16,0,223, +1,1048,2035,16,0, +476,1,79,2036,16, +0,223,1,1335,2037, +16,0,223,1,2136, +845,1,82,2038,16, +0,476,1,1840,2039, +16,0,476,1,1297, +2040,16,0,223,1, +85,2041,16,0,223, +1,1341,2042,16,0, +476,1,89,2043,16, +0,223,1,1096,1292, +1,93,1298,1,322, +2044,16,0,223,1, +2355,804,1,2356,861, +1,2106,2045,16,0, +223,1,1555,2046,16, +0,476,1,2359,816, +1,827,2047,16,0, +476,1,2361,821,1, +1860,827,1,97,2048, +16,0,223,1,1114, +1322,1,112,2049,16, +0,223,1,1117,2050, +16,0,223,1,352, +1310,1,1873,836,1, +102,2051,16,0,223, +1,118,2052,16,0, +476,1,1123,2053,16, +0,476,1,371,1334, +1,515,2054,16,0, +476,1,107,2055,16, +0,476,1,124,2056, +16,0,223,1,1882, +2057,16,0,476,1, +377,1352,1,379,1390, +1,380,1362,1,130, +2058,16,0,476,1, +346,2059,16,0,223, +1,2075,2060,16,0, +223,1,373,1380,1, +387,2061,16,0,476, +1,137,2062,16,0, +223,1,143,2063,16, +0,476,1,1901,2064, +16,0,223,1,1153, +2065,16,0,223,1, +375,1346,1,151,2066, +16,0,223,1,1407, +2067,16,0,223,1, +1659,2068,16,0,223, +1,1159,2069,16,0, +476,1,381,2070,16, +0,223,1,157,2071, +16,0,476,1,1413, +2072,16,0,476,1, +883,2073,16,0,476, +1,1371,2074,16,0, +223,1,328,1282,1, +2105,810,1,166,2075, +16,0,223,1,1377, +2076,16,0,476,1, +1622,2077,16,0,223, +1,406,2078,16,0, +223,1,1574,790,1, +172,2079,16,0,476, +1,1931,866,1,412, +2080,16,0,476,1, +1933,2081,16,0,223, +1,1876,2082,16,0, +223,1,431,2083,16, +0,223,1,1585,2084, +16,0,223,1,182, +2085,16,0,223,1, +1628,2086,16,0,476, +1,1189,2087,16,0, +223,1,437,2088,16, +0,476,1,1591,2089, +16,0,476,1,188, +2090,16,0,476,1, +1695,2091,16,0,223, +1,2198,2092,16,0, +223,1,1195,2093,16, +0,476,1,1449,2094, +16,0,476,1,1701, +2095,16,0,476,1, +447,2096,16,0,223, +1,2310,2097,16,0, +223,1,1958,2098,16, +0,223,1,2551,2099, +16,0,223,1,1657, +883,1,205,2100,16, +0,476,1,199,2101, +16,0,223,1,459, +2102,16,0,223,1, +2557,2103,16,0,476, +1,462,2104,16,0, +223,1,1665,2105,16, +0,476,1,217,2106, +16,0,223,1,2227, +891,1,942,2107,16, +0,476,1,1225,2108, +16,0,223,1,223, +2109,16,0,476,1, +1479,2110,16,0,223, +1,1731,2111,16,0, +223,1,477,1524,1, +1231,2112,16,0,476, +1,479,1534,1,480, +1539,1,1485,2113,16, +0,476,1,1737,2114, +16,0,476,1,1989, +899,1,1990,2115,16, +0,223,1,1443,2116, +16,0,223,1,236, +2117,16,0,223,1, +525,2118,16,0,223, +1,476,1518,1,242, +2119,16,0,476,1, +478,1557,1,1939,2120, +16,0,476,1,1001, +1562,1,1002,1567,1, +1756,2121,16,0,223, +1,20,2122,19,454, +1,20,2123,5,83, +1,1011,1079,1,1012, +2124,16,0,452,1, +1013,1234,1,262,1096, +1,1267,2125,16,0, +452,1,515,2126,16, +0,452,1,1521,2127, +16,0,452,1,525, +1192,1,283,1154,1, +2557,2128,16,0,452, +1,40,1143,1,42, +2129,16,0,452,1, +44,1159,1,47,1160, +1,1303,2130,16,0, +452,1,1555,2131,16, +0,452,1,50,1177, +1,48,1166,1,49, +1172,1,51,1182,1, +63,1198,1,305,1187, +1,66,1204,1,67, +1209,1,68,1214,1, +69,1219,1,70,1224, +1,73,2132,16,0, +452,1,74,1229,1, +328,2133,16,0,452, +1,1048,2134,16,0, +452,1,82,2135,16, +0,452,1,1840,2136, +16,0,452,1,1591, +2137,16,0,452,1, +1341,2138,16,0,452, +1,1096,1292,1,93, +1298,1,352,2139,16, +0,452,1,107,2140, +16,0,452,1,1114, +1322,1,118,2141,16, +0,452,1,1123,2142, +16,0,452,1,371, +1334,1,1628,2143,16, +0,452,1,375,1346, +1,1882,2144,16,0, +452,1,377,1352,1, +379,1390,1,380,1362, +1,883,2145,16,0, +452,1,373,1380,1, +130,2146,16,0,452, +1,143,2147,16,0, +452,1,387,2148,16, +0,452,1,1159,2149, +16,0,452,1,157, +2150,16,0,452,1, +1413,2151,16,0,452, +1,1665,2152,16,0, +452,1,412,2153,16, +0,452,1,1377,2154, +16,0,452,1,172, +2155,16,0,452,1, +1939,2156,16,0,452, +1,437,2157,16,0, +452,1,188,2158,16, +0,452,1,942,2159, +16,0,452,1,1195, +2160,16,0,452,1, +1449,2161,16,0,452, +1,1701,2162,16,0, +452,1,447,1480,1, +205,2163,16,0,452, +1,827,2164,16,0, +452,1,223,2165,16, +0,452,1,476,1518, +1,477,1524,1,1231, +2166,16,0,452,1, +479,1534,1,480,1539, +1,1485,2167,16,0, +452,1,1737,2168,16, +0,452,1,242,2169, +16,0,452,1,478, +1557,1,1001,1562,1, +1002,1567,1,21,2170, +19,447,1,21,2171, +5,83,1,1011,1079, +1,1012,2172,16,0, +445,1,1013,1234,1, +262,1096,1,1267,2173, +16,0,445,1,515, +2174,16,0,445,1, +1521,2175,16,0,445, +1,525,1192,1,283, +1154,1,2557,2176,16, +0,445,1,40,1143, +1,42,2177,16,0, +445,1,44,1159,1, +47,1160,1,1303,2178, +16,0,445,1,1555, +2179,16,0,445,1, +50,1177,1,48,1166, +1,49,1172,1,51, +1182,1,63,1198,1, +305,1187,1,66,1204, +1,67,1209,1,68, +1214,1,69,1219,1, +70,1224,1,73,2180, +16,0,445,1,74, +1229,1,328,2181,16, +0,445,1,1048,2182, +16,0,445,1,82, +2183,16,0,445,1, +1840,2184,16,0,445, +1,1591,2185,16,0, +445,1,1341,2186,16, +0,445,1,1096,1292, +1,93,1298,1,352, +2187,16,0,445,1, +107,2188,16,0,445, +1,1114,1322,1,118, +2189,16,0,445,1, +1123,2190,16,0,445, +1,371,1334,1,1628, +2191,16,0,445,1, +375,1346,1,1882,2192, +16,0,445,1,377, +1352,1,379,1390,1, +380,1362,1,883,2193, +16,0,445,1,373, +1380,1,130,2194,16, +0,445,1,143,2195, +16,0,445,1,387, +2196,16,0,445,1, +1159,2197,16,0,445, +1,157,2198,16,0, +445,1,1413,2199,16, +0,445,1,1665,2200, +16,0,445,1,412, +2201,16,0,445,1, +1377,2202,16,0,445, +1,172,2203,16,0, +445,1,1939,2204,16, +0,445,1,437,2205, +16,0,445,1,188, +2206,16,0,445,1, +942,2207,16,0,445, +1,1195,2208,16,0, +445,1,1449,2209,16, +0,445,1,1701,2210, +16,0,445,1,447, +1480,1,205,2211,16, +0,445,1,827,2212, +16,0,445,1,223, +2213,16,0,445,1, +476,1518,1,477,1524, +1,1231,2214,16,0, +445,1,479,1534,1, +480,1539,1,1485,2215, +16,0,445,1,1737, +2216,16,0,445,1, +242,2217,16,0,445, +1,478,1557,1,1001, +1562,1,1002,1567,1, +22,2218,19,431,1, +22,2219,5,83,1, +1011,1079,1,1012,2220, +16,0,429,1,1013, +1234,1,262,1096,1, +1267,2221,16,0,429, +1,515,2222,16,0, +429,1,1521,2223,16, +0,429,1,525,1192, +1,283,1154,1,2557, +2224,16,0,429,1, +40,1143,1,42,2225, +16,0,429,1,44, +1159,1,47,1160,1, +1303,2226,16,0,429, +1,1555,2227,16,0, +429,1,50,1177,1, +48,1166,1,49,1172, +1,51,1182,1,63, +1198,1,305,1187,1, +66,1204,1,67,1209, +1,68,1214,1,69, +1219,1,70,1224,1, +73,2228,16,0,429, +1,74,1229,1,328, +2229,16,0,429,1, +1048,2230,16,0,429, +1,82,2231,16,0, +429,1,1840,2232,16, +0,429,1,1591,2233, +16,0,429,1,1341, +2234,16,0,429,1, +1096,1292,1,93,1298, +1,352,2235,16,0, +429,1,107,2236,16, +0,429,1,1114,1322, +1,118,2237,16,0, +429,1,1123,2238,16, +0,429,1,371,1334, +1,1628,2239,16,0, +429,1,375,1346,1, +1882,2240,16,0,429, +1,377,1352,1,379, +1390,1,380,1362,1, +883,2241,16,0,429, +1,373,1380,1,130, +2242,16,0,429,1, +143,2243,16,0,429, +1,387,2244,16,0, +429,1,1159,2245,16, +0,429,1,157,2246, +16,0,429,1,1413, +2247,16,0,429,1, +1665,2248,16,0,429, +1,412,2249,16,0, +429,1,1377,2250,16, +0,429,1,172,2251, +16,0,429,1,1939, +2252,16,0,429,1, +437,2253,16,0,429, +1,188,2254,16,0, +429,1,942,2255,16, +0,429,1,1195,2256, +16,0,429,1,1449, +2257,16,0,429,1, +1701,2258,16,0,429, +1,447,1480,1,205, +2259,16,0,429,1, +827,2260,16,0,429, +1,223,2261,16,0, +429,1,476,1518,1, +477,1524,1,1231,2262, +16,0,429,1,479, +1534,1,480,1539,1, +1485,2263,16,0,429, +1,1737,2264,16,0, +429,1,242,2265,16, +0,429,1,478,1557, +1,1001,1562,1,1002, +1567,1,23,2266,19, +502,1,23,2267,5, +36,1,2075,2268,16, +0,500,1,1860,827, +1,2198,2269,16,0, +500,1,1873,836,1, +2310,2270,16,0,500, +1,1657,883,1,1989, +899,1,1990,2271,16, +0,500,1,1775,2272, +16,0,500,1,32, +2273,16,0,500,1, +2356,861,1,2105,810, +1,2106,2274,16,0, +500,1,2359,816,1, +2227,891,1,1901,2275, +16,0,500,1,1802, +777,1,2021,709,1, +1804,2276,16,0,500, +1,2136,845,1,2355, +804,1,2029,716,1, +2030,722,1,2031,727, +1,2032,732,1,2033, +737,1,2361,821,1, +2035,743,1,2037,748, +1,2039,753,1,1931, +866,1,2041,759,1, +2043,764,1,2045,769, +1,1574,790,1,1958, +2277,16,0,500,1, +24,2278,19,177,1, +24,2279,5,5,1, +44,2280,16,0,175, +1,377,2281,16,0, +538,1,40,2282,16, +0,665,1,63,2283, +16,0,196,1,373, +2284,16,0,534,1, +25,2285,19,331,1, +25,2286,5,172,1, +256,2287,16,0,543, +1,1261,2288,16,0, +543,1,1011,1079,1, +1012,2289,16,0,329, +1,1515,2290,16,0, +543,1,262,1096,1, +1267,2291,16,0,329, +1,2021,709,1,1521, +2292,16,0,329,1, +1775,2293,16,0,543, +1,2029,716,1,2030, +722,1,2031,727,1, +2032,732,1,2033,737, +1,277,2294,16,0, +543,1,2035,743,1, +2037,748,1,2039,753, +1,32,2295,16,0, +543,1,2041,759,1, +2043,764,1,2045,769, +1,40,1143,1,41, +2296,16,0,543,1, +42,2297,16,0,329, +1,43,2298,16,0, +543,1,44,1159,1, +1802,777,1,1804,2299, +16,0,543,1,48, +1166,1,49,1172,1, +47,1160,1,51,1182, +1,52,2300,16,0, +543,1,50,1177,1, +305,1187,1,509,2301, +16,0,543,1,299, +2302,16,0,543,1, +62,2303,16,0,543, +1,63,1198,1,66, +1204,1,67,1209,1, +68,1214,1,69,1219, +1,70,1224,1,71, +2304,16,0,543,1, +283,1154,1,73,2305, +16,0,329,1,74, +1229,1,1013,1234,1, +76,2306,16,0,543, +1,1834,2307,16,0, +543,1,1048,1244,1, +79,2308,16,0,543, +1,1335,2309,16,0, +543,1,2136,845,1, +82,2310,16,0,329, +1,1840,2311,16,0, +329,1,1297,2312,16, +0,543,1,85,2313, +16,0,543,1,1341, +2314,16,0,329,1, +89,2315,16,0,543, +1,1303,2316,16,0, +329,1,1096,1292,1, +93,1298,1,322,2317, +16,0,543,1,2355, +804,1,2356,861,1, +2106,2318,16,0,543, +1,1555,2319,16,0, +329,1,2359,816,1, +827,2320,16,0,329, +1,2361,821,1,1860, +827,1,97,2321,16, +0,543,1,1114,1322, +1,112,2322,16,0, +543,1,1117,2323,16, +0,543,1,352,1310, +1,1873,836,1,102, +2324,16,0,543,1, +118,1324,1,1123,2325, +16,0,329,1,371, +1334,1,515,2326,16, +0,329,1,107,2327, +16,0,329,1,124, +2328,16,0,543,1, +1882,2329,16,0,329, +1,377,1352,1,379, +1390,1,380,1362,1, +130,1385,1,346,2330, +16,0,543,1,2075, +2331,16,0,543,1, +373,1380,1,387,2332, +16,0,329,1,137, +2333,16,0,543,1, +143,2334,16,0,329, +1,1901,2335,16,0, +543,1,1153,2336,16, +0,543,1,375,1346, +1,151,2337,16,0, +543,1,1407,2338,16, +0,543,1,1659,2339, +16,0,543,1,1159, +2340,16,0,329,1, +381,2341,16,0,543, +1,157,2342,16,0, +329,1,1413,2343,16, +0,329,1,883,2344, +16,0,329,1,1371, +2345,16,0,543,1, +328,1282,1,2105,810, +1,166,2346,16,0, +543,1,1377,2347,16, +0,329,1,1622,2348, +16,0,543,1,406, +2349,16,0,543,1, +1574,790,1,172,1443, +1,1931,866,1,412, +2350,16,0,329,1, +1933,2351,16,0,543, +1,1876,2352,16,0, +543,1,431,2353,16, +0,543,1,1585,2354, +16,0,543,1,182, +2355,16,0,543,1, +1628,2356,16,0,329, +1,1189,2357,16,0, +543,1,437,2358,16, +0,329,1,1591,2359, +16,0,329,1,188, +1487,1,1695,2360,16, +0,543,1,2198,2361, +16,0,543,1,1195, +2362,16,0,329,1, +1449,2363,16,0,329, +1,1701,2364,16,0, +329,1,447,2365,16, +0,543,1,2310,2366, +16,0,543,1,1958, +2367,16,0,543,1, +2551,2368,16,0,543, +1,1657,883,1,205, +2369,16,0,329,1, +199,2370,16,0,543, +1,459,2371,16,0, +543,1,2557,2372,16, +0,329,1,462,2373, +16,0,543,1,1665, +2374,16,0,329,1, +217,2375,16,0,543, +1,2227,891,1,942, +1459,1,1225,2376,16, +0,543,1,223,2377, +16,0,329,1,1479, +2378,16,0,543,1, +1731,2379,16,0,543, +1,477,1524,1,1231, +2380,16,0,329,1, +479,1534,1,480,1539, +1,1485,2381,16,0, +329,1,1737,2382,16, +0,329,1,1989,899, +1,1990,2383,16,0, +543,1,1443,2384,16, +0,543,1,236,2385, +16,0,543,1,525, +2386,16,0,543,1, +476,1518,1,242,2387, +16,0,329,1,478, +1557,1,1939,2388,16, +0,329,1,1001,1562, +1,1002,1567,1,1756, +2389,16,0,543,1, +26,2390,19,361,1, +26,2391,5,83,1, +1011,1079,1,1012,2392, +16,0,359,1,1013, +1234,1,262,1096,1, +1267,2393,16,0,359, +1,515,2394,16,0, +652,1,1521,2395,16, +0,359,1,525,1192, +1,283,1154,1,2557, +2396,16,0,359,1, +40,1143,1,42,2397, +16,0,359,1,44, +1159,1,47,1160,1, +1303,2398,16,0,359, +1,1555,2399,16,0, +359,1,50,1177,1, +48,1166,1,49,1172, +1,51,1182,1,63, +1198,1,305,1187,1, +66,1204,1,67,1209, +1,68,1214,1,69, +1219,1,70,1224,1, +73,2400,16,0,359, +1,74,1229,1,328, +1282,1,1048,1244,1, +82,2401,16,0,359, +1,1840,2402,16,0, +359,1,1591,2403,16, +0,359,1,1341,2404, +16,0,359,1,1096, +1292,1,93,1298,1, +352,1310,1,107,2405, +16,0,359,1,1114, +1322,1,118,1324,1, +1123,2406,16,0,359, +1,371,1334,1,1628, +2407,16,0,359,1, +375,1346,1,1882,2408, +16,0,359,1,377, +1352,1,379,1390,1, +380,1362,1,883,2409, +16,0,359,1,373, +1380,1,130,1385,1, +143,2410,16,0,359, +1,387,2411,16,0, +359,1,1159,2412,16, +0,359,1,157,2413, +16,0,359,1,1413, +2414,16,0,359,1, +1665,2415,16,0,359, +1,412,2416,16,0, +359,1,1377,2417,16, +0,359,1,172,1443, +1,1939,2418,16,0, +359,1,437,2419,16, +0,589,1,188,1487, +1,942,1459,1,1195, +2420,16,0,359,1, +1449,2421,16,0,359, +1,1701,2422,16,0, +359,1,447,1480,1, +205,2423,16,0,359, +1,827,2424,16,0, +359,1,223,2425,16, +0,359,1,476,1518, +1,477,1524,1,1231, +2426,16,0,359,1, +479,1534,1,480,1539, +1,1485,2427,16,0, +359,1,1737,2428,16, +0,359,1,242,2429, +16,0,359,1,478, +1557,1,1001,1562,1, +1002,1567,1,27,2430, +19,599,1,27,2431, +5,91,1,256,2432, +16,0,597,1,1261, +2433,16,0,597,1, +509,2434,16,0,597, +1,1515,2435,16,0, +597,1,2021,709,1, +1775,2436,16,0,597, +1,2029,716,1,2030, +722,1,2031,727,1, +2032,732,1,2033,737, +1,277,2437,16,0, +597,1,2035,743,1, +2037,748,1,2039,753, +1,32,2438,16,0, +597,1,2041,759,1, +2043,764,1,2045,769, +1,41,2439,16,0, +597,1,1297,2440,16, +0,597,1,43,2441, +16,0,597,1,1802, +777,1,1804,2442,16, +0,597,1,299,2443, +16,0,597,1,2310, +2444,16,0,597,1, +52,2445,16,0,597, +1,525,2446,16,0, +597,1,62,2447,16, +0,597,1,2075,2448, +16,0,597,1,1574, +790,1,71,2449,16, +0,597,1,76,2450, +16,0,597,1,1834, +2451,16,0,597,1, +79,2452,16,0,597, +1,1335,2453,16,0, +597,1,322,2454,16, +0,597,1,85,2455, +16,0,597,1,89, +2456,16,0,597,1, +346,2457,16,0,597, +1,2355,804,1,2105, +810,1,2106,2458,16, +0,597,1,2359,816, +1,2361,821,1,1860, +827,1,97,2459,16, +0,597,1,112,2460, +16,0,597,1,1117, +2461,16,0,597,1, +1873,836,1,102,2462, +16,0,597,1,1876, +2463,16,0,597,1, +2551,2464,16,0,597, +1,124,2465,16,0, +597,1,2136,845,1, +381,2466,16,0,597, +1,137,2467,16,0, +597,1,1901,2468,16, +0,597,1,1153,2469, +16,0,597,1,151, +2470,16,0,597,1, +1407,2471,16,0,597, +1,1659,2472,16,0, +597,1,406,2473,16, +0,597,1,1371,2474, +16,0,597,1,166, +2475,16,0,597,1, +1622,2476,16,0,597, +1,2356,861,1,1931, +866,1,1933,2477,16, +0,597,1,431,2478, +16,0,597,1,1585, +2479,16,0,597,1, +182,2480,16,0,597, +1,1189,2481,16,0, +597,1,1443,2482,16, +0,597,1,1695,2483, +16,0,597,1,2198, +2484,16,0,597,1, +447,2485,16,0,597, +1,199,2486,16,0, +597,1,1958,2487,16, +0,597,1,1657,883, +1,459,2488,16,0, +597,1,462,2489,16, +0,597,1,217,2490, +16,0,597,1,2227, +891,1,1225,2491,16, +0,597,1,1479,2492, +16,0,597,1,1731, +2493,16,0,597,1, +1989,899,1,1990,2494, +16,0,597,1,236, +2495,16,0,597,1, +1756,2496,16,0,597, +1,28,2497,19,630, +1,28,2498,5,60, +1,328,1282,1,223, +1508,1,1096,1292,1, +118,1324,1,883,1368, +1,525,1192,1,1001, +1562,1,130,1385,1, +459,1651,1,1114,1322, +1,352,1310,1,447, +1480,1,464,1654,1, +1011,1079,1,1013,1234, +1,242,1552,1,143, +1395,1,40,1143,1, +41,1628,1,42,1632, +1,479,1534,1,44, +1159,1,481,1659,1, +373,1380,1,47,1160, +1,157,1416,1,49, +1172,1,50,1177,1, +48,1166,1,379,1390, +1,380,1362,1,51, +1182,1,476,1518,1, +371,1334,1,478,1557, +1,1048,1244,1,375, +1346,1,172,1443,1, +262,1096,1,283,1154, +1,63,1198,1,67, +1209,1,68,1214,1, +69,1219,1,66,1204, +1,461,2499,16,0, +628,1,74,1229,1, +377,1352,1,1002,1567, +1,70,1224,1,188, +1487,1,82,1260,1, +305,1187,1,477,1524, +1,827,1357,1,93, +1298,1,480,1539,1, +205,1492,1,942,1459, +1,107,1317,1,29, +2500,19,296,1,29, +2501,5,83,1,1011, +1079,1,1012,2502,16, +0,294,1,1013,1234, +1,262,1096,1,1267, +2503,16,0,294,1, +515,2504,16,0,294, +1,1521,2505,16,0, +294,1,525,1192,1, +283,1154,1,2557,2506, +16,0,294,1,40, +1143,1,42,2507,16, +0,294,1,44,1159, +1,47,1160,1,1303, +2508,16,0,294,1, +1555,2509,16,0,294, +1,50,1177,1,48, +1166,1,49,1172,1, +51,1182,1,63,1198, +1,305,1187,1,66, +1204,1,67,1209,1, +68,1214,1,69,1219, +1,70,1224,1,73, +2510,16,0,294,1, +74,1229,1,328,1282, +1,1048,1244,1,82, +2511,16,0,294,1, +1840,2512,16,0,294, +1,1591,2513,16,0, +294,1,1341,2514,16, +0,294,1,1096,1292, +1,93,1298,1,352, +1310,1,107,2515,16, +0,294,1,1114,1322, +1,118,1324,1,1123, +2516,16,0,294,1, +371,1334,1,1628,2517, +16,0,294,1,375, +1346,1,1882,2518,16, +0,294,1,377,1352, +1,379,1390,1,380, +1362,1,883,2519,16, +0,294,1,373,1380, +1,130,1385,1,143, +1395,1,387,2520,16, +0,294,1,1159,2521, +16,0,294,1,157, +1416,1,1413,2522,16, +0,294,1,1665,2523, +16,0,294,1,412, +2524,16,0,294,1, +1377,2525,16,0,294, +1,172,1443,1,1939, +2526,16,0,294,1, +437,2527,16,0,294, +1,188,1487,1,942, +1459,1,1195,2528,16, +0,294,1,1449,2529, +16,0,294,1,1701, +2530,16,0,294,1, +447,1480,1,205,2531, +16,0,294,1,827, +2532,16,0,294,1, +223,2533,16,0,294, +1,476,1518,1,477, +1524,1,1231,2534,16, +0,294,1,479,1534, +1,480,1539,1,1485, +2535,16,0,294,1, +1737,2536,16,0,294, +1,242,2537,16,0, +294,1,478,1557,1, +1001,1562,1,1002,1567, +1,30,2538,19,266, +1,30,2539,5,83, +1,1011,1079,1,1012, +2540,16,0,264,1, +1013,1234,1,262,1096, +1,1267,2541,16,0, +264,1,515,2542,16, +0,264,1,1521,2543, +16,0,264,1,525, +1192,1,283,1154,1, +2557,2544,16,0,264, +1,40,1143,1,42, +2545,16,0,264,1, +44,1159,1,47,1160, +1,1303,2546,16,0, +264,1,1555,2547,16, +0,264,1,50,1177, +1,48,1166,1,49, +1172,1,51,1182,1, +63,1198,1,305,1187, +1,66,1204,1,67, +1209,1,68,1214,1, +69,1219,1,70,1224, +1,73,2548,16,0, +264,1,74,1229,1, +328,1282,1,1048,1244, +1,82,2549,16,0, +264,1,1840,2550,16, +0,264,1,1591,2551, +16,0,264,1,1341, +2552,16,0,264,1, +1096,1292,1,93,1298, +1,352,1310,1,107, +2553,16,0,264,1, +1114,1322,1,118,1324, +1,1123,2554,16,0, +264,1,371,1334,1, +1628,2555,16,0,264, +1,375,1346,1,1882, +2556,16,0,264,1, +377,1352,1,379,1390, +1,380,1362,1,883, +2557,16,0,264,1, +373,1380,1,130,1385, +1,143,1395,1,387, +2558,16,0,264,1, +1159,2559,16,0,264, +1,157,1416,1,1413, +2560,16,0,264,1, +1665,2561,16,0,264, +1,412,2562,16,0, +264,1,1377,2563,16, +0,264,1,172,1443, +1,1939,2564,16,0, +264,1,437,2565,16, +0,264,1,188,1487, +1,942,1459,1,1195, +2566,16,0,264,1, +1449,2567,16,0,264, +1,1701,2568,16,0, +264,1,447,1480,1, +205,2569,16,0,264, +1,827,2570,16,0, +264,1,223,2571,16, +0,264,1,476,1518, +1,477,1524,1,1231, +2572,16,0,264,1, +479,1534,1,480,1539, +1,1485,2573,16,0, +264,1,1737,2574,16, +0,264,1,242,2575, +16,0,264,1,478, +1557,1,1001,1562,1, +1002,1567,1,31,2576, +19,248,1,31,2577, +5,83,1,1011,1079, +1,1012,2578,16,0, +246,1,1013,1234,1, +262,1096,1,1267,2579, +16,0,246,1,515, +2580,16,0,246,1, +1521,2581,16,0,246, +1,525,1192,1,283, +1154,1,2557,2582,16, +0,246,1,40,1143, +1,42,2583,16,0, +246,1,44,1159,1, +47,1160,1,1303,2584, +16,0,246,1,1555, +2585,16,0,246,1, +50,1177,1,48,1166, +1,49,1172,1,51, +1182,1,63,1198,1, +305,1187,1,66,1204, +1,67,1209,1,68, +1214,1,69,1219,1, +70,1224,1,73,2586, +16,0,246,1,74, +1229,1,328,1282,1, +1048,1244,1,82,2587, +16,0,246,1,1840, +2588,16,0,246,1, +1591,2589,16,0,246, +1,1341,2590,16,0, +246,1,1096,1292,1, +93,1298,1,352,1310, +1,107,2591,16,0, +246,1,1114,1322,1, +118,1324,1,1123,2592, +16,0,246,1,371, +1334,1,1628,2593,16, +0,246,1,375,1346, +1,1882,2594,16,0, +246,1,377,1352,1, +379,1390,1,380,1362, +1,883,2595,16,0, +246,1,373,1380,1, +130,1385,1,143,2596, +16,0,246,1,387, +2597,16,0,246,1, +1159,2598,16,0,246, +1,157,2599,16,0, +246,1,1413,2600,16, +0,246,1,1665,2601, +16,0,246,1,412, +2602,16,0,246,1, +1377,2603,16,0,246, +1,172,1443,1,1939, +2604,16,0,246,1, +437,2605,16,0,246, +1,188,1487,1,942, +1459,1,1195,2606,16, +0,246,1,1449,2607, +16,0,246,1,1701, +2608,16,0,246,1, +447,1480,1,205,2609, +16,0,246,1,827, +2610,16,0,246,1, +223,2611,16,0,246, +1,476,1518,1,477, +1524,1,1231,2612,16, +0,246,1,479,1534, +1,480,1539,1,1485, +2613,16,0,246,1, +1737,2614,16,0,246, +1,242,2615,16,0, +246,1,478,1557,1, +1001,1562,1,1002,1567, +1,32,2616,19,241, +1,32,2617,5,83, +1,1011,1079,1,1012, +2618,16,0,239,1, +1013,1234,1,262,1096, +1,1267,2619,16,0, +239,1,515,2620,16, +0,239,1,1521,2621, +16,0,239,1,525, +1192,1,283,1154,1, +2557,2622,16,0,239, +1,40,1143,1,42, +2623,16,0,239,1, +44,1159,1,47,1160, +1,1303,2624,16,0, +239,1,1555,2625,16, +0,239,1,50,1177, +1,48,1166,1,49, +1172,1,51,1182,1, +63,1198,1,305,1187, +1,66,1204,1,67, +1209,1,68,1214,1, +69,1219,1,70,1224, +1,73,2626,16,0, +239,1,74,1229,1, +328,1282,1,1048,1244, +1,82,2627,16,0, +239,1,1840,2628,16, +0,239,1,1591,2629, +16,0,239,1,1341, +2630,16,0,239,1, +1096,1292,1,93,1298, +1,352,1310,1,107, +2631,16,0,239,1, +1114,1322,1,118,1324, +1,1123,2632,16,0, +239,1,371,1334,1, +1628,2633,16,0,239, +1,375,1346,1,1882, +2634,16,0,239,1, +377,1352,1,379,1390, +1,380,1362,1,883, +2635,16,0,239,1, +373,1380,1,130,1385, +1,143,2636,16,0, +239,1,387,2637,16, +0,239,1,1159,2638, +16,0,239,1,157, +2639,16,0,239,1, +1413,2640,16,0,239, +1,1665,2641,16,0, +239,1,412,2642,16, +0,239,1,1377,2643, +16,0,239,1,172, +1443,1,1939,2644,16, +0,239,1,437,2645, +16,0,239,1,188, +1487,1,942,1459,1, +1195,2646,16,0,239, +1,1449,2647,16,0, +239,1,1701,2648,16, +0,239,1,447,1480, +1,205,2649,16,0, +239,1,827,2650,16, +0,239,1,223,2651, +16,0,239,1,476, +1518,1,477,1524,1, +1231,2652,16,0,239, +1,479,1534,1,480, +1539,1,1485,2653,16, +0,239,1,1737,2654, +16,0,239,1,242, +2655,16,0,239,1, +478,1557,1,1001,1562, +1,1002,1567,1,33, +2656,19,412,1,33, +2657,5,83,1,1011, +1079,1,1012,2658,16, +0,410,1,1013,1234, +1,262,1096,1,1267, +2659,16,0,410,1, +515,2660,16,0,410, +1,1521,2661,16,0, +410,1,525,1192,1, +283,1154,1,2557,2662, +16,0,410,1,40, +1143,1,42,2663,16, +0,410,1,44,1159, +1,47,1160,1,1303, +2664,16,0,410,1, +1555,2665,16,0,410, +1,50,1177,1,48, +1166,1,49,1172,1, +51,1182,1,63,1198, +1,305,1187,1,66, +1204,1,67,1209,1, +68,1214,1,69,1219, +1,70,1224,1,73, +2666,16,0,410,1, +74,1229,1,328,1282, +1,1048,1244,1,82, +2667,16,0,410,1, +1840,2668,16,0,410, +1,1591,2669,16,0, +410,1,1341,2670,16, +0,410,1,1096,1292, +1,93,1298,1,352, +1310,1,107,2671,16, +0,410,1,1114,1322, +1,118,1324,1,1123, +2672,16,0,410,1, +371,1334,1,1628,2673, +16,0,410,1,375, +1346,1,1882,2674,16, +0,410,1,377,1352, +1,379,1390,1,380, +1362,1,883,2675,16, +0,410,1,373,1380, +1,130,1385,1,143, +1395,1,387,2676,16, +0,410,1,1159,2677, +16,0,410,1,157, +1416,1,1413,2678,16, +0,410,1,1665,2679, +16,0,410,1,412, +2680,16,0,410,1, +1377,2681,16,0,410, +1,172,1443,1,1939, +2682,16,0,410,1, +437,2683,16,0,410, +1,188,1487,1,942, +1459,1,1195,2684,16, +0,410,1,1449,2685, +16,0,410,1,1701, +2686,16,0,410,1, +447,1480,1,205,2687, +16,0,410,1,827, +2688,16,0,410,1, +223,2689,16,0,410, +1,476,1518,1,477, +1524,1,1231,2690,16, +0,410,1,479,1534, +1,480,1539,1,1485, +2691,16,0,410,1, +1737,2692,16,0,410, +1,242,1552,1,478, +1557,1,1001,1562,1, +1002,1567,1,34,2693, +19,379,1,34,2694, +5,83,1,1011,1079, +1,1012,2695,16,0, +377,1,1013,1234,1, +262,1096,1,1267,2696, +16,0,377,1,515, +2697,16,0,377,1, +1521,2698,16,0,377, +1,525,1192,1,283, +1154,1,2557,2699,16, +0,377,1,40,1143, +1,42,2700,16,0, +377,1,44,1159,1, +47,1160,1,1303,2701, +16,0,377,1,1555, +2702,16,0,377,1, +50,1177,1,48,1166, +1,49,1172,1,51, +1182,1,63,1198,1, +305,1187,1,66,1204, +1,67,1209,1,68, +1214,1,69,1219,1, +70,1224,1,73,2703, +16,0,377,1,74, +1229,1,328,1282,1, +1048,1244,1,82,2704, +16,0,377,1,1840, +2705,16,0,377,1, +1591,2706,16,0,377, +1,1341,2707,16,0, +377,1,1096,1292,1, +93,1298,1,352,1310, +1,107,2708,16,0, +377,1,1114,1322,1, +118,1324,1,1123,2709, +16,0,377,1,371, +1334,1,1628,2710,16, +0,377,1,375,1346, +1,1882,2711,16,0, +377,1,377,1352,1, +379,1390,1,380,1362, +1,883,2712,16,0, +377,1,373,1380,1, +130,1385,1,143,1395, +1,387,2713,16,0, +377,1,1159,2714,16, +0,377,1,157,1416, +1,1413,2715,16,0, +377,1,1665,2716,16, +0,377,1,412,2717, +16,0,377,1,1377, +2718,16,0,377,1, +172,1443,1,1939,2719, +16,0,377,1,437, +2720,16,0,377,1, +188,1487,1,942,1459, +1,1195,2721,16,0, +377,1,1449,2722,16, +0,377,1,1701,2723, +16,0,377,1,447, +1480,1,205,1492,1, +827,2724,16,0,377, +1,223,1508,1,476, +1518,1,477,1524,1, +1231,2725,16,0,377, +1,479,1534,1,480, +1539,1,1485,2726,16, +0,377,1,1737,2727, +16,0,377,1,242, +1552,1,478,1557,1, +1001,1562,1,1002,1567, +1,35,2728,19,364, +1,35,2729,5,83, +1,1011,1079,1,1012, +2730,16,0,362,1, +1013,1234,1,262,1096, +1,1267,2731,16,0, +362,1,515,2732,16, +0,362,1,1521,2733, +16,0,362,1,525, +1192,1,283,1154,1, +2557,2734,16,0,362, +1,40,1143,1,42, +2735,16,0,362,1, +44,1159,1,47,1160, +1,1303,2736,16,0, +362,1,1555,2737,16, +0,362,1,50,1177, +1,48,1166,1,49, +1172,1,51,1182,1, +63,1198,1,305,1187, +1,66,1204,1,67, +1209,1,68,1214,1, +69,1219,1,70,1224, +1,73,2738,16,0, +362,1,74,1229,1, +328,1282,1,1048,1244, +1,82,2739,16,0, +362,1,1840,2740,16, +0,362,1,1591,2741, +16,0,362,1,1341, +2742,16,0,362,1, +1096,1292,1,93,1298, +1,352,1310,1,107, +2743,16,0,362,1, +1114,1322,1,118,1324, +1,1123,2744,16,0, +362,1,371,1334,1, +1628,2745,16,0,362, +1,375,1346,1,1882, +2746,16,0,362,1, +377,1352,1,379,1390, +1,380,1362,1,883, +2747,16,0,362,1, +373,1380,1,130,1385, +1,143,1395,1,387, +2748,16,0,362,1, +1159,2749,16,0,362, +1,157,1416,1,1413, +2750,16,0,362,1, +1665,2751,16,0,362, +1,412,2752,16,0, +362,1,1377,2753,16, +0,362,1,172,1443, +1,1939,2754,16,0, +362,1,437,2755,16, +0,362,1,188,1487, +1,942,1459,1,1195, +2756,16,0,362,1, +1449,2757,16,0,362, +1,1701,2758,16,0, +362,1,447,1480,1, +205,1492,1,827,2759, +16,0,362,1,223, +2760,16,0,362,1, +476,1518,1,477,1524, +1,1231,2761,16,0, +362,1,479,1534,1, +480,1539,1,1485,2762, +16,0,362,1,1737, +2763,16,0,362,1, +242,1552,1,478,1557, +1,1001,1562,1,1002, +1567,1,36,2764,19, +216,1,36,2765,5, +90,1,256,2766,16, +0,214,1,1261,2767, +16,0,214,1,509, +2768,16,0,214,1, +1515,2769,16,0,214, +1,2021,709,1,1775, +2770,16,0,214,1, +2029,716,1,2030,722, +1,2031,727,1,2032, +732,1,2033,737,1, +277,2771,16,0,214, +1,2035,743,1,2037, +748,1,2039,753,1, +32,2772,16,0,214, +1,2041,759,1,2043, +764,1,2045,769,1, +41,2773,16,0,214, +1,1297,2774,16,0, +214,1,43,2775,16, +0,214,1,1802,777, +1,1804,2776,16,0, +214,1,299,2777,16, +0,214,1,2310,2778, +16,0,214,1,52, +2779,16,0,214,1, +525,2780,16,0,214, +1,2075,2781,16,0, +214,1,1574,790,1, +71,2782,16,0,214, +1,76,2783,16,0, +214,1,1834,2784,16, +0,214,1,79,2785, +16,0,214,1,1335, +2786,16,0,214,1, +322,2787,16,0,214, +1,85,2788,16,0, +214,1,89,2789,16, +0,214,1,346,2790, +16,0,214,1,2355, +804,1,2105,810,1, +2106,2791,16,0,214, +1,2359,816,1,2361, +821,1,1860,827,1, +97,2792,16,0,214, +1,112,2793,16,0, +214,1,1117,2794,16, +0,214,1,1873,836, +1,102,2795,16,0, +214,1,1876,2796,16, +0,214,1,2551,2797, +16,0,214,1,124, +2798,16,0,214,1, +2136,845,1,381,2799, +16,0,214,1,137, +2800,16,0,214,1, +1901,2801,16,0,214, +1,1153,2802,16,0, +214,1,151,2803,16, +0,214,1,1407,2804, +16,0,214,1,1659, +2805,16,0,214,1, +406,2806,16,0,214, +1,1371,2807,16,0, +214,1,166,2808,16, +0,214,1,1622,2809, +16,0,214,1,2356, +861,1,1931,866,1, +1933,2810,16,0,214, +1,431,2811,16,0, +214,1,1585,2812,16, +0,214,1,182,2813, +16,0,214,1,1189, +2814,16,0,214,1, +1443,2815,16,0,214, +1,1695,2816,16,0, +214,1,2198,2817,16, +0,214,1,447,2818, +16,0,214,1,199, +2819,16,0,214,1, +1958,2820,16,0,214, +1,1657,883,1,459, +2821,16,0,214,1, +462,2822,16,0,214, +1,217,2823,16,0, +214,1,2227,891,1, +1225,2824,16,0,214, +1,1479,2825,16,0, +214,1,1731,2826,16, +0,214,1,1989,899, +1,1990,2827,16,0, +214,1,236,2828,16, +0,214,1,1756,2829, +16,0,214,1,37, +2830,19,232,1,37, +2831,5,90,1,256, +2832,16,0,230,1, +1261,2833,16,0,230, +1,509,2834,16,0, +230,1,1515,2835,16, +0,230,1,2021,709, +1,1775,2836,16,0, +230,1,2029,716,1, +2030,722,1,2031,727, +1,2032,732,1,2033, +737,1,277,2837,16, +0,230,1,2035,743, +1,2037,748,1,2039, +753,1,32,2838,16, +0,230,1,2041,759, +1,2043,764,1,2045, +769,1,41,2839,16, +0,230,1,1297,2840, +16,0,230,1,43, +2841,16,0,230,1, +1802,777,1,1804,2842, +16,0,230,1,299, +2843,16,0,230,1, +2310,2844,16,0,230, +1,52,2845,16,0, +230,1,525,2846,16, +0,230,1,2075,2847, +16,0,230,1,1574, +790,1,71,2848,16, +0,230,1,76,2849, +16,0,230,1,1834, +2850,16,0,230,1, +79,2851,16,0,230, +1,1335,2852,16,0, +230,1,322,2853,16, +0,230,1,85,2854, +16,0,230,1,89, +2855,16,0,230,1, +346,2856,16,0,230, +1,2355,804,1,2105, +810,1,2106,2857,16, +0,230,1,2359,816, +1,2361,821,1,1860, +827,1,97,2858,16, +0,230,1,112,2859, +16,0,230,1,1117, +2860,16,0,230,1, +1873,836,1,102,2861, +16,0,230,1,1876, +2862,16,0,230,1, +2551,2863,16,0,230, +1,124,2864,16,0, +230,1,2136,845,1, +381,2865,16,0,230, +1,137,2866,16,0, +230,1,1901,2867,16, +0,230,1,1153,2868, +16,0,230,1,151, +2869,16,0,230,1, +1407,2870,16,0,230, +1,1659,2871,16,0, +230,1,406,2872,16, +0,230,1,1371,2873, +16,0,230,1,166, +2874,16,0,230,1, +1622,2875,16,0,230, +1,2356,861,1,1931, +866,1,1933,2876,16, +0,230,1,431,2877, +16,0,230,1,1585, +2878,16,0,230,1, +182,2879,16,0,230, +1,1189,2880,16,0, +230,1,1443,2881,16, +0,230,1,1695,2882, +16,0,230,1,2198, +2883,16,0,230,1, +447,2884,16,0,230, +1,199,2885,16,0, +230,1,1958,2886,16, +0,230,1,1657,883, +1,459,2887,16,0, +230,1,462,2888,16, +0,230,1,217,2889, +16,0,230,1,2227, +891,1,1225,2890,16, +0,230,1,1479,2891, +16,0,230,1,1731, +2892,16,0,230,1, +1989,899,1,1990,2893, +16,0,230,1,236, +2894,16,0,230,1, +1756,2895,16,0,230, +1,38,2896,19,229, +1,38,2897,5,83, +1,1011,1079,1,1012, +2898,16,0,227,1, +1013,1234,1,262,1096, +1,1267,2899,16,0, +227,1,515,2900,16, +0,227,1,1521,2901, +16,0,227,1,525, +1192,1,283,1154,1, +2557,2902,16,0,227, +1,40,1143,1,42, +2903,16,0,227,1, +44,1159,1,47,1160, +1,1303,2904,16,0, +227,1,1555,2905,16, +0,227,1,50,1177, +1,48,1166,1,49, +1172,1,51,1182,1, +63,1198,1,305,1187, +1,66,1204,1,67, +1209,1,68,1214,1, +69,1219,1,70,1224, +1,73,2906,16,0, +227,1,74,1229,1, +328,1282,1,1048,1244, +1,82,2907,16,0, +227,1,1840,2908,16, +0,227,1,1591,2909, +16,0,227,1,1341, +2910,16,0,227,1, +1096,1292,1,93,1298, +1,352,1310,1,107, +2911,16,0,227,1, +1114,1322,1,118,1324, +1,1123,2912,16,0, +227,1,371,1334,1, +1628,2913,16,0,227, +1,375,1346,1,1882, +2914,16,0,227,1, +377,1352,1,379,1390, +1,380,1362,1,883, +1368,1,373,1380,1, +130,1385,1,143,1395, +1,387,2915,16,0, +227,1,1159,2916,16, +0,227,1,157,1416, +1,1413,2917,16,0, +227,1,1665,2918,16, +0,227,1,412,2919, +16,0,227,1,1377, +2920,16,0,227,1, +172,1443,1,1939,2921, +16,0,227,1,437, +2922,16,0,227,1, +188,1487,1,942,1459, +1,1195,2923,16,0, +227,1,1449,2924,16, +0,227,1,1701,2925, +16,0,227,1,447, +1480,1,205,1492,1, +827,1357,1,223,1508, +1,476,1518,1,477, +1524,1,1231,2926,16, +0,227,1,479,1534, +1,480,1539,1,1485, +2927,16,0,227,1, +1737,2928,16,0,227, +1,242,1552,1,478, +1557,1,1001,1562,1, +1002,1567,1,39,2929, +19,222,1,39,2930, +5,83,1,1011,1079, +1,1012,2931,16,0, +220,1,1013,1234,1, +262,1096,1,1267,2932, +16,0,220,1,515, +2933,16,0,220,1, +1521,2934,16,0,220, +1,525,1192,1,283, +1154,1,2557,2935,16, +0,220,1,40,1143, +1,42,2936,16,0, +220,1,44,1159,1, +47,1160,1,1303,2937, +16,0,220,1,1555, +2938,16,0,220,1, +50,1177,1,48,1166, +1,49,1172,1,51, +1182,1,63,1198,1, +305,1187,1,66,1204, +1,67,1209,1,68, +1214,1,69,1219,1, +70,1224,1,73,2939, +16,0,220,1,74, +1229,1,328,1282,1, +1048,1244,1,82,2940, +16,0,220,1,1840, +2941,16,0,220,1, +1591,2942,16,0,220, +1,1341,2943,16,0, +220,1,1096,1292,1, +93,1298,1,352,1310, +1,107,2944,16,0, +220,1,1114,1322,1, +118,1324,1,1123,2945, +16,0,220,1,371, +1334,1,1628,2946,16, +0,220,1,375,1346, +1,1882,2947,16,0, +220,1,377,1352,1, +379,1390,1,380,1362, +1,883,1368,1,373, +1380,1,130,1385,1, +143,1395,1,387,2948, +16,0,220,1,1159, +2949,16,0,220,1, +157,1416,1,1413,2950, +16,0,220,1,1665, +2951,16,0,220,1, +412,2952,16,0,220, +1,1377,2953,16,0, +220,1,172,1443,1, +1939,2954,16,0,220, +1,437,2955,16,0, +220,1,188,1487,1, +942,1459,1,1195,2956, +16,0,220,1,1449, +2957,16,0,220,1, +1701,2958,16,0,220, +1,447,1480,1,205, +1492,1,827,1357,1, +223,1508,1,476,1518, +1,477,1524,1,1231, +2959,16,0,220,1, +479,1534,1,480,1539, +1,1485,2960,16,0, +220,1,1737,2961,16, +0,220,1,242,1552, +1,478,1557,1,1001, +1562,1,1002,1567,1, +40,2962,19,210,1, +40,2963,5,83,1, +1011,1079,1,1012,2964, +16,0,208,1,1013, +1234,1,262,1096,1, +1267,2965,16,0,208, +1,515,2966,16,0, +208,1,1521,2967,16, +0,208,1,525,1192, +1,283,1154,1,2557, +2968,16,0,208,1, +40,1143,1,42,2969, +16,0,208,1,44, +1159,1,47,1160,1, +1303,2970,16,0,208, +1,1555,2971,16,0, +208,1,50,1177,1, +48,1166,1,49,1172, +1,51,1182,1,63, +1198,1,305,1187,1, +66,1204,1,67,1209, +1,68,1214,1,69, +1219,1,70,1224,1, +73,2972,16,0,208, +1,74,1229,1,328, +1282,1,1048,1244,1, +82,2973,16,0,208, +1,1840,2974,16,0, +208,1,1591,2975,16, +0,208,1,1341,2976, +16,0,208,1,1096, +1292,1,93,1298,1, +352,1310,1,107,2977, +16,0,208,1,1114, +1322,1,118,2978,16, +0,208,1,1123,2979, +16,0,208,1,371, +1334,1,1628,2980,16, +0,208,1,375,1346, +1,1882,2981,16,0, +208,1,377,1352,1, +379,1390,1,380,1362, +1,883,2982,16,0, +208,1,373,1380,1, +130,2983,16,0,208, +1,143,2984,16,0, +208,1,387,2985,16, +0,208,1,1159,2986, +16,0,208,1,157, +2987,16,0,208,1, +1413,2988,16,0,208, +1,1665,2989,16,0, +208,1,412,2990,16, +0,208,1,1377,2991, +16,0,208,1,172, +2992,16,0,208,1, +1939,2993,16,0,208, +1,437,2994,16,0, +208,1,188,2995,16, +0,208,1,942,1459, +1,1195,2996,16,0, +208,1,1449,2997,16, +0,208,1,1701,2998, +16,0,208,1,447, +1480,1,205,2999,16, +0,208,1,827,3000, +16,0,208,1,223, +3001,16,0,208,1, +476,1518,1,477,1524, +1,1231,3002,16,0, +208,1,479,1534,1, +480,1539,1,1485,3003, +16,0,208,1,1737, +3004,16,0,208,1, +242,3005,16,0,208, +1,478,1557,1,1001, +1562,1,1002,1567,1, +41,3006,19,172,1, +41,3007,5,83,1, +1011,1079,1,1012,3008, +16,0,170,1,1013, +1234,1,262,1096,1, +1267,3009,16,0,170, +1,515,3010,16,0, +170,1,1521,3011,16, +0,170,1,525,1192, +1,283,1154,1,2557, +3012,16,0,170,1, +40,1143,1,42,3013, +16,0,170,1,44, +1159,1,47,1160,1, +1303,3014,16,0,170, +1,1555,3015,16,0, +170,1,50,1177,1, +48,1166,1,49,1172, +1,51,1182,1,63, +1198,1,305,1187,1, +66,1204,1,67,1209, +1,68,1214,1,69, +1219,1,70,1224,1, +73,3016,16,0,170, +1,74,1229,1,328, +1282,1,1048,1244,1, +82,3017,16,0,170, +1,1840,3018,16,0, +170,1,1591,3019,16, +0,170,1,1341,3020, +16,0,170,1,1096, +1292,1,93,1298,1, +352,1310,1,107,3021, +16,0,170,1,1114, +1322,1,118,3022,16, +0,170,1,1123,3023, +16,0,170,1,371, +1334,1,1628,3024,16, +0,170,1,375,1346, +1,1882,3025,16,0, +170,1,377,1352,1, +379,1390,1,380,1362, +1,883,3026,16,0, +170,1,373,1380,1, +130,3027,16,0,170, +1,143,3028,16,0, +170,1,387,3029,16, +0,170,1,1159,3030, +16,0,170,1,157, +3031,16,0,170,1, +1413,3032,16,0,170, +1,1665,3033,16,0, +170,1,412,3034,16, +0,170,1,1377,3035, +16,0,170,1,172, +3036,16,0,170,1, +1939,3037,16,0,170, +1,437,3038,16,0, +170,1,188,3039,16, +0,170,1,942,1459, +1,1195,3040,16,0, +170,1,1449,3041,16, +0,170,1,1701,3042, +16,0,170,1,447, +1480,1,205,3043,16, +0,170,1,827,3044, +16,0,170,1,223, +3045,16,0,170,1, +476,1518,1,477,1524, +1,1231,3046,16,0, +170,1,479,1534,1, +480,1539,1,1485,3047, +16,0,170,1,1737, +3048,16,0,170,1, +242,3049,16,0,170, +1,478,1557,1,1001, +1562,1,1002,1567,1, +42,3050,19,436,1, +42,3051,5,36,1, +2075,3052,16,0,434, +1,1860,827,1,2198, +3053,16,0,434,1, +1873,836,1,2310,3054, +16,0,434,1,1657, +883,1,1989,899,1, +1990,3055,16,0,434, +1,1775,3056,16,0, +434,1,32,3057,16, +0,434,1,2356,861, +1,2105,810,1,2106, +3058,16,0,434,1, +2359,816,1,2227,891, +1,1901,3059,16,0, +434,1,1802,777,1, +2021,709,1,1804,3060, +16,0,434,1,2136, +845,1,2355,804,1, +2029,716,1,2030,722, +1,2031,727,1,2032, +732,1,2033,737,1, +2361,821,1,2035,743, +1,2037,748,1,2039, +753,1,1931,866,1, +2041,759,1,2043,764, +1,2045,769,1,1574, +790,1,1958,3061,16, +0,434,1,43,3062, +19,474,1,43,3063, +5,24,1,2035,743, +1,2037,748,1,2039, +753,1,2041,759,1, +2227,891,1,2043,764, +1,1860,827,1,2021, +709,1,2031,727,1, +1574,790,1,2136,845, +1,1873,836,1,2356, +861,1,1802,777,1, +2105,3064,16,0,576, +1,1989,3065,16,0, +472,1,1657,883,1, +2361,821,1,2029,716, +1,2030,722,1,1931, +866,1,2032,732,1, +2033,737,1,2045,769, +1,44,3066,19,259, +1,44,3067,5,36, +1,2075,3068,16,0, +257,1,1860,827,1, +2198,3069,16,0,257, +1,1873,836,1,2310, +3070,16,0,257,1, +1657,883,1,1989,899, +1,1990,3071,16,0, +257,1,1775,3072,16, +0,257,1,32,3073, +16,0,257,1,2356, +861,1,2105,810,1, +2106,3074,16,0,257, +1,2359,816,1,2227, +891,1,1901,3075,16, +0,257,1,1802,777, +1,2021,709,1,1804, +3076,16,0,257,1, +2136,845,1,2355,804, +1,2029,716,1,2030, +722,1,2031,727,1, +2032,732,1,2033,737, +1,2361,821,1,2035, +743,1,2037,748,1, +2039,753,1,1931,866, +1,2041,759,1,2043, +764,1,2045,769,1, +1574,790,1,1958,3077, +16,0,257,1,45, +3078,19,321,1,45, +3079,5,37,1,2075, +3080,16,0,368,1, +1860,827,1,2198,3081, +16,0,368,1,1873, +836,1,2310,3082,16, +0,368,1,1657,883, +1,1989,899,1,1990, +3083,16,0,368,1, +1775,3084,16,0,368, +1,32,3085,16,0, +368,1,2356,861,1, +2105,810,1,2106,3086, +16,0,368,1,2359, +816,1,2227,891,1, +1901,3087,16,0,368, +1,1802,777,1,2021, +709,1,1804,3088,16, +0,368,1,2136,845, +1,2355,804,1,2029, +716,1,2030,722,1, +2031,727,1,2032,732, +1,2033,737,1,2361, +821,1,2035,743,1, +2037,748,1,2039,753, +1,1931,866,1,2041, +759,1,2043,764,1, +2045,769,1,1832,3089, +16,0,319,1,1574, +790,1,1958,3090,16, +0,368,1,46,3091, +19,661,1,46,3092, +5,36,1,2075,3093, +16,0,659,1,1860, +827,1,2198,3094,16, +0,659,1,1873,836, +1,2310,3095,16,0, +659,1,1657,883,1, +1989,899,1,1990,3096, +16,0,659,1,1775, +3097,16,0,659,1, +32,3098,16,0,659, +1,2356,861,1,2105, +810,1,2106,3099,16, +0,659,1,2359,816, +1,2227,891,1,1901, +3100,16,0,659,1, +1802,777,1,2021,709, +1,1804,3101,16,0, +659,1,2136,845,1, +2355,804,1,2029,716, +1,2030,722,1,2031, +727,1,2032,732,1, +2033,737,1,2361,821, +1,2035,743,1,2037, +748,1,2039,753,1, +1931,866,1,2041,759, +1,2043,764,1,2045, +769,1,1574,790,1, +1958,3102,16,0,659, +1,47,3103,19,546, +1,47,3104,5,19, +1,0,3105,16,0, +544,1,2548,3106,17, +3107,15,3108,4,50, +37,0,71,0,108, +0,111,0,98,0, +97,0,108,0,70, +0,117,0,110,0, +99,0,116,0,105, +0,111,0,110,0, +68,0,101,0,102, +0,105,0,110,0, +105,0,116,0,105, +0,111,0,110,0, +1,-1,1,5,3109, +20,3110,4,52,71, +0,108,0,111,0, +98,0,97,0,108, +0,70,0,117,0, +110,0,99,0,116, +0,105,0,111,0, +110,0,68,0,101, +0,102,0,105,0, +110,0,105,0,116, +0,105,0,111,0, +110,0,95,0,49, +0,1,149,1,3, +1,6,1,5,3111, +22,1,9,1,2599, +3112,16,0,544,1, +2527,693,1,2529,3113, +16,0,544,1,2532, +676,1,2453,670,1, +2608,3114,17,3115,15, +3116,4,36,37,0, +71,0,108,0,111, +0,98,0,97,0, +108,0,68,0,101, +0,102,0,105,0, +110,0,105,0,116, +0,105,0,111,0, +110,0,115,0,1, +-1,1,5,3117,20, +3118,4,38,71,0, +108,0,111,0,98, +0,97,0,108,0, +68,0,101,0,102, +0,105,0,110,0, +105,0,116,0,105, +0,111,0,110,0, +115,0,95,0,51, +0,1,145,1,3, +1,2,1,1,3119, +22,1,5,1,2609, +3120,17,3121,15,3116, +1,-1,1,5,3122, +20,3123,4,38,71, +0,108,0,111,0, +98,0,97,0,108, +0,68,0,101,0, +102,0,105,0,110, +0,105,0,116,0, +105,0,111,0,110, +0,115,0,95,0, +49,0,1,143,1, +3,1,2,1,1, +3124,22,1,3,1, +2576,3125,17,3126,15, +3127,4,52,37,0, +71,0,108,0,111, +0,98,0,97,0, +108,0,86,0,97, +0,114,0,105,0, +97,0,98,0,108, +0,101,0,68,0, +101,0,99,0,108, +0,97,0,114,0, +97,0,116,0,105, +0,111,0,110,0, +1,-1,1,5,3128, +20,3129,4,54,71, +0,108,0,111,0, +98,0,97,0,108, +0,86,0,97,0, +114,0,105,0,97, +0,98,0,108,0, +101,0,68,0,101, +0,99,0,108,0, +97,0,114,0,97, +0,116,0,105,0, +111,0,110,0,95, +0,50,0,1,148, +1,3,1,5,1, +4,3130,22,1,8, +1,2022,3131,16,0, +568,1,2356,861,1, +2533,688,1,2606,3132, +17,3133,15,3116,1, +-1,1,5,3134,20, +3135,4,38,71,0, +108,0,111,0,98, +0,97,0,108,0, +68,0,101,0,102, +0,105,0,110,0, +105,0,116,0,105, +0,111,0,110,0, +115,0,95,0,52, +0,1,146,1,3, +1,3,1,2,3136, +22,1,6,1,2607, +3137,17,3138,15,3116, +1,-1,1,5,3139, +20,3140,4,38,71, +0,108,0,111,0, +98,0,97,0,108, +0,68,0,101,0, +102,0,105,0,110, +0,105,0,116,0, +105,0,111,0,110, +0,115,0,95,0, +50,0,1,144,1, +3,1,3,1,2, +3141,22,1,4,1, +2361,821,1,2363,3142, +17,3143,15,3108,1, +-1,1,5,3144,20, +3145,4,52,71,0, +108,0,111,0,98, +0,97,0,108,0, +70,0,117,0,110, +0,99,0,116,0, +105,0,111,0,110, +0,68,0,101,0, +102,0,105,0,110, +0,105,0,116,0, +105,0,111,0,110, +0,95,0,50,0, +1,150,1,3,1, +7,1,6,3146,22, +1,10,1,2587,3147, +17,3148,15,3127,1, +-1,1,5,3149,20, +3150,4,54,71,0, +108,0,111,0,98, +0,97,0,108,0, +86,0,97,0,114, +0,105,0,97,0, +98,0,108,0,101, +0,68,0,101,0, +99,0,108,0,97, +0,114,0,97,0, +116,0,105,0,111, +0,110,0,95,0, +49,0,1,147,1, +3,1,3,1,2, +3151,22,1,7,1, +2588,3152,16,0,544, +1,48,3153,19,493, +1,48,3154,5,52, +1,0,3155,16,0, +645,1,2075,3156,16, +0,491,1,1860,827, +1,2198,3157,16,0, +491,1,1657,883,1, +2527,693,1,2310,3158, +16,0,491,1,2529, +3159,16,0,645,1, +2029,716,1,2532,676, +1,2032,732,1,1989, +899,1,1990,3160,16, +0,491,1,1775,3161, +16,0,491,1,32, +3162,16,0,491,1, +2105,810,1,2106,3163, +16,0,491,1,2043, +764,1,2548,3106,1, +2227,891,1,1901,3164, +16,0,491,1,2587, +3147,1,2453,670,1, +1802,777,1,2021,709, +1,1804,3165,16,0, +491,1,2136,845,1, +2355,804,1,2356,861, +1,2030,722,1,2576, +3125,1,2359,816,1, +2033,737,1,2361,821, +1,2035,743,1,2363, +3142,1,2037,748,1, +2039,753,1,1931,866, +1,2041,759,1,1873, +836,1,2588,3166,16, +0,645,1,2045,769, +1,1574,790,1,2031, +727,1,2599,3167,16, +0,645,1,2606,3132, +1,2607,3137,1,2608, +3114,1,2609,3120,1, +1958,3168,16,0,491, +1,2533,688,1,49, +3169,19,498,1,49, +3170,5,36,1,2075, +3171,16,0,496,1, +1860,827,1,2198,3172, +16,0,496,1,1873, +836,1,2310,3173,16, +0,496,1,1657,883, +1,1989,899,1,1990, +3174,16,0,496,1, +1775,3175,16,0,496, +1,32,3176,16,0, +496,1,2356,861,1, +2105,810,1,2106,3177, +16,0,496,1,2359, +816,1,2227,891,1, +1901,3178,16,0,496, +1,1802,777,1,2021, +709,1,1804,3179,16, +0,496,1,2136,845, +1,2355,804,1,2029, +716,1,2030,722,1, +2031,727,1,2032,732, +1,2033,737,1,2361, +821,1,2035,743,1, +2037,748,1,2039,753, +1,1931,866,1,2041, +759,1,2043,764,1, +2045,769,1,1574,790, +1,1958,3180,16,0, +496,1,50,3181,19, +615,1,50,3182,5, +36,1,2075,3183,16, +0,613,1,1860,827, +1,2198,3184,16,0, +613,1,1873,836,1, +2310,3185,16,0,613, +1,1657,883,1,1989, +899,1,1990,3186,16, +0,613,1,1775,3187, +16,0,613,1,32, +3188,16,0,613,1, +2356,861,1,2105,810, +1,2106,3189,16,0, +613,1,2359,816,1, +2227,891,1,1901,3190, +16,0,613,1,1802, +777,1,2021,709,1, +1804,3191,16,0,613, +1,2136,845,1,2355, +804,1,2029,716,1, +2030,722,1,2031,727, +1,2032,732,1,2033, +737,1,2361,821,1, +2035,743,1,2037,748, +1,2039,753,1,1931, +866,1,2041,759,1, +2043,764,1,2045,769, +1,1574,790,1,1958, +3192,16,0,613,1, +51,3193,19,127,1, +51,3194,5,51,1, +0,3195,16,0,125, +1,2402,3196,16,0, +125,1,1860,827,1, +10,3197,16,0,125, +1,2198,3198,16,0, +125,1,1873,836,1, +2310,3199,16,0,125, +1,1657,883,1,21, +3200,16,0,125,1, +2031,727,1,2032,732, +1,1989,899,1,2535, +3201,16,0,125,1, +1775,3202,16,0,125, +1,32,3203,16,0, +125,1,2105,810,1, +2106,3204,16,0,125, +1,2043,764,1,2548, +3106,1,2227,891,1, +1901,3205,16,0,125, +1,52,3206,16,0, +125,1,1802,777,1, +2021,709,1,1804,3207, +16,0,125,1,2136, +845,1,2355,804,1, +2356,861,1,2030,722, +1,2576,3125,1,2359, +816,1,2033,737,1, +2361,821,1,2035,743, +1,2363,3142,1,2037, +748,1,2039,753,1, +1931,866,1,2041,759, +1,2587,3147,1,2588, +3208,16,0,125,1, +2045,769,1,1574,790, +1,2029,716,1,1990, +3209,16,0,125,1, +2075,3210,16,0,125, +1,2606,3132,1,2607, +3137,1,2608,3114,1, +2609,3120,1,1958,3211, +16,0,125,1,52, +3212,19,124,1,52, +3213,5,51,1,0, +3214,16,0,122,1, +2402,3215,16,0,122, +1,1860,827,1,10, +3216,16,0,122,1, +2198,3217,16,0,122, +1,1873,836,1,2310, +3218,16,0,122,1, +1657,883,1,21,3219, +16,0,122,1,2031, +727,1,2032,732,1, +1989,899,1,2535,3220, +16,0,122,1,1775, +3221,16,0,122,1, +32,3222,16,0,122, +1,2105,810,1,2106, +3223,16,0,122,1, +2043,764,1,2548,3106, +1,2227,891,1,1901, +3224,16,0,122,1, +52,3225,16,0,122, +1,1802,777,1,2021, +709,1,1804,3226,16, +0,122,1,2136,845, +1,2355,804,1,2356, +861,1,2030,722,1, +2576,3125,1,2359,816, +1,2033,737,1,2361, +821,1,2035,743,1, +2363,3142,1,2037,748, +1,2039,753,1,1931, +866,1,2041,759,1, +2587,3147,1,2588,3227, +16,0,122,1,2045, +769,1,1574,790,1, +2029,716,1,1990,3228, +16,0,122,1,2075, +3229,16,0,122,1, +2606,3132,1,2607,3137, +1,2608,3114,1,2609, +3120,1,1958,3230,16, +0,122,1,53,3231, +19,121,1,53,3232, +5,51,1,0,3233, +16,0,119,1,2402, +3234,16,0,119,1, +1860,827,1,10,3235, +16,0,119,1,2198, +3236,16,0,119,1, +1873,836,1,2310,3237, +16,0,119,1,1657, +883,1,21,3238,16, +0,119,1,2031,727, +1,2032,732,1,1989, +899,1,2535,3239,16, +0,119,1,1775,3240, +16,0,119,1,32, +3241,16,0,119,1, +2105,810,1,2106,3242, +16,0,119,1,2043, +764,1,2548,3106,1, +2227,891,1,1901,3243, +16,0,119,1,52, +3244,16,0,119,1, +1802,777,1,2021,709, +1,1804,3245,16,0, +119,1,2136,845,1, +2355,804,1,2356,861, +1,2030,722,1,2576, +3125,1,2359,816,1, +2033,737,1,2361,821, +1,2035,743,1,2363, +3142,1,2037,748,1, +2039,753,1,1931,866, +1,2041,759,1,2587, +3147,1,2588,3246,16, +0,119,1,2045,769, +1,1574,790,1,2029, +716,1,1990,3247,16, +0,119,1,2075,3248, +16,0,119,1,2606, +3132,1,2607,3137,1, +2608,3114,1,2609,3120, +1,1958,3249,16,0, +119,1,54,3250,19, +118,1,54,3251,5, +51,1,0,3252,16, +0,116,1,2402,3253, +16,0,116,1,1860, +827,1,10,3254,16, +0,116,1,2198,3255, +16,0,116,1,1873, +836,1,2310,3256,16, +0,116,1,1657,883, +1,21,3257,16,0, +116,1,2031,727,1, +2032,732,1,1989,899, +1,2535,3258,16,0, +116,1,1775,3259,16, +0,116,1,32,3260, +16,0,116,1,2105, +810,1,2106,3261,16, +0,116,1,2043,764, +1,2548,3106,1,2227, +891,1,1901,3262,16, +0,116,1,52,3263, +16,0,116,1,1802, +777,1,2021,709,1, +1804,3264,16,0,116, +1,2136,845,1,2355, +804,1,2356,861,1, +2030,722,1,2576,3125, +1,2359,816,1,2033, +737,1,2361,821,1, +2035,743,1,2363,3142, +1,2037,748,1,2039, +753,1,1931,866,1, +2041,759,1,2587,3147, +1,2588,3265,16,0, +116,1,2045,769,1, +1574,790,1,2029,716, +1,1990,3266,16,0, +116,1,2075,3267,16, +0,116,1,2606,3132, +1,2607,3137,1,2608, +3114,1,2609,3120,1, +1958,3268,16,0,116, +1,55,3269,19,115, +1,55,3270,5,51, +1,0,3271,16,0, +113,1,2402,3272,16, +0,113,1,1860,827, +1,10,3273,16,0, +113,1,2198,3274,16, +0,113,1,1873,836, +1,2310,3275,16,0, +113,1,1657,883,1, +21,3276,16,0,113, +1,2031,727,1,2032, +732,1,1989,899,1, +2535,3277,16,0,113, +1,1775,3278,16,0, +113,1,32,3279,16, +0,113,1,2105,810, +1,2106,3280,16,0, +113,1,2043,764,1, +2548,3106,1,2227,891, +1,1901,3281,16,0, +113,1,52,3282,16, +0,113,1,1802,777, +1,2021,709,1,1804, +3283,16,0,113,1, +2136,845,1,2355,804, +1,2356,861,1,2030, +722,1,2576,3125,1, +2359,816,1,2033,737, +1,2361,821,1,2035, +743,1,2363,3142,1, +2037,748,1,2039,753, +1,1931,866,1,2041, +759,1,2587,3147,1, +2588,3284,16,0,113, +1,2045,769,1,1574, +790,1,2029,716,1, +1990,3285,16,0,113, +1,2075,3286,16,0, +113,1,2606,3132,1, +2607,3137,1,2608,3114, +1,2609,3120,1,1958, +3287,16,0,113,1, +56,3288,19,112,1, +56,3289,5,51,1, +0,3290,16,0,110, +1,2402,3291,16,0, +110,1,1860,827,1, +10,3292,16,0,110, +1,2198,3293,16,0, +110,1,1873,836,1, +2310,3294,16,0,110, +1,1657,883,1,21, +3295,16,0,110,1, +2031,727,1,2032,732, +1,1989,899,1,2535, +3296,16,0,110,1, +1775,3297,16,0,110, +1,32,3298,16,0, +110,1,2105,810,1, +2106,3299,16,0,110, +1,2043,764,1,2548, +3106,1,2227,891,1, +1901,3300,16,0,110, +1,52,3301,16,0, +110,1,1802,777,1, +2021,709,1,1804,3302, +16,0,110,1,2136, +845,1,2355,804,1, +2356,861,1,2030,722, +1,2576,3125,1,2359, +816,1,2033,737,1, +2361,821,1,2035,743, +1,2363,3142,1,2037, +748,1,2039,753,1, +1931,866,1,2041,759, +1,2587,3147,1,2588, +3303,16,0,110,1, +2045,769,1,1574,790, +1,2029,716,1,1990, +3304,16,0,110,1, +2075,3305,16,0,110, +1,2606,3132,1,2607, +3137,1,2608,3114,1, +2609,3120,1,1958,3306, +16,0,110,1,57, +3307,19,109,1,57, +3308,5,51,1,0, +3309,16,0,107,1, +2402,3310,16,0,107, +1,1860,827,1,10, +3311,16,0,107,1, +2198,3312,16,0,107, +1,1873,836,1,2310, +3313,16,0,107,1, +1657,883,1,21,3314, +16,0,107,1,2031, +727,1,2032,732,1, +1989,899,1,2535,3315, +16,0,107,1,1775, +3316,16,0,107,1, +32,3317,16,0,107, +1,2105,810,1,2106, +3318,16,0,107,1, +2043,764,1,2548,3106, +1,2227,891,1,1901, +3319,16,0,107,1, +52,3320,16,0,107, +1,1802,777,1,2021, +709,1,1804,3321,16, +0,107,1,2136,845, +1,2355,804,1,2356, +861,1,2030,722,1, +2576,3125,1,2359,816, +1,2033,737,1,2361, +821,1,2035,743,1, +2363,3142,1,2037,748, +1,2039,753,1,1931, +866,1,2041,759,1, +2587,3147,1,2588,3322, +16,0,107,1,2045, +769,1,1574,790,1, +2029,716,1,1990,3323, +16,0,107,1,2075, +3324,16,0,107,1, +2606,3132,1,2607,3137, +1,2608,3114,1,2609, +3120,1,1958,3325,16, +0,107,1,58,3326, +19,428,1,58,3327, +5,9,1,2415,1591, +1,2417,3328,16,0, +426,1,2456,3329,16, +0,426,1,2452,1600, +1,2454,1606,1,2491, +3330,16,0,426,1, +2356,861,1,2361,821, +1,2367,3331,16,0, +426,1,59,3332,19, +344,1,59,3333,5, +9,1,2415,1591,1, +2417,3334,16,0,342, +1,2456,3335,16,0, +342,1,2452,1600,1, +2454,1606,1,2491,3336, +16,0,342,1,2356, +861,1,2361,821,1, +2367,3337,16,0,342, +1,60,3338,19,341, +1,60,3339,5,9, +1,2415,1591,1,2417, +3340,16,0,339,1, +2456,3341,16,0,339, +1,2452,1600,1,2454, +1606,1,2491,3342,16, +0,339,1,2356,861, +1,2361,821,1,2367, +3343,16,0,339,1, +61,3344,19,425,1, +61,3345,5,9,1, +2415,1591,1,2417,3346, +16,0,423,1,2456, +3347,16,0,423,1, +2452,1600,1,2454,1606, +1,2491,3348,16,0, +423,1,2356,861,1, +2361,821,1,2367,3349, +16,0,423,1,62, +3350,19,337,1,62, +3351,5,9,1,2415, +1591,1,2417,3352,16, +0,335,1,2456,3353, +16,0,335,1,2452, +1600,1,2454,1606,1, +2491,3354,16,0,335, +1,2356,861,1,2361, +821,1,2367,3355,16, +0,335,1,63,3356, +19,334,1,63,3357, +5,9,1,2415,1591, +1,2417,3358,16,0, +332,1,2456,3359,16, +0,332,1,2452,1600, +1,2454,1606,1,2491, +3360,16,0,332,1, +2356,861,1,2361,821, +1,2367,3361,16,0, +332,1,64,3362,19, +555,1,64,3363,5, +9,1,2415,1591,1, +2417,3364,16,0,553, +1,2456,3365,16,0, +553,1,2452,1600,1, +2454,1606,1,2491,3366, +16,0,553,1,2356, +861,1,2361,821,1, +2367,3367,16,0,553, +1,65,3368,19,328, +1,65,3369,5,9, +1,2415,1591,1,2417, +3370,16,0,326,1, +2456,3371,16,0,326, +1,2452,1600,1,2454, +1606,1,2491,3372,16, +0,326,1,2356,861, +1,2361,821,1,2367, +3373,16,0,326,1, +66,3374,19,325,1, +66,3375,5,9,1, +2415,1591,1,2417,3376, +16,0,323,1,2456, +3377,16,0,323,1, +2452,1600,1,2454,1606, +1,2491,3378,16,0, +323,1,2356,861,1, +2361,821,1,2367,3379, +16,0,323,1,67, +3380,19,421,1,67, +3381,5,9,1,2415, +1591,1,2417,3382,16, +0,419,1,2456,3383, +16,0,419,1,2452, +1600,1,2454,1606,1, +2491,3384,16,0,419, +1,2356,861,1,2361, +821,1,2367,3385,16, +0,419,1,68,3386, +19,418,1,68,3387, +5,9,1,2415,1591, +1,2417,3388,16,0, +416,1,2456,3389,16, +0,416,1,2452,1600, +1,2454,1606,1,2491, +3390,16,0,416,1, +2356,861,1,2361,821, +1,2367,3391,16,0, +416,1,69,3392,19, +415,1,69,3393,5, +9,1,2415,1591,1, +2417,3394,16,0,413, +1,2456,3395,16,0, +413,1,2452,1600,1, +2454,1606,1,2491,3396, +16,0,413,1,2356, +861,1,2361,821,1, +2367,3397,16,0,413, +1,70,3398,19,317, +1,70,3399,5,9, +1,2415,1591,1,2417, +3400,16,0,315,1, +2456,3401,16,0,315, +1,2452,1600,1,2454, +1606,1,2491,3402,16, +0,315,1,2356,861, +1,2361,821,1,2367, +3403,16,0,315,1, +71,3404,19,409,1, +71,3405,5,9,1, +2415,1591,1,2417,3406, +16,0,407,1,2456, +3407,16,0,407,1, +2452,1600,1,2454,1606, +1,2491,3408,16,0, +407,1,2356,861,1, +2361,821,1,2367,3409, +16,0,407,1,72, +3410,19,313,1,72, +3411,5,9,1,2415, +1591,1,2417,3412,16, +0,311,1,2456,3413, +16,0,311,1,2452, +1600,1,2454,1606,1, +2491,3414,16,0,311, +1,2356,861,1,2361, +821,1,2367,3415,16, +0,311,1,73,3416, +19,406,1,73,3417, +5,9,1,2415,1591, +1,2417,3418,16,0, +404,1,2456,3419,16, +0,404,1,2452,1600, +1,2454,1606,1,2491, +3420,16,0,404,1, +2356,861,1,2361,821, +1,2367,3421,16,0, +404,1,74,3422,19, +403,1,74,3423,5, +9,1,2415,1591,1, +2417,3424,16,0,401, +1,2456,3425,16,0, +401,1,2452,1600,1, +2454,1606,1,2491,3426, +16,0,401,1,2356, +861,1,2361,821,1, +2367,3427,16,0,401, +1,75,3428,19,306, +1,75,3429,5,9, +1,2415,1591,1,2417, +3430,16,0,304,1, +2456,3431,16,0,304, +1,2452,1600,1,2454, +1606,1,2491,3432,16, +0,304,1,2356,861, +1,2361,821,1,2367, +3433,16,0,304,1, +76,3434,19,303,1, +76,3435,5,9,1, +2415,1591,1,2417,3436, +16,0,301,1,2456, +3437,16,0,301,1, +2452,1600,1,2454,1606, +1,2491,3438,16,0, +301,1,2356,861,1, +2361,821,1,2367,3439, +16,0,301,1,77, +3440,19,398,1,77, +3441,5,9,1,2415, +1591,1,2417,3442,16, +0,396,1,2456,3443, +16,0,396,1,2452, +1600,1,2454,1606,1, +2491,3444,16,0,396, +1,2356,861,1,2361, +821,1,2367,3445,16, +0,396,1,78,3446, +19,299,1,78,3447, +5,9,1,2415,1591, +1,2417,3448,16,0, +297,1,2456,3449,16, +0,297,1,2452,1600, +1,2454,1606,1,2491, +3450,16,0,297,1, +2356,861,1,2361,821, +1,2367,3451,16,0, +297,1,79,3452,19, +462,1,79,3453,5, +9,1,2415,1591,1, +2417,3454,16,0,460, +1,2456,3455,16,0, +460,1,2452,1600,1, +2454,1606,1,2491,3456, +16,0,460,1,2356, +861,1,2361,821,1, +2367,3457,16,0,460, +1,80,3458,19,293, +1,80,3459,5,9, +1,2415,1591,1,2417, +3460,16,0,291,1, +2456,3461,16,0,291, +1,2452,1600,1,2454, +1606,1,2491,3462,16, +0,291,1,2356,861, +1,2361,821,1,2367, +3463,16,0,291,1, +81,3464,19,290,1, +81,3465,5,9,1, +2415,1591,1,2417,3466, +16,0,288,1,2456, +3467,16,0,288,1, +2452,1600,1,2454,1606, +1,2491,3468,16,0, +288,1,2356,861,1, +2361,821,1,2367,3469, +16,0,288,1,82, +3470,19,287,1,82, +3471,5,9,1,2415, +1591,1,2417,3472,16, +0,285,1,2456,3473, +16,0,285,1,2452, +1600,1,2454,1606,1, +2491,3474,16,0,285, +1,2356,861,1,2361, +821,1,2367,3475,16, +0,285,1,83,3476, +19,592,1,83,3477, +5,9,1,2415,1591, +1,2417,3478,16,0, +590,1,2456,3479,16, +0,590,1,2452,1600, +1,2454,1606,1,2491, +3480,16,0,590,1, +2356,861,1,2361,821, +1,2367,3481,16,0, +590,1,84,3482,19, +387,1,84,3483,5, +9,1,2415,1591,1, +2417,3484,16,0,385, +1,2456,3485,16,0, +385,1,2452,1600,1, +2454,1606,1,2491,3486, +16,0,385,1,2356, +861,1,2361,821,1, +2367,3487,16,0,385, +1,85,3488,19,280, +1,85,3489,5,9, +1,2415,1591,1,2417, +3490,16,0,278,1, +2456,3491,16,0,278, +1,2452,1600,1,2454, +1606,1,2491,3492,16, +0,278,1,2356,861, +1,2361,821,1,2367, +3493,16,0,278,1, +86,3494,19,277,1, +86,3495,5,9,1, +2415,1591,1,2417,3496, +16,0,275,1,2456, +3497,16,0,275,1, +2452,1600,1,2454,1606, +1,2491,3498,16,0, +275,1,2356,861,1, +2361,821,1,2367,3499, +16,0,275,1,87, +3500,19,383,1,87, +3501,5,9,1,2415, +1591,1,2417,3502,16, +0,381,1,2456,3503, +16,0,381,1,2452, +1600,1,2454,1606,1, +2491,3504,16,0,381, +1,2356,861,1,2361, +821,1,2367,3505,16, +0,381,1,88,3506, +19,273,1,88,3507, +5,9,1,2415,1591, +1,2417,3508,16,0, +271,1,2456,3509,16, +0,271,1,2452,1600, +1,2454,1606,1,2491, +3510,16,0,271,1, +2356,861,1,2361,821, +1,2367,3511,16,0, +271,1,89,3512,19, +376,1,89,3513,5, +9,1,2415,1591,1, +2417,3514,16,0,374, +1,2456,3515,16,0, +374,1,2452,1600,1, +2454,1606,1,2491,3516, +16,0,374,1,2356, +861,1,2361,821,1, +2367,3517,16,0,374, +1,90,3518,19,650, +1,90,3519,5,9, +1,2415,1591,1,2417, +3520,16,0,648,1, +2456,3521,16,0,648, +1,2452,1600,1,2454, +1606,1,2491,3522,16, +0,648,1,2356,861, +1,2361,821,1,2367, +3523,16,0,648,1, +91,3524,19,133,1, +91,3525,5,121,1, +0,3526,16,0,467, +1,1,1915,1,2, +1921,1,3,1926,1, +4,1931,1,5,1936, +1,6,1941,1,7, +1946,1,8,3527,16, +0,131,1,1515,3528, +16,0,165,1,2607, +3137,1,2021,709,1, +2022,3529,16,0,495, +1,256,3530,16,0, +173,1,2025,3531,16, +0,499,1,18,3532, +16,0,138,1,2027, +3533,16,0,503,1, +2029,716,1,2030,722, +1,2031,727,1,2032, +732,1,2033,737,1, +277,3534,16,0,173, +1,2035,743,1,2037, +748,1,2039,753,1, +32,3535,16,0,165, +1,2041,759,1,2043, +764,1,2045,769,1, +2548,3106,1,41,3536, +16,0,173,1,1297, +3537,16,0,165,1, +43,3538,16,0,173, +1,1802,777,1,46, +3539,16,0,178,1, +1804,3540,16,0,165, +1,299,3541,16,0, +173,1,2310,3542,16, +0,165,1,52,3543, +16,0,165,1,509, +3544,16,0,173,1, +525,3545,16,0,173, +1,62,3546,16,0, +195,1,65,3547,16, +0,197,1,2576,3125, +1,2075,3548,16,0, +165,1,1574,790,1, +71,3549,16,0,173, +1,1775,3550,16,0, +165,1,76,3551,16, +0,173,1,1834,3552, +16,0,165,1,2588, +3553,16,0,467,1, +79,3554,16,0,173, +1,1335,3555,16,0, +165,1,322,3556,16, +0,173,1,85,3557, +16,0,173,1,1261, +3558,16,0,165,1, +89,3559,16,0,173, +1,346,3560,16,0, +173,1,2355,804,1, +2356,861,1,2106,3561, +16,0,165,1,2609, +3120,1,2359,816,1, +2361,821,1,1860,827, +1,2363,3142,1,2365, +3562,16,0,267,1, +97,3563,16,0,173, +1,1113,3564,16,0, +158,1,112,3565,16, +0,173,1,1117,3566, +16,0,165,1,1873, +836,1,102,3567,16, +0,173,1,1876,3568, +16,0,165,1,372, +3569,16,0,533,1, +2551,3570,16,0,173, +1,374,3571,16,0, +535,1,124,3572,16, +0,173,1,376,3573, +16,0,537,1,378, +3574,16,0,539,1, +2136,845,1,381,3575, +16,0,173,1,1585, +3576,16,0,173,1, +137,3577,16,0,173, +1,1901,3578,16,0, +165,1,1153,3579,16, +0,165,1,151,3580, +16,0,173,1,1407, +3581,16,0,165,1, +1659,3582,16,0,165, +1,406,3583,16,0, +173,1,2587,3147,1, +1371,3584,16,0,165, +1,2105,810,1,166, +3585,16,0,173,1, +1622,3586,16,0,173, +1,1931,866,1,1933, +3587,16,0,165,1, +2606,3132,1,431,3588, +16,0,173,1,2608, +3114,1,182,3589,16, +0,173,1,1189,3590, +16,0,165,1,1443, +3591,16,0,165,1, +1695,3592,16,0,165, +1,2198,3593,16,0, +165,1,447,3594,16, +0,173,1,199,3595, +16,0,173,1,1958, +3596,16,0,165,1, +1657,883,1,459,3597, +16,0,173,1,462, +3598,16,0,173,1, +217,3599,16,0,173, +1,2227,891,1,1225, +3600,16,0,165,1, +1479,3601,16,0,165, +1,1731,3602,16,0, +173,1,1989,899,1, +1990,3603,16,0,165, +1,236,3604,16,0, +173,1,1756,3605,16, +0,165,1,92,3606, +19,627,1,92,3607, +5,91,1,256,3608, +16,0,625,1,1261, +3609,16,0,625,1, +509,3610,16,0,625, +1,1515,3611,16,0, +625,1,2021,709,1, +1775,3612,16,0,625, +1,2029,716,1,2030, +722,1,2031,727,1, +2032,732,1,2033,737, +1,277,3613,16,0, +625,1,2035,743,1, +2037,748,1,2039,753, +1,32,3614,16,0, +625,1,2041,759,1, +2043,764,1,2045,769, +1,41,3615,16,0, +625,1,1297,3616,16, +0,625,1,43,3617, +16,0,625,1,1802, +777,1,1804,3618,16, +0,625,1,299,3619, +16,0,625,1,2310, +3620,16,0,625,1, +52,3621,16,0,625, +1,525,3622,16,0, +625,1,62,3623,16, +0,625,1,2075,3624, +16,0,625,1,1574, +790,1,71,3625,16, +0,625,1,76,3626, +16,0,625,1,1834, +3627,16,0,625,1, +79,3628,16,0,625, +1,1335,3629,16,0, +625,1,322,3630,16, +0,625,1,85,3631, +16,0,625,1,89, +3632,16,0,625,1, +346,3633,16,0,625, +1,2355,804,1,2105, +810,1,2106,3634,16, +0,625,1,2359,816, +1,2361,821,1,1860, +827,1,97,3635,16, +0,625,1,112,3636, +16,0,625,1,1117, +3637,16,0,625,1, +1873,836,1,102,3638, +16,0,625,1,1876, +3639,16,0,625,1, +2551,3640,16,0,625, +1,124,3641,16,0, +625,1,2136,845,1, +381,3642,16,0,625, +1,137,3643,16,0, +625,1,1901,3644,16, +0,625,1,1153,3645, +16,0,625,1,151, +3646,16,0,625,1, +1407,3647,16,0,625, +1,1659,3648,16,0, +625,1,406,3649,16, +0,625,1,1371,3650, +16,0,625,1,166, +3651,16,0,625,1, +1622,3652,16,0,625, +1,2356,861,1,1931, +866,1,1933,3653,16, +0,625,1,431,3654, +16,0,625,1,1585, +3655,16,0,625,1, +182,3656,16,0,625, +1,1189,3657,16,0, +625,1,1443,3658,16, +0,625,1,1695,3659, +16,0,625,1,2198, +3660,16,0,625,1, +447,3661,16,0,625, +1,199,3662,16,0, +625,1,1958,3663,16, +0,625,1,1657,883, +1,459,3664,16,0, +625,1,462,3665,16, +0,625,1,217,3666, +16,0,625,1,2227, +891,1,1225,3667,16, +0,625,1,1479,3668, +16,0,625,1,1731, +3669,16,0,625,1, +1989,899,1,1990,3670, +16,0,625,1,236, +3671,16,0,625,1, +1756,3672,16,0,625, +1,93,3673,19,624, +1,93,3674,5,91, +1,256,3675,16,0, +622,1,1261,3676,16, +0,622,1,509,3677, +16,0,622,1,1515, +3678,16,0,622,1, +2021,709,1,1775,3679, +16,0,622,1,2029, +716,1,2030,722,1, +2031,727,1,2032,732, +1,2033,737,1,277, +3680,16,0,622,1, +2035,743,1,2037,748, +1,2039,753,1,32, +3681,16,0,622,1, +2041,759,1,2043,764, +1,2045,769,1,41, +3682,16,0,622,1, +1297,3683,16,0,622, +1,43,3684,16,0, +622,1,1802,777,1, +1804,3685,16,0,622, +1,299,3686,16,0, +622,1,2310,3687,16, +0,622,1,52,3688, +16,0,622,1,525, +3689,16,0,622,1, +62,3690,16,0,622, +1,2075,3691,16,0, +622,1,1574,790,1, +71,3692,16,0,622, +1,76,3693,16,0, +622,1,1834,3694,16, +0,622,1,79,3695, +16,0,622,1,1335, +3696,16,0,622,1, +322,3697,16,0,622, +1,85,3698,16,0, +622,1,89,3699,16, +0,622,1,346,3700, +16,0,622,1,2355, +804,1,2105,810,1, +2106,3701,16,0,622, +1,2359,816,1,2361, +821,1,1860,827,1, +97,3702,16,0,622, +1,112,3703,16,0, +622,1,1117,3704,16, +0,622,1,1873,836, +1,102,3705,16,0, +622,1,1876,3706,16, +0,622,1,2551,3707, +16,0,622,1,124, +3708,16,0,622,1, +2136,845,1,381,3709, +16,0,622,1,137, +3710,16,0,622,1, +1901,3711,16,0,622, +1,1153,3712,16,0, +622,1,151,3713,16, +0,622,1,1407,3714, +16,0,622,1,1659, +3715,16,0,622,1, +406,3716,16,0,622, +1,1371,3717,16,0, +622,1,166,3718,16, +0,622,1,1622,3719, +16,0,622,1,2356, +861,1,1931,866,1, +1933,3720,16,0,622, +1,431,3721,16,0, +622,1,1585,3722,16, +0,622,1,182,3723, +16,0,622,1,1189, +3724,16,0,622,1, +1443,3725,16,0,622, +1,1695,3726,16,0, +622,1,2198,3727,16, +0,622,1,447,3728, +16,0,622,1,199, +3729,16,0,622,1, +1958,3730,16,0,622, +1,1657,883,1,459, +3731,16,0,622,1, +462,3732,16,0,622, +1,217,3733,16,0, +622,1,2227,891,1, +1225,3734,16,0,622, +1,1479,3735,16,0, +622,1,1731,3736,16, +0,622,1,1989,899, +1,1990,3737,16,0, +622,1,236,3738,16, +0,622,1,1756,3739, +16,0,622,1,94, +3740,19,621,1,94, +3741,5,91,1,256, +3742,16,0,619,1, +1261,3743,16,0,619, +1,509,3744,16,0, +619,1,1515,3745,16, +0,619,1,2021,709, +1,1775,3746,16,0, +619,1,2029,716,1, +2030,722,1,2031,727, +1,2032,732,1,2033, +737,1,277,3747,16, +0,619,1,2035,743, +1,2037,748,1,2039, +753,1,32,3748,16, +0,619,1,2041,759, +1,2043,764,1,2045, +769,1,41,3749,16, +0,619,1,1297,3750, +16,0,619,1,43, +3751,16,0,619,1, +1802,777,1,1804,3752, +16,0,619,1,299, +3753,16,0,619,1, +2310,3754,16,0,619, +1,52,3755,16,0, +619,1,525,3756,16, +0,619,1,62,3757, +16,0,619,1,2075, +3758,16,0,619,1, +1574,790,1,71,3759, +16,0,619,1,76, +3760,16,0,619,1, +1834,3761,16,0,619, +1,79,3762,16,0, +619,1,1335,3763,16, +0,619,1,322,3764, +16,0,619,1,85, +3765,16,0,619,1, +89,3766,16,0,619, +1,346,3767,16,0, +619,1,2355,804,1, +2105,810,1,2106,3768, +16,0,619,1,2359, +816,1,2361,821,1, +1860,827,1,97,3769, +16,0,619,1,112, +3770,16,0,619,1, +1117,3771,16,0,619, +1,1873,836,1,102, +3772,16,0,619,1, +1876,3773,16,0,619, +1,2551,3774,16,0, +619,1,124,3775,16, +0,619,1,2136,845, +1,381,3776,16,0, +619,1,137,3777,16, +0,619,1,1901,3778, +16,0,619,1,1153, +3779,16,0,619,1, +151,3780,16,0,619, +1,1407,3781,16,0, +619,1,1659,3782,16, +0,619,1,406,3783, +16,0,619,1,1371, +3784,16,0,619,1, +166,3785,16,0,619, +1,1622,3786,16,0, +619,1,2356,861,1, +1931,866,1,1933,3787, +16,0,619,1,431, +3788,16,0,619,1, +1585,3789,16,0,619, +1,182,3790,16,0, +619,1,1189,3791,16, +0,619,1,1443,3792, +16,0,619,1,1695, +3793,16,0,619,1, +2198,3794,16,0,619, +1,447,3795,16,0, +619,1,199,3796,16, +0,619,1,1958,3797, +16,0,619,1,1657, +883,1,459,3798,16, +0,619,1,462,3799, +16,0,619,1,217, +3800,16,0,619,1, +2227,891,1,1225,3801, +16,0,619,1,1479, +3802,16,0,619,1, +1731,3803,16,0,619, +1,1989,899,1,1990, +3804,16,0,619,1, +236,3805,16,0,619, +1,1756,3806,16,0, +619,1,95,3807,19, +103,1,95,3808,5, +1,1,0,3809,16, +0,104,1,96,3810, +19,586,1,96,3811, +5,1,1,0,3812, +16,0,584,1,97, +3813,19,635,1,97, +3814,5,2,1,0, +3815,16,0,663,1, +2588,3816,16,0,633, +1,98,3817,19,561, +1,98,3818,5,2, +1,0,3819,16,0, +605,1,2588,3820,16, +0,559,1,99,3821, +19,458,1,99,3822, +5,2,1,0,3823, +16,0,456,1,2588, +3824,16,0,469,1, +100,3825,19,465,1, +100,3826,5,4,1, +0,3827,16,0,551, +1,2599,3828,16,0, +463,1,2588,3829,16, +0,551,1,2529,3830, +16,0,463,1,101, +3831,19,442,1,101, +3832,5,2,1,2367, +3833,16,0,440,1, +2456,3834,16,0,484, +1,102,3835,19,391, +1,102,3836,5,4, +1,2367,3837,16,0, +393,1,2456,3838,16, +0,393,1,2491,3839, +16,0,389,1,2417, +3840,16,0,389,1, +103,3841,19,141,1, +103,3842,5,3,1, +2402,3843,16,0,483, +1,2535,3844,16,0, +470,1,10,3845,16, +0,139,1,104,3846, +19,151,1,104,3847, +5,16,1,0,3848, +16,0,632,1,2075, +3849,16,0,642,1, +10,3850,16,0,263, +1,1901,3851,16,0, +642,1,2198,3852,16, +0,642,1,2310,3853, +16,0,642,1,2535, +3854,16,0,263,1, +21,3855,16,0,149, +1,2106,3856,16,0, +642,1,1958,3857,16, +0,642,1,1804,3858, +16,0,642,1,1990, +3859,16,0,642,1, +32,3860,16,0,642, +1,2402,3861,16,0, +263,1,2588,3862,16, +0,632,1,1775,3863, +16,0,642,1,105, +3864,19,130,1,105, +3865,5,17,1,0, +3866,16,0,128,1, +2075,3867,16,0,137, +1,10,3868,16,0, +137,1,2198,3869,16, +0,137,1,1901,3870, +16,0,137,1,52, +3871,16,0,193,1, +2310,3872,16,0,137, +1,2535,3873,16,0, +137,1,21,3874,16, +0,137,1,2106,3875, +16,0,137,1,1958, +3876,16,0,137,1, +1804,3877,16,0,137, +1,1990,3878,16,0, +137,1,32,3879,16, +0,137,1,2402,3880, +16,0,137,1,2588, +3881,16,0,128,1, +1775,3882,16,0,137, +1,106,3883,19,348, +1,106,3884,5,4, +1,2367,3885,16,0, +346,1,2456,3886,16, +0,346,1,2491,3887, +16,0,346,1,2417, +3888,16,0,346,1, +107,3889,19,262,1, +107,3890,5,13,1, +2075,3891,16,0,504, +1,2413,3892,16,0, +355,1,1901,3893,16, +0,504,1,2198,3894, +16,0,504,1,2310, +3895,16,0,504,1, +2106,3896,16,0,504, +1,1804,3897,16,0, +504,1,1990,3898,16, +0,504,1,2546,3899, +16,0,475,1,31, +3900,16,0,260,1, +32,3901,16,0,504, +1,1958,3902,16,0, +504,1,1775,3903,16, +0,504,1,108,3904, +19,309,1,108,3905, +5,1,1,32,3906, +16,0,307,1,109, +3907,19,251,1,109, +3908,5,10,1,2075, +3909,16,0,575,1, +1901,3910,16,0,433, +1,2198,3911,16,0, +373,1,2310,3912,16, +0,249,1,2106,3913, +16,0,609,1,1804, +3914,16,0,318,1, +1990,3915,16,0,490, +1,32,3916,16,0, +370,1,1958,3917,16, +0,471,1,1775,3918, +16,0,256,1,110, +3919,19,581,1,110, +3920,5,10,1,2075, +3921,16,0,579,1, +1901,3922,16,0,579, +1,2198,3923,16,0, +579,1,2310,3924,16, +0,579,1,2106,3925, +16,0,579,1,1804, +3926,16,0,579,1, +1990,3927,16,0,579, +1,32,3928,16,0, +579,1,1958,3929,16, +0,579,1,1775,3930, +16,0,579,1,111, +3931,19,639,1,111, +3932,5,10,1,2075, +3933,16,0,637,1, +1901,3934,16,0,637, +1,2198,3935,16,0, +637,1,2310,3936,16, +0,637,1,2106,3937, +16,0,637,1,1804, +3938,16,0,637,1, +1990,3939,16,0,637, +1,32,3940,16,0, +637,1,1958,3941,16, +0,637,1,1775,3942, +16,0,637,1,112, +3943,19,161,1,112, +3944,5,29,1,1479, +3945,16,0,557,1, +2075,3946,16,0,641, +1,1695,3947,16,0, +189,1,1756,3948,16, +0,188,1,2198,3949, +16,0,641,1,2310, +3950,16,0,641,1, +1876,3951,16,0,653, +1,1659,3952,16,0, +188,1,1443,3953,16, +0,520,1,1117,3954, +16,0,159,1,1990, +3955,16,0,641,1, +1189,3956,16,0,235, +1,1775,3957,16,0, +641,1,32,3958,16, +0,641,1,2106,3959, +16,0,641,1,1515, +3960,16,0,577,1, +1901,3961,16,0,641, +1,52,3962,16,0, +593,1,1804,3963,16, +0,641,1,1261,3964, +16,0,350,1,1153, +3965,16,0,242,1, +1225,3966,16,0,281, +1,1335,3967,16,0, +455,1,1933,3968,16, +0,562,1,1834,3969, +16,0,365,1,1297, +3970,16,0,380,1, +1407,3971,16,0,569, +1,1958,3972,16,0, +641,1,1371,3973,16, +0,450,1,113,3974, +19,529,1,113,3975, +5,10,1,2075,3976, +16,0,527,1,1901, +3977,16,0,527,1, +2198,3978,16,0,527, +1,2310,3979,16,0, +527,1,2106,3980,16, +0,527,1,1804,3981, +16,0,527,1,1990, +3982,16,0,527,1, +32,3983,16,0,527, +1,1958,3984,16,0, +527,1,1775,3985,16, +0,527,1,114,3986, +19,525,1,114,3987, +5,10,1,2075,3988, +16,0,523,1,1901, +3989,16,0,523,1, +2198,3990,16,0,523, +1,2310,3991,16,0, +523,1,2106,3992,16, +0,523,1,1804,3993, +16,0,523,1,1990, +3994,16,0,523,1, +32,3995,16,0,523, +1,1958,3996,16,0, +523,1,1775,3997,16, +0,523,1,115,3998, +19,573,1,115,3999, +5,10,1,2075,4000, +16,0,571,1,1901, +4001,16,0,571,1, +2198,4002,16,0,571, +1,2310,4003,16,0, +571,1,2106,4004,16, +0,571,1,1804,4005, +16,0,571,1,1990, +4006,16,0,571,1, +32,4007,16,0,571, +1,1958,4008,16,0, +571,1,1775,4009,16, +0,571,1,116,4010, +19,519,1,116,4011, +5,10,1,2075,4012, +16,0,517,1,1901, +4013,16,0,517,1, +2198,4014,16,0,517, +1,2310,4015,16,0, +517,1,2106,4016,16, +0,517,1,1804,4017, +16,0,517,1,1990, +4018,16,0,517,1, +32,4019,16,0,517, +1,1958,4020,16,0, +517,1,1775,4021,16, +0,517,1,117,4022, +19,516,1,117,4023, +5,10,1,2075,4024, +16,0,514,1,1901, +4025,16,0,514,1, +2198,4026,16,0,514, +1,2310,4027,16,0, +514,1,2106,4028,16, +0,514,1,1804,4029, +16,0,514,1,1990, +4030,16,0,514,1, +32,4031,16,0,514, +1,1958,4032,16,0, +514,1,1775,4033,16, +0,514,1,118,4034, +19,513,1,118,4035, +5,10,1,2075,4036, +16,0,511,1,1901, +4037,16,0,511,1, +2198,4038,16,0,511, +1,2310,4039,16,0, +511,1,2106,4040,16, +0,511,1,1804,4041, +16,0,511,1,1990, +4042,16,0,511,1, +32,4043,16,0,511, +1,1958,4044,16,0, +511,1,1775,4045,16, +0,511,1,119,4046, +19,510,1,119,4047, +5,10,1,2075,4048, +16,0,508,1,1901, +4049,16,0,508,1, +2198,4050,16,0,508, +1,2310,4051,16,0, +508,1,2106,4052,16, +0,508,1,1804,4053, +16,0,508,1,1990, +4054,16,0,508,1, +32,4055,16,0,508, +1,1958,4056,16,0, +508,1,1775,4057,16, +0,508,1,120,4058, +19,507,1,120,4059, +5,10,1,2075,4060, +16,0,505,1,1901, +4061,16,0,505,1, +2198,4062,16,0,505, +1,2310,4063,16,0, +505,1,2106,4064,16, +0,505,1,1804,4065, +16,0,505,1,1990, +4066,16,0,505,1, +32,4067,16,0,505, +1,1958,4068,16,0, +505,1,1775,4069,16, +0,505,1,121,4070, +19,147,1,121,4071, +5,2,1,1756,4072, +16,0,314,1,1659, +4073,16,0,145,1, +122,4074,19,549,1, +122,4075,5,65,1, +1479,4076,16,0,547, +1,112,4077,16,0, +547,1,2075,4078,16, +0,547,1,1804,4079, +16,0,547,1,431, +4080,16,0,547,1, +1443,4081,16,0,547, +1,1756,4082,16,0, +547,1,124,4083,16, +0,547,1,525,4084, +16,0,547,1,236, +4085,16,0,547,1, +346,4086,16,0,547, +1,2310,4087,16,0, +547,1,1876,4088,16, +0,547,1,1659,4089, +16,0,547,1,1225, +4090,16,0,547,1, +1117,4091,16,0,547, +1,137,4092,16,0, +547,1,1775,4093,16, +0,547,1,32,4094, +16,0,547,1,1407, +4095,16,0,547,1, +256,4096,16,0,547, +1,459,4097,16,0, +547,1,41,4098,16, +0,547,1,151,4099, +16,0,547,1,43, +4100,16,0,547,1, +2551,4101,16,0,547, +1,1901,4102,16,0, +547,1,509,4103,16, +0,547,1,52,4104, +16,0,547,1,381, +4105,16,0,547,1, +447,4106,16,0,547, +1,166,4107,16,0, +547,1,462,4108,16, +0,547,1,277,4109, +16,0,547,1,1695, +4110,16,0,547,1, +1261,4111,16,0,547, +1,1153,4112,16,0, +547,1,62,4113,16, +0,587,1,2106,4114, +16,0,547,1,1335, +4115,16,0,547,1, +71,4116,16,0,547, +1,182,4117,16,0, +547,1,76,4118,16, +0,547,1,79,4119, +16,0,547,1,1933, +4120,16,0,547,1, +299,4121,16,0,547, +1,85,4122,16,0, +547,1,1515,4123,16, +0,547,1,2198,4124, +16,0,547,1,89, +4125,16,0,547,1, +1834,4126,16,0,547, +1,1622,4127,16,0, +547,1,1990,4128,16, +0,547,1,406,4129, +16,0,547,1,1731, +4130,16,0,547,1, +97,4131,16,0,547, +1,1297,4132,16,0, +547,1,1189,4133,16, +0,547,1,102,4134, +16,0,547,1,1585, +4135,16,0,547,1, +322,4136,16,0,547, +1,1958,4137,16,0, +547,1,199,4138,16, +0,547,1,1371,4139, +16,0,547,1,217, +4140,16,0,547,1, +123,4141,19,603,1, +123,4142,5,2,1, +459,4143,16,0,601, +1,41,4144,16,0, +656,1,124,4145,19, +608,1,124,4146,5, +3,1,462,4147,16, +0,606,1,459,4148, +16,0,631,1,41, +4149,16,0,631,1, +125,4150,19,4151,4, +36,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,65,0,114,0, +103,0,117,0,109, +0,101,0,110,0, +116,0,1,125,4146, +1,126,4152,19,542, +1,126,4153,5,65, +1,1479,4154,16,0, +540,1,112,4155,16, +0,540,1,2075,4156, +16,0,540,1,1804, +4157,16,0,540,1, +431,4158,16,0,540, +1,1443,4159,16,0, +540,1,1756,4160,16, +0,540,1,124,4161, +16,0,540,1,525, +4162,16,0,540,1, +236,4163,16,0,540, +1,346,4164,16,0, +540,1,2310,4165,16, +0,540,1,1876,4166, +16,0,540,1,1659, +4167,16,0,540,1, +1225,4168,16,0,540, +1,1117,4169,16,0, +540,1,137,4170,16, +0,540,1,1775,4171, +16,0,540,1,32, +4172,16,0,540,1, +1407,4173,16,0,540, +1,256,4174,16,0, +540,1,459,4175,16, +0,540,1,41,4176, +16,0,540,1,151, +4177,16,0,540,1, +43,4178,16,0,540, +1,2551,4179,16,0, +540,1,1901,4180,16, +0,540,1,509,4181, +16,0,540,1,52, +4182,16,0,540,1, +381,4183,16,0,540, +1,447,4184,16,0, +540,1,166,4185,16, +0,540,1,462,4186, +16,0,540,1,277, +4187,16,0,540,1, +1695,4188,16,0,540, +1,1261,4189,16,0, +540,1,1153,4190,16, +0,540,1,62,4191, +16,0,588,1,2106, +4192,16,0,540,1, +1335,4193,16,0,540, +1,71,4194,16,0, +540,1,182,4195,16, +0,540,1,76,4196, +16,0,540,1,79, +4197,16,0,540,1, +1933,4198,16,0,540, +1,299,4199,16,0, +540,1,85,4200,16, +0,540,1,1515,4201, +16,0,540,1,2198, +4202,16,0,540,1, +89,4203,16,0,540, +1,1834,4204,16,0, +540,1,1622,4205,16, +0,540,1,1990,4206, +16,0,540,1,406, +4207,16,0,540,1, +1731,4208,16,0,540, +1,97,4209,16,0, +540,1,1297,4210,16, +0,540,1,1189,4211, +16,0,540,1,102, +4212,16,0,540,1, +1585,4213,16,0,540, +1,322,4214,16,0, +540,1,1958,4215,16, +0,540,1,199,4216, +16,0,540,1,1371, +4217,16,0,540,1, +217,4218,16,0,540, +1,127,4219,19,4220, +4,28,86,0,101, +0,99,0,116,0, +111,0,114,0,67, +0,111,0,110,0, +115,0,116,0,97, +0,110,0,116,0, +1,127,4153,1,128, +4221,19,4222,4,32, +82,0,111,0,116, +0,97,0,116,0, +105,0,111,0,110, +0,67,0,111,0, +110,0,115,0,116, +0,97,0,110,0, +116,0,1,128,4153, +1,129,4223,19,4224, +4,24,76,0,105, +0,115,0,116,0, +67,0,111,0,110, +0,115,0,116,0, +97,0,110,0,116, +0,1,129,4153,1, +130,4225,19,169,1, +130,4226,5,64,1, +1479,4227,16,0,531, +1,112,4228,16,0, +244,1,2075,4229,16, +0,583,1,1804,4230, +16,0,583,1,431, +4231,16,0,578,1, +1443,4232,16,0,482, +1,1756,4233,16,0, +664,1,124,4234,16, +0,255,1,525,4235, +16,0,358,1,236, +4236,16,0,422,1, +346,4237,16,0,494, +1,2310,4238,16,0, +583,1,1876,4239,16, +0,372,1,1659,4240, +16,0,664,1,1225, +4241,16,0,243,1, +1117,4242,16,0,219, +1,137,4243,16,0, +274,1,1775,4244,16, +0,583,1,32,4245, +16,0,583,1,1407, +4246,16,0,485,1, +256,4247,16,0,437, +1,459,4248,16,0, +167,1,41,4249,16, +0,167,1,151,4250, +16,0,310,1,43, +4251,16,0,636,1, +2551,4252,16,0,566, +1,1901,4253,16,0, +583,1,509,4254,16, +0,647,1,52,4255, +16,0,595,1,381, +4256,16,0,552,1, +447,4257,16,0,358, +1,166,4258,16,0, +345,1,462,4259,16, +0,167,1,277,4260, +16,0,448,1,1695, +4261,16,0,269,1, +1261,4262,16,0,300, +1,1153,4263,16,0, +174,1,2106,4264,16, +0,583,1,1335,4265, +16,0,394,1,71, +4266,16,0,203,1, +182,4267,16,0,358, +1,76,4268,16,0, +550,1,79,4269,16, +0,218,1,1933,4270, +16,0,443,1,299, +4271,16,0,466,1, +85,4272,16,0,479, +1,1515,4273,16,0, +565,1,2198,4274,16, +0,583,1,89,4275, +16,0,226,1,1834, +4276,16,0,338,1, +1622,4277,16,0,646, +1,1990,4278,16,0, +583,1,406,4279,16, +0,567,1,1731,4280, +16,0,245,1,97, +4281,16,0,444,1, +1297,4282,16,0,400, +1,1189,4283,16,0, +217,1,102,4284,16, +0,234,1,1585,4285, +16,0,655,1,322, +4286,16,0,480,1, +1958,4287,16,0,583, +1,199,4288,16,0, +369,1,1371,4289,16, +0,438,1,217,4290, +16,0,388,1,131, +4291,19,4292,4,36, +67,0,111,0,110, +0,115,0,116,0, +97,0,110,0,116, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,1,131,4226,1, +132,4293,19,4294,4, +30,73,0,100,0, +101,0,110,0,116, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,1,132,4226,1, +133,4295,19,4296,4, +36,73,0,100,0, +101,0,110,0,116, +0,68,0,111,0, +116,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,1,133,4226, +1,134,4297,19,4298, +4,44,70,0,117, +0,110,0,99,0, +116,0,105,0,111, +0,110,0,67,0, +97,0,108,0,108, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,1,134,4226,1, +135,4299,19,4300,4, +32,66,0,105,0, +110,0,97,0,114, +0,121,0,69,0, +120,0,112,0,114, +0,101,0,115,0, +115,0,105,0,111, +0,110,0,1,135, +4226,1,136,4301,19, +4302,4,30,85,0, +110,0,97,0,114, +0,121,0,69,0, +120,0,112,0,114, +0,101,0,115,0, +115,0,105,0,111, +0,110,0,1,136, +4226,1,137,4303,19, +4304,4,36,84,0, +121,0,112,0,101, +0,99,0,97,0, +115,0,116,0,69, +0,120,0,112,0, +114,0,101,0,115, +0,115,0,105,0, +111,0,110,0,1, +137,4226,1,138,4305, +19,4306,4,42,80, +0,97,0,114,0, +101,0,110,0,116, +0,104,0,101,0, +115,0,105,0,115, +0,69,0,120,0, +112,0,114,0,101, +0,115,0,115,0, +105,0,111,0,110, +0,1,138,4226,1, +139,4307,19,4308,4, +56,73,0,110,0, +99,0,114,0,101, +0,109,0,101,0, +110,0,116,0,68, +0,101,0,99,0, +114,0,101,0,109, +0,101,0,110,0, +116,0,69,0,120, +0,112,0,114,0, +101,0,115,0,115, +0,105,0,111,0, +110,0,1,139,4226, +1,141,4309,19,686, +1,141,3808,1,142, +4310,19,701,1,142, +3808,1,143,4311,19, +3123,1,143,3811,1, +144,4312,19,3140,1, +144,3811,1,145,4313, +19,3118,1,145,3811, +1,146,4314,19,3135, +1,146,3811,1,147, +4315,19,3150,1,147, +3814,1,148,4316,19, +3129,1,148,3814,1, +149,4317,19,3110,1, +149,3818,1,150,4318, +19,3145,1,150,3818, +1,151,4319,19,691, +1,151,3822,1,152, +4320,19,680,1,152, +3822,1,153,4321,19, +696,1,153,3826,1, +154,4322,19,674,1, +154,3826,1,155,4323, +19,1609,1,155,3832, +1,156,4324,19,1604, +1,156,3832,1,157, +4325,19,1595,1,157, +3836,1,158,4326,19, +1641,1,158,3842,1, +159,4327,19,1625,1, +159,3842,1,160,4328, +19,1094,1,160,3847, +1,161,4329,19,825, +1,161,3890,1,162, +4330,19,864,1,162, +3890,1,163,4331,19, +819,1,163,3905,1, +164,4332,19,808,1, +164,3905,1,165,4333, +19,1122,1,165,3920, +1,166,4334,19,772, +1,166,3908,1,167, +4335,19,886,1,167, +3908,1,168,4336,19, +767,1,168,3908,1, +169,4337,19,793,1, +169,3908,1,170,4338, +19,762,1,170,3908, +1,171,4339,19,756, +1,171,3908,1,172, +4340,19,751,1,172, +3908,1,173,4341,19, +746,1,173,3908,1, +174,4342,19,740,1, +174,3908,1,175,4343, +19,735,1,175,3908, +1,176,4344,19,730, +1,176,3908,1,177, +4345,19,725,1,177, +3908,1,178,4346,19, +720,1,178,3908,1, +179,4347,19,1129,1, +179,3987,1,180,4348, +19,1270,1,180,3999, +1,181,4349,19,1116, +1,181,4011,1,182, +4350,19,1258,1,182, +4011,1,183,4351,19, +902,1,183,4023,1, +184,4352,19,713,1, +184,4023,1,185,4353, +19,813,1,185,4023, +1,186,4354,19,848, +1,186,4023,1,187, +4355,19,870,1,187, +4035,1,188,4356,19, +894,1,188,4035,1, +189,4357,19,831,1, +189,4047,1,190,4358, +19,839,1,190,4047, +1,191,4359,19,781, +1,191,4059,1,192, +4360,19,1501,1,192, +4071,1,193,4361,19, +1135,1,193,4071,1, +194,4362,19,1478,1, +194,4071,1,195,4363, +19,1516,1,195,4071, +1,196,4364,19,1377, +1,196,3932,1,197, +4365,19,1440,1,197, +3932,1,198,4366,19, +1110,1,198,3944,1, +199,4367,19,1548,1, +199,3944,1,200,4368, +19,1473,1,200,3944, +1,201,4369,19,1424, +1,201,3944,1,202, +4370,19,1344,1,202, +3944,1,203,4371,19, +1280,1,203,3944,1, +204,4372,19,1290,1, +204,3944,1,205,4373, +19,1105,1,205,3944, +1,206,4374,19,1532, +1,206,3944,1,207, +4375,19,1468,1,207, +3944,1,208,4376,19, +1414,1,208,3944,1, +209,4377,19,1332,1, +209,3944,1,210,4378, +19,1306,1,210,3944, +1,211,4379,19,1088, +1,211,3944,1,212, +4380,19,1435,1,212, +3944,1,213,4381,19, +1456,1,213,3944,1, +214,4382,19,1409,1, +214,3944,1,215,4383, +19,1429,1,215,3944, +1,216,4384,19,1242, +1,216,3944,1,217, +4385,19,1152,1,217, +3944,1,218,4386,19, +1077,1,218,3944,1, +219,4387,19,1506,1, +219,3944,1,220,4388, +19,1451,1,220,3944, +1,221,4389,19,1404, +1,221,3944,1,222, +4390,19,1275,1,222, +3975,1,223,4391,19, +1253,1,223,3975,1, +224,4392,19,1537,1, +224,4153,1,225,4393, +19,1560,1,225,4153, +1,226,4394,19,1527, +1,226,4153,1,227, +4395,19,1522,1,227, +4153,1,228,4396,19, +1543,1,228,4153,1, +229,4397,19,1484,1, +229,4153,1,230,4398, +19,1196,1,230,4153, +1,231,4399,19,1366, +1,231,4226,1,232, +4400,19,1147,1,232, +4226,1,233,4401,19, +1164,1,233,4226,1, +234,4402,19,1185,1, +234,4226,1,235,4403, +19,1180,1,235,4226, +1,236,4404,19,1175, +1,236,4226,1,237, +4405,19,1170,1,237, +4226,1,238,4406,19, +1355,1,238,4226,1, +239,4407,19,1383,1, +239,4226,1,240,4408, +19,1393,1,240,4226, +1,241,4409,19,1349, +1,241,4226,1,242, +4410,19,1338,1,242, +4226,1,243,4411,19, +1313,1,243,4226,1, +244,4412,19,1285,1, +244,4226,1,245,4413, +19,1190,1,245,4226, +1,246,4414,19,1157, +1,246,4226,1,247, +4415,19,1100,1,247, +4226,1,248,4416,19, +1555,1,248,4226,1, +249,4417,19,1511,1, +249,4226,1,250,4418, +19,1495,1,250,4226, +1,251,4419,19,1490, +1,251,4226,1,252, +4420,19,1446,1,252, +4226,1,253,4421,19, +1419,1,253,4226,1, +254,4422,19,1398,1, +254,4226,1,255,4423, +19,1388,1,255,4226, +1,256,4424,19,1327, +1,256,4226,1,257, +4425,19,1360,1,257, +4226,1,258,4426,19, +1371,1,258,4226,1, +259,4427,19,1462,1, +259,4226,1,260,4428, +19,1247,1,260,4226, +1,261,4429,19,1320, +1,261,4226,1,262, +4430,19,1301,1,262, +4226,1,263,4431,19, +1264,1,263,4226,1, +264,4432,19,1237,1, +264,4226,1,265,4433, +19,1083,1,265,4226, +1,266,4434,19,1570, +1,266,4226,1,267, +4435,19,1202,1,267, +4226,1,268,4436,19, +1207,1,268,4226,1, +269,4437,19,1227,1, +269,4226,1,270,4438, +19,1217,1,270,4226, +1,271,4439,19,1222, +1,271,4226,1,272, +4440,19,1212,1,272, +4226,1,273,4441,19, +1565,1,273,4226,1, +274,4442,19,1232,1, +274,4226,1,275,4443, +19,1296,1,275,4075, +1,276,4444,19,1662, +1,276,4142,1,277, +4445,19,1657,1,277, +4142,1,278,4446,19, +1636,1,278,4146,1, +279,4447,19,1949,1, +279,3865,1,280,4448, +19,1944,1,280,3865, +1,281,4449,19,1939, +1,281,3865,1,282, +4450,19,1934,1,282, +3865,1,283,4451,19, +1929,1,283,3865,1, +284,4452,19,1924,1, +284,3865,1,285,4453, +19,1919,1,285,3865, +1,286,4454,19,1850, +1,286,3884,1,287, +4455,19,1845,1,287, +3884,1,288,4456,19, +1840,1,288,3884,1, +289,4457,19,1835,1, +289,3884,1,290,4458, +19,1903,1,290,3884, +1,291,4459,19,1829, +1,291,3884,1,292, +4460,19,1824,1,292, +3884,1,293,4461,19, +1819,1,293,3884,1, +294,4462,19,1814,1, +294,3884,1,295,4463, +19,1809,1,295,3884, +1,296,4464,19,1804, +1,296,3884,1,297, +4465,19,1799,1,297, +3884,1,298,4466,19, +1794,1,298,3884,1, +299,4467,19,1789,1, +299,3884,1,300,4468, +19,1784,1,300,3884, +1,301,4469,19,1779, +1,301,3884,1,302, +4470,19,1774,1,302, +3884,1,303,4471,19, +1893,1,303,3884,1, +304,4472,19,1768,1, +304,3884,1,305,4473, +19,1763,1,305,3884, +1,306,4474,19,1758, +1,306,3884,1,307, +4475,19,1753,1,307, +3884,1,308,4476,19, +1748,1,308,3884,1, +309,4477,19,1886,1, +309,3884,1,310,4478, +19,1742,1,310,3884, +1,311,4479,19,1881, +1,311,3884,1,312, +4480,19,1737,1,312, +3884,1,313,4481,19, +1732,1,313,3884,1, +314,4482,19,1680,1, +314,3884,1,315,4483, +19,1874,1,315,3884, +1,316,4484,19,1725, +1,316,3884,1,317, +4485,19,1720,1,317, +3884,1,318,4486,19, +1715,1,318,3884,1, +319,4487,19,4488,4, +50,65,0,114,0, +103,0,117,0,109, +0,101,0,110,0, +116,0,68,0,101, +0,99,0,108,0, +97,0,114,0,97, +0,116,0,105,0, +111,0,110,0,76, +0,105,0,115,0, +116,0,95,0,51, +0,1,319,3842,1, +320,4489,19,4490,4, +28,65,0,114,0, +103,0,117,0,109, +0,101,0,110,0, +116,0,76,0,105, +0,115,0,116,0, +95,0,51,0,1, +320,4142,1,321,4491, +19,4492,4,50,65, +0,114,0,103,0, +117,0,109,0,101, +0,110,0,116,0, +68,0,101,0,99, +0,108,0,97,0, +114,0,97,0,116, +0,105,0,111,0, +110,0,76,0,105, +0,115,0,116,0, +95,0,52,0,1, +321,3842,1,322,4493, +19,4494,4,50,65, +0,114,0,103,0, +117,0,109,0,101, +0,110,0,116,0, +68,0,101,0,99, +0,108,0,97,0, +114,0,97,0,116, +0,105,0,111,0, +110,0,76,0,105, +0,115,0,116,0, +95,0,53,0,1, +322,3842,1,323,4495, +19,4496,4,28,65, +0,114,0,103,0, +117,0,109,0,101, +0,110,0,116,0, +76,0,105,0,115, +0,116,0,95,0, +52,0,1,323,4142, +2,0,0}; +new Sfactory(this,"ExpressionArgument_1",new SCreator(ExpressionArgument_1_factory)); +new Sfactory(this,"SimpleAssignment_8",new SCreator(SimpleAssignment_8_factory)); +new Sfactory(this,"StatementList_1",new SCreator(StatementList_1_factory)); +new Sfactory(this,"StateChange_1",new SCreator(StateChange_1_factory)); +new Sfactory(this,"StateChange_2",new SCreator(StateChange_2_factory)); +new Sfactory(this,"Declaration",new SCreator(Declaration_factory)); +new Sfactory(this,"IdentExpression",new SCreator(IdentExpression_factory)); +new Sfactory(this,"error",new SCreator(error_factory)); +new Sfactory(this,"BinaryExpression_2",new SCreator(BinaryExpression_2_factory)); +new Sfactory(this,"BinaryExpression_3",new SCreator(BinaryExpression_3_factory)); +new Sfactory(this,"BinaryExpression_4",new SCreator(BinaryExpression_4_factory)); +new Sfactory(this,"BinaryExpression_5",new SCreator(BinaryExpression_5_factory)); +new Sfactory(this,"ReturnStatement_2",new SCreator(ReturnStatement_2_factory)); +new Sfactory(this,"SimpleAssignment_19",new SCreator(SimpleAssignment_19_factory)); +new Sfactory(this,"BinaryExpression_9",new SCreator(BinaryExpression_9_factory)); +new Sfactory(this,"VectorConstant_1",new SCreator(VectorConstant_1_factory)); +new Sfactory(this,"ParenthesisExpression",new SCreator(ParenthesisExpression_factory)); +new Sfactory(this,"UnaryExpression",new SCreator(UnaryExpression_factory)); +new Sfactory(this,"IdentDotExpression_1",new SCreator(IdentDotExpression_1_factory)); +new Sfactory(this,"ArgumentList_4",new SCreator(ArgumentList_4_factory)); +new Sfactory(this,"Typename",new SCreator(Typename_factory)); +new Sfactory(this,"IfStatement_1",new SCreator(IfStatement_1_factory)); +new Sfactory(this,"Assignment",new SCreator(Assignment_factory)); +new Sfactory(this,"CompoundStatement_1",new SCreator(CompoundStatement_1_factory)); +new Sfactory(this,"CompoundStatement_2",new SCreator(CompoundStatement_2_factory)); +new Sfactory(this,"ReturnStatement_1",new SCreator(ReturnStatement_1_factory)); +new Sfactory(this,"IdentDotExpression",new SCreator(IdentDotExpression_factory)); +new Sfactory(this,"Argument",new SCreator(Argument_factory)); +new Sfactory(this,"State_2",new SCreator(State_2_factory)); +new Sfactory(this,"GlobalDefinitions_3",new SCreator(GlobalDefinitions_3_factory)); +new Sfactory(this,"GlobalDefinitions_4",new SCreator(GlobalDefinitions_4_factory)); +new Sfactory(this,"Event_1",new SCreator(Event_1_factory)); +new Sfactory(this,"ListConstant",new SCreator(ListConstant_factory)); +new Sfactory(this,"Event_3",new SCreator(Event_3_factory)); +new Sfactory(this,"Event_4",new SCreator(Event_4_factory)); +new Sfactory(this,"Event_5",new SCreator(Event_5_factory)); +new Sfactory(this,"SimpleAssignment_5",new SCreator(SimpleAssignment_5_factory)); +new Sfactory(this,"Typename_1",new SCreator(Typename_1_factory)); +new Sfactory(this,"Typename_2",new SCreator(Typename_2_factory)); +new Sfactory(this,"Typename_3",new SCreator(Typename_3_factory)); +new Sfactory(this,"Typename_4",new SCreator(Typename_4_factory)); +new Sfactory(this,"Typename_5",new SCreator(Typename_5_factory)); +new Sfactory(this,"Typename_6",new SCreator(Typename_6_factory)); +new Sfactory(this,"Typename_7",new SCreator(Typename_7_factory)); +new Sfactory(this,"ArgumentDeclarationList",new SCreator(ArgumentDeclarationList_factory)); +new Sfactory(this,"ConstantExpression",new SCreator(ConstantExpression_factory)); +new Sfactory(this,"LSLProgramRoot_1",new SCreator(LSLProgramRoot_1_factory)); +new Sfactory(this,"LSLProgramRoot_2",new SCreator(LSLProgramRoot_2_factory)); +new Sfactory(this,"States_1",new SCreator(States_1_factory)); +new Sfactory(this,"States_2",new SCreator(States_2_factory)); +new Sfactory(this,"FunctionCallExpression_1",new SCreator(FunctionCallExpression_1_factory)); +new Sfactory(this,"ForLoopStatement",new SCreator(ForLoopStatement_factory)); +new Sfactory(this,"DoWhileStatement_1",new SCreator(DoWhileStatement_1_factory)); +new Sfactory(this,"DoWhileStatement_2",new SCreator(DoWhileStatement_2_factory)); +new Sfactory(this,"ForLoopStatement_4",new SCreator(ForLoopStatement_4_factory)); +new Sfactory(this,"SimpleAssignment_11",new SCreator(SimpleAssignment_11_factory)); +new Sfactory(this,"SimpleAssignment_12",new SCreator(SimpleAssignment_12_factory)); +new Sfactory(this,"SimpleAssignment_13",new SCreator(SimpleAssignment_13_factory)); +new Sfactory(this,"JumpLabel",new SCreator(JumpLabel_factory)); +new Sfactory(this,"SimpleAssignment_15",new SCreator(SimpleAssignment_15_factory)); +new Sfactory(this,"SimpleAssignment_17",new SCreator(SimpleAssignment_17_factory)); +new Sfactory(this,"SimpleAssignment_18",new SCreator(SimpleAssignment_18_factory)); +new Sfactory(this,"JumpStatement_1",new SCreator(JumpStatement_1_factory)); +new Sfactory(this,"GlobalDefinitions",new SCreator(GlobalDefinitions_factory)); +new Sfactory(this,"FunctionCall_1",new SCreator(FunctionCall_1_factory)); +new Sfactory(this,"ArgumentList_3",new SCreator(ArgumentList_3_factory)); +new Sfactory(this,"Assignment_2",new SCreator(Assignment_2_factory)); +new Sfactory(this,"TypecastExpression_1",new SCreator(TypecastExpression_1_factory)); +new Sfactory(this,"SimpleAssignment_21",new SCreator(SimpleAssignment_21_factory)); +new Sfactory(this,"SimpleAssignment_22",new SCreator(SimpleAssignment_22_factory)); +new Sfactory(this,"SimpleAssignment_23",new SCreator(SimpleAssignment_23_factory)); +new Sfactory(this,"TypecastExpression_9",new SCreator(TypecastExpression_9_factory)); +new Sfactory(this,"ArgumentDeclarationList_1",new SCreator(ArgumentDeclarationList_1_factory)); +new Sfactory(this,"ArgumentDeclarationList_2",new SCreator(ArgumentDeclarationList_2_factory)); +new Sfactory(this,"ArgumentDeclarationList_3",new SCreator(ArgumentDeclarationList_3_factory)); +new Sfactory(this,"GlobalDefinitions_1",new SCreator(GlobalDefinitions_1_factory)); +new Sfactory(this,"GlobalDefinitions_2",new SCreator(GlobalDefinitions_2_factory)); +new Sfactory(this,"IncrementDecrementExpression",new SCreator(IncrementDecrementExpression_factory)); +new Sfactory(this,"GlobalVariableDeclaration",new SCreator(GlobalVariableDeclaration_factory)); +new Sfactory(this,"Event_11",new SCreator(Event_11_factory)); +new Sfactory(this,"TypecastExpression_2",new SCreator(TypecastExpression_2_factory)); +new Sfactory(this,"TypecastExpression_3",new SCreator(TypecastExpression_3_factory)); +new Sfactory(this,"TypecastExpression_5",new SCreator(TypecastExpression_5_factory)); +new Sfactory(this,"TypecastExpression_8",new SCreator(TypecastExpression_8_factory)); +new Sfactory(this,"Constant_1",new SCreator(Constant_1_factory)); +new Sfactory(this,"Expression",new SCreator(Expression_factory)); +new Sfactory(this,"Constant_3",new SCreator(Constant_3_factory)); +new Sfactory(this,"Constant_4",new SCreator(Constant_4_factory)); +new Sfactory(this,"BinaryExpression_1",new SCreator(BinaryExpression_1_factory)); +new Sfactory(this,"IfStatement_2",new SCreator(IfStatement_2_factory)); +new Sfactory(this,"IfStatement_3",new SCreator(IfStatement_3_factory)); +new Sfactory(this,"IfStatement_4",new SCreator(IfStatement_4_factory)); +new Sfactory(this,"ReturnStatement",new SCreator(ReturnStatement_factory)); +new Sfactory(this,"Event_2",new SCreator(Event_2_factory)); +new Sfactory(this,"RotationConstant",new SCreator(RotationConstant_factory)); +new Sfactory(this,"Statement_12",new SCreator(Statement_12_factory)); +new Sfactory(this,"UnaryExpression_1",new SCreator(UnaryExpression_1_factory)); +new Sfactory(this,"UnaryExpression_2",new SCreator(UnaryExpression_2_factory)); +new Sfactory(this,"UnaryExpression_3",new SCreator(UnaryExpression_3_factory)); +new Sfactory(this,"ArgumentList_1",new SCreator(ArgumentList_1_factory)); +new Sfactory(this,"StateBody_2",new SCreator(StateBody_2_factory)); +new Sfactory(this,"Constant",new SCreator(Constant_factory)); +new Sfactory(this,"State",new SCreator(State_factory)); +new Sfactory(this,"Event_13",new SCreator(Event_13_factory)); +new Sfactory(this,"LSLProgramRoot",new SCreator(LSLProgramRoot_factory)); +new Sfactory(this,"StateChange",new SCreator(StateChange_factory)); +new Sfactory(this,"IncrementDecrementExpression_2",new SCreator(IncrementDecrementExpression_2_factory)); +new Sfactory(this,"GlobalVariableDeclaration_1",new SCreator(GlobalVariableDeclaration_1_factory)); +new Sfactory(this,"GlobalVariableDeclaration_2",new SCreator(GlobalVariableDeclaration_2_factory)); +new Sfactory(this,"IncrementDecrementExpression_5",new SCreator(IncrementDecrementExpression_5_factory)); +new Sfactory(this,"GlobalFunctionDefinition_2",new SCreator(GlobalFunctionDefinition_2_factory)); +new Sfactory(this,"IncrementDecrementExpression_7",new SCreator(IncrementDecrementExpression_7_factory)); +new Sfactory(this,"IncrementDecrementExpression_8",new SCreator(IncrementDecrementExpression_8_factory)); +new Sfactory(this,"Assignment_1",new SCreator(Assignment_1_factory)); +new Sfactory(this,"Event_21",new SCreator(Event_21_factory)); +new Sfactory(this,"Event_22",new SCreator(Event_22_factory)); +new Sfactory(this,"ArgumentList_2",new SCreator(ArgumentList_2_factory)); +new Sfactory(this,"CompoundStatement",new SCreator(CompoundStatement_factory)); +new Sfactory(this,"RotationConstant_1",new SCreator(RotationConstant_1_factory)); +new Sfactory(this,"TypecastExpression",new SCreator(TypecastExpression_factory)); +new Sfactory(this,"SimpleAssignment_3",new SCreator(SimpleAssignment_3_factory)); +new Sfactory(this,"SimpleAssignment_4",new SCreator(SimpleAssignment_4_factory)); +new Sfactory(this,"Statement_1",new SCreator(Statement_1_factory)); +new Sfactory(this,"Statement_2",new SCreator(Statement_2_factory)); +new Sfactory(this,"Statement_3",new SCreator(Statement_3_factory)); +new Sfactory(this,"Statement_4",new SCreator(Statement_4_factory)); +new Sfactory(this,"Statement_5",new SCreator(Statement_5_factory)); +new Sfactory(this,"Statement_6",new SCreator(Statement_6_factory)); +new Sfactory(this,"Statement_7",new SCreator(Statement_7_factory)); +new Sfactory(this,"Statement_8",new SCreator(Statement_8_factory)); +new Sfactory(this,"Statement_9",new SCreator(Statement_9_factory)); +new Sfactory(this,"ExpressionArgument",new SCreator(ExpressionArgument_factory)); +new Sfactory(this,"GlobalFunctionDefinition",new SCreator(GlobalFunctionDefinition_factory)); +new Sfactory(this,"State_1",new SCreator(State_1_factory)); +new Sfactory(this,"DoWhileStatement",new SCreator(DoWhileStatement_factory)); +new Sfactory(this,"ParenthesisExpression_1",new SCreator(ParenthesisExpression_1_factory)); +new Sfactory(this,"ParenthesisExpression_2",new SCreator(ParenthesisExpression_2_factory)); +new Sfactory(this,"StateBody",new SCreator(StateBody_factory)); +new Sfactory(this,"Event_7",new SCreator(Event_7_factory)); +new Sfactory(this,"Event_8",new SCreator(Event_8_factory)); +new Sfactory(this,"IncrementDecrementExpression_1",new SCreator(IncrementDecrementExpression_1_factory)); +new Sfactory(this,"IncrementDecrementExpression_3",new SCreator(IncrementDecrementExpression_3_factory)); +new Sfactory(this,"IncrementDecrementExpression_4",new SCreator(IncrementDecrementExpression_4_factory)); +new Sfactory(this,"IncrementDecrementExpression_6",new SCreator(IncrementDecrementExpression_6_factory)); +new Sfactory(this,"StateEvent",new SCreator(StateEvent_factory)); +new Sfactory(this,"Event_20",new SCreator(Event_20_factory)); +new Sfactory(this,"Event_23",new SCreator(Event_23_factory)); +new Sfactory(this,"Event_24",new SCreator(Event_24_factory)); +new Sfactory(this,"Event_26",new SCreator(Event_26_factory)); +new Sfactory(this,"SimpleAssignment_10",new SCreator(SimpleAssignment_10_factory)); +new Sfactory(this,"Event",new SCreator(Event_factory)); +new Sfactory(this,"SimpleAssignment_14",new SCreator(SimpleAssignment_14_factory)); +new Sfactory(this,"SimpleAssignment_16",new SCreator(SimpleAssignment_16_factory)); +new Sfactory(this,"Statement_10",new SCreator(Statement_10_factory)); +new Sfactory(this,"Statement_11",new SCreator(Statement_11_factory)); +new Sfactory(this,"SimpleAssignment",new SCreator(SimpleAssignment_factory)); +new Sfactory(this,"Statement_13",new SCreator(Statement_13_factory)); +new Sfactory(this,"Event_15",new SCreator(Event_15_factory)); +new Sfactory(this,"Event_16",new SCreator(Event_16_factory)); +new Sfactory(this,"Event_32",new SCreator(Event_32_factory)); +new Sfactory(this,"SimpleAssignment_20",new SCreator(SimpleAssignment_20_factory)); +new Sfactory(this,"SimpleAssignment_24",new SCreator(SimpleAssignment_24_factory)); +new Sfactory(this,"SimpleAssignment_1",new SCreator(SimpleAssignment_1_factory)); +new Sfactory(this,"SimpleAssignment_2",new SCreator(SimpleAssignment_2_factory)); +new Sfactory(this,"BinaryExpression",new SCreator(BinaryExpression_factory)); +new Sfactory(this,"FunctionCallExpression",new SCreator(FunctionCallExpression_factory)); +new Sfactory(this,"SimpleAssignment_6",new SCreator(SimpleAssignment_6_factory)); +new Sfactory(this,"StateBody_1",new SCreator(StateBody_1_factory)); +new Sfactory(this,"StatementList_2",new SCreator(StatementList_2_factory)); +new Sfactory(this,"SimpleAssignment_9",new SCreator(SimpleAssignment_9_factory)); +new Sfactory(this,"BinaryExpression_15",new SCreator(BinaryExpression_15_factory)); +new Sfactory(this,"BinaryExpression_16",new SCreator(BinaryExpression_16_factory)); +new Sfactory(this,"BinaryExpression_17",new SCreator(BinaryExpression_17_factory)); +new Sfactory(this,"BinaryExpression_18",new SCreator(BinaryExpression_18_factory)); +new Sfactory(this,"Event_25",new SCreator(Event_25_factory)); +new Sfactory(this,"Event_9",new SCreator(Event_9_factory)); +new Sfactory(this,"Statement",new SCreator(Statement_factory)); +new Sfactory(this,"JumpStatement",new SCreator(JumpStatement_factory)); +new Sfactory(this,"BinaryExpression_11",new SCreator(BinaryExpression_11_factory)); +new Sfactory(this,"BinaryExpression_12",new SCreator(BinaryExpression_12_factory)); +new Sfactory(this,"BinaryExpression_13",new SCreator(BinaryExpression_13_factory)); +new Sfactory(this,"BinaryExpression_14",new SCreator(BinaryExpression_14_factory)); +new Sfactory(this,"BinaryExpression_6",new SCreator(BinaryExpression_6_factory)); +new Sfactory(this,"BinaryExpression_7",new SCreator(BinaryExpression_7_factory)); +new Sfactory(this,"BinaryExpression_8",new SCreator(BinaryExpression_8_factory)); +new Sfactory(this,"ArgumentList",new SCreator(ArgumentList_factory)); +new Sfactory(this,"Event_10",new SCreator(Event_10_factory)); +new Sfactory(this,"ConstantExpression_1",new SCreator(ConstantExpression_1_factory)); +new Sfactory(this,"Event_12",new SCreator(Event_12_factory)); +new Sfactory(this,"Event_14",new SCreator(Event_14_factory)); +new Sfactory(this,"Event_17",new SCreator(Event_17_factory)); +new Sfactory(this,"Event_18",new SCreator(Event_18_factory)); +new Sfactory(this,"Event_19",new SCreator(Event_19_factory)); +new Sfactory(this,"BinaryExpression_10",new SCreator(BinaryExpression_10_factory)); +new Sfactory(this,"StateEvent_1",new SCreator(StateEvent_1_factory)); +new Sfactory(this,"VectorConstant",new SCreator(VectorConstant_factory)); +new Sfactory(this,"EmptyStatement_1",new SCreator(EmptyStatement_1_factory)); +new Sfactory(this,"TypecastExpression_4",new SCreator(TypecastExpression_4_factory)); +new Sfactory(this,"TypecastExpression_6",new SCreator(TypecastExpression_6_factory)); +new Sfactory(this,"TypecastExpression_7",new SCreator(TypecastExpression_7_factory)); +new Sfactory(this,"FunctionCall",new SCreator(FunctionCall_factory)); +new Sfactory(this,"Event_27",new SCreator(Event_27_factory)); +new Sfactory(this,"Event_28",new SCreator(Event_28_factory)); +new Sfactory(this,"Event_29",new SCreator(Event_29_factory)); +new Sfactory(this,"ListConstant_1",new SCreator(ListConstant_1_factory)); +new Sfactory(this,"Event_6",new SCreator(Event_6_factory)); +new Sfactory(this,"Declaration_1",new SCreator(Declaration_1_factory)); +new Sfactory(this,"SimpleAssignment_7",new SCreator(SimpleAssignment_7_factory)); +new Sfactory(this,"ForLoop",new SCreator(ForLoop_factory)); +new Sfactory(this,"Event_30",new SCreator(Event_30_factory)); +new Sfactory(this,"Event_31",new SCreator(Event_31_factory)); +new Sfactory(this,"Event_33",new SCreator(Event_33_factory)); +new Sfactory(this,"GlobalFunctionDefinition_1",new SCreator(GlobalFunctionDefinition_1_factory)); +new Sfactory(this,"JumpLabel_1",new SCreator(JumpLabel_1_factory)); +new Sfactory(this,"IfStatement",new SCreator(IfStatement_factory)); +new Sfactory(this,"ForLoopStatement_1",new SCreator(ForLoopStatement_1_factory)); +new Sfactory(this,"ForLoopStatement_2",new SCreator(ForLoopStatement_2_factory)); +new Sfactory(this,"ForLoopStatement_3",new SCreator(ForLoopStatement_3_factory)); +new Sfactory(this,"ArgumentDeclarationList_4",new SCreator(ArgumentDeclarationList_4_factory)); +new Sfactory(this,"ArgumentDeclarationList_5",new SCreator(ArgumentDeclarationList_5_factory)); +new Sfactory(this,"EmptyStatement",new SCreator(EmptyStatement_factory)); +new Sfactory(this,"WhileStatement",new SCreator(WhileStatement_factory)); +new Sfactory(this,"ForLoop_1",new SCreator(ForLoop_1_factory)); +new Sfactory(this,"Constant_2",new SCreator(Constant_2_factory)); +new Sfactory(this,"StatementList",new SCreator(StatementList_factory)); +new Sfactory(this,"WhileStatement_1",new SCreator(WhileStatement_1_factory)); +new Sfactory(this,"WhileStatement_2",new SCreator(WhileStatement_2_factory)); +new Sfactory(this,"IdentExpression_1",new SCreator(IdentExpression_1_factory)); +new Sfactory(this,"States",new SCreator(States_factory)); +} +public static object ExpressionArgument_1_factory(Parser yyp) { return new ExpressionArgument_1(yyp); } +public static object SimpleAssignment_8_factory(Parser yyp) { return new SimpleAssignment_8(yyp); } +public static object StatementList_1_factory(Parser yyp) { return new StatementList_1(yyp); } +public static object StateChange_1_factory(Parser yyp) { return new StateChange_1(yyp); } +public static object StateChange_2_factory(Parser yyp) { return new StateChange_2(yyp); } +public static object Declaration_factory(Parser yyp) { return new Declaration(yyp); } +public static object IdentExpression_factory(Parser yyp) { return new IdentExpression(yyp); } +public static object error_factory(Parser yyp) { return new error(yyp); } +public static object BinaryExpression_2_factory(Parser yyp) { return new BinaryExpression_2(yyp); } +public static object BinaryExpression_3_factory(Parser yyp) { return new BinaryExpression_3(yyp); } +public static object BinaryExpression_4_factory(Parser yyp) { return new BinaryExpression_4(yyp); } +public static object BinaryExpression_5_factory(Parser yyp) { return new BinaryExpression_5(yyp); } +public static object ReturnStatement_2_factory(Parser yyp) { return new ReturnStatement_2(yyp); } +public static object SimpleAssignment_19_factory(Parser yyp) { return new SimpleAssignment_19(yyp); } +public static object BinaryExpression_9_factory(Parser yyp) { return new BinaryExpression_9(yyp); } +public static object VectorConstant_1_factory(Parser yyp) { return new VectorConstant_1(yyp); } +public static object ParenthesisExpression_factory(Parser yyp) { return new ParenthesisExpression(yyp); } +public static object UnaryExpression_factory(Parser yyp) { return new UnaryExpression(yyp); } +public static object IdentDotExpression_1_factory(Parser yyp) { return new IdentDotExpression_1(yyp); } +public static object ArgumentList_4_factory(Parser yyp) { return new ArgumentList_4(yyp); } +public static object Typename_factory(Parser yyp) { return new Typename(yyp); } +public static object IfStatement_1_factory(Parser yyp) { return new IfStatement_1(yyp); } +public static object Assignment_factory(Parser yyp) { return new Assignment(yyp); } +public static object CompoundStatement_1_factory(Parser yyp) { return new CompoundStatement_1(yyp); } +public static object CompoundStatement_2_factory(Parser yyp) { return new CompoundStatement_2(yyp); } +public static object ReturnStatement_1_factory(Parser yyp) { return new ReturnStatement_1(yyp); } +public static object IdentDotExpression_factory(Parser yyp) { return new IdentDotExpression(yyp); } +public static object Argument_factory(Parser yyp) { return new Argument(yyp); } +public static object State_2_factory(Parser yyp) { return new State_2(yyp); } +public static object GlobalDefinitions_3_factory(Parser yyp) { return new GlobalDefinitions_3(yyp); } +public static object GlobalDefinitions_4_factory(Parser yyp) { return new GlobalDefinitions_4(yyp); } +public static object Event_1_factory(Parser yyp) { return new Event_1(yyp); } +public static object ListConstant_factory(Parser yyp) { return new ListConstant(yyp); } +public static object Event_3_factory(Parser yyp) { return new Event_3(yyp); } +public static object Event_4_factory(Parser yyp) { return new Event_4(yyp); } +public static object Event_5_factory(Parser yyp) { return new Event_5(yyp); } +public static object SimpleAssignment_5_factory(Parser yyp) { return new SimpleAssignment_5(yyp); } +public static object Typename_1_factory(Parser yyp) { return new Typename_1(yyp); } +public static object Typename_2_factory(Parser yyp) { return new Typename_2(yyp); } +public static object Typename_3_factory(Parser yyp) { return new Typename_3(yyp); } +public static object Typename_4_factory(Parser yyp) { return new Typename_4(yyp); } +public static object Typename_5_factory(Parser yyp) { return new Typename_5(yyp); } +public static object Typename_6_factory(Parser yyp) { return new Typename_6(yyp); } +public static object Typename_7_factory(Parser yyp) { return new Typename_7(yyp); } +public static object ArgumentDeclarationList_factory(Parser yyp) { return new ArgumentDeclarationList(yyp); } +public static object ConstantExpression_factory(Parser yyp) { return new ConstantExpression(yyp); } +public static object LSLProgramRoot_1_factory(Parser yyp) { return new LSLProgramRoot_1(yyp); } +public static object LSLProgramRoot_2_factory(Parser yyp) { return new LSLProgramRoot_2(yyp); } +public static object States_1_factory(Parser yyp) { return new States_1(yyp); } +public static object States_2_factory(Parser yyp) { return new States_2(yyp); } +public static object FunctionCallExpression_1_factory(Parser yyp) { return new FunctionCallExpression_1(yyp); } +public static object ForLoopStatement_factory(Parser yyp) { return new ForLoopStatement(yyp); } +public static object DoWhileStatement_1_factory(Parser yyp) { return new DoWhileStatement_1(yyp); } +public static object DoWhileStatement_2_factory(Parser yyp) { return new DoWhileStatement_2(yyp); } +public static object ForLoopStatement_4_factory(Parser yyp) { return new ForLoopStatement_4(yyp); } +public static object SimpleAssignment_11_factory(Parser yyp) { return new SimpleAssignment_11(yyp); } +public static object SimpleAssignment_12_factory(Parser yyp) { return new SimpleAssignment_12(yyp); } +public static object SimpleAssignment_13_factory(Parser yyp) { return new SimpleAssignment_13(yyp); } +public static object JumpLabel_factory(Parser yyp) { return new JumpLabel(yyp); } +public static object SimpleAssignment_15_factory(Parser yyp) { return new SimpleAssignment_15(yyp); } +public static object SimpleAssignment_17_factory(Parser yyp) { return new SimpleAssignment_17(yyp); } +public static object SimpleAssignment_18_factory(Parser yyp) { return new SimpleAssignment_18(yyp); } +public static object JumpStatement_1_factory(Parser yyp) { return new JumpStatement_1(yyp); } +public static object GlobalDefinitions_factory(Parser yyp) { return new GlobalDefinitions(yyp); } +public static object FunctionCall_1_factory(Parser yyp) { return new FunctionCall_1(yyp); } +public static object ArgumentList_3_factory(Parser yyp) { return new ArgumentList_3(yyp); } +public static object Assignment_2_factory(Parser yyp) { return new Assignment_2(yyp); } +public static object TypecastExpression_1_factory(Parser yyp) { return new TypecastExpression_1(yyp); } +public static object SimpleAssignment_21_factory(Parser yyp) { return new SimpleAssignment_21(yyp); } +public static object SimpleAssignment_22_factory(Parser yyp) { return new SimpleAssignment_22(yyp); } +public static object SimpleAssignment_23_factory(Parser yyp) { return new SimpleAssignment_23(yyp); } +public static object TypecastExpression_9_factory(Parser yyp) { return new TypecastExpression_9(yyp); } +public static object ArgumentDeclarationList_1_factory(Parser yyp) { return new ArgumentDeclarationList_1(yyp); } +public static object ArgumentDeclarationList_2_factory(Parser yyp) { return new ArgumentDeclarationList_2(yyp); } +public static object ArgumentDeclarationList_3_factory(Parser yyp) { return new ArgumentDeclarationList_3(yyp); } +public static object GlobalDefinitions_1_factory(Parser yyp) { return new GlobalDefinitions_1(yyp); } +public static object GlobalDefinitions_2_factory(Parser yyp) { return new GlobalDefinitions_2(yyp); } +public static object IncrementDecrementExpression_factory(Parser yyp) { return new IncrementDecrementExpression(yyp); } +public static object GlobalVariableDeclaration_factory(Parser yyp) { return new GlobalVariableDeclaration(yyp); } +public static object Event_11_factory(Parser yyp) { return new Event_11(yyp); } +public static object TypecastExpression_2_factory(Parser yyp) { return new TypecastExpression_2(yyp); } +public static object TypecastExpression_3_factory(Parser yyp) { return new TypecastExpression_3(yyp); } +public static object TypecastExpression_5_factory(Parser yyp) { return new TypecastExpression_5(yyp); } +public static object TypecastExpression_8_factory(Parser yyp) { return new TypecastExpression_8(yyp); } +public static object Constant_1_factory(Parser yyp) { return new Constant_1(yyp); } +public static object Expression_factory(Parser yyp) { return new Expression(yyp); } +public static object Constant_3_factory(Parser yyp) { return new Constant_3(yyp); } +public static object Constant_4_factory(Parser yyp) { return new Constant_4(yyp); } +public static object BinaryExpression_1_factory(Parser yyp) { return new BinaryExpression_1(yyp); } +public static object IfStatement_2_factory(Parser yyp) { return new IfStatement_2(yyp); } +public static object IfStatement_3_factory(Parser yyp) { return new IfStatement_3(yyp); } +public static object IfStatement_4_factory(Parser yyp) { return new IfStatement_4(yyp); } +public static object ReturnStatement_factory(Parser yyp) { return new ReturnStatement(yyp); } +public static object Event_2_factory(Parser yyp) { return new Event_2(yyp); } +public static object RotationConstant_factory(Parser yyp) { return new RotationConstant(yyp); } +public static object Statement_12_factory(Parser yyp) { return new Statement_12(yyp); } +public static object UnaryExpression_1_factory(Parser yyp) { return new UnaryExpression_1(yyp); } +public static object UnaryExpression_2_factory(Parser yyp) { return new UnaryExpression_2(yyp); } +public static object UnaryExpression_3_factory(Parser yyp) { return new UnaryExpression_3(yyp); } +public static object ArgumentList_1_factory(Parser yyp) { return new ArgumentList_1(yyp); } +public static object StateBody_2_factory(Parser yyp) { return new StateBody_2(yyp); } +public static object Constant_factory(Parser yyp) { return new Constant(yyp); } +public static object State_factory(Parser yyp) { return new State(yyp); } +public static object Event_13_factory(Parser yyp) { return new Event_13(yyp); } +public static object LSLProgramRoot_factory(Parser yyp) { return new LSLProgramRoot(yyp); } +public static object StateChange_factory(Parser yyp) { return new StateChange(yyp); } +public static object IncrementDecrementExpression_2_factory(Parser yyp) { return new IncrementDecrementExpression_2(yyp); } +public static object GlobalVariableDeclaration_1_factory(Parser yyp) { return new GlobalVariableDeclaration_1(yyp); } +public static object GlobalVariableDeclaration_2_factory(Parser yyp) { return new GlobalVariableDeclaration_2(yyp); } +public static object IncrementDecrementExpression_5_factory(Parser yyp) { return new IncrementDecrementExpression_5(yyp); } +public static object GlobalFunctionDefinition_2_factory(Parser yyp) { return new GlobalFunctionDefinition_2(yyp); } +public static object IncrementDecrementExpression_7_factory(Parser yyp) { return new IncrementDecrementExpression_7(yyp); } +public static object IncrementDecrementExpression_8_factory(Parser yyp) { return new IncrementDecrementExpression_8(yyp); } +public static object Assignment_1_factory(Parser yyp) { return new Assignment_1(yyp); } +public static object Event_21_factory(Parser yyp) { return new Event_21(yyp); } +public static object Event_22_factory(Parser yyp) { return new Event_22(yyp); } +public static object ArgumentList_2_factory(Parser yyp) { return new ArgumentList_2(yyp); } +public static object CompoundStatement_factory(Parser yyp) { return new CompoundStatement(yyp); } +public static object RotationConstant_1_factory(Parser yyp) { return new RotationConstant_1(yyp); } +public static object TypecastExpression_factory(Parser yyp) { return new TypecastExpression(yyp); } +public static object SimpleAssignment_3_factory(Parser yyp) { return new SimpleAssignment_3(yyp); } +public static object SimpleAssignment_4_factory(Parser yyp) { return new SimpleAssignment_4(yyp); } +public static object Statement_1_factory(Parser yyp) { return new Statement_1(yyp); } +public static object Statement_2_factory(Parser yyp) { return new Statement_2(yyp); } +public static object Statement_3_factory(Parser yyp) { return new Statement_3(yyp); } +public static object Statement_4_factory(Parser yyp) { return new Statement_4(yyp); } +public static object Statement_5_factory(Parser yyp) { return new Statement_5(yyp); } +public static object Statement_6_factory(Parser yyp) { return new Statement_6(yyp); } +public static object Statement_7_factory(Parser yyp) { return new Statement_7(yyp); } +public static object Statement_8_factory(Parser yyp) { return new Statement_8(yyp); } +public static object Statement_9_factory(Parser yyp) { return new Statement_9(yyp); } +public static object ExpressionArgument_factory(Parser yyp) { return new ExpressionArgument(yyp); } +public static object GlobalFunctionDefinition_factory(Parser yyp) { return new GlobalFunctionDefinition(yyp); } +public static object State_1_factory(Parser yyp) { return new State_1(yyp); } +public static object DoWhileStatement_factory(Parser yyp) { return new DoWhileStatement(yyp); } +public static object ParenthesisExpression_1_factory(Parser yyp) { return new ParenthesisExpression_1(yyp); } +public static object ParenthesisExpression_2_factory(Parser yyp) { return new ParenthesisExpression_2(yyp); } +public static object StateBody_factory(Parser yyp) { return new StateBody(yyp); } +public static object Event_7_factory(Parser yyp) { return new Event_7(yyp); } +public static object Event_8_factory(Parser yyp) { return new Event_8(yyp); } +public static object IncrementDecrementExpression_1_factory(Parser yyp) { return new IncrementDecrementExpression_1(yyp); } +public static object IncrementDecrementExpression_3_factory(Parser yyp) { return new IncrementDecrementExpression_3(yyp); } +public static object IncrementDecrementExpression_4_factory(Parser yyp) { return new IncrementDecrementExpression_4(yyp); } +public static object IncrementDecrementExpression_6_factory(Parser yyp) { return new IncrementDecrementExpression_6(yyp); } +public static object StateEvent_factory(Parser yyp) { return new StateEvent(yyp); } +public static object Event_20_factory(Parser yyp) { return new Event_20(yyp); } +public static object Event_23_factory(Parser yyp) { return new Event_23(yyp); } +public static object Event_24_factory(Parser yyp) { return new Event_24(yyp); } +public static object Event_26_factory(Parser yyp) { return new Event_26(yyp); } +public static object SimpleAssignment_10_factory(Parser yyp) { return new SimpleAssignment_10(yyp); } +public static object Event_factory(Parser yyp) { return new Event(yyp); } +public static object SimpleAssignment_14_factory(Parser yyp) { return new SimpleAssignment_14(yyp); } +public static object SimpleAssignment_16_factory(Parser yyp) { return new SimpleAssignment_16(yyp); } +public static object Statement_10_factory(Parser yyp) { return new Statement_10(yyp); } +public static object Statement_11_factory(Parser yyp) { return new Statement_11(yyp); } +public static object SimpleAssignment_factory(Parser yyp) { return new SimpleAssignment(yyp); } +public static object Statement_13_factory(Parser yyp) { return new Statement_13(yyp); } +public static object Event_15_factory(Parser yyp) { return new Event_15(yyp); } +public static object Event_16_factory(Parser yyp) { return new Event_16(yyp); } +public static object Event_32_factory(Parser yyp) { return new Event_32(yyp); } +public static object SimpleAssignment_20_factory(Parser yyp) { return new SimpleAssignment_20(yyp); } +public static object SimpleAssignment_24_factory(Parser yyp) { return new SimpleAssignment_24(yyp); } +public static object SimpleAssignment_1_factory(Parser yyp) { return new SimpleAssignment_1(yyp); } +public static object SimpleAssignment_2_factory(Parser yyp) { return new SimpleAssignment_2(yyp); } +public static object BinaryExpression_factory(Parser yyp) { return new BinaryExpression(yyp); } +public static object FunctionCallExpression_factory(Parser yyp) { return new FunctionCallExpression(yyp); } +public static object SimpleAssignment_6_factory(Parser yyp) { return new SimpleAssignment_6(yyp); } +public static object StateBody_1_factory(Parser yyp) { return new StateBody_1(yyp); } +public static object StatementList_2_factory(Parser yyp) { return new StatementList_2(yyp); } +public static object SimpleAssignment_9_factory(Parser yyp) { return new SimpleAssignment_9(yyp); } +public static object BinaryExpression_15_factory(Parser yyp) { return new BinaryExpression_15(yyp); } +public static object BinaryExpression_16_factory(Parser yyp) { return new BinaryExpression_16(yyp); } +public static object BinaryExpression_17_factory(Parser yyp) { return new BinaryExpression_17(yyp); } +public static object BinaryExpression_18_factory(Parser yyp) { return new BinaryExpression_18(yyp); } +public static object Event_25_factory(Parser yyp) { return new Event_25(yyp); } +public static object Event_9_factory(Parser yyp) { return new Event_9(yyp); } +public static object Statement_factory(Parser yyp) { return new Statement(yyp); } +public static object JumpStatement_factory(Parser yyp) { return new JumpStatement(yyp); } +public static object BinaryExpression_11_factory(Parser yyp) { return new BinaryExpression_11(yyp); } +public static object BinaryExpression_12_factory(Parser yyp) { return new BinaryExpression_12(yyp); } +public static object BinaryExpression_13_factory(Parser yyp) { return new BinaryExpression_13(yyp); } +public static object BinaryExpression_14_factory(Parser yyp) { return new BinaryExpression_14(yyp); } +public static object BinaryExpression_6_factory(Parser yyp) { return new BinaryExpression_6(yyp); } +public static object BinaryExpression_7_factory(Parser yyp) { return new BinaryExpression_7(yyp); } +public static object BinaryExpression_8_factory(Parser yyp) { return new BinaryExpression_8(yyp); } +public static object ArgumentList_factory(Parser yyp) { return new ArgumentList(yyp); } +public static object Event_10_factory(Parser yyp) { return new Event_10(yyp); } +public static object ConstantExpression_1_factory(Parser yyp) { return new ConstantExpression_1(yyp); } +public static object Event_12_factory(Parser yyp) { return new Event_12(yyp); } +public static object Event_14_factory(Parser yyp) { return new Event_14(yyp); } +public static object Event_17_factory(Parser yyp) { return new Event_17(yyp); } +public static object Event_18_factory(Parser yyp) { return new Event_18(yyp); } +public static object Event_19_factory(Parser yyp) { return new Event_19(yyp); } +public static object BinaryExpression_10_factory(Parser yyp) { return new BinaryExpression_10(yyp); } +public static object StateEvent_1_factory(Parser yyp) { return new StateEvent_1(yyp); } +public static object VectorConstant_factory(Parser yyp) { return new VectorConstant(yyp); } +public static object EmptyStatement_1_factory(Parser yyp) { return new EmptyStatement_1(yyp); } +public static object TypecastExpression_4_factory(Parser yyp) { return new TypecastExpression_4(yyp); } +public static object TypecastExpression_6_factory(Parser yyp) { return new TypecastExpression_6(yyp); } +public static object TypecastExpression_7_factory(Parser yyp) { return new TypecastExpression_7(yyp); } +public static object FunctionCall_factory(Parser yyp) { return new FunctionCall(yyp); } +public static object Event_27_factory(Parser yyp) { return new Event_27(yyp); } +public static object Event_28_factory(Parser yyp) { return new Event_28(yyp); } +public static object Event_29_factory(Parser yyp) { return new Event_29(yyp); } +public static object ListConstant_1_factory(Parser yyp) { return new ListConstant_1(yyp); } +public static object Event_6_factory(Parser yyp) { return new Event_6(yyp); } +public static object Declaration_1_factory(Parser yyp) { return new Declaration_1(yyp); } +public static object SimpleAssignment_7_factory(Parser yyp) { return new SimpleAssignment_7(yyp); } +public static object ForLoop_factory(Parser yyp) { return new ForLoop(yyp); } +public static object Event_30_factory(Parser yyp) { return new Event_30(yyp); } +public static object Event_31_factory(Parser yyp) { return new Event_31(yyp); } +public static object Event_33_factory(Parser yyp) { return new Event_33(yyp); } +public static object GlobalFunctionDefinition_1_factory(Parser yyp) { return new GlobalFunctionDefinition_1(yyp); } +public static object JumpLabel_1_factory(Parser yyp) { return new JumpLabel_1(yyp); } +public static object IfStatement_factory(Parser yyp) { return new IfStatement(yyp); } +public static object ForLoopStatement_1_factory(Parser yyp) { return new ForLoopStatement_1(yyp); } +public static object ForLoopStatement_2_factory(Parser yyp) { return new ForLoopStatement_2(yyp); } +public static object ForLoopStatement_3_factory(Parser yyp) { return new ForLoopStatement_3(yyp); } +public static object ArgumentDeclarationList_4_factory(Parser yyp) { return new ArgumentDeclarationList_4(yyp); } +public static object ArgumentDeclarationList_5_factory(Parser yyp) { return new ArgumentDeclarationList_5(yyp); } +public static object EmptyStatement_factory(Parser yyp) { return new EmptyStatement(yyp); } +public static object WhileStatement_factory(Parser yyp) { return new WhileStatement(yyp); } +public static object ForLoop_1_factory(Parser yyp) { return new ForLoop_1(yyp); } +public static object Constant_2_factory(Parser yyp) { return new Constant_2(yyp); } +public static object StatementList_factory(Parser yyp) { return new StatementList(yyp); } +public static object WhileStatement_1_factory(Parser yyp) { return new WhileStatement_1(yyp); } +public static object WhileStatement_2_factory(Parser yyp) { return new WhileStatement_2(yyp); } +public static object IdentExpression_1_factory(Parser yyp) { return new IdentExpression_1(yyp); } +public static object States_factory(Parser yyp) { return new States(yyp); } +} +public class LSLSyntax +: Parser { +public LSLSyntax +():base(new yyLSLSyntax +(),new LSLTokens()) {} +public LSLSyntax +(YyParser syms):base(syms,new LSLTokens()) {} +public LSLSyntax +(YyParser syms,ErrorHandler erh):base(syms,new LSLTokens(erh)) {} + + } +} diff --git a/Programs/Simian/SimulationObject.cs b/Programs/Simian/SimulationObject.cs index 4e25cc30..5f6499d2 100644 --- a/Programs/Simian/SimulationObject.cs +++ b/Programs/Simian/SimulationObject.cs @@ -294,6 +294,40 @@ namespace Simian } } + public static ObjectPropertiesPacket.ObjectDataBlock BuildPropertiesBlock(Primitive prim) + { + ObjectPropertiesPacket.ObjectDataBlock block = new ObjectPropertiesPacket.ObjectDataBlock(); + block.AggregatePerms = prim.Properties.AggregatePerms; + block.AggregatePermTextures = prim.Properties.AggregatePermTextures; + block.AggregatePermTexturesOwner = prim.Properties.AggregatePermTexturesOwner; + block.BaseMask = (uint)prim.Properties.Permissions.BaseMask; + block.Category = (uint)prim.Properties.Category; + block.CreationDate = Utils.DateTimeToUnixTime(prim.Properties.CreationDate); + block.CreatorID = prim.Properties.CreatorID; + block.Description = Utils.StringToBytes(prim.Properties.Description); + block.EveryoneMask = (uint)prim.Properties.Permissions.EveryoneMask; + block.FolderID = prim.Properties.FolderID; + block.FromTaskID = prim.Properties.FromTaskID; + block.GroupID = prim.Properties.GroupID; + block.GroupMask = (uint)prim.Properties.Permissions.GroupMask; + block.InventorySerial = prim.Properties.InventorySerial; + block.ItemID = prim.Properties.ItemID; + block.LastOwnerID = prim.Properties.LastOwnerID; + block.Name = Utils.StringToBytes(prim.Properties.Name); + block.NextOwnerMask = (uint)prim.Properties.Permissions.NextOwnerMask; + block.ObjectID = prim.ID; + block.OwnerID = prim.Properties.OwnerID; + block.OwnerMask = (uint)prim.Properties.Permissions.OwnerMask; + block.OwnershipCost = prim.Properties.OwnershipCost; + block.SalePrice = prim.Properties.SalePrice; + block.SaleType = (byte)prim.Properties.SaleType; + block.SitName = Utils.StringToBytes(prim.Properties.SitName); + block.TextureID = prim.Properties.GetTextureIDBytes(); + block.TouchName = Utils.StringToBytes(prim.Properties.TouchName); + + return block; + } + public static ObjectUpdatePacket.ObjectDataBlock BuildUpdateBlock(Primitive prim, PrimFlags flags, uint crc) { byte[] objectData = new byte[60]; diff --git a/Programs/Simian/SimulationObjectInventory.cs b/Programs/Simian/SimulationObjectInventory.cs index bce81305..708d9518 100644 --- a/Programs/Simian/SimulationObjectInventory.cs +++ b/Programs/Simian/SimulationObjectInventory.cs @@ -99,13 +99,11 @@ namespace Simian public void StartScripts(int startParam, bool triggerOnRezEvent) { - LazyInitialize(); throw new NotImplementedException(); } public void StopScripts() { - LazyInitialize(); throw new NotImplementedException(); } diff --git a/bin/Tools.dll b/bin/Tools.dll new file mode 100644 index 00000000..08dcf42f Binary files /dev/null and b/bin/Tools.dll differ