From 1dc429b5549b792ab95258f61b96c83fc93fbb17 Mon Sep 17 00:00:00 2001 From: s434695 Date: Tue, 25 May 2021 20:59:48 +0200 Subject: [PATCH] logistic regression --- .../LogisticRegression-checkpoint.ipynb | 269 ++ Log_Reg.py | 95 + LogisticRegression.ipynb | 269 ++ dev-0/out.tsv | 2398 +++++++------- test-A/out.tsv | 2744 ----------------- 5 files changed, 1832 insertions(+), 3943 deletions(-) create mode 100644 .ipynb_checkpoints/LogisticRegression-checkpoint.ipynb create mode 100755 Log_Reg.py create mode 100644 LogisticRegression.ipynb diff --git a/.ipynb_checkpoints/LogisticRegression-checkpoint.ipynb b/.ipynb_checkpoints/LogisticRegression-checkpoint.ipynb new file mode 100644 index 0000000..73d931f --- /dev/null +++ b/.ipynb_checkpoints/LogisticRegression-checkpoint.ipynb @@ -0,0 +1,269 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import torch\n", + "from nltk.tokenize import word_tokenize\n", + "import gensim.downloader" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#wczytywanie danych\n", + "x_train = pd.read_table('train/in.tsv', sep='\\t', error_bad_lines=False, quoting=3, header=None, names=['content', 'id'], usecols=['content'])\n", + "y_train = pd.read_table('train/expected.tsv', sep='\\t', error_bad_lines=False, quoting=3, header=None, names=['label'])\n", + "x_dev = pd.read_table('dev-0/in.tsv', sep='\\t', error_bad_lines=False, header=None, quoting=3, names=['content', 'id'], usecols=['content'])\n", + "x_test = pd.read_table('test-A/in.tsv', sep='\\t', error_bad_lines=False, header=None, quoting=3, names=['content', 'id'], usecols=['content'])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "x_train = x_train.content.str.lower()\n", + "x_dev = x_dev.content.str.lower()\n", + "x_test = x_test.content.str.lower()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package punkt to /home/tomasz/nltk_data...\n", + "[nltk_data] Unzipping tokenizers/punkt.zip.\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import nltk\n", + "nltk.download('punkt')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "x_train = [word_tokenize(content) for content in x_train]\n", + "x_dev = [word_tokenize(content) for content in x_dev]\n", + "x_test = [word_tokenize(content) for content in x_test]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "word2vec = gensim.downloader.load(\"word2vec-google-news-300\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def document_vector(doc):\n", + " \"\"\"Create document vectors by averaging word vectors. Remove out-of-vocabulary words.\"\"\"\n", + " return np.mean([word2vec[w] for w in doc if w in word2vec] or [np.zeros(300)], axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "x_train = [document_vector(doc) for doc in x_train]\n", + "x_dev = [document_vector(doc) for doc in x_dev]\n", + "x_test = [document_vector(doc) for doc in x_test]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "class NeuralNetwork(torch.nn.Module): \n", + " def __init__(self, hidden_size):\n", + " super(NeuralNetwork, self).__init__()\n", + " self.l1 = torch.nn.Linear(300, hidden_size)\n", + " self.l2 = torch.nn.Linear(hidden_size, 1)\n", + "\n", + " def forward(self, x):\n", + " x = self.l1(x)\n", + " x = torch.relu(x)\n", + " x = self.l2(x)\n", + " x = torch.sigmoid(x)\n", + " return x" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "hidden_size = 600\n", + "epochs = 5\n", + "batch_size = 15\n", + "model = NeuralNetwork(hidden_size)\n", + "criterion = torch.nn.BCELoss()\n", + "optimizer = torch.optim.SGD(model.parameters(), lr=0.01)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/tomasz/.local/lib/python3.8/site-packages/torch/autograd/__init__.py:130: UserWarning: CUDA initialization: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:100.)\n", + " Variable._execution_engine.run_backward(\n" + ] + } + ], + "source": [ + "for epoch in range(epochs):\n", + " model.train()\n", + " for i in range(0, y_train.shape[0], batch_size):\n", + " X = x_train[i:i+batch_size]\n", + " X = torch.tensor(X)\n", + " y = y_train[i:i+batch_size]\n", + " y = torch.tensor(y.astype(np.float32).to_numpy()).reshape(-1, 1)\n", + " \n", + " outputs = model(X.float())\n", + " loss = criterion(outputs, y)\n", + " \n", + " optimizer.zero_grad()\n", + " loss.backward()\n", + " optimizer.step()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "y_dev = []\n", + "y_test = []" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "NeuralNetwork(\n", + " (l1): Linear(in_features=300, out_features=600, bias=True)\n", + " (l2): Linear(in_features=600, out_features=1, bias=True)\n", + ")" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.eval()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "with torch.no_grad():\n", + " for i in range(0, len(x_dev), batch_size):\n", + " X = x_dev[i:i+batch_size]\n", + " X = torch.tensor(X)\n", + " outputs = model(X.float()) \n", + " prediction = (outputs > 0.5)\n", + " y_dev += prediction.tolist()\n", + "\n", + " for i in range(0, len(x_test), batch_size):\n", + " X = x_test[i:i+batch_size]\n", + " X = torch.tensor(X)\n", + " outputs = model(X.float())\n", + " y = (outputs > 0.5)\n", + " y_test += prediction.tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "y_dev = np.asarray(y_dev, dtype=np.int32)\n", + "y_test = np.asarray(y_test, dtype=np.int32)\n", + "\n", + "y_dev = pd.DataFrame({'label':y_dev})\n", + "y_test = pd.DataFrame({'label':y_test})\n", + "\n", + "y_dev.to_csv(r'dev-0/out.tsv', sep='\\t', index=False, header=False)\n", + "y_test.to_csv(r'test-A/out.tsv', sep='\\t', index=False, header=False)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Log_Reg.py b/Log_Reg.py new file mode 100755 index 0000000..de159df --- /dev/null +++ b/Log_Reg.py @@ -0,0 +1,95 @@ +import pandas as pd +import numpy as np +import torch +from nltk.tokenize import word_tokenize +import gensim.downloader + + +x_train = pd.read_table('train/in.tsv', sep='\t', error_bad_lines=False, quoting=3, header=None, names=['content', 'id'], usecols=['content']) +y_train = pd.read_table('train/expected.tsv', sep='\t', error_bad_lines=False, quoting=3, header=None, names=['label']) +x_dev = pd.read_table('dev-0/in.tsv', sep='\t', error_bad_lines=False, header=None, quoting=3, names=['content', 'id'], usecols=['content']) +x_test = pd.read_table('test-A/in.tsv', sep='\t', error_bad_lines=False, header=None, quoting=3, names=['content', 'id'], usecols=['content']) + +x_train = x_train.content.str.lower() +x_dev = x_dev.content.str.lower() +x_test = x_test.content.str.lower() + +x_train = [word_tokenize(content) for content in x_train] +x_dev = [word_tokenize(content) for content in x_dev] +x_test = [word_tokenize(content) for content in x_test] + +word2vec = gensim.downloader.load("word2vec-google-news-300") + +def document_vector(doc): + """Create document vectors by averaging word vectors. Remove out-of-vocabulary words.""" + return np.mean([word2vec[w] for w in doc if w in word2vec] or [np.zeros(300)], axis=0) + +x_train = [document_vector(doc) for doc in x_train] +x_dev = [document_vector(doc) for doc in x_dev] +x_test = [document_vector(doc) for doc in x_test] + +class NeuralNetwork(torch.nn.Module): + def __init__(self, hidden_size): + super(NeuralNetwork, self).__init__() + self.l1 = torch.nn.Linear(300, hidden_size) + self.l2 = torch.nn.Linear(hidden_size, 1) + + def forward(self, x): + x = self.l1(x) + x = torch.relu(x) + x = self.l2(x) + x = torch.sigmoid(x) + return x + + +hidden_size = 600 +epochs = 5 +batch_size = 15 +model = NeuralNetwork(hidden_size) +criterion = torch.nn.BCELoss() +optimizer = torch.optim.SGD(model.parameters(), lr=0.01) + +for epoch in range(epochs): + model.train() + for i in range(0, y_train.shape[0], batch_size): + X = x_train[i:i+batch_size] + X = torch.tensor(X) + y = y_train[i:i+batch_size] + y = torch.tensor(y.astype(np.float32).to_numpy()).reshape(-1, 1) + + outputs = model(X.float()) + loss = criterion(outputs, y) + + optimizer.zero_grad() + loss.backward() + optimizer.step() + +y_dev = [] +y_test = [] + +model.eval() + +with torch.no_grad(): + for i in range(0, len(x_dev), batch_size): + X = x_dev[i:i+batch_size] + X = torch.tensor(X) + outputs = model(X.float()) + prediction = (outputs > 0.5) + y_dev.extend(prediction) + + for i in range(0, len(x_test), batch_size): + X = x_test[i:i+batch_size] + X = torch.tensor(X) + outputs = model(X.float()) + y = (outputs > 0.5) + y_test.extend(prediction) + + +y_dev = np.asarray(y_dev, dtype=np.int32) +y_test = np.asarray(y_test, dtype=np.int32) + +y_dev = pd.DataFrame({'label':y_dev}) +y_test = pd.DataFrame({'label':y_test}) + +y_dev.to_csv(r'dev-0/out.tsv', sep='\t', index=False, header=False) +y_test.to_csv(r'test-A/out.tsv', sep='\t', index=False, header=False) \ No newline at end of file diff --git a/LogisticRegression.ipynb b/LogisticRegression.ipynb new file mode 100644 index 0000000..9b48a62 --- /dev/null +++ b/LogisticRegression.ipynb @@ -0,0 +1,269 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import torch\n", + "from nltk.tokenize import word_tokenize\n", + "import gensim.downloader" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#wczytywanie danych\n", + "x_train = pd.read_table('train/in.tsv', sep='\\t', error_bad_lines=False, quoting=3, header=None, names=['content', 'id'], usecols=['content'])\n", + "y_train = pd.read_table('train/expected.tsv', sep='\\t', error_bad_lines=False, quoting=3, header=None, names=['label'])\n", + "x_dev = pd.read_table('dev-0/in.tsv', sep='\\t', error_bad_lines=False, header=None, quoting=3, names=['content', 'id'], usecols=['content'])\n", + "x_test = pd.read_table('test-A/in.tsv', sep='\\t', error_bad_lines=False, header=None, quoting=3, names=['content', 'id'], usecols=['content'])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "x_train = x_train.content.str.lower()\n", + "x_dev = x_dev.content.str.lower()\n", + "x_test = x_test.content.str.lower()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package punkt to /home/tomasz/nltk_data...\n", + "[nltk_data] Unzipping tokenizers/punkt.zip.\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import nltk\n", + "nltk.download('punkt')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "x_train = [word_tokenize(content) for content in x_train]\n", + "x_dev = [word_tokenize(content) for content in x_dev]\n", + "x_test = [word_tokenize(content) for content in x_test]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "word2vec = gensim.downloader.load(\"word2vec-google-news-300\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def document_vector(doc):\n", + " \"\"\"Create document vectors by averaging word vectors. Remove out-of-vocabulary words.\"\"\"\n", + " return np.mean([word2vec[w] for w in doc if w in word2vec] or [np.zeros(300)], axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "x_train = [document_vector(doc) for doc in x_train]\n", + "x_dev = [document_vector(doc) for doc in x_dev]\n", + "x_test = [document_vector(doc) for doc in x_test]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "class NeuralNetwork(torch.nn.Module): \n", + " def __init__(self, hidden_size):\n", + " super(NeuralNetwork, self).__init__()\n", + " self.l1 = torch.nn.Linear(300, hidden_size)\n", + " self.l2 = torch.nn.Linear(hidden_size, 1)\n", + "\n", + " def forward(self, x):\n", + " x = self.l1(x)\n", + " x = torch.relu(x)\n", + " x = self.l2(x)\n", + " x = torch.sigmoid(x)\n", + " return x" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "hidden_size = 600\n", + "epochs = 5\n", + "batch_size = 15\n", + "model = NeuralNetwork(hidden_size)\n", + "criterion = torch.nn.BCELoss()\n", + "optimizer = torch.optim.SGD(model.parameters(), lr=0.01)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/tomasz/.local/lib/python3.8/site-packages/torch/autograd/__init__.py:130: UserWarning: CUDA initialization: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:100.)\n", + " Variable._execution_engine.run_backward(\n" + ] + } + ], + "source": [ + "for epoch in range(epochs):\n", + " model.train()\n", + " for i in range(0, y_train.shape[0], batch_size):\n", + " X = x_train[i:i+batch_size]\n", + " X = torch.tensor(X)\n", + " y = y_train[i:i+batch_size]\n", + " y = torch.tensor(y.astype(np.float32).to_numpy()).reshape(-1, 1)\n", + " \n", + " outputs = model(X.float())\n", + " loss = criterion(outputs, y)\n", + " \n", + " optimizer.zero_grad()\n", + " loss.backward()\n", + " optimizer.step()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "y_dev = []\n", + "y_test = []" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "NeuralNetwork(\n", + " (l1): Linear(in_features=300, out_features=600, bias=True)\n", + " (l2): Linear(in_features=600, out_features=1, bias=True)\n", + ")" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.eval()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "with torch.no_grad():\n", + " for i in range(0, len(x_dev), batch_size):\n", + " X = x_dev[i:i+batch_size]\n", + " X = torch.tensor(X)\n", + " outputs = model(X.float()) \n", + " prediction = (outputs > 0.5)\n", + " y_dev.extend(prediction)\n", + "\n", + " for i in range(0, len(x_test), batch_size):\n", + " X = x_test[i:i+batch_size]\n", + " X = torch.tensor(X)\n", + " outputs = model(X.float())\n", + " y = (outputs > 0.5)\n", + " y_test.extend(prediction)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "y_dev = np.asarray(y_dev, dtype=np.int32)\n", + "y_test = np.asarray(y_test, dtype=np.int32)\n", + "\n", + "y_dev = pd.DataFrame({'label':y_dev})\n", + "y_test = pd.DataFrame({'label':y_test})\n", + "\n", + "y_dev.to_csv(r'dev-0/out.tsv', sep='\\t', index=False, header=False)\n", + "y_test.to_csv(r'test-A/out.tsv', sep='\\t', index=False, header=False)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/dev-0/out.tsv b/dev-0/out.tsv index ab0aac1..c10f7c8 100644 --- a/dev-0/out.tsv +++ b/dev-0/out.tsv @@ -1,37 +1,30 @@ 0 +1 +1 0 0 0 0 +1 0 +1 0 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 0 0 0 0 0 1 -0 1 0 0 -0 -0 +1 1 0 -0 +1 0 0 0 @@ -43,21 +36,23 @@ 0 0 0 -0 1 0 0 0 0 -0 +1 0 0 1 0 0 0 +1 0 +1 0 +1 0 0 0 @@ -67,18 +62,16 @@ 0 0 1 -1 -0 -0 0 1 0 +1 +1 0 0 0 0 -0 -0 +1 0 0 0 @@ -90,9 +83,11 @@ 1 0 0 +1 0 +1 0 -0 +1 0 0 0 @@ -101,13 +96,16 @@ 0 1 0 +1 0 0 0 +1 0 0 0 0 +1 0 0 0 @@ -115,6 +113,8 @@ 0 1 0 +1 +1 0 0 0 @@ -131,21 +131,28 @@ 0 1 0 -0 +1 0 1 0 0 +1 0 0 0 +1 +1 +1 0 +1 +1 0 1 0 0 0 0 +1 0 1 0 @@ -155,6 +162,9 @@ 1 0 1 +1 +0 +1 0 0 0 @@ -163,11 +173,14 @@ 0 0 0 +1 +1 0 0 0 0 0 +1 0 1 0 @@ -179,24 +192,28 @@ 0 0 0 +1 0 0 0 1 +1 +1 0 0 0 0 +1 0 0 +1 0 0 0 0 0 0 -0 -0 +1 0 1 0 @@ -204,31 +221,42 @@ 0 0 0 +1 0 0 0 +1 0 +1 0 0 +1 +1 0 +1 0 0 1 0 0 0 +1 +1 +0 +1 0 0 0 0 1 -0 +1 0 0 1 0 0 0 +1 0 0 0 @@ -236,10 +264,7 @@ 0 0 0 -1 -0 0 -1 0 0 0 @@ -257,9 +282,10 @@ 0 0 0 +1 +0 0 0 -1 0 0 0 @@ -267,52 +293,75 @@ 0 0 0 +1 0 1 +1 +1 +1 +1 +1 +1 +0 0 0 0 0 +1 0 0 0 0 0 +1 0 0 0 0 0 +1 0 0 +1 0 0 0 0 +1 0 0 +1 0 +1 0 0 +1 0 0 0 +1 0 0 +1 0 0 0 0 0 +1 0 0 +1 0 1 +1 0 +1 0 0 0 0 +1 0 0 0 @@ -322,8 +371,13 @@ 0 0 0 +1 +1 0 +1 0 +1 +1 0 0 0 @@ -335,6 +389,7 @@ 1 0 0 +1 0 0 0 @@ -352,21 +407,29 @@ 0 0 0 +1 0 0 0 +1 +1 +1 0 +1 +1 0 0 +1 0 0 +1 0 0 0 0 0 -0 -0 +1 +1 0 0 0 @@ -386,18 +449,26 @@ 0 1 0 +0 +0 1 0 0 0 0 0 +1 0 0 +1 0 0 0 +1 0 +1 +1 +1 0 0 0 @@ -407,16 +478,16 @@ 0 0 0 +1 0 +1 0 0 0 0 0 -1 0 0 -1 0 0 0 @@ -425,7 +496,9 @@ 0 0 0 +1 0 +1 0 0 0 @@ -435,20 +508,24 @@ 0 0 0 +1 0 0 0 0 +1 0 +1 0 0 +1 +1 0 0 0 0 0 1 -1 0 0 1 @@ -457,31 +534,41 @@ 0 0 0 +1 +1 0 +1 0 +1 0 0 0 0 +1 0 0 0 1 1 -1 0 0 0 0 0 +1 +1 +0 0 0 +1 +1 0 0 1 0 0 0 +1 0 0 0 @@ -495,26 +582,34 @@ 0 0 0 +1 0 +1 0 0 0 +1 0 0 0 0 0 +1 0 +1 0 0 0 0 0 +1 0 0 0 0 0 +1 +1 0 0 0 @@ -525,7 +620,6 @@ 0 0 0 -1 0 0 1 @@ -535,40 +629,47 @@ 0 0 0 -1 0 +1 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0 -0 1 0 +1 0 0 -1 0 0 0 1 0 +1 +1 0 0 +1 +1 +1 0 +1 +1 0 0 +1 0 +1 0 +1 0 0 0 @@ -581,27 +682,39 @@ 0 0 0 +1 0 0 +1 0 0 0 0 +1 +1 0 0 0 0 +1 0 +1 0 0 0 0 +1 0 +1 0 0 +1 +1 0 +1 0 0 +1 0 0 0 @@ -611,6 +724,7 @@ 0 0 0 +1 0 0 0 @@ -620,48 +734,64 @@ 0 0 0 -0 +1 1 0 0 0 +1 0 +1 0 +1 0 0 0 1 0 0 +1 0 0 +1 0 +1 0 0 0 0 +1 +1 +1 +1 0 0 +1 0 0 +1 0 0 +1 0 1 0 0 +1 +0 +1 0 1 +1 0 +1 0 0 0 1 -0 1 1 0 -1 0 0 0 @@ -673,10 +803,16 @@ 0 0 0 +1 +1 0 0 +1 +1 0 0 +1 +1 0 0 0 @@ -685,50 +821,68 @@ 0 0 0 -1 0 0 0 0 0 0 +1 0 0 0 +1 0 1 +1 +0 +0 0 +1 +1 0 1 0 +1 0 0 0 0 0 +1 0 0 0 1 0 +1 0 0 0 0 0 +1 0 0 0 0 0 +1 +1 +1 +1 0 0 +1 0 +1 0 0 +1 0 0 0 +1 0 0 0 @@ -736,927 +890,66 @@ 0 0 0 +1 0 0 +1 0 -0 +1 +1 0 0 0 1 0 0 +1 0 +1 0 0 1 1 0 0 +1 0 +1 0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -1 -0 -1 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 0 1 0 0 0 0 -0 -1 -0 1 0 0 0 -1 -0 -0 0 0 1 0 0 0 +1 0 0 0 0 0 0 +1 0 0 0 0 +1 0 0 0 -0 -0 -0 +1 0 0 0 @@ -1665,13 +958,15 @@ 0 0 0 +1 0 0 1 -1 0 0 +1 0 +1 0 0 0 @@ -1679,25 +974,26 @@ 0 0 0 +1 0 0 0 0 +1 0 +1 0 +1 0 0 0 -1 0 -1 0 0 0 0 0 0 -1 0 0 1 @@ -1710,7 +1006,7 @@ 0 0 0 -0 +1 0 0 1 @@ -1718,48 +1014,49 @@ 0 0 0 +1 +1 0 0 +1 +1 +1 0 0 0 0 +1 0 0 0 0 +1 0 0 +1 0 0 0 0 +1 0 0 0 +1 +1 0 0 0 +1 0 +1 0 0 0 0 -0 -1 -1 -1 -1 -1 -1 -1 -1 1 0 1 -1 -1 -1 0 1 0 @@ -1769,38 +1066,33 @@ 0 0 0 -0 -0 -0 1 0 0 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +1 0 0 0 0 1 0 +1 0 +1 0 0 +1 0 +1 0 0 0 0 +1 0 +1 0 0 0 @@ -1812,7 +1104,9 @@ 0 0 0 +1 0 +1 0 0 0 @@ -1820,29 +1114,120 @@ 0 0 0 +1 0 0 0 0 0 +1 +1 0 0 0 +1 +1 0 +1 0 +1 0 +1 +1 0 0 0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 +1 0 0 +1 +1 0 0 0 0 0 +1 0 0 0 @@ -1850,39 +1235,53 @@ 0 0 0 +1 0 0 0 0 +1 +1 0 0 0 1 0 0 -0 1 0 0 0 +1 +1 0 0 +1 +1 0 +1 0 0 0 +1 0 +1 0 +1 +1 0 0 0 0 +1 0 0 0 0 +1 0 0 +1 0 0 0 @@ -1893,19 +1292,16 @@ 0 0 0 -0 -0 -0 1 -0 -0 +1 +1 0 0 0 1 0 0 -0 +1 0 0 0 @@ -1922,6 +1318,9 @@ 0 0 0 +1 +1 +1 0 0 0 @@ -1932,11 +1331,8 @@ 0 0 0 -0 -0 -0 -0 -0 +1 +1 0 0 0 @@ -1959,70 +1355,63 @@ 0 0 0 -0 -0 -0 -0 -0 -0 1 1 0 0 0 -0 -0 -0 -0 -0 -0 +1 1 0 0 0 0 0 +1 0 0 -0 -1 1 1 1 0 0 -1 0 0 -1 -1 0 0 0 0 0 +1 0 +1 0 0 +1 0 0 0 0 0 0 +1 0 0 0 +1 0 1 0 0 0 1 +0 1 0 0 +1 0 +1 0 0 0 @@ -2032,23 +1421,27 @@ 0 0 0 -0 -0 -0 1 1 0 +1 0 -0 +1 +1 0 1 1 0 0 0 +1 0 0 0 +1 +1 +1 +1 0 0 0 @@ -2056,6 +1449,14 @@ 0 0 0 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 @@ -2070,12 +1471,13 @@ 0 1 0 +1 +1 0 0 0 0 1 -1 0 0 0 @@ -2083,44 +1485,63 @@ 0 0 0 +1 0 0 0 0 -1 0 0 0 +1 0 +1 0 +1 +1 0 +1 0 0 0 0 +1 0 0 0 0 +1 0 +1 0 0 0 0 +1 +1 0 0 0 +1 0 +1 0 0 +1 0 1 1 +1 0 +1 +1 0 +1 0 0 0 +1 +1 0 0 0 @@ -2129,36 +1550,48 @@ 0 0 0 +1 0 0 0 0 0 0 +1 0 0 0 +1 0 0 +1 0 +1 +1 +1 0 0 +1 0 -0 -0 +1 0 1 +1 0 1 0 +1 0 0 0 +1 0 0 +1 0 0 1 +1 0 0 0 @@ -2175,19 +1608,17 @@ 0 1 1 -1 0 0 0 0 0 0 -1 -0 0 0 0 0 +1 0 0 0 @@ -2197,47 +1628,53 @@ 0 1 0 -0 -0 1 0 0 0 +1 0 0 0 0 +1 0 0 0 0 0 0 -1 -1 -0 0 0 0 0 0 +1 +1 +1 +1 0 0 +1 +1 +1 0 0 1 0 -0 +1 0 0 1 0 +1 +1 0 0 0 +1 0 0 -1 0 1 0 @@ -2251,13 +1688,16 @@ 0 0 0 +1 0 -0 +1 0 0 1 +1 0 0 +1 0 1 1 @@ -2265,16 +1705,16 @@ 0 0 0 -1 -0 0 0 0 0 +1 0 0 0 1 +1 0 0 0 @@ -2282,9 +1722,11 @@ 0 0 0 -1 0 1 +1 +1 +0 0 0 0 @@ -2300,23 +1742,45 @@ 0 0 0 +1 0 0 0 1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 0 0 0 +1 +0 0 +1 0 +1 0 0 0 0 +1 +1 0 0 +1 +1 0 0 +1 +1 0 0 0 @@ -2338,7 +1802,6 @@ 0 0 0 -1 0 0 1 @@ -2350,6 +1813,7 @@ 0 0 0 +1 0 0 0 @@ -2364,7 +1828,7 @@ 0 1 0 -0 +1 0 0 0 @@ -2374,14 +1838,18 @@ 0 0 0 +1 0 +1 0 0 +1 +1 0 0 -1 0 0 +1 0 0 0 @@ -2392,17 +1860,23 @@ 1 0 0 -1 +0 1 0 +1 0 0 0 0 0 0 +1 +1 +1 +1 0 0 +1 0 0 0 @@ -2415,17 +1889,23 @@ 0 0 0 +1 0 +1 0 0 0 -0 +1 +1 0 0 0 1 0 +1 +1 0 +1 0 0 0 @@ -2436,7 +1916,7 @@ 0 0 0 -0 +1 0 0 0 @@ -2449,7 +1929,7 @@ 0 1 0 -1 +0 0 0 1 @@ -2462,16 +1942,16 @@ 0 0 0 -1 0 0 +1 0 0 -1 0 0 0 0 +1 0 0 0 @@ -2485,20 +1965,33 @@ 0 0 0 +1 +1 +1 0 0 1 +1 +1 0 0 +1 0 0 0 0 0 0 +1 +1 0 +1 +1 +1 +1 0 1 +1 0 0 0 @@ -2506,14 +1999,16 @@ 1 0 0 +1 +0 0 0 0 0 -1 0 1 0 +1 0 0 0 @@ -2522,10 +2017,14 @@ 1 0 0 +1 +1 +1 0 0 0 0 +1 0 0 0 @@ -2536,6 +2035,9 @@ 0 0 0 +1 +1 +0 0 0 0 @@ -2552,7 +2054,6 @@ 0 0 0 -1 0 0 0 @@ -2562,10 +2063,19 @@ 0 0 0 +0 +0 +0 +0 +0 +1 +0 1 0 0 1 +1 +1 0 0 1 @@ -2574,6 +2084,7 @@ 0 0 0 +1 0 0 1 @@ -2582,26 +2093,30 @@ 0 0 0 +1 +1 +0 +1 0 +1 0 0 0 0 0 +1 0 0 0 0 0 0 -1 0 0 0 0 1 0 -0 1 0 0 @@ -2614,6 +2129,9 @@ 0 0 0 +1 +0 +0 0 0 0 @@ -2623,27 +2141,39 @@ 1 1 0 +0 1 0 0 0 0 +1 +0 +1 0 1 0 0 +1 0 +1 0 +1 0 1 0 0 0 +1 0 0 +1 0 0 +1 +1 0 +1 0 0 0 @@ -2652,9 +2182,7 @@ 0 1 0 -1 0 -1 0 0 0 @@ -2671,34 +2199,51 @@ 0 0 0 -0 1 +1 +1 +0 0 0 0 0 0 0 +1 +1 0 +1 +1 +1 0 +1 +1 +1 0 0 +1 0 0 0 0 1 +1 0 0 +1 0 0 0 0 -1 0 +1 +1 0 +1 0 +1 0 +1 0 0 0 @@ -2715,7 +2260,7 @@ 0 0 0 -0 +1 0 0 0 @@ -2724,9 +2269,12 @@ 0 0 0 +1 0 +1 0 0 +1 0 0 0 @@ -2734,15 +2282,19 @@ 0 0 0 +1 0 +1 0 0 0 0 0 0 +1 0 0 +1 0 0 0 @@ -2750,8 +2302,8 @@ 0 0 0 -0 -0 +1 +1 0 1 0 @@ -2767,22 +2319,26 @@ 0 1 0 -1 0 0 0 0 +1 0 0 +1 0 +1 0 0 +1 0 0 0 0 0 0 +1 0 0 1 @@ -2790,18 +2346,25 @@ 0 0 0 +1 0 +1 0 0 0 -0 +1 0 1 +1 +1 +1 0 0 0 0 1 +1 +1 0 0 0 @@ -2813,70 +2376,85 @@ 0 0 0 +1 0 0 +1 0 0 0 +1 0 0 0 0 -0 +1 +1 0 0 1 1 -0 1 0 0 0 +1 0 0 0 -1 0 0 0 0 0 0 +1 0 +1 0 0 +1 0 0 0 +1 0 0 0 0 0 +1 0 +1 0 0 0 +1 0 0 0 0 +1 0 0 0 0 0 0 +1 +1 +1 0 0 0 +1 0 +1 0 0 1 0 0 -1 0 0 0 @@ -2884,17 +2462,24 @@ 0 0 0 +1 +0 0 0 0 +1 0 0 0 +1 0 0 0 +1 0 0 +1 +1 0 0 0 @@ -2904,47 +2489,63 @@ 0 1 0 -0 +1 +1 0 0 0 1 -0 -0 1 0 0 +1 0 0 +1 0 +1 0 0 0 +1 +1 +1 0 0 1 +1 0 0 1 0 0 +1 0 0 0 +1 0 0 +1 +1 0 +1 0 +1 0 0 0 0 0 +1 +1 +1 0 0 0 0 1 +1 0 0 0 @@ -2952,6 +2553,7 @@ 0 0 0 +1 0 0 0 @@ -2960,19 +2562,23 @@ 0 0 0 +1 0 0 0 +1 0 0 0 0 0 +1 0 0 0 0 1 +1 0 0 0 @@ -2981,13 +2587,19 @@ 1 0 0 +1 +1 0 0 0 0 0 +1 +1 +1 0 0 +1 0 0 1 @@ -2995,8 +2607,6 @@ 0 0 0 -1 -0 0 0 0 @@ -3010,36 +2620,42 @@ 0 1 0 -0 1 -0 1 0 -0 +1 0 1 0 0 0 1 +1 0 0 0 1 +1 0 0 0 0 +1 +1 0 +1 0 0 0 -1 0 +1 0 1 0 +1 +1 0 +1 0 0 0 @@ -3048,35 +2664,41 @@ 0 0 1 -0 -0 1 0 0 +1 0 0 1 0 +1 0 0 0 +1 0 0 0 0 +1 0 -0 +1 0 0 0 0 1 +1 +1 0 0 0 1 0 0 +1 +1 0 0 0 @@ -3088,30 +2710,35 @@ 0 0 0 +1 0 0 0 0 +1 0 0 0 0 +1 0 0 0 0 0 0 -0 -0 +1 +1 +1 0 0 1 -1 0 0 +1 0 0 +1 0 0 0 @@ -3120,22 +2747,28 @@ 0 0 0 +1 0 0 0 0 0 +1 0 0 0 0 1 +0 1 0 0 0 0 0 +1 +1 +0 0 0 0 @@ -3148,13 +2781,15 @@ 0 0 1 -1 0 +1 0 0 0 0 0 +1 +1 0 1 0 @@ -3166,11 +2801,10 @@ 0 0 0 -0 -0 1 0 0 +0 1 0 0 @@ -3178,9 +2812,7 @@ 0 0 0 -1 0 -1 0 0 1 @@ -3194,17 +2826,22 @@ 0 0 1 +1 0 +1 0 0 0 0 0 0 +1 0 0 0 0 +1 +1 0 0 0 @@ -3212,21 +2849,31 @@ 0 0 0 +1 +1 0 0 1 0 0 +1 0 +1 0 0 0 +1 +1 0 +1 0 0 0 0 0 +1 +1 +1 0 0 1 @@ -3249,13 +2896,13 @@ 0 0 0 +1 0 0 0 1 0 -0 -0 +1 0 0 0 @@ -3264,22 +2911,28 @@ 1 0 0 +1 0 0 0 0 0 0 +1 0 0 0 +1 +1 0 +1 0 +1 0 0 0 0 -0 +1 0 0 1 @@ -3289,9 +2942,10 @@ 0 0 0 -1 0 0 +1 +1 0 0 0 @@ -3299,11 +2953,11 @@ 0 0 0 -1 0 0 0 0 +1 0 0 0 @@ -3314,7 +2968,7 @@ 0 0 1 -0 +1 0 0 0 @@ -3322,7 +2976,7 @@ 0 0 0 -1 +0 0 1 0 @@ -3341,8 +2995,10 @@ 0 0 0 +1 0 -0 +1 +1 0 0 0 @@ -3353,13 +3009,15 @@ 0 0 1 -0 1 0 +1 0 +1 0 0 0 +1 0 0 0 @@ -3367,18 +3025,19 @@ 0 0 0 +1 0 0 -0 -0 -0 -0 +1 +1 0 0 1 0 1 +1 0 +1 0 0 0 @@ -3387,14 +3046,21 @@ 0 0 0 +1 +1 0 0 +1 0 +1 0 0 +1 +1 0 0 0 +1 0 0 0 @@ -3403,12 +3069,12 @@ 1 0 0 -1 -0 0 +1 0 0 0 +1 0 0 0 @@ -3417,7 +3083,7 @@ 0 0 0 -0 +1 0 0 0 @@ -3428,25 +3094,30 @@ 0 0 0 -1 0 0 0 0 -1 0 +1 0 0 +1 +1 +1 0 +1 +1 +1 0 0 -1 0 0 0 0 0 0 +1 0 0 0 @@ -3460,7 +3131,6 @@ 0 1 1 -1 0 0 0 @@ -3468,21 +3138,17 @@ 0 1 0 -1 -0 0 0 0 0 1 0 -0 1 0 0 -0 -0 -0 +1 +1 0 0 0 @@ -3492,10 +3158,10 @@ 0 1 0 -1 0 0 0 +1 0 0 0 @@ -3508,24 +3174,32 @@ 0 0 0 -1 0 0 0 0 +1 0 +1 +1 0 1 0 +1 0 0 +1 0 0 +1 +1 +1 0 0 0 0 0 +1 0 0 0 @@ -3540,6 +3214,7 @@ 0 1 0 +1 0 0 0 @@ -3552,17 +3227,17 @@ 0 0 1 -0 -0 -0 -0 1 0 +1 0 0 0 0 +1 +1 0 +1 0 0 0 @@ -3570,12 +3245,11 @@ 0 0 0 +1 0 0 0 -0 -0 -0 +1 0 0 1 @@ -3585,20 +3259,19 @@ 0 0 0 -1 -0 0 +1 +1 0 0 0 0 1 -1 -0 0 0 0 0 +1 0 0 0 @@ -3609,27 +3282,39 @@ 0 0 0 +1 +1 0 0 0 0 0 +1 0 +1 0 +1 0 +1 0 +1 0 +1 +1 0 0 +1 0 0 0 0 +1 0 0 0 0 -0 +1 +1 0 0 0 @@ -3638,6 +3323,7 @@ 0 0 0 +0 1 0 0 @@ -3645,7 +3331,6 @@ 0 0 0 -1 0 0 0 @@ -3657,7 +3342,6 @@ 0 0 0 -1 0 0 0 @@ -3665,13 +3349,14 @@ 0 0 0 -1 0 0 0 +1 0 0 0 +1 0 0 0 @@ -3681,24 +3366,32 @@ 0 0 0 +1 0 0 1 0 0 +1 0 0 +1 0 +1 0 0 0 1 +1 +1 0 0 +1 0 0 0 0 +1 0 0 0 @@ -3710,6 +3403,7 @@ 0 0 0 +1 0 0 0 @@ -3718,6 +3412,7 @@ 1 0 0 +1 0 0 0 @@ -3725,13 +3420,15 @@ 0 0 0 -1 0 0 0 0 +1 +0 0 0 +1 0 0 0 @@ -3744,11 +3441,14 @@ 0 0 1 +1 0 0 0 -0 1 +1 +1 +0 0 0 0 @@ -3757,15 +3457,24 @@ 0 0 0 +1 +1 +1 +1 +0 +0 0 0 0 0 0 +1 0 0 0 0 +1 +1 0 0 1 @@ -3780,50 +3489,67 @@ 0 0 0 -1 -0 0 +1 0 +1 0 1 0 0 0 +1 0 +1 0 +1 0 1 +1 +1 +1 +1 0 0 0 0 0 -1 0 +1 0 0 0 +1 0 +1 0 0 0 0 0 +1 0 0 0 0 +1 +1 0 0 0 +1 +1 0 0 0 0 0 +1 0 0 0 +1 +1 0 1 0 @@ -3831,7 +3557,6 @@ 0 0 1 -1 0 0 0 @@ -3839,38 +3564,52 @@ 0 0 0 +1 0 0 +1 +1 0 0 +1 0 0 +1 0 0 0 +1 0 0 0 0 +1 0 +1 0 0 0 0 0 +1 0 +1 0 0 0 0 0 0 +1 0 0 0 0 +1 0 +1 0 +1 0 0 0 @@ -3888,10 +3627,10 @@ 0 0 0 +1 0 0 0 -1 0 0 1 @@ -3902,16 +3641,24 @@ 0 0 0 +1 +0 +1 +1 +1 +1 0 0 0 0 0 0 -1 0 0 +1 0 +1 +1 0 0 0 @@ -3919,27 +3666,35 @@ 1 0 0 -1 0 0 0 +1 0 0 1 0 +1 0 0 0 +1 0 +1 0 0 1 0 +1 0 0 0 0 0 +1 +1 +1 +1 0 0 1 @@ -3947,25 +3702,35 @@ 0 0 0 +0 1 1 0 +1 0 0 +1 +1 0 0 0 0 +1 0 0 +1 0 0 +1 0 0 +1 +1 0 0 0 0 +1 0 0 0 @@ -3974,72 +3739,99 @@ 0 1 0 -1 -0 -0 0 +1 0 0 +1 +1 0 0 +1 +1 +1 0 0 0 0 0 0 +1 0 +1 0 +1 +1 0 0 -1 0 0 0 0 +1 +1 0 0 0 0 +1 0 +1 0 +1 +1 +1 0 1 0 0 +1 +1 0 1 +1 0 0 +1 0 0 0 0 0 +1 +1 +1 +1 0 0 0 0 0 0 +1 0 0 1 1 0 +1 0 0 1 +1 0 0 0 0 0 +1 +1 0 -0 +1 0 0 1 +1 0 0 0 @@ -4050,20 +3842,19 @@ 0 0 0 -0 +1 0 0 0 1 0 -0 -1 1 0 0 0 0 0 +0 1 0 0 @@ -4088,67 +3879,89 @@ 1 0 0 -1 0 -1 0 0 1 0 0 0 +1 0 0 0 0 +1 0 0 +1 +1 +1 0 0 0 0 1 0 +1 0 0 0 0 +1 0 0 0 0 0 0 +1 +1 0 0 +1 0 0 0 0 0 +1 0 0 0 +1 0 1 0 +1 0 +1 +1 0 0 0 +1 0 +1 0 +1 0 0 +1 +1 0 +1 0 0 0 0 0 0 +1 0 +1 0 +1 0 0 1 @@ -4156,10 +3969,12 @@ 0 0 0 +1 0 0 +1 0 -0 +1 0 0 0 @@ -4170,14 +3985,17 @@ 0 0 0 +1 +0 0 +1 0 0 0 -1 -1 0 1 +0 +0 1 0 0 @@ -4186,16 +4004,18 @@ 0 0 0 +1 +0 0 0 1 +1 0 0 0 0 1 0 -1 0 0 0 @@ -4204,18 +4024,22 @@ 0 1 0 +1 +1 0 0 0 1 0 -1 0 0 0 +1 +0 0 0 0 +1 0 0 0 @@ -4233,8 +4057,11 @@ 0 0 0 +1 +1 0 1 +1 0 0 0 @@ -4242,43 +4069,52 @@ 0 1 0 +1 0 0 +1 0 0 0 +1 0 0 0 0 0 +1 0 0 0 0 +1 +1 0 +1 0 0 1 0 0 0 +1 0 0 0 0 -1 -1 -0 0 0 0 0 -1 0 0 0 +1 +1 +1 0 +1 +1 0 0 0 @@ -4294,25 +4130,33 @@ 0 0 0 +1 +1 0 0 0 0 +0 +1 +1 1 0 0 0 0 1 +1 0 0 0 0 0 +1 0 +1 0 0 -0 +1 0 0 0 @@ -4324,10 +4168,6 @@ 1 1 0 -0 -0 -0 -0 1 0 0 @@ -4336,59 +4176,78 @@ 0 0 1 -0 +1 +1 1 1 0 0 0 0 -1 0 0 1 +0 +1 1 0 0 0 +1 0 +1 0 0 0 +1 0 +1 +1 0 +1 0 +1 +1 0 +1 +1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 +1 +1 0 +1 0 0 0 0 0 0 +1 +1 +1 0 0 0 0 0 +1 +1 0 0 0 0 0 +1 0 0 0 @@ -4400,12 +4259,16 @@ 0 0 0 +1 0 +1 0 0 0 0 0 +1 +1 0 0 0 @@ -4414,80 +4277,105 @@ 1 0 0 -1 -0 -0 0 +1 0 0 +1 0 0 0 0 0 +1 0 1 +1 +1 0 0 +1 +1 0 0 1 0 +1 +1 0 +1 +1 0 0 0 -1 0 0 0 0 0 0 +1 0 0 +1 0 0 0 +1 +1 0 0 0 0 0 +1 0 +1 0 0 0 0 +1 0 +1 +1 0 +1 0 0 +1 0 1 +1 +1 +0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 +1 +1 +1 0 0 0 0 +1 0 1 1 0 0 +1 +0 0 0 0 @@ -4495,16 +4383,21 @@ 0 0 0 +1 0 0 0 0 +1 0 0 0 0 0 +1 0 +1 +1 0 0 1 @@ -4514,40 +4407,52 @@ 0 0 0 +1 0 0 0 1 1 0 +1 0 0 0 0 -1 -0 0 0 0 -1 0 0 0 0 +1 0 0 0 0 +1 0 0 0 0 0 +1 0 1 +1 +1 0 0 +1 +1 +1 +1 +1 +1 +1 0 +1 0 0 0 @@ -4555,20 +4460,22 @@ 0 0 0 +1 0 0 0 +1 0 0 0 0 0 0 -0 +1 +1 0 0 1 -1 0 0 0 @@ -4577,16 +4484,16 @@ 0 1 0 +1 +1 0 0 0 0 0 0 -1 0 0 -1 0 0 0 @@ -4597,23 +4504,35 @@ 0 0 0 +1 0 0 +1 0 +1 0 +1 0 0 0 1 1 +1 +1 0 0 1 0 0 0 +1 +1 +0 0 +1 0 +1 +1 0 0 0 @@ -4622,29 +4541,37 @@ 0 0 1 +1 0 0 +1 0 0 0 0 +1 0 +1 +1 +1 0 0 1 0 +1 0 0 0 0 0 +1 0 0 0 1 0 0 -0 +1 1 0 0 @@ -4652,15 +4579,18 @@ 0 1 0 -0 -0 +1 0 1 0 +1 0 0 +1 +1 0 0 +1 0 0 0 @@ -4673,19 +4603,19 @@ 0 0 0 -0 -0 1 -0 +1 1 0 0 +1 0 0 0 0 0 0 +1 0 0 0 @@ -4695,32 +4625,37 @@ 0 0 0 -0 +1 0 0 0 0 0 1 -0 1 0 0 0 0 -0 -0 -0 1 0 0 +1 +1 +1 0 +1 +1 +1 0 0 0 +1 0 0 0 +1 +1 0 0 0 @@ -4728,19 +4663,23 @@ 0 0 0 +1 +1 0 0 0 0 +1 0 0 0 0 0 -0 +1 0 1 0 +1 0 0 0 @@ -4752,17 +4691,19 @@ 1 0 0 -0 1 0 0 0 +1 0 0 0 0 0 +1 0 +1 0 0 0 @@ -4770,14 +4711,13 @@ 0 0 0 +1 0 -0 -0 -0 +1 0 0 1 -0 +1 0 0 0 @@ -4798,6 +4738,8 @@ 0 1 0 +1 +1 0 0 0 @@ -4807,6 +4749,7 @@ 0 0 0 +1 0 0 0 @@ -4814,12 +4757,13 @@ 0 0 0 +1 0 0 +1 0 0 -0 -0 +1 0 0 0 @@ -4828,17 +4772,16 @@ 1 0 0 +1 +1 0 0 -0 +1 0 0 0 0 1 -0 -0 -0 1 0 0 @@ -4847,14 +4790,20 @@ 0 0 0 -0 1 0 0 +1 +1 0 +1 +1 0 1 +1 +1 0 +1 0 0 0 @@ -4864,6 +4813,8 @@ 1 0 0 +1 +0 0 0 0 @@ -4874,15 +4825,21 @@ 0 0 0 +1 0 0 0 0 0 +1 +1 +1 0 +1 0 0 0 +1 0 0 0 @@ -4891,22 +4848,37 @@ 0 0 0 +1 +0 +0 0 +1 +1 +1 +1 0 0 +1 +1 0 +1 0 0 +1 0 0 0 +1 +1 0 0 0 0 0 +1 0 0 +1 0 0 0 @@ -4915,9 +4887,7 @@ 0 0 1 -0 1 -0 1 0 0 @@ -4926,9 +4896,9 @@ 0 0 0 +1 0 -0 -0 +1 0 0 0 @@ -4937,30 +4907,37 @@ 1 0 0 +0 1 0 0 0 0 1 +1 0 -0 +1 1 0 0 0 0 -1 0 0 0 1 +0 +0 +0 +0 1 0 0 0 +1 0 0 +1 0 0 0 @@ -4971,13 +4948,18 @@ 1 0 0 +1 0 +1 0 0 0 +1 +1 0 0 0 +1 0 0 0 @@ -4986,50 +4968,61 @@ 1 0 0 +1 +1 0 0 -1 0 0 0 1 -0 1 0 +1 0 0 +1 0 +1 0 0 0 0 +1 0 0 0 1 0 +1 0 0 0 0 +1 0 0 0 0 0 0 -0 -0 +1 0 0 1 0 +1 0 +1 0 0 0 0 0 +1 +1 +1 +1 0 0 0 @@ -5047,18 +5040,26 @@ 0 0 0 +1 +1 0 +1 0 0 +1 0 0 0 0 0 +1 +1 +1 +1 0 0 0 -0 +1 0 0 0 @@ -5072,14 +5073,15 @@ 0 0 1 -0 -0 -0 1 0 1 +1 +1 +1 0 0 +1 0 0 0 @@ -5091,9 +5093,7 @@ 0 0 0 -0 -0 -0 +1 0 1 1 @@ -5117,12 +5117,9 @@ 0 1 0 +1 0 -0 -0 -0 -0 -0 +1 0 0 1 @@ -5130,6 +5127,7 @@ 0 0 0 +1 0 0 0 @@ -5138,14 +5136,16 @@ 0 0 0 -0 +1 0 0 1 0 1 +0 1 0 +1 0 0 0 @@ -5171,14 +5171,14 @@ 0 0 0 +1 0 0 0 0 0 0 -0 -0 +1 0 0 0 @@ -5194,14 +5194,16 @@ 0 0 1 -0 +1 1 0 0 0 +1 0 0 0 +1 0 0 0 @@ -5211,6 +5213,7 @@ 0 0 0 +1 0 0 0 @@ -5220,10 +5223,7 @@ 0 0 0 -0 -0 -0 -0 +1 0 0 0 @@ -5233,10 +5233,10 @@ 0 0 1 -0 -0 1 +0 1 +0 1 1 0 @@ -5244,14 +5244,18 @@ 0 0 0 +1 +1 0 0 0 0 0 0 +1 0 0 +1 0 0 0 @@ -5266,7 +5270,3 @@ 0 0 0 -1 -0 -0 -0 diff --git a/test-A/out.tsv b/test-A/out.tsv index 84957b8..67f8820 100644 --- a/test-A/out.tsv +++ b/test-A/out.tsv @@ -4,7 +4,6 @@ 0 0 0 -1 0 0 0 @@ -24,13 +23,10 @@ 0 0 0 -1 0 0 0 -1 0 -1 0 0 0 @@ -49,7 +45,6 @@ 0 0 0 -1 0 0 0 @@ -75,18 +70,14 @@ 0 0 0 -1 0 0 0 0 0 -1 0 -1 0 0 -1 0 0 0 @@ -104,12 +95,10 @@ 0 0 0 -1 0 0 0 0 -1 0 0 0 @@ -117,7 +106,6 @@ 0 0 0 -1 0 0 0 @@ -131,17 +119,11 @@ 0 0 0 -1 0 -1 0 0 -1 -1 0 -1 0 -1 0 0 0 @@ -151,7 +133,6 @@ 0 0 0 -1 0 0 0 @@ -161,9 +142,7 @@ 0 0 0 -1 0 -1 0 0 0 @@ -181,7 +160,6 @@ 0 0 0 -1 0 0 0 @@ -215,12 +193,9 @@ 0 0 0 -1 0 0 0 -1 -1 0 0 0 @@ -229,9 +204,7 @@ 0 0 0 -1 0 -1 0 0 0 @@ -242,11 +215,9 @@ 0 0 0 -1 0 0 0 -1 0 0 0 @@ -268,10 +239,8 @@ 0 0 0 -1 0 0 -1 0 0 0 @@ -282,10 +251,8 @@ 0 0 0 -1 0 0 -1 0 0 0 @@ -296,18 +263,15 @@ 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 @@ -317,48 +281,39 @@ 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 -1 0 0 0 @@ -368,27 +323,22 @@ 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 -1 0 0 0 0 0 -1 0 0 0 @@ -407,22 +357,17 @@ 0 0 0 -1 0 0 0 0 0 -1 0 -1 0 -1 0 0 0 0 -1 0 0 0 @@ -433,11 +378,8 @@ 0 0 0 -1 -1 0 0 -1 0 0 0 @@ -458,7 +400,6 @@ 0 0 0 -1 0 0 0 @@ -467,14 +408,12 @@ 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 @@ -488,29 +427,23 @@ 0 0 0 -1 0 -1 0 -1 0 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 @@ -553,23 +486,16 @@ 0 0 0 -1 0 -1 0 -1 -1 0 0 0 0 0 0 -1 0 0 -1 -1 0 0 0 @@ -583,41 +509,32 @@ 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 -1 0 0 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 @@ -626,17 +543,14 @@ 0 0 0 -1 0 0 0 -1 0 0 0 0 0 -1 0 0 0 @@ -650,10 +564,8 @@ 0 0 0 -1 0 0 -1 0 0 0 @@ -665,8 +577,6 @@ 0 0 0 -1 -1 0 0 0 @@ -674,7 +584,6 @@ 0 0 0 -1 0 0 0 @@ -682,21 +591,17 @@ 0 0 0 -1 0 0 -1 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 @@ -710,7 +615,6 @@ 0 0 0 -1 0 0 0 @@ -722,9 +626,7 @@ 0 0 0 -1 0 -1 0 0 0 @@ -733,7 +635,6 @@ 0 0 0 -1 0 0 0 @@ -745,23 +646,19 @@ 0 0 0 -1 0 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 @@ -769,20 +666,15 @@ 0 0 0 -1 0 0 0 0 0 0 -1 0 0 -1 0 -1 -1 0 0 0 @@ -793,7 +685,6 @@ 0 0 0 -1 0 0 0 @@ -807,12 +698,10 @@ 0 0 0 -1 0 0 0 0 -1 0 0 0 @@ -824,43 +713,33 @@ 0 0 0 -1 0 0 -1 0 0 0 0 -1 0 0 0 -1 0 -1 0 0 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0 -1 -1 0 0 0 -1 0 0 0 @@ -874,7 +753,6 @@ 0 0 0 -1 0 0 0 @@ -895,10 +773,8 @@ 0 0 0 -1 0 0 -1 0 0 0 @@ -908,8 +784,6 @@ 0 0 0 -1 -1 0 0 0 @@ -925,7 +799,6 @@ 0 0 0 -1 0 0 0 @@ -940,7 +813,6 @@ 0 0 0 -1 0 0 0 @@ -952,14 +824,10 @@ 0 0 0 -1 0 -1 -1 0 0 0 -1 0 0 0 @@ -967,7 +835,6 @@ 0 0 0 -1 0 0 0 @@ -983,35 +850,28 @@ 0 0 0 -1 0 0 0 0 0 0 -1 0 0 -1 0 0 0 0 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 0 0 0 @@ -1023,34 +883,25 @@ 0 0 0 -1 0 0 0 0 -1 0 0 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 0 0 -1 -1 0 -1 0 0 0 @@ -1074,17 +925,14 @@ 0 0 0 -1 0 0 0 -1 0 0 0 0 0 -1 0 0 0 @@ -1095,14 +943,11 @@ 0 0 0 -1 0 0 0 -1 0 0 -1 0 0 0 @@ -1116,7 +961,6 @@ 0 0 0 -1 0 0 0 @@ -1134,12 +978,9 @@ 0 0 0 -1 0 0 0 -1 -1 0 0 0 @@ -1158,14 +999,11 @@ 0 0 0 -1 0 0 0 -1 0 0 -1 0 0 0 @@ -1178,14 +1016,11 @@ 0 0 0 -1 0 -1 0 0 0 0 -1 0 0 0 @@ -1197,7 +1032,6 @@ 0 0 0 -1 0 0 0 @@ -1217,18 +1051,13 @@ 0 0 0 -1 0 -1 -1 -1 0 0 0 0 0 0 -1 0 0 0 @@ -1263,7 +1092,6 @@ 0 0 0 -1 0 0 0 @@ -1291,17 +1119,14 @@ 0 0 0 -1 0 0 0 0 0 0 -1 0 0 -1 0 0 0 @@ -1320,25 +1145,19 @@ 0 0 0 -1 0 -1 0 0 0 -1 0 0 -1 0 0 0 0 0 0 -1 0 -1 0 0 0 @@ -1356,20 +1175,16 @@ 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 -1 0 -1 0 0 0 @@ -1383,8 +1198,6 @@ 0 0 0 -1 -1 0 0 0 @@ -1402,7 +1215,6 @@ 0 0 0 -1 0 0 0 @@ -1414,10 +1226,8 @@ 0 0 0 -1 0 0 -1 0 0 0 @@ -1432,22 +1242,16 @@ 0 0 0 -1 0 0 0 -1 0 -1 0 0 0 0 0 -1 0 -1 -1 0 0 0 @@ -1477,7 +1281,6 @@ 0 0 0 -1 0 0 0 @@ -1489,14 +1292,10 @@ 0 0 0 -1 -1 0 -1 0 0 0 -1 0 0 0 @@ -1505,9 +1304,7 @@ 0 0 0 -1 0 -1 0 0 0 @@ -1517,12 +1314,10 @@ 0 0 0 -1 0 0 0 0 -1 0 0 0 @@ -1542,7 +1337,6 @@ 0 0 0 -1 0 0 0 @@ -1558,12 +1352,10 @@ 0 0 0 -1 0 0 0 0 -1 0 0 0 @@ -1598,14 +1390,11 @@ 0 0 0 -1 0 0 0 0 -1 0 -1 0 0 0 @@ -1647,10 +1436,7 @@ 0 0 0 -1 0 -1 -1 0 0 0 @@ -1681,7 +1467,6 @@ 0 0 0 -1 0 0 0 @@ -1690,7 +1475,6 @@ 0 0 0 -1 0 0 0 @@ -1705,10 +1489,8 @@ 0 0 0 -1 0 0 -1 0 0 0 @@ -1745,25 +1527,20 @@ 0 0 0 -1 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 -1 0 -1 0 0 0 @@ -1773,7 +1550,6 @@ 0 0 0 -1 0 0 0 @@ -1787,24 +1563,18 @@ 0 0 0 -1 -1 0 0 0 0 -1 -1 0 0 0 -1 0 0 0 0 0 -1 0 0 0 @@ -1822,11 +1592,8 @@ 0 0 0 -1 0 -1 0 -1 0 0 0 @@ -1835,13 +1602,11 @@ 0 0 0 -1 0 0 0 0 0 -1 0 0 0 @@ -1854,9 +1619,7 @@ 0 0 0 -1 0 -1 0 0 0 @@ -1864,7 +1627,6 @@ 0 0 0 -1 0 0 0 @@ -1873,7 +1635,6 @@ 0 0 0 -1 0 0 0 @@ -1891,14 +1652,12 @@ 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 @@ -1908,13 +1667,10 @@ 0 0 0 -1 0 -1 0 0 0 -1 0 0 0 @@ -1923,7 +1679,6 @@ 0 0 0 -1 0 0 0 @@ -1935,11 +1690,9 @@ 0 0 0 -1 0 0 0 -1 0 0 0 @@ -1948,7 +1701,6 @@ 0 0 0 -1 0 0 0 @@ -1959,11 +1711,8 @@ 0 0 0 -1 0 -1 0 -1 0 0 0 @@ -1971,7 +1720,6 @@ 0 0 0 -1 0 0 0 @@ -1986,9 +1734,7 @@ 0 0 0 -1 0 -1 0 0 0 @@ -2025,7 +1771,6 @@ 0 0 0 -1 0 0 0 @@ -2037,7 +1782,6 @@ 0 0 0 -1 0 0 0 @@ -2058,22 +1802,18 @@ 0 0 0 -1 0 0 -1 0 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 @@ -2086,7 +1826,6 @@ 0 0 0 -1 0 0 0 @@ -2106,14 +1845,11 @@ 0 0 0 -1 0 0 0 0 -1 0 -1 0 0 0 @@ -2131,13 +1867,10 @@ 0 0 0 -1 0 -1 0 0 0 -1 0 0 0 @@ -2146,7 +1879,6 @@ 0 0 0 -1 0 0 0 @@ -2159,7 +1891,6 @@ 0 0 0 -1 0 0 0 @@ -2177,10 +1908,8 @@ 0 0 0 -1 0 0 -1 0 0 0 @@ -2191,7 +1920,6 @@ 0 0 0 -1 0 0 0 @@ -2203,7 +1931,6 @@ 0 0 0 -1 0 0 0 @@ -2212,7 +1939,6 @@ 0 0 0 -1 0 0 0 @@ -2223,7 +1949,6 @@ 0 0 0 -1 0 0 0 @@ -2233,7 +1958,6 @@ 0 0 0 -1 0 0 0 @@ -2244,7 +1968,6 @@ 0 0 0 -1 0 0 0 @@ -2257,20 +1980,17 @@ 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 @@ -2281,9 +2001,7 @@ 0 0 0 -1 0 -1 0 0 0 @@ -2292,24 +2010,20 @@ 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 @@ -2317,8 +2031,6 @@ 0 0 0 -1 -1 0 0 0 @@ -2328,14 +2040,11 @@ 0 0 0 -1 0 0 0 0 0 -1 -1 0 0 0 @@ -2343,8 +2052,6 @@ 0 0 0 -1 -1 0 0 0 @@ -2352,13 +2059,10 @@ 0 0 0 -1 0 0 0 0 -1 -1 0 0 0 @@ -2371,27 +2075,20 @@ 0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 -1 0 0 0 @@ -2405,7 +2102,6 @@ 0 0 0 -1 0 0 0 @@ -2414,12 +2110,10 @@ 0 0 0 -1 0 0 0 0 -1 0 0 0 @@ -2434,7 +2128,6 @@ 0 0 0 -1 0 0 0 @@ -2454,9 +2147,7 @@ 0 0 0 -1 0 -1 0 0 0 @@ -2471,16 +2162,12 @@ 0 0 0 -1 0 0 0 -1 0 -1 0 0 -1 0 0 0 @@ -2489,14 +2176,10 @@ 0 0 0 -1 -1 0 0 0 0 -1 -1 0 0 0 @@ -2504,17 +2187,12 @@ 0 0 0 -1 0 0 0 -1 0 0 -1 0 -1 -1 0 0 0 @@ -2522,11 +2200,8 @@ 0 0 0 -1 0 -1 0 -1 0 0 0 @@ -2550,7 +2225,6 @@ 0 0 0 -1 0 0 0 @@ -2565,7 +2239,6 @@ 0 0 0 -1 0 0 0 @@ -2606,7 +2279,6 @@ 0 0 0 -1 0 0 0 @@ -2614,7 +2286,6 @@ 0 0 0 -1 0 0 0 @@ -2624,7 +2295,6 @@ 0 0 0 -1 0 0 0 @@ -2642,7 +2312,6 @@ 0 0 0 -1 0 0 0 @@ -2662,7 +2331,6 @@ 0 0 0 -1 0 0 0 @@ -2671,7 +2339,6 @@ 0 0 0 -1 0 0 0 @@ -2691,18 +2358,14 @@ 0 0 0 -1 0 0 0 -1 0 -1 0 0 0 0 -1 0 0 0 @@ -2727,2419 +2390,12 @@ 0 0 0 -1 0 0 0 0 0 0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -1 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -1 -0 -1 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -1 -0 -0 -0 -0 -0 -1 -1 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -1 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -0 -1 -1 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -1 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -0 -1 -0 -0 -0 -1 -0 -0 -1 -0 -0 -0 -1 -0 -0 -1 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 0 0 0