diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab
index 00f45355dc8ea4b35d0280e42a3a12a0eb98f5d8..783612c13bfcc29a970e6f9d45b4759662fdb0fb 100644
--- a/ci-scripts/Jenkinsfile-gitlab
+++ b/ci-scripts/Jenkinsfile-gitlab
@@ -30,6 +30,8 @@ def sendSocialMediaMessage(pipeChannel, pipeColor, pipeMessage) {
     }
 }
 
+def doRedHatBuild = false
+
 pipeline {
     agent {
         label 'bellatrix'
@@ -38,10 +40,35 @@ pipeline {
         disableConcurrentBuilds()
         timestamps()
         gitLabConnection('OAI GitLab')
-        gitlabBuilds(builds: ["Build eNb-USRP", "Build basic-sim", "Build phy-sim", "Build eNb-ethernet", "Build UE-ethernet", "Analysis with cppcheck", "Test phy-sim"])
+        gitlabBuilds(builds: ["Build eNb-USRP", "Build basic-sim", "Build phy-sim", "Build eNb-ethernet", "Build UE-ethernet", "Analysis with cppcheck", "Test phy-sim", "Test basic-sim", "Test-FDD-Band7", "Test-TDD-Band40"])
+        ansiColor('xterm')
     }
 
     stages {
+        stage ("Verify Parameters") {
+            steps {
+                script {
+                    echo '\u2705 \u001B[32mVerify Parameters\u001B[0m'
+                    def allParametersPresent = true
+
+                    if (params.RedHatRemoteServer == null) {
+                        allParametersPresent = false
+                    }
+                    if (params.RedHatRemoteCredentials == null) {
+                        allParametersPresent = false
+                    }
+                    if (params.RedHatWorkingPath == null) {
+                        allParametersPresent = false
+                    }
+                    if (allParametersPresent) {
+                        echo "Performing Red Hat Build"
+                        doRedHatBuild = true
+                    } else {
+                        doRedHatBuild = false
+                    }
+                }
+            }
+        }
         stage ("Verify Guidelines") {
             steps {
                 echo "Git URL         is ${GIT_URL}"
@@ -126,14 +153,14 @@ pipeline {
                 stage ("Analysis with cppcheck") {
                     steps {
                         gitlabCommitStatus(name: "Analysis with cppcheck") {
-                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant cppcheck --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
+                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant cppcheck --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
                         }
                     }
                 }
                 stage ("Build eNb-USRP") {
                     steps {
                         gitlabCommitStatus(name: "Build eNb-USRP") {
-                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant enb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
+                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant enb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
                         }
                     }
                 }
@@ -165,22 +192,52 @@ pipeline {
                         }
                     }
                 }
+                stage ("Build eNb-USRP on Red Hat") {
+                    when {
+                        expression {doRedHatBuild}
+                    }
+                    steps {
+                        gitlabCommitStatus(name: "Build eNb-USRP-CentOS") {
+                            script {
+                                try {
+                                    withCredentials([
+                                        [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.RedHatRemoteCredentials}", usernameVariable: 'RH_Username', passwordVariable: 'RH_Password']
+                                    ]) {
+                                        sh "./ci-scripts/buildOnRH.sh --workspace $WORKSPACE --job-name ${JOB_NAME} --build-id ${BUILD_ID} --remote-host ${params.RedHatRemoteServer} --remote-path ${params.RedHatWorkingPath} --remote-user-name ${RH_Username} --remote-password ${RH_Password}"
+                                    }
+                                } catch (Exception e) {
+                                    echo "Red Hat build failed not an error now"
+                                }
+                            }
+                        }
+                    }
+                }
             }
             post {
                 always {
                     script {
                         dir ('archives') {
-                            sh "zip -r -qq vm_build_logs.zip basic_sim enb_usrp phy_sim cppcheck enb_eth ue_eth"
+                            sh "zip -r -qq vm_build_logs.zip basic_sim enb_usrp phy_sim cppcheck enb_eth ue_eth red_hat"
                         }
                         if(fileExists('archives/vm_build_logs.zip')) {
                             archiveArtifacts artifacts: 'archives/vm_build_logs.zip'
                         }
                         if ("MERGE".equals(env.gitlabActionType)) {
                             sh "./ci-scripts/reportBuildLocally.sh --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger merge-request --src-branch ${env.gitlabSourceBranch} --src-commit ${env.gitlabMergeRequestLastCommit} --target-branch ${env.gitlabTargetBranch} --target-commit ${GIT_COMMIT}"
+                            sh "./ci-scripts/checkAddedWarnings.sh --src-branch ${env.gitlabSourceBranch} --target-branch ${env.gitlabTargetBranch}"
+                            def res=readFile('./oai_warning_files.txt').trim();
+                            if ("0".equals(res)) {
+                                echo "No issues w/ warnings/errors in this merge request"
+                            } else {
+                                def fileList=readFile('./oai_warning_files_list.txt').trim();
+                                def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): Some modified files in Merge Request MAY have INTRODUCED WARNINGS (" + fileList + ")"
+                                addGitLabMRComment comment: message
+                            }
                         } else {
                             sh "./ci-scripts/reportBuildLocally.sh --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger push --branch ${GIT_BRANCH} --commit ${GIT_COMMIT}"
                         }
                         if(fileExists('build_results.html')) {
+                            sh "sed -i -e 's#Build-ID: ${BUILD_ID}#Build-ID: <a href=\"{BUILD_URL}\">${BUILD_ID}</a>#' build_results.html"
                             archiveArtifacts artifacts: 'build_results.html'
                         }
                     }
@@ -193,36 +250,113 @@ pipeline {
                 stage ("Test physical simulators") {
                     steps {
                         gitlabCommitStatus(name: "Test phy-sim") {
-                            sh "./ci-scripts/runTestOnVM.sh --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
+                            sh "./ci-scripts/runTestOnVM.sh --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
                         }
                     }
                 }
                 stage ("Test basic simulator") {
                     steps {
-                        //gitlabCommitStatus(name: "Test basic-sim") {
+                        gitlabCommitStatus(name: "Test basic-sim") {
                             sh "./ci-scripts/runTestOnVM.sh --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
-                        //}
+                        }
                     }
                 }
-		stage ("Test FDD - Band 7 - B210") {
-                    steps {
-                        script {
-                            if ("MERGE".equals(env.gitlabActionType)) {
-                                build job: 'eNB-CI-FDD-Band7-B210',
-                                   parameters: [
-                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
-                                       string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
-                                       string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
-                                       booleanParam(name: 'eNB_mergeRequest', value: true)
-                                   ]
-                            } else {
-                                build job: 'eNB-CI-FDD-Band7-B210',
-                                   parameters: [
-                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
-                                       string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
-                                       string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
-                                       booleanParam(name: 'eNB_mergeRequest', value: false)
-                                   ]
+                stage ("Test on CI bench #1") {
+                    stages {
+                        stage ("Test FDD - Band 7 - B210") {
+                            steps {
+                                script {
+                                    try {
+                                        if ("MERGE".equals(env.gitlabActionType)) {
+                                            gitlabCommitStatus(name: "Test-FDD-Band7") {
+                                                build job: 'eNB-CI-FDD-Band7-B210',
+                                                   parameters: [
+                                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                                       string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
+                                                       string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
+                                                       booleanParam(name: 'eNB_mergeRequest', value: true)
+                                                   ]
+                                            }
+                                        } else {
+                                            gitlabCommitStatus(name: "Test-FDD-Band7") {
+                                                build job: 'eNB-CI-FDD-Band7-B210',
+                                                   parameters: [
+                                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                                       string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
+                                                       string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
+                                                       booleanParam(name: 'eNB_mergeRequest', value: false)
+                                                   ]
+                                            }
+                                        }
+                                    } catch (Exception e) {
+                                        currentBuild.result = 'FAILURE'
+                                    }
+                                }
+                            }
+                            post {
+                                // In case of any non-success, we are retrieving the HTML report of the last completed
+                                // slave job.
+                                // The only drop-back is that we may retrieve the HTML report of a previous build
+                                always {
+                                    script {
+                                        if (!fileExists('test_results-eNB-CI-FDD-Band7-B210.html')) {
+                                            copyArtifacts(projectName: 'eNB-CI-FDD-Band7-B210',
+                                                          filter: 'test_results*.html',
+                                                          selector: lastCompleted())
+                                            if (fileExists('test_results-eNB-CI-FDD-Band7-B210.html')) {
+                                                archiveArtifacts artifacts: 'test_results-eNB-CI-FDD-Band7-B210.html'
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                        stage ("Test TDD - Band 40 - B210") {
+                            steps {
+                                script {
+                                    try {
+                                        if ("MERGE".equals(env.gitlabActionType)) {
+                                            gitlabCommitStatus(name: "Test-TDD-Band40") {
+                                                build job: 'eNB-CI-TDD-Band40-B210',
+                                                   parameters: [
+                                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                                       string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
+                                                       string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
+                                                       booleanParam(name: 'eNB_mergeRequest', value: true)
+                                                   ]
+                                            }
+                                        } else {
+                                            gitlabCommitStatus(name: "Test-TDD-Band40") {
+                                                build job: 'eNB-CI-TDD-Band40-B210',
+                                                   parameters: [
+                                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                                       string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
+                                                       string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
+                                                       booleanParam(name: 'eNB_mergeRequest', value: false)
+                                                   ]
+                                            }
+                                        }
+                                    } catch (Exception e) {
+                                        currentBuild.result = 'FAILURE'
+                                    }
+                                }
+                            }
+                            post {
+                                // In case of any non-success, we are retrieving the HTML report of the last completed
+                                // slave job.
+                                // The only drop-back is that we may retrieve the HTML report of a previous build
+                                always {
+                                    script {
+                                        if (!fileExists('test_results-eNB-CI-TDD-Band40-B210.html')) {
+                                            copyArtifacts(projectName: 'eNB-CI-TDD-Band40-B210',
+                                                          filter: 'test_results*.html',
+                                                          selector: lastCompleted())
+                                            if (fileExists('test_results-eNB-CI-TDD-Band40-B210.html')) {
+                                                archiveArtifacts artifacts: 'test_results-eNB-CI-TDD-Band40-B210.html'
+                                            }
+                                        }
+                                    }
+                                }
                             }
                         }
                     }
@@ -232,12 +366,19 @@ pipeline {
                 always {
                     script {
                         dir ('archives') {
-                            sh "if [ -d */test ]; then zip -r -qq vm_tests_logs.zip */test ; fi"
+                            sh "if [ -d basic_sim/test ] || [ -d phy_sim/test ]; then zip -r -qq vm_tests_logs.zip */test ; fi"
                         }
                         if(fileExists('archives/vm_tests_logs.zip')) {
                             archiveArtifacts artifacts: 'archives/vm_tests_logs.zip'
-                            archiveArtifacts artifacts: 'archives/*/test/results_autotests*.xml'
-                            archiveArtifacts artifacts: 'archives/*/test/*.xsl'
+                            if ("MERGE".equals(env.gitlabActionType)) {
+                                sh "./ci-scripts/reportTestLocally.sh --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger merge-request --src-branch ${env.gitlabSourceBranch} --src-commit ${env.gitlabMergeRequestLastCommit} --target-branch ${env.gitlabTargetBranch} --target-commit ${GIT_COMMIT}"
+                            } else {
+                                sh "./ci-scripts/reportTestLocally.sh --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger push --branch ${GIT_BRANCH} --commit ${GIT_COMMIT}"
+                            }
+                            if(fileExists('test_simulator_results.html')) {
+                                sh "sed -i -e 's#Build-ID: ${BUILD_ID}#Build-ID: <a href=\"{BUILD_URL}\">${BUILD_ID}</a>#' test_simulator_results.html"
+                                archiveArtifacts artifacts: 'test_simulator_results.html'
+                            }
                         }
                     }
                 }
diff --git a/ci-scripts/Jenkinsfile-tmp-ran b/ci-scripts/Jenkinsfile-tmp-ran
index b03ec4f4332b061a558d14ea60c5c01e023f3bfb..4db4ec0b2de51b0bb294f99e9b93589b34fc26c0 100644
--- a/ci-scripts/Jenkinsfile-tmp-ran
+++ b/ci-scripts/Jenkinsfile-tmp-ran
@@ -44,9 +44,12 @@ termStatusArray[termSPGW] = false
 termStatusArray[termMME] = false
 termStatusArray[termHSS] = false
 
+// Global Parameters. Normally they should be populated when the master job
+// triggers the slave job with parameters
 def eNB_Repository
 def eNB_Branch
 def eNB_CommitID
+def eNB_AllowMergeRequestProcess = false
 
 pipeline {
     agent {
@@ -118,7 +121,7 @@ pipeline {
                     if (params.eNB_Credentials == null) {
                         allParametersPresent = false
                     }
-                    // the following 3 parameters should be pushed by the master trigger
+                    // the following 4 parameters should be pushed by the master trigger
                     // if not present, take the job GIT variables (used for developing)
                     if (params.eNB_Repository == null) {
                         eNB_Repository = env.GIT_URL
@@ -138,6 +141,9 @@ pipeline {
                         eNB_CommitID = params.eNB_CommitID
                     }
                     echo "eNB_CommitID          :   ${eNB_CommitID}"
+                    if (params.eNB_mergeRequest != null) {
+                        eNB_AllowMergeRequestProcess = params.eNB_mergeRequest
+                    }
 
                     if (params.EPC_IPAddress == null) {
                         allParametersPresent = false
@@ -179,7 +185,7 @@ pipeline {
                                 [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.EPC_Credentials}", usernameVariable: 'EPC_Username', passwordVariable: 'EPC_Password'],
                                 [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.ADB_Credentials}", usernameVariable: 'ADB_Username', passwordVariable: 'ADB_Password']
                             ]) {
-                                sh "python3 main.py --mode=TesteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBRepository=${eNB_Repository} --eNBBranch=${eNB_Branch} --eNBCommitID=${eNB_CommitID} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath} --EPCIPAddress=${params.EPC_IPAddress} --EPCType=${params.EPC_Type} --EPCUserName=${EPC_Username} --EPCPassword=${EPC_Password} --EPCSourceCodePath=${params.EPC_SourceCodePath} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} --XMLTestFile=${testXMLFile}"
+                                sh "python3 main.py --mode=TesteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBRepository=${eNB_Repository} --eNBBranch=${eNB_Branch} --eNBCommitID=${eNB_CommitID} --eNB_AllowMerge=${eNB_AllowMergeRequestProcess} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath} --EPCIPAddress=${params.EPC_IPAddress} --EPCType=${params.EPC_Type} --EPCUserName=${EPC_Username} --EPCPassword=${EPC_Password} --EPCSourceCodePath=${params.EPC_SourceCodePath} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} --XMLTestFile=${testXMLFile}"
                             }
                         } catch (Exception e) {
                             currentBuild.result = 'FAILURE'
@@ -312,6 +318,11 @@ pipeline {
                             if(fileExists("enb.log.${env.BUILD_ID}.zip")) {
                                 archiveArtifacts "enb.log.${env.BUILD_ID}.zip"
                             }
+                            if(fileExists("ci-scripts/test_results.html")) {
+                                sh "mv ci-scripts/test_results.html test_results-${JOB_NAME}.html"
+                                sh "sed -i -e 's#TEMPLATE_JOB_NAME#${JOB_NAME}#' -e 's#TEMPLATE_BUILD_ID#<a href=\"${BUILD_URL}\">${BUILD_ID}</a>#' test_results-${JOB_NAME}.html"
+                                archiveArtifacts "test_results-${JOB_NAME}.html"
+                            }
                         }
                     }
                 }
@@ -387,6 +398,24 @@ pipeline {
                         }
                     }
                 }
+                stage('Log Collection (Iperf)') {
+                    steps {
+                        withCredentials([
+                             [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.EPC_Credentials}", usernameVariable: 'EPC_Username', passwordVariable: 'EPC_Password']
+                        ]) {
+                            echo '\u2705 \u001B[32mLog Collection (Iperf)\u001B[0m'
+                            sh "python3 ci-scripts/main.py --mode=LogCollectIperf --EPCIPAddress=${params.EPC_IPAddress} --EPCUserName=${EPC_Username} --EPCPassword=${EPC_Password} --EPCSourceCodePath=${params.EPC_SourceCodePath} --EPCType=${params.EPC_Type}"
+
+                            echo '\u2705 \u001B[32mLog Transfer (Iperf)\u001B[0m'
+                            sh "sshpass -p \'${EPC_Password}\' scp -o 'StrictHostKeyChecking no' -o 'ConnectTimeout 10' ${EPC_Username}@${params.EPC_IPAddress}:${EPC_SourceCodePath}/scripts/iperf.log.zip ./iperf.log.${env.BUILD_ID}.zip || true"
+                        }
+                        script {
+                            if(fileExists("iperf.log.${env.BUILD_ID}.zip")) {
+                                archiveArtifacts "iperf.log.${env.BUILD_ID}.zip"
+                            }
+                        }
+                    }
+                }
             }
         }
     }
diff --git a/ci-scripts/buildOnRH.sh b/ci-scripts/buildOnRH.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ce5b24dc4931de5238cca91946733378031ce58b
--- /dev/null
+++ b/ci-scripts/buildOnRH.sh
@@ -0,0 +1,209 @@
+#!/bin/bash
+#/*
+# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# * contributor license agreements.  See the NOTICE file distributed with
+# * this work for additional information regarding copyright ownership.
+# * The OpenAirInterface Software Alliance licenses this file to You under
+# * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+# * except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *      http://www.openairinterface.org/?page_id=698
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *-------------------------------------------------------------------------------
+# * For more information about the OpenAirInterface (OAI) Software Alliance:
+# *      contact@openairinterface.org
+# */
+
+function usage {
+    echo "OAI RedHat Build Check script"
+    echo "   Original Author: Raphael Defosseux"
+
+    echo ""
+    echo "Usage:"
+    echo "------"
+    echo "    buildOnRH.sh [OPTIONS]"
+    echo ""
+    echo "Options:"
+    echo "--------"
+    echo "    --job-name #### OR -jn ####"
+    echo "    Specify the name of the Jenkins job."
+    echo ""
+    echo "    --build-id #### OR -id ####"
+    echo "    Specify the build ID of the Jenkins job."
+    echo ""
+    echo "    --workspace #### OR -ws ####"
+    echo "    Specify the workspace."
+    echo ""
+    echo "    --remote-host #### OR -rh ####"
+    echo "    Specify the RedHat remote server."
+    echo ""
+    echo "    --remote-user-name #### OR -ru ####"
+    echo "    Specify the RedHat remote server username."
+    echo ""
+    echo "    --remote-password #### OR -rp ####"
+    echo "    Specify the RedHat remote server password."
+    echo ""
+    echo "    --remote-path #### OR -ra ####"
+    echo "    Specify the RedHat remote server path to work on."
+    echo ""
+}
+
+if [ $# -lt 1 ] || [ $# -gt 14 ]
+then
+    echo "Syntax Error: not the correct number of arguments"
+    echo ""
+    usage
+    exit 1
+fi
+
+RH_HOST=XX
+RH_USER=XX
+RH_PASSWD=XX
+RH_PATH=XX
+JOB_NAME=XX
+BUILD_ID=XX
+
+while [[ $# -gt 0 ]]
+do
+key="$1"
+
+case $key in
+    -h|--help)
+    shift
+    usage
+    exit 0
+    ;;
+    -jn|--job-name)
+    JOB_NAME="$2"
+    shift
+    shift
+    ;;
+    -id|--build-id)
+    BUILD_ID="$2"
+    shift
+    shift
+    ;;
+    -ws|--workspace)
+    JENKINS_WKSP="$2"
+    shift
+    shift
+    ;;
+    -rh|--remote-host)
+    RH_HOST="$2"
+    shift
+    shift
+    ;;
+    -ru|--remote-user-name)
+    RH_USER="$2"
+    shift
+    shift
+    ;;
+    -rp|--remote-password)
+    RH_PASSWD="$2"
+    shift
+    shift
+    ;;
+    -ra|--remote-path)
+    RH_PATH="$2"
+    shift
+    shift
+    ;;
+    *)
+    echo "Syntax Error: unknown option: $key"
+    echo ""
+    usage
+    exit 1
+esac
+done
+
+if [ ! -f $JENKINS_WKSP/localZip.zip ]
+then
+    echo "Missing localZip.zip file!"
+    exit 1
+fi
+
+if [ "$JOB_NAME" == "XX" ] || [ "$BUILD_ID" == "XX" ] || [ "$RH_HOST" == "XX" ] || [ "$RH_USER" == "XX" ] || [ "$RH_PASSWD" == "XX" ] || [ "$RH_PATH" == "XX" ]
+then
+    echo "Missing options"
+    usage
+    exit 1
+fi
+
+echo "############################################################"
+echo "Copying GIT repo into RedHat Server" 
+echo "############################################################"
+echo "rm -Rf ${RH_PATH}" >> rh-cmd.txt
+echo "mkdir -p ${RH_PATH}" >> rh-cmd.txt
+
+sshpass -p ${RH_PASSWD} ssh -o 'StrictHostKeyChecking no' ${RH_USER}@${RH_HOST} < rh-cmd.txt
+rm -f rh-cmd.txt
+
+echo "############################################################"
+echo "Running install and build script on RedHat Server"
+echo "############################################################"
+sshpass -p ${RH_PASSWD} scp -o 'StrictHostKeyChecking no' $JENKINS_WKSP/localZip.zip ${RH_USER}@${RH_HOST}:${RH_PATH}
+
+echo "cd ${RH_PATH}" > rh-cmd.txt
+echo "unzip -qq localZip.zip" >> rh-cmd.txt
+echo "source oaienv" >> rh-cmd.txt
+echo "cd cmake_targets" >> rh-cmd.txt
+echo "mkdir -p log" >> rh-cmd.txt
+echo "./build_oai -I -w USRP --eNB > log/install-build.txt 2>&1" >> rh-cmd.txt
+sshpass -p ${RH_PASSWD} ssh -o 'StrictHostKeyChecking no' ${RH_USER}@${RH_HOST} < rh-cmd.txt
+
+rm -f rh-cmd.txt
+
+echo "############################################################"
+echo "Creating a tmp folder to store results and artifacts"
+echo "############################################################"
+if [ ! -d $JENKINS_WKSP/archives ]
+then
+    mkdir -p $JENKINS_WKSP/archives
+fi
+
+ARCHIVES_LOC=$JENKINS_WKSP/archives/red_hat
+if [ ! -d $ARCHIVES_LOC ]
+then
+    mkdir -p $ARCHIVES_LOC
+fi
+
+sshpass -p ${RH_PASSWD} scp -o 'StrictHostKeyChecking no' ${RH_USER}@${RH_HOST}:${RH_PATH}/cmake_targets/log/*.txt $ARCHIVES_LOC
+
+echo "############################################################"
+echo "Checking build status" 
+echo "############################################################"
+
+LOG_PATTERN=.Rel14.txt
+NB_PATTERN_FILES=4
+
+LOG_FILES=`ls $ARCHIVES_LOC/*.txt`
+STATUS=0
+NB_FOUND_FILES=0
+
+for FULLFILE in $LOG_FILES
+do
+    if [[ $FULLFILE == *"$LOG_PATTERN"* ]]
+    then
+        filename=$(basename -- "$FULLFILE")
+        PASS_PATTERN=`echo $filename | sed -e "s#$LOG_PATTERN##"`
+        LOCAL_STAT=`egrep -c "Built target $PASS_PATTERN" $FULLFILE`
+        if [ $LOCAL_STAT -eq 0 ]; then STATUS=-1; fi
+        NB_FOUND_FILES=$((NB_FOUND_FILES + 1))
+    fi
+done
+
+if [ $NB_PATTERN_FILES -ne $NB_FOUND_FILES ]; then STATUS=-1; fi
+
+if [ $STATUS -eq 0 ]
+then
+    echo "STATUS seems OK"
+else
+    echo "STATUS failed?"
+fi
+exit $STATUS
diff --git a/ci-scripts/buildOnVM.sh b/ci-scripts/buildOnVM.sh
index 76a11c6d383eecabf66c5c5c8b8994461cb1dff9..3eb24932bf685b04beaa4b0fa5fe88debb440893 100755
--- a/ci-scripts/buildOnVM.sh
+++ b/ci-scripts/buildOnVM.sh
@@ -86,6 +86,7 @@ JOB_NAME=XX
 BUILD_ID=XX
 VM_NAME=ci-enb-usrp
 VM_MEMORY=2048
+VM_CPU=4
 ARCHIVES_LOC=enb_usrp
 LOG_PATTERN=.Rel14.txt
 NB_PATTERN_FILES=4
@@ -135,6 +136,8 @@ case $key in
     LOG_PATTERN=basic_simulator
     NB_PATTERN_FILES=2
     BUILD_OPTIONS="--basic-simulator"
+    VM_MEMORY=8192
+    VM_CPU=4
     shift
     ;;
     -v3)
@@ -186,6 +189,8 @@ case $key in
         LOG_PATTERN=basic_simulator
         NB_PATTERN_FILES=2
         BUILD_OPTIONS="--basic-simulator"
+        VM_MEMORY=8192
+        VM_CPU=4
         ;;
         phy-sim)
         VM_NAME=ci-phy-sim
@@ -270,7 +275,7 @@ then
     echo "############################################################"
     echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base"
     echo "############################################################"
-    uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu 4 --unsafe-caching --template ci-scripts/template-host.xml
+    uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu $VM_CPU --unsafe-caching --template ci-scripts/template-host.xml
 fi
 
 echo "Waiting for VM to be started"
@@ -289,6 +294,7 @@ echo "############################################################"
 echo "Running install and build script on VM ($VM_NAME)"
 echo "############################################################"
 echo "sudo cp 01proxy /etc/apt/apt.conf.d/" > $VM_CMDS
+echo "touch /home/ubuntu/.hushlogin" >> $VM_CMDS
 if [[ "$VM_NAME" == *"-cppcheck"* ]]
 then
     echo "echo \"sudo apt-get --yes --quiet install zip cppcheck \"" >> $VM_CMDS
diff --git a/ci-scripts/checkAddedWarnings.sh b/ci-scripts/checkAddedWarnings.sh
new file mode 100755
index 0000000000000000000000000000000000000000..609261becff992d566369526508374543a5ce528
--- /dev/null
+++ b/ci-scripts/checkAddedWarnings.sh
@@ -0,0 +1,144 @@
+#!/bin/bash
+#/*
+# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# * contributor license agreements.  See the NOTICE file distributed with
+# * this work for additional information regarding copyright ownership.
+# * The OpenAirInterface Software Alliance licenses this file to You under
+# * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+# * except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *      http://www.openairinterface.org/?page_id=698
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *-------------------------------------------------------------------------------
+# * For more information about the OpenAirInterface (OAI) Software Alliance:
+# *      contact@openairinterface.org
+# */
+
+function usage {
+    echo "OAI Warning Check script"
+    echo "   Original Author: Raphael Defosseux"
+    echo ""
+    echo "Usage:"
+    echo "------"
+    echo "    checkAddedWarnings.sh [OPTIONS]"
+    echo ""
+    echo "Options:"
+    echo "--------"
+    echo "    --src-branch #### OR -sb ####"
+    echo "    Specify the source branch of the merge request."
+    echo ""
+    echo "    --target-branch #### OR -tb ####"
+    echo "    Specify the target branch of the merge request (usually develop)."
+    echo ""
+    echo "    --help OR -h"
+    echo "    Print this help message."
+    echo ""
+}
+
+if [ $# -ne 4 ] && [ $# -ne 1 ]
+then
+    echo "Syntax Error: not the correct number of arguments"
+    echo ""
+    usage
+    exit 1
+fi
+
+checker=0
+while [[ $# -gt 0 ]]
+do
+key="$1"
+
+case $key in
+    -h|--help)
+    shift
+    usage
+    exit 0
+    ;;
+    -sb|--src-branch)
+    SOURCE_BRANCH="$2"
+    let "checker|=0x1"
+    shift
+    shift
+    ;;
+    -tb|--target-branch)
+    TARGET_BRANCH="$2"
+    let "checker|=0x2"
+    shift
+    shift
+    ;;
+    *)
+    echo "Syntax Error: unknown option: $key"
+    echo ""
+    usage
+    exit 1
+esac
+
+done
+
+
+if [ $checker -ne 3 ]
+then
+    echo "Source Branch is    : $SOURCE_BRANCH"
+    echo "Target Branch is    : $TARGET_BRANCH"
+    echo ""
+    echo "Syntax Error: missing option"
+    echo ""
+    usage
+    exit 1
+fi
+
+# Merge request scenario
+
+MERGE_COMMMIT=`git log -n1 | grep commit | sed -e "s@commit @@"`
+TARGET_INIT_COMMIT=`cat .git/refs/remotes/origin/$TARGET_BRANCH`
+
+echo " ---- Checking the modified files by the merge request ----"
+echo ""
+echo "Source Branch is    : $SOURCE_BRANCH"
+echo "Target Branch is    : $TARGET_BRANCH"
+echo "Merged Commit is    : $MERGE_COMMMIT"
+echo "Target Init   is    : $TARGET_INIT_COMMIT"
+
+# Retrieve the list of modified files since the latest develop commit
+MODIFIED_FILES=`git log $TARGET_INIT_COMMIT..$MERGE_COMMMIT --oneline --name-status | egrep "^M|^A" | sed -e "s@^M\t*@@" -e "s@^A\t*@@" | sort | uniq`
+NB_WARNINGS_FILES=0
+
+# Retrieve list of warnings 
+LIST_WARNING_FILES=`egrep "error:|warning:" archives/*/*.Rel14.txt archives/*/basic_simulator_*txt | egrep -v "jobserver unavailable|Clock skew detected.|flexran.proto" | sed -e "s#^.*/home/ubuntu/tmp/##" -e "s#^.*/tmp/CI-eNB/##" -e "s#common/utils/.*/itti#common/utils/itti#" | awk -F ":" '{print $1}' | sort | uniq`
+
+echo ""
+echo "List of files that have been modified by the Merge Request AND"
+echo "  that have compilation warnings/errors"
+echo "--------------------------------------------------------------------"
+declare -a ARRAYNAME
+
+for FULLFILE in $MODIFIED_FILES
+do
+    filename=$(basename -- "$FULLFILE")
+    EXT="${filename##*.}"
+    if [ $EXT = "c" ] || [ $EXT = "h" ] || [ $EXT = "cpp" ] || [ $EXT = "hpp" ]
+    then
+        for WARNING_FILE in $LIST_WARNING_FILES
+        do
+            if [ $FULLFILE = $WARNING_FILE ]
+            then
+                echo $WARNING_FILE
+                ARRAYNAME[$NB_WARNINGS_FILES]=$WARNING_FILE
+                NB_WARNINGS_FILES=$((NB_WARNINGS_FILES + 1))
+            fi
+        done
+    fi
+done
+
+echo ""
+echo "NB Files impacted by warnings/errors in Merge Request: $NB_WARNINGS_FILES"
+echo $NB_WARNINGS_FILES > oai_warning_files.txt
+echo ${ARRAYNAME[*]} > oai_warning_files_list.txt
+
+exit 0
diff --git a/ci-scripts/conf_files/enb.band40.tm1.100PRB.FairScheduler.usrpb210.conf b/ci-scripts/conf_files/enb.band40.tm1.100PRB.FairScheduler.usrpb210.conf
new file mode 100644
index 0000000000000000000000000000000000000000..14230c125f26b3b08ac7d3a5e2177975fa52de0a
--- /dev/null
+++ b/ci-scripts/conf_files/enb.band40.tm1.100PRB.FairScheduler.usrpb210.conf
@@ -0,0 +1,220 @@
+Active_eNBs = ( "eNB_Eurecom_LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+    ////////// Identification parameters:
+    eNB_ID    =  0xe00;
+
+    cell_type =  "CELL_MACRO_ENB";
+
+    eNB_name  =  "eNB_Eurecom_LTEBox";
+
+    // Tracking area code, 0x0000 and 0xfffe are reserved values
+    tracking_area_code  =  "1";
+
+    mobile_country_code =  "208";
+    mobile_network_code =  "92";
+
+       ////////// Physical parameters:
+
+    component_carriers = (
+      {
+        node_function                                         = "eNodeB_3GPP";
+        node_timing                                           = "synch_to_ext_device";
+        node_synch_ref                                        = 0;
+        frame_type					      = "TDD";
+        tdd_config 					      = 1;
+        tdd_config_s            			      = 0;
+        prefix_type             			      = "NORMAL";
+        eutra_band              			      = 40;
+        downlink_frequency      			      = 2350000000L;
+        uplink_frequency_offset 			      = 0;
+        Nid_cell					      = 0;
+        N_RB_DL                 			      = 100;
+        Nid_cell_mbsfn          			      = 0;
+        nb_antenna_ports          			      = 1;
+        nb_antennas_tx          			      = 1;
+        nb_antennas_rx          			      = 1;
+        tx_gain                                            = 90;
+        rx_gain                                            = 125;
+        prach_root              			      = 0;
+        prach_config_index      			      = 0;
+        prach_high_speed        			      = "DISABLE";
+        prach_zero_correlation  			      = 1;
+        prach_freq_offset       			      = 2;
+        pucch_delta_shift       			      = 1;
+        pucch_nRB_CQI           			      = 1;
+        pucch_nCS_AN            			      = 0;
+        pucch_n1_AN             			      = 0;
+        pdsch_referenceSignalPower 			      =-29;
+        pdsch_p_b                  			      = 0;
+        pusch_n_SB                 			      = 1;
+        pusch_enable64QAM          			      = "DISABLE";
+        pusch_hoppingMode                                  = "interSubFrame";
+        pusch_hoppingOffset                                = 0;
+        pusch_groupHoppingEnabled  			      = "ENABLE";
+        pusch_groupAssignment      			      = 0;
+        pusch_sequenceHoppingEnabled		   	      = "DISABLE";
+        pusch_nDMRS1                                       = 1;
+        phich_duration                                     = "NORMAL";
+        phich_resource                                     = "ONESIXTH";
+        srs_enable                                         = "DISABLE";
+      /*  srs_BandwidthConfig                                =;
+        srs_SubframeConfig                                 =;
+        srs_ackNackST                                      =;
+        srs_MaxUpPts                                       =;*/
+
+        pusch_p0_Nominal                                   = -96;
+        pusch_alpha                                        = "AL1";
+        pucch_p0_Nominal                                   = -106;
+        msg3_delta_Preamble                                = 6;
+        pucch_deltaF_Format1                               = "deltaF2";
+        pucch_deltaF_Format1b                              = "deltaF3";
+        pucch_deltaF_Format2                               = "deltaF0";
+        pucch_deltaF_Format2a                              = "deltaF0";
+        pucch_deltaF_Format2b		    	      = "deltaF0";
+
+        rach_numberOfRA_Preambles                          = 64;
+        rach_preamblesGroupAConfig                         = "DISABLE";
+      /*
+        rach_sizeOfRA_PreamblesGroupA                      = ;
+        rach_messageSizeGroupA                             = ;
+        rach_messagePowerOffsetGroupB                      = ;
+      */
+        rach_powerRampingStep                              = 4;
+        rach_preambleInitialReceivedTargetPower            = -108;
+        rach_preambleTransMax                              = 10;
+        rach_raResponseWindowSize                          = 10;
+        rach_macContentionResolutionTimer                  = 48;
+        rach_maxHARQ_Msg3Tx                                = 4;
+
+        pcch_default_PagingCycle                           = 128;
+        pcch_nB                                            = "oneT";
+        bcch_modificationPeriodCoeff			      = 2;
+        ue_TimersAndConstants_t300			      = 1000;
+        ue_TimersAndConstants_t301			      = 1000;
+        ue_TimersAndConstants_t310			      = 1000;
+        ue_TimersAndConstants_t311			      = 10000;
+        ue_TimersAndConstants_n310			      = 20;
+        ue_TimersAndConstants_n311			      = 1;
+
+	ue_TransmissionMode				      = 1;
+      }
+    );
+
+
+    srb1_parameters :
+    {
+        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
+        timer_poll_retransmit    = 80;
+
+        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+        timer_reordering         = 35;
+
+        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+        timer_status_prohibit    = 0;
+
+        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+        poll_pdu                 =  4;
+
+        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+        poll_byte                =  99999;
+
+        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+        max_retx_threshold       =  4;
+    }
+
+    # ------- SCTP definitions
+    SCTP :
+    {
+        # Number of streams to use in input/output
+        SCTP_INSTREAMS  = 2;
+        SCTP_OUTSTREAMS = 2;
+    };
+
+    ////////// MME parameters:
+    mme_ip_address      = ( { ipv4       = "10.0.0.2";
+                              ipv6       = "192:168:30::17";
+                              active     = "yes";
+                              preference = "ipv4";
+                            }
+                          );
+
+    NETWORK_INTERFACES :
+    {
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "10.0.0.1/24";
+
+        ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "10.0.0.1/24";
+        ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.111/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
+    };
+
+    log_config :
+    {
+      global_log_level                      ="debug";
+      global_log_verbosity                  ="medium";
+      hw_log_level                          ="info";
+      hw_log_verbosity                      ="medium";
+      phy_log_level                         ="info";
+      phy_log_verbosity                     ="medium";
+      mac_log_level                         ="info";
+      mac_log_verbosity                     ="high";
+      rlc_log_level                         ="info";
+      rlc_log_verbosity                     ="medium";
+      pdcp_log_level                        ="info";
+      pdcp_log_verbosity                    ="medium";
+      rrc_log_level                         ="info";
+      rrc_log_verbosity                     ="medium";
+   };
+
+  }
+);
+MACRLCs = (
+	{
+        num_cc = 1;
+        tr_s_preference = "local_L1";
+        tr_n_preference = "local_RRC";
+        scheduler_mode = "fairRR";
+        puSch10xSnr     =  200;
+        puCch10xSnr     =  200;
+        }  
+);
+
+L1s = (
+    	{
+	num_cc = 1;
+	tr_n_preference = "local_mac";
+        }  
+);
+
+RUs = (
+    {		  
+       local_rf       = "yes"
+         nb_tx          = 1
+         nb_rx          = 1
+         att_tx         = 0
+         att_rx         = 0;
+         bands          = [38];
+         max_pdschReferenceSignalPower = -27;
+         max_rxgain                    = 115;
+         eNB_instances  = [0];
+
+    }
+);  
+
+NETWORK_CONTROLLER :
+{
+    FLEXRAN_ENABLED        = "no";
+    FLEXRAN_INTERFACE_NAME = "lo";
+    FLEXRAN_IPV4_ADDRESS   = "127.0.0.1";
+    FLEXRAN_PORT           = 2210;
+    FLEXRAN_CACHE          = "/mnt/oai_agent_cache";
+    FLEXRAN_AWAIT_RECONF   = "no";
+};
diff --git a/ci-scripts/conf_files/enb.band40.tm1.25PRB.FairScheduler.usrpb210.conf b/ci-scripts/conf_files/enb.band40.tm1.25PRB.FairScheduler.usrpb210.conf
new file mode 100644
index 0000000000000000000000000000000000000000..8a66e3131fe59550fde3a414fefe1d5f40c36512
--- /dev/null
+++ b/ci-scripts/conf_files/enb.band40.tm1.25PRB.FairScheduler.usrpb210.conf
@@ -0,0 +1,220 @@
+Active_eNBs = ( "eNB_Eurecom_LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+    ////////// Identification parameters:
+    eNB_ID    =  0xe00;
+
+    cell_type =  "CELL_MACRO_ENB";
+
+    eNB_name  =  "eNB_Eurecom_LTEBox";
+
+    // Tracking area code, 0x0000 and 0xfffe are reserved values
+    tracking_area_code  =  "1";
+
+    mobile_country_code =  "208";
+    mobile_network_code =  "92";
+
+       ////////// Physical parameters:
+
+    component_carriers = (
+      {
+        node_function                                         = "eNodeB_3GPP";
+        node_timing                                           = "synch_to_ext_device";
+        node_synch_ref                                        = 0;
+        frame_type					      = "TDD";
+        tdd_config 					      = 1;
+        tdd_config_s            			      = 0;
+        prefix_type             			      = "NORMAL";
+        eutra_band              			      = 40;
+        downlink_frequency      			      = 2350000000L;
+        uplink_frequency_offset 			      = 0;
+        Nid_cell					      = 0;
+        N_RB_DL                 			      = 25;
+        Nid_cell_mbsfn          			      = 0;
+        nb_antenna_ports          			      = 1;
+        nb_antennas_tx          			      = 1;
+        nb_antennas_rx          			      = 1;
+        tx_gain                                            = 90;
+        rx_gain                                            = 125;
+        prach_root              			      = 0;
+        prach_config_index      			      = 0;
+        prach_high_speed        			      = "DISABLE";
+        prach_zero_correlation  			      = 1;
+        prach_freq_offset       			      = 2;
+        pucch_delta_shift       			      = 1;
+        pucch_nRB_CQI           			      = 1;
+        pucch_nCS_AN            			      = 0;
+        pucch_n1_AN             			      = 0;
+        pdsch_referenceSignalPower 			      =-27;
+        pdsch_p_b                  			      = 0;
+        pusch_n_SB                 			      = 1;
+        pusch_enable64QAM          			      = "DISABLE";
+        pusch_hoppingMode                                  = "interSubFrame";
+        pusch_hoppingOffset                                = 0;
+        pusch_groupHoppingEnabled  			      = "ENABLE";
+        pusch_groupAssignment      			      = 0;
+        pusch_sequenceHoppingEnabled		   	      = "DISABLE";
+        pusch_nDMRS1                                       = 1;
+        phich_duration                                     = "NORMAL";
+        phich_resource                                     = "ONESIXTH";
+        srs_enable                                         = "DISABLE";
+      /*  srs_BandwidthConfig                                =;
+        srs_SubframeConfig                                 =;
+        srs_ackNackST                                      =;
+        srs_MaxUpPts                                       =;*/
+
+        pusch_p0_Nominal                                   = -96;
+        pusch_alpha                                        = "AL1";
+        pucch_p0_Nominal                                   = -106;
+        msg3_delta_Preamble                                = 6;
+        pucch_deltaF_Format1                               = "deltaF2";
+        pucch_deltaF_Format1b                              = "deltaF3";
+        pucch_deltaF_Format2                               = "deltaF0";
+        pucch_deltaF_Format2a                              = "deltaF0";
+        pucch_deltaF_Format2b		    	      = "deltaF0";
+
+        rach_numberOfRA_Preambles                          = 64;
+        rach_preamblesGroupAConfig                         = "DISABLE";
+      /*
+        rach_sizeOfRA_PreamblesGroupA                      = ;
+        rach_messageSizeGroupA                             = ;
+        rach_messagePowerOffsetGroupB                      = ;
+      */
+        rach_powerRampingStep                              = 4;
+        rach_preambleInitialReceivedTargetPower            = -108;
+        rach_preambleTransMax                              = 10;
+        rach_raResponseWindowSize                          = 10;
+        rach_macContentionResolutionTimer                  = 48;
+        rach_maxHARQ_Msg3Tx                                = 4;
+
+        pcch_default_PagingCycle                           = 128;
+        pcch_nB                                            = "oneT";
+        bcch_modificationPeriodCoeff			      = 2;
+        ue_TimersAndConstants_t300			      = 1000;
+        ue_TimersAndConstants_t301			      = 1000;
+        ue_TimersAndConstants_t310			      = 1000;
+        ue_TimersAndConstants_t311			      = 10000;
+        ue_TimersAndConstants_n310			      = 20;
+        ue_TimersAndConstants_n311			      = 1;
+
+	ue_TransmissionMode				      = 1;
+      }
+    );
+
+
+    srb1_parameters :
+    {
+        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
+        timer_poll_retransmit    = 80;
+
+        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+        timer_reordering         = 35;
+
+        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+        timer_status_prohibit    = 0;
+
+        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+        poll_pdu                 =  4;
+
+        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+        poll_byte                =  99999;
+
+        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+        max_retx_threshold       =  4;
+    }
+
+    # ------- SCTP definitions
+    SCTP :
+    {
+        # Number of streams to use in input/output
+        SCTP_INSTREAMS  = 2;
+        SCTP_OUTSTREAMS = 2;
+    };
+
+    ////////// MME parameters:
+    mme_ip_address      = ( { ipv4       = "10.0.0.2";
+                              ipv6       = "192:168:30::17";
+                              active     = "yes";
+                              preference = "ipv4";
+                            }
+                          );
+
+    NETWORK_INTERFACES :
+    {
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "10.0.0.1/24";
+
+        ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "10.0.0.1/24";
+        ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.111/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
+    };
+
+    log_config :
+    {
+      global_log_level                      ="debug";
+      global_log_verbosity                  ="medium";
+      hw_log_level                          ="info";
+      hw_log_verbosity                      ="medium";
+      phy_log_level                         ="info";
+      phy_log_verbosity                     ="medium";
+      mac_log_level                         ="info";
+      mac_log_verbosity                     ="high";
+      rlc_log_level                         ="info";
+      rlc_log_verbosity                     ="medium";
+      pdcp_log_level                        ="info";
+      pdcp_log_verbosity                    ="medium";
+      rrc_log_level                         ="info";
+      rrc_log_verbosity                     ="medium";
+   };
+
+  }
+);
+MACRLCs = (
+	{
+        num_cc = 1;
+        tr_s_preference = "local_L1";
+        tr_n_preference = "local_RRC";
+        scheduler_mode = "fairRR";
+        puSch10xSnr     =  200;
+        puCch10xSnr     =  200;
+        }  
+);
+
+L1s = (
+    	{
+	num_cc = 1;
+	tr_n_preference = "local_mac";
+        }  
+);
+
+RUs = (
+    {		  
+       local_rf       = "yes"
+         nb_tx          = 1
+         nb_rx          = 1
+         att_tx         = 0
+         att_rx         = 0;
+         bands          = [38];
+         max_pdschReferenceSignalPower = -27;
+         max_rxgain                    = 115;
+         eNB_instances  = [0];
+
+    }
+);  
+
+NETWORK_CONTROLLER :
+{
+    FLEXRAN_ENABLED        = "no";
+    FLEXRAN_INTERFACE_NAME = "lo";
+    FLEXRAN_IPV4_ADDRESS   = "127.0.0.1";
+    FLEXRAN_PORT           = 2210;
+    FLEXRAN_CACHE          = "/mnt/oai_agent_cache";
+    FLEXRAN_AWAIT_RECONF   = "no";
+};
diff --git a/ci-scripts/conf_files/enb.band40.tm1.50PRB.FairScheduler.usrpb210.conf b/ci-scripts/conf_files/enb.band40.tm1.50PRB.FairScheduler.usrpb210.conf
new file mode 100644
index 0000000000000000000000000000000000000000..ede864b73364125b15e647292657a74c559038b4
--- /dev/null
+++ b/ci-scripts/conf_files/enb.band40.tm1.50PRB.FairScheduler.usrpb210.conf
@@ -0,0 +1,220 @@
+Active_eNBs = ( "eNB_Eurecom_LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+    ////////// Identification parameters:
+    eNB_ID    =  0xe00;
+
+    cell_type =  "CELL_MACRO_ENB";
+
+    eNB_name  =  "eNB_Eurecom_LTEBox";
+
+    // Tracking area code, 0x0000 and 0xfffe are reserved values
+    tracking_area_code  =  "1";
+
+    mobile_country_code =  "208";
+    mobile_network_code =  "92";
+
+       ////////// Physical parameters:
+
+    component_carriers = (
+      {
+        node_function                                         = "eNodeB_3GPP";
+        node_timing                                           = "synch_to_ext_device";
+        node_synch_ref                                        = 0;
+        frame_type					      = "TDD";
+        tdd_config 					      = 1;
+        tdd_config_s            			      = 0;
+        prefix_type             			      = "NORMAL";
+        eutra_band              			      = 40;
+        downlink_frequency      			      = 2350000000L;
+        uplink_frequency_offset 			      = 0;
+        Nid_cell					      = 0;
+        N_RB_DL                 			      = 50;
+        Nid_cell_mbsfn          			      = 0;
+        nb_antenna_ports          			      = 1;
+        nb_antennas_tx          			      = 1;
+        nb_antennas_rx          			      = 1;
+        tx_gain                                            = 90;
+        rx_gain                                            = 125;
+        prach_root              			      = 0;
+        prach_config_index      			      = 0;
+        prach_high_speed        			      = "DISABLE";
+        prach_zero_correlation  			      = 1;
+        prach_freq_offset       			      = 2;
+        pucch_delta_shift       			      = 1;
+        pucch_nRB_CQI           			      = 1;
+        pucch_nCS_AN            			      = 0;
+        pucch_n1_AN             			      = 0;
+        pdsch_referenceSignalPower 			      =-27;
+        pdsch_p_b                  			      = 0;
+        pusch_n_SB                 			      = 1;
+        pusch_enable64QAM          			      = "DISABLE";
+        pusch_hoppingMode                                  = "interSubFrame";
+        pusch_hoppingOffset                                = 0;
+        pusch_groupHoppingEnabled  			      = "ENABLE";
+        pusch_groupAssignment      			      = 0;
+        pusch_sequenceHoppingEnabled		   	      = "DISABLE";
+        pusch_nDMRS1                                       = 1;
+        phich_duration                                     = "NORMAL";
+        phich_resource                                     = "ONESIXTH";
+        srs_enable                                         = "DISABLE";
+      /*  srs_BandwidthConfig                                =;
+        srs_SubframeConfig                                 =;
+        srs_ackNackST                                      =;
+        srs_MaxUpPts                                       =;*/
+
+        pusch_p0_Nominal                                   = -96;
+        pusch_alpha                                        = "AL1";
+        pucch_p0_Nominal                                   = -106;
+        msg3_delta_Preamble                                = 6;
+        pucch_deltaF_Format1                               = "deltaF2";
+        pucch_deltaF_Format1b                              = "deltaF3";
+        pucch_deltaF_Format2                               = "deltaF0";
+        pucch_deltaF_Format2a                              = "deltaF0";
+        pucch_deltaF_Format2b		    	      = "deltaF0";
+
+        rach_numberOfRA_Preambles                          = 64;
+        rach_preamblesGroupAConfig                         = "DISABLE";
+      /*
+        rach_sizeOfRA_PreamblesGroupA                      = ;
+        rach_messageSizeGroupA                             = ;
+        rach_messagePowerOffsetGroupB                      = ;
+      */
+        rach_powerRampingStep                              = 4;
+        rach_preambleInitialReceivedTargetPower            = -108;
+        rach_preambleTransMax                              = 10;
+        rach_raResponseWindowSize                          = 10;
+        rach_macContentionResolutionTimer                  = 48;
+        rach_maxHARQ_Msg3Tx                                = 4;
+
+        pcch_default_PagingCycle                           = 128;
+        pcch_nB                                            = "oneT";
+        bcch_modificationPeriodCoeff			      = 2;
+        ue_TimersAndConstants_t300			      = 1000;
+        ue_TimersAndConstants_t301			      = 1000;
+        ue_TimersAndConstants_t310			      = 1000;
+        ue_TimersAndConstants_t311			      = 10000;
+        ue_TimersAndConstants_n310			      = 20;
+        ue_TimersAndConstants_n311			      = 1;
+
+	ue_TransmissionMode				      = 1;
+      }
+    );
+
+
+    srb1_parameters :
+    {
+        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
+        timer_poll_retransmit    = 80;
+
+        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+        timer_reordering         = 35;
+
+        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+        timer_status_prohibit    = 0;
+
+        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+        poll_pdu                 =  4;
+
+        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+        poll_byte                =  99999;
+
+        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+        max_retx_threshold       =  4;
+    }
+
+    # ------- SCTP definitions
+    SCTP :
+    {
+        # Number of streams to use in input/output
+        SCTP_INSTREAMS  = 2;
+        SCTP_OUTSTREAMS = 2;
+    };
+
+    ////////// MME parameters:
+    mme_ip_address      = ( { ipv4       = "10.0.0.2";
+                              ipv6       = "192:168:30::17";
+                              active     = "yes";
+                              preference = "ipv4";
+                            }
+                          );
+
+    NETWORK_INTERFACES :
+    {
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "10.0.0.1/24";
+
+        ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "10.0.0.1/24";
+        ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.111/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
+    };
+
+    log_config :
+    {
+      global_log_level                      ="debug";
+      global_log_verbosity                  ="medium";
+      hw_log_level                          ="info";
+      hw_log_verbosity                      ="medium";
+      phy_log_level                         ="info";
+      phy_log_verbosity                     ="medium";
+      mac_log_level                         ="info";
+      mac_log_verbosity                     ="high";
+      rlc_log_level                         ="info";
+      rlc_log_verbosity                     ="medium";
+      pdcp_log_level                        ="info";
+      pdcp_log_verbosity                    ="medium";
+      rrc_log_level                         ="info";
+      rrc_log_verbosity                     ="medium";
+   };
+
+  }
+);
+MACRLCs = (
+	{
+        num_cc = 1;
+        tr_s_preference = "local_L1";
+        tr_n_preference = "local_RRC";
+        scheduler_mode = "fairRR";
+        puSch10xSnr     =  200;
+        puCch10xSnr     =  200;
+        }  
+);
+
+L1s = (
+    	{
+	num_cc = 1;
+	tr_n_preference = "local_mac";
+        }  
+);
+
+RUs = (
+    {		  
+       local_rf       = "yes"
+         nb_tx          = 1
+         nb_rx          = 1
+         att_tx         = 0
+         att_rx         = 0;
+         bands          = [38];
+         max_pdschReferenceSignalPower = -27;
+         max_rxgain                    = 115;
+         eNB_instances  = [0];
+
+    }
+);  
+
+NETWORK_CONTROLLER :
+{
+    FLEXRAN_ENABLED        = "no";
+    FLEXRAN_INTERFACE_NAME = "lo";
+    FLEXRAN_IPV4_ADDRESS   = "127.0.0.1";
+    FLEXRAN_PORT           = 2210;
+    FLEXRAN_CACHE          = "/mnt/oai_agent_cache";
+    FLEXRAN_AWAIT_RECONF   = "no";
+};
diff --git a/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf
index 2feb577f68b6807ec96bac78f7f0132fd771c325..37656de75527716462e60a62de7cf0cf32c2cbaa 100644
--- a/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf
+++ b/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf
@@ -33,7 +33,7 @@ eNBs =
       tdd_config_s            			      = 0;
       prefix_type             			      = "NORMAL";
       eutra_band              			      = 7;
-      downlink_frequency      			      = 2685000000L;
+      downlink_frequency      			      = 2680000000L;
       uplink_frequency_offset 			      = -120000000;
       Nid_cell					      = 0;
       N_RB_DL                 			      = 100;
@@ -183,12 +183,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.111/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.111/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.111/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
   }
 );
@@ -220,7 +222,7 @@ RUs = (
          att_rx         = 0;
          bands          = [7];
          max_pdschReferenceSignalPower = -27;
-         max_rxgain                    = 125;
+         max_rxgain                    = 115;
          eNB_instances  = [0];
 
     }
diff --git a/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf
index 38df1a28e50ed26c617bd333a8512fd17a69c0ba..01c1ca1428c5025cb37221914f84079403dfcc06 100644
--- a/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf
+++ b/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf
@@ -33,7 +33,7 @@ eNBs =
       tdd_config_s            			      = 0;
       prefix_type             			      = "NORMAL";
       eutra_band              			      = 7;
-      downlink_frequency      			      = 2685000000L;
+      downlink_frequency      			      = 2680000000L;
       uplink_frequency_offset 			      = -120000000;
       Nid_cell					      = 0;
       N_RB_DL                 			      = 25;
@@ -183,12 +183,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.111/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.111/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.111/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
   }
 );
@@ -220,7 +222,7 @@ RUs = (
          att_rx         = 0;
          bands          = [7];
          max_pdschReferenceSignalPower = -27;
-         max_rxgain                    = 125;
+         max_rxgain                    = 115;
          eNB_instances  = [0];
 
     }
diff --git a/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf
index 213f2bbcd36d2997468e7425194c0e7d99cb5583..eb5822cb22fcb6f98a48cd3a1fbf406869e1be80 100644
--- a/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf
+++ b/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf
@@ -33,7 +33,7 @@ eNBs =
       tdd_config_s            			      = 0;
       prefix_type             			      = "NORMAL";
       eutra_band              			      = 7;
-      downlink_frequency      			      = 2685000000L;
+      downlink_frequency      			      = 2680000000L;
       uplink_frequency_offset 			      = -120000000;
       Nid_cell					      = 0;
       N_RB_DL                 			      = 50;
@@ -183,12 +183,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.111/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.111/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.111/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
   }
 );
@@ -220,7 +222,7 @@ RUs = (
          att_rx         = 0;
          bands          = [7];
          max_pdschReferenceSignalPower = -27;
-         max_rxgain                    = 125;
+         max_rxgain                    = 115;
          eNB_instances  = [0];
 
     }
diff --git a/ci-scripts/conf_files/lte-basic-sim.conf b/ci-scripts/conf_files/lte-basic-sim.conf
new file mode 100644
index 0000000000000000000000000000000000000000..f0fab0bdcba24e59c043441a1b321c13825db24f
--- /dev/null
+++ b/ci-scripts/conf_files/lte-basic-sim.conf
@@ -0,0 +1,259 @@
+Active_eNBs = ( "eNB-Eurecom-LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+    ////////// Identification parameters:
+    eNB_ID    =  0xe00;
+
+    cell_type =  "CELL_MACRO_ENB";
+
+    eNB_name  =  "eNB-Eurecom-LTEBox";
+
+    // Tracking area code, 0x0000 and 0xfffe are reserved values
+    tracking_area_code  =  "1";
+
+    mobile_country_code =  "208";
+
+    mobile_network_code =  "93";
+
+    tr_s_preference     = "local_mac"
+
+    ////////// Physical parameters:
+
+    component_carriers = (
+      {
+      node_function             = "3GPP_eNODEB";
+      node_timing               = "synch_to_ext_device";
+      node_synch_ref            = 0;
+      frame_type					      = "FDD";
+      tdd_config 					      = 3;
+      tdd_config_s            			      = 0;
+      prefix_type             			      = "NORMAL";
+      eutra_band              			      = 7;
+      downlink_frequency      			      = 2680000000L;
+      uplink_frequency_offset 			      = -120000000;
+      Nid_cell					      = 0;
+      N_RB_DL                 			      = 25;
+      Nid_cell_mbsfn          			      = 0;
+      nb_antenna_ports                                = 1;
+      nb_antennas_tx          			      = 1;
+      nb_antennas_rx          			      = 1;
+      tx_gain                                            = 90;
+      rx_gain                                            = 125;
+      pbch_repetition                                 = "FALSE";
+      prach_root              			      = 0;
+      prach_config_index      			      = 0;
+      prach_high_speed        			      = "DISABLE";
+      prach_zero_correlation  			      = 1;
+      prach_freq_offset       			      = 2;
+      pucch_delta_shift       			      = 1;
+      pucch_nRB_CQI           			      = 0;
+      pucch_nCS_AN            			      = 0;
+      pucch_n1_AN             			      = 0;
+      pdsch_referenceSignalPower 			      = -27;
+      pdsch_p_b                  			      = 0;
+      pusch_n_SB                 			      = 1;
+      pusch_enable64QAM          			      = "DISABLE";
+      pusch_hoppingMode                                  = "interSubFrame";
+      pusch_hoppingOffset                                = 0;
+      pusch_groupHoppingEnabled  			      = "ENABLE";
+      pusch_groupAssignment      			      = 0;
+      pusch_sequenceHoppingEnabled		   	      = "DISABLE";
+      pusch_nDMRS1                                       = 1;
+      phich_duration                                     = "NORMAL";
+      phich_resource                                     = "ONESIXTH";
+      srs_enable                                         = "DISABLE";
+      /*  srs_BandwidthConfig                                =;
+      srs_SubframeConfig                                 =;
+      srs_ackNackST                                      =;
+      srs_MaxUpPts                                       =;*/
+
+      pusch_p0_Nominal                                   = -96;
+      pusch_alpha                                        = "AL1";
+      pucch_p0_Nominal                                   = -104;
+      msg3_delta_Preamble                                = 6;
+      pucch_deltaF_Format1                               = "deltaF2";
+      pucch_deltaF_Format1b                              = "deltaF3";
+      pucch_deltaF_Format2                               = "deltaF0";
+      pucch_deltaF_Format2a                              = "deltaF0";
+      pucch_deltaF_Format2b		    	      = "deltaF0";
+
+      rach_numberOfRA_Preambles                          = 64;
+      rach_preamblesGroupAConfig                         = "DISABLE";
+      /*
+      rach_sizeOfRA_PreamblesGroupA                      = ;
+      rach_messageSizeGroupA                             = ;
+      rach_messagePowerOffsetGroupB                      = ;
+      */
+      rach_powerRampingStep                              = 4;
+      rach_preambleInitialReceivedTargetPower            = -108;
+      rach_preambleTransMax                              = 10;
+      rach_raResponseWindowSize                          = 10;
+      rach_macContentionResolutionTimer                  = 48;
+      rach_maxHARQ_Msg3Tx                                = 4;
+
+      pcch_default_PagingCycle                           = 128;
+      pcch_nB                                            = "oneT";
+      bcch_modificationPeriodCoeff			      = 2;
+      ue_TimersAndConstants_t300			      = 1000;
+      ue_TimersAndConstants_t301			      = 1000;
+      ue_TimersAndConstants_t310			      = 1000;
+      ue_TimersAndConstants_t311			      = 10000;
+      ue_TimersAndConstants_n310			      = 20;
+      ue_TimersAndConstants_n311			      = 1;
+      ue_TransmissionMode                                    = 1;
+
+      //Parameters for SIB18
+      rxPool_sc_CP_Len                                       = "normal";
+      rxPool_sc_Period                                       = "sf40";
+      rxPool_data_CP_Len                                     = "normal";
+      rxPool_ResourceConfig_prb_Num                          = 20;
+      rxPool_ResourceConfig_prb_Start                        = 5;
+      rxPool_ResourceConfig_prb_End                          = 44;
+      rxPool_ResourceConfig_offsetIndicator_present          = "prSmall";
+      rxPool_ResourceConfig_offsetIndicator_choice           = 0;
+      rxPool_ResourceConfig_subframeBitmap_present           = "prBs40";
+      rxPool_ResourceConfig_subframeBitmap_choice_bs_buf              = "00000000000000000000";
+      rxPool_ResourceConfig_subframeBitmap_choice_bs_size             = 5;
+      rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused      = 0;
+/*    rxPool_dataHoppingConfig_hoppingParameter                       = 0;
+      rxPool_dataHoppingConfig_numSubbands                            = "ns1";
+      rxPool_dataHoppingConfig_rbOffset                               = 0;
+      rxPool_commTxResourceUC-ReqAllowed                              = "TRUE";
+*/
+      // Parameters for SIB19
+      discRxPool_cp_Len                                               = "normal"
+      discRxPool_discPeriod                                           = "rf32"
+      discRxPool_numRetx                                              = 1;
+      discRxPool_numRepetition                                        = 2;
+      discRxPool_ResourceConfig_prb_Num                               = 5;
+      discRxPool_ResourceConfig_prb_Start                             = 3;
+      discRxPool_ResourceConfig_prb_End                               = 21;
+      discRxPool_ResourceConfig_offsetIndicator_present               = "prSmall";
+      discRxPool_ResourceConfig_offsetIndicator_choice                = 0;
+      discRxPool_ResourceConfig_subframeBitmap_present                = "prBs40";
+      discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf          = "f0ffffffff";
+      discRxPool_ResourceConfig_subframeBitmap_choice_bs_size         = 5;
+      discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused  = 0;
+
+      }
+    );
+
+
+    srb1_parameters :
+    {
+        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
+        timer_poll_retransmit    = 80;
+
+        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+        timer_reordering         = 35;
+
+        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+        timer_status_prohibit    = 0;
+
+        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+        poll_pdu                 =  4;
+
+        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+        poll_byte                =  99999;
+
+        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+        max_retx_threshold       =  4;
+    }
+
+    # ------- SCTP definitions
+    SCTP :
+    {
+        # Number of streams to use in input/output
+        SCTP_INSTREAMS  = 2;
+        SCTP_OUTSTREAMS = 2;
+    };
+
+
+    ////////// MME parameters:
+    mme_ip_address      = ( { ipv4       = "CI_MME_IP_ADDR";
+                              ipv6       = "192:168:30::17";
+                              active     = "yes";
+                              preference = "ipv4";
+                            }
+                          );
+
+    NETWORK_INTERFACES :
+    {
+
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "CI_ENB_IP_ADDR";
+        ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "CI_ENB_IP_ADDR";
+        ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "CI_ENB_IP_ADDR";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
+    };
+  }
+);
+
+MACRLCs = (
+	{
+	num_cc = 1;
+	tr_s_preference = "local_L1";
+	tr_n_preference = "local_RRC";
+	phy_test_mode = 0;
+        puSch10xSnr     =  200;
+        puCch10xSnr     =  200;
+        }  
+);
+
+L1s = (
+    	{
+	num_cc = 1;
+	tr_n_preference = "local_mac";
+        }  
+);
+
+RUs = (
+    {		  
+       local_rf       = "yes"
+         nb_tx          = 1
+         nb_rx          = 1
+         att_tx         = 0
+         att_rx         = 0;
+         bands          = [7];
+         max_pdschReferenceSignalPower = -27;
+         max_rxgain                    = 125;
+         eNB_instances  = [0];
+
+    }
+);  
+
+NETWORK_CONTROLLER :
+{
+    FLEXRAN_ENABLED        = "no";
+    FLEXRAN_INTERFACE_NAME = "lo";
+    FLEXRAN_IPV4_ADDRESS   = "127.0.0.1";
+    FLEXRAN_PORT           = 2210;
+    FLEXRAN_CACHE          = "/mnt/oai_agent_cache";
+    FLEXRAN_AWAIT_RECONF   = "no";
+};
+
+     log_config :
+     {
+       global_log_level                      ="info";
+       global_log_verbosity                  ="medium";
+       hw_log_level                          ="info";
+       hw_log_verbosity                      ="medium";
+       phy_log_level                         ="info";
+       phy_log_verbosity                     ="medium";
+       mac_log_level                         ="info";
+       mac_log_verbosity                     ="high";
+       rlc_log_level                         ="info";
+       rlc_log_verbosity                     ="medium";
+       pdcp_log_level                        ="info";
+       pdcp_log_verbosity                    ="medium";
+       rrc_log_level                         ="info";
+       rrc_log_verbosity                     ="medium";
+    };
+
diff --git a/ci-scripts/createVM.sh b/ci-scripts/createVM.sh
index 1c3099e8435bc6aaee68de99fbb40063e3ad659b..f972a921ac8bd85117f16d2c77377779ed7b8a1b 100755
--- a/ci-scripts/createVM.sh
+++ b/ci-scripts/createVM.sh
@@ -80,6 +80,7 @@ JOB_NAME=XX
 BUILD_ID=XX
 VM_NAME=ci-enb-usrp
 VM_MEMORY=2048
+VM_CPU=4
 
 while [[ $# -gt 0 ]]
 do
@@ -107,6 +108,7 @@ case $key in
     ;;
     -v2)
     VM_NAME=ci-basic-sim
+    VM_MEMORY=8192
     shift
     ;;
     -v3)
@@ -116,6 +118,7 @@ case $key in
     -v4)
     VM_NAME=ci-cppcheck
     VM_MEMORY=4096
+    VM_CPU=4
     shift
     ;;
     -v7)
@@ -134,6 +137,7 @@ case $key in
         ;;
         basic-sim)
         VM_NAME=ci-basic-sim
+        VM_MEMORY=8192
         ;;
         phy-sim)
         VM_NAME=ci-phy-sim
@@ -141,6 +145,7 @@ case $key in
         cppcheck)
         VM_NAME=ci-cppcheck
         VM_MEMORY=4096
+        VM_CPU=4
         ;;
         enb-ethernet)
         VM_NAME=ci-enb-ethernet
@@ -178,11 +183,12 @@ VM_CMDS=${VM_NAME}_cmds.txt
 
 echo "VM_NAME             = $VM_NAME"
 echo "VM_MEMORY           = $VM_MEMORY MBytes"
+echo "VM_CPU              = $VM_CPU"
 
 echo "############################################################"
 echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base"
 echo "############################################################"
-uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu 4 --unsafe-caching --template ci-scripts/template-host.xml
+uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu $VM_CPU --unsafe-caching --template ci-scripts/template-host.xml
 echo "Waiting for VM to be started"
 uvt-kvm wait $VM_NAME --insecure
 
diff --git a/ci-scripts/main.py b/ci-scripts/main.py
index 861e6f3e4e6ce6cb8350acbc80ebe5b22de104cf..f210fd451823fd2abccb5fdbae61348a68476c74 100644
--- a/ci-scripts/main.py
+++ b/ci-scripts/main.py
@@ -45,7 +45,7 @@ import xml.etree.ElementTree as ET
 import logging
 import datetime
 import signal
-from multiprocessing import Process,Lock
+from multiprocessing import Process, Lock, SimpleQueue
 logging.basicConfig(
 	level=logging.DEBUG,
 	format="[%(asctime)s] %(name)s:%(levelname)s: %(message)s"
@@ -59,6 +59,7 @@ class SSHConnection():
 		self.eNBIPAddress = ''
 		self.eNBRepository = ''
 		self.eNBBranch = ''
+		self.eNB_AllowMerge = False
 		self.eNBCommitID = ''
 		self.eNBUserName = ''
 		self.eNBPassword = ''
@@ -80,8 +81,13 @@ class SSHConnection():
 		self.ping_packetloss_threshold = ''
 		self.iperf_args = ''
 		self.iperf_packetloss_threshold = ''
+		self.iperf_profile = ''
 		self.UEDevices = []
 		self.UEIPAddresses = []
+		self.htmlFile = ''
+		self.htmlHeaderCreated = False
+		self.htmlFooterCreated = False
+		self.htmlUEConnected = 0
 
 	def open(self, ipaddress, username, password):
 		self.ssh = pexpect.spawn('ssh', [username + '@' + ipaddress], timeout = 5)
@@ -148,6 +154,34 @@ class SSHConnection():
 		else:
 			logging.debug('\u001B[1;37;41m Unexpected Others \u001B[0m')
 
+	def copy(self, ipaddress, username, password, source, destination):
+		logging.debug('scp '+ username + '@' + ipaddress + ':' + source + ' ' + destination)
+		scp_spawn = pexpect.spawn('scp '+ username + '@' + ipaddress + ':' + source + ' ' + destination, timeout = 5)
+		scp_response = scp_spawn.expect(['Are you sure you want to continue connecting (yes/no)?', 'password:', pexpect.EOF, pexpect.TIMEOUT])
+		if scp_response == 0:
+			scp_spawn.sendline('yes')
+			scp_spawn.expect('password:')
+			scp_spawn.sendline(password)
+			scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
+			if scp_response == 0:
+				pass
+			else:
+				logging.debug('1 - scp_response = ' + str(scp_response))
+				sys.exit('SCP failed')
+		elif scp_response == 1:
+			scp_spawn.sendline(password)
+			scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
+			if scp_response == 0 or scp_response == 3:
+				pass
+			else:
+				logging.debug('2 - scp_response = ' + str(scp_response))
+				sys.exit('SCP failed')
+		elif scp_response == 2:
+			pass
+		else:
+			logging.debug('3 - scp_response = ' + str(scp_response))
+			sys.exit('SCP failed')
+
 	def BuildeNB(self):
 		if self.eNBIPAddress == '' or self.eNBRepository == '' or self.eNBBranch == '' or self.eNBUserName == '' or self.eNBPassword == '' or self.eNBSourceCodePath == '':
 			Usage()
@@ -165,8 +199,9 @@ class SSHConnection():
 			self.command('git checkout -f ' + self.eNBCommitID, '\$', 5)
 		# if the branch is not develop, then it is a merge request and we need to do 
 		# the potential merge. Note that merge conflicts should already been checked earlier
-		if (self.eNBBranch != 'develop') and (self.eNBBranch != 'origin/develop'):
-			self.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
+		if (self.eNB_AllowMerge):
+			if (self.eNBBranch != 'develop') and (self.eNBBranch != 'origin/develop'):
+				self.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
 		self.command('source oaienv', '\$', 5)
 		self.command('cd cmake_targets', '\$', 5)
 		self.command('mkdir -p  log', '\$', 5)
@@ -176,6 +211,7 @@ class SSHConnection():
 		self.command('echo ' + self.eNBPassword + ' | sudo -S mv log/* ' + 'build_log_' + SSH.testCase_id, '\$', 5)
 		self.command('echo ' + self.eNBPassword + ' | sudo -S mv compile_oai_enb.log ' + 'build_log_' + SSH.testCase_id, '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow(self.Build_eNB_args, 'OK', 0)
 
 	def InitializeHSS(self):
 		if self.EPCIPAddress == '' or self.EPCUserName == '' or self.EPCPassword == '' or self.EPCSourceCodePath == '' or self.EPCType == '':
@@ -196,6 +232,7 @@ class SSHConnection():
 			self.command('echo ' + self.EPCPassword + ' | sudo -S rm -f hss.log daemon.log', '\$', 5)
 			self.command('echo ' + self.EPCPassword + ' | sudo -S echo "Starting sudo session" && sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real  ', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow(self.EPCType, 'OK', 0)
 
 	def InitializeMME(self):
 		if self.EPCIPAddress == '' or self.EPCUserName == '' or self.EPCPassword == '' or self.EPCSourceCodePath == '' or self.EPCType == '':
@@ -217,6 +254,7 @@ class SSHConnection():
 			self.command('cd /opt/ltebox/tools', '\$', 5)
 			self.command('echo ' + self.EPCPassword + ' | sudo -S ./start_mme', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow(self.EPCType, 'OK', 0)
 
 	def InitializeSPGW(self):
 		if self.EPCIPAddress == '' or self.EPCUserName == '' or self.EPCPassword == '' or self.EPCSourceCodePath == '' or self.EPCType == '':
@@ -232,29 +270,43 @@ class SSHConnection():
 			self.command('cd /opt/ltebox/tools', '\$', 5)
 			self.command('echo ' + self.EPCPassword + ' | sudo -S ./start_xGw', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow(self.EPCType, 'OK', 0)
 
 	def InitializeeNB(self):
 		if self.eNBIPAddress == '' or self.eNBUserName == '' or self.eNBPassword == '' or self.eNBSourceCodePath == '':
 			Usage()
 			sys.exit('Insufficient Parameter')
 		initialize_eNB_flag = True
-		self.CheckProcessExist(initialize_eNB_flag)
+		pStatus = self.CheckProcessExist(initialize_eNB_flag)
+		if (pStatus < 0):
+			self.CreateHtmlTestRow(self.Initialize_eNB_args, 'KO', pStatus)
+			self.CreateHtmlFooter()
+			sys.exit(1)
 		self.open(self.eNBIPAddress, self.eNBUserName, self.eNBPassword)
 		self.command('cd ' + self.eNBSourceCodePath, '\$', 5)
 		# Initialize_eNB_args usually start with -O and followed by the location in repository
 		full_config_file = self.Initialize_eNB_args.replace('-O ','')
-		config_path, config_file = os.path.split(full_config_file)
+		extIdx = full_config_file.find('.conf')
+		if (extIdx > 0):
+			extra_options = full_config_file[extIdx + 5:]
+			full_config_file = full_config_file[:extIdx + 5]
+			config_path, config_file = os.path.split(full_config_file)
+		else:
+			sys.exit('Insufficient Parameter')
 		ci_full_config_file = config_path + '/ci-' + config_file
 		# Make a copy and adapt to EPC / eNB IP addresses
 		self.command('cp ' + full_config_file + ' ' + ci_full_config_file, '\$', 5)
 		self.command('sed -i -e \'s/mme_ip_address.*$/mme_ip_address      = ( { ipv4       = "' + self.EPCIPAddress + '";/\' ' + ci_full_config_file, '\$', 2);
 		self.command('sed -i -e \'s/ENB_IPV4_ADDRESS_FOR_S1_MME.*$/ENB_IPV4_ADDRESS_FOR_S1_MME              = "' + self.eNBIPAddress + '";/\' ' + ci_full_config_file, '\$', 2);
 		self.command('sed -i -e \'s/ENB_IPV4_ADDRESS_FOR_S1U.*$/ENB_IPV4_ADDRESS_FOR_S1U                 = "' + self.eNBIPAddress + '";/\' ' + ci_full_config_file, '\$', 2);
+		self.command('sed -i -e \'s/ENB_IPV4_ADDRESS_FOR_X2C.*$/ENB_IPV4_ADDRESS_FOR_X2C                 = "' + self.eNBIPAddress + '";/\' ' + ci_full_config_file, '\$', 2);
 		# Launch eNB with the modified config file
 		self.command('source oaienv', '\$', 5)
 		self.command('cd cmake_targets', '\$', 5)
-		# Replacing with a nohup and a direct redirection of stdout to a file
-		self.command('echo ' + self.eNBPassword + ' | nohup sudo -S -E stdbuf -o0 ./lte_build_oai/build/lte-softmodem -O ' + self.eNBSourceCodePath + '/' + ci_full_config_file + ' > enb_' + SSH.testCase_id + '.log 2>&1 &', '\$', 5)
+		self.command('echo "./lte_build_oai/build/lte-softmodem -O ' + self.eNBSourceCodePath + '/' + ci_full_config_file + extra_options + '" > ./my-lte-softmodem-run.sh ', '\$', 5)
+		self.command('chmod 775 ./my-lte-softmodem-run.sh ', '\$', 5)
+		self.command('echo ' + self.eNBPassword + ' | sudo -S rm -Rf enb_' + SSH.testCase_id + '.log', '\$', 5)
+		self.command('echo ' + self.eNBPassword + ' | sudo -S -E daemon --inherit --unsafe --name=enb_daemon --chdir=' + self.eNBSourceCodePath + '/cmake_targets -o ' + self.eNBSourceCodePath + '/cmake_targets/enb_' + SSH.testCase_id + '.log ./my-lte-softmodem-run.sh', '\$', 5)
 		time.sleep(6)
 		doLoop = True
 		loopCounter = 10
@@ -262,16 +314,35 @@ class SSHConnection():
 			loopCounter = loopCounter - 1
 			if (loopCounter == 0):
 				doLoop = False
-				logging.debug('\u001B[1;37;41m Starting eNB Failed -- taking too much time \u001B[0m')
-				sys.exit(1)
-			self.command('stdbuf -o0 cat enb_' + SSH.testCase_id + '.log', '\$', 10)
-			result = re.search('got sync', str(self.ssh.before))
-			if result is None:
-				time.sleep(6)
+				# Checking if process is still alive
+				#self.command('stdbuf -o0 ps -aux | grep -v grep | grep --color=never lte-softmodem', '\$', 5)
+				#result = re.search('lte-softmodem', str(self.ssh.before))
+				#if result is None:
+				#	self.command('rsync -v enb_' + SSH.testCase_id + '.log enb_' + SSH.testCase_id + '.txt; stdbuf -o0 cat enb_' + SSH.testCase_id + '.log | egrep --color=never -i "segmentation fault"', '\$', 5)
+				#	result = re.search('egmentation fault', str(self.ssh.before))
+				#	logging.debug('\u001B[1;37;41m eNB process is already down \u001B[0m')
+				#	if result is not None:
+				#		logging.debug('\u001B[1;37;41m Segmentation fault \u001B[0m')
+				#	logging.debug(str(self.ssh.before))
+				#	self.CreateHtmlTestRow('-O ' + config_file + extra_options, 'KO', 0)
+				#	self.CreateHtmlFooter()
+				#	self.close()
+				#	sys.exit(1)
+				logging.debug('\u001B[1;30;43m eNB logging system did not show got sync! See with attach later \u001B[0m')
+				self.CreateHtmlTestRow('-O ' + config_file + extra_options, 'eNB not showing got sync!', 0)
+				# Not getting got sync is bypassed for the moment
+				#sys.exit(1)
 			else:
-				doLoop = False
-				logging.debug('\u001B[1m Initialize eNB Completed\u001B[0m')
+				self.command('rsync -v enb_' + SSH.testCase_id + '.log enb_' + SSH.testCase_id + '.txt; stdbuf -o0 cat enb_' + SSH.testCase_id + '.log | grep --color=never -i sync', '\$', 4)
+				result = re.search('got sync', str(self.ssh.before))
+				if result is None:
+					time.sleep(6)
+				else:
+					doLoop = False
+					self.CreateHtmlTestRow('-O ' + config_file + extra_options, 'OK', 0)
+					logging.debug('\u001B[1m Initialize eNB Completed\u001B[0m')
 
+		self.command('rm -f enb_' + SSH.testCase_id + '.txt', '\$', 5)
 		self.close()
 
 	def InitializeUE_common(self, device_id):
@@ -302,22 +373,34 @@ class SSHConnection():
 			multi_jobs.append(p)
 		for job in multi_jobs:
 			job.join()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
-	def AttachUE_common(self, device_id):
+	def AttachUE_common(self, device_id, statusQueue, lock):
 		try:
 			self.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword)
 			self.command('stdbuf -o0 adb -s ' + device_id + ' shell /data/local/tmp/on', '\$', 60)
 			time.sleep(2)
-			count = 45
+			max_count = 45
+			count = max_count
 			while count > 0:
 				self.command('stdbuf -o0 adb -s ' + device_id + ' shell dumpsys telephony.registry | grep mDataConnectionState', '\$', 15)
 				result = re.search('mDataConnectionState.*=(?P<state>[0-9\-]+)', str(self.ssh.before))
 				if result is None:
 					logging.debug('\u001B[1;37;41m mDataConnectionState Not Found! \u001B[0m')
-					sys.exit(1)
+					lock.acquire()
+					statusQueue.put(-1)
+					statusQueue.put(device_id)
+					statusQueue.put('mDataConnectionState Not Found!')
+					lock.release()
+					break
 				mDataConnectionState = int(result.group('state'))
 				if mDataConnectionState == 2:
 					logging.debug('\u001B[1mUE (' + device_id + ') Attach Completed\u001B[0m')
+					lock.acquire()
+					statusQueue.put(max_count - count)
+					statusQueue.put(device_id)
+					statusQueue.put('Attach Completed')
+					lock.release()
 					break
 				count = count - 1
 				if count == 15 or count == 30:
@@ -326,11 +409,15 @@ class SSHConnection():
 					time.sleep(0.5)
 					self.command('stdbuf -o0 adb -s ' + device_id + ' shell /data/local/tmp/on', '\$', 60)
 					time.sleep(0.5)
-				logging.debug('\u001B[1mWait UE (' + device_id + ') a second until mDataConnectionState=2 (' + str(45-count) + ' times)\u001B[0m')
+				logging.debug('\u001B[1mWait UE (' + device_id + ') a second until mDataConnectionState=2 (' + str(max_count-count) + ' times)\u001B[0m')
 				time.sleep(1)
 			if count == 0:
 				logging.debug('\u001B[1;37;41m UE (' + device_id + ') Attach Failed \u001B[0m')
-				sys.exit(1)
+				lock.acquire()
+				statusQueue.put(-1)
+				statusQueue.put(device_id)
+				statusQueue.put('Attach Failed')
+				lock.release()
 			self.close()
 		except:
 			os.kill(os.getppid(),signal.SIGUSR1)
@@ -340,16 +427,46 @@ class SSHConnection():
 			Usage()
 			sys.exit('Insufficient Parameter')
 		initialize_eNB_flag = False
-		self.CheckProcessExist(initialize_eNB_flag)
+		pStatus = self.CheckProcessExist(initialize_eNB_flag)
+		if (pStatus < 0):
+			self.CreateHtmlTestRow('N/A', 'KO', pStatus)
+			self.CreateHtmlFooter()
+			sys.exit(1)
 		multi_jobs = []
+		status_queue = SimpleQueue()
+		lock = Lock()
 		for device_id in self.UEDevices:
-			p = Process(target = SSH.AttachUE_common, args = (device_id,))
+			p = Process(target = SSH.AttachUE_common, args = (device_id, status_queue, lock,))
 			p.daemon = True
 			p.start()
 			multi_jobs.append(p)
 		for job in multi_jobs:
 			job.join()
 
+		if (status_queue.empty()):
+			self.CreateHtmlTestRow('N/A', 'KO', 0)
+			sys.exit(1)
+		else:
+			attach_status = True
+			html_queue = SimpleQueue()
+			while (not status_queue.empty()):
+				count = status_queue.get()
+				if (count < 0):
+					attach_status = False
+				device_id = status_queue.get()
+				message = status_queue.get()
+				if (count < 0):
+					html_cell = "<pre>UE (" + device_id + ")\n" + message + "</pre>"
+				else:
+					html_cell = "<pre>UE (" + device_id + ")\n" + message + ' in ' + str(count + 2) + ' seconds</pre>'
+				html_queue.put(html_cell)
+			if (attach_status):
+				self.CreateHtmlTestRowQueue('N/A', 'OK', len(self.UEDevices), html_queue)
+			else:
+				self.CreateHtmlTestRowQueue('N/A', 'KO', len(self.UEDevices), html_queue)
+				self.CreateHtmlFooter()
+				sys.exit(1)
+
 	def DetachUE_common(self, device_id):
 		try:
 			self.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword)
@@ -364,7 +481,11 @@ class SSHConnection():
 			Usage()
 			sys.exit('Insufficient Parameter')
 		initialize_eNB_flag = False
-		self.CheckProcessExist(initialize_eNB_flag)
+		pStatus = self.CheckProcessExist(initialize_eNB_flag)
+		if (pStatus < 0):
+			self.CreateHtmlTestRow('N/A', 'KO', pStatus)
+			self.CreateHtmlFooter()
+			sys.exit(1)
 		multi_jobs = []
 		for device_id in self.UEDevices:
 			p = Process(target = SSH.DetachUE_common, args = (device_id,))
@@ -373,6 +494,7 @@ class SSHConnection():
 			multi_jobs.append(p)
 		for job in multi_jobs:
 			job.join()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def RebootUE_common(self, device_id):
 		try:
@@ -418,7 +540,11 @@ class SSHConnection():
 			Usage()
 			sys.exit('Insufficient Parameter')
 		initialize_eNB_flag = False
-		self.CheckProcessExist(initialize_eNB_flag)
+		pStatus = self.CheckProcessExist(initialize_eNB_flag)
+		if (pStatus < 0):
+			self.CreateHtmlTestRow('N/A', 'KO', pStatus)
+			self.CreateHtmlFooter()
+			sys.exit(1)
 		multi_jobs = []
 		for device_id in self.UEDevices:
 			p = Process(target = SSH.RebootUE_common, args = (device_id,))
@@ -427,6 +553,7 @@ class SSHConnection():
 			multi_jobs.append(p)
 		for job in multi_jobs:
 			job.join()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def GetAllUEDevices(self, terminate_ue_flag):
 		if self.ADBIPAddress == '' or self.ADBUserName == '' or self.ADBPassword == '':
@@ -462,7 +589,7 @@ class SSHConnection():
 			self.UEIPAddresses.append(UE_IPAddress)
 		self.close()
 
-	def Ping_common(self, lock, UE_IPAddress, device_id):
+	def Ping_common(self, lock, UE_IPAddress, device_id,statusQueue):
 		try:
 			self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
 			self.command('cd ' + self.EPCSourceCodePath, '\$', 5)
@@ -471,32 +598,65 @@ class SSHConnection():
 			self.command('stdbuf -o0 ping ' + self.ping_args + ' ' + UE_IPAddress + ' 2>&1 | stdbuf -o0 tee -a ping_' + SSH.testCase_id + '_' + device_id + '.log', '\$', int(ping_time[0])*1.5)
 			result = re.search(', (?P<packetloss>[0-9\.]+)% packet loss, time [0-9\.]+ms', str(self.ssh.before))
 			if result is None:
-				logging.debug('\u001B[1;37;41m Packet Loss Not Found! \u001B[0m')
-				sys.exit(1)
+				message = 'Packet Loss Not Found!'
+				logging.debug('\u001B[1;37;41m ' + message + ' \u001B[0m')
+				lock.acquire()
+				statusQueue.put(-1)
+				statusQueue.put(device_id)
+				statusQueue.put(message)
+				lock.release()
+				return
 			packetloss = result.group('packetloss')
 			if float(packetloss) == 100:
-				logging.debug('\u001B[1;37;41m Packet Loss is 100% \u001B[0m')
-				sys.exit(1)
+				message = 'Packet Loss is 100%'
+				logging.debug('\u001B[1;37;41m ' + message + ' \u001B[0m')
+				lock.acquire()
+				statusQueue.put(-1)
+				statusQueue.put(device_id)
+				statusQueue.put(message)
+				lock.release()
+				return
 			result = re.search('rtt min\/avg\/max\/mdev = (?P<rtt_min>[0-9\.]+)\/(?P<rtt_avg>[0-9\.]+)\/(?P<rtt_max>[0-9\.]+)\/[0-9\.]+ ms', str(self.ssh.before))
 			if result is None:
-				logging.debug('\u001B[1;37;41m Ping RTT_Min RTT_Avg RTT_Max Not Found! \u001B[0m')
-				sys.exit(1)
+				message = 'Ping RTT_Min RTT_Avg RTT_Max Not Found!'
+				logging.debug('\u001B[1;37;41m ' + message + ' \u001B[0m')
+				lock.acquire()
+				statusQueue.put(-1)
+				statusQueue.put(device_id)
+				statusQueue.put(message)
+				lock.release()
+				return
 			rtt_min = result.group('rtt_min')
 			rtt_avg = result.group('rtt_avg')
 			rtt_max = result.group('rtt_max')
+			pal_msg = 'Packet Loss : ' + packetloss + '%'
+			min_msg = 'RTT(Min)    : ' + rtt_min + ' ms'
+			avg_msg = 'RTT(Avg)    : ' + rtt_avg + ' ms'
+			max_msg = 'RTT(Max)    : ' + rtt_max + ' ms'
 			lock.acquire()
 			logging.debug('\u001B[1;37;44m ping result (' + UE_IPAddress + ') \u001B[0m')
-			logging.debug('\u001B[1;34m    Packet Loss : ' + packetloss + '%\u001B[0m')
-			logging.debug('\u001B[1;34m    RTT(Min)    : ' + rtt_min + ' ms' + '\u001B[0m')
-			logging.debug('\u001B[1;34m    RTT(Avg)    : ' + rtt_avg + ' ms' + '\u001B[0m')
-			logging.debug('\u001B[1;34m    RTT(Max)    : ' + rtt_max + ' ms' + '\u001B[0m')
-			lock.release()
+			logging.debug('\u001B[1;34m    ' + pal_msg + '\u001B[0m')
+			logging.debug('\u001B[1;34m    ' + min_msg + '\u001B[0m')
+			logging.debug('\u001B[1;34m    ' + avg_msg + '\u001B[0m')
+			logging.debug('\u001B[1;34m    ' + max_msg + '\u001B[0m')
+			qMsg = pal_msg + '\n' + min_msg + '\n' + avg_msg + '\n' + max_msg
+			packetLossOK = True
 			if packetloss is not None:
 				if float(packetloss) > float(self.ping_packetloss_threshold):
+					qMsg += '\nPacket Loss too high'
 					logging.debug('\u001B[1;37;41m Packet Loss too high \u001B[0m')
-					sys.exit(1)
+					packetLossOK = False
 				elif float(packetloss) > 0:
+					qMsg += '\nPacket Loss is not 0%'
 					logging.debug('\u001B[1;37;43m Packet Loss is not 0% \u001B[0m')
+			if (packetLossOK):
+				statusQueue.put(0)
+			else:
+				statusQueue.put(-1)
+			statusQueue.put(device_id)
+			statusQueue.put(UE_IPAddress)
+			statusQueue.put(qMsg)
+			lock.release()
 			self.close()
 		except:
 			os.kill(os.getppid(),signal.SIGUSR1)
@@ -506,14 +666,19 @@ class SSHConnection():
 			Usage()
 			sys.exit('Insufficient Parameter')
 		initialize_eNB_flag = False
-		self.CheckProcessExist(initialize_eNB_flag)
+		pStatus = self.CheckProcessExist(initialize_eNB_flag)
+		if (pStatus < 0):
+			self.CreateHtmlTestRow(self.ping_args, 'KO', pStatus)
+			self.CreateHtmlFooter()
+			sys.exit(1)
 		self.GetAllUEIPAddresses()
 		multi_jobs = []
 		i = 0
 		lock = Lock()
+		status_queue = SimpleQueue()
 		for UE_IPAddress in self.UEIPAddresses:
 			device_id = self.UEDevices[i]
-			p = Process(target = SSH.Ping_common, args = (lock,UE_IPAddress,device_id,))
+			p = Process(target = SSH.Ping_common, args = (lock,UE_IPAddress,device_id,status_queue,))
 			p.daemon = True
 			p.start()
 			multi_jobs.append(p)
@@ -521,103 +686,391 @@ class SSHConnection():
 		for job in multi_jobs:
 			job.join()
 
-	def Iperf_common(self, lock, UE_IPAddress, device_id, ue_num):
+		if (status_queue.empty()):
+			self.CreateHtmlTestRow(self.ping_args, 'KO', 0)
+			self.CreateHtmlFooter()
+			sys.exit(1)
+		else:
+			ping_status = True
+			html_queue = SimpleQueue()
+			while (not status_queue.empty()):
+				count = status_queue.get()
+				if (count < 0):
+					ping_status = False
+				device_id = status_queue.get()
+				ip_addr = status_queue.get()
+				message = status_queue.get()
+				html_cell = "<pre>UE (" + device_id + ")\nIP Address  : " + ip_addr + "\n" + message + "</pre>"
+				html_queue.put(html_cell)
+			if (ping_status):
+				self.CreateHtmlTestRowQueue(self.ping_args, 'OK', len(self.UEDevices), html_queue)
+			else:
+				self.CreateHtmlTestRowQueue(self.ping_args, 'KO', len(self.UEDevices), html_queue)
+				self.CreateHtmlFooter()
+				sys.exit(1)
+
+	def Iperf_ComputeTime(self):
+		result = re.search('-t (?P<iperf_time>\d+)', str(self.iperf_args))
+		if result is None:
+			logging.debug('\u001B[1;37;41m Iperf time Not Found! \u001B[0m')
+			sys.exit(1)
+		return result.group('iperf_time')
+
+	def Iperf_ComputeModifiedBW(self, idx, ue_num):
+		result = re.search('-b (?P<iperf_bandwidth>[0-9\.]+)[KMG]', str(self.iperf_args))
+		if result is None:
+			logging.debug('\u001B[1;37;41m Iperf bandwidth Not Found! \u001B[0m')
+			sys.exit(1)
+		iperf_bandwidth = result.group('iperf_bandwidth')
+		if SSH.iperf_profile == 'balanced':
+			iperf_bandwidth_new = float(iperf_bandwidth)/ue_num
+		if SSH.iperf_profile == 'single-ue':
+			iperf_bandwidth_new = float(iperf_bandwidth)
+		if SSH.iperf_profile == 'unbalanced':
+			# residual is 2% of max bw
+			residualBW = float(iperf_bandwidth) / 50
+			if idx == 0:
+				iperf_bandwidth_new = float(iperf_bandwidth) - ((ue_num - 1) * residualBW)
+			else:
+				iperf_bandwidth_new = residualBW
+		iperf_bandwidth_str = '-b ' + iperf_bandwidth
+		iperf_bandwidth_str_new = '-b ' + ('%.2f' % iperf_bandwidth_new)
+		result = re.sub(iperf_bandwidth_str, iperf_bandwidth_str_new, str(self.iperf_args))
+		if result is None:
+			logging.debug('\u001B[1;37;41m Calculate Iperf bandwidth Failed! \u001B[0m')
+			sys.exit(1)
+		return result
+
+	def Iperf_analyzeV2Output(self, lock, UE_IPAddress, device_id, statusQueue, iperf_real_options):
+		result = re.search('Server Report:', str(self.ssh.before))
+		if result is None:
+			result = re.search('read failed: Connection refused', str(self.ssh.before))
+			if result is not None:
+				logging.debug('\u001B[1;37;41m Could not connect to iperf server! \u001B[0m')
+			else:
+				logging.debug('\u001B[1;37;41m Server Report and Connection refused Not Found! \u001B[0m')
+			return -1
+		# Computing the requested bandwidth in float
+		result = re.search('-b (?P<iperf_bandwidth>[0-9\.]+)[KMG]', str(iperf_real_options))
+		if result is not None:
+			req_bandwidth = result.group('iperf_bandwidth')
+			req_bw = float(req_bandwidth)
+			result = re.search('-b [0-9\.]+K', str(iperf_real_options))
+			if result is not None:
+				req_bandwidth = '%.1f Kbits/sec' % req_bw
+				req_bw = req_bw * 1000
+			result = re.search('-b [0-9\.]+M', str(iperf_real_options))
+			if result is not None:
+				req_bandwidth = '%.1f Mbits/sec' % req_bw
+				req_bw = req_bw * 1000000
+			result = re.search('-b [0-9\.]+G', str(iperf_real_options))
+			if result is not None:
+				req_bandwidth = '%.1f Gbits/sec' % req_bw
+				req_bw = req_bw * 1000000000
+
+		result = re.search('Server Report:\\\\r\\\\n(?:|\[ *\d+\].*) (?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?P<jitter>[0-9\.]+ ms) +(\d+\/..\d+) (\((?P<packetloss>[0-9\.]+)%\))', str(self.ssh.before))
+		if result is not None:
+			bitrate = result.group('bitrate')
+			packetloss = result.group('packetloss')
+			jitter = result.group('jitter')
+			lock.acquire()
+			logging.debug('\u001B[1;37;44m iperf result (' + UE_IPAddress + ') \u001B[0m')
+			iperfStatus = True
+			msg = 'Req Bitrate : ' + req_bandwidth + '\n'
+			logging.debug('\u001B[1;34m    Req Bitrate : ' + req_bandwidth + '\u001B[0m')
+			if bitrate is not None:
+				msg += 'Bitrate     : ' + bitrate + '\n'
+				logging.debug('\u001B[1;34m    Bitrate     : ' + bitrate + '\u001B[0m')
+				result = re.search('(?P<real_bw>[0-9\.]+) [KMG]bits/sec', str(bitrate))
+				if result is not None:
+					actual_bw = float(str(result.group('real_bw')))
+					result = re.search('[0-9\.]+ K', bitrate)
+					if result is not None:
+						actual_bw = actual_bw * 1000
+					result = re.search('[0-9\.]+ M', bitrate)
+					if result is not None:
+						actual_bw = actual_bw * 1000000
+					result = re.search('[0-9\.]+ G', bitrate)
+					if result is not None:
+						actual_bw = actual_bw * 1000000000
+					br_loss = 100 * actual_bw / req_bw
+					bitperf = '%.2f ' % br_loss
+					msg += 'Bitrate Perf: ' + bitperf + '%\n'
+					logging.debug('\u001B[1;34m    Bitrate Perf: ' + bitperf + '%\u001B[0m')
+			if packetloss is not None:
+				msg += 'Packet Loss : ' + packetloss + '%\n'
+				logging.debug('\u001B[1;34m    Packet Loss : ' + packetloss + '%\u001B[0m')
+				if float(packetloss) > float(self.iperf_packetloss_threshold):
+					msg += 'Packet Loss too high!\n'
+					logging.debug('\u001B[1;37;41m Packet Loss too high \u001B[0m')
+					iperfStatus = False
+			if jitter is not None:
+				msg += 'Jitter      : ' + jitter + '\n'
+				logging.debug('\u001B[1;34m    Jitter      : ' + jitter + '\u001B[0m')
+			if (iperfStatus):
+				statusQueue.put(0)
+			else:
+				statusQueue.put(-1)
+			statusQueue.put(device_id)
+			statusQueue.put(UE_IPAddress)
+			statusQueue.put(msg)
+			lock.release()
+			return 0
+
+	def Iperf_analyzeV2Server(self, lock, UE_IPAddress, device_id, statusQueue, iperf_real_options):
+		if (not os.path.isfile('iperf_server_' + SSH.testCase_id + '_' + device_id + '.log')):
+			lock.acquire()
+			statusQueue.put(-1)
+			statusQueue.put(device_id)
+			statusQueue.put(UE_IPAddress)
+			statusQueue.put('Could not analyze from server log')
+			lock.release()
+			return
+		# Computing the requested bandwidth in float
+		result = re.search('-b (?P<iperf_bandwidth>[0-9\.]+)[KMG]', str(iperf_real_options))
+		if result is None:
+			logging.debug('Iperf bandwidth Not Found!')
+			lock.acquire()
+			statusQueue.put(-1)
+			statusQueue.put(device_id)
+			statusQueue.put(UE_IPAddress)
+			statusQueue.put('Could not compute Iperf bandwidth!')
+			lock.release()
+			return
+		else:
+			req_bandwidth = result.group('iperf_bandwidth')
+			req_bw = float(req_bandwidth)
+			result = re.search('-b [0-9\.]+K', str(iperf_real_options))
+			if result is not None:
+				req_bandwidth = '%.1f Kbits/sec' % req_bw
+				req_bw = req_bw * 1000
+			result = re.search('-b [0-9\.]+M', str(iperf_real_options))
+			if result is not None:
+				req_bandwidth = '%.1f Mbits/sec' % req_bw
+				req_bw = req_bw * 1000000
+			result = re.search('-b [0-9\.]+G', str(iperf_real_options))
+			if result is not None:
+				req_bandwidth = '%.1f Gbits/sec' % req_bw
+				req_bw = req_bw * 1000000000
+
+		server_file = open('iperf_server_' + SSH.testCase_id + '_' + device_id + '.log', 'r')
+		br_sum = 0.0
+		ji_sum = 0.0
+		pl_sum = 0
+		ps_sum = 0
+		row_idx = 0
+		for line in server_file.readlines():
+			result = re.search('(?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?P<jitter>[0-9\.]+ ms) +(?P<lostPack>[0-9]+)/ +(?P<sentPack>[0-9]+)', str(line))
+			if result is not None:
+				bitrate = result.group('bitrate')
+				jitter = result.group('jitter')
+				packetlost = result.group('lostPack')
+				packetsent = result.group('sentPack')
+				br = bitrate.split(' ')
+				ji = jitter.split(' ')
+				row_idx = row_idx + 1
+				curr_br = float(br[0])
+				pl_sum = pl_sum + int(packetlost)
+				ps_sum = ps_sum + int(packetsent)
+				if (br[1] == 'Kbits/sec'):
+					curr_br = curr_br * 1000
+				if (br[1] == 'Mbits/sec'):
+					curr_br = curr_br * 1000 * 1000
+				br_sum = curr_br + br_sum
+				ji_sum = float(ji[0]) + ji_sum
+		if (row_idx > 0):
+			br_sum = br_sum / row_idx
+			ji_sum = ji_sum / row_idx
+			br_loss = 100 * br_sum / req_bw
+			if (br_sum > 1000):
+				br_sum = br_sum / 1000
+				if (br_sum > 1000):
+					br_sum = br_sum / 1000
+					bitrate = '%.2f Mbits/sec' % br_sum
+				else:
+					bitrate = '%.2f Kbits/sec' % br_sum
+			else:
+				bitrate = '%.2f bits/sec' % br_sum
+			bitperf = '%.2f ' % br_loss
+			bitperf += '%'
+			jitter = '%.2f ms' % (ji_sum)
+			if (ps_sum > 0):
+				pl = float(100 * pl_sum / ps_sum)
+				packetloss = '%2.1f ' % (pl)
+				packetloss += '%'
+			else:
+				packetloss = 'unknown'
+			lock.acquire()
+			if (br_loss < 90):
+				statusQueue.put(1)
+			else:
+				statusQueue.put(0)
+			statusQueue.put(device_id)
+			statusQueue.put(UE_IPAddress)
+			req_msg = 'Req Bitrate : ' + req_bandwidth
+			bir_msg = 'Bitrate     : ' + bitrate
+			brl_msg = 'Bitrate Perf: ' + bitperf
+			jit_msg = 'Jitter      : ' + jitter
+			pal_msg = 'Packet Loss : ' + packetloss
+			statusQueue.put(req_msg + '\n' + bir_msg + '\n' + brl_msg + '\n' + jit_msg + '\n' + pal_msg + '\n')
+			logging.debug('\u001B[1;37;45m iperf result (' + UE_IPAddress + ') \u001B[0m')
+			logging.debug('\u001B[1;35m    ' + req_msg + '\u001B[0m')
+			logging.debug('\u001B[1;35m    ' + bir_msg + '\u001B[0m')
+			logging.debug('\u001B[1;35m    ' + brl_msg + '\u001B[0m')
+			logging.debug('\u001B[1;35m    ' + jit_msg + '\u001B[0m')
+			logging.debug('\u001B[1;35m    ' + pal_msg + '\u001B[0m')
+			lock.release()
+		else:
+			lock.acquire()
+			statusQueue.put(-1)
+			statusQueue.put(device_id)
+			statusQueue.put(UE_IPAddress)
+			statusQueue.put('Could not analyze from server log')
+			lock.release()
+
+		server_file.close()
+
+
+	def Iperf_analyzeV3Output(self, lock, UE_IPAddress, device_id, statusQueue):
+		result = re.search('(?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?:|[0-9\.]+ ms +\d+\/\d+ \((?P<packetloss>[0-9\.]+)%\)) +(?:|receiver)\\\\r\\\\n(?:|\[ *\d+\] Sent \d+ datagrams)\\\\r\\\\niperf Done\.', str(self.ssh.before))
+		if result is None:
+			result = re.search('(?P<error>iperf: error - [a-zA-Z0-9 :]+)', str(self.ssh.before))
+			lock.acquire()
+			statusQueue.put(-1)
+			statusQueue.put(device_id)
+			statusQueue.put(UE_IPAddress)
+			if result is not None:
+				logging.debug('\u001B[1;37;41m ' + result.group('error') + ' \u001B[0m')
+				statusQueue.put(result.group('error'))
+			else:
+				logging.debug('\u001B[1;37;41m Bitrate and/or Packet Loss Not Found! \u001B[0m')
+				statusQueue.put('Bitrate and/or Packet Loss Not Found!')
+			lock.release()
+
+		bitrate = result.group('bitrate')
+		packetloss = result.group('packetloss')
+		lock.acquire()
+		logging.debug('\u001B[1;37;44m iperf result (' + UE_IPAddress + ') \u001B[0m')
+		logging.debug('\u001B[1;34m    Bitrate     : ' + bitrate + '\u001B[0m')
+		msg = 'Bitrate     : ' + bitrate + '\n'
+		iperfStatus = True
+		if packetloss is not None:
+			logging.debug('\u001B[1;34m    Packet Loss : ' + packetloss + '%\u001B[0m')
+			msg += 'Packet Loss : ' + packetloss + '%\n'
+			if float(packetloss) > float(self.iperf_packetloss_threshold):
+				logging.debug('\u001B[1;37;41m Packet Loss too high \u001B[0m')
+				msg += 'Packet Loss too high!\n'
+				iperfStatus = False
+		if (iperfStatus):
+			statusQueue.put(0)
+		else:
+			statusQueue.put(-1)
+		statusQueue.put(device_id)
+		statusQueue.put(UE_IPAddress)
+		lock.release()
+
+	def Iperf_UL_common(self, lock, UE_IPAddress, device_id, idx, ue_num, statusQueue):
+		ipnumbers = UE_IPAddress.split('.')
+		if (len(ipnumbers) == 4):
+			ipnumbers[3] = '1'
+		EPC_Iperf_UE_IPAddress = ipnumbers[0] + '.' + ipnumbers[1] + '.' + ipnumbers[2] + '.' + ipnumbers[3]
+
+		# Launch iperf server on EPC side
+		self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
+		self.command('cd ' + self.EPCSourceCodePath + '/scripts', '\$', 5)
+		self.command('rm -f iperf_server_' + SSH.testCase_id + '_' + device_id + '.log', '\$', 5)
+		port = 5001 + idx
+		self.command('echo $USER; nohup iperf -u -s -i 1 -p ' + str(port) + ' > iperf_server_' + SSH.testCase_id + '_' + device_id + '.log &', self.EPCUserName, 5)
+		time.sleep(0.5)
+		self.close()
+
+		# Launch iperf client on UE
+		self.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword)
+		self.command('cd ' + self.EPCSourceCodePath + '/scripts', '\$', 5)
+		iperf_time = self.Iperf_ComputeTime()
+		time.sleep(0.5)
+
+		modified_options = self.Iperf_ComputeModifiedBW(idx, ue_num)
+		modified_options = modified_options.replace('-R','')
+		time.sleep(0.5)
+
+		self.command('rm -f iperf_' + SSH.testCase_id + '_' + device_id + '.log', '\$', 5)
+		self.command('stdbuf -o0 adb -s ' + device_id + ' shell "/data/local/tmp/iperf -c ' + EPC_Iperf_UE_IPAddress + ' ' + modified_options + ' -p ' + str(port) + '" 2>&1 | stdbuf -o0 tee -a iperf_' + SSH.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0)
+		clientStatus = self.Iperf_analyzeV2Output(lock, UE_IPAddress, device_id, statusQueue, modified_options)
+
+		# Launch iperf server on EPC side
+		self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
+		self.command('killall --signal SIGKILL iperf', self.EPCUserName, 5)
+		self.close()
+		if (clientStatus == -1):
+			time.sleep(1)
+			if (os.path.isfile('iperf_server_' + SSH.testCase_id + '_' + device_id + '.log')):
+				os.remove('iperf_server_' + SSH.testCase_id + '_' + device_id + '.log')
+			self.copy(self.EPCIPAddress, self.EPCUserName, self.EPCPassword, self.EPCSourceCodePath + '/scripts/iperf_server_' + SSH.testCase_id + '_' + device_id + '.log', '.')
+			self.Iperf_analyzeV2Server(lock, UE_IPAddress, device_id, statusQueue, modified_options)
+
+	def Iperf_common(self, lock, UE_IPAddress, device_id, idx, ue_num, statusQueue):
 		try:
+			# Single-UE profile -- iperf only on one UE
+			if SSH.iperf_profile == 'single-ue' and idx != 0:
+				return
 			useIperf3 = False
 			self.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword)
+			# if by chance ADB server and EPC are on the same remote host, at least log collection will take care of it
+			self.command('if [ ! -d ' + self.EPCSourceCodePath + '/scripts ]; then mkdir -p ' + self.EPCSourceCodePath + '/scripts ; fi', '\$', 5)
+			self.command('cd ' + self.EPCSourceCodePath + '/scripts', '\$', 5)
 			# Checking if iperf / iperf3 are installed
 			self.command('adb -s ' + device_id + ' shell "ls /data/local/tmp"', '\$', 5)
 			result = re.search('iperf3', str(self.ssh.before))
 			if result is None:
 				result = re.search('iperf', str(self.ssh.before))
 				if result is None:
-					logging.debug('\u001B[1;37;41m Neither iperf nor iperf3 installed on UE! \u001B[0m')
-					sys.exit(1)
+					message = 'Neither iperf nor iperf3 installed on UE!'
+					lock.acquire()
+					logging.debug('\u001B[1;37;41m ' + message + ' \u001B[0m')
+					statusQueue.put(-1)
+					statusQueue.put(device_id)
+					statusQueue.put(UE_IPAddress)
+					statusQueue.put(message)
+					lock.release()
+					return
+					#sys.exit(1)
 			else:
 				useIperf3 = True
+			# in case of iperf, UL has its own function
+			if (not useIperf3):
+				result = re.search('-R', str(self.iperf_args))
+				if result is not None:
+					self.close()
+					self.Iperf_UL_common(lock, UE_IPAddress, device_id, idx, ue_num, statusQueue)
+					return
+
 			if (useIperf3):
 				self.command('stdbuf -o0 adb -s ' + device_id + ' shell /data/local/tmp/iperf3 -s &', '\$', 5)
 			else:
-				self.command('rm -f /tmp/iperf_server_' + SSH.testCase_id + '_' + device_id + '.log', '\$', 5)
-				self.command('echo $USER; nohup adb -s ' + device_id + ' shell "/data/local/tmp/iperf -u -s -i 1" > /tmp/iperf_server_' + SSH.testCase_id + '_' + device_id + '.log &', self.ADBUserName, 5)
+				self.command('rm -f iperf_server_' + SSH.testCase_id + '_' + device_id + '.log', '\$', 5)
+				self.command('echo $USER; nohup adb -s ' + device_id + ' shell "/data/local/tmp/iperf -u -s -i 1" > iperf_server_' + SSH.testCase_id + '_' + device_id + '.log &', self.ADBUserName, 5)
 			time.sleep(0.5)
 			self.close()
 
 			self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
-			self.command('cd ' + self.EPCSourceCodePath, '\$', 5)
-			self.command('cd scripts', '\$', 5)
-			result = re.search('-t (?P<iperf_time>\d+)', str(self.iperf_args))
-			if result is None:
-				logging.debug('\u001B[1;37;41m Iperf time Not Found! \u001B[0m')
-				sys.exit(1)
-			iperf_time = result.group('iperf_time')
+			self.command('cd ' + self.EPCSourceCodePath + '/scripts', '\$', 5)
+			iperf_time = self.Iperf_ComputeTime()
 			time.sleep(0.5)
 
-			result = re.search('-b (?P<iperf_bandwidth>[0-9\.]+)[KMG]', str(self.iperf_args))
-			if result is None:
-				logging.debug('\u001B[1;37;41m Iperf bandwidth Not Found! \u001B[0m')
-				sys.exit(1)
-			iperf_bandwidth = result.group('iperf_bandwidth')
+			modified_options = self.Iperf_ComputeModifiedBW(idx, ue_num)
 			time.sleep(0.5)
 
-			iperf_bandwidth_new = float(iperf_bandwidth)/ue_num
-			iperf_bandwidth_str = '-b ' + iperf_bandwidth
-			iperf_bandwidth_str_new = '-b ' + str(iperf_bandwidth_new)
-			result = re.sub(iperf_bandwidth_str, iperf_bandwidth_str_new, str(self.iperf_args))
-			if result is None:
-				logging.debug('\u001B[1;37;41m Calculate Iperf bandwidth Failed! \u001B[0m')
-				sys.exit(1)
-
 			self.command('rm -f iperf_' + SSH.testCase_id + '_' + device_id + '.log', '\$', 5)
 			if (useIperf3):
-				self.command('stdbuf -o0 iperf3 -c ' + UE_IPAddress + ' ' + result + ' 2>&1 | stdbuf -o0 tee -a iperf_' + SSH.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0)
+				self.command('stdbuf -o0 iperf3 -c ' + UE_IPAddress + ' ' + modified_options + ' 2>&1 | stdbuf -o0 tee -a iperf_' + SSH.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0)
 
-				result = re.search('(?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?:|[0-9\.]+ ms +\d+\/\d+ \((?P<packetloss>[0-9\.]+)%\)) +(?:|receiver)\\\\r\\\\n(?:|\[ *\d+\] Sent \d+ datagrams)\\\\r\\\\niperf Done\.', str(self.ssh.before))
-				if result is None:
-					result = re.search('(?P<error>iperf: error - [a-zA-Z0-9 :]+)', str(self.ssh.before))
-					if result is not None:
-						logging.debug('\u001B[1;37;41m ' + result.group('error') + ' \u001B[0m')
-					else:
-						logging.debug('\u001B[1;37;41m Bitrate and/or Packet Loss Not Found! \u001B[0m')
-					sys.exit(1)
-				bitrate = result.group('bitrate')
-				packetloss = result.group('packetloss')
-				lock.acquire()
-				logging.debug('\u001B[1;37;44m iperf result (' + UE_IPAddress + ') \u001B[0m')
-				logging.debug('\u001B[1;34m    Bitrate     : ' + bitrate + '\u001B[0m')
-				if packetloss is not None:
-					logging.debug('\u001B[1;34m    Packet Loss : ' + packetloss + '%\u001B[0m')
-					if float(packetloss) > float(self.iperf_packetloss_threshold):
-						logging.debug('\u001B[1;37;41m Packet Loss too high \u001B[0m')
-						lock.release()
-						sys.exit(1)
-				lock.release()
+				clientStatus = 0
+				self.Iperf_analyzeV3Output(lock, UE_IPAddress, device_id, statusQueue)
 			else:
-				self.command('stdbuf -o0 iperf -c ' + UE_IPAddress + ' ' + result + ' 2>&1 | stdbuf -o0 tee -a iperf_' + SSH.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0)
+				self.command('stdbuf -o0 iperf -c ' + UE_IPAddress + ' ' + modified_options + ' 2>&1 | stdbuf -o0 tee -a iperf_' + SSH.testCase_id + '_' + device_id + '.log', '\$', int(iperf_time)*5.0)
 
-				result = re.search('Server Report:', str(self.ssh.before))
-				if result is None:
-					result = re.search('read failed: Connection refused', str(self.ssh.before))
-					if result is not None:
-						logging.debug('\u001B[1;37;41m Could not connect to iperf server! \u001B[0m')
-					else:
-						logging.debug('\u001B[1;37;41m Server Report and Connection refused Not Found! \u001B[0m')
-					sys.exit(1)
-				result = re.search('Server Report:\\\\r\\\\n(?:|\[ *\d+\].*) (?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?:|[0-9\.]+ ms +\d+\/\d+ \((?P<packetloss>[0-9\.]+)%\))', str(self.ssh.before))
-				if result is not None:
-					bitrate = result.group('bitrate')
-					packetloss = result.group('packetloss')
-					lock.acquire()
-					logging.debug('\u001B[1;37;44m iperf result (' + UE_IPAddress + ') \u001B[0m')
-					if bitrate is not None:
-						logging.debug('\u001B[1;34m    Bitrate     : ' + bitrate + '\u001B[0m')
-					if packetloss is not None:
-						logging.debug('\u001B[1;34m    Packet Loss : ' + packetloss + '%\u001B[0m')
-						if float(packetloss) > float(self.iperf_packetloss_threshold):
-							logging.debug('\u001B[1;37;41m Packet Loss too high \u001B[0m')
-							lock.release()
-							sys.exit(1)
-					lock.release()
+				clientStatus = self.Iperf_analyzeV2Output(lock, UE_IPAddress, device_id, statusQueue, modified_options)
 			self.close()
 
 			self.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword)
@@ -627,6 +1080,12 @@ class SSHConnection():
 				pid_iperf = result.group('pid')
 				self.command('stdbuf -o0 adb -s ' + device_id + ' shell kill -KILL ' + pid_iperf, '\$', 5)
 			self.close()
+			if (clientStatus == -1):
+				time.sleep(1)
+				if (os.path.isfile('iperf_server_' + SSH.testCase_id + '_' + device_id + '.log')):
+					os.remove('iperf_server_' + SSH.testCase_id + '_' + device_id + '.log')
+				self.copy(self.ADBIPAddress, self.ADBUserName, self.ADBPassword, self.EPCSourceCodePath + '/scripts/iperf_server_' + SSH.testCase_id + '_' + device_id + '.log', '.')
+				self.Iperf_analyzeV2Server(lock, UE_IPAddress, device_id, statusQueue, modified_options)
 		except:
 			os.kill(os.getppid(),signal.SIGUSR1)
 
@@ -635,15 +1094,20 @@ class SSHConnection():
 			Usage()
 			sys.exit('Insufficient Parameter')
 		initialize_eNB_flag = False
-		self.CheckProcessExist(initialize_eNB_flag)
+		pStatus = self.CheckProcessExist(initialize_eNB_flag)
+		if (pStatus < 0):
+			self.CreateHtmlTestRow(self.iperf_args, 'KO', pStatus)
+			self.CreateHtmlFooter()
+			sys.exit(1)
 		self.GetAllUEIPAddresses()
 		multi_jobs = []
 		i = 0
 		ue_num = len(self.UEIPAddresses)
 		lock = Lock()
+		status_queue = SimpleQueue()
 		for UE_IPAddress in self.UEIPAddresses:
 			device_id = self.UEDevices[i]
-			p = Process(target = SSH.Iperf_common, args = (lock,UE_IPAddress,device_id,ue_num,))
+			p = Process(target = SSH.Iperf_common, args = (lock,UE_IPAddress,device_id,i,ue_num,status_queue,))
 			p.daemon = True
 			p.start()
 			multi_jobs.append(p)
@@ -651,41 +1115,83 @@ class SSHConnection():
 		for job in multi_jobs:
 			job.join()
 
+		if (status_queue.empty()):
+			self.CreateHtmlTestRow(self.iperf_args, 'KO', 0)
+			self.CreateHtmlFooter()
+			sys.exit(1)
+		else:
+			iperf_status = True
+			iperf_noperf = False
+			html_queue = SimpleQueue()
+			while (not status_queue.empty()):
+				count = status_queue.get()
+				if (count < 0):
+					iperf_status = False
+				if (count > 0):
+					iperf_noperf = True
+				device_id = status_queue.get()
+				ip_addr = status_queue.get()
+				message = status_queue.get()
+				html_cell = "<pre>UE (" + device_id + ")\nIP Address  : " + ip_addr + "\n" + message + "</pre>"
+				html_queue.put(html_cell)
+			if (iperf_noperf and iperf_status):
+				self.CreateHtmlTestRowQueue(self.iperf_args, 'PERF NOT MET', len(self.UEDevices), html_queue)
+			elif (iperf_status):
+				self.CreateHtmlTestRowQueue(self.iperf_args, 'OK', len(self.UEDevices), html_queue)
+			else:
+				self.CreateHtmlTestRowQueue(self.iperf_args, 'KO', len(self.UEDevices), html_queue)
+				self.CreateHtmlFooter()
+				sys.exit(1)
+
 	def CheckProcessExist(self, initialize_eNB_flag):
 		multi_jobs = []
-		p = Process(target = SSH.CheckHSSProcess, args = ())
+		status_queue = SimpleQueue()
+		p = Process(target = SSH.CheckHSSProcess, args = (status_queue,))
 		p.daemon = True
 		p.start()
 		multi_jobs.append(p)
-		p = Process(target = SSH.CheckMMEProcess, args = ())
+		p = Process(target = SSH.CheckMMEProcess, args = (status_queue,))
 		p.daemon = True
 		p.start()
 		multi_jobs.append(p)
-		p = Process(target = SSH.CheckSPGWProcess, args = ())
+		p = Process(target = SSH.CheckSPGWProcess, args = (status_queue,))
 		p.daemon = True
 		p.start()
 		multi_jobs.append(p)
 		if initialize_eNB_flag == False:
-			p = Process(target = SSH.CheckeNBProcess, args = ())
+			p = Process(target = SSH.CheckeNBProcess, args = (status_queue,))
 			p.daemon = True
 			p.start()
 			multi_jobs.append(p)
 		for job in multi_jobs:
 			job.join()
 
-	def CheckeNBProcess(self):
+		if (status_queue.empty()):
+			return -15
+		else:
+			result = 0
+			while (not status_queue.empty()):
+				status = status_queue.get()
+				if (status < 0):
+					result = status
+			return result
+
+	def CheckeNBProcess(self, status_queue):
 		try:
 			self.open(self.eNBIPAddress, self.eNBUserName, self.eNBPassword)
 			self.command('stdbuf -o0 ps -aux | grep -v grep | grep --color=never lte-softmodem', '\$', 5)
 			result = re.search('lte-softmodem', str(self.ssh.before))
 			if result is None:
 				logging.debug('\u001B[1;37;41m eNB Process Not Found! \u001B[0m')
-				sys.exit(1)
+				#sys.exit(1)
+				status_queue.put(-1)
+			else:
+				status_queue.put(1)
 			self.close()
 		except:
 			os.kill(os.getppid(),signal.SIGUSR1)
 
-	def CheckHSSProcess(self):
+	def CheckHSSProcess(self, status_queue):
 		try:
 			self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
 			self.command('stdbuf -o0 ps -aux | grep -v grep | grep --color=never hss', '\$', 5)
@@ -695,12 +1201,15 @@ class SSHConnection():
 				result = re.search('hss_sim s6as diam_hss', str(self.ssh.before))
 			if result is None:
 				logging.debug('\u001B[1;37;41m HSS Process Not Found! \u001B[0m')
-				sys.exit(1)
+				status_queue.put(-2)
+				#sys.exit(1)
+			else:
+				status_queue.put(2)
 			self.close()
 		except:
 			os.kill(os.getppid(),signal.SIGUSR1)
 
-	def CheckMMEProcess(self):
+	def CheckMMEProcess(self, status_queue):
 		try:
 			self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
 			self.command('stdbuf -o0 ps -aux | grep -v grep | grep --color=never mme', '\$', 5)
@@ -710,12 +1219,15 @@ class SSHConnection():
 				result = re.search('mme', str(self.ssh.before))
 			if result is None:
 				logging.debug('\u001B[1;37;41m MME Process Not Found! \u001B[0m')
-				sys.exit(1)
+				status_queue.put(-3)
+				#sys.exit(1)
+			else:
+				status_queue.put(3)
 			self.close()
 		except:
 			os.kill(os.getppid(),signal.SIGUSR1)
 
-	def CheckSPGWProcess(self):
+	def CheckSPGWProcess(self, status_queue):
 		try:
 			self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
 			if re.match('OAI', self.EPCType, re.IGNORECASE):
@@ -726,13 +1238,19 @@ class SSHConnection():
 				result = re.search('xGw', str(self.ssh.before))
 			if result is None:
 				logging.debug('\u001B[1;37;41m SPGW Process Not Found! \u001B[0m')
-				sys.exit(1)
+				status_queue.put(-4)
+				#sys.exit(1)
+			else:
+				status_queue.put(4)
 			self.close()
 		except:
 			os.kill(os.getppid(),signal.SIGUSR1)
 
 	def TerminateeNB(self):
 		self.open(self.eNBIPAddress, self.eNBUserName, self.eNBPassword)
+		self.command('cd ' + self.eNBSourceCodePath + '/cmake_targets', '\$', 5)
+		self.command('echo ' + self.eNBPassword + ' | sudo -S daemon --name=enb_daemon --stop', '\$', 5)
+		self.command('rm -f my-lte-softmodem-run.sh', '\$', 5)
 		self.command('echo ' + self.eNBPassword + ' | sudo -S killall --signal SIGINT lte-softmodem || true', '\$', 5)
 		time.sleep(5)
 		self.command('stdbuf -o0  ps -aux | grep -v grep | grep lte-softmodem', '\$', 5)
@@ -740,6 +1258,7 @@ class SSHConnection():
 		if result is not None:
 			self.command('echo ' + self.eNBPassword + ' | sudo -S killall --signal SIGKILL lte-softmodem || true', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def TerminateHSS(self):
 		self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
@@ -761,6 +1280,7 @@ class SSHConnection():
 			self.command('echo ' + self.EPCPassword + ' | sudo -S ./kill_hss.sh', '\$', 5)
 			self.command('rm ./kill_hss.sh', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def TerminateMME(self):
 		self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
@@ -775,6 +1295,7 @@ class SSHConnection():
 			self.command('cd /opt/ltebox/tools', '\$', 5)
 			self.command('echo ' + self.EPCPassword + ' | sudo -S ./stop_mme', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def TerminateSPGW(self):
 		self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
@@ -789,6 +1310,7 @@ class SSHConnection():
 			self.command('cd /opt/ltebox/tools', '\$', 5)
 			self.command('echo ' + self.EPCPassword + ' | sudo -S ./stop_xGw', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def TerminateUE_common(self, device_id):
 		try:
@@ -816,27 +1338,31 @@ class SSHConnection():
 			multi_jobs.append(p)
 		for job in multi_jobs:
 			job.join()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def LogCollectBuild(self):
 		self.open(self.eNBIPAddress, self.eNBUserName, self.eNBPassword)
 		self.command('cd ' + self.eNBSourceCodePath, '\$', 5)
 		self.command('cd cmake_targets', '\$', 5)
+		self.command('rm -f build.log.zip', '\$', 5)
 		self.command('zip build.log.zip build_log_*/*', '\$', 60)
-		self.command('rm -rf build_log_*', '\$', 5)
+		self.command('echo ' + self.eNBPassword + ' | sudo -S rm -rf build_log_*', '\$', 5)
 		self.close()
 
 	def LogCollecteNB(self):
 		self.open(self.eNBIPAddress, self.eNBUserName, self.eNBPassword)
 		self.command('cd ' + self.eNBSourceCodePath, '\$', 5)
 		self.command('cd cmake_targets', '\$', 5)
+		self.command('rm -f enb.log.zip', '\$', 5)
 		self.command('zip enb.log.zip enb*.log', '\$', 60)
-		self.command('rm enb*.log', '\$', 5)
+		self.command('echo ' + self.eNBPassword + ' | sudo -S rm enb*.log', '\$', 5)
 		self.close()
 
 	def LogCollectPing(self):
 		self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
 		self.command('cd ' + self.EPCSourceCodePath, '\$', 5)
 		self.command('cd scripts', '\$', 5)
+		self.command('rm -f ping.log.zip', '\$', 5)
 		self.command('zip ping.log.zip ping*.log', '\$', 60)
 		self.command('rm ping*.log', '\$', 5)
 		self.close()
@@ -845,6 +1371,7 @@ class SSHConnection():
 		self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
 		self.command('cd ' + self.EPCSourceCodePath, '\$', 5)
 		self.command('cd scripts', '\$', 5)
+		self.command('rm -f iperf.log.zip', '\$', 5)
 		self.command('zip iperf.log.zip iperf*.log', '\$', 60)
 		self.command('rm iperf*.log', '\$', 5)
 		self.close()
@@ -853,6 +1380,7 @@ class SSHConnection():
 		self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
 		self.command('cd ' + self.EPCSourceCodePath, '\$', 5)
 		self.command('cd scripts', '\$', 5)
+		self.command('rm -f hss.log.zip', '\$', 5)
 		if re.match('OAI', self.EPCType, re.IGNORECASE):
 			self.command('zip hss.log.zip hss*.log', '\$', 60)
 			self.command('rm hss*.log', '\$', 5)
@@ -865,6 +1393,7 @@ class SSHConnection():
 		self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
 		self.command('cd ' + self.EPCSourceCodePath, '\$', 5)
 		self.command('cd scripts', '\$', 5)
+		self.command('rm -f mme.log.zip', '\$', 5)
 		if re.match('OAI', self.EPCType, re.IGNORECASE):
 			self.command('zip mme.log.zip mme*.log', '\$', 60)
 			self.command('rm mme*.log', '\$', 5)
@@ -877,6 +1406,7 @@ class SSHConnection():
 		self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
 		self.command('cd ' + self.EPCSourceCodePath, '\$', 5)
 		self.command('cd scripts', '\$', 5)
+		self.command('rm -f spgw.log.zip', '\$', 5)
 		if re.match('OAI', self.EPCType, re.IGNORECASE):
 			self.command('zip spgw.log.zip spgw*.log', '\$', 60)
 			self.command('rm spgw*.log', '\$', 5)
@@ -885,6 +1415,152 @@ class SSHConnection():
 			self.command('zip spgw.log.zip xGwLog.0', '\$', 60)
 		self.close()
 #-----------------------------------------------------------
+# HTML Reporting....
+#-----------------------------------------------------------
+	def CreateHtmlHeader(self):
+		if (not self.htmlHeaderCreated):
+			self.htmlFile = open('test_results.html', 'w')
+			self.htmlFile.write('<!DOCTYPE html>\n')
+			self.htmlFile.write('<html class="no-js" lang="en-US">\n')
+			self.htmlFile.write('<head>\n')
+			self.htmlFile.write('  <title>Test Results for TEMPLATE_JOB_NAME job build #TEMPLATE_BUILD_ID</title>\n')
+			self.htmlFile.write('  <base href = "http://www.openairinterface.org/" />\n')
+			self.htmlFile.write('</head>\n')
+			self.htmlFile.write('<body>\n')
+			self.htmlFile.write('  <table style="border-collapse: collapse; border: none;">\n')
+			self.htmlFile.write('    <tr style="border-collapse: collapse; border: none;">\n')
+			self.htmlFile.write('      <td style="border-collapse: collapse; border: none;">\n')
+			self.htmlFile.write('        <a href="http://www.openairinterface.org/">\n')
+			self.htmlFile.write('           <img src="/wp-content/uploads/2016/03/cropped-oai_final_logo2.png" alt="" border="none" height=50 width=150>\n')
+			self.htmlFile.write('           </img>\n')
+			self.htmlFile.write('        </a>\n')
+			self.htmlFile.write('      </td>\n')
+			self.htmlFile.write('      <td style="border-collapse: collapse; border: none; vertical-align: center;">\n')
+			self.htmlFile.write('        <b><font size = "6">Job Summary -- Job: TEMPLATE_JOB_NAME -- Build-ID: TEMPLATE_BUILD_ID</font></b>\n')
+			self.htmlFile.write('      </td>\n')
+			self.htmlFile.write('    </tr>\n')
+			self.htmlFile.write('  </table>\n')
+			self.htmlFile.write('  <br>\n')
+			self.htmlFile.write('  <table border = "1">\n')
+			self.htmlFile.write('     <tr>\n')
+			self.htmlFile.write('       <td bgcolor = "lightcyan" >GIT Repository</td>\n')
+			self.htmlFile.write('       <td><a href="' + SSH.eNBRepository + '">' + SSH.eNBRepository + '</a></td>\n')
+			self.htmlFile.write('     </tr>\n')
+			self.htmlFile.write('     <tr>\n')
+			self.htmlFile.write('       <td bgcolor = "lightcyan" >Job Trigger</td>\n')
+			if (SSH.eNB_AllowMerge):
+				self.htmlFile.write('       <td>Merge-Request</td>\n')
+			else:
+				self.htmlFile.write('       <td>Push to Branch</td>\n')
+			self.htmlFile.write('     </tr>\n')
+			self.htmlFile.write('     <tr>\n')
+			if (SSH.eNB_AllowMerge):
+				self.htmlFile.write('       <td bgcolor = "lightcyan" >Source Branch</td>\n')
+			else:
+				self.htmlFile.write('       <td bgcolor = "lightcyan" >Branch</td>\n')
+			self.htmlFile.write('       <td>' + SSH.eNBBranch + '</td>\n')
+			self.htmlFile.write('     </tr>\n')
+			self.htmlFile.write('     <tr>\n')
+			if (SSH.eNB_AllowMerge):
+				self.htmlFile.write('       <td bgcolor = "lightcyan" >Source Commit ID</td>\n')
+			else:
+				self.htmlFile.write('       <td bgcolor = "lightcyan" >Commit ID</td>\n')
+			self.htmlFile.write('       <td>' + SSH.eNBCommitID + '</td>\n')
+			self.htmlFile.write('     </tr>\n')
+			if (SSH.eNB_AllowMerge):
+				self.htmlFile.write('     <tr>\n')
+				self.htmlFile.write('       <td bgcolor = "lightcyan" >Target Branch</td>\n')
+				self.htmlFile.write('       <td>develop</td>\n')
+				self.htmlFile.write('     </tr>\n')
+			self.htmlFile.write('  </table>\n')
+
+			terminate_ue_flag = True
+			SSH.GetAllUEDevices(terminate_ue_flag)
+			self.htmlUEConnected = len(self.UEDevices)
+			self.htmlFile.write('<h2>' + str(self.htmlUEConnected) + ' UE(s) is(are) connected to ADB bench server</h2>\n')
+
+			self.htmlFile.write('  <br>\n')
+			self.htmlFile.write('  <h2>Test Summary for ' + SSH.testXMLfile + '</h2>\n')
+			self.htmlFile.write('  <table border = "1">\n')
+			self.htmlFile.write('      <tr bgcolor = "#33CCFF" >\n')
+			self.htmlFile.write('        <th>Test Id</th>\n')
+			self.htmlFile.write('        <th>Test Desc</th>\n')
+			self.htmlFile.write('        <th>Test Options</th>\n')
+			self.htmlFile.write('        <th>Test Status</th>\n')
+			i = 0
+			while (i < self.htmlUEConnected):
+				self.htmlFile.write('        <th>UE' + str(i) + ' Status</th>\n')
+				i += 1
+			self.htmlFile.write('      </tr>\n')
+		self.htmlHeaderCreated = True
+
+	def CreateHtmlFooter(self):
+		if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)):
+			self.htmlFile.write('  </table>\n')
+			self.htmlFile.write('</body>\n')
+			self.htmlFile.write('</html>\n')
+			self.htmlFile.close()
+		self.htmlFooterCreated = False
+
+	def CreateHtmlTestRow(self, options, status, processesStatus):
+		if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)):
+			self.htmlFile.write('      <tr>\n')
+			self.htmlFile.write('        <td bgcolor = "lightcyan" >' + SSH.testCase_id  + '</td>\n')
+			self.htmlFile.write('        <td>' + SSH.desc  + '</td>\n')
+			self.htmlFile.write('        <td>' + str(options)  + '</td>\n')
+			if (str(status) == 'OK'):
+				self.htmlFile.write('        <td bgcolor = "lightgreen" >' + str(status)  + '</td>\n')
+			elif (str(status) == 'KO'):
+				if (processesStatus == 0):
+					self.htmlFile.write('        <td bgcolor = "lightcoral" >' + str(status)  + '</td>\n')
+				elif (processesStatus == -1):
+					self.htmlFile.write('        <td bgcolor = "lightcoral" >KO - eNB process not found</td>\n')
+				elif (processesStatus == -2):
+					self.htmlFile.write('        <td bgcolor = "lightcoral" >KO - HSS process not found</td>\n')
+				elif (processesStatus == -3):
+					self.htmlFile.write('        <td bgcolor = "lightcoral" >KO - MME process not found</td>\n')
+				elif (processesStatus == -4):
+					self.htmlFile.write('        <td bgcolor = "lightcoral" >KO - SPGW process not found</td>\n')
+				else:
+					self.htmlFile.write('        <td bgcolor = "lightcoral" >' + str(status)  + '</td>\n')
+			else:
+				self.htmlFile.write('        <td bgcolor = "orange" >' + str(status)  + '</td>\n')
+			i = 0
+			while (i < self.htmlUEConnected):
+				self.htmlFile.write('        <td>-</td>\n')
+				i += 1
+			self.htmlFile.write('      </tr>\n')
+
+	def CreateHtmlTestRowQueue(self, options, status, ue_status, ue_queue):
+		if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)):
+			addOrangeBK = False
+			self.htmlFile.write('      <tr>\n')
+			self.htmlFile.write('        <td bgcolor = "lightcyan" >' + SSH.testCase_id  + '</td>\n')
+			self.htmlFile.write('        <td>' + SSH.desc  + '</td>\n')
+			self.htmlFile.write('        <td>' + str(options)  + '</td>\n')
+			if (str(status) == 'OK'):
+				self.htmlFile.write('        <td bgcolor = "lightgreen" >' + str(status)  + '</td>\n')
+			elif (str(status) == 'KO'):
+				self.htmlFile.write('        <td bgcolor = "lightcoral" >' + str(status)  + '</td>\n')
+			else:
+				addOrangeBK = True
+				self.htmlFile.write('        <td bgcolor = "orange" >' + str(status)  + '</td>\n')
+			i = 0
+			while (i < self.htmlUEConnected):
+				if (i < ue_status):
+					if (not ue_queue.empty()):
+						if (addOrangeBK):
+							self.htmlFile.write('        <td bgcolor = "orange" >' + str(ue_queue.get()) + '</td>\n')
+						else:
+							self.htmlFile.write('        <td>' + str(ue_queue.get()) + '</td>\n')
+					else:
+						self.htmlFile.write('        <td>-</td>\n')
+				else:
+					self.htmlFile.write('        <td>-</td>\n')
+				i += 1
+			self.htmlFile.write('      </tr>\n')
+
+#-----------------------------------------------------------
 # Usage()
 #-----------------------------------------------------------
 def Usage():
@@ -895,8 +1571,8 @@ def Usage():
 	print('  --help  Show this help.')
 	print('  --mode=[Mode]')
 	print('      TesteNB')
-	print('      TerminateeNB, TerminateEPC')
-	print('      LogCollectBuild, LogCollecteNB, LogCollectEPC, LogCollectADB')
+	print('      TerminateeNB, TerminateUE, TerminateHSS, TerminateMME, TerminateSPGW')
+	print('      LogCollectBuild, LogCollecteNB, LogCollectHSS, LogCollectMME, LogCollectSPGW, LogCollectPing, LogCollectIperf')
 	print('  --eNBIPAddress=[eNB\'s IP Address]')
 	print('  --eNBRepository=[eNB\'s Repository URL]')
 	print('  --eNBBranch=[eNB\'s Branch Name]')
@@ -944,6 +1620,13 @@ def GetParametersFromXML(action):
 	if action == 'Iperf':
 		SSH.iperf_args = test.findtext('iperf_args')
 		SSH.iperf_packetloss_threshold = test.findtext('iperf_packetloss_threshold')
+		SSH.iperf_profile = test.findtext('iperf_profile')
+		if (SSH.iperf_profile is None):
+			SSH.iperf_profile = 'balanced'
+		else:
+			if SSH.iperf_profile != 'balanced' and SSH.iperf_profile != 'unbalanced' and SSH.iperf_profile != 'single-ue':
+				logging.debug('ERROR: test-case has wrong profile ' + SSH.iperf_profile)
+				SSH.iperf_profile = 'balanced'
 
 #check if given test is in list
 #it is in list if one of the strings in 'list' is at the beginning of 'test'
@@ -980,6 +1663,11 @@ while len(argvs) > 1:
 	elif re.match('^\-\-eNBRepository=(.+)$', myArgv, re.IGNORECASE):
 		matchReg = re.match('^\-\-eNBRepository=(.+)$', myArgv, re.IGNORECASE)
 		SSH.eNBRepository = matchReg.group(1)
+	elif re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE):
+		matchReg = re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE)
+		doMerge = matchReg.group(1)
+		if ((doMerge == 'true') or (doMerge == 'True')):
+			SSH.eNB_AllowMerge = True
 	elif re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE):
 		matchReg = re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE)
 		SSH.eNBBranch = matchReg.group(1)
@@ -1098,6 +1786,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE):
 		Usage()
 		sys.exit('Insufficient Parameter')
 
+	SSH.CreateHtmlHeader()
+
 	#read test_case_list.xml file
         # if no parameters for XML file, use default value
 	if SSH.testXMLfile == '':
@@ -1196,6 +1886,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE):
 				SSH.TerminateSPGW()
 			else:
 				sys.exit('Invalid action')
+
+	SSH.CreateHtmlFooter()
 else:
 	Usage()
 	sys.exit('Invalid mode')
diff --git a/ci-scripts/reportBuildLocally.sh b/ci-scripts/reportBuildLocally.sh
index f8a48d9c170150501d3b023b90a21cd7753571f7..609af5f166b05e2343bc7d7fcb8f5e7d977586a2 100755
--- a/ci-scripts/reportBuildLocally.sh
+++ b/ci-scripts/reportBuildLocally.sh
@@ -105,7 +105,7 @@ function details_table {
     do
         if [[ $MESSAGE == *"/home/ubuntu/tmp"* ]]
         then
-            FILENAME=`echo $MESSAGE | sed -e "s#^/home/ubuntu/tmp/##" | awk -F ":" '{print $1}'`
+            FILENAME=`echo $MESSAGE | sed -e "s#^/home/ubuntu/tmp/##" -e "s#^.*/tmp/CI-eNB/##" | awk -F ":" '{print $1}'`
             LINENB=`echo $MESSAGE | awk -F ":" '{print $2}'`
             if [ "$COMPLETE_MESSAGE" != "start" ]
             then
@@ -498,6 +498,8 @@ then
     echo "   </table>" >> ./build_results.html
 fi
 
+echo "   <h2>Ubuntu 16.04 LTS -- Summary</h2>" >> ./build_results.html
+
 sca_summary_table_header "OAI Static Code Analysis with CPPCHECK"
 sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Uninitialized variable" uninitvar
 sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Uninitialized struct member" uninitStructMember
@@ -547,6 +549,15 @@ summary_table_row "RB Tools - Release 14" ./archives/ue_eth/rb_tool.Rel14.txt "B
 summary_table_row "NAS Mesh - Release 14" ./archives/ue_eth/nasmesh.Rel14.txt "Built target nasmesh" ./ue_eth_row6.html
 summary_table_footer
 
+echo "   <h2>Red Hat (CentOS Linux release 7.4.1708) -- Summary</h2>" >> ./build_results.html
+
+summary_table_header "Red Hat -- OAI Build eNB -- USRP option"
+summary_table_row "LTE SoftModem - Release 14" ./archives/red_hat/lte-softmodem.Rel14.txt "Built target lte-softmodem" ./enb_usrp_rh_row1.html
+summary_table_row "Coding - Release 14" ./archives/red_hat/coding.Rel14.txt "Built target coding" ./enb_usrp_rh_row2.html
+summary_table_row "OAI USRP device if - Release 14" ./archives/red_hat/oai_usrpdevif.Rel14.txt "Built target oai_usrpdevif" ./enb_usrp_rh_row3.html
+summary_table_row "Parameters Lib Config - Release 14" ./archives/red_hat/params_libconfig.Rel14.txt "Built target params_libconfig" ./enb_usrp_rh_row4.html
+summary_table_footer
+
 echo "   <h3>Details</h3>" >> ./build_results.html
 
 for DETAILS_TABLE in `ls ./enb_usrp_row*.html`
@@ -569,7 +580,11 @@ for DETAILS_TABLE in `ls ./ue_eth_row*.html`
 do
     cat $DETAILS_TABLE >> ./build_results.html
 done
-rm -f ./enb_usrp_row*.html ./basic_sim_row*.html ./phy_sim_row*.html ./enb_eth_row*.html ./ue_eth_row*.html
+for DETAILS_TABLE in `ls ./enb_usrp_rh_row*.html`
+do
+    cat $DETAILS_TABLE >> ./build_results.html
+done
+rm -f ./enb_usrp_row*.html ./basic_sim_row*.html ./phy_sim_row*.html ./enb_eth_row*.html ./ue_eth_row*.html ./enb_usrp_rh_row*.html
 
 echo "</body>" >> ./build_results.html
 echo "</html>" >> ./build_results.html
diff --git a/ci-scripts/reportTestLocally.sh b/ci-scripts/reportTestLocally.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9d7ce0ac40f9810fe5c00f6428cc4cf87e24216f
--- /dev/null
+++ b/ci-scripts/reportTestLocally.sh
@@ -0,0 +1,510 @@
+#!/bin/bash
+#/*
+# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# * contributor license agreements.  See the NOTICE file distributed with
+# * this work for additional information regarding copyright ownership.
+# * The OpenAirInterface Software Alliance licenses this file to You under
+# * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+# * except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *      http://www.openairinterface.org/?page_id=698
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *-------------------------------------------------------------------------------
+# * For more information about the OpenAirInterface (OAI) Software Alliance:
+# *      contact@openairinterface.org
+# */
+
+function usage {
+    echo "OAI Test Report script"
+    echo "   Original Author: Raphael Defosseux"
+    echo ""
+    echo "Usage:"
+    echo "------"
+    echo ""
+    echo "    reportTestLocally.sh [OPTIONS]"
+    echo ""
+    echo "Options:"
+    echo "--------"
+    echo ""
+    echo "    --help OR -h"
+    echo "    Print this help message."
+    echo ""
+    echo "Job Options:"
+    echo "------------"
+    echo ""
+    echo "    --git-url #### OR -gu ####"
+    echo "    Specify the URL of the GIT Repository."
+    echo ""
+    echo "    --job-name #### OR -jn ####"
+    echo "    Specify the name of the Jenkins job."
+    echo ""
+    echo "    --build-id #### OR -id ####"
+    echo "    Specify the build ID of the Jenkins job."
+    echo ""
+    echo "    --trigger merge-request OR -mr"
+    echo "    --trigger push          OR -pu"
+    echo "    Specify trigger action of the Jenkins job. Either a merge-request event or a push event."
+    echo ""
+    echo "Merge-Request Options:"
+    echo "----------------------"
+    echo ""
+    echo "    --src-branch #### OR -sb ####"
+    echo "    Specify the source branch of the merge request."
+    echo ""
+    echo "    --src-commit #### OR -sc ####"
+    echo "    Specify the source commit ID (SHA-1) of the merge request."
+    echo ""
+    echo "    --target-branch #### OR -tb ####"
+    echo "    Specify the target branch of the merge request (usually develop)."
+    echo ""
+    echo "    --target-commit #### OR -tc ####"
+    echo "    Specify the target commit ID (SHA-1) of the merge request."
+    echo ""
+    echo "Push Options:"
+    echo "----------------------"
+    echo ""
+    echo "    --branch #### OR -br ####"
+    echo "    Specify the branch of the push event."
+    echo ""
+    echo "    --commit #### OR -co ####"
+    echo "    Specify the commit ID (SHA-1) of the push event."
+    echo ""
+    echo ""
+}
+
+function trigger_usage {
+    echo "OAI Test Report script"
+    echo "   Original Author: Raphael Defosseux"
+    echo ""
+    echo "    --trigger merge-request OR -mr"
+    echo "    --trigger push          OR -pu"
+    echo "    Specify trigger action of the Jenkins job. Either a merge-request event or a push event."
+    echo ""
+}
+
+jb_checker=0
+mr_checker=0
+pu_checker=0
+MR_TRIG=0
+PU_TRIG=0
+while [[ $# -gt 0 ]]
+do
+key="$1"
+
+case $key in
+    -h|--help)
+    shift
+    usage
+    exit 0
+    ;;
+    -gu|--git-url)
+    GIT_URL="$2"
+    let "jb_checker|=0x1"
+    shift
+    shift
+    ;;
+    -jn|--job-name)
+    JOB_NAME="$2"
+    let "jb_checker|=0x2"
+    shift
+    shift
+    ;;
+    -id|--build-id)
+    BUILD_ID="$2"
+    let "jb_checker|=0x4"
+    shift
+    shift
+    ;;
+    --trigger)
+    TRIG="$2"
+    case $TRIG in
+        merge-request)
+        MR_TRIG=1
+        ;;
+        push)
+        PU_TRIG=1
+        ;;
+        *)
+        echo ""
+        echo "Syntax Error: Invalid Trigger option -> $TRIG"
+        echo ""
+        trigger_usage
+        exit
+        ;;
+    esac
+    let "jb_checker|=0x8"
+    shift
+    shift
+    ;;
+    -mr)
+    MR_TRIG=1
+    let "jb_checker|=0x8"
+    shift
+    ;;
+    -pu)
+    PU_TRIG=1
+    let "jb_checker|=0x8"
+    shift
+    ;;
+    -sb|--src-branch)
+    SOURCE_BRANCH="$2"
+    let "mr_checker|=0x1"
+    shift
+    shift
+    ;;
+    -sc|--src-commit)
+    SOURCE_COMMIT_ID="$2"
+    let "mr_checker|=0x2"
+    shift
+    shift
+    ;;
+    -tb|--target-branch)
+    TARGET_BRANCH="$2"
+    let "mr_checker|=0x4"
+    shift
+    shift
+    ;;
+    -tc|--target-commit)
+    TARGET_COMMIT_ID="$2"
+    let "mr_checker|=0x8"
+    shift
+    shift
+    ;;
+    -br|--branch)
+    SOURCE_BRANCH="$2"
+    let "pu_checker|=0x1"
+    shift
+    shift
+    ;;
+    -co|--commit)
+    SOURCE_COMMIT_ID="$2"
+    let "pu_checker|=0x2"
+    shift
+    shift
+    ;;
+    *)
+    echo "Syntax Error: unknown option: $key"
+    echo ""
+    usage
+    exit 1
+    ;;
+esac
+
+done
+
+if [ $jb_checker -ne 15 ]
+then
+    echo ""
+    echo "Syntax Error: missing job information."
+    # TODO : list missing info
+    echo ""
+    exit 1
+fi
+
+if [ $PU_TRIG -eq 1 ] && [ $MR_TRIG -eq 1 ]
+then
+    echo ""
+    echo "Syntax Error: trigger action incoherent."
+    echo ""
+    trigger_usage
+    exit 1
+fi
+
+if [ $PU_TRIG -eq 1 ]
+then
+    if [ $pu_checker -ne 3 ]
+    then
+        echo ""
+        echo "Syntax Error: missing push information."
+        # TODO : list missing info
+        echo ""
+        exit 1
+    fi
+fi
+
+if [ $MR_TRIG -eq 1 ]
+then
+    if [ $mr_checker -ne 15 ]
+    then
+        echo ""
+        echo "Syntax Error: missing merge-request information."
+        # TODO : list missing info
+        echo ""
+        exit 1
+    fi
+fi
+
+echo "<!DOCTYPE html>" > ./test_simulator_results.html
+echo "<html class=\"no-js\" lang=\"en-US\">" >> ./test_simulator_results.html
+echo "<head>" >> ./test_simulator_results.html
+echo "  <title>Simulator Results for $JOB_NAME job build #$BUILD_ID</title>" >> ./test_simulator_results.html
+echo "  <base href = \"http://www.openairinterface.org/\" />" >> ./test_simulator_results.html
+echo "</head>" >> ./test_simulator_results.html
+echo "<body>" >> ./test_simulator_results.html
+echo "  <table style=\"border-collapse: collapse; border: none;\">" >> ./test_simulator_results.html
+echo "    <tr style=\"border-collapse: collapse; border: none;\">" >> ./test_simulator_results.html
+echo "      <td style=\"border-collapse: collapse; border: none;\">" >> ./test_simulator_results.html
+echo "        <a href=\"http://www.openairinterface.org/\">" >> ./test_simulator_results.html
+echo "           <img src=\"/wp-content/uploads/2016/03/cropped-oai_final_logo2.png\" alt=\"\" border=\"none\" height=50 width=150>" >> ./test_simulator_results.html
+echo "           </img>" >> ./test_simulator_results.html
+echo "        </a>" >> ./test_simulator_results.html
+echo "      </td>" >> ./test_simulator_results.html
+echo "      <td style=\"border-collapse: collapse; border: none; vertical-align: center;\">" >> ./test_simulator_results.html
+echo "        <b><font size = \"6\">Job Summary -- Job: $JOB_NAME -- Build-ID: $BUILD_ID</font></b>" >> ./test_simulator_results.html
+echo "      </td>" >> ./test_simulator_results.html
+echo "    </tr>" >> ./test_simulator_results.html
+echo "  </table>" >> ./test_simulator_results.html
+echo "  <br>" >> ./test_simulator_results.html
+echo "   <table border = \"1\">" >> ./test_simulator_results.html
+echo "      <tr>" >> ./test_simulator_results.html
+echo "        <td bgcolor = \"lightcyan\" >GIT Repository</td>" >> ./test_simulator_results.html
+echo "        <td><a href=\"$GIT_URL\">$GIT_URL</a></td>" >> ./test_simulator_results.html
+echo "      </tr>" >> ./test_simulator_results.html
+echo "      <tr>" >> ./test_simulator_results.html
+echo "        <td bgcolor = \"lightcyan\" >Job Trigger</td>" >> ./test_simulator_results.html
+if [ $PU_TRIG -eq 1 ]; then echo "        <td>Push Event</td>" >> ./test_simulator_results.html; fi
+if [ $MR_TRIG -eq 1 ]; then echo "        <td>Merge-Request</td>" >> ./test_simulator_results.html; fi
+echo "      </tr>" >> ./test_simulator_results.html
+if [ $PU_TRIG -eq 1 ]
+then
+    echo "      <tr>" >> ./test_simulator_results.html
+    echo "        <td bgcolor = \"lightcyan\" >Branch</td>" >> ./test_simulator_results.html
+    echo "        <td>$SOURCE_BRANCH</td>" >> ./test_simulator_results.html
+    echo "      </tr>" >> ./test_simulator_results.html
+    echo "      <tr>" >> ./test_simulator_results.html
+    echo "        <td bgcolor = \"lightcyan\" >Commit ID</td>" >> ./test_simulator_results.html
+    echo "        <td>$SOURCE_COMMIT_ID</td>" >> ./test_simulator_results.html
+    echo "      </tr>" >> ./test_simulator_results.html
+fi
+if [ $MR_TRIG -eq 1 ]
+then
+    echo "      <tr>" >> ./test_simulator_results.html
+    echo "        <td bgcolor = \"lightcyan\" >Source Branch</td>" >> ./test_simulator_results.html
+    echo "        <td>$SOURCE_BRANCH</td>" >> ./test_simulator_results.html
+    echo "      </tr>" >> ./test_simulator_results.html
+    echo "      <tr>" >> ./test_simulator_results.html
+    echo "        <td bgcolor = \"lightcyan\" >Source Commit ID</td>" >> ./test_simulator_results.html
+    echo "        <td>$SOURCE_COMMIT_ID</td>" >> ./test_simulator_results.html
+    echo "      </tr>" >> ./test_simulator_results.html
+    echo "      <tr>" >> ./test_simulator_results.html
+    echo "        <td bgcolor = \"lightcyan\" >Target Branch</td>" >> ./test_simulator_results.html
+    echo "        <td>$TARGET_BRANCH</td>" >> ./test_simulator_results.html
+    echo "      </tr>" >> ./test_simulator_results.html
+    echo "      <tr>" >> ./test_simulator_results.html
+    echo "        <td bgcolor = \"lightcyan\" >Target Commit ID</td>" >> ./test_simulator_results.html
+    echo "        <td>$TARGET_COMMIT_ID</td>" >> ./test_simulator_results.html
+    echo "      </tr>" >> ./test_simulator_results.html
+fi
+echo "   </table>" >> ./test_simulator_results.html
+echo "   <h2>Test Summary</h2>" >> ./test_simulator_results.html
+
+ARCHIVES_LOC=archives/basic_sim/test
+if [ -d $ARCHIVES_LOC ]
+then
+    echo "   <h3>Basic Simulator Check</h3>" >> ./test_simulator_results.html
+
+    echo "   <table border = \"1\">" >> ./test_simulator_results.html
+    echo "      <tr bgcolor = \"#33CCFF\" >" >> ./test_simulator_results.html
+    echo "        <th>Log File Name</th>" >> ./test_simulator_results.html
+    echo "        <th>Command</th>" >> ./test_simulator_results.html
+    echo "        <th>Status</th>" >> ./test_simulator_results.html
+    echo "        <th>Statistics</th>" >> ./test_simulator_results.html
+    echo "      </tr>" >> ./test_simulator_results.html
+
+    PING_TESTS=`ls $ARCHIVES_LOC/*ping*txt`
+    for PING_CASE in $PING_TESTS
+    do
+        echo "      <tr>" >> ./test_simulator_results.html
+        NAME=`echo $PING_CASE | sed -e "s#$ARCHIVES_LOC/##"`
+        echo "        <td>$NAME</td>" >> ./test_simulator_results.html
+        CMD=`egrep "COMMAND IS" $PING_CASE | sed -e "s#COMMAND IS: ##"`
+        echo "        <td>$CMD</td>" >> ./test_simulator_results.html
+        FILE_COMPLETE=`egrep -c "ping statistics" $PING_CASE`
+        if [ $FILE_COMPLETE -eq 0 ]
+        then
+            echo "        <td bgcolor = \"red\" >KO</td>" >> ./test_simulator_results.html
+            echo "        <td>N/A</td>" >> ./test_simulator_results.html
+        else
+            NB_TR_PACKETS=`egrep "packets transmitted" $PING_CASE | sed -e "s# packets transmitted.*##"`
+            NB_RC_PACKETS=`egrep "packets transmitted" $PING_CASE | sed -e "s#^.*packets transmitted, ##" -e "s# received,.*##"`
+            if [ $NB_TR_PACKETS -eq $NB_RC_PACKETS ]
+            then
+                echo "        <td bgcolor = \"green\" >OK</td>" >> ./test_simulator_results.html
+            else
+                echo "        <td bgcolor = \"red\" >KO</td>" >> ./test_simulator_results.html
+            fi
+            echo "        <td>" >> ./test_simulator_results.html
+            echo "            <pre>" >> ./test_simulator_results.html
+            STATS=`egrep "packets transmitted" $PING_CASE | sed -e "s#^.*received, ##" -e "s#, time.*##" -e "s# packet loss##"`
+            echo "Packet Loss : $STATS" >> ./test_simulator_results.html
+            RTTMIN=`egrep "rtt min" $PING_CASE | awk '{split($4,a,"/"); print a[1] " " $5}'`
+            echo "RTT Minimal : $RTTMIN" >> ./test_simulator_results.html
+            RTTAVG=`egrep "rtt min" $PING_CASE | awk '{split($4,a,"/"); print a[2] " " $5}'`
+            echo "RTT Average : $RTTAVG" >> ./test_simulator_results.html
+            RTTMAX=`egrep "rtt min" $PING_CASE | awk '{split($4,a,"/"); print a[3] " " $5}'`
+            echo "RTT Maximal : $RTTMAX" >> ./test_simulator_results.html
+            echo "            </pre>" >> ./test_simulator_results.html
+            echo "        </td>" >> ./test_simulator_results.html
+        fi
+        echo "      </tr>" >> ./test_simulator_results.html
+    done
+
+    IPERF_TESTS=`ls $ARCHIVES_LOC/*iperf*client*txt`
+    for IPERF_CASE in $IPERF_TESTS
+    do
+        echo "      <tr>" >> ./test_simulator_results.html
+        NAME=`echo $IPERF_CASE | sed -e "s#$ARCHIVES_LOC/##"`
+        echo "        <td>$NAME</td>" >> ./test_simulator_results.html
+        CMD=`egrep "COMMAND IS" $IPERF_CASE | sed -e "s#COMMAND IS: ##"`
+        echo "        <td>$CMD</td>" >> ./test_simulator_results.html
+        REQ_BITRATE=`echo $CMD | sed -e "s#^.*-b ##" -e "s#-i 1.*##"`
+        if [[ $REQ_BITRATE =~ .*K.* ]]
+        then
+            REQ_BITRATE=`echo $REQ_BITRATE | sed -e "s#K##"`
+            FLOAT_REQ_BITRATE=`echo "$REQ_BITRATE * 1000.0" | bc -l`
+        fi
+        if [[ $REQ_BITRATE =~ .*M.* ]]
+        then
+            REQ_BITRATE=`echo $REQ_BITRATE | sed -e "s#M##"`
+            FLOAT_REQ_BITRATE=`echo "$REQ_BITRATE * 1000000.0" | bc -l`
+        fi
+        if [[ $REQ_BITRATE =~ .*G.* ]]
+        then
+            REQ_BITRATE=`echo $REQ_BITRATE | sed -e "s#G##"`
+            FLOAT_REQ_BITRATE=`echo "$REQ_BITRATE * 1000000000.0" | bc -l`
+        fi
+        FILE_COMPLETE=`egrep -c "Server Report" $IPERF_CASE`
+        if [ $FILE_COMPLETE -eq 0 ]
+        then
+            echo "        <td bgcolor = \"red\" >KO</td>" >> ./test_simulator_results.html
+            SERVER_FILE=`echo $IPERF_CASE | sed -e "s#client#server#"`
+            FLOAT_EFF_BITRATE=`grep --color=never sec $SERVER_FILE | sed -e "s#^.*Bytes *##" -e "s#sec *.*#sec#" | awk 'BEGIN{s=0;n=0}{n++;if ($2 ~/Mbits/){a = $1 * 1000000};if ($2 ~/Kbits/){a = $1 * 1000};s=s+a}END{br=s/n; printf "%.0f", br}'`
+            EFFECTIVE_BITRATE=`grep --color=never sec $SERVER_FILE | sed -e "s#^.*Bytes *##" -e "s#sec *.*#sec#" | awk 'BEGIN{s=0;n=0}{n++;if ($2 ~/Mbits/){a = $1 * 1000000};if ($2 ~/Kbits/){a = $1 * 1000};s=s+a}END{br=s/n; if(br>1000000){printf "%.2f MBits/sec", br/1000000}}'`
+            PERF=`echo "100 * $FLOAT_EFF_BITRATE / $FLOAT_REQ_BITRATE" | bc -l | awk '{printf "%.2f", $0}'`
+            JITTER=`grep --color=never sec $SERVER_FILE | sed -e "s#^.*/sec *##" -e "s# *ms.*##" | awk 'BEGIN{s=0;n=0}{n++;s+=$1}END{jitter=s/n; printf "%.3f ms", jitter}'`
+            PACKETLOSS_NOSIGN=`grep --color=never sec $SERVER_FILE | sed -e "s#^.*(##" -e "s#%.*##" | awk 'BEGIN{s=0;n=0}{n++;s+=$1}END{per=s/n; printf "%.1f", per}'`
+            PACKETLOSS=`echo "${PACKETLOSS_NOSIGN}%"`
+        else
+            EFFECTIVE_BITRATE=`tail -n3 $IPERF_CASE | egrep "Mbits/sec" | sed -e "s#^.*MBytes *##" -e "s#sec.*#sec#"`
+            if [[ $EFFECTIVE_BITRATE =~ .*Kbits/sec.* ]]
+            then
+                EFFECTIVE_BITRATE=`echo $EFFECTIVE_BITRATE | sed -e "s# *Kbits/sec.*##"`
+                FLOAT_EFF_BITRATE=`echo "$EFFECTIVE_BITRATE * 1000" | bc -l`
+            fi
+            if [[ $EFFECTIVE_BITRATE =~ .*Mbits/sec.* ]]
+            then
+                EFFECTIVE_BITRATE=`echo $EFFECTIVE_BITRATE | sed -e "s# *Mbits/sec.*##"`
+                FLOAT_EFF_BITRATE=`echo "$EFFECTIVE_BITRATE * 1000000" | bc -l`
+            fi
+            if [[ $EFFECTIVE_BITRATE =~ .*Gbits/sec.* ]]
+            then
+                EFFECTIVE_BITRATE=`echo $EFFECTIVE_BITRATE | sed -e "s# *Gbits/sec.*##"`
+                FLOAT_EFF_BITRATE=`echo "$EFFECTIVE_BITRATE * 1000000000" | bc -l`
+            fi
+            PERF=`echo "100 * $FLOAT_EFF_BITRATE / $FLOAT_REQ_BITRATE" | bc -l | awk '{printf "%.2f", $0}'`
+            PERF_INT=`echo "100 * $FLOAT_EFF_BITRATE / $FLOAT_REQ_BITRATE" | bc -l | awk '{printf "%.0f", $0}'`
+            if [[ $PERF_INT -lt 90 ]]
+            then
+                echo "        <td bgcolor = \"red\" >KO</td>" >> ./test_simulator_results.html
+            else
+                echo "        <td bgcolor = \"green\" >OK</td>" >> ./test_simulator_results.html
+            fi
+            EFFECTIVE_BITRATE=`tail -n3 $IPERF_CASE | egrep "Mbits/sec" | sed -e "s#^.*MBytes *##" -e "s#sec.*#sec#"`
+            JITTER=`tail -n3 $IPERF_CASE | egrep "Mbits/sec" | sed -e "s#^.*Mbits/sec *##" -e "s#ms.*#ms#"`
+            PACKETLOSS=`tail -n3 $IPERF_CASE | egrep "Mbits/sec" | sed -e "s#^.*(##" -e "s#).*##"`
+        fi
+        echo "        <td>" >> ./test_simulator_results.html
+        echo "            <pre>" >> ./test_simulator_results.html
+        echo "Bitrate      : $EFFECTIVE_BITRATE" >> ./test_simulator_results.html
+        echo "Bitrate Perf : $PERF %" >> ./test_simulator_results.html
+        echo "Jitter       : $JITTER" >> ./test_simulator_results.html
+        echo "Packet Loss  : $PACKETLOSS" >> ./test_simulator_results.html
+        echo "            </pre>" >> ./test_simulator_results.html
+        echo "        </td>" >> ./test_simulator_results.html
+        echo "      </tr>" >> ./test_simulator_results.html
+    done
+
+    echo "   </table>" >> ./test_simulator_results.html
+fi
+
+ARCHIVES_LOC=archives/phy_sim/test
+if [ -d $ARCHIVES_LOC ]
+then
+    echo "   <h3>Physical Simulators Check</h3>" >> ./test_simulator_results.html
+
+    echo "   <table border = \"1\">" >> ./test_simulator_results.html
+    echo "      <tr bgcolor = \"#33CCFF\" >" >> ./test_simulator_results.html
+    echo "        <th>Log File Name</th>" >> ./test_simulator_results.html
+    echo "        <th>Nb Tests</th>" >> ./test_simulator_results.html
+    echo "        <th>Nb Errors</th>" >> ./test_simulator_results.html
+    echo "        <th>Nb Failures</th>" >> ./test_simulator_results.html
+    echo "        <th>Nb Failures</th>" >> ./test_simulator_results.html
+    echo "      </tr>" >> ./test_simulator_results.html
+
+    XML_TESTS=`ls $ARCHIVES_LOC/*xml`
+    for XML_FILE in $XML_TESTS
+    do
+        echo "      <tr>" >> ./test_simulator_results.html
+        NAME=`echo $XML_FILE | sed -e "s#$ARCHIVES_LOC/##"`
+        NB_TESTS=`egrep "testsuite errors" $XML_FILE | sed -e "s#^.*tests='##" -e "s#' *time=.*##"`
+        NB_ERRORS=`egrep "testsuite errors" $XML_FILE | sed -e "s#^.*errors='##" -e "s#' *failures=.*##"`
+        NB_FAILURES=`egrep "testsuite errors" $XML_FILE | sed -e "s#^.*failures='##" -e "s#' *hostname=.*##"`
+        NB_SKIPPED=`egrep "testsuite errors" $XML_FILE | sed -e "s#^.*skipped='##" -e "s#' *tests=.*##"`
+        if [ $NB_ERRORS -eq 0 ] && [ $NB_FAILURES -eq 0 ]
+        then
+            echo "        <td bgcolor = \"green\" >$NAME</td>" >> ./test_simulator_results.html
+        else
+            echo "        <td bgcolor = \"red\" >$NAME</td>" >> ./test_simulator_results.html
+        fi
+        echo "        <td>$NB_TESTS</td>" >> ./test_simulator_results.html
+        echo "        <td>$NB_ERRORS</td>" >> ./test_simulator_results.html
+        echo "        <td>$NB_FAILURES</td>" >> ./test_simulator_results.html
+        echo "        <td>$NB_SKIPPED</td>" >> ./test_simulator_results.html
+        echo "      </tr>" >> ./test_simulator_results.html
+    done
+
+    echo "   </table>" >> ./test_simulator_results.html
+
+    echo "   <h4>Details</h4>" >> ./test_simulator_results.html
+    for XML_FILE in $XML_TESTS
+    do
+        echo "   <table border = \"1\">" >> ./test_simulator_results.html
+        echo "      <tr bgcolor = \"#33CCFF\" >" >> ./test_simulator_results.html
+        echo "        <th>Test Name</th>" >> ./test_simulator_results.html
+        echo "        <th>Description</th>" >> ./test_simulator_results.html
+        echo "        <th>Result</th>" >> ./test_simulator_results.html
+        echo "        <th>Time</th>" >> ./test_simulator_results.html
+        echo "      </tr>" >> ./test_simulator_results.html
+        TESTCASES_LIST=`sed -e "s# #@#g" $XML_FILE | grep testcase`
+        for TESTCASE in $TESTCASES_LIST
+        do
+            echo "      <tr>" >> ./test_simulator_results.html
+            NAME=`echo $TESTCASE | sed -e "s#^.*name='##" -e "s#'@description=.*##" | sed -e "s#@# #g"`
+            echo "          <td>$NAME</td>" >> ./test_simulator_results.html
+            DESC=`echo $TESTCASE | sed -e "s#^.*description='##" -e "s#'@Run_result=.*##" | sed -e "s#@# #g"`
+            echo "          <td>$DESC</td>" >> ./test_simulator_results.html
+            RESULT=`echo $TESTCASE | sed -e "s#^.*RESULT='##" -e "s#'.*##" | sed -e "s#@# #g"`
+            if [[ $RESULT =~ .*PASS.* ]]
+            then
+                echo "          <td bgcolor = \"green\" >$RESULT</td>" >> ./test_simulator_results.html
+            else
+                echo "          <td bgcolor = \"red\" >$RESULT</td>" >> ./test_simulator_results.html
+            fi
+            TIME=`echo $TESTCASE | sed -e "s#^.*time='##" -e "s#'@RESULT=.*##" | sed -e "s#@# #g"`
+            echo "          <td>$TIME</td>" >> ./test_simulator_results.html
+            echo "      </tr>" >> ./test_simulator_results.html
+        done
+        echo "   </table>" >> ./test_simulator_results.html
+    done
+fi
+
+echo "</body>" >> ./test_simulator_results.html
+echo "</html>" >> ./test_simulator_results.html
+
+exit 0
diff --git a/ci-scripts/runTestOnVM.sh b/ci-scripts/runTestOnVM.sh
index 68438758f5bf41936520958be57f33c9addc86a8..971050fbb3cc65610be89f840756eec912279fe3 100755
--- a/ci-scripts/runTestOnVM.sh
+++ b/ci-scripts/runTestOnVM.sh
@@ -70,6 +70,196 @@ function variant_usage {
     echo ""
 }
 
+function start_basic_sim_enb {
+    local LOC_VM_IP_ADDR=$2
+    local LOC_EPC_IP_ADDR=$3
+    local LOC_LOG_FILE=$4
+    local LOC_NB_RBS=$5
+    echo "cd /home/ubuntu/tmp" > $1
+    echo "echo \"sudo apt-get --yes --quiet install daemon \"" >> $1
+    echo "sudo apt-get --yes install daemon >> /home/ubuntu/tmp/cmake_targets/log/daemon-install.txt 2>&1" >> $1
+    echo "echo \"export ENODEB=1\"" >> $1
+    echo "export ENODEB=1" >> $1
+    echo "echo \"source oaienv\"" >> $1
+    echo "source oaienv" >> $1
+    echo "cd ci-scripts/conf_files/" >> $1
+    echo "cp lte-basic-sim.conf ci-lte-basic-sim.conf" >> $1
+    echo "sed -i -e 's#N_RB_DL.*=.*;#N_RB_DL                                         = $LOC_NB_RBS;#' -e 's#CI_MME_IP_ADDR#$LOC_EPC_IP_ADDR#' -e 's#CI_ENB_IP_ADDR#$LOC_VM_IP_ADDR#' ci-lte-basic-sim.conf" >> $1
+    echo "echo \"grep N_RB_DL ci-lte-basic-sim.conf\"" >> $1
+    echo "grep N_RB_DL ci-lte-basic-sim.conf | sed -e 's#N_RB_DL.*=#N_RB_DL =#'" >> $1
+    echo "echo \"cd /home/ubuntu/tmp/cmake_targets/basic_simulator/enb/\"" >> $1
+    echo "cd /home/ubuntu/tmp/cmake_targets/basic_simulator/enb/" >> $1
+    echo "echo \"./lte-softmodem -O /home/ubuntu/tmp/ci-scripts/conf_files/ci-lte-basic-sim.conf\" > ./my-lte-softmodem-run.sh " >> $1
+    echo "chmod 775 ./my-lte-softmodem-run.sh" >> $1
+    echo "cat ./my-lte-softmodem-run.sh" >> $1
+    echo "sudo -E daemon --inherit --unsafe --name=enb_daemon --chdir=/home/ubuntu/tmp/cmake_targets/basic_simulator/enb -o /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE ./my-lte-softmodem-run.sh" >> $1
+
+    ssh -o StrictHostKeyChecking=no ubuntu@$LOC_VM_IP_ADDR < $1
+    sleep 60
+    rm $1
+}
+
+function start_basic_sim_ue {
+    local LOC_UE_LOG_FILE=$3
+    local LOC_NB_RBS=$4
+    echo "echo \"cd /home/ubuntu/tmp/cmake_targets/basic_simulator/ue\"" > $1
+    echo "cd /home/ubuntu/tmp/cmake_targets/basic_simulator/ue" > $1
+    echo "echo \"./lte-uesoftmodem -C 2680000000 -r $LOC_NB_RBS --ue-rxgain 140\" > ./my-lte-uesoftmodem-run.sh" >> $1
+    echo "chmod 775 ./my-lte-uesoftmodem-run.sh" >> $1
+    echo "cat ./my-lte-uesoftmodem-run.sh" >> $1
+    echo "sudo -E daemon --inherit --unsafe --name=ue_daemon --chdir=/home/ubuntu/tmp/cmake_targets/basic_simulator/ue -o /home/ubuntu/tmp/cmake_targets/log/$LOC_UE_LOG_FILE ./my-lte-uesoftmodem-run.sh" >> $1
+
+    ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1
+    rm $1
+
+    local i="0"
+    echo "ifconfig oip1 | egrep -c \"inet addr\"" > $1
+    while [ $i -lt 40 ]
+    do
+        sleep 5
+        CONNECTED=`ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1`
+        if [ $CONNECTED -eq 1 ]
+        then
+            i="100"
+        else
+            i=$[$i+1]
+        fi
+    done
+    rm $1
+    if [ $i -lt 50 ]
+    then
+        UE_SYNC=0
+    else
+        UE_SYNC=1
+    fi
+}
+
+function get_ue_ip_addr {
+    echo "ifconfig oip1 | egrep \"inet addr\" | sed -e 's#^.*inet addr:##' -e 's#  P-t-P:.*\$##'" > $1
+    UE_IP_ADDR=`ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1`
+    echo "UE IP Address for EPC is : $UE_IP_ADDR"
+    rm $1
+}
+
+function ping_ue_ip_addr {
+    echo "echo \"ping -c 20 $3\"" > $1
+    echo "echo \"COMMAND IS: ping -c 20 $3\" > $4" > $1
+    echo "ping -c 20 $UE_IP_ADDR | tee -a $4" >> $1
+    ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1
+    rm -f $1
+}
+
+function check_ping_result {
+    local LOC_PING_FILE=$1
+    local LOC_NB_PINGS=$2
+    if [ -f $LOC_PING_FILE ]
+    then
+        local FILE_COMPLETE=`egrep -c "ping statistics" $LOC_PING_FILE`
+        if [ $FILE_COMPLETE -eq 0 ]
+        then
+            PING_STATUS=-1
+        else
+            local ALL_PACKET_RECEIVED=`egrep -c "$LOC_NB_PINGS received" $LOC_PING_FILE`
+            if [ $ALL_PACKET_RECEIVED -eq 1 ]
+            then
+                echo "got all ping packets"
+            else
+                PING_STATUS=-1
+            fi
+        fi
+    else
+        PING_STATUS=-1
+    fi
+}
+
+function iperf_dl {
+    local REQ_BANDWIDTH=$5
+    local BASE_LOG_FILE=$6
+    echo "echo \"iperf -u -s -i 1\"" > $1
+    echo "echo \"COMMAND IS: iperf -u -s -i 1\" > tmp/cmake_targets/log/${BASE_LOG_FILE}_server.txt" > $1
+    echo "nohup iperf -u -s -i 1 >> tmp/cmake_targets/log/${BASE_LOG_FILE}_server.txt &" >> $1
+    ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1
+    rm $1
+
+    echo "echo \"iperf -c $UE_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1\"" > $3
+    echo "echo \"COMMAND IS: iperf -c $UE_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1\" > ${BASE_LOG_FILE}_client.txt" > $3
+    echo "iperf -c $UE_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1 | tee -a ${BASE_LOG_FILE}_client.txt" >> $3
+    ssh -o StrictHostKeyChecking=no ubuntu@$4 < $3
+    rm -f $3
+
+    echo "killall --signal SIGKILL iperf" >> $1
+    ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1
+    rm $1
+}
+
+function iperf_ul {
+    local REQ_BANDWIDTH=$5
+    local BASE_LOG_FILE=$6
+    echo "echo \"iperf -u -s -i 1\"" > $3
+    echo "echo \"COMMAND IS: iperf -u -s -i 1\" > ${BASE_LOG_FILE}_server.txt" > $3
+    echo "nohup iperf -u -s -i 1 >> ${BASE_LOG_FILE}_server.txt &" >> $3
+    ssh -o StrictHostKeyChecking=no ubuntu@$4 < $3
+    rm $3
+
+    echo "echo \"iperf -c $REAL_EPC_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1\"" > $1
+    echo "echo \"COMMAND IS: iperf -c $REAL_EPC_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1\" > /home/ubuntu/tmp/cmake_targets/log/${BASE_LOG_FILE}_client.txt" > $1
+    echo "iperf -c $REAL_EPC_IP_ADDR -u -t 30 -b ${REQ_BANDWIDTH}M -i 1 | tee -a /home/ubuntu/tmp/cmake_targets/log/${BASE_LOG_FILE}_client.txt" >> $1
+    ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1
+    rm -f $1
+
+    echo "killall --signal SIGKILL iperf" >> $3
+    ssh -o StrictHostKeyChecking=no ubuntu@$4 < $3
+    rm $3
+}
+
+function check_iperf {
+    local LOC_BASE_LOG=$1
+    local LOC_REQ_BW=$2
+    local LOC_REQ_BW_MINUS_ONE=`echo "$LOC_REQ_BW - 1" | bc -l`
+    if [ -f ${LOC_BASE_LOG}_client.txt ]
+    then
+        local FILE_COMPLETE=`egrep -c "Server Report" ${LOC_BASE_LOG}_client.txt`
+        if [ $FILE_COMPLETE -eq 0 ]
+        then
+            IPERF_STATUS=-1
+        else
+            local EFFECTIVE_BANDWIDTH=`tail -n3 ${LOC_BASE_LOG}_client.txt | egrep "Mbits/sec" | sed -e "s#^.*MBytes *##" -e "s#sec.*#sec#"`
+            if [[ $EFFECTIVE_BANDWIDTH =~ .*${LOC_REQ_BW}.*Mbits.* ]] || [[ $EFFECTIVE_BANDWIDTH =~ .*${LOC_REQ_BW_MINUS_ONE}.*Mbits.* ]]
+            then
+                echo "got requested DL bandwidth: $EFFECTIVE_BANDWIDTH"
+            else
+                IPERF_STATUS=-1
+            fi
+        fi
+    else
+        IPERF_STATUS=-1
+    fi
+}
+
+function terminate_enb_ue_basic_sim {
+    echo "echo \"sudo daemon --name=enb_daemon --stop\"" > $1
+    echo "sudo daemon --name=enb_daemon --stop" >> $1
+    echo "echo \"sudo daemon --name=ue_daemon --stop\"" >> $1
+    echo "sudo daemon --name=ue_daemon --stop" >> $1
+    echo "echo \"sudo killall --signal SIGKILL lte-softmodem\"" >> $1
+    echo "sudo killall --signal SIGKILL lte-softmodem" >> $1
+    ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1
+    rm -f $1
+}
+
+function terminate_ltebox_epc {
+    echo "echo \"cd /opt/ltebox/tools\"" > $1
+    echo "cd /opt/ltebox/tools" >> $1
+    echo "echo \"sudo ./stop_ltebox\"" >> $1
+    echo "sudo ./stop_ltebox" >> $1
+    echo "echo \"sudo daemon --name=simulated_hss --stop\"" >> $1
+    echo "sudo daemon --name=simulated_hss --stop" >> $1
+    echo "echo \"sudo killall --signal SIGKILL hss_sim\"" >> $1
+    echo "sudo killall --signal SIGKILL hss_sim" >> $1
+    ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1
+    rm $1
+}
+
 if [ $# -lt 1 ] || [ $# -gt 9 ]
 then
     echo "Syntax Error: not the correct number of arguments"
@@ -122,6 +312,8 @@ case $key in
     ;;
     -v2)
     VM_NAME=ci-basic-sim
+    RUN_OPTIONS="complex"
+    ARCHIVES_LOC=basic_sim/test
     shift
     ;;
     -v3)
@@ -150,6 +342,8 @@ case $key in
         ;;
         basic-sim)
         VM_NAME=ci-basic-sim
+        RUN_OPTIONS="complex"
+        ARCHIVES_LOC=basic_sim/test
         ;;
         phy-sim)
         VM_NAME=ci-phy-sim
@@ -210,8 +404,11 @@ echo "$VM_NAME has for IP addr = $VM_IP_ADDR"
 if [ "$RUN_OPTIONS" == "none" ]
 then
     echo "No run on VM testing for this variant currently"
-else
+    exit $STATUS
+fi
 
+if [[ $RUN_OPTIONS =~ .*run_exec_autotests.* ]]
+then
     echo "############################################################"
     echo "Running test script on VM ($VM_NAME)"
     echo "############################################################"
@@ -271,7 +468,7 @@ else
     rm -f $VM_CMDS
 
     echo "############################################################"
-    echo "Checking build status"
+    echo "Checking run status"
     echo "############################################################"
 
     LOG_FILES=`ls $ARCHIVES_LOC/results_autotests*.xml`
@@ -306,13 +503,346 @@ else
     if [ $NB_RUNS -eq 0 ]; then STATUS=-1; fi
     if [ $NB_FAILURES -ne 0 ]; then STATUS=-1; fi
 
-    if [ $STATUS -eq 0 ]
+fi
+
+if [[ "$RUN_OPTIONS" == "complex" ]] && [[ $VM_NAME =~ .*-basic-sim.* ]]
+then
+    PING_STATUS=0
+    IPERF_STATUS=0
+    if [ -d $ARCHIVES_LOC ]
     then
-        echo "STATUS seems OK"
-    else
-        echo "STATUS failed?"
+        rm -Rf $ARCHIVES_LOC
+    fi
+    mkdir --parents $ARCHIVES_LOC
+
+    EPC_VM_NAME=`echo $VM_NAME | sed -e "s#basic-sim#epc#"`
+    LTEBOX=0
+    if [ -d /opt/ltebox-archives/ ]
+    then
+        # Checking if all ltebox archives are available to run ltebx epc on a brand new VM
+        if [ -f /opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb ] && [ -f /opt/ltebox-archives/etc-conf.zip ] && [ -f /opt/ltebox-archives/hss-sim.zip ]
+        then
+            echo "############################################################"
+            echo "Test EPC on VM ($EPC_VM_NAME) will be using ltebox"
+            echo "############################################################"
+            LTEBOX=1
+        fi
+    fi
+    # Here we could have other types of EPC detection
+
+    # Do we need to start the EPC VM
+    EPC_VM_CMDS=`echo $VM_CMDS | sed -e "s#cmds#epc-cmds#"`
+    echo "EPC_VM_CMD_FILE     = $EPC_VM_CMDS"
+    IS_EPC_VM_ALIVE=`uvt-kvm list | grep -c $EPC_VM_NAME`
+    if [ $IS_EPC_VM_ALIVE -eq 0 ]
+    then
+        echo "############################################################"
+        echo "Creating test EPC VM ($EPC_VM_NAME) on Ubuntu Cloud Image base"
+        echo "############################################################"
+        uvt-kvm create $EPC_VM_NAME release=xenial --unsafe-caching
+    fi
+
+    uvt-kvm wait $EPC_VM_NAME --insecure
+    EPC_VM_IP_ADDR=`uvt-kvm ip $EPC_VM_NAME`
+    echo "$EPC_VM_NAME has for IP addr = $EPC_VM_IP_ADDR"
+    scp -o StrictHostKeyChecking=no /etc/apt/apt.conf.d/01proxy ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu
+
+    # ltebox specific actions (install and start)
+    LTE_BOX_TO_INSTALL=1
+    if [ $LTEBOX -eq 1 ]
+    then
+        echo "ls -ls /opt/ltebox/tools/start_ltebox" > $EPC_VM_CMDS
+        RESPONSE=`ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS`
+        NB_EXES=`echo $RESPONSE | grep -c ltebox`
+        if [ $NB_EXES -eq 1 ]; then LTE_BOX_TO_INSTALL=0; fi
+    fi
+
+    if [ $LTEBOX -eq 1 ] && [ $LTE_BOX_TO_INSTALL -eq 1 ]
+    then
+        echo "############################################################"
+        echo "Copying ltebox archives into EPC VM ($EPC_VM_NAME)" 
+        echo "############################################################"
+        scp -o StrictHostKeyChecking=no /opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu
+        scp -o StrictHostKeyChecking=no /opt/ltebox-archives/etc-conf.zip ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu
+        scp -o StrictHostKeyChecking=no /opt/ltebox-archives/hss-sim.zip ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu
+
+        echo "############################################################"
+        echo "Install EPC on EPC VM ($EPC_VM_NAME)"
+        echo "############################################################"
+        echo "sudo cp 01proxy /etc/apt/apt.conf.d/" > $EPC_VM_CMDS
+        echo "touch /home/ubuntu/.hushlogin" >> $EPC_VM_CMDS
+        echo "echo \"sudo apt-get --yes --quiet install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev daemon iperf\"" >> $EPC_VM_CMDS
+        echo "sudo apt-get update > zip-install.txt 2>&1" >> $EPC_VM_CMDS
+        echo "sudo apt-get --yes install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev daemon iperf >> zip-install.txt 2>&1" >> $EPC_VM_CMDS
+
+        # Installing HSS
+        echo "echo \"cd /opt\"" >> $EPC_VM_CMDS
+        echo "cd /opt" >> $EPC_VM_CMDS
+        echo "echo \"sudo unzip -qq /home/ubuntu/hss-sim.zip\"" >> $EPC_VM_CMDS
+        echo "sudo unzip -qq /home/ubuntu/hss-sim.zip" >> $EPC_VM_CMDS
+        echo "echo \"cd /opt/hss_sim0609\"" >> $EPC_VM_CMDS
+        echo "cd /opt/hss_sim0609" >> $EPC_VM_CMDS
+
+        # Installing ltebox
+        echo "echo \"cd /home/ubuntu\"" >> $EPC_VM_CMDS
+        echo "cd /home/ubuntu" >> $EPC_VM_CMDS
+        echo "echo \"sudo dpkg -i ltebox_2.2.70_16_04_amd64.deb \"" >> $EPC_VM_CMDS
+        echo "sudo dpkg -i ltebox_2.2.70_16_04_amd64.deb >> zip-install.txt 2>&1" >> $EPC_VM_CMDS
+
+        echo "echo \"cd /opt/ltebox/etc/\"" >> $EPC_VM_CMDS
+        echo "cd /opt/ltebox/etc/" >> $EPC_VM_CMDS
+        echo "echo \"sudo unzip -qq -o /home/ubuntu/etc-conf.zip\"" >> $EPC_VM_CMDS
+        echo "sudo unzip -qq -o /home/ubuntu/etc-conf.zip" >> $EPC_VM_CMDS
+        echo "sudo sed -i  -e 's#EPC_VM_IP_ADDRESS#$EPC_VM_IP_ADDR#' gw.conf" >> $EPC_VM_CMDS
+        echo "sudo sed -i  -e 's#EPC_VM_IP_ADDRESS#$EPC_VM_IP_ADDR#' mme.conf" >> $EPC_VM_CMDS
+    fi
+
+    # Starting EPC
+    if [ $LTEBOX -eq 1 ]
+    then
+        echo "############################################################"
+        echo "Start EPC on EPC VM ($EPC_VM_NAME)"
+        echo "############################################################"
+        echo "echo \"cd /opt/hss_sim0609\"" >> $EPC_VM_CMDS
+        echo "cd /opt/hss_sim0609" >> $EPC_VM_CMDS
+        echo "echo \"sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real\"" >> $EPC_VM_CMDS
+        echo "sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real" >> $EPC_VM_CMDS
+
+        echo "echo \"cd /opt/ltebox/tools/\"" >> $EPC_VM_CMDS
+        echo "cd /opt/ltebox/tools/" >> $EPC_VM_CMDS
+        echo "echo \"sudo ./start_ltebox\"" >> $EPC_VM_CMDS
+        echo "nohup sudo ./start_ltebox > /home/ubuntu/ltebox.txt" >> $EPC_VM_CMDS
+
+        ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS
+        rm -f $EPC_VM_CMDS
+
+        # We may have some adaptation to do
+        if [ -f /opt/ltebox-archives/adapt_ue_sim.txt ]
+        then
+            echo "############################################################"
+            echo "Doing some adaptation on UE side"
+            echo "############################################################"
+            ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < /opt/ltebox-archives/adapt_ue_sim.txt
+        fi
+
+        i="0"
+        echo "ifconfig tun5 | egrep -c \"inet addr\"" > $EPC_VM_CMDS
+        while [ $i -lt 10 ]
+        do
+            sleep 2
+            CONNECTED=`ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS`
+            if [ $CONNECTED -eq 1 ]
+            then
+                i="100"
+            else
+                i=$[$i+1]
+            fi
+        done
+        rm $EPC_VM_CMDS
+        if [ $i -lt 50 ]
+        then
+            echo "Problem w/ starting ltebox EPC"
+            exit -1
+        fi
+    fi
+
+    # HERE ADD ANY INSTALL ACTIONS FOR ANOTHER EPC
+
+    # Retrieve EPC real IP address
+    if [ $LTEBOX -eq 1 ]
+    then
+        # in our configuration file, we are using pool 5
+        echo "ifconfig tun5 | egrep \"inet addr\" | sed -e 's#^.*inet addr:##' -e 's#  P-t-P:.*\$##'" > $EPC_VM_CMDS
+        REAL_EPC_IP_ADDR=`ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS`
+        echo "EPC IP Address     is : $REAL_EPC_IP_ADDR"
+        rm $EPC_VM_CMDS
+    fi
+
+    echo "############################################################"
+    echo "Starting the eNB at 5MHz"
+    echo "############################################################"
+    CURRENT_ENB_LOG_FILE=enb_05MHz.log
+    start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 25
+
+    echo "############################################################"
+    echo "Starting the UE at 5MHz"
+    echo "############################################################"
+    CURRENT_UE_LOG_FILE=ue_05MHz.log
+    start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 25
+    if [ $UE_SYNC -eq 0 ]
+    then
+        echo "Problem w/ eNB and UE not syncing"
+        terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR
+        scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
+        scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
+        terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+        exit -1
+    fi
+    get_ue_ip_addr $VM_CMDS $VM_IP_ADDR
+
+    echo "############################################################"
+    echo "Pinging the UE"
+    echo "############################################################"
+    ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR 05MHz_ping_ue.txt
+    scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/05MHz_ping_ue.txt $ARCHIVES_LOC
+    check_ping_result $ARCHIVES_LOC/05MHz_ping_ue.txt 20
+
+    echo "############################################################"
+    echo "Iperf DL"
+    echo "############################################################"
+    CURR_IPERF_LOG_BASE=05MHz_iperf_dl
+    iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE
+    scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC
+    check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15
+
+    echo "############################################################"
+    echo "Iperf UL"
+    echo "############################################################"
+    CURR_IPERF_LOG_BASE=05MHz_iperf_ul
+    iperf_ul $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 2 $CURR_IPERF_LOG_BASE
+    scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC
+    check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 2
+
+    echo "############################################################"
+    echo "Terminate enb/ue simulators"
+    echo "############################################################"
+    terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
+
+    echo "############################################################"
+    echo "Starting the eNB at 10MHz"
+    echo "############################################################"
+    CURRENT_ENB_LOG_FILE=enb_10MHz.log
+    start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 50
+
+    echo "############################################################"
+    echo "Starting the UE at 10MHz"
+    echo "############################################################"
+    CURRENT_UE_LOG_FILE=ue_10MHz.log
+    start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 50
+    if [ $UE_SYNC -eq 0 ]
+    then
+        echo "Problem w/ eNB and UE not syncing"
+        terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR
+        scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
+        scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
+        terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+        exit -1
     fi
+    get_ue_ip_addr $VM_CMDS $VM_IP_ADDR
 
+    echo "############################################################"
+    echo "Pinging the UE"
+    echo "############################################################"
+    ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR 10MHz_ping_ue.txt
+    scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/10MHz_ping_ue.txt $ARCHIVES_LOC
+    check_ping_result $ARCHIVES_LOC/10MHz_ping_ue.txt 20
+
+    echo "############################################################"
+    echo "Iperf DL"
+    echo "############################################################"
+    CURR_IPERF_LOG_BASE=10MHz_iperf_dl
+    iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE
+    scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC
+    check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15
+
+    echo "############################################################"
+    echo "Iperf UL"
+    echo "############################################################"
+    CURR_IPERF_LOG_BASE=10MHz_iperf_ul
+    iperf_ul $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 2 $CURR_IPERF_LOG_BASE
+    scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC
+    check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 2
+
+    echo "############################################################"
+    echo "Terminate enb/ue simulators"
+    echo "############################################################"
+    terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
+
+    echo "############################################################"
+    echo "Starting the eNB at 20MHz"
+    echo "############################################################"
+    CURRENT_ENB_LOG_FILE=enb_20MHz.log
+    start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 100
+
+    echo "############################################################"
+    echo "Starting the UE at 20MHz"
+    echo "############################################################"
+    CURRENT_UE_LOG_FILE=ue_20MHz.log
+    start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 100
+    if [ $UE_SYNC -eq 0 ]
+    then
+        echo "Problem w/ eNB and UE not syncing"
+        terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR
+        scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
+        scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
+        terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+        exit -1
+    fi
+    get_ue_ip_addr $VM_CMDS $VM_IP_ADDR
+
+    echo "############################################################"
+    echo "Pinging the UE"
+    echo "############################################################"
+    ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR 20MHz_ping_ue.txt
+    scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/20MHz_ping_ue.txt $ARCHIVES_LOC
+    check_ping_result $ARCHIVES_LOC/20MHz_ping_ue.txt 20
+
+    echo "############################################################"
+    echo "Iperf DL"
+    echo "############################################################"
+    CURR_IPERF_LOG_BASE=20MHz_iperf_dl
+    iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE
+    scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC
+    check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15
+
+    echo "############################################################"
+    echo "Iperf UL"
+    echo "############################################################"
+    CURR_IPERF_LOG_BASE=20MHz_iperf_ul
+    iperf_ul $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 1 $CURR_IPERF_LOG_BASE
+    scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC
+    check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 1
+
+    echo "############################################################"
+    echo "Terminate enb/ue simulators"
+    echo "############################################################"
+    terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
+
+    echo "############################################################"
+    echo "Terminate EPC"
+    echo "############################################################"
+
+    if [ $LTEBOX -eq 1 ]
+    then
+        terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+    fi
+
+    echo "############################################################"
+    echo "Checking run status"
+    echo "############################################################"
+
+    if [ $PING_STATUS -ne 0 ]; then STATUS=-1; fi
+    if [ $IPERF_STATUS -ne 0 ]; then STATUS=-1; fi
+
+fi
+
+if [ $STATUS -eq 0 ]
+then
+    echo "STATUS seems OK"
+else
+    echo "STATUS failed?"
 fi
 
 exit $STATUS
diff --git a/ci-scripts/xml_files/enb_usrp210_band7.xml b/ci-scripts/xml_files/enb_usrp210_band7.xml
index 5b15d546f30cc051402eabfb525b008e9512b07a..b8a2439106b21632ed5f4bed8f4569da84c785d6 100644
--- a/ci-scripts/xml_files/enb_usrp210_band7.xml
+++ b/ci-scripts/xml_files/enb_usrp210_band7.xml
@@ -21,25 +21,31 @@
 
 -->
 <testCaseList>
-	<TestCaseRequestedList>010101 050101 060101 070101 040101 030101 040301 040501 040601 040602 040603 040401 040201 030201 040101 030111 040301 040511 040611 040612 040613 040401 040201 030201</TestCaseRequestedList>
+	<TestCaseRequestedList>010101 050101 060101 070101 040101 030101 040301 040501 040601 040602 040603 040604 040605 040641 040642 040401 040201 030201 030111 040301 040511 040611 040612 040613 040614 040615 040651 040652 040401 040201 030201 030121 040301 040521 040621 040622 040623 040624 040625 040662 040661 040401 040201 030201 </TestCaseRequestedList>
 	<TestCaseExclusionList></TestCaseExclusionList>
 
 	<testCase id="010101">
 		<class>Build_eNB</class>
 		<desc>Build eNB (USRP)</desc>
-		<Build_eNB_args>-w USRP -x -c --eNB</Build_eNB_args>
+		<Build_eNB_args>-w USRP -c --eNB</Build_eNB_args>
 	</testCase>
 
 	<testCase id="030101">
 		<class>Initialize_eNB</class>
 		<desc>Initialize eNB (FDD/Band7/5MHz)</desc>
-		<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf</Initialize_eNB_args>
+		<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf --codingw --fepw</Initialize_eNB_args>
 	</testCase>
 
 	<testCase id="030111">
 		<class>Initialize_eNB</class>
 		<desc>Initialize eNB (FDD/Band7/10MHz)</desc>
-		<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf</Initialize_eNB_args>
+		<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf --codingw --fepw</Initialize_eNB_args>
+	</testCase>
+
+	<testCase id="030121">
+		<class>Initialize_eNB</class>
+		<desc>Initialize eNB (FDD/Band7/20MHz)</desc>
+		<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf --codingw --fepw</Initialize_eNB_args>
 	</testCase>
 
 	<testCase id="030201">
@@ -81,6 +87,13 @@
                 <ping_packetloss_threshold>5</ping_packetloss_threshold>
         </testCase>
 
+        <testCase id="040521">
+                <class>Ping</class>
+                <desc>ping (20MHz - 20 sec)</desc>
+                <ping_args>-c 20</ping_args>
+                <ping_packetloss_threshold>5</ping_packetloss_threshold>
+        </testCase>
+
 	<testCase id="040601">
 		<class>Iperf</class>
 		<desc>iperf (5MHz - DL/6Mbps/UDP)(60 sec)</desc>
@@ -102,27 +115,141 @@
 		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
         </testCase>
 
+        <testCase id="040604">
+		<class>Iperf</class>
+		<desc>iperf (5MHz - DL/15Mbps/UDP)(60 sec)(single-ue profile)</desc>
+		<iperf_args>-u -b 15M -t 60 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>single-ue</iperf_profile>
+        </testCase>
+
+        <testCase id="040605">
+		<class>Iperf</class>
+		<desc>iperf (5MHz - DL/15Mbps/UDP)(60 sec)(unbalanced profile)</desc>
+		<iperf_args>-u -b 15M -t 60 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>unbalanced</iperf_profile>
+        </testCase>
+
+	<testCase id="040641">
+		<class>Iperf</class>
+		<desc>iperf (5MHz - UL/9Mbps/UDP)(60 sec)</desc>
+		<iperf_args>-u -b 9M -t 60 -i 1 -R</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+	</testCase>
+
+	<testCase id="040642">
+		<class>Iperf</class>
+		<desc>iperf (5MHz - UL/9Mbps/UDP)(60 sec)(single-ue profile)</desc>
+		<iperf_args>-u -b 9M -t 60 -i 1 -R</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>single-ue</iperf_profile>
+	</testCase>
+
 	<testCase id="040611">
 		<class>Iperf</class>
-		<desc>iperf (10MHz - DL/6Mbps/UDP)(60 sec)</desc>
-		<iperf_args>-u -b 6M -t 60 -i 1</iperf_args>
+		<desc>iperf (10MHz - DL/10Mbps/UDP)(60 sec)</desc>
+		<iperf_args>-u -b 10M -t 60 -i 1</iperf_args>
 		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
 	</testCase>
 
         <testCase id="040612">
 		<class>Iperf</class>
-		<desc>iperf (10MHz - DL/13Mbps/UDP)(60 sec)</desc>
-		<iperf_args>-u -b 13M -t 60 -i 1</iperf_args>
+		<desc>iperf (10MHz - DL/20Mbps/UDP)(60 sec)</desc>
+		<iperf_args>-u -b 20M -t 60 -i 1</iperf_args>
 		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
         </testCase>
 
         <testCase id="040613">
 		<class>Iperf</class>
-		<desc>iperf (10MHz - DL/15Mbps/UDP)(60 sec)</desc>
-		<iperf_args>-u -b 15M -t 60 -i 1</iperf_args>
+		<desc>iperf (10MHz - DL/30Mbps/UDP)(60 sec)</desc>
+		<iperf_args>-u -b 30M -t 60 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+        </testCase>
+
+        <testCase id="040614">
+		<class>Iperf</class>
+		<desc>iperf (10MHz - DL/30Mbps/UDP)(60 sec)(single-ue profile)</desc>
+		<iperf_args>-u -b 30M -t 60 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>single-ue</iperf_profile>
+        </testCase>
+
+        <testCase id="040615">
+		<class>Iperf</class>
+		<desc>iperf (10MHz - DL/30Mbps/UDP)(60 sec)(unbalanced profile)</desc>
+		<iperf_args>-u -b 30M -t 60 -i 1</iperf_args>
 		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>unbalanced</iperf_profile>
         </testCase>
 
+	<testCase id="040651">
+		<class>Iperf</class>
+		<desc>iperf (10MHz - UL/20Mbps/UDP)(60 sec)</desc>
+		<iperf_args>-u -b 20M -t 60 -i 1 -R</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+	</testCase>
+
+	<testCase id="040652">
+		<class>Iperf</class>
+		<desc>iperf (10MHz - UL/20Mbps/UDP)(60 sec)(single-ue profile)</desc>
+		<iperf_args>-u -b 20M -t 60 -i 1 -R</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>single-ue</iperf_profile>
+	</testCase>
+
+	<testCase id="040621">
+		<class>Iperf</class>
+		<desc>iperf (20MHz - DL/20Mbps/UDP)(60 sec)</desc>
+		<iperf_args>-u -b 20M -t 60 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+	</testCase>
+
+        <testCase id="040622">
+		<class>Iperf</class>
+		<desc>iperf (20MHz - DL/40Mbps/UDP)(60 sec)</desc>
+		<iperf_args>-u -b 40M -t 60 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+        </testCase>
+
+        <testCase id="040623">
+		<class>Iperf</class>
+		<desc>iperf (20MHz - DL/70Mbps/UDP)(60 sec)</desc>
+		<iperf_args>-u -b 70M -t 60 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+        </testCase>
+
+        <testCase id="040624">
+		<class>Iperf</class>
+		<desc>iperf (20MHz - DL/70Mbps/UDP)(60 sec)(single-ue profile)</desc>
+		<iperf_args>-u -b 70M -t 60 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>single-ue</iperf_profile>
+        </testCase>
+
+        <testCase id="040625">
+		<class>Iperf</class>
+		<desc>iperf (20MHz - DL/70Mbps/UDP)(60 sec)(unbalanced profile)</desc>
+		<iperf_args>-u -b 70M -t 60 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>unbalanced</iperf_profile>
+        </testCase>
+
+	<testCase id="040661">
+		<class>Iperf</class>
+		<desc>iperf (20MHz - UL/20Mbps/UDP)(60 sec)</desc>
+		<iperf_args>-u -b 20M -t 60 -i 1 -R</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+	</testCase>
+
+	<testCase id="040662">
+		<class>Iperf</class>
+		<desc>iperf (20MHz - UL/20Mbps/UDP)(60 sec)(single-ue profile)</desc>
+		<iperf_args>-u -b 20M -t 60 -i 1 -R</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>single-ue</iperf_profile>
+	</testCase>
+
         <testCase id="050101">
 		<class>Initialize_HSS</class>
 		<desc>Initialize HSS</desc>
diff --git a/ci-scripts/xml_files/enb_usrpb210_band40.xml b/ci-scripts/xml_files/enb_usrpb210_band40.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5b54d9b8df4c0a45d37ab30723eda86be5f5fbc5
--- /dev/null
+++ b/ci-scripts/xml_files/enb_usrpb210_band40.xml
@@ -0,0 +1,179 @@
+<!--
+
+ Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The OpenAirInterface Software Alliance licenses this file to You under
+ the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.openairinterface.org/?page_id=698
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ For more information about the OpenAirInterface (OAI) Software Alliance:
+      contact@openairinterface.org
+
+-->
+<testCaseList>
+        <TestCaseRequestedList>010101 050101 060101 070101 040101 030104 040301 040501 040602 040601 040603 040401 040201 030201 030105 040301 040502 040702 040701 040401 040201 030201 050201 060201 070201</TestCaseRequestedList>
+	<TestCaseExclusionList></TestCaseExclusionList>
+
+	<testCase id="010101">
+		<class>Build_eNB</class>
+		<desc>Build eNB (USRP)</desc>
+		<Build_eNB_args>-w USRP -c --eNB</Build_eNB_args>
+	</testCase>
+
+	<testCase id="030104">
+		<class>Initialize_eNB</class>
+		<desc>Initialize eNB (FDD/Band40/10MHz)</desc>
+		<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band40.tm1.25PRB.FairScheduler.usrpb210.conf --codingw --fepw</Initialize_eNB_args>
+	</testCase>
+	
+	<testCase id="030105">
+                <class>Initialize_eNB</class>
+                <desc>Initialize eNB (TDD/Band40/5MHz/info)</desc>
+                <Initialize_eNB_args>-O ci-scripts/conf_files/enb.band40.tm1.50PRB.FairScheduler.usrpb210.conf --codingw --fepw</Initialize_eNB_args>
+        </testCase>
+
+	<testCase id="030201">
+		<class>Terminate_eNB</class>
+		<desc>Terminate eNB</desc>
+	</testCase>
+
+	<testCase id="040101">
+		<class>Initialize_UE</class>
+		<desc>Initialize UE</desc>
+	</testCase>
+
+	<testCase id="040201">
+		<class>Terminate_UE</class>
+		<desc>Terminate UE</desc>
+	</testCase>
+
+        <testCase id="040301">
+                <class>Attach_UE</class>
+                <desc>Attach UE</desc>
+        </testCase>
+
+        <testCase id="040401">
+                <class>Detach_UE</class>
+                <desc>Detach UE</desc>
+        </testCase>
+
+        <testCase id="040501">
+                <class>Ping</class>
+                <desc>ping (5MHz - 20 sec)</desc>
+                <ping_args>-c 20</ping_args>
+                <ping_packetloss_threshold>25</ping_packetloss_threshold>
+        </testCase>
+
+        <testCase id="040502">
+                <class>Ping</class>
+                <desc>ping (10MHz - 20 sec)</desc>
+                <ping_args>-c 20</ping_args>
+                <ping_packetloss_threshold>25</ping_packetloss_threshold>
+        </testCase>
+
+        <testCase id="040601">
+		<class>Iperf</class>
+		<desc>iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(balanced)</desc>
+		<iperf_args>-u -b 6.5M -t 30 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>balanced</iperf_profile>
+        </testCase>
+
+        <testCase id="040602">
+		<class>Iperf</class>
+		<desc>iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(single-ue)</desc>
+		<iperf_args>-u -b 6.5M -t 30 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>single-ue</iperf_profile>
+        </testCase>
+
+        <testCase id="040603">
+		<class>Iperf</class>
+		<desc>iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(unbalanced)</desc>
+		<iperf_args>-u -b 6.5M -t 30 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>unbalanced</iperf_profile>
+        </testCase>
+
+	<testCase id="040701">
+                <class>Iperf</class>
+                <desc>iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(balanced)</desc>
+                <iperf_args>-u -b 13.5M -t 30 -i 1</iperf_args>
+                <iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+                <iperf_profile>balanced</iperf_profile>
+        </testCase>
+
+        <testCase id="040702">
+                <class>Iperf</class>
+                <desc>iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue)</desc>
+                <iperf_args>-u -b 13.5M -t 30 -i 1</iperf_args>
+                <iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+                <iperf_profile>single-ue</iperf_profile>
+        </testCase>
+
+
+	<testCase id="040641">
+		<class>Iperf</class>
+		<desc>iperf (5MHz - UL/1Mbps/UDP)(30 sec)(single-ue)</desc>
+		<iperf_args>-u -b 1M -t 30 -i 1 -R</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>single-ue</iperf_profile>
+	</testCase>
+
+	<testCase id="040642">
+		<class>Iperf</class>
+		<desc>iperf (5MHz - UL/1Mbps/UDP)(30 sec)(balanced)</desc>
+		<iperf_args>-u -b 1M -t 30 -i 1 -R</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>balanced</iperf_profile>
+	</testCase>
+
+	<testCase id="040643">
+		<class>Iperf</class>
+		<desc>iperf (5MHz - UL/8Mbps/UDP)(30 sec)(unbalanced)</desc>
+		<iperf_args>-u -b 8M -t 30 -i 1 -R</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+		<iperf_profile>unbalanced</iperf_profile>
+	</testCase>
+
+        <testCase id="050101">
+		<class>Initialize_HSS</class>
+		<desc>Initialize HSS</desc>
+        </testCase>
+
+	<testCase id="060101">
+		<class>Initialize_MME</class>
+		<desc>Initialize MME</desc>
+	</testCase>
+
+	<testCase id="070101">
+		<class>Initialize_SPGW</class>
+		<desc>Initialize SPGW</desc>
+	</testCase>
+
+        <testCase id="050201">
+                <class>Terminate_HSS</class>
+                <desc>Terminate HSS</desc>
+        </testCase>
+
+        <testCase id="060201">
+                <class>Terminate_MME</class>
+                <desc>Terminate MME</desc>
+        </testCase>
+
+        <testCase id="070201">
+                <class>Terminate_SPGW</class>
+                <desc>Terminate SPGW</desc>
+        </testCase>
+
+</testCaseList>
diff --git a/ci-scripts/xml_files/test_case_list_template.xml b/ci-scripts/xml_files/test_case_list_template.xml
index bc06dc75ce9a4a92b5496b5b50d20777360b46b3..25519dcd039f9a9ab1d479e83769a1d834e4acb9 100644
--- a/ci-scripts/xml_files/test_case_list_template.xml
+++ b/ci-scripts/xml_files/test_case_list_template.xml
@@ -29,13 +29,13 @@
 	<testCase id="010101">
 		<class>Build_eNB</class>
 		<desc>Build eNB (USRP)</desc>
-		<Build_eNB_args>-w USRP -x -c --eNB</Build_eNB_args>
+		<Build_eNB_args>-w USRP -c --eNB</Build_eNB_args>
 	</testCase>
 
 	<testCase id="010102">
 		<class>Build_eNB</class>
 		<desc>Build eNB (USRP)</desc>
-		<Build_eNB_args>-w BLADERF -x -c --eNB</Build_eNB_args>
+		<Build_eNB_args>-w BLADERF -c --eNB</Build_eNB_args>
 	</testCase>
 
 	<testCase id="030101">
diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index bb06364f10e3e337e18873aa78ad6a23d085e87a..de0da03a17a67945f35b74a9bcceb0913f94c485 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -472,6 +472,16 @@ add_library(X2AP_LIB
 include_directories ("${X2AP_C_DIR}")
 include_directories ("${X2AP_DIR}")
 
+#add_library(X2AP_ENB
+ # ${X2AP_DIR}/x2ap_eNB.c
+ # ${X2AP_DIR}/x2ap_eNB_decoder.c
+ # ${X2AP_DIR}/x2ap_eNB_encoder.c
+ # ${X2AP_DIR}/x2ap_eNB_handler.c
+ # ${X2AP_DIR}/x2ap_eNB_itti_messaging.c
+ # ${X2AP_DIR}/x2ap_eNB_management_procedures.c
+ # ${X2AP_DIR}/x2ap_eNB_generate_messages.c
+ # )
+
 # Hardware dependant options
 ###################################
 add_list1_option(NB_ANTENNAS_RX "2" "Number of antennas in reception" "1" "2" "4")
@@ -883,12 +893,9 @@ add_library(HASHTABLE
 )
 include_directories(${OPENAIR_DIR}/common/utils/hashtable)
 
-if (MESSAGE_CHART_GENERATOR)
-  add_library(MSC
-    ${OPENAIR_DIR}/common/utils/msc/msc.c
-  )
-  set(MSC_LIB MSC)
-endif()
+add_library(msc MODULE ${OPENAIR_DIR}/common/utils/msc/msc.c )
+target_link_libraries (msc LFDS)
+
 include_directories(${OPENAIR_DIR}/common/utils/msc)
 
 set(UTIL_SRC
@@ -1216,6 +1223,11 @@ set(PHY_MEX_UE
   ${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
   ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ue_measurements.c
   ${OPENAIR_DIR}/common/utils/LOG/log.c
+  ${OPENAIR_DIR}/common/utils/T/T.c
+  ${OPENAIR_DIR}/common/utils/T/local_tracer.c
+  ${OPENAIR_DIR}/common/config/config_cmdline.c
+  ${OPENAIR_DIR}/common/config/config_userapi.c
+  ${OPENAIR_DIR}/common/config/config_load_configmodule.c
   )
 add_library(PHY_MEX ${PHY_MEX_UE})
 
@@ -1378,7 +1390,6 @@ include_directories(${NFAPI_USER_DIR})
 add_library(CN_UTILS
   ${OPENAIR3_DIR}/UTILS/conversions.c
   ${OPENAIR3_DIR}/UTILS/enum_string.c
-  ${OPENAIR3_DIR}/UTILS/log.c
   ${OPENAIR3_DIR}/UTILS/mcc_mnc_itu.c
   )
 
@@ -1553,7 +1564,6 @@ set(libnas_ies_OBJS
 set (libnas_utils_OBJS
   ${NAS_SRC}COMMON/UTIL/device.c
   ${NAS_SRC}COMMON/UTIL/memory.c
-  ${NAS_SRC}COMMON/UTIL/nas_log.c
   ${NAS_SRC}COMMON/UTIL/nas_timer.c
   ${NAS_SRC}COMMON/UTIL/socket.c
   ${NAS_SRC}COMMON/UTIL/stty.c
@@ -1876,9 +1886,13 @@ endif (${T_TRACER})
 #This rule and the following deal with it.
 add_custom_command (
   OUTPUT ${OPENAIR_DIR}/common/utils/T/T_IDs.h
-  COMMAND make
+  COMMAND $(MAKE) clean
+  COMMAND $(MAKE)
+  COMMAND $(MAKE) check_vcd
   WORKING_DIRECTORY ${OPENAIR_DIR}/common/utils/T
   DEPENDS ${OPENAIR_DIR}/common/utils/T/T_messages.txt
+          ${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c
+          ${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.h
   )
 
 #This rule is specifically needed to generate T files
@@ -1929,7 +1943,7 @@ add_executable(lte-softmodem
 
 target_link_libraries (lte-softmodem
   -Wl,--start-group
-  RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB SCHED_RU_LIB PHY_COMMON PHY PHY_RU LFDS L2
+  RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB SCHED_RU_LIB PHY_COMMON PHY PHY_RU LFDS L2
   ${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} LFDS7
   NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
   -Wl,--end-group z dl)
@@ -1966,7 +1980,7 @@ add_executable(lte-softmodem-nos1
   )
 target_link_libraries (lte-softmodem-nos1
   -Wl,--start-group
-  RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCHED_LIB SCHED_RU_LIB PHY_COMMON PHY PHY_RU LFDS L2 ${MSC_LIB} ${RAL_LIB} ${ITTI_LIB}
+  RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCHED_LIB SCHED_RU_LIB PHY_COMMON PHY PHY_RU LFDS L2  ${RAL_LIB} ${ITTI_LIB}
   ${MIH_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} LFDS7
   NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
   -Wl,--end-group z dl )
@@ -2005,7 +2019,7 @@ add_executable(lte-uesoftmodem
 
 target_link_libraries (lte-uesoftmodem
   -Wl,--start-group
-  RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_UE PHY_RU LFDS L2_UE SIMU
+  RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_UE PHY_RU LFDS L2_UE SIMU
   ${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} LFDS7 ${ATLAS_LIBRARIES}
   NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
   -Wl,--end-group z dl)
@@ -2044,7 +2058,7 @@ add_executable(lte-uesoftmodem-nos1
 
 target_link_libraries (lte-uesoftmodem-nos1
   -Wl,--start-group
-  RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_UE PHY_RU LFDS L2_UE SIMU ${MSC_LIB} ${RAL_LIB} ${ITTI_LIB}
+  RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_UE PHY_RU LFDS L2_UE SIMU ${RAL_LIB} ${ITTI_LIB}
   ${MIH_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} LFDS7 ${ATLAS_LIBRARIES}
   NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
   -Wl,--end-group z dl )
@@ -2122,7 +2136,7 @@ add_executable(test_epc_generate_scenario
   ${OPENAIR3_DIR}/S1AP/s1ap_eNB_defs.h
   )
 target_link_libraries (test_epc_generate_scenario
-  -Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${ITTI_LIB} ${MSC_LIB} L2 -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
+  -Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${ITTI_LIB} L2 -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
   )
 
 add_executable(test_epc_play_scenario
@@ -2183,7 +2197,8 @@ if (${T_TRACER})
         oai_eth_transpro
         FLPT_MSG ASYNC_IF FLEXRAN_AGENT HASHTABLE MSC UTIL OMG_SUMO SECU_OSA
         SECU_CN SCHED_LIB PHY L2 default_sched remote_sched RAL CN_UTILS
-        GTPV1U SCTP_CLIENT UDP LIB_NAS_UE LFDS LFDS7 SIMU OPENAIR0_LIB)
+        GTPV1U SCTP_CLIENT UDP LIB_NAS_UE LFDS LFDS7 SIMU OPENAIR0_LIB PHY_MEX
+        coding)
     if (TARGET ${i})
       add_dependencies(${i} generate_T)
     endif()
@@ -2226,7 +2241,7 @@ function(make_driver name dir)
   endforeach()
   CONFIGURE_FILE(${OPENAIR_CMAKE}/tools/Kbuild.cmake ${OPENAIR_BIN_DIR}/${name}/Kbuild)
   add_custom_command(OUTPUT ${name}.ko
-    COMMAND make -C ${module_build_path} M=${OPENAIR_BIN_DIR}/${name}
+    COMMAND $(MAKE) -C ${module_build_path} M=${OPENAIR_BIN_DIR}/${name}
     WORKING_DIRECTORY ${OPENAIR_BIN_DIR}/${name}
     COMMENT "building ${module}.ko"
     VERBATIM
diff --git a/cmake_targets/autotests/v2/config/enb.band38.tm1.usrpb210.tdd.10MHz.conf b/cmake_targets/autotests/v2/config/enb.band38.tm1.usrpb210.tdd.10MHz.conf
index e2ea056ea17c1ab0a31c597d057eaf01bb9426a9..08eb76e09de3551c53e440f8a80d4bdfde30fc66 100644
--- a/cmake_targets/autotests/v2/config/enb.band38.tm1.usrpb210.tdd.10MHz.conf
+++ b/cmake_targets/autotests/v2/config/enb.band38.tm1.usrpb210.tdd.10MHz.conf
@@ -146,12 +146,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth6";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.82/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth6";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.82/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.82/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     log_config :
diff --git a/cmake_targets/autotests/v2/config/enb.band38.tm1.usrpb210.tdd.20MHz.conf b/cmake_targets/autotests/v2/config/enb.band38.tm1.usrpb210.tdd.20MHz.conf
index b2ac3ccf4224581389dc09d43d992ea4039bf502..eff42040ad87163f5d6f562377e41394450c18aa 100644
--- a/cmake_targets/autotests/v2/config/enb.band38.tm1.usrpb210.tdd.20MHz.conf
+++ b/cmake_targets/autotests/v2/config/enb.band38.tm1.usrpb210.tdd.20MHz.conf
@@ -146,12 +146,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth6";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.82/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth6";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.82/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.82/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     log_config :
diff --git a/cmake_targets/autotests/v2/config/enb.band38.tm1.usrpb210.tdd.5MHz.conf b/cmake_targets/autotests/v2/config/enb.band38.tm1.usrpb210.tdd.5MHz.conf
index 006d59d2a54ca908d9b2dde9fb9141b9cf086bb5..8eb66d46438e24e943db10c19a62837a42e550a1 100644
--- a/cmake_targets/autotests/v2/config/enb.band38.tm1.usrpb210.tdd.5MHz.conf
+++ b/cmake_targets/autotests/v2/config/enb.band38.tm1.usrpb210.tdd.5MHz.conf
@@ -146,12 +146,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth6";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.82/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth6";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.82/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.82/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     log_config :
diff --git a/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.fdd.10MHz.conf b/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.fdd.10MHz.conf
index 8c76d95d4c86d978198e922168888d368838b6fa..dc3b3bc4f03a5b93efb03eee80f96c1440950ab0 100644
--- a/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.fdd.10MHz.conf
+++ b/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.fdd.10MHz.conf
@@ -146,12 +146,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.19/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.19/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.19/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     log_config :
diff --git a/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.fdd.20MHz.conf b/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.fdd.20MHz.conf
index 0d2bb27dcc7c18c3b8446699a87357a529567611..6af71831f5416490f0df81a67b6a70f6192c263e 100644
--- a/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.fdd.20MHz.conf
+++ b/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.fdd.20MHz.conf
@@ -146,12 +146,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.19/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.19/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.19/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     log_config :
diff --git a/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.fdd.5MHz.conf b/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.fdd.5MHz.conf
index c418f355f20903326675577272da21d6dc8230e1..077b6e4ead5def0feab001a00900221b93437f40 100644
--- a/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.fdd.5MHz.conf
+++ b/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.fdd.5MHz.conf
@@ -146,12 +146,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.19/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.19/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.19/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     log_config :
diff --git a/cmake_targets/autotests/v2/config/rcc.band7.tm1.if4p5.10MHz.conf b/cmake_targets/autotests/v2/config/rcc.band7.tm1.if4p5.10MHz.conf
index 89e06d2b1e4511f212507069db0d074b87adeb9f..e2f5981418f4487e92bd9c9d03796b4d3dbe8b05 100644
--- a/cmake_targets/autotests/v2/config/rcc.band7.tm1.if4p5.10MHz.conf
+++ b/cmake_targets/autotests/v2/config/rcc.band7.tm1.if4p5.10MHz.conf
@@ -146,12 +146,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.18/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.18/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.18/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     rrh_gw_config = (
diff --git a/cmake_targets/autotests/v2/config/rcc.band7.tm1.if4p5.20MHz.conf b/cmake_targets/autotests/v2/config/rcc.band7.tm1.if4p5.20MHz.conf
index c8e6c861e0fddc61ec4a0cb7c9ce169bb36eaf20..9e08414ab3de7152cb674eac96eb7ee8310cd455 100644
--- a/cmake_targets/autotests/v2/config/rcc.band7.tm1.if4p5.20MHz.conf
+++ b/cmake_targets/autotests/v2/config/rcc.band7.tm1.if4p5.20MHz.conf
@@ -146,12 +146,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.18/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.18/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.18/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     rrh_gw_config = (
diff --git a/cmake_targets/autotests/v2/config/rcc.band7.tm1.if4p5.5MHz.conf b/cmake_targets/autotests/v2/config/rcc.band7.tm1.if4p5.5MHz.conf
index cc00f4f3ea584d662e58bfdeb7f95ea3073bc9ac..2a598c31d317478bfe78751745adce6ee8f9cf4f 100644
--- a/cmake_targets/autotests/v2/config/rcc.band7.tm1.if4p5.5MHz.conf
+++ b/cmake_targets/autotests/v2/config/rcc.band7.tm1.if4p5.5MHz.conf
@@ -146,12 +146,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.18/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.18/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.18/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     rrh_gw_config = (
diff --git a/cmake_targets/autotests/v2/config/rru.band7.tm1.if4p5.10MHz.udp.usrpb210.conf b/cmake_targets/autotests/v2/config/rru.band7.tm1.if4p5.10MHz.udp.usrpb210.conf
index 6e1e776fed0da4bf219f6525b82db0accd8be758..4966108d034d82e20e0df8d72c619bdb63b03ea3 100644
--- a/cmake_targets/autotests/v2/config/rru.band7.tm1.if4p5.10MHz.udp.usrpb210.conf
+++ b/cmake_targets/autotests/v2/config/rru.band7.tm1.if4p5.10MHz.udp.usrpb210.conf
@@ -148,12 +148,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth3";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.215/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth3";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.215/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.215/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     rrh_gw_config = (
diff --git a/cmake_targets/autotests/v2/config/rru.band7.tm1.if4p5.20MHz.udp.usrpb210.conf b/cmake_targets/autotests/v2/config/rru.band7.tm1.if4p5.20MHz.udp.usrpb210.conf
index 7e7c3c185d41be1f6b7ed09fca0cec75d7fd3e85..4f3b25349a64ad0368875ba70d6e150ec0f3e5b7 100644
--- a/cmake_targets/autotests/v2/config/rru.band7.tm1.if4p5.20MHz.udp.usrpb210.conf
+++ b/cmake_targets/autotests/v2/config/rru.band7.tm1.if4p5.20MHz.udp.usrpb210.conf
@@ -148,12 +148,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth3";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.215/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth3";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.215/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.215/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     rrh_gw_config = (
diff --git a/cmake_targets/autotests/v2/config/rru.band7.tm1.if4p5.5MHz.udp.usrpb210.conf b/cmake_targets/autotests/v2/config/rru.band7.tm1.if4p5.5MHz.udp.usrpb210.conf
index 3098660c8de40e967d5e4adf7dc870b31d3ee1c3..54e5a327cd61e7cc5568f9e6267787a231020826 100644
--- a/cmake_targets/autotests/v2/config/rru.band7.tm1.if4p5.5MHz.udp.usrpb210.conf
+++ b/cmake_targets/autotests/v2/config/rru.band7.tm1.if4p5.5MHz.udp.usrpb210.conf
@@ -148,12 +148,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth3";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.215/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth3";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.215/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.215/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     rrh_gw_config = (
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index c15e1e8ec788b1057aa07c7aba346656bf4f994f..3954827c0949fde7efa828f436cd54e21246463b 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -40,7 +40,7 @@ set_openair_env
 gen_nvram_path=$OPENAIR_DIR/targets/bin
 conf_nvram_path=$OPENAIR_DIR/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
 
-MSC_GEN="False"
+MSC_GEN=0
 XFORMS="True"
 UE_EXPANSION="False"
 PRINT_STATS="False"
@@ -155,6 +155,10 @@ Options
    Disable all LOG_* macros
 --build-eclipse
    Build eclipse project files. Paths are auto corrected by fixprj.sh
+--build-telnet
+   Build telnet server, specify --telnetsrv on command line to start it (eNB only)
+--build-msc
+   Build MSC tracing utility, specify --msc on command line to start it (eNB and UE)
 --usrp-recplay
    Build for I/Q record-playback modes
 --ue-nas-use-tun
@@ -345,6 +349,10 @@ function main() {
        --build-telnetsrv)
             BUILD_TELNETSRV=1
             echo_info "Build embedded telnet server"
+            shift ;;
+       --build-msc)
+            MSC_GEN=1
+            echo_info "Build MSC tracing utility"
             shift ;;			
         --usrp-recplay)
             USRP_REC_PLAY="True"
@@ -690,6 +698,15 @@ function main() {
                   $build_dir telnetsrv \
                   libtelnetsrv.so $dbin/libtelnetsrv.so
 
+  fi 
+  # Telnet server compilation
+  #####################
+  if [ "$MSC_GEN" = "1" ] ; then
+              build_dir=$lte_build_dir
+              compilations \
+                  $build_dir msc \
+                  libmsc.so $dbin/libmsc.so
+
   fi  
   # build RF device and transport protocol libraries
   #####################################
diff --git a/cmake_targets/nas_sim_tools/CMakeLists.txt b/cmake_targets/nas_sim_tools/CMakeLists.txt
index 81e3fe4b3ce7ac256ed4fea630ee30ec9425b2a1..c1a0bb419b74666eccc6a9c522a2394e4a688695 100644
--- a/cmake_targets/nas_sim_tools/CMakeLists.txt
+++ b/cmake_targets/nas_sim_tools/CMakeLists.txt
@@ -27,7 +27,6 @@ set(CONF2UEDATA_LIB_SRC
     ${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/usim_api.c
     ${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/aka_functions.c
     ${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/memory.c
-    ${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/nas_log.c
     ${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/OctetString.c
     ${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/TLVEncoder.c
     ${OPENAIR_DIR}/common/utils/utils.c
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 4b0ea9cc6b7fe7fe8cca45a726b54eaead84d111..3363bd2e7658feef8f91ec18b80f738b43cc440b 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -597,7 +597,7 @@ check_install_oai_software() {
         echo "EPEL repos not present. Installing them."
         $SUDO $INSTALLER install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
       fi
-      $SUDO $INSTALLER install -y python-epdb
+      $SUDO $INSTALLER install -y python-epdb vim-common
     else
       $SUDO $INSTALLER install -y mscgen pydb
     fi
@@ -683,7 +683,7 @@ install_asn1c_from_source(){
     # better to use a given commit than a branch in case the branch
     # is updated and requires modifications in the source of OAI
     #git checkout velichkov_s1ap_plus_option_group
-    git checkout ec830d70bbb014b769810355a2f321a91ccd8a58
+    git checkout 73d6b23dcec9ab36605b4af884143824392134c1
     autoreconf -iv
     ./configure
     make -j`nproc`
diff --git a/common/config/config_cmdline.c b/common/config/config_cmdline.c
index 47371ea5680488fa1083f822f332ffa97347ea15..2e6b21dea4cd0bbc91b109dc5514351a64947b67 100644
--- a/common/config/config_cmdline.c
+++ b/common/config/config_cmdline.c
@@ -39,7 +39,7 @@
 #include "config_userapi.h"
 
 
-void parse_stringlist(paramdef_t *cfgoptions, char *val)
+int parse_stringlist(paramdef_t *cfgoptions, char *val)
 {
 char *atoken;
 char *tokctx;
@@ -64,7 +64,7 @@ int   numelt=0;
       printf_params("[LIBCONFIG] %s[%i]: %s\n", cfgoptions->optname,i,cfgoptions->strlistptr[i]);
       atoken=strtok_r(NULL, ",",&tokctx);
    }
-   cfgoptions->numelt=numelt; 
+   return (cfgoptions->numelt > 0); 
 }
  
 int processoption(paramdef_t *cfgoptions, char *value)
@@ -96,7 +96,7 @@ char defbool[2]="1";
         break;
 	
         case TYPE_STRINGLIST:
-           parse_stringlist(cfgoptions,tmpval); 
+           optisset=parse_stringlist(cfgoptions,tmpval); 
         break;
         case TYPE_UINT32:
        	case TYPE_INT32:
diff --git a/common/utils/LOG/log.c b/common/utils/LOG/log.c
index 02ee849202e285aeb936312a12b754ae6f21b19f..c1f11c0bfd20cb860276af3f536583bdd0d0650d 100644
--- a/common/utils/LOG/log.c
+++ b/common/utils/LOG/log.c
@@ -54,7 +54,6 @@
 
 mapping log_level_names[] = {
   {"error",  OAILOG_ERR},
-  {"file",   OAILOG_FILE},
   {"warn",   OAILOG_WARNING},
   {"info",   OAILOG_INFO},
   {"debug",  OAILOG_DEBUG},
@@ -70,18 +69,10 @@ mapping log_options[] = {
 };
 
 
-mapping log_maskmap[] = {
-  {"prach",       DEBUG_PRACH},
-  {"RU",          DEBUG_RU},
-  {"LTEESTIM",    DEBUG_LTEESTIM},
-  {"ctrlsocket",  DEBUG_CTRLSOCKET},
-  {"UE_PHYPROC",  DEBUG_UE_PHYPROC},
-  {"UE_TIMING",   UE_TIMING},
-  {NULL,-1}
-};
+mapping log_maskmap[] = LOG_MASKMAP_INIT;
 
-char *log_level_highlight_start[] = {LOG_RED, LOG_GREEN, LOG_ORANGE, "", LOG_BLUE, LOG_CYBL};  /*!< \brief Optional start-format strings for highlighting */
-char *log_level_highlight_end[]   = {LOG_RESET,LOG_RESET,LOG_RESET,LOG_RESET, LOG_RESET,LOG_RESET};   /*!< \brief Optional end-format strings for highlighting */
+char *log_level_highlight_start[] = {LOG_RED, LOG_ORANGE, "", LOG_BLUE, LOG_CYBL};  /*!< \brief Optional start-format strings for highlighting */
+char *log_level_highlight_end[]   = {LOG_RESET,LOG_RESET,LOG_RESET, LOG_RESET,LOG_RESET};   /*!< \brief Optional end-format strings for highlighting */
 
 
 int write_file_matlab(const char *fname,const char *vname,void *data,int length,int dec,char format)
@@ -243,14 +234,14 @@ int write_file_matlab(const char *fname,const char *vname,void *data,int length,
 /* get log parameters from configuration file */
 void  log_getconfig(log_t *g_log) {
   char *gloglevel = NULL;
-  int level;
+  int consolelog ;
   
   
   paramdef_t logparams_defaults[] = LOG_GLOBALPARAMS_DESC;
   paramdef_t logparams_level[MAX_LOG_PREDEF_COMPONENTS];
   paramdef_t logparams_logfile[MAX_LOG_PREDEF_COMPONENTS];
   paramdef_t logparams_debug[sizeof(log_maskmap)/sizeof(mapping)];
-  paramdef_t logparams_matlab[sizeof(log_maskmap)/sizeof(mapping)];
+  paramdef_t logparams_dump[sizeof(log_maskmap)/sizeof(mapping)];
 
   int ret = config_get( logparams_defaults,sizeof(logparams_defaults)/sizeof(paramdef_t),CONFIG_STRING_LOG_PREFIX);
   if (ret <0) {
@@ -258,6 +249,7 @@ void  log_getconfig(log_t *g_log) {
        return;
   } 
 
+/* set LOG display options (enable/disable color, thread name, level ) */
   for(int i=0; i<logparams_defaults[LOG_OPTIONS_IDX].numelt ; i++) {
      for(int j=0; log_options[j].name != NULL ; j++) {
         if (strcmp(logparams_defaults[LOG_OPTIONS_IDX].strlistptr[i],log_options[j].name) == 0) { 
@@ -303,38 +295,40 @@ void  log_getconfig(log_t *g_log) {
   config_get( logparams_logfile,  MAX_LOG_PREDEF_COMPONENTS,CONFIG_STRING_LOG_PREFIX); 
 /* now set the log levels and infile option, according to what we read */
   for (int i=MIN_LOG_COMPONENTS; i < MAX_LOG_PREDEF_COMPONENTS; i++) {
-    level     = map_str_to_int(log_level_names,    *(logparams_level[i].strptr));
-    set_log(i, level,1);
+    g_log->log_component[i].level = map_str_to_int(log_level_names,    *(logparams_level[i].strptr));
+    set_log(i, g_log->log_component[i].level);
     if (*(logparams_logfile[i].uptr) == 1)
         set_component_filelog(i);
   }
 
-/* build then read the debug and matlab parameter array */
+/* build then read the debug and dump parameter array */
   for (int i=0;log_maskmap[i].name != NULL ; i++) {
-      sprintf(logparams_debug[i].optname,    LOG_CONFIG_DEBUG_FORMAT, log_maskmap[i].name);
-      sprintf(logparams_matlab[i].optname,   LOG_CONFIG_MATLAB_FORMAT, log_maskmap[i].name);
+      sprintf(logparams_debug[i].optname,  LOG_CONFIG_DEBUG_FORMAT, log_maskmap[i].name);
+      sprintf(logparams_dump[i].optname,   LOG_CONFIG_DUMP_FORMAT, log_maskmap[i].name);
       logparams_debug[i].defuintval  = 0;
       logparams_debug[i].type        = TYPE_UINT;
       logparams_debug[i].paramflags  = PARAMFLAG_BOOL;
       logparams_debug[i].uptr        = NULL;
       logparams_debug[i].chkPptr     = NULL;
       logparams_debug[i].numelt      = 0;
-      logparams_matlab[i].defuintval  = 0;
-      logparams_matlab[i].type        = TYPE_UINT;
-      logparams_matlab[i].paramflags  = PARAMFLAG_BOOL;
-      logparams_matlab[i].uptr        = NULL;
-      logparams_matlab[i].chkPptr     = NULL;
-      logparams_matlab[i].numelt      = 0;
+      logparams_dump[i].defuintval  = 0;
+      logparams_dump[i].type        = TYPE_UINT;
+      logparams_dump[i].paramflags  = PARAMFLAG_BOOL;
+      logparams_dump[i].uptr        = NULL;
+      logparams_dump[i].chkPptr     = NULL;
+      logparams_dump[i].numelt      = 0;
   }
   config_get( logparams_debug,(sizeof(log_maskmap)/sizeof(mapping)) - 1 ,CONFIG_STRING_LOG_PREFIX);
-  config_get( logparams_matlab,(sizeof(log_maskmap)/sizeof(mapping)) - 1 ,CONFIG_STRING_LOG_PREFIX);
+  config_get( logparams_dump,(sizeof(log_maskmap)/sizeof(mapping)) - 1 ,CONFIG_STRING_LOG_PREFIX);
 /* set the debug mask according to the debug parameters values */
   for (int i=0; log_maskmap[i].name != NULL ; i++) {
     if (*(logparams_debug[i].uptr) )
         g_log->debug_mask = g_log->debug_mask | log_maskmap[i].value;
-    if (*(logparams_matlab[i].uptr) )
-        g_log->matlab_mask = g_log->matlab_mask | log_maskmap[i].value;
+    if (*(logparams_dump[i].uptr) )
+        g_log->dump_mask = g_log->dump_mask | log_maskmap[i].value;
   } 
+/* log globally enabled/disabled */
+  set_glog_onlinelog(consolelog);
 }
 
 int register_log_component(char *name, char *fext, int compidx)
@@ -354,11 +348,9 @@ int computed_compidx=compidx;
   }
   if (computed_compidx >= 0 && computed_compidx <MAX_LOG_COMPONENTS) {
       g_log->log_component[computed_compidx].name = strdup(name);
-      g_log->log_component[computed_compidx].level = LOG_ERR;
-      g_log->log_component[computed_compidx].interval =  1;
-      g_log->log_component[computed_compidx].stream = NULL;
+      g_log->log_component[computed_compidx].stream = stdout;
       g_log->log_component[computed_compidx].filelog = 0;
-      g_log->log_component[computed_compidx].filelog_name = malloc(strlen(name)+16);/* /tmp/<name>.%s rounded to ^2 */
+      g_log->log_component[computed_compidx].filelog_name = malloc(strlen(name)+16);/* /tmp/<name>.%s  */
       sprintf(g_log->log_component[computed_compidx].filelog_name,"/tmp/%s.%s",name,fext);
   } else {
       fprintf(stderr,"{LOG} %s %d Couldn't register componemt %s\n",__FILE__,__LINE__,name);
@@ -421,23 +413,16 @@ int logInit (void)
 
 
   register_log_component("SCTP","",SCTP);
-  register_log_component("RRH","",RRH);
- 
-
+  register_log_component("X2AP","",X2AP);
+  register_log_component("LOADER","log",LOADER);
+  register_log_component("ASN","log",ASN);
   
 
 
+  for (int i=0 ; log_level_names[i].name != NULL ; i++)
+      g_log->level2string[i]           = toupper(log_level_names[i].name[0]); // uppercased first letter of level name
 
-  g_log->level2string[OAILOG_ERR]           = "E"; // ERROR
-  g_log->level2string[OAILOG_WARNING]       = "W"; // WARNING
-  g_log->level2string[OAILOG_INFO]          = "I"; //INFO
-  g_log->level2string[OAILOG_DEBUG]         = "D"; // DEBUG
-  g_log->level2string[OAILOG_FILE]          = "F"; // file
-  g_log->level2string[OAILOG_TRACE]         = "T"; // TRACE
- 
 
-  g_log->onlinelog = 1; //online log file
-  g_log->filelog   = 0;
  
 
 
@@ -446,19 +431,6 @@ int logInit (void)
   log_getconfig(g_log);
 
 
-  // could put a loop here to check for all comps
-  for (i=MIN_LOG_COMPONENTS; i < MAX_LOG_COMPONENTS; i++) {
-    if (g_log->log_component[i].filelog == 1 ) {
-      g_log->log_component[i].stream = fopen(g_log->log_component[i].filelog_name,"w");
-      g_log->log_component[i].fwrite = vfprintf;
-    } else if (g_log->log_component[i].filelog == 1 ) {
-        g_log->log_component[i].stream = fopen(g_log->filelog_name,"w");
-        g_log->log_component[i].fwrite = vfprintf;
-    } else if (g_log->onlinelog == 1 ) {
-        g_log->log_component[i].stream = stdout;
-        g_log->log_component[i].fwrite = vfprintf;
-    }
-  }
 
   // set all unused component items to 0, they are for non predefined components
   for (i=MAX_LOG_PREDEF_COMPONENTS; i < MAX_LOG_COMPONENTS; i++) {
@@ -470,8 +442,6 @@ int logInit (void)
 }
 
 
-
-
 char *log_getthreadname(char *threadname, int bufsize) {
 
 int rt =   pthread_getname_np(pthread_self(), threadname,bufsize) ;  
@@ -483,11 +453,20 @@ int rt =   pthread_getname_np(pthread_self(), threadname,bufsize) ;
    }
 }
 
+int inline log_header(char *log_buffer, int buffsize, int comp, int level,const char *format) {
+  char threadname[PR_SET_NAME];
+return  snprintf(log_buffer, buffsize , "%s%s[%s]%c %s %s%s",
+  	   log_level_highlight_end[level],
+  	   ( (g_log->flag & FLAG_NOCOLOR)?"":log_level_highlight_start[level]),
+  	   g_log->log_component[comp].name,
+  	   ( (g_log->flag & FLAG_LEVEL)?g_log->level2string[level]:' '),
+  	   ( (g_log->flag & FLAG_THREAD)?log_getthreadname(threadname,PR_SET_NAME+1):""),
+  	   format,
+           log_level_highlight_end[level]);
+}
 
 void logRecord_mt(const char *file, const char *func, int line, int comp, int level, const char* format, ... )
   {
-
-  char threadname[PR_SET_NAME];
   char log_buffer[MAX_LOG_TOTAL];
   va_list args;
 
@@ -496,38 +475,63 @@ void logRecord_mt(const char *file, const char *func, int line, int comp, int le
 
 
 
-
-
-  snprintf(log_buffer, MAX_LOG_TOTAL , "%s%s[%s]%s %s %s",
-  	   log_level_highlight_end[level],
-  	   ( (g_log->flag & FLAG_NOCOLOR)?"":log_level_highlight_start[level]),
-  	   g_log->log_component[comp].name,
-  	   ( (g_log->flag & FLAG_LEVEL)?g_log->level2string[level]:""),
-  	   ( (g_log->flag & FLAG_THREAD)?log_getthreadname(threadname,PR_SET_NAME+1):""),
-  	   format);
-
-  g_log->log_component[comp].fwrite(g_log->log_component[comp].stream,log_buffer, args);
+  log_header(log_buffer,MAX_LOG_TOTAL ,comp, level,format);
+  g_log->log_component[comp].vprint(g_log->log_component[comp].stream,log_buffer, args);
   va_end(args);
 
 
 }
 
+void log_dump(int component, void *buffer, int buffsize,int datatype, const char* format, ... ) {
+va_list args;
+char *wbuf; 
+
 
+    switch(datatype) {
+       case LOG_DUMP_DOUBLE:
+            wbuf=malloc((buffsize * 10)  + 64 + MAX_LOG_TOTAL);
+       break;
+       case LOG_DUMP_CHAR:
+       default:
+            wbuf=malloc((buffsize * 3 ) + 64 + MAX_LOG_TOTAL);
+       break;
+    }
+    if (wbuf != NULL) {       
+       va_start(args, format);
+       int pos=log_header(wbuf,MAX_LOG_TOTAL ,component, OAILOG_INFO,"");
+       int pos2=vsprintf(wbuf+pos,format, args);
+       pos=pos+pos2;
+       va_end(args);
+      
+       for (int i=0; i<buffsize; i++) {
+            switch(datatype) {
+               case LOG_DUMP_DOUBLE:
+                    pos = pos + sprintf(wbuf+pos,"%04.4lf ", (double)((double *)buffer)[i]);
+               break;
+               case LOG_DUMP_CHAR:
+               default:
+                    pos = pos + sprintf(wbuf+pos,"%02x ", (unsigned char)((unsigned char *)buffer)[i]);
+               break;
+            }        
+       }
+    sprintf(wbuf+pos,"\n");
+    g_log->log_component[component].print(g_log->log_component[component].stream,wbuf);
+    free(wbuf);
+    } 
+}
 
-int set_log(int component, int level, int interval)
+int set_log(int component, int level)
 {
   /* Checking parameters */
   DevCheck((component >= MIN_LOG_COMPONENTS) && (component < MAX_LOG_COMPONENTS),
            component, MIN_LOG_COMPONENTS, MAX_LOG_COMPONENTS);
-  DevCheck((level < NUM_LOG_LEVEL) && (level >= OAILOG_ERR), level, NUM_LOG_LEVEL,
+  DevCheck((level < NUM_LOG_LEVEL) && (level >= OAILOG_DISABLE), level, NUM_LOG_LEVEL,
            OAILOG_ERR);
-  DevCheck((interval >= 0) && (interval <= 0xFF), interval, 0, 0xFF);
 
+  if ( g_log->log_component[component].level != OAILOG_DISABLE )
+      g_log->log_component[component].savedlevel = g_log->log_component[component].level;
   g_log->log_component[component].level = level;
 
-
-  g_log->log_component[component].interval = interval;
-
   return 0;
 }
 
@@ -536,32 +540,67 @@ int set_log(int component, int level, int interval)
 void set_glog(int level)
 {
   for (int c=0; c< MAX_LOG_COMPONENTS; c++ ) {
-     g_log->log_component[c].level = level;
+     set_log(c, level);
   }
   
 }
 
 void set_glog_onlinelog(int enable)
 {
-  g_log->onlinelog = enable;
+  for (int c=0; c< MAX_LOG_COMPONENTS; c++ ) {
+      if ( enable ) {
+        g_log->log_component[c].level = g_log->log_component[c].savedlevel;
+        g_log->log_component[c].vprint = vfprintf;
+        g_log->log_component[c].print = fprintf;
+        g_log->log_component[c].stream = stdout;
+      } else {
+        g_log->log_component[c].level = OAILOG_DISABLE;
+      }
+  }  
 }
 void set_glog_filelog(int enable)
 {
-  g_log->filelog = enable;
+static FILE *fptr;
+
+  if ( enable ) {
+    fptr = fopen(g_log->filelog_name,"w");
+
+    for (int c=0; c< MAX_LOG_COMPONENTS; c++ ) {
+      close_component_filelog(c);
+      g_log->log_component[c].stream = fptr;
+      g_log->log_component[c].filelog =  1;
+    }
+  } else {
+    for (int c=0; c< MAX_LOG_COMPONENTS; c++ ) {
+      g_log->log_component[c].filelog =  0;
+      if (fptr != NULL) {
+        fclose(fptr);
+      }
+      g_log->log_component[c].stream = stdout;
+    }    
+  }  
 }
 
 void set_component_filelog(int comp)
 {
-  if (g_log->log_component[comp].filelog ==  0) {
-    g_log->log_component[comp].filelog =  1;
-
-    if (g_log->log_component[comp].stream == NULL) {
+    if (g_log->log_component[comp].stream == NULL || g_log->log_component[comp].stream == stdout) {
       g_log->log_component[comp].stream = fopen(g_log->log_component[comp].filelog_name,"w");
     }
-  }
+    g_log->log_component[comp].vprint = vfprintf;
+    g_log->log_component[comp].print = fprintf;
+    g_log->log_component[comp].filelog =  1;
+}
+void close_component_filelog(int comp)
+{
+    g_log->log_component[comp].filelog =  0;
+    if (g_log->log_component[comp].stream != NULL && g_log->log_component[comp].stream != stdout ) {
+      fclose(g_log->log_component[comp].stream);
+      g_log->log_component[comp].stream = stdout;
+    }
+    g_log->log_component[comp].vprint = vfprintf;
+    g_log->log_component[comp].print = fprintf;
+ 
 }
-
-
 
 /*
  * for the two functions below, the passed array must have a final entry
@@ -616,15 +655,13 @@ int is_newline( char *str, int size)
 void logClean (void)
 {
   int i;
-  LOG_I(PHY,"\n");
+  LOG_UI(PHY,"\n");
 
 
 
 
   for (i=MIN_LOG_COMPONENTS; i < MAX_LOG_COMPONENTS; i++) {
-    if (g_log->log_component[i].stream != NULL) {
-      fclose(g_log->log_component[i].stream);
-    }
+     close_component_filelog(i);
   }
 }
 
@@ -650,8 +687,8 @@ int test_log(void)
   LOG_D(MAC, "1 debug  MAC \n");
   LOG_W(MAC, "1 warning MAC \n");
 
-  set_log(EMU, OAILOG_INFO, FLAG_ONLINE);
-  set_log(MAC, OAILOG_WARNING, 0);
+  set_log(EMU, OAILOG_INFO);
+  set_log(MAC, OAILOG_WARNING);
 
   LOG_I(EMU, "2 Starting OAI logs version %s Build date: %s on %s\n",
         BUILD_VERSION, BUILD_DATE, BUILD_HOST);
@@ -661,7 +698,7 @@ int test_log(void)
   LOG_I(MAC, "2 info MAC \n");
 
 
-  set_log(MAC, OAILOG_NOTICE, 1);
+  set_log(MAC, OAILOG_NOTICE);
 
   LOG_ENTER(MAC);
   LOG_I(EMU, "3 Starting OAI logs version %s Build date: %s on %s\n",
@@ -670,8 +707,8 @@ int test_log(void)
   LOG_W(MAC, "3 warning MAC \n");
   LOG_I(MAC, "3 info MAC \n");
 
-  set_log(MAC, LOG_DEBUG,1);
-  set_log(EMU, LOG_DEBUG,1);
+  set_log(MAC, LOG_DEBUG);
+  set_log(EMU, LOG_DEBUG);
 
   LOG_ENTER(MAC);
   LOG_I(EMU, "4 Starting OAI logs version %s Build date: %s on %s\n",
@@ -681,8 +718,8 @@ int test_log(void)
   LOG_I(MAC, "4 info MAC \n");
 
 
-  set_log(MAC, LOG_DEBUG,0);
-  set_log(EMU, LOG_DEBUG,0);
+  set_log(MAC, LOG_DEBUG);
+  set_log(EMU, LOG_DEBUG);
 
   LOG_I(LOG, "5 Starting OAI logs version %s Build date: %s on %s\n",
         BUILD_VERSION, BUILD_DATE, BUILD_HOST);
@@ -691,8 +728,8 @@ int test_log(void)
   LOG_I(MAC, "5 info MAC \n");
 
 
-  set_log(MAC, LOG_TRACE,0X07F);
-  set_log(EMU, LOG_TRACE,0X07F);
+  set_log(MAC, LOG_TRACE);
+  set_log(EMU, LOG_TRACE);
 
   LOG_ENTER(MAC);
   LOG_I(LOG, "6 Starting OAI logs version %s Build date: %s on %s\n",
diff --git a/common/utils/LOG/log.h b/common/utils/LOG/log.h
index 4a0552d4942843e5a453b6e2e0223ad0c5adf80e..767c1dbb356046a1eec1558fac95f44442d3019f 100644
--- a/common/utils/LOG/log.h
+++ b/common/utils/LOG/log.h
@@ -81,15 +81,14 @@ extern "C" {
  *  @ingroup _macro
  *  @brief LOG defines 9 levels of messages for users. Importance of these levels decrease gradually from 0 to 8
  * @{*/
-
-# define  OAILOG_ERR     0 /*!< \brief critical error conditions, impact on "must have" fuctinalities */
-# define  OAILOG_FILE    1 /*!< \brief important informational messages, but everything OK  */
-# define  OAILOG_WARNING 2 /*!< \brief warning conditions, shouldn't happen but doesn't impact "must have" functionalities */
-# define  OAILOG_INFO    3 /*!< \brief informational messages most people don't need, shouldn't impact real-time behavior */
-# define  OAILOG_DEBUG   4 /*!< \brief first level debug-level messages, for developers , may impact real-time behavior */
-# define  OAILOG_TRACE   5 /*!< \brief  second level debug-level messages, for developers ,likely impact real-time behavior*/
-
-#define NUM_LOG_LEVEL 6 /*!< \brief the number of message levels users have with LOG */
+# define  OAILOG_DISABLE -1 /*!< \brief disable all LOG messages, cannot be used in LOG macros, use only in LOG module */
+# define  OAILOG_ERR      0 /*!< \brief critical error conditions, impact on "must have" fuctinalities */
+# define  OAILOG_WARNING  1 /*!< \brief warning conditions, shouldn't happen but doesn't impact "must have" functionalities */
+# define  OAILOG_INFO     2 /*!< \brief informational messages most people don't need, shouldn't impact real-time behavior */
+# define  OAILOG_DEBUG    3 /*!< \brief first level debug-level messages, for developers , may impact real-time behavior */
+# define  OAILOG_TRACE    4 /*!< \brief  second level debug-level messages, for developers ,likely impact real-time behavior*/
+
+#define NUM_LOG_LEVEL 5 /*!< \brief the number of message levels users have with LOG (OAILOG_DISABLE is not available to user as a level, so it is not included)*/
 /* @}*/
 
 
@@ -128,21 +127,53 @@ extern "C" {
 
 /** @defgroup macros to identify a debug entity
  *  @ingroup each macro is a bit mask where the unique bit set identifies an entity to be debugged
- *            it allows to dynamically activate or not blocks of code 
+ *            it allows to dynamically activate or not blocks of code. The  LOG_MASKMAP_INIT macro 
+ *            is used to map a character string name to each debug bit, it allows to set or clear
+ *            the corresponding bit via the defined name, from the configuration or from the telnet
+ *            server.
  *  @brief 
  * @{*/
 #define DEBUG_PRACH        (1<<0)
 #define DEBUG_RU           (1<<1)
 #define DEBUG_UE_PHYPROC   (1<<2)
 #define DEBUG_LTEESTIM     (1<<3)
+#define DEBUG_DLCELLSPEC   (1<<4)
+#define DEBUG_ULSCH        (1<<5)
+#define DEBUG_RRC          (1<<6)
+#define DEBUG_PDCP         (1<<7)
+#define DEBUG_DFT          (1<<8)
+#define DEBUG_ASN1         (1<<9)
 #define DEBUG_CTRLSOCKET   (1<<10)
+#define DEBUG_SECURITY     (1<<11)
+#define DEBUG_NAS          (1<<12)
 #define UE_TIMING          (1<<20)
 
-#define SET_LOG_DEBUG(O)   g_log->debug_mask = (g_log->debug_mask | O)
-#define CLEAR_LOG_DEBUG(O) g_log->debug_mask = (g_log->debug_mask & (~O))
 
-#define SET_LOG_MATLAB(O)   g_log->matlab_mask = (g_log->matlab_mask | O)
-#define CLEAR_LOG_MATLAB(O) g_log->matlab_mask = (g_log->matlab_mask & (~O))
+#define LOG_MASKMAP_INIT {\
+  {"PRACH",       DEBUG_PRACH},\
+  {"RU",          DEBUG_RU},\
+  {"UE_PHYPROC",  DEBUG_UE_PHYPROC},\
+  {"LTEESTIM",    DEBUG_LTEESTIM},\
+  {"DLCELLSPEC",  DEBUG_DLCELLSPEC},\
+  {"ULSCH",       DEBUG_ULSCH},\
+  {"RRC",         DEBUG_RRC},\
+  {"PDCP",        DEBUG_PDCP},\
+  {"DFT",         DEBUG_DFT},\
+  {"ASN1",        DEBUG_ASN1},\
+  {"CTRLSOCKET",  DEBUG_CTRLSOCKET},\
+  {"SECURITY",    DEBUG_SECURITY},\
+  {"NAS",         DEBUG_NAS},\
+  {"UE_TIMING",   UE_TIMING},\
+  {NULL,-1}\
+}
+
+
+
+#define SET_LOG_DEBUG(B)   g_log->debug_mask = (g_log->debug_mask | B)
+#define CLEAR_LOG_DEBUG(B) g_log->debug_mask = (g_log->debug_mask & (~B))
+
+#define SET_LOG_DUMP(B)   g_log->dump_mask = (g_log->dump_mask | B)
+#define CLEAR_LOG_DUMP(B) g_log->dump_mask = (g_log->dump_mask & (~B))
 
 
 
@@ -183,9 +214,9 @@ typedef enum {
     TMR,
     USIM,
     LOCALIZE,
-    RRH,
     X2AP,
     LOADER,
+    ASN,
     MAX_LOG_PREDEF_COMPONENTS,
 }
 comp_name_t;
@@ -199,17 +230,18 @@ typedef struct {
     int value;  /*!< \brief integer value of mapping */
 } mapping;
 
-typedef int(*log_write_func_t)(FILE *stream, const char *format, va_list ap );
-
+typedef int(*log_vprint_func_t)(FILE *stream, const char *format, va_list ap );
+typedef int(*log_print_func_t)(FILE *stream, const char *format, ... );
 typedef struct  {
-    const char       *name;
-    int              level;
-    int              flag;
-    int              interval;
-    int              filelog;
-    char             *filelog_name;
-    FILE             *stream;
-    log_write_func_t fwrite;
+    const char        *name;
+    int               level;
+    int               savedlevel;
+    int               flag;
+    int               filelog;
+    char              *filelog_name;
+    FILE              *stream;
+    log_vprint_func_t vprint;
+    log_print_func_t  print;
     /* SR: make the log buffer component relative */
     char             log_buffer[MAX_LOG_TOTAL];
 } log_component_t;
@@ -217,13 +249,11 @@ typedef struct  {
 
 typedef struct {
     log_component_t         log_component[MAX_LOG_COMPONENTS];
-    char*                   level2string[NUM_LOG_LEVEL];
-    int                     onlinelog;
+    char                    level2string[NUM_LOG_LEVEL];
     int                     flag;
-    int                     filelog;
     char*                   filelog_name;
     uint64_t                debug_mask;
-    uint64_t                matlab_mask;
+    uint64_t                dump_mask;
 } log_t;
 
 
@@ -254,14 +284,15 @@ extern log_t *g_log;
 /*----------------------------------------------------------------------------*/
 int  logInit (void);
 void logRecord_mt(const char *file, const char *func, int line,int comp, int level, const char *format, ...) __attribute__ ((format (printf, 6, 7)));
-
-int  set_log(int component, int level, int interval);
+void log_dump(int component, void *buffer, int buffsize,int datatype, const char* format, ... );
+int  set_log(int component, int level);
 void set_glog(int level);
 
 void set_glog_onlinelog(int enable);
 void set_glog_filelog(int enable);
 void set_component_filelog(int comp);
-
+void close_component_filelog(int comp);
+void set_component_consolelog(int comp);
 int  map_str_to_int(mapping *map, const char *str);
 char *map_int_to_str(mapping *map, int val);
 void logClean (void);
@@ -293,7 +324,7 @@ int32_t write_file_matlab(const char *fname, const char *vname, void *data, int
 #define LOG_CONFIG_LEVEL_FORMAT                            "%s_log_level"
 #define LOG_CONFIG_LOGFILE_FORMAT                          "%s_log_infile"
 #define LOG_CONFIG_DEBUG_FORMAT                            "%s_debug"
-#define LOG_CONFIG_MATLAB_FORMAT                           "%s_matlab"
+#define LOG_CONFIG_DUMP_FORMAT                             "%s_dump"
 
 #define LOG_CONFIG_HELP_OPTIONS      " list of comma separated options to enable log module behavior. Available options: \n"\
                                      " nocolor:   disable color usage in log messages\n"\
@@ -309,7 +340,7 @@ int32_t write_file_matlab(const char *fname, const char *vname, void *data, int
 /*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 #define LOG_GLOBALPARAMS_DESC { \
 {LOG_CONFIG_STRING_GLOBAL_LOG_LEVEL,    "Default log level for all componemts\n",              0,  	      strptr:(char **)&gloglevel,    defstrval:log_level_names[2].name,    TYPE_STRING,    0}, \
-{LOG_CONFIG_STRING_GLOBAL_LOG_ONLINE,   "Default console output option, for all components\n", 0,  	      iptr:&(g_log->onlinelog),      defintval:1,                          TYPE_INT,       0}, \
+{LOG_CONFIG_STRING_GLOBAL_LOG_ONLINE,   "Default console output option, for all components\n", 0,  	      iptr:&(consolelog),            defintval:1,                          TYPE_INT,       0}, \
 {LOG_CONFIG_STRING_GLOBAL_LOG_OPTIONS,  LOG_CONFIG_HELP_OPTIONS,                               0,  	      strlistptr:NULL,               defstrlistval:NULL,                   TYPE_STRINGLIST,0} \
 }
 
@@ -319,23 +350,25 @@ int32_t write_file_matlab(const char *fname, const char *vname, void *data, int
  *  @ingroup _macro
  *  @brief Macro used to call logIt function with different message levels
  * @{*/
-
-// debugging macros(g_log->log_component[component].interval?logRecord_mt(__FILE__, __FUNCTION__, __LINE__, component, level, format, ##args):(void)0)
+#define LOG_DUMP_CHAR       0
+#define LOG_DUMP_DOUBLE     1
+// debugging macros
+#define LOG_F  LOG_I           /* because  LOG_F was originaly to dump a message or buffer but is also used as a regular level...., to dump use LOG_DUMPMSG */
 #  if T_TRACER 
      /* per component, level dependant macros */
-#    define LOG_I(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_INFO   ) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_INFO, x)    ;} else { T(T_LEGACY_ ## c ## _INFO, T_PRINTF(x))    ;}} while (0) 
-#    define LOG_W(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_WARNING) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_WARNING, x) ;} else { T(T_LEGACY_ ## c ## _WARNING, T_PRINTF(x)) ;}} while (0) 
 #    define LOG_E(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_ERR    ) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_ERR, x)     ;} else { T(T_LEGACY_ ## c ## _ERROR, T_PRINTF(x))   ;}} while (0) 
+#    define LOG_W(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_WARNING) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_WARNING, x) ;} else { T(T_LEGACY_ ## c ## _WARNING, T_PRINTF(x)) ;}} while (0) 
+#    define LOG_I(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_INFO   ) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_INFO, x)    ;} else { T(T_LEGACY_ ## c ## _INFO, T_PRINTF(x))    ;}} while (0) 
 #    define LOG_D(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_DEBUG  ) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_DEBUG, x)   ;} else { T(T_LEGACY_ ## c ## _DEBUG, T_PRINTF(x))   ;}} while (0) 
 #    define LOG_T(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_TRACE  ) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_TRACE, x)   ;} else { T(T_LEGACY_ ## c ## _TRACE, T_PRINTF(x))   ;}} while (0) 
-#    define LOG_F(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_FILE   ) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_FILE, x)  ;}}   while (0)  /* */
+    /* macro used to dump a buffer or a message as in openair2/RRC/LTE/RRC_eNB.c, replaces LOG_F macro */
+#    define LOG_DUMPMSG(c, f, b, s, x...) do {  if(g_log->dump_mask & f) log_dump(c, b, s, LOG_DUMP_CHAR, x)  ;}   while (0)  /* */
 #    define nfapi_log(FILE, FNC, LN, COMP, LVL, F...)  do { if (T_stdout) { logRecord_mt(__FILE__, __FUNCTION__, __LINE__,COMP, LVL, F)  ;}}   while (0)  /* */
      /* bitmask dependant macros, to isolate debugging code */
-#    define LOG_DEBUG_BEGIN(D) if (g_log->debug_mask & D) {
-#    define LOG_DEBUG_END   }
-     /* bitmask dependant macros, to generate matlab files */
-#    define LOG_M_BEGIN(D) if (g_log->matlab_mask & D) {
-#    define LOG_M_END   }
+#    define LOG_DEBUGFLAG(D) (g_log->debug_mask & D)
+
+     /* bitmask dependant macros, to generate debug file such as matlab file or message dump */
+#    define LOG_DUMPFLAG(D) (g_log->dump_mask & D)
 #    define LOG_M(file, vector, data, len, dec, format) do { write_file_matlab(file, vector, data, len, dec, format);} while(0)/* */
      /* define variable only used in LOG macro's */
 #    define LOG_VAR(A,B) A B
@@ -345,22 +378,22 @@ int32_t write_file_matlab(const char *fname, const char *vname, void *data, int
 #    define LOG_E(c, x...) /* */
 #    define LOG_D(c, x...) /* */
 #    define LOG_T(c, x...) /* */
-#    define LOG_F(c, x...) /* */
+
+#    define LOG_DUMPMSG(c, b, s, x...) /* */
 #    define nfapi_log(FILE, FNC, LN, COMP, LVL, FMT...) 
-#    define LOG_DEBUG_BEGIN(D) if (0) {
-#    define LOG_DEBUG_END   }
-#    define LOG_M_BEGIN(D) if (0) {
-#    define LOG_M_END   }
+#    define LOG_DEBUGFLAG(D)  ( 0 )
+#    define LOG_DUMPFLAG(D) ( 0 ) 
 #    define LOG_M(file, vector, data, len, dec, format) 
 #    define LOG_VAR(A,B)
 #  endif /* T_TRACER */
 /* avoid warnings for variables only used in LOG macro's but set outside debug section */
-#define LOG_USEDINLOG_VAR(A,B) __attribute__((unused)) A B 
+#define	GCC_NOTUSED		__attribute__((unused))
+#define LOG_USEDINLOG_VAR(A,B) GCC_NOTUSED A B 
 
 /* unfiltered macros, usefull for simulators or messages at init time, before log is configured */
 #define LOG_UM(file, vector, data, len, dec, format) do { write_file_matlab(file, vector, data, len, dec, format);} while(0)
-
 #define LOG_UI(c, x...) do {logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_INFO, x) ; } while(0)
+#define LOG_UDUMPMSG(c, b, s, f, x...) do { log_dump(c, b, s, f, x)  ;}   while (0)  /* */
 /* @}*/
 
 
@@ -368,9 +401,12 @@ int32_t write_file_matlab(const char *fname, const char *vname, void *data, int
  *  @ingroup _macro
  *  @brief Macro of some useful functions defined by LOG
  * @{*/
-#define LOG_ENTER(c) do {LOG_T(c, "Entering\n");}while(0) /*!< \brief Macro to log a message with severity DEBUG when entering a function */
-#define LOG_EXIT(c) do {LOG_T(c,"Exiting\n"); return;}while(0)  /*!< \brief Macro to log a message with severity TRACE when exiting a function */
-#define LOG_RETURN(c,x) do {uint32_t __rv;__rv=(unsigned int)(x);LOG_T(c,"Returning %08x\n", __rv);return((typeof(x))__rv);}while(0)  /*!< \brief Macro to log a function exit, including integer value, then to return a value to the calling function */
+#define LOG_ENTER(c) do {LOG_T(c, "Entering %s\n",__FUNCTION__);}while(0) /*!< \brief Macro to log a message with severity DEBUG when entering a function */
+#define LOG_END(c) do {LOG_T(c, "End of  %s\n",__FUNCTION__);}while(0) /*!< \brief Macro to log a message with severity DEBUG when entering a function */
+#define LOG_EXIT(c)  do { LOG_END(c); return;}while(0)  /*!< \brief Macro to log a message with severity TRACE when exiting a function */
+#define LOG_RETURN(c,r) do {LOG_T(c,"Leaving %s (rc = %08lx)\n", __FUNCTION__ , (unsigned long)(r) );return(r);}while(0)  /*!< \brief Macro to log a function exit, including integer value, then to return a value to the calling function */
+
+
 /* @}*/
 
 static __inline__ uint64_t rdtsc(void) {
diff --git a/common/utils/LOG/vcd_signal_dumper.h b/common/utils/LOG/vcd_signal_dumper.h
index 3c722ac49aa1335b18497e360e142b46040f4f9c..749978bb48da6a0cae665968d04db65b97800925 100644
--- a/common/utils/LOG/vcd_signal_dumper.h
+++ b/common/utils/LOG/vcd_signal_dumper.h
@@ -39,7 +39,7 @@
 
 /* WARNING: if you edit the enums below, update also string definitions in vcd_signal_dumper.c */
 typedef enum {
-  VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_ENB = 0,
+  VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_ENB=0,
   VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX1_ENB,
   VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_ENB,
   VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX1_ENB,
@@ -91,12 +91,12 @@ typedef enum {
   VCD_SIGNAL_DUMPER_VARIABLES_TX_SEQ_NUM,
   VCD_SIGNAL_DUMPER_VARIABLES_CNT,
   VCD_SIGNAL_DUMPER_VARIABLES_DUMMY_DUMP,
-  VCD_SIGNAL_DUMPER_VARIABLE_ITTI_SEND_MSG,
-  VCD_SIGNAL_DUMPER_VARIABLE_ITTI_POLL_MSG,
-  VCD_SIGNAL_DUMPER_VARIABLE_ITTI_RECV_MSG,
-  VCD_SIGNAL_DUMPER_VARIABLE_ITTI_ALLOC_MSG,
-  VCD_SIGNAL_DUMPER_VARIABLE_MP_ALLOC,
-  VCD_SIGNAL_DUMPER_VARIABLE_MP_FREE,
+  VCD_SIGNAL_DUMPER_VARIABLES_ITTI_SEND_MSG,
+  VCD_SIGNAL_DUMPER_VARIABLES_ITTI_POLL_MSG,
+  VCD_SIGNAL_DUMPER_VARIABLES_ITTI_RECV_MSG,
+  VCD_SIGNAL_DUMPER_VARIABLES_ITTI_ALLOC_MSG,
+  VCD_SIGNAL_DUMPER_VARIABLES_MP_ALLOC,
+  VCD_SIGNAL_DUMPER_VARIABLES_MP_FREE,
   VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_RX,
   VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_TX,
   VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO,
diff --git a/common/utils/T/.gitignore b/common/utils/T/.gitignore
index 817780592428b38fd48b57f26be6b3a73868ae63..d754ff7c38730801afa6f6629ef45b9c9d4dcc03 100644
--- a/common/utils/T/.gitignore
+++ b/common/utils/T/.gitignore
@@ -15,4 +15,5 @@ tracer/to_vcd
 tracer/extract_input_subframe
 tracer/extract_output_subframe
 tracer/extract
+tracer/multi
 tracee/tracee
diff --git a/common/utils/T/Makefile b/common/utils/T/Makefile
index dcb0d12fab9e638f49e812255e29cf61c058b755..87a6e34c5d1e0ecd4636439d9eccf8aeacd26d38 100644
--- a/common/utils/T/Makefile
+++ b/common/utils/T/Makefile
@@ -13,11 +13,20 @@ $(GENIDS): $(GENIDS_OBJS)
 	$(CC) $(CFLAGS) -c -o $@ $<
 
 T_messages.txt.h: T_messages.txt
-	xxd -i T_messages.txt > T_messages.txt.h
+	xxd -i T_messages.txt T_messages.txt.h
 
 T_IDs.h: $(GENIDS) T_messages.txt
 	./$(GENIDS) T_messages.txt T_IDs.h
 
+check_vcd:
+	gcc -Wall -I. -I.. -I../itti -Itracer -o _check_vcd check_vcd.c tracer/database.c tracer/utils.c -lm -pthread
+	./_check_vcd || (rm -f ./_check_vcd ./T_IDs.h ./T_messages.txt.h && false)
+	rm -f ./_check_vcd
+
+.PHONY: check_vcd
+
 clean:
-	rm -f *.o $(GENIDS) core T_IDs.h T_messages.txt.h
-	cd tracer && make clean
+	rm -f *.o $(GENIDS) core T_IDs.h T_messages.txt.h _check_vcd
+
+cleanall: clean
+	cd tracer && $(MAKE) clean
diff --git a/common/utils/T/T.c b/common/utils/T/T.c
index 8679a4185fdf2905b2850ce7115641827aef05a9..fbd3f75a0c195fbb9d41e927fe6b3bf13150ee41 100644
--- a/common/utils/T/T.c
+++ b/common/utils/T/T.c
@@ -31,6 +31,12 @@ volatile int _T_freelist_head;
 volatile int *T_freelist_head = &_T_freelist_head;
 T_cache_t *T_cache;
 
+#if BASIC_SIMULATOR
+/* global variables used by T_GET_SLOT, see in T.h */
+volatile uint64_t T_next_id;
+volatile uint64_t T_active_id;
+#endif
+
 static void get_message(int s)
 {
   char t;
@@ -91,7 +97,7 @@ static void new_thread(void *(*f)(void *), void *data)
 
 /* defined in local_tracer.c */
 void T_local_tracer_main(int remote_port, int wait_for_tracer,
-    int local_socket, char *shm_file);
+    int local_socket, void *shm_array);
 
 /* We monitor the tracee and the local tracer processes.
  * When one dies we forcefully kill the other.
@@ -114,22 +120,31 @@ void T_init(int remote_port, int wait_for_tracer, int dont_fork)
 {
   int socket_pair[2];
   int s;
-  int T_shm_fd;
   int child1, child2;
-  char shm_file[128];
-
-  sprintf(shm_file, "/%s%d", T_SHM_FILENAME, getpid());
+  int i;
 
   if (socketpair(AF_UNIX, SOCK_STREAM, 0, socket_pair))
     { perror("socketpair"); abort(); }
 
+  /* setup shared memory */
+  T_cache = mmap(NULL, T_CACHE_SIZE * sizeof(T_cache_t),
+                 PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
+  if (T_cache == MAP_FAILED)
+    { perror("mmap"); abort(); }
+
+  /* let's garbage the memory to catch some potential problems
+   * (think multiprocessor sync issues, barriers, etc.)
+   */
+  memset(T_cache, 0x55, T_CACHE_SIZE * sizeof(T_cache_t));
+  for (i = 0; i < T_CACHE_SIZE; i++) T_cache[i].busy = 0;
+
   /* child1 runs the local tracer and child2 (or main) runs the tracee */
 
   child1 = fork(); if (child1 == -1) abort();
   if (child1 == 0) {
     close(socket_pair[1]);
     T_local_tracer_main(remote_port, wait_for_tracer, socket_pair[0],
-                        shm_file);
+                        T_cache);
     exit(0);
   }
   close(socket_pair[0]);
@@ -138,6 +153,7 @@ void T_init(int remote_port, int wait_for_tracer, int dont_fork)
     child2 = fork(); if (child2 == -1) abort();
     if (child2 != 0) {
       close(socket_pair[1]);
+      munmap(T_cache, T_CACHE_SIZE * sizeof(T_cache_t));
       monitor_and_kill(child1, child2);
     }
   }
@@ -148,34 +164,29 @@ void T_init(int remote_port, int wait_for_tracer, int dont_fork)
 
   T_socket = s;
 
-  /* setup shared memory */
-  T_shm_fd = shm_open(shm_file, O_RDWR /*| O_SYNC*/, 0666);
-  shm_unlink(shm_file);
-  if (T_shm_fd == -1) { perror(shm_file); abort(); }
-  T_cache = mmap(NULL, T_CACHE_SIZE * sizeof(T_cache_t),
-                 PROT_READ | PROT_WRITE, MAP_SHARED, T_shm_fd, 0);
-  if (T_cache == MAP_FAILED)
-    { perror(shm_file); abort(); }
-  close(T_shm_fd);
-
   new_thread(T_receive_thread, NULL);
 }
 
 void T_Config_Init(void)
 {
-int T_port;            /* by default we wait for the tracer */
-int T_nowait;	      /* default port to listen to to wait for the tracer */
-int T_dont_fork;       /* default is to fork, see 'T_init' to understand */
+  int T_port;         /* by default we wait for the tracer */
+  int T_nowait;       /* default port to listen to to wait for the tracer */
+  int T_dont_fork;    /* default is to fork, see 'T_init' to understand */
 
-paramdef_t ttraceparams[] = CMDLINE_TTRACEPARAMS_DESC ;
+  paramdef_t ttraceparams[] = CMDLINE_TTRACEPARAMS_DESC;
 
-/* for a cleaner config file, TTracer params should be defined in a specific section... */
-  config_get( ttraceparams,sizeof(ttraceparams)/sizeof(paramdef_t),TTRACER_CONFIG_PREFIX);
+  /* for a cleaner config file, TTracer params should be defined in a
+   * specific section...
+   */
+  config_get(ttraceparams,
+             sizeof(ttraceparams) / sizeof(paramdef_t),
+             TTRACER_CONFIG_PREFIX);
 
-/* compatibility: look for TTracer command line options in root section */
-  config_process_cmdline( ttraceparams,sizeof(ttraceparams)/sizeof(paramdef_t),NULL);
+  /* compatibility: look for TTracer command line options in root section */
+  config_process_cmdline(ttraceparams,
+                         sizeof(ttraceparams) / sizeof(paramdef_t),
+                         NULL);
 
-  if (T_stdout == 0) {
+  if (T_stdout == 0)
     T_init(T_port, 1-T_nowait, T_dont_fork);
-  }
 }
diff --git a/common/utils/T/T.h b/common/utils/T/T.h
index 755f5d4e3981fa0424a3a89436e343c6b7c83adc..18e4a590d9444d12257d5207b4e00446d2811f6b 100644
--- a/common/utils/T/T.h
+++ b/common/utils/T/T.h
@@ -112,13 +112,37 @@ extern volatile int *T_freelist_head;
 extern T_cache_t *T_cache;
 extern int *T_active;
 /* When running the basic simulator, we may fill the T cache too fast.
- * Let's not crash if it's full, just wait.
+ * Let's serialize write accesses to the T cache. For that, we use a
+ * 'ticket' mechanism. To acquire a T slot the caller needs to own the
+ * current active ticket. We also wait for the slot to be free if
+ * it is already in use.
  */
 #if BASIC_SIMULATOR
-#  define T_BASIC_SIMULATOR_WAIT \
-     while (T_cache[T_LOCAL_slot].busy) usleep(100)
+#  define T_GET_SLOT \
+     do { \
+       extern volatile uint64_t T_next_id; \
+       extern volatile uint64_t T_active_id; \
+       uint64_t id; \
+       /* get a ticket */ \
+       id = __sync_fetch_and_add(&T_next_id, 1); \
+       /* wait for our turn */ \
+       while (id != __sync_fetch_and_add(&T_active_id, 0)) /* busy wait */; \
+       /* this is our turn, try to acquire the slot until it's free */ \
+       do { \
+         T_LOCAL_busy = __sync_fetch_and_or(&T_cache[T_LOCAL_slot].busy, 0x01); \
+         if (T_LOCAL_busy & 0x01) usleep(100); \
+       } while (T_LOCAL_busy & 0x01); \
+       /* check that there are still some tickets */ \
+       if (__sync_fetch_and_add(&T_active_id, 0) == 0xffffffffffffffff) { \
+         printf("T: reached the end of times, bye...\n"); \
+         abort(); \
+       } \
+       /* free our ticket, which signals the next waiter that it's its turn */ \
+       (void)__sync_fetch_and_add(&T_active_id, 1); \
+     } while (0)
 #else
-#  define T_BASIC_SIMULATOR_WAIT /* */
+#  define T_GET_SLOT \
+     T_LOCAL_busy = __sync_fetch_and_or(&T_cache[T_LOCAL_slot].busy, 0x01);
 #endif
 
 /* used at header of Tn, allocates buffer */
@@ -126,11 +150,12 @@ extern int *T_active;
   char *T_LOCAL_buf; \
   int T_LOCAL_size = 0; \
   int T_LOCAL_slot; \
+  int T_LOCAL_busy; \
   T_LOCAL_slot = __sync_fetch_and_add(T_freelist_head, 1) \
                  & (T_CACHE_SIZE - 1); \
   (void)__sync_fetch_and_and(T_freelist_head, T_CACHE_SIZE - 1); \
-  T_BASIC_SIMULATOR_WAIT; \
-  if (T_cache[T_LOCAL_slot].busy) { \
+  T_GET_SLOT; \
+  if (T_LOCAL_busy & 0x01) { \
     printf("%s:%d:%s: T cache is full - consider increasing its size\n", \
            __FILE__, __LINE__, __FUNCTION__); \
     abort(); \
@@ -142,7 +167,7 @@ extern int *T_active;
 #define T_COMMIT() \
   T_cache[T_LOCAL_slot].length = T_LOCAL_size; \
   __sync_synchronize(); \
-  T_cache[T_LOCAL_slot].busy = 1; \
+  (void)__sync_fetch_and_or(&T_cache[T_LOCAL_slot].busy, 0x02);
 
 #define T_CHECK_SIZE(len, argnum) \
   if (T_LOCAL_size + (len) > T_BUFFER_MAX) { \
@@ -578,10 +603,10 @@ extern int *T_active;
 /*   optname                     helpstr                paramflags           XXXptr           defXXXval         type       numelt           */
 /*------------------------------------------------------------------------------------------------------------------------------------------*/
 #define CMDLINE_TTRACEPARAMS_DESC {  \
-{"T_port",                     CONFIG_HLP_TPORT,      0,		iptr:&T_port,	     defintval:2021,	TYPE_INT,   0},	   \
-{"T_nowait",                   CONFIG_HLP_NOTWAIT,    PARAMFLAG_BOOL,	iptr:&T_nowait,      defintval:0,	TYPE_INT,   0},	   \
-{"T_dont_fork",                CONFIG_HLP_TNOFORK,    PARAMFLAG_BOOL,	iptr:&T_dont_fork,   defintval:0,	TYPE_INT,   0},	   \
-{"T_stdout",                   CONFIG_HLP_STDOUT,     PARAMFLAG_BOOL,	iptr:&T_stdout,      defintval:1,	TYPE_INT,   0},	   \
+{"T_port",                     CONFIG_HLP_TPORT,      0,                iptr:&T_port,        defintval:2021,     TYPE_INT,   0},           \
+{"T_nowait",                   CONFIG_HLP_NOTWAIT,    PARAMFLAG_BOOL,   iptr:&T_nowait,      defintval:0,        TYPE_INT,   0},           \
+{"T_dont_fork",                CONFIG_HLP_TNOFORK,    PARAMFLAG_BOOL,   iptr:&T_dont_fork,   defintval:0,        TYPE_INT,   0},           \
+{"T_stdout",                   CONFIG_HLP_STDOUT,     PARAMFLAG_BOOL,   iptr:&T_stdout,      defintval:1,        TYPE_INT,   0},           \
 } 
 
 
diff --git a/common/utils/T/T_defs.h b/common/utils/T/T_defs.h
index b0b9940c30b669832edfe1a817d1f56ebec3a096..83a380662d025fcc8056375667d0d1f0f752998d 100644
--- a/common/utils/T/T_defs.h
+++ b/common/utils/T/T_defs.h
@@ -31,13 +31,15 @@
 #endif
 
 typedef struct {
+  /* 'busy' is a bit field
+   * bit 0: 1 means that slot is acquired by writer
+   * bit 1: 1 means that slot is ready for consumption
+   */
   volatile int busy;
   char buffer[T_BUFFER_MAX];
   int length;
 } T_cache_t;
 
-#define T_SHM_FILENAME "/T_shm_segment"
-
 /* number of VCD functions (to be kept up to date! see in T_messages.txt) */
 #define VCD_NUM_FUNCTIONS 190
 
diff --git a/common/utils/T/T_messages.txt b/common/utils/T/T_messages.txt
index fd4425063b66a9d60f411e4a10560b5825caedce..2bce891ac93c425321f5aa05580498c7e1b9b4b3 100644
--- a/common/utils/T/T_messages.txt
+++ b/common/utils/T/T_messages.txt
@@ -749,6 +749,28 @@ ID = LEGACY_OSA_TRACE
     DESC = OSA legacy logs - trace level
     GROUP = ALL:LEGACY_OSA:LEGACY_GROUP_TRACE:LEGACY
     FORMAT = string,log
+
+ID = LEGACY_ASN_INFO
+    DESC = ASN legacy logs - info level
+    GROUP = ALL:LEGACY_ASN:LEGACY_GROUP_INFO:LEGACY
+    FORMAT = string,log
+ID = LEGACY_ASN_ERROR
+    DESC = ASN legacy logs - error level
+    GROUP = ALL:LEGACY_ASN:LEGACY_GROUP_ERROR:LEGACY
+    FORMAT = string,log
+ID = LEGACY_ASN_WARNING
+    DESC = ASN legacy logs - warning level
+    GROUP = ALL:LEGACY_ASN:LEGACY_GROUP_WARNING:LEGACY
+    FORMAT = string,log
+ID = LEGACY_ASN_DEBUG
+    DESC = ASN legacy logs - debug level
+    GROUP = ALL:LEGACY_ASN:LEGACY_GROUP_DEBUG:LEGACY
+    FORMAT = string,log
+ID = LEGACY_ASN_TRACE
+    DESC = ASN legacy logs - trace level
+    GROUP = ALL:LEGACY_ASN:LEGACY_GROUP_TRACE:LEGACY
+    FORMAT = string,log
+
 ID = LEGACY_SIM_INFO
     DESC = SIM legacy logs - info level
     GROUP = ALL:LEGACY_SIM:LEGACY_GROUP_INFO:LEGACY
@@ -769,6 +791,7 @@ ID = LEGACY_SIM_TRACE
     DESC = SIM legacy logs - trace level
     GROUP = ALL:LEGACY_SIM:LEGACY_GROUP_TRACE:LEGACY
     FORMAT = string,log
+
 # this is a bad hack but I won't fix (function util_print_hex_octets
 # in openairinterface5g/openair2/LAYER2/PDCP_v10.1.0/pdcp_util.c
 # does funky things with the LOG_x macros but we work on the C pre-processor
@@ -922,30 +945,9 @@ ID = buf_test
 #VCD variables and functions
 
 #be careful! this must be synchronized with the code!
-#also keep up to date VCD_NUM_VARIABLES and VCD_NUM_FUNCTIONS in T_defs.h
-
-#to synchronize: copy/paste from openair2/UTIL/LOG/vcd_signal_dumper.h
-#the variables and functions name, replace "SIGNAL_DUMPER_VARIABLES" by
-#"VARIABLE" and "SIGNAL_DUMPER_FUNCTIONS" by "FUNCTION" (check that
-#everything is fine! for example we have
-#VCD_SIGNAL_DUMPER_VARIABLE_ITTI_SEND_MSG that has VARIABLE without S)
-#and then process with sed
-
-#to generate variables:
-#sed -e "s/  VCD_VARIABLE_\(.*\)/ID = VCD_VARIABLE_\1\n    DESC = VCD variable \1\n    GROUP = ALL:VCD:ENB\n    FORMAT = ulong,value/" < VCD >> T_messages.txt
-
-#to generate functions:
-#sed -e "s/  VCD_FUNCTION_\(.*\)/ID = VCD_FUNCTION_\1\n    DESC = VCD function \1\n    GROUP = ALL:VCD:ENB\n    FORMAT = int,value/" < VCD.functions >> T_messages.txt
-
-#you may want to manually edit groups for UE instead of eNB
-
-#then count functions and variables and update VCD_NUM_FUNCTIONS and
-#VCD_NUM_VARIABLES in T_defs.h
-
-#also verify that VCD_FIRST_FUNCTION and VCD_FIRST_VARIABLE are correct
-#in T_defs.h. They have to point to the first function and variable
-#as defined below. Note also that the order of the VCD functions
-#and variables must be the same as in the code.
+#also keep up to date VCD_NUM_VARIABLES, VCD_NUM_FUNCTIONS,
+#VCD_FIRST_FUNCTION and VCD_FIRST_VARIABLE in T_defs.h
+#to check that everything is correct you can run: make _check_vcd
 
 #variables
 
@@ -953,514 +955,642 @@ ID = VCD_VARIABLE_FRAME_NUMBER_TX0_ENB
     DESC = VCD variable FRAME_NUMBER_TX0_ENB
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = frame_number_TX0_eNB
 ID = VCD_VARIABLE_FRAME_NUMBER_TX1_ENB
     DESC = VCD variable FRAME_NUMBER_TX1_ENB
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = frame_number_TX1_eNB
 ID = VCD_VARIABLE_FRAME_NUMBER_RX0_ENB
     DESC = VCD variable FRAME_NUMBER_RX0_ENB
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = frame_number_RX0_eNB
 ID = VCD_VARIABLE_FRAME_NUMBER_RX1_ENB
     DESC = VCD variable FRAME_NUMBER_RX1_ENB
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = frame_number_RX1_eNB
 ID = VCD_VARIABLE_SUBFRAME_NUMBER_TX0_ENB
     DESC = VCD variable SUBFRAME_NUMBER_TX0_ENB
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = subframe_number_TX0_eNB
 ID = VCD_VARIABLE_SUBFRAME_NUMBER_TX1_ENB
     DESC = VCD variable SUBFRAME_NUMBER_TX1_ENB
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = subframe_number_TX1_eNB
 ID = VCD_VARIABLE_SUBFRAME_NUMBER_RX0_ENB
     DESC = VCD variable SUBFRAME_NUMBER_RX0_ENB
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = subframe_number_RX0_eNB
 ID = VCD_VARIABLE_SUBFRAME_NUMBER_RX1_ENB
     DESC = VCD variable SUBFRAME_NUMBER_RX1_ENB
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = subframe_number_RX1_eNB
 ID = VCD_VARIABLE_FRAME_NUMBER_TX0_RU
     DESC = VCD variable FRAME_NUMBER_TX0_RU
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = frame_number_TX0_RU
 ID = VCD_VARIABLE_FRAME_NUMBER_TX1_RU
     DESC = VCD variable FRAME_NUMBER_TX1_RU
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = frame_number_TX1_RU
 ID = VCD_VARIABLE_FRAME_NUMBER_RX0_RU
     DESC = VCD variable FRAME_NUMBER_RX0_RU
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = frame_number_RX0_RU
 ID = VCD_VARIABLE_FRAME_NUMBER_RX1_RU
     DESC = VCD variable FRAME_NUMBER_RX1_RU
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = frame_number_RX1_RU
 ID = VCD_VARIABLE_SUBFRAME_NUMBER_TX0_RU
     DESC = VCD variable SUBFRAME_NUMBER_TX0_RU
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = subframe_number_TX0_RU
 ID = VCD_VARIABLE_SUBFRAME_NUMBER_TX1_RU
     DESC = VCD variable SUBFRAME_NUMBER_TX1_RU
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = subframe_number_TX1_RU
 ID = VCD_VARIABLE_SUBFRAME_NUMBER_RX0_RU
     DESC = VCD variable SUBFRAME_NUMBER_RX0_RU
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = subframe_number_RX0_RU
 ID = VCD_VARIABLE_SUBFRAME_NUMBER_RX1_RU
     DESC = VCD variable SUBFRAME_NUMBER_RX1_RU
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = subframe_number_RX1_RU
 ID = VCD_VARIABLE_RUNTIME_TX_ENB
     DESC = VCD variable RUNTIME_TX_ENB
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = runtime_TX_eNB
 ID = VCD_VARIABLE_RUNTIME_RX_ENB
     DESC = VCD variable RUNTIME_RX_ENB
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = runtime_RX_eNB
 ID = VCD_VARIABLE_FRAME_NUMBER_TX0_UE
     DESC = VCD variable FRAME_NUMBER_TX0_UE
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = frame_number_TX0_UE
 ID = VCD_VARIABLE_FRAME_NUMBER_TX1_UE
     DESC = VCD variable FRAME_NUMBER_TX1_UE
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = frame_number_TX1_UE
 ID = VCD_VARIABLE_FRAME_NUMBER_RX0_UE
     DESC = VCD variable FRAME_NUMBER_RX0_UE
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = frame_number_RX0_UE
 ID = VCD_VARIABLE_FRAME_NUMBER_RX1_UE
     DESC = VCD variable FRAME_NUMBER_RX1_UE
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = frame_number_RX1_UE
 ID = VCD_VARIABLE_SUBFRAME_NUMBER_TX0_UE
     DESC = VCD variable SUBFRAME_NUMBER_TX0_UE
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = subframe_TX0_UE
 ID = VCD_VARIABLE_SUBFRAME_NUMBER_TX1_UE
     DESC = VCD variable SUBFRAME_NUMBER_TX1_UE
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = subframe_TX1_UE
 ID = VCD_VARIABLE_SUBFRAME_NUMBER_RX0_UE
     DESC = VCD variable SUBFRAME_NUMBER_RX0_UE
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = subframe_RX0_UE
 ID = VCD_VARIABLE_SUBFRAME_NUMBER_RX1_UE
     DESC = VCD variable SUBFRAME_NUMBER_RX1_UE
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = subframe_RX1_UE
 ID = VCD_VARIABLE_UE_RX_OFFSET
     DESC = VCD variable UE_RX_OFFSET
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue_rx_offset
 ID = VCD_VARIABLE_DIFF
     DESC = VCD variable DIFF
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = diff2
 ID = VCD_VARIABLE_HW_SUBFRAME
     DESC = VCD variable HW_SUBFRAME
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = hw_subframe
 ID = VCD_VARIABLE_HW_FRAME
     DESC = VCD variable HW_FRAME
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = hw_frame
 ID = VCD_VARIABLE_HW_SUBFRAME_RX
     DESC = VCD variable HW_SUBFRAME_RX
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = hw_subframe_rx
 ID = VCD_VARIABLE_HW_FRAME_RX
     DESC = VCD variable HW_FRAME_RX
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = hw_frame_rx
 ID = VCD_VARIABLE_TXCNT
     DESC = VCD variable TXCNT
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = txcnt
 ID = VCD_VARIABLE_RXCNT
     DESC = VCD variable RXCNT
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = rxcnt
 ID = VCD_VARIABLE_TRX_TS
     DESC = VCD variable TRX_TS
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = trx_ts
 ID = VCD_VARIABLE_TRX_TST
     DESC = VCD variable TRX_TST
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = trx_tst
 ID = VCD_VARIABLE_TRX_TS_UE
     DESC = VCD variable TRX_TS_UE
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = trx_ts_ue
 ID = VCD_VARIABLE_TRX_TST_UE
     DESC = VCD variable TRX_TST_UE
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = trx_tst_ue
 ID = VCD_VARIABLE_TRX_WRITE_FLAGS
     DESC = VCD variable TRX_WRITE_FLAGS
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = trx_write_flags
 ID = VCD_VARIABLE_TX_TS
     DESC = VCD variable TX_TS
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = tx_ts
 ID = VCD_VARIABLE_RX_TS
     DESC = VCD variable RX_TS
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = rx_ts
 ID = VCD_VARIABLE_RX_HWCNT
     DESC = VCD variable RX_HWCNT
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = hw_cnt_rx
 ID = VCD_VARIABLE_RX_LHWCNT
     DESC = VCD variable RX_LHWCNT
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = lhw_cnt_rx
 ID = VCD_VARIABLE_TX_HWCNT
     DESC = VCD variable TX_HWCNT
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = hw_cnt_tx
 ID = VCD_VARIABLE_TX_LHWCNT
     DESC = VCD variable TX_LHWCNT
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = lhw_cnt_tx
 ID = VCD_VARIABLE_RX_PCK
     DESC = VCD variable RX_PCK
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = pck_rx
 ID = VCD_VARIABLE_TX_PCK
     DESC = VCD variable TX_PCK
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = pck_tx
 ID = VCD_VARIABLE_RX_SEQ_NUM
     DESC = VCD variable RX_SEQ_NUM
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = rx_seq_num
 ID = VCD_VARIABLE_RX_SEQ_NUM_PRV
     DESC = VCD variable RX_SEQ_NUM_PRV
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = rx_seq_num_prv
 ID = VCD_VARIABLE_TX_SEQ_NUM
     DESC = VCD variable TX_SEQ_NUM
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = tx_seq_num
 ID = VCD_VARIABLE_CNT
     DESC = VCD variable CNT
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = cnt
 ID = VCD_VARIABLE_DUMMY_DUMP
     DESC = VCD variable DUMMY_DUMP
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = dummy_dump
 ID = VCD_VARIABLE_ITTI_SEND_MSG
     DESC = VCD variable ITTI_SEND_MSG
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = itti_send_msg
 ID = VCD_VARIABLE_ITTI_POLL_MSG
     DESC = VCD variable ITTI_POLL_MSG
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = itti_poll_msg
 ID = VCD_VARIABLE_ITTI_RECV_MSG
     DESC = VCD variable ITTI_RECV_MSG
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = itti_recv_msg
 ID = VCD_VARIABLE_ITTI_ALLOC_MSG
     DESC = VCD variable ITTI_ALLOC_MSG
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = itti_alloc_msg
 ID = VCD_VARIABLE_MP_ALLOC
     DESC = VCD variable MP_ALLOC
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = mp_alloc
 ID = VCD_VARIABLE_MP_FREE
     DESC = VCD variable MP_FREE
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = mp_free
 ID = VCD_VARIABLE_UE_INST_CNT_RX
     DESC = VCD variable UE_INST_CNT_RX
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue_inst_cnt_rx
 ID = VCD_VARIABLE_UE_INST_CNT_TX
     DESC = VCD variable UE_INST_CNT_TX
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue_inst_cnt_tx
 ID = VCD_VARIABLE_DCI_INFO
     DESC = VCD variable DCI_INFO
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = dci_info
 ID = VCD_VARIABLE_UE0_BSR
     DESC = VCD variable UE0_BSR
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_BSR
 ID = VCD_VARIABLE_UE0_BO
     DESC = VCD variable UE0_BO
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_BO
 ID = VCD_VARIABLE_UE0_SCHEDULED
     DESC = VCD variable UE0_SCHEDULED
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_scheduled
 ID = VCD_VARIABLE_UE0_TIMING_ADVANCE
     DESC = VCD variable UE0_TIMING_ADVANCE
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_timing_advance
 ID = VCD_VARIABLE_UE0_SR_ENERGY
     DESC = VCD variable UE0_SR_ENERGY
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_SR_ENERGY
 ID = VCD_VARIABLE_UE0_SR_THRES
     DESC = VCD variable UE0_SR_THRES
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_SR_THRES
 ID = VCD_VARIABLE_UE0_RSSI0
     DESC = VCD variable UE0_RSSI0
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_rssi0
 ID = VCD_VARIABLE_UE0_RSSI1
     DESC = VCD variable UE0_RSSI1
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_rssi1
 ID = VCD_VARIABLE_UE0_RSSI2
     DESC = VCD variable UE0_RSSI2
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_rssi2
 ID = VCD_VARIABLE_UE0_RSSI3
     DESC = VCD variable UE0_RSSI3
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_rssi3
 ID = VCD_VARIABLE_UE0_RSSI4
     DESC = VCD variable UE0_RSSI4
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_rssi4
 ID = VCD_VARIABLE_UE0_RSSI5
     DESC = VCD variable UE0_RSSI5
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_rssi5
 ID = VCD_VARIABLE_UE0_RSSI6
     DESC = VCD variable UE0_RSSI6
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_rssi6
 ID = VCD_VARIABLE_UE0_RSSI7
     DESC = VCD variable UE0_RSSI7
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_rssi7
 ID = VCD_VARIABLE_UE0_RES0
     DESC = VCD variable UE0_RES0
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_res0
 ID = VCD_VARIABLE_UE0_RES1
     DESC = VCD variable UE0_RES1
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_res1
 ID = VCD_VARIABLE_UE0_RES2
     DESC = VCD variable UE0_RES2
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_res2
 ID = VCD_VARIABLE_UE0_RES3
     DESC = VCD variable UE0_RES3
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_res3
 ID = VCD_VARIABLE_UE0_RES4
     DESC = VCD variable UE0_RES4
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_res4
 ID = VCD_VARIABLE_UE0_RES5
     DESC = VCD variable UE0_RES5
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_res5
 ID = VCD_VARIABLE_UE0_RES6
     DESC = VCD variable UE0_RES6
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_res6
 ID = VCD_VARIABLE_UE0_RES7
     DESC = VCD variable UE0_RES7
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_res7
 ID = VCD_VARIABLE_UE0_MCS0
     DESC = VCD variable UE0_MCS0
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_MCS0
 ID = VCD_VARIABLE_UE0_MCS1
     DESC = VCD variable UE0_MCS1
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_MCS1
 ID = VCD_VARIABLE_UE0_MCS2
     DESC = VCD variable UE0_MCS2
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_MCS2
 ID = VCD_VARIABLE_UE0_MCS3
     DESC = VCD variable UE0_MCS3
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_MCS3
 ID = VCD_VARIABLE_UE0_MCS4
     DESC = VCD variable UE0_MCS4
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_MCS4
 ID = VCD_VARIABLE_UE0_MCS5
     DESC = VCD variable UE0_MCS5
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_MCS5
 ID = VCD_VARIABLE_UE0_MCS6
     DESC = VCD variable UE0_MCS6
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_MCS6
 ID = VCD_VARIABLE_UE0_MCS7
     DESC = VCD variable UE0_MCS7
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_MCS7
 ID = VCD_VARIABLE_UE0_RB0
     DESC = VCD variable UE0_RB0
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_RB0
 ID = VCD_VARIABLE_UE0_RB1
     DESC = VCD variable UE0_RB1
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_RB1
 ID = VCD_VARIABLE_UE0_RB2
     DESC = VCD variable UE0_RB2
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_RB2
 ID = VCD_VARIABLE_UE0_RB3
     DESC = VCD variable UE0_RB3
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_RB3
 ID = VCD_VARIABLE_UE0_RB4
     DESC = VCD variable UE0_RB4
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_RB4
 ID = VCD_VARIABLE_UE0_RB5
     DESC = VCD variable UE0_RB5
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_RB5
 ID = VCD_VARIABLE_UE0_RB6
     DESC = VCD variable UE0_RB6
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_RB6
 ID = VCD_VARIABLE_UE0_RB7
     DESC = VCD variable UE0_RB7
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_RB7
 ID = VCD_VARIABLE_UE0_ROUND0
     DESC = VCD variable UE0_ROUND0
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_ROUND0
 ID = VCD_VARIABLE_UE0_ROUND1
     DESC = VCD variable UE0_ROUND1
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_ROUND1
 ID = VCD_VARIABLE_UE0_ROUND2
     DESC = VCD variable UE0_ROUND2
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_ROUND2
 ID = VCD_VARIABLE_UE0_ROUND3
     DESC = VCD variable UE0_ROUND3
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_ROUND3
 ID = VCD_VARIABLE_UE0_ROUND4
     DESC = VCD variable UE0_ROUND4
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_ROUND4
 ID = VCD_VARIABLE_UE0_ROUND5
     DESC = VCD variable UE0_ROUND5
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_ROUND5
 ID = VCD_VARIABLE_UE0_ROUND6
     DESC = VCD variable UE0_ROUND6
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_ROUND6
 ID = VCD_VARIABLE_UE0_ROUND7
     DESC = VCD variable UE0_ROUND7
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_ROUND7
 ID = VCD_VARIABLE_UE0_SFN0
     DESC = VCD variable UE0_SFN0
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_SFN0
 ID = VCD_VARIABLE_UE0_SFN1
     DESC = VCD variable UE0_SFN1
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_SFN1
 ID = VCD_VARIABLE_UE0_SFN2
     DESC = VCD variable UE0_SFN2
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_SFN2
 ID = VCD_VARIABLE_UE0_SFN3
     DESC = VCD variable UE0_SFN3
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_SFN3
 ID = VCD_VARIABLE_UE0_SFN4
     DESC = VCD variable UE0_SFN4
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_SFN4
 ID = VCD_VARIABLE_UE0_SFN5
     DESC = VCD variable UE0_SFN5
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_SFN5
 ID = VCD_VARIABLE_UE0_SFN6
     DESC = VCD variable UE0_SFN6
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_SFN6
 ID = VCD_VARIABLE_UE0_SFN7
     DESC = VCD variable UE0_SFN7
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_SFN7
 ID = VCD_VARIABLE_SEND_IF4_SYMBOL
     DESC = VCD variable SEND_IF4_SYMBOL
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = send_if4_symbol
 ID = VCD_VARIABLE_RECV_IF4_SYMBOL
     DESC = VCD variable RECV_IF4_SYMBOL
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = recv_if4_symbol
 ID = VCD_VARIABLE_SEND_IF5_PKT_ID
     DESC = VCD variable SEND_IF5_PKT_ID
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = send_if5_pkt_id
 ID = VCD_VARIABLE_RECV_IF5_PKT_ID
     DESC = VCD variable RECV_IF5_PKT_ID
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = recv_if5_pkt_id
 ID = VCD_VARIABLE_UE_PDCP_FLUSH_SIZE
     DESC = VCD variable UE_PDCP_FLUSH_SIZE
     GROUP = ALL:VCD:ENB:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue_pdcp_flush_size
 ID = VCD_VARIABLE_UE_PDCP_FLUSH_ERR
     DESC = VCD variable UE_PDCP_FLUSH_ERR
     GROUP = ALL:VCD:ENB:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue_pdcp_flush_err
 ID = VCD_VARIABLE_UE0_TRX_READ_NS
     DESC = VCD variable UE0_TRX_READ_NS
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_trx_read_ns
 ID = VCD_VARIABLE_UE0_TRX_WRITE_NS
     DESC = VCD variable UE0_TRX_WRITE_NS
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_trx_write_ns
 ID = VCD_VARIABLE_UE0_TRX_READ_NS_MISSING
     DESC = VCD variable UE0_TRX_READ_NS_MISSING
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_trx_read_ns_missing
 ID = VCD_VARIABLE_UE0_TRX_WRITE_NS_MISSING
     DESC = VCD variable UE0_TRX_WRITE_NS_MISSING
     GROUP = ALL:VCD:UE:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ue0_trx_write_ns_missing
 ID = VCD_VARIABLE_CPUID_ENB_THREAD_RXTX
     DESC = VCD variable CPUID_ENB_THREAD_RXTX
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = enb_thread_rxtx_CPUID
 ID = VCD_VARIABLE_CPUID_RU_THREAD
     DESC = VCD variable CPUID_RU_THREAD
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ru_thread_CPUID
 ID = VCD_VARIABLE_CPUID_RU_THREAD_TX
     DESC = VCD variable CPUID_RU_THREAD_TX
     GROUP = ALL:VCD:ENB:VCD_VARIABLE
     FORMAT = ulong,value
+    VCD_NAME = ru_thread_tx_CPUID
 
 #functions
 
@@ -1468,763 +1598,954 @@ ID = VCD_FUNCTION_RT_SLEEP
     DESC = VCD function RT_SLEEP
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = rt_sleep
 ID = VCD_FUNCTION_TRX_READ
     DESC = VCD function TRX_READ
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = trx_read
 ID = VCD_FUNCTION_TRX_WRITE
     DESC = VCD function TRX_WRITE
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = trx_write
 ID = VCD_FUNCTION_TRX_READ_UE
     DESC = VCD function TRX_READ_UE
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = trx_read_ue
 ID = VCD_FUNCTION_TRX_WRITE_UE
     DESC = VCD function TRX_WRITE_UE
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = trx_write_ue
 ID = VCD_FUNCTION_TRX_READ_IF
     DESC = VCD function TRX_READ_IF
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = trx_read_if
 ID = VCD_FUNCTION_TRX_WRITE_IF
     DESC = VCD function TRX_WRITE_IF
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = trx_write_if
 ID = VCD_FUNCTION_eNB_PROC_RXTX0
     DESC = VCD function eNB_PROC_RXTX0
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = eNB_thread_rxtx0
 ID = VCD_FUNCTION_eNB_PROC_RXTX1
     DESC = VCD function eNB_PROC_RXTX1
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = eNB_thread_rxtx1
 ID = VCD_FUNCTION_UE_THREAD_SYNCH
     DESC = VCD function UE_THREAD_SYNCH
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_thread_synch
 ID = VCD_FUNCTION_UE_THREAD_RXTX0
     DESC = VCD function UE_THREAD_RXTX0
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_thread_rxtx0
 ID = VCD_FUNCTION_UE_THREAD_RXTX1
     DESC = VCD function UE_THREAD_RXTX1
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_thread_rxtx1
 ID = VCD_FUNCTION_TRX_READ_SF9
     DESC = VCD function TRX_READ_SF9
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = trx_read_sf9
 ID = VCD_FUNCTION_TRX_WRITE_SF9
     DESC = VCD function TRX_WRITE_SF9
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = trx_write_sf9
 ID = VCD_FUNCTION_UE_SIGNAL_COND_RXTX0
     DESC = VCD function UE_SIGNAL_COND_RXTX0
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_signal_cond_rxtx0
 ID = VCD_FUNCTION_UE_SIGNAL_COND_RXTX1
     DESC = VCD function UE_SIGNAL_COND_RXTX1
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_signal_cond_rxtx1
 ID = VCD_FUNCTION_UE_WAIT_COND_RXTX0
     DESC = VCD function UE_WAIT_COND_RXTX0
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_wait_cond_rxtx0
 ID = VCD_FUNCTION_UE_WAIT_COND_RXTX1
     DESC = VCD function UE_WAIT_COND_RXTX1
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_wait_cond_rxtx1
 ID = VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_COND_WAIT0
     DESC = VCD function UE_LOCK_MUTEX_RXTX_FOR_COND_WAIT0
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_lock_mutex_rxtx_for_cond_wait0
 ID = VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_COND_WAIT1
     DESC = VCD function UE_LOCK_MUTEX_RXTX_FOR_COND_WAIT1
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_lock_mutex_rxtx_for_cond_wait1
 ID = VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_DECREMENT0
     DESC = VCD function UE_LOCK_MUTEX_RXTX_FOR_CNT_DECREMENT0
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_lock_mutex_rxtx_for_cnt_decrement0
 ID = VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_DECREMENT1
     DESC = VCD function UE_LOCK_MUTEX_RXTX_FOR_CNT_DECREMENT1
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_lock_mutex_rxtx_for_cnt_decrement1
 ID = VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT0
     DESC = VCD function UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT0
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_lock_mutex_rxtx_for_cnt_increment0
 ID = VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT1
     DESC = VCD function UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT1
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_lock_mutex_rxtx_for_cnt_increment1
 ID = VCD_FUNCTION_SIM_DO_DL_SIGNAL
     DESC = VCD function SIM_DO_DL_SIGNAL
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = do_DL_sig
 ID = VCD_FUNCTION_SIM_DO_UL_SIGNAL
     DESC = VCD function SIM_DO_UL_SIGNAL
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = do_UL_sig
 ID = VCD_FUNCTION_SIM_UE_TRX_READ
     DESC = VCD function SIM_UE_TRX_READ
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = UE_trx_read
 ID = VCD_FUNCTION_eNB_TX
     DESC = VCD function eNB_TX
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = eNB_tx
 ID = VCD_FUNCTION_eNB_RX
     DESC = VCD function eNB_RX
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = eNB_rx
 ID = VCD_FUNCTION_eNB_TRX
     DESC = VCD function eNB_TRX
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = eNB_trx
 ID = VCD_FUNCTION_eNB_TM
     DESC = VCD function eNB_TM
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = eNB_tm
 ID = VCD_FUNCTION_eNB_RX_SLEEP
     DESC = VCD function eNB_RX_SLEEP
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = eNB_rx_sleep
 ID = VCD_FUNCTION_eNB_TX_SLEEP
     DESC = VCD function eNB_TX_SLEEP
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = eNB_tx_sleep
 ID = VCD_FUNCTION_eNB_PROC_SLEEP
     DESC = VCD function eNB_PROC_SLEEP
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = eNB_proc_sleep
 ID = VCD_FUNCTION_TRX_READ_RF
     DESC = VCD function TRX_READ_RF
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = trx_read_rf
 ID = VCD_FUNCTION_TRX_WRITE_RF
     DESC = VCD function TRX_WRITE_RF
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = trx_write_rf
 ID = VCD_FUNCTION_UE_SYNCH
     DESC = VCD function UE_SYNCH
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_synch
 ID = VCD_FUNCTION_UE_SLOT_FEP
     DESC = VCD function UE_SLOT_FEP
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_slot_fep
 ID = VCD_FUNCTION_UE_RRC_MEASUREMENTS
     DESC = VCD function UE_RRC_MEASUREMENTS
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_rrc_measurements
 ID = VCD_FUNCTION_UE_GAIN_CONTROL
     DESC = VCD function UE_GAIN_CONTROL
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_gain_control
 ID = VCD_FUNCTION_UE_ADJUST_SYNCH
     DESC = VCD function UE_ADJUST_SYNCH
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_adjust_synch
 ID = VCD_FUNCTION_UE_MEASUREMENT_PROCEDURES
     DESC = VCD function UE_MEASUREMENT_PROCEDURES
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = lte_ue_measurement_procedures
 ID = VCD_FUNCTION_UE_PDCCH_PROCEDURES
     DESC = VCD function UE_PDCCH_PROCEDURES
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = lte_ue_pdcch_procedures
 ID = VCD_FUNCTION_UE_PBCH_PROCEDURES
     DESC = VCD function UE_PBCH_PROCEDURES
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = lte_ue_pbch_procedures
 ID = VCD_FUNCTION_PHY_PROCEDURES_ENB_TX
     DESC = VCD function PHY_PROCEDURES_ENB_TX
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_eNb_tx0
 ID = VCD_FUNCTION_PHY_PROCEDURES_ENB_TX1
     DESC = VCD function PHY_PROCEDURES_ENB_TX1
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_eNb_tx1
 ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX
     DESC = VCD function PHY_PROCEDURES_RU_FEPRX
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ru_feprx0
 ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX1
     DESC = VCD function PHY_PROCEDURES_RU_FEPRX1
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ru_feprx1
 ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM
     DESC = VCD function PHY_PROCEDURES_RU_FEPTX_OFDM
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ru_feptx_ofdm0
 ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM1
     DESC = VCD function PHY_PROCEDURES_RU_FEPTX_OFDM1
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ru_feptx_ofdm1
 ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC
     DESC = VCD function PHY_PROCEDURES_RU_FEPTX_PREC
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ru_feptx_prec0
 ID = VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC1
     DESC = VCD function PHY_PROCEDURES_RU_FEPTX_PREC1
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ru_feptx_prec1
 ID = VCD_FUNCTION_PHY_PROCEDURES_ENB_RX_UESPEC
     DESC = VCD function PHY_PROCEDURES_ENB_RX_UESPEC
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_eNb_rx_uespec0
 ID = VCD_FUNCTION_PHY_PROCEDURES_ENB_RX_UESPEC1
     DESC = VCD function PHY_PROCEDURES_ENB_RX_UESPEC1
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_eNb_rx_uespec1
 ID = VCD_FUNCTION_PHY_PROCEDURES_UE_TX
     DESC = VCD function PHY_PROCEDURES_UE_TX
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ue_tx
 ID = VCD_FUNCTION_PHY_PROCEDURES_UE_RX
     DESC = VCD function PHY_PROCEDURES_UE_RX
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ue_rx
 ID = VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_UESPEC
     DESC = VCD function PHY_PROCEDURES_UE_TX_ULSCH_UESPEC
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ue_tx_ulsch_uespec
 ID = VCD_FUNCTION_PHY_PROCEDURES_UE_TX_PUCCH
     DESC = VCD function PHY_PROCEDURES_UE_TX_PUCCH
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ue_tx_pucch
 ID = VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_COMMON
     DESC = VCD function PHY_PROCEDURES_UE_TX_ULSCH_COMMON
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ue_tx_ulsch_common
 ID = VCD_FUNCTION_PHY_PROCEDURES_UE_TX_PRACH
     DESC = VCD function PHY_PROCEDURES_UE_TX_PRACH
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ue_tx_prach
 ID = VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_RAR
     DESC = VCD function PHY_PROCEDURES_UE_TX_ULSCH_RAR
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_ue_tx_ulsch_rar
 ID = VCD_FUNCTION_PHY_PROCEDURES_ENB_LTE
     DESC = VCD function PHY_PROCEDURES_ENB_LTE
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_eNB_lte
 ID = VCD_FUNCTION_PHY_PROCEDURES_UE_LTE
     DESC = VCD function PHY_PROCEDURES_UE_LTE
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_procedures_UE_lte
 ID = VCD_FUNCTION_PDSCH_THREAD
     DESC = VCD function PDSCH_THREAD
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdsch_thread
 ID = VCD_FUNCTION_DLSCH_THREAD0
     DESC = VCD function DLSCH_THREAD0
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_thread0
 ID = VCD_FUNCTION_DLSCH_THREAD1
     DESC = VCD function DLSCH_THREAD1
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_thread1
 ID = VCD_FUNCTION_DLSCH_THREAD2
     DESC = VCD function DLSCH_THREAD2
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_thread2
 ID = VCD_FUNCTION_DLSCH_THREAD3
     DESC = VCD function DLSCH_THREAD3
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_thread3
 ID = VCD_FUNCTION_DLSCH_THREAD4
     DESC = VCD function DLSCH_THREAD4
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_thread4
 ID = VCD_FUNCTION_DLSCH_THREAD5
     DESC = VCD function DLSCH_THREAD5
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_thread5
 ID = VCD_FUNCTION_DLSCH_THREAD6
     DESC = VCD function DLSCH_THREAD6
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_thread6
 ID = VCD_FUNCTION_DLSCH_THREAD7
     DESC = VCD function DLSCH_THREAD7
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_thread7
 ID = VCD_FUNCTION_DLSCH_DECODING0
     DESC = VCD function DLSCH_DECODING0
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_decoding0
 ID = VCD_FUNCTION_DLSCH_DECODING1
     DESC = VCD function DLSCH_DECODING1
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_decoding1
 ID = VCD_FUNCTION_DLSCH_DECODING2
     DESC = VCD function DLSCH_DECODING2
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_decoding2
 ID = VCD_FUNCTION_DLSCH_DECODING3
     DESC = VCD function DLSCH_DECODING3
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_decoding3
 ID = VCD_FUNCTION_DLSCH_DECODING4
     DESC = VCD function DLSCH_DECODING4
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_decoding4
 ID = VCD_FUNCTION_DLSCH_DECODING5
     DESC = VCD function DLSCH_DECODING5
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_decoding5
 ID = VCD_FUNCTION_DLSCH_DECODING6
     DESC = VCD function DLSCH_DECODING6
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_decoding6
 ID = VCD_FUNCTION_DLSCH_DECODING7
     DESC = VCD function DLSCH_DECODING7
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dlsch_decoding7
 ID = VCD_FUNCTION_RX_PDCCH
     DESC = VCD function RX_PDCCH
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = rx_pdcch
 ID = VCD_FUNCTION_DCI_DECODING
     DESC = VCD function DCI_DECODING
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = dci_decoding
 ID = VCD_FUNCTION_RX_PHICH
     DESC = VCD function RX_PHICH
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = rx_phich
 ID = VCD_FUNCTION_PDSCH_PROC
     DESC = VCD function PDSCH_PROC
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdsch_procedures
 ID = VCD_FUNCTION_PDSCH_PROC_SI
     DESC = VCD function PDSCH_PROC_SI
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdsch_procedures_si
 ID = VCD_FUNCTION_PDSCH_PROC_P
     DESC = VCD function PDSCH_PROC_P
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdsch_procedures_p
 ID = VCD_FUNCTION_PDSCH_PROC_RA
     DESC = VCD function PDSCH_PROC_RA
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdsch_procedures_ra
 ID = VCD_FUNCTION_PHY_UE_CONFIG_SIB2
     DESC = VCD function PHY_UE_CONFIG_SIB2
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_ue_config_sib2
 ID = VCD_FUNCTION_PHY_CONFIG_SIB1_ENB
     DESC = VCD function PHY_CONFIG_SIB1_ENB
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_phy_config_sib1_eNB
 ID = VCD_FUNCTION_PHY_CONFIG_SIB2_ENB
     DESC = VCD function PHY_CONFIG_SIB2_ENB
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_phy_config_sib2_eNB
 ID = VCD_FUNCTION_PHY_CONFIG_DEDICATED_ENB
     DESC = VCD function PHY_CONFIG_DEDICATED_ENB
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_phy_config_dedicated_eNB
 ID = VCD_FUNCTION_PHY_UE_COMPUTE_PRACH
     DESC = VCD function PHY_UE_COMPUTE_PRACH
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_ue_compute_prach
 ID = VCD_FUNCTION_PHY_ENB_ULSCH_MSG3
     DESC = VCD function PHY_ENB_ULSCH_MSG3
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_ulsch_msg3
 ID = VCD_FUNCTION_PHY_ENB_ULSCH_DECODING0
     DESC = VCD function PHY_ENB_ULSCH_DECODING0
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_ulsch_decoding0
 ID = VCD_FUNCTION_PHY_ENB_ULSCH_DECODING1
     DESC = VCD function PHY_ENB_ULSCH_DECODING1
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_ulsch_decoding1
 ID = VCD_FUNCTION_PHY_ENB_ULSCH_DECODING2
     DESC = VCD function PHY_ENB_ULSCH_DECODING2
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_ulsch_decoding2
 ID = VCD_FUNCTION_PHY_ENB_ULSCH_DECODING3
     DESC = VCD function PHY_ENB_ULSCH_DECODING3
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_ulsch_decoding3
 ID = VCD_FUNCTION_PHY_ENB_ULSCH_DECODING4
     DESC = VCD function PHY_ENB_ULSCH_DECODING4
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_ulsch_decoding4
 ID = VCD_FUNCTION_PHY_ENB_ULSCH_DECODING5
     DESC = VCD function PHY_ENB_ULSCH_DECODING5
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_ulsch_decoding5
 ID = VCD_FUNCTION_PHY_ENB_ULSCH_DECODING6
     DESC = VCD function PHY_ENB_ULSCH_DECODING6
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_ulsch_decoding6
 ID = VCD_FUNCTION_PHY_ENB_ULSCH_DECODING7
     DESC = VCD function PHY_ENB_ULSCH_DECODING7
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_ulsch_decoding7
 ID = VCD_FUNCTION_PHY_ENB_SFGEN
     DESC = VCD function PHY_ENB_SFGEN
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_sfgen
 ID = VCD_FUNCTION_PHY_ENB_PRACH_RX
     DESC = VCD function PHY_ENB_PRACH_RX
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_prach_rx
 ID = VCD_FUNCTION_PHY_RU_PRACH_RX
     DESC = VCD function PHY_RU_PRACH_RX
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_ru_prach_rx
 ID = VCD_FUNCTION_PHY_ENB_PDCCH_TX
     DESC = VCD function PHY_ENB_PDCCH_TX
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_pdcch_tx
 ID = VCD_FUNCTION_PHY_ENB_RS_TX
     DESC = VCD function PHY_ENB_RS_TX
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_enb_rs_tx
 ID = VCD_FUNCTION_UE_GENERATE_PRACH
     DESC = VCD function UE_GENERATE_PRACH
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_ue_generate_prach
 ID = VCD_FUNCTION_UE_ULSCH_MODULATION
     DESC = VCD function UE_ULSCH_MODULATION
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_ue_ulsch_modulation
 ID = VCD_FUNCTION_UE_ULSCH_ENCODING
     DESC = VCD function UE_ULSCH_ENCODING
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_ue_ulsch_encoding
 ID = VCD_FUNCTION_UE_ULSCH_ENCODING_FILL_CQI
     DESC = VCD function UE_ULSCH_ENCODING_FILL_CQI
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_ue_ulsch_encoding_fill_cqi
 ID = VCD_FUNCTION_UE_ULSCH_SCRAMBLING
     DESC = VCD function UE_ULSCH_SCRAMBLING
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_ue_ulsch_scrambling
 ID = VCD_FUNCTION_ENB_DLSCH_MODULATION
     DESC = VCD function ENB_DLSCH_MODULATION
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_eNB_dlsch_modulation
 ID = VCD_FUNCTION_ENB_DLSCH_ENCODING
     DESC = VCD function ENB_DLSCH_ENCODING
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_eNB_dlsch_encoding
 ID = VCD_FUNCTION_ENB_DLSCH_ENCODING_W
     DESC = VCD function ENB_DLSCH_ENCODING_W
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_eNB_dlsch_encoding_w
 ID = VCD_FUNCTION_ENB_DLSCH_SCRAMBLING
     DESC = VCD function ENB_DLSCH_SCRAMBLING
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_eNB_dlsch_scrambling
 ID = VCD_FUNCTION_ENB_BEAM_PRECODING
     DESC = VCD function ENB_BEAM_PRECODING
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_eNB_beam_precoding
 ID = VCD_FUNCTION_ENB_OFDM_MODULATION
     DESC = VCD function ENB_OFDM_MODULATION
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = phy_eNB_ofdm_mod_l
 ID = VCD_FUNCTION_MACPHY_INIT
     DESC = VCD function MACPHY_INIT
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_macphy_init
 ID = VCD_FUNCTION_MACPHY_EXIT
     DESC = VCD function MACPHY_EXIT
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_macphy_exit
 ID = VCD_FUNCTION_ENB_DLSCH_ULSCH_SCHEDULER
     DESC = VCD function ENB_DLSCH_ULSCH_SCHEDULER
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_eNB_dlsch_ulsch_scheduler
 ID = VCD_FUNCTION_FILL_RAR
     DESC = VCD function FILL_RAR
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_fill_rar
 ID = VCD_FUNCTION_TERMINATE_RA_PROC
     DESC = VCD function TERMINATE_RA_PROC
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_terminate_ra_proc
 ID = VCD_FUNCTION_INITIATE_RA_PROC
     DESC = VCD function INITIATE_RA_PROC
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_initiate_ra_proc
 ID = VCD_FUNCTION_CANCEL_RA_PROC
     DESC = VCD function CANCEL_RA_PROC
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_cancel_ra_proc
 ID = VCD_FUNCTION_GET_DCI_SDU
     DESC = VCD function GET_DCI_SDU
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_get_dci_sdu
 ID = VCD_FUNCTION_GET_DLSCH_SDU
     DESC = VCD function GET_DLSCH_SDU
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_get_dlsch_sdu
 ID = VCD_FUNCTION_RX_SDU
     DESC = VCD function RX_SDU
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_rx_sdu
 ID = VCD_FUNCTION_MRBCH_PHY_SYNC_FAILURE
     DESC = VCD function MRBCH_PHY_SYNC_FAILURE
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_mrbch_phy_sync_failure
 ID = VCD_FUNCTION_SR_INDICATION
     DESC = VCD function SR_INDICATION
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_SR_indication
 ID = VCD_FUNCTION_DLSCH_PREPROCESSOR
     DESC = VCD function DLSCH_PREPROCESSOR
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = mac_dlsch_preprocessor
 ID = VCD_FUNCTION_SCHEDULE_DLSCH
     DESC = VCD function SCHEDULE_DLSCH
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = mac_schedule_dlsch
 ID = VCD_FUNCTION_FILL_DLSCH_DCI
     DESC = VCD function FILL_DLSCH_DCI
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = mac_fill_dlsch_dci
 ID = VCD_FUNCTION_OUT_OF_SYNC_IND
     DESC = VCD function OUT_OF_SYNC_IND
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_out_of_sync_ind
 ID = VCD_FUNCTION_UE_DECODE_SI
     DESC = VCD function UE_DECODE_SI
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_ue_decode_si
 ID = VCD_FUNCTION_UE_DECODE_PCCH
     DESC = VCD function UE_DECODE_PCCH
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_ue_decode_pcch
 ID = VCD_FUNCTION_UE_DECODE_CCCH
     DESC = VCD function UE_DECODE_CCCH
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_ue_decode_ccch
 ID = VCD_FUNCTION_UE_DECODE_BCCH
     DESC = VCD function UE_DECODE_BCCH
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_ue_decode_bcch
 ID = VCD_FUNCTION_UE_SEND_SDU
     DESC = VCD function UE_SEND_SDU
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_ue_send_sdu
 ID = VCD_FUNCTION_UE_GET_SDU
     DESC = VCD function UE_GET_SDU
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_ue_get_sdu
 ID = VCD_FUNCTION_UE_GET_RACH
     DESC = VCD function UE_GET_RACH
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_ue_get_rach
 ID = VCD_FUNCTION_UE_PROCESS_RAR
     DESC = VCD function UE_PROCESS_RAR
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_ue_process_rar
 ID = VCD_FUNCTION_UE_SCHEDULER
     DESC = VCD function UE_SCHEDULER
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_ue_scheduler
 ID = VCD_FUNCTION_UE_GET_SR
     DESC = VCD function UE_GET_SR
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = macxface_ue_get_sr
 ID = VCD_FUNCTION_UE_SEND_MCH_SDU
     DESC = VCD function UE_SEND_MCH_SDU
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = ue_send_mch_sdu
 ID = VCD_FUNCTION_RLC_DATA_REQ
     DESC = VCD function RLC_DATA_REQ
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = rlc_data_req
 #ID = VCD_FUNCTION_RLC_DATA_IND
 #    DESC = VCD function RLC_DATA_IND
 #    GROUP = ALL:VCD:ENB:VCD_FUNCTION
 #    FORMAT = int,value
+#    VCD_NAME = rlc_data_ind
 ID = VCD_FUNCTION_MAC_RLC_STATUS_IND
     DESC = VCD function MAC_RLC_STATUS_IND
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = mac_rlc_status_ind
 ID = VCD_FUNCTION_MAC_RLC_DATA_REQ
     DESC = VCD function MAC_RLC_DATA_REQ
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = mac_rlc_data_req
 ID = VCD_FUNCTION_MAC_RLC_DATA_IND
     DESC = VCD function MAC_RLC_DATA_IND
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = mac_rlc_data_ind
 ID = VCD_FUNCTION_RLC_UM_TRY_REASSEMBLY
     DESC = VCD function RLC_UM_TRY_REASSEMBLY
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = rlc_um_try_reassembly
 ID = VCD_FUNCTION_RLC_UM_CHECK_TIMER_DAR_TIME_OUT
     DESC = VCD function RLC_UM_CHECK_TIMER_DAR_TIME_OUT
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = rlc_um_check_timer_dar_time_out
 ID = VCD_FUNCTION_RLC_UM_RECEIVE_PROCESS_DAR
     DESC = VCD function RLC_UM_RECEIVE_PROCESS_DAR
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = rlc_um_receive_process_dar
 ID = VCD_FUNCTION_PDCP_RUN
     DESC = VCD function PDCP_RUN
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcp_run
 ID = VCD_FUNCTION_PDCP_DATA_REQ
     DESC = VCD function PDCP_DATA_REQ
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcp_data_req
 ID = VCD_FUNCTION_PDCP_DATA_IND
     DESC = VCD function PDCP_DATA_IND
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcp_data_ind
 ID = VCD_FUNCTION_PDCP_APPLY_SECURITY
     DESC = VCD function PDCP_APPLY_SECURITY
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcp_apply_security
 ID = VCD_FUNCTION_PDCP_VALIDATE_SECURITY
     DESC = VCD function PDCP_VALIDATE_SECURITY
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcp_validate_security
 ID = VCD_FUNCTION_PDCP_FIFO_READ
     DESC = VCD function PDCP_FIFO_READ
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcp_fifo_read
 ID = VCD_FUNCTION_PDCP_FIFO_READ_BUFFER
     DESC = VCD function PDCP_FIFO_READ_BUFFER
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcp_fifo_read_buffer
 ID = VCD_FUNCTION_PDCP_FIFO_FLUSH
     DESC = VCD function PDCP_FIFO_FLUSH
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcp_fifo_flush
 ID = VCD_FUNCTION_PDCP_FIFO_FLUSH_BUFFER
     DESC = VCD function PDCP_FIFO_FLUSH_BUFFER
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcp_fifo_flush_buffer
 ID = VCD_FUNCTION_RRC_RX_TX
     DESC = VCD function RRC_RX_TX
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = rrc_rx_tx
 ID = VCD_FUNCTION_RRC_MAC_CONFIG
     DESC = VCD function RRC_MAC_CONFIG
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = rrc_mac_config_req
 ID = VCD_FUNCTION_RRC_UE_DECODE_SIB1
     DESC = VCD function RRC_UE_DECODE_SIB1
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = rrc_ue_decode_sib1
 ID = VCD_FUNCTION_RRC_UE_DECODE_SI
     DESC = VCD function RRC_UE_DECODE_SI
     GROUP = ALL:VCD:UE:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = rrc_ue_decode_si
 ID = VCD_FUNCTION_GTPV1U_ENB_TASK
     DESC = VCD function GTPV1U_ENB_TASK
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = gtpv1u_enb_task
 ID = VCD_FUNCTION_GTPV1U_PROCESS_UDP_REQ
     DESC = VCD function GTPV1U_PROCESS_UDP_REQ
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = gtpv1u_process_udp_req
 ID = VCD_FUNCTION_GTPV1U_PROCESS_TUNNEL_DATA_REQ
     DESC = VCD function GTPV1U_PROCESS_TUNNEL_DATA_REQ
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = gtpv1u_process_tunnel_data_req
 ID = VCD_FUNCTION_UDP_ENB_TASK
     DESC = VCD function UDP_ENB_TASK
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = udp_enb_task
 ID = VCD_FUNCTION_EMU_TRANSPORT
     DESC = VCD function EMU_TRANSPORT
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = emu_transport
 ID = VCD_FUNCTION_LOG_RECORD
     DESC = VCD function LOG_RECORD
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = log_record
 ID = VCD_FUNCTION_ITTI_ENQUEUE_MESSAGE
     DESC = VCD function ITTI_ENQUEUE_MESSAGE
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = itti_enqueue_message
 ID = VCD_FUNCTION_ITTI_DUMP_ENQUEUE_MESSAGE
     DESC = VCD function ITTI_DUMP_ENQUEUE_MESSAGE
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = itti_dump_enqueue_message
 ID = VCD_FUNCTION_ITTI_DUMP_ENQUEUE_MESSAGE_MALLOC
     DESC = VCD function ITTI_DUMP_ENQUEUE_MESSAGE_MALLOC
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = itti_dump_enqueue_message_malloc
 ID = VCD_FUNCTION_ITTI_RELAY_THREAD
     DESC = VCD function ITTI_RELAY_THREAD
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = itti_relay_thread
 ID = VCD_FUNCTION_TEST
     DESC = VCD function TEST
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = test
 ID = VCD_FUNCTION_SEND_IF4
     DESC = VCD function SEND_IF4
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = send_if4
 ID = VCD_FUNCTION_RECV_IF4
     DESC = VCD function RECV_IF4
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = recv_if4
 ID = VCD_FUNCTION_SEND_IF5
     DESC = VCD function SEND_IF5
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = send_if5
 ID = VCD_FUNCTION_RECV_IF5
     DESC = VCD function RECV_IF5
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = recv_if5
 ID = VCD_FUNCTION_TRX_COMPR_IF
     DESC = VCD function TRX_COMPR_IF
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = compress_if
 ID = VCD_FUNCTION_TRX_DECOMPR_IF
     DESC = VCD function TRX_DECOMPR_IF
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = decompress_if
 ID = VCD_FUNCTION_NFAPI
     DESC = VCD function NFAPI
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = nfapi_subframe
 ID = VCD_FUNCTION_GENERATE_PCFICH
     DESC = VCD function GENERATE_PCFICH
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = generate_pcfich
 ID = VCD_FUNCTION_GENERATE_DCI0
     DESC = VCD function GENERATE_DCI0
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = generate_dci0
 ID = VCD_FUNCTION_GENERATE_DLSCH
     DESC = VCD function GENERATE_DLSCH
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = generate_dlsch
 ID = VCD_FUNCTION_GENERATE_PHICH
     DESC = VCD function GENERATE_PHICH
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = generate_phich
 ID = VCD_FUNCTION_PDCCH_SCRAMBLING
     DESC = VCD function PDCCH_SCRAMBLING
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcch_scrambling
 ID = VCD_FUNCTION_PDCCH_MODULATION
     DESC = VCD function PDCCH_MODULATION
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcch_modulation
 ID = VCD_FUNCTION_PDCCH_INTERLEAVING
     DESC = VCD function PDCCH_INTERLEAVING
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcch_interleaving
 ID = VCD_FUNCTION_PDCCH_TX
     DESC = VCD function PDCCH_TX
     GROUP = ALL:VCD:ENB:VCD_FUNCTION
     FORMAT = int,value
+    VCD_NAME = pdcch_tx
diff --git a/common/utils/T/check_vcd.c b/common/utils/T/check_vcd.c
new file mode 100644
index 0000000000000000000000000000000000000000..1460d7e20a7dd861f39e4a45150e91377e0ed0da
--- /dev/null
+++ b/common/utils/T/check_vcd.c
@@ -0,0 +1,249 @@
+/*
+ * To disable the checks done by this program, see below at the beginning
+ * of the function 'main'.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+
+#include "database.h"
+
+#define T_TRACER 1
+#include "T.h"
+
+/* VCD specific defines and includes
+ * If the codebase changes, it may need to be updated
+ */
+#define ENB_MODE
+#define ENABLE_USE_CPU_EXECUTION_TIME
+#include "../LOG/vcd_signal_dumper.c"
+
+void err(char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
+void err(char *fmt, ...)
+{
+  va_list ap;
+
+  va_start(ap, fmt);
+
+  printf("\x1b[31m");
+  printf("error: ");
+  vprintf(fmt, ap);
+  printf("\n"
+"\x1b[33m\n"
+"You probably added a VCD trace (variable or function) but you did not\n"
+"update T_messages.txt and/or T_defs.h in common/utils/T/\n"
+"\n"
+"Be sure to add the new trace to T_messages.txt, at the right place in the\n"
+"file. Do not forget to define VCD_NAME with an identical value as found\n"
+"in the array eurecomVariablesNames or eurecomFunctionsNames.\n"
+"\n"
+"Be sure to update VCD_NUM_FUNCTIONS, VCD_NUM_VARIABLES, VCD_FIRST_FUNCTION\n"
+"and VCD_FIRST_VARIABLE in T_defs.h\n"
+"\n"
+"The same procedure has to be followed when you delete a VCD trace.\n"
+"Delete it in T_messages.txt as well and update T_defs.h\n"
+"\n"
+"You can disable those VCD checks at development time.\n"
+"To disable the VCD checks see the file common/utils/T/check_vcd.c\n"
+"Do not push any modification that disables the VCD checks to the\n"
+"main repository.\n");
+
+  printf("\x1b[m\n");
+
+  va_end(ap);
+
+  exit(1);
+}
+
+int main(void)
+{
+  /* to disable the checks done by this program, uncomment the following
+   * line, ie. remove the leading '//'
+   */
+  //return 0;
+
+  void *database = parse_database("T_messages.txt");
+  int number_of_events;
+  int first_var = -1;
+  int last_var;
+  int first_fun = -1;
+  int last_fun;
+  char *prefix;
+  int prefix_len;
+  char *name;
+  char *vcd_name;
+  int i;
+  FILE *in;
+  char *l = NULL;
+  size_t lsize;
+
+  if (database == NULL) err("something wrong with T_messages.txt");
+
+  /* check the value of VCD_NUM_FUNCTIONS */
+  if (VCD_NUM_FUNCTIONS != sizeof(eurecomFunctionsNames) / sizeof(char *))
+    err("VCD_NUM_FUNCTIONS (%d) must be equal to %zd",
+        VCD_NUM_FUNCTIONS,
+        sizeof(eurecomFunctionsNames) / sizeof(char *));
+
+  /* check the value of VCD_NUM_VARIABLES */
+  if (VCD_NUM_VARIABLES != sizeof(eurecomVariablesNames) / sizeof(char *))
+    err("VCD_NUM_VARIABLES (%d) must be equal to %zd",
+        VCD_NUM_VARIABLES,
+        sizeof(eurecomVariablesNames) / sizeof(char *));
+
+  number_of_events = number_of_ids(database);
+  if (number_of_events == 0) err("no event defined in T_messages.txt");
+
+  /* T_messages.txt ends with VCD VARIABLES followed by VCD FUNCTIONS
+   * followed by nothing.
+   * Let's check.
+   */
+
+  /* check VCD VARIABLES traces in T_messages.txt */
+  prefix = "VCD_VARIABLE_";
+  prefix_len = strlen(prefix);
+
+  for (i = 0; i < number_of_events; i++) {
+    name = event_name_from_id(database, i);
+    if (strncmp(name, prefix, prefix_len)) continue;
+    first_var = i;
+    break;
+  }
+  if (first_var == -1)
+    err("no VCD_VARIABLE_ found in T_messages.txt");
+  for (; i < number_of_events; i++) {
+    name = event_name_from_id(database, i);
+    if (strncmp(name, prefix, prefix_len)) break;
+  }
+  last_var = i-1;
+
+  /* check VCD FUNCTIONS traces in T_messages.txt */
+  if (i == number_of_events)
+    err("no VCD_FUNCTION_ found in T_messages.txt");
+
+  prefix = "VCD_FUNCTION_";
+  prefix_len = strlen(prefix);
+
+  first_fun = i;
+
+  name = event_name_from_id(database, i);
+  if (strncmp(name, prefix, prefix_len))
+    err("last VCD_VARIABLE_ not followed by a VCD_FUNCTION_ in T_messages.txt");
+
+  for (; i < number_of_events; i++) {
+    name = event_name_from_id(database, i);
+    if (strncmp(name, prefix, prefix_len)) break;
+  }
+
+  if (i != number_of_events)
+    err("T_messages.txt does not end with a VCD_FUNCTION_ trace");
+
+  last_fun = i-1;
+
+  if (first_var != (unsigned)VCD_FIRST_VARIABLE)
+    err("VCD_FIRST_VARIABLE is not correct in T_defs.h");
+  if (first_fun != (unsigned)VCD_FIRST_FUNCTION)
+    err("VCD_FIRST_FUNCTION is not correct in T_defs.h");
+  if (last_var-first_var+1 != VCD_NUM_VARIABLES)
+    err("VCD_NUM_VARIABLES is not correct in T_defs.h");
+  if (last_fun-first_fun+1 != VCD_NUM_FUNCTIONS)
+    err("VCD_NUM_FUNCTIONS is not correct in T_defs.h");
+
+  /* check that VCD_NAME is identical to
+   * eurecomVariablesNames[x]/eurecomFunctionsNames[x]
+   */
+  prefix = "VCD_VARIABLE_";
+  prefix_len = strlen(prefix);
+
+  for (i = 0; i < number_of_events; i++) {
+    name = event_name_from_id(database, i);
+    if (strncmp(name, prefix, prefix_len)) continue;
+    vcd_name = event_vcd_name_from_id(database, i);
+    if (vcd_name == NULL)
+      err("%s has no VCD_NAME in T_messages.txt", name);
+    if (strcmp(vcd_name, eurecomVariablesNames[i - first_var]))
+      err("%s has a wrong VCD_NAME in T_messages.txt", name);
+  }
+
+  prefix = "VCD_FUNCTION_";
+  prefix_len = strlen(prefix);
+
+  for (i = 0; i < number_of_events; i++) {
+    name = event_name_from_id(database, i);
+    if (strncmp(name, prefix, prefix_len)) continue;
+    vcd_name = event_vcd_name_from_id(database, i);
+    if (vcd_name == NULL)
+      err("%s has no VCD_NAME in T_messages.txt", name);
+    if (strcmp(vcd_name, eurecomFunctionsNames[i - first_fun]))
+      err("%s has a wrong VCD_NAME in T_messages.txt", name);
+  }
+
+  /* check IDs - these checks are difficult because we parse
+   * common/utils/LOG/vcd_signal_dumper.h which is expected to
+   * be formatted as is:
+   * - define vcd_signal_dump_variables then vcd_signal_dump_functions
+   * - one VCD_XXXX per line starting with two spaces
+   *   followed by ',' or '=' with no space in between
+   * - no #ifdef / #if is taken into account
+   * - we require VCD_SIGNAL_DUMPER_VARIABLES_END and
+   *   VCD_SIGNAL_DUMPER_FUNCTIONS_END at the end of each array,
+   *   each on a line of its own with two spaces before and nothing after.
+   *
+   * If these checks fail, consider formatting
+   * common/utils/LOG/vcd_signal_dumper.h as expected here, if
+   * it makes sense of course. Otherwise, change the code below.
+   *
+   * In common/utils/LOG/vcd_signal_dumper.h a valid name is
+   * either VCD_SIGNAL_DUMPER_VARIABLES_ABC or
+   * VCD_SIGNAL_DUMPER_FUNCTIONS_XYZ
+   * and in T_messages.txt the corresponding name has to be
+   * VCD_VARIABLE_ABC or VCD_FUNCTION_XYZ
+   */
+  i = first_var;
+  in = fopen("../LOG/vcd_signal_dumper.h", "r");
+  if (in == NULL) err("could not open ../LOG/vcd_signal_dumper.h");
+  while (1) {
+    char *x = "  VCD_SIGNAL_DUMPER_VARIABLES_";
+    ssize_t r;
+    free(l);
+    l = NULL;
+    lsize = 0;
+    r = getline(&l, &lsize, in);
+    if (r == -1) break;
+    if (!strcmp(l, "  VCD_SIGNAL_DUMPER_VARIABLES_END\n")) break;
+    /* remove ',' or '=' if found */
+    { char *s=l; while (*s) { if (*s==','||*s=='=') { *s=0; break; } s++; } }
+    if (strncmp(l, x, strlen(x))) continue;
+    if (!(i >= first_var && i <= last_var))
+      err("T_messages.txt is not correct with respect to VCD VARIABLES");
+    name = event_name_from_id(database, i);
+    if (strcmp(l+strlen(x), name+strlen("VCD_VARIABLE_")))
+      err("%s is not correct in T_messages.txt", name);
+    i++;
+  }
+  if (i != last_var + 1) err("VCD VARIABLES wrong in T_messages.txt");
+  while (1) {
+    char *x = "  VCD_SIGNAL_DUMPER_FUNCTIONS_";
+    ssize_t r;
+    free(l);
+    l = NULL;
+    lsize = 0;
+    r = getline(&l, &lsize, in);
+    if (r == -1) break;
+    if (!strcmp(l, "  VCD_SIGNAL_DUMPER_FUNCTIONS_END\n")) break;
+    /* remove ',' or '=' if found */
+    { char *s=l; while (*s) { if (*s==','||*s=='=') { *s=0; break; } s++; } }
+    if (strncmp(l, x, strlen(x))) continue;
+    if (!(i >= first_fun && i <= last_fun))
+      err("T_messages.txt is not correct with respect to VCD FUNCTIONS");
+    name = event_name_from_id(database, i);
+    if (strcmp(l+strlen(x), name+strlen("VCD_FUNCTION_")))
+      err("%s is not correct in T_messages.txt", name);
+    i++;
+  }
+  fclose(in);
+  if (i != last_fun + 1) err("VCD FUNCTIONS wrong in T_messages.txt");
+
+  return 0;
+}
diff --git a/common/utils/T/genids.c b/common/utils/T/genids.c
index 734c506368ac348ba9db9ae2eae8048fcec929d6..8e5adbf587081322fc2d6047c7b4d246841bdc94 100644
--- a/common/utils/T/genids.c
+++ b/common/utils/T/genids.c
@@ -14,21 +14,21 @@ int cmp(const void *p1, const void *p2)
 }
 
 /* return 1 if s was not already known, 0 if it was */
-int new_unique_id(char *s)
+int new_unique_id(char *s, char *input_file)
 {
   if (unique_ids_size)
   if (bsearch(&s, unique_ids, unique_ids_size, sizeof(char *), cmp) != NULL) {
-    printf("FATAL: ID %s is not unique\n", s);
+    printf("error: ID %s is not unique in %s\n", s, input_file);
     return 0;
   }
   if (unique_ids_size == unique_ids_maxsize) {
     unique_ids_maxsize += 256;
     unique_ids = realloc(unique_ids, unique_ids_maxsize * sizeof(char *));
-    if (unique_ids == NULL) { printf("out of memory\n"); abort(); }
+    if (unique_ids == NULL) { printf("erorr: out of memory\n"); abort(); }
   }
   unique_ids[unique_ids_size] = strdup(s);
   if (unique_ids[unique_ids_size] == NULL)
-    { printf("out of memory\n"); abort(); }
+    { printf("erorr: out of memory\n"); abort(); }
   unique_ids_size++;
   qsort(unique_ids, unique_ids_size, sizeof(char *), cmp);
   return 1;
@@ -43,7 +43,8 @@ void putname(int c)
   if (bufname_size == bufname_maxsize) {
     bufname_maxsize += 256;
     bufname = realloc(bufname, bufname_maxsize);
-    if (bufname == NULL) { printf("memory allocation error\n"); exit(1); }
+    if (bufname == NULL)
+      { printf("erorr: memory allocation error\n"); exit(1); }
   }
   bufname[bufname_size] = c;
   bufname_size++;
@@ -58,7 +59,8 @@ void putvalue(int c)
   if (bufvalue_size == bufvalue_maxsize) {
     bufvalue_maxsize += 256;
     bufvalue = realloc(bufvalue, bufvalue_maxsize);
-    if (bufvalue == NULL) { printf("memory allocation error\n"); exit(1); }
+    if (bufvalue == NULL)
+      { printf("error: memory allocation error\n"); exit(1); }
   }
   bufvalue[bufvalue_size] = c;
   bufvalue_size++;
@@ -119,7 +121,7 @@ int main(int n, char **v)
   char *in_name;
   char *out_name;
 
-  if (n != 3) { printf("gimme <source> <dest>\n"); exit(1); }
+  if (n != 3) { printf("error: gimme <source> <dest>\n"); exit(1); }
 
   n = 0;
 
@@ -134,14 +136,13 @@ int main(int n, char **v)
   while (1) {
     get_line(in, &name, &value);
     if (name == NULL) break;
-    printf("name '%s' value '%s'\n", name, value);
     if (isspace(value[strlen(value)-1])) {
-      printf("bad value '%s' (no space at the end please!)\n", value);
+      printf("error: bad value '%s' (no space at the end please!)\n", value);
       unlink(out_name);
       exit(1);
     }
     if (!strcmp(name, "ID")) {
-      if (!new_unique_id(value)) { unlink(out_name); exit(1); }
+      if (!new_unique_id(value, in_name)) { unlink(out_name); exit(1); }
       fprintf(out, "#define T_%s T_ID(%d)\n", value, n);
       n++;
     }
diff --git a/common/utils/T/local_tracer.c b/common/utils/T/local_tracer.c
index c331daa4a9f0410d918ea317466b738479328d0a..f8e92881a96e79a000e57fcad814e8440719a895 100644
--- a/common/utils/T/local_tracer.c
+++ b/common/utils/T/local_tracer.c
@@ -337,54 +337,34 @@ static void forward(void *_forwarder, char *buf, int size)
 
 static void wait_message(void)
 {
-  while (T_local_cache[T_busylist_head].busy == 0) usleep(1000);
-}
-
-static void init_shm(char *shm_file)
-{
-  int i;
-  int s = shm_open(shm_file, O_RDWR | O_CREAT /*| O_SYNC*/, 0666);
-  if (s == -1) { perror(shm_file); abort(); }
-  if (ftruncate(s, T_CACHE_SIZE * sizeof(T_cache_t)))
-    { perror(shm_file); abort(); }
-  T_local_cache = mmap(NULL, T_CACHE_SIZE * sizeof(T_cache_t),
-                       PROT_READ | PROT_WRITE, MAP_SHARED, s, 0);
-  if (T_local_cache == MAP_FAILED)
-    { perror(shm_file); abort(); }
-  close(s);
-
-  /* let's garbage the memory to catch some potential problems
-   * (think multiprocessor sync issues, barriers, etc.)
-   */
-  memset(T_local_cache, 0x55, T_CACHE_SIZE * sizeof(T_cache_t));
-  for (i = 0; i < T_CACHE_SIZE; i++) T_local_cache[i].busy = 0;
+  while ((T_local_cache[T_busylist_head].busy & 0x02) == 0) usleep(1000);
 }
 
 void T_local_tracer_main(int remote_port, int wait_for_tracer,
-    int local_socket, char *shm_file)
+    int local_socket, void *shm_array)
 {
   int s;
   int port = remote_port;
   int dont_wait = wait_for_tracer ? 0 : 1;
   void *f;
-  printf("local tracer starting\n");
+
   /* write on a socket fails if the other end is closed and we get SIGPIPE */
-  if (signal(SIGPIPE, SIG_IGN) == SIG_ERR){
+  if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) {
        printf("local tracer received SIGPIPE\n");
        abort();
-   }
+  }
+
+  T_local_cache = shm_array;
 
-  init_shm(shm_file);
   s = local_socket;
-  printf("local tracer starting step 2\n");
+
   if (dont_wait) {
     char t = 2;
-  printf("local tracer in no wait mode \n");
     if (write(s, &t, 1) != 1) abort();
   }
-  printf("local tracer starting step 3\n");
+
   f = forwarder(port, s);
-  printf("local tracer main loop.... \n");
+
   /* read messages */
   while (1) {
     wait_message();
diff --git a/common/utils/T/tracer/Makefile b/common/utils/T/tracer/Makefile
index 1c4a77587c3916c9140a9ef71465b08e8a9313aa..3da4aa13a17528cc1396f5eedc2e40eee91c2cb1 100644
--- a/common/utils/T/tracer/Makefile
+++ b/common/utils/T/tracer/Makefile
@@ -7,7 +7,7 @@ LIBS=-lm
 XLIBS=-lX11 -lpng -lXft
 
 all: record replay extract_config textlog enb ue vcd macpdu2wireshark \
-     extract_input_subframe extract_output_subframe to_vcd extract
+     extract_input_subframe extract_output_subframe to_vcd extract multi
 
 record: utils.o record.o database.o config.o
 	$(CC) $(CFLAGS) -o record $^ $(LIBS)
@@ -57,19 +57,22 @@ macpdu2wireshark: macpdu2wireshark.o database.o utils.o handler.o event.o \
                   config.o
 	$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
 
+multi: multi.o utils.o database.o config.o
+	$(CC) $(CFLAGS) -o multi $^ $(LIBS)
+
 .PHONY: all gui/gui.a view/view.a logger/logger.a filter/filter.a
 
 gui/gui.a:
-	cd gui && make
+	cd gui && $(MAKE)
 
 view/view.a:
-	cd view && make
+	cd view && $(MAKE)
 
 logger/logger.a:
-	cd logger && make
+	cd logger && $(MAKE)
 
 filter/filter.a:
-	cd filter && make
+	cd filter && $(MAKE)
 
 %.o: %.c
 	$(CC) $(CFLAGS) -c -o $@ $<
@@ -77,9 +80,9 @@ filter/filter.a:
 clean:
 	rm -f *.o core tracer_remote textlog enb ue vcd record replay
 	rm -f extract_config macpdu2wireshark extract_input_subframe
-	rm -f extract_output_subframe to_vcd extract
-	cd gui && make clean
-	cd view && make clean
-	cd logger && make clean
-	cd filter && make clean
-	cd hacks && make clean
+	rm -f extract_output_subframe to_vcd extract multi
+	cd gui && $(MAKE) clean
+	cd view && $(MAKE) clean
+	cd logger && $(MAKE) clean
+	cd filter && $(MAKE) clean
+	cd hacks && $(MAKE) clean
diff --git a/common/utils/T/tracer/config.c b/common/utils/T/tracer/config.c
index f88966ed79a111b2ab2d09d7110ae9da0c3781ea..723902ec9c8bbe518ca2eaad902c1903771e87f4 100644
--- a/common/utils/T/tracer/config.c
+++ b/common/utils/T/tracer/config.c
@@ -60,3 +60,9 @@ void verify_config(void)
     abort();
   }
 }
+
+void get_local_config(char **txt, int *len)
+{
+  *txt = local;
+  *len = local_size;
+}
diff --git a/common/utils/T/tracer/config.h b/common/utils/T/tracer/config.h
index f90869eb6621f89c5be80fc012e4edc7102a4652..07290c71a35c5605596ff3770a34db40ce5dbc0a 100644
--- a/common/utils/T/tracer/config.h
+++ b/common/utils/T/tracer/config.h
@@ -5,5 +5,6 @@ void clear_remote_config(void);
 void append_received_config_chunk(char *buf, int length);
 void load_config_file(char *filename);
 void verify_config(void);
+void get_local_config(char **txt, int *len);
 
 #endif /* _CONFIG_H_ */
diff --git a/common/utils/T/tracer/database.c b/common/utils/T/tracer/database.c
index f0908948e23cb81ac2809faa14b8856f53492075..543ab666640309719c2599ad00e7b4ff6b66caea 100644
--- a/common/utils/T/tracer/database.c
+++ b/common/utils/T/tracer/database.c
@@ -13,6 +13,7 @@ typedef struct {
   char **arg_type;
   char **arg_name;
   int  asize;
+  char *vcd_name;
   int  id;
 } id;
 
@@ -138,6 +139,7 @@ id *add_id(database *r, char *idname, int i)
   r->i[r->isize].arg_type = NULL;
   r->i[r->isize].arg_name = NULL;
   r->i[r->isize].asize = 0;
+  r->i[r->isize].vcd_name = NULL;
   r->i[r->isize].id = i;
   r->isize++;
   qsort(r->i, r->isize, sizeof(id), id_cmp);
@@ -224,6 +226,12 @@ void add_desc(id *i, char *desc)
   i->desc = strdup(desc); if (i->desc == NULL) abort();
 }
 
+void add_vcd_name(id *i, char *vcd_name)
+{
+  if (i == NULL) {printf("ERROR: VCD_NAME line before ID line\n");exit(1);}
+  i->vcd_name = strdup(vcd_name); if (i->vcd_name == NULL) abort();
+}
+
 char *format_get_next_token(char **cur)
 {
   char *start;
@@ -320,6 +328,7 @@ void *parse_database(char *filename)
     if (!strcmp(name, "GROUP")) add_groups(r, last_id, value);
     if (!strcmp(name, "DESC")) add_desc(last_id, value);
     if (!strcmp(name, "FORMAT")) add_format(last_id, value);
+    if (!strcmp(name, "VCD_NAME")) add_vcd_name(last_id, value);
   }
 
   fclose(in);
@@ -424,6 +433,12 @@ char *event_name_from_id(void *_database, int id)
   return d->i[d->id_to_pos[id]].name;
 }
 
+char *event_vcd_name_from_id(void *_database, int id)
+{
+  database *d = _database;
+  return d->i[d->id_to_pos[id]].vcd_name;
+}
+
 int event_id_from_name(void *_database, char *name)
 {
   database *d = _database;
diff --git a/common/utils/T/tracer/database.h b/common/utils/T/tracer/database.h
index c5cab05d9f7be0da0cc8d50fcf3fda243aec556a..9fdbaed7c685fb77979167f243fdd5732597566b 100644
--- a/common/utils/T/tracer/database.h
+++ b/common/utils/T/tracer/database.h
@@ -8,6 +8,7 @@ void list_ids(void *database);
 void list_groups(void *database);
 void on_off(void *d, char *item, int *a, int onoff);
 char *event_name_from_id(void *database, int id);
+char *event_vcd_name_from_id(void *_database, int id);
 int event_id_from_name(void *database, char *name);
 int number_of_ids(void *database);
 int database_get_ids(void *database, char ***ids);
diff --git a/common/utils/T/tracer/enb.c b/common/utils/T/tracer/enb.c
index a30366faf1eb8e645d5efba1cf664985cc60c255..ea499a68f831b5e7d7bbecb144815e2d9ddc81d6 100644
--- a/common/utils/T/tracer/enb.c
+++ b/common/utils/T/tracer/enb.c
@@ -878,6 +878,7 @@ int main(int n, char **v)
 
 restart:
   clear_remote_config();
+  if (enb_data.socket != -1) close(enb_data.socket);
   enb_data.socket = connect_to(ip, port);
 
   /* send the first message - activate selected traces */
diff --git a/common/utils/T/tracer/gui/x.c b/common/utils/T/tracer/gui/x.c
index 94448eb666c65836437b4fa36224a2acd01e7e3d..ef5334767cb086044d34a4fd1f6f7e6210c8adab 100644
--- a/common/utils/T/tracer/gui/x.c
+++ b/common/utils/T/tracer/gui/x.c
@@ -150,7 +150,17 @@ x_image *x_create_image(x_connection *_x, unsigned char *data,
   vs = XGetVisualInfo(x->d, VisualDepthMask | VisualClassMask |
       VisualRedMaskMask | VisualGreenMaskMask | VisualBlueMaskMask |
       VisualBitsPerRGBMask, &template, &nvs);
-  if (vs == NULL || nvs == 0) ERR("no good visual found\n");
+
+  if (vs == NULL) {
+    /* try again with 32 bpp */
+    template.depth = 32;
+    vs = XGetVisualInfo(x->d, VisualDepthMask | VisualClassMask |
+        VisualRedMaskMask | VisualGreenMaskMask | VisualBlueMaskMask |
+        VisualBitsPerRGBMask, &template, &nvs);
+  }
+
+  if (vs == NULL) ERR("no good visual found\n");
+
   v = vs[0].visual;
   XFree(vs);
 
diff --git a/common/utils/T/tracer/multi.c b/common/utils/T/tracer/multi.c
new file mode 100644
index 0000000000000000000000000000000000000000..6a9de838c674b1473e54d99a147d91c9d431311e
--- /dev/null
+++ b/common/utils/T/tracer/multi.c
@@ -0,0 +1,385 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <string.h>
+#include <poll.h>
+#include <sys/socket.h>
+#include <unistd.h>
+#include "database.h"
+#include "utils.h"
+#include "../T.h"
+#include "config.h"
+
+#define DEFAULT_LOCAL_PORT 2022
+
+typedef struct {
+  int id;         /* increases at each new tracer's connection */
+  int s;          /* socket */
+  int *is_on;     /* local vision of is_on for this tracer */
+  int poll_id;    /* -1: invalid, otherwise index in fds array */
+} ti_t;
+
+typedef struct {
+  ti_t *ti;         /* data for tracers */
+  int  ti_size;
+  int  ti_maxsize;
+} multi_t;
+
+void set_is_on(int *is_on, int pos, int val)
+{
+  if (val) is_on[pos]++; else is_on[pos]--;
+  /* TODO: remove check? */
+  if (is_on[pos] < 0) { printf("%s:%d:nonono\n",__FILE__,__LINE__); abort(); }
+}
+
+int send_messages_txt(int s, char *T_messages_txt, int T_messages_txt_len)
+{
+  char buf[T_BUFFER_MAX];
+  char *T_LOCAL_buf = buf;
+  int32_t T_LOCAL_size;
+  unsigned char *src;
+  int src_len;
+
+  /* trace T_message.txt
+   * Send several messages -1 with content followed by message -2.
+   */
+  src = (unsigned char *)T_messages_txt;
+  src_len = T_messages_txt_len;
+  while (src_len) {
+    int send_size = src_len;
+    if (send_size > T_PAYLOAD_MAXSIZE - sizeof(int))
+      send_size = T_PAYLOAD_MAXSIZE - sizeof(int);
+    /* TODO: be careful, we use internal T stuff, to rewrite? */
+    T_LOCAL_size = 0;
+    T_HEADER(T_ID(-1));
+    T_PUT_buffer(1, ((T_buffer){addr:(src), length:(send_size)}));
+    if (socket_send(s, &T_LOCAL_size, 4) == -1) return -1;
+    if (socket_send(s, buf, T_LOCAL_size) == -1) return -1;
+    src += send_size;
+    src_len -= send_size;
+  }
+  T_LOCAL_size = 0;
+  T_HEADER(T_ID(-2));
+  if (socket_send(s, &T_LOCAL_size, 4) == -1) return -1;
+  return socket_send(s, buf, T_LOCAL_size);
+}
+
+void new_tracer(multi_t *m, int s, int is_on_size, char *t, int t_size, int id)
+{
+  if (send_messages_txt(s, t, t_size) == -1) {
+    printf("error sending T_messages.txt to new tracer %d => remove tracer\n",
+           id);
+    return;
+  }
+  if (m->ti_size == m->ti_maxsize) {
+    m->ti_maxsize += 64;
+    m->ti = realloc(m->ti, m->ti_maxsize * sizeof(ti_t));
+    if (m->ti == NULL) abort();
+  }
+  m->ti[m->ti_size].id = id;
+  m->ti[m->ti_size].s = s;
+  m->ti[m->ti_size].is_on = calloc(is_on_size, sizeof(int));
+  if (m->ti[m->ti_size].is_on == NULL) abort();
+  m->ti[m->ti_size].poll_id = -1;
+  m->ti_size++;
+}
+
+void remove_tracer(multi_t *m, int t)
+{
+  free(m->ti[t].is_on);
+  shutdown(m->ti[t].s, SHUT_RDWR);
+  close(m->ti[t].s);
+  m->ti_size--;
+  memmove(&m->ti[t], &m->ti[t+1], (m->ti_size - t) * sizeof(ti_t));
+}
+
+int send_is_on(int socket, int number_of_events, int *is_on)
+{
+  int i;
+  char mt = 1;
+  if (socket_send(socket, &mt, 1) == -1 ||
+      socket_send(socket, &number_of_events, sizeof(int)) == -1) return -1;
+  for (i = 0; i < number_of_events; i++) {
+    int v = is_on[i] ? 1 : 0;
+    if (socket_send(socket, &v, sizeof(int)) == -1) return -1;
+  }
+  return 0;
+}
+
+int read_tracee(int s, OBUF *ebuf, int *_type, int32_t *_length)
+{
+  int type;
+  int32_t length;
+  char *v;
+  int vpos = 0;
+
+  if (fullread(s, &length, 4) == -1) return -1;
+  if (ebuf->omaxsize < length) {
+    ebuf->omaxsize = (length + 65535) & ~65535;
+    ebuf->obuf = realloc(ebuf->obuf, ebuf->omaxsize);
+    if (ebuf->obuf == NULL) { printf("out of memory\n"); exit(1); }
+  }
+  v = ebuf->obuf;
+  memcpy(v+vpos, &length, 4);
+  vpos += 4;
+#ifdef T_SEND_TIME
+  if (fullread(s,v+vpos,sizeof(struct timespec))==-1) return -1;
+  vpos += sizeof(struct timespec);
+  length -= sizeof(struct timespec);
+#endif
+  if (fullread(s, &type, sizeof(int)) == -1) return -1;
+  memcpy(v+vpos, &type, sizeof(int));
+  vpos += sizeof(int);
+  length -= sizeof(int);
+  if (fullread(s, v+vpos, length) == -1) return -1;
+  vpos += length;
+
+  ebuf->osize = vpos;
+
+  *_type = type;
+  *_length = length;
+  return 0;
+}
+
+void forward_event(multi_t *m, int number_of_events, OBUF *ebuf, int type)
+{
+  int i;
+
+  if (type < 0 || type >= number_of_events)
+    { printf("error: bad type of event to forward %d\n", type); abort(); }
+
+  for (i = 0; i < m->ti_size; i++) {
+    if (!m->ti[i].is_on[type]) continue;
+    if (socket_send(m->ti[i].s, ebuf->obuf, ebuf->osize) == -1)
+      printf("warning: error forwarding event to tracer %d\n", m->ti[i].id);
+  }
+}
+
+int connect_to_tracee(char *ip, int port, int number_of_events, int *is_on)
+{
+  int s;
+
+  printf("connecting to %s:%d\n", ip, port);
+
+  s = try_connect_to(ip, port);
+  if (s == -1) return -1;
+
+  if (send_is_on(s, number_of_events, is_on) == -1) {
+    shutdown(s, SHUT_RDWR);
+    close(s);
+    return -1;
+  }
+
+  return s;
+}
+
+void usage(void)
+{
+  printf(
+"options:\n"
+"    -d <database file>        this option is mandatory\n"
+"    -ip <host>                connect to given IP address (default %s)\n"
+"    -p <port>                 connect to given port (default %d)\n"
+"    -lp <port>                listen on local port (default %d)\n",
+  DEFAULT_REMOTE_IP,
+  DEFAULT_REMOTE_PORT,
+  DEFAULT_LOCAL_PORT
+  );
+  exit(1);
+}
+
+int main(int n, char **v)
+{
+  char *database_filename = NULL;
+  void *database;
+  char *ip = DEFAULT_REMOTE_IP;
+  int  port = DEFAULT_REMOTE_PORT;
+  int  local_port = DEFAULT_LOCAL_PORT;
+  int  *is_on;
+  int  number_of_events;
+  int  i, j;
+  char *T_messages_txt;
+  int  T_messages_txt_len;
+  int  l;           /* listen socket for tracers' connections */
+  int  s = -1;      /* socket connected to tracee. -1 if not connected */
+  multi_t m;
+  int is_on_changed;
+  int current_nfd;
+  struct pollfd *fds = NULL;
+  int next_id = 0;
+
+  memset(&m, 0, sizeof(m));
+
+  /* write on a socket fails if the other end is closed and we get SIGPIPE */
+  if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) abort();
+
+  for (i = 1; i < n; i++) {
+    if (!strcmp(v[i], "-h") || !strcmp(v[i], "--help")) usage();
+    if (!strcmp(v[i], "-d"))
+      { if (i > n-2) usage(); database_filename = v[++i]; continue; }
+    if (!strcmp(v[i], "-ip")) { if (i > n-2) usage(); ip = v[++i]; continue; }
+    if (!strcmp(v[i], "-p"))
+      { if (i > n-2) usage(); port = atoi(v[++i]); continue; }
+    if (!strcmp(v[i], "-lp"))
+      { if (i > n-2) usage(); local_port = atoi(v[++i]); continue; }
+    usage();
+  }
+
+  if (database_filename == NULL) {
+    printf("ERROR: provide a database file (-d)\n");
+    exit(1);
+  }
+
+  database = parse_database(database_filename);
+
+  load_config_file(database_filename);
+  get_local_config(&T_messages_txt, &T_messages_txt_len);
+
+  number_of_events = number_of_ids(database);
+  is_on = calloc(number_of_events, sizeof(int));
+  if (is_on == NULL) abort();
+
+  /* create listener socket */
+  l = create_listen_socket("0.0.0.0", local_port);
+
+  OBUF ebuf = { osize: 0, omaxsize: 0, obuf: NULL };
+
+  current_nfd = 0;
+
+  while (1) {
+    int nfd;
+    int timeout;
+
+    if (s == -1) s = connect_to_tracee(ip, port, number_of_events, is_on);
+
+    /* poll on s (if there), l, and all tracers' sockets */
+    nfd = 1 + (s != -1) + m.ti_size;
+    if (nfd != current_nfd) {
+      current_nfd = nfd;
+      free(fds);
+      fds = calloc(nfd, sizeof(struct pollfd));
+      if (fds == NULL) { perror("calloc"); exit(1); }
+    }
+    i = 0;
+    fds[i].fd = l;
+    fds[i].events = POLLIN;
+    i++;
+    if (s != -1) {
+      fds[i].fd = s;
+      fds[i].events = POLLIN;
+      i++;
+    }
+    for (j = 0; j < m.ti_size; j++) {
+      m.ti[j].poll_id = i;
+      fds[i].fd = m.ti[j].s;
+      fds[i].events = POLLIN;
+      i++;
+    }
+    if (s == -1) timeout = 1000; else timeout = -1;
+    if (poll(fds, nfd, timeout) == -1) { perror("poll"); exit(1); }
+
+    if (fds[0].revents & ~POLLIN) {
+      printf("TODO: error on listen socket?\n");
+      exit(1);
+    }
+
+    /* new tracer connecting? */
+    if (fds[0].revents & POLLIN) {
+      int t;
+      printf("tracer %d connecting\n", next_id);
+      t = socket_accept(l);
+      if (t == -1) perror("accept");
+      else new_tracer(&m, t, number_of_events,
+                      T_messages_txt, T_messages_txt_len, next_id);
+      next_id++;
+    }
+
+    if (s != -1 && fds[1].revents & ~POLLIN) {
+      printf("TODO: error on tracee socket?\n");
+      exit(1);
+    }
+
+    /* data from tracee */
+    if (s != -1 && fds[1].revents & POLLIN) {
+      int type;
+      int32_t length;
+      if (read_tracee(s, &ebuf, &type, &length) == -1) {
+        clear_remote_config();
+        shutdown(s, SHUT_RDWR);
+        close(s);
+        s = -1;
+      } else {
+        if (type == -1)
+          append_received_config_chunk(ebuf.obuf+ebuf.osize-length, length);
+        else if (type == -2) verify_config();
+        else forward_event(&m, number_of_events, &ebuf, type);
+      }
+    }
+
+    /* status of each tracer */
+    is_on_changed = 0;
+    for (j = 0; j < m.ti_size; j++) {
+      int l;
+      int s;
+      int *t_is_on;
+      if (m.ti[j].poll_id == -1) continue;
+      i = m.ti[j].poll_id;
+      s = m.ti[j].s;
+      t_is_on = m.ti[j].is_on;
+      if (fds[i].revents & (POLLHUP | POLLERR)) goto tracer_error;
+      /* error? */
+      if (fds[i].revents & ~POLLIN) {
+        printf("TODO: error with tracer?\n");
+        exit(1);
+      }
+      /* data in */
+      if (fds[i].revents & POLLIN) {
+        char t;
+        int len;
+        int v;
+        if (fullread(s, &t, 1) != 1) goto tracer_error;
+        switch (t) {
+        case 0:
+          is_on_changed = 1;
+          if (fullread(s, &len, sizeof(int)) == -1) goto tracer_error;
+          for (l = 0; l < len; l++) {
+            if (fullread(s, &v, sizeof(int)) == -1) goto tracer_error;
+            if (v < 0 || v >= number_of_events) goto tracer_error;
+            t_is_on[v] = 1 - t_is_on[v];
+            set_is_on(is_on, v, t_is_on[v]);
+          }
+          break;
+        case 1:
+          is_on_changed = 1;
+          if (fullread(s, &len, sizeof(int)) == -1) goto tracer_error;
+          if (len < 0 || len > number_of_events) goto tracer_error;
+          for (l = 0; l < len; l++) {
+            if (fullread(s, &v, sizeof(int)) == -1) goto tracer_error;
+            if (v < 0 || v > 1) goto tracer_error;
+            if (t_is_on[l] != v) set_is_on(is_on, l, v);
+            t_is_on[l] = v;
+          }
+          break;
+        case 2: break;
+        default: printf("error: unhandled message type %d\n", t); //abort();
+        }
+      }
+      continue;
+tracer_error:
+      printf("remove tracer %d\n", m.ti[j].id);
+      for (l = 0; l < number_of_events; l++)
+        if (m.ti[j].is_on[l]) { is_on_changed = 1; set_is_on(is_on, l, 0); }
+      remove_tracer(&m, j);
+      j--;
+    }
+    if (is_on_changed && s != -1)
+      if (send_is_on(s, number_of_events, is_on) == -1) {
+        clear_remote_config();
+        shutdown(s, SHUT_RDWR);
+        close(s);
+        s = -1;
+      }
+  }
+
+  return 0;
+}
diff --git a/common/utils/T/tracer/to_vcd.c b/common/utils/T/tracer/to_vcd.c
index 097fdce93217af2d6b6bc48a204bc120c421775f..998649af01543a531193640112832731657082d9 100644
--- a/common/utils/T/tracer/to_vcd.c
+++ b/common/utils/T/tracer/to_vcd.c
@@ -12,7 +12,14 @@
 #include "logger/logger.h"
 #include "view/view.h"
 
+enum var_type {
+  DEFAULT,
+  VCD_FUNCTION,
+  VCD_VARIABLE
+};
+
 typedef struct {
+  enum var_type type;
   char *event;
   char *arg;
   char *vcd_name;
@@ -44,16 +51,39 @@ void vcd_write_header(vcd_vars *v, int n)
 "$version\n"
 "  to_vcd\n"
 "$end\n"
-"$timescale 1ns $end\n"
+"$timescale 1ns $end\n") <= 0) abort();
+
+  if (fprintf(out,
 "$scope module logic $end\n") <= 0) abort();
+  for (i = 0; i < n; i++)
+    if (v[i].type == DEFAULT)
+      if (fprintf(out, "$var wire %d %s %s $end\n",
+             v[i].boolean ? 1 : 64,
+             v[i].vcd_name, v[i].vcd_name) <= 0) abort();
+  if (fprintf(out,
+"$upscope $end\n") <= 0) abort();
 
+  if (fprintf(out,
+"$scope module functions $end\n") <= 0) abort();
   for (i = 0; i < n; i++)
-    if (fprintf(out, "$var wire %d %s %s $end\n",
-           v[i].boolean ? 1 : 64,
-           v[i].vcd_name, v[i].vcd_name) <= 0) abort();
+    if (v[i].type == VCD_FUNCTION)
+      if (fprintf(out, "$var wire %d %s %s $end\n",
+             v[i].boolean ? 1 : 64,
+             v[i].vcd_name, v[i].vcd_name) <= 0) abort();
+  if (fprintf(out,
+"$upscope $end\n") <= 0) abort();
+
+  if (fprintf(out,
+"$scope module variables $end\n") <= 0) abort();
+  for (i = 0; i < n; i++)
+    if (v[i].type == VCD_VARIABLE)
+      if (fprintf(out, "$var wire %d %s %s $end\n",
+             v[i].boolean ? 1 : 64,
+             v[i].vcd_name, v[i].vcd_name) <= 0) abort();
+  if (fprintf(out,
+"$upscope $end\n") <= 0) abort();
 
   if (fprintf(out,
-"$upscope $end\n"
 "$enddefinitions $end\n"
 "$dumpvars\n") <= 0) abort();
 
@@ -174,7 +204,8 @@ void usage(void)
 "    -ip <host>                   connect to given IP address (default %s)\n"
 "    -p <port>                    connect to given port (default %d)\n"
 "    -b <event> <arg> <vcd name>  trace as binary (0 off, anything else on)\n"
-"    -l <event> <arg> <vcd name>  trace as uint64_t\n",
+"    -l <event> <arg> <vcd name>  trace as uint64_t\n"
+"    -vcd                         trace all VCD variables and functions\n",
   DEFAULT_REMOTE_IP,
   DEFAULT_REMOTE_PORT
   );
@@ -192,6 +223,21 @@ void force_stop(int x)
   run = 0;
 }
 
+vcd_vars *add_var(vcd_vars *vars, int nvars,
+    char *event, char *arg, char *vcd_name, int is_boolean, enum var_type t)
+{
+  if (nvars % 64 == 0) {
+    vars = realloc(vars, (nvars+64) * sizeof(vcd_vars));
+    if (vars == NULL) abort();
+  }
+  vars[nvars].type = t;
+  vars[nvars].event = event;
+  vars[nvars].arg = arg;
+  vars[nvars].vcd_name = vcd_name;
+  vars[nvars].boolean = is_boolean;
+  return vars;
+}
+
 int main(int n, char **v)
 {
   char *output_filename = NULL;
@@ -202,11 +248,12 @@ int main(int n, char **v)
   int *is_on;
   int number_of_events;
   int i;
-  vcd_vars vars[n];
+  vcd_vars *vars = NULL;
   int nvars = 0;
   view *vcd_view;
   event_handler *h;
   logger *textlog;
+  int all_vcd = 0;
 
   /* write on a socket fails if the other end is closed and we get SIGPIPE */
   if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) abort();
@@ -221,19 +268,22 @@ int main(int n, char **v)
     if (!strcmp(v[i], "-p"))
       { if (i > n-2) usage(); port = atoi(v[++i]); continue; }
     if (!strcmp(v[i], "-b")) { if(i>n-4)usage();
-      vars[nvars].event     = v[++i];
-      vars[nvars].arg       = v[++i];
-      vars[nvars].vcd_name  = v[++i];
-      vars[nvars++].boolean = 1;
+      char *event    = v[++i];
+      char *arg      = v[++i];
+      char *vcd_name = v[++i];
+      vars = add_var(vars, nvars, event, arg, vcd_name, 1, DEFAULT);
+      nvars++;
       continue;
     }
     if (!strcmp(v[i], "-l")) { if(i>n-4)usage();
-      vars[nvars].event     = v[++i];
-      vars[nvars].arg       = v[++i];
-      vars[nvars].vcd_name  = v[++i];
-      vars[nvars++].boolean = 0;
+      char *event    = v[++i];
+      char *arg      = v[++i];
+      char *vcd_name = v[++i];
+      vars = add_var(vars, nvars, event, arg, vcd_name, 0, DEFAULT);
+      nvars++;
       continue;
     }
+    if (!strcmp(v[i], "-vcd")) { all_vcd = 1; continue; }
     usage();
   }
 
@@ -260,11 +310,42 @@ int main(int n, char **v)
   /* create the view */
   vcd_view = new_view_vcd();
 
+  if (all_vcd) {
+    /* activate all VCD traces */
+    for (i = 0; i < number_of_events; i++) {
+      int is_boolean;
+      enum var_type type;
+      int prefix_length;
+      char *name = event_name_from_id(database, i);
+      char *vcd_name;
+      char *var_prefix = "VCD_VARIABLE_";
+      char *fun_prefix = "VCD_FUNCTION_";
+      if (!strncmp(name, var_prefix, strlen(var_prefix))) {
+        prefix_length = strlen(var_prefix);
+        is_boolean = 0;
+        type = VCD_VARIABLE;
+      } else if (!strncmp(name, fun_prefix, strlen(fun_prefix))) {
+        prefix_length = strlen(fun_prefix);
+        is_boolean = 1;
+        type = VCD_FUNCTION;
+      } else
+        continue;
+      vcd_name = event_vcd_name_from_id(database, i);
+      if (vcd_name == NULL) {
+        vcd_name = name+prefix_length;
+        printf("WARNING: ID %s does not define VCD_NAME in the file %s, using %s\n",
+              name, database_filename, vcd_name);
+      }
+      vars = add_var(vars, nvars,
+          name, "value", vcd_name, is_boolean, type);
+      nvars++;
+    }
+  }
+
   /* setup traces */
   for (i = 0; i < nvars; i++) {
     char format[256];
-    if (strlen(vars[i].arg) > 256-3) abort();
-    if (strlen(vars[i].vcd_name) > 256-1) abort();
+    if (strlen(vars[i].arg) + strlen(vars[i].vcd_name) > 256-16) abort();
     sprintf(format, "%c [%s] %s",
         vars[i].boolean ? 'b' : 'l',
         vars[i].arg,
diff --git a/common/utils/T/tracer/ue.c b/common/utils/T/tracer/ue.c
index 6a7d03c897357c5e0d2cbbe07239fcb2bf2ebcfc..7b03210cd2cb3d7884fa57c6531e08d58a3aa141 100644
--- a/common/utils/T/tracer/ue.c
+++ b/common/utils/T/tracer/ue.c
@@ -857,6 +857,7 @@ int main(int n, char **v)
 
 restart:
   clear_remote_config();
+  if (ue_data.socket != -1) close(ue_data.socket);
   ue_data.socket = connect_to(ip, port);
 
   /* send the first message - activate selected traces */
diff --git a/common/utils/T/tracer/utils.c b/common/utils/T/tracer/utils.c
index 507154673538a4570c058f1af5ecf4db8771871d..7f58b6f5aa0061189d01a5107d8e6dcea035138a 100644
--- a/common/utils/T/tracer/utils.c
+++ b/common/utils/T/tracer/utils.c
@@ -79,6 +79,36 @@ list *list_append(list *l, void *data)
 /* socket                                                                   */
 /****************************************************************************/
 
+int create_listen_socket(char *addr, int port)
+{
+  struct sockaddr_in a;
+  int s;
+  int v;
+
+  s = socket(AF_INET, SOCK_STREAM, 0);
+  if (s == -1) { perror("socket"); exit(1); }
+  v = 1;
+  if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &v, sizeof(int)))
+    { perror("setsockopt"); exit(1); }
+
+  a.sin_family = AF_INET;
+  a.sin_port = htons(port);
+  a.sin_addr.s_addr = inet_addr(addr);
+
+  if (bind(s, (struct sockaddr *)&a, sizeof(a))) { perror("bind"); exit(1); }
+  if (listen(s, 5)) { perror("listen"); exit(1); }
+
+  return s;
+}
+
+int socket_accept(int s)
+{
+  struct sockaddr_in a;
+  socklen_t alen;
+  alen = sizeof(a);
+  return accept(s, (struct sockaddr *)&a, &alen);
+}
+
 int socket_send(int socket, void *buffer, int size)
 {
   char *x = buffer;
@@ -94,26 +124,13 @@ int socket_send(int socket, void *buffer, int size)
 
 int get_connection(char *addr, int port)
 {
-  struct sockaddr_in a;
-  socklen_t alen;
   int s, t;
 
   printf("waiting for connection on %s:%d\n", addr, port);
 
-  s = socket(AF_INET, SOCK_STREAM, 0);
-  if (s == -1) { perror("socket"); exit(1); }
-  t = 1;
-  if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &t, sizeof(int)))
-    { perror("setsockopt"); exit(1); }
-
-  a.sin_family = AF_INET;
-  a.sin_port = htons(port);
-  a.sin_addr.s_addr = inet_addr(addr);
+  s = create_listen_socket(addr, port);
 
-  if (bind(s, (struct sockaddr *)&a, sizeof(a))) { perror("bind"); exit(1); }
-  if (listen(s, 5)) { perror("bind"); exit(1); }
-  alen = sizeof(a);
-  t = accept(s, (struct sockaddr *)&a, &alen);
+  t = socket_accept(s);
   if (t == -1) { perror("accept"); exit(1); }
   close(s);
 
@@ -137,14 +154,11 @@ int fullread(int fd, void *_buf, int count)
   return ret;
 }
 
-int connect_to(char *addr, int port)
+int try_connect_to(char *addr, int port)
 {
   int s;
   struct sockaddr_in a;
 
-  printf("connecting to %s:%d\n", addr, port);
-
-again:
   s = socket(AF_INET, SOCK_STREAM, 0);
   if (s == -1) { perror("socket"); exit(1); }
 
@@ -155,6 +169,21 @@ again:
   if (connect(s, (struct sockaddr *)&a, sizeof(a)) == -1) {
     perror("connect");
     close(s);
+    return -1;
+  }
+
+  return s;
+}
+
+int connect_to(char *addr, int port)
+{
+  int s;
+
+  printf("connecting to %s:%d\n", addr, port);
+
+again:
+  s = try_connect_to(addr, port);
+  if (s == -1) {
     printf("trying again in 1s\n");
     sleep(1);
     goto again;
diff --git a/common/utils/T/tracer/utils.h b/common/utils/T/tracer/utils.h
index 3be6cfe1a7f67af65282d7494c7d1a172fc163d7..6784117fa6cf66d3ffc33e191924f385dacc888d 100644
--- a/common/utils/T/tracer/utils.h
+++ b/common/utils/T/tracer/utils.h
@@ -24,11 +24,14 @@ list *list_append(list *l, void *data);
 #define DEFAULT_REMOTE_IP "127.0.0.1"
 #define DEFAULT_REMOTE_PORT 2021
 
+int create_listen_socket(char *addr, int port);
+int socket_accept(int s);
 /* socket_send: return 0 if okay, -1 on error */
 int socket_send(int socket, void *buffer, int size);
 int get_connection(char *addr, int port);
 /* fullread: return length read if okay (that is: 'count'), -1 on error */
 int fullread(int fd, void *_buf, int count);
+int try_connect_to(char *addr, int port);
 int connect_to(char *addr, int port);
 
 /****************************************************************************/
diff --git a/common/utils/load_module_shlib.c b/common/utils/load_module_shlib.c
index 656f6a885224abaf3e6565368bd99d5f95225620..c0afdb0b6493cf95bf96b3e0095816dda73dcf01 100644
--- a/common/utils/load_module_shlib.c
+++ b/common/utils/load_module_shlib.c
@@ -70,8 +70,8 @@ char *tmpstr;
 char *shlibpath   =NULL;
 char *shlibversion=NULL;
 char *cfgprefix;
-paramdef_t LoaderParams[] ={{"shlibpath", NULL, 0, strptr:&shlibpath, defstrval:NULL, TYPE_STRING, 0},
-                            {"shlibversion", NULL, 0, strptr:&shlibversion, defstrval:"", TYPE_STRING, 0}};
+paramdef_t LoaderParams[] ={{"shlibpath", NULL, 0, strptr:&shlibpath, defstrval:NULL, TYPE_STRING, 0, NULL},
+                            {"shlibversion", NULL, 0, strptr:&shlibversion, defstrval:"", TYPE_STRING, 0, NULL}};
 
 int ret;
 
@@ -118,7 +118,7 @@ int ret;
    return tmpstr; 
 }
 
-int load_module_shlib(char *modname,loader_shlibfunc_t *farray, int numf)
+int load_module_shlib(char *modname,loader_shlibfunc_t *farray, int numf, void *autoinit_arg)
 {
    void *lib_handle;
    initfunc_t fpi;
@@ -155,7 +155,7 @@ int load_module_shlib(char *modname,loader_shlibfunc_t *farray, int numf)
       fpi = dlsym(lib_handle,afname);
 
       if (fpi != NULL ) {
-	 fpi();
+	 fpi(autoinit_arg);
       }
 
       if (farray != NULL) {
diff --git a/common/utils/load_module_shlib.h b/common/utils/load_module_shlib.h
index ffbad665708ef0ffe1f890d14e6f04039b5afb80..685b3d1b6552f298c1378dff631a8036d49e15e1 100644
--- a/common/utils/load_module_shlib.h
+++ b/common/utils/load_module_shlib.h
@@ -59,7 +59,8 @@ typedef struct {
 
 /* function type of functions which may be implemented by a module */
 /* 1: init function, called when loading, if found in the shared lib */
-typedef int(*initfunc_t)(void);
+typedef int(*initfunc_t)(void *);
+
 /* 2: version checking function, called when loading, if it returns -1, trigger main exec abort  */
 typedef int(*checkverfunc_t)(char * mainexec_version, char ** shlib_version);
 /* 3: get function array function, called when loading when a module doesn't provide */
@@ -72,18 +73,18 @@ typedef int(*getfarrayfunc_t)(loader_shlibfunc_t **funcarray);
 #define DEFAULT_MAXSHLIBS 10
 loader_data_t loader_data;
 
-/*------------------------------------------------------------------------------------------------------------------------------------------------*/
-/*                                       LOADER parameters                                                                                        */
-/*   optname               helpstr   paramflags           XXXptr	                           defXXXval	              type       numelt   */
-/*------------------------------------------------------------------------------------------------------------------------------------------------*/
+/*----------------------------------------------------------------------------------------------------------------------------------------------------------*/
+/*                                       LOADER parameters                                                                                                  */
+/*   optname               helpstr   paramflags           XXXptr	                           defXXXval	              type       numelt   check func*/
+/*----------------------------------------------------------------------------------------------------------------------------------------------------------*/
 #define LOADER_PARAMS_DESC { \
-{"shlibpath",                NULL,    PARAMFLAG_NOFREE, strptr:(char **)&(loader_data.shlibpath), defstrval:DEFAULT_PATH,      TYPE_STRING, 0}, \
-{"maxshlibs",                NULL,    0,                uptr:&(loader_data.maxshlibs),            defintval:DEFAULT_MAXSHLIBS, TYPE_UINT32, 0}, \
+{"shlibpath",                NULL,    PARAMFLAG_NOFREE, strptr:(char **)&(loader_data.shlibpath), defstrval:DEFAULT_PATH,      TYPE_STRING, 0,    NULL},\
+{"maxshlibs",                NULL,    0,                uptr:&(loader_data.maxshlibs),            defintval:DEFAULT_MAXSHLIBS, TYPE_UINT32, 0,   NULL}\
 }
 
 /*-------------------------------------------------------------------------------------------------------------*/
 #else  /* LOAD_MODULE_SHLIB_MAIN */
-extern int load_module_shlib(char *modname, loader_shlibfunc_t *farray, int numf);
+extern int load_module_shlib(char *modname, loader_shlibfunc_t *farray, int numf, void *initfunc_arg);
 extern void * get_shlibmodule_fptr(char *modname, char *fname);
 extern loader_data_t loader_data;
 #endif /* LOAD_MODULE_SHLIB_MAIN */
diff --git a/common/utils/msc/msc.c b/common/utils/msc/msc.c
index 9e556a97de959daef37c937976a42dccdbe6eab8..4c9e3827b069ee20ced71cbb6304533551c3e937 100644
--- a/common/utils/msc/msc.c
+++ b/common/utils/msc/msc.c
@@ -32,10 +32,14 @@
 #include <stdint.h>
 #include <inttypes.h>
 
+#define MSC_LIBRARY
+#include "msc.h"
+
 #include "liblfds611.h"
 #include "intertask_interface.h"
 
-#include "msc.h"
+
+
 #include "assertions.h"
 
 //-------------------------------
@@ -66,8 +70,8 @@ void *msc_task(void *args_p)
 //------------------------------------------------------------------------------
 {
   MessageDef         *received_message_p    = NULL;
-  const char         *msg_name = NULL;
-  instance_t          instance  = 0;
+//  const char         *msg_name = NULL;
+//  instance_t          instance  = 0;
   long                timer_id;
 
   itti_mark_task_ready(TASK_MSC);
@@ -87,9 +91,9 @@ void *msc_task(void *args_p)
     itti_receive_msg(TASK_MSC, &received_message_p);
 
     if (received_message_p != NULL) {
-      msg_name = ITTI_MSG_NAME (received_message_p);
-      instance = ITTI_MSG_INSTANCE (received_message_p);
-
+//      msg_name = ITTI_MSG_NAME (received_message_p);
+//      instance = ITTI_MSG_INSTANCE (received_message_p);
+      
       switch (ITTI_MSG_ID(received_message_p)) {
 
         case TIMER_HAS_EXPIRED: {
@@ -570,4 +574,17 @@ error_event:
   free(new_item_p);
 }
 
-
+//------------------------------------------------------------------------------
+//  function called when oai loader loads the msc shared lib
+int msc_autoinit(msc_interface_t *msc_interface)
+//------------------------------------------------------------------------------
+ {
+
+  msc_interface->msc_init = msc_init;
+  msc_interface->msc_start_use = msc_start_use;
+  msc_interface->msc_end = msc_end;
+  msc_interface->msc_log_event = msc_log_event;
+  msc_interface->msc_log_message = msc_log_message;
+  msc_interface->msc_loaded = 1;
+  return 0;
+ }
diff --git a/common/utils/msc/msc.h b/common/utils/msc/msc.h
index 4493a5239a40f2c41aa79461443c8bb51b9737d9..78eb6cdb080665290f80474328110f79a1d61f28 100644
--- a/common/utils/msc/msc.h
+++ b/common/utils/msc/msc.h
@@ -73,7 +73,23 @@ typedef enum {
 #define MSC_AS_TIME_ARGS(CTXT_Pp) \
     (CTXT_Pp)->frame, \
     (CTXT_Pp)->subframe
-#if defined(MESSAGE_CHART_GENERATOR)
+
+typedef int(*msc_init_t)(const msc_env_t, const int );
+typedef void(*msc_start_use_t)(void );
+typedef void(*msc_end_t)(void);
+typedef void(*msc_log_event_t)(const msc_proto_t,char *, ...);
+typedef void(*msc_log_message_t)(const char *   const, const msc_proto_t, const msc_proto_t, 
+                                 const uint8_t* const, const unsigned int, char * , ...);
+typedef struct msc_interface {
+    int               msc_loaded;
+    msc_init_t        msc_init;
+    msc_start_use_t   msc_start_use;
+    msc_end_t         msc_end;
+    msc_log_event_t   msc_log_event;
+    msc_log_message_t msc_log_message;
+} msc_interface_t;
+
+#ifdef MSC_LIBRARY
 int msc_init(const msc_env_t envP, const int max_threadsP);
 void msc_start_use(void);
 void msc_flush_messages(void);
@@ -88,22 +104,17 @@ void msc_log_message(
     const unsigned int num_bytes,
     char *format, ...);
 
-#define MSC_INIT(arg1,arg2)                                      msc_init(arg1,arg2)
-#define MSC_START_USE                                            msc_start_use
-#define MSC_END                                                  msc_end
-#define MSC_LOG_EVENT(mScPaRaMs, fORMAT, aRGS...)                msc_log_event(mScPaRaMs, fORMAT, ##aRGS)
-#define MSC_LOG_RX_MESSAGE(rECEIVER, sENDER, bYTES, nUMbYTES, fORMAT, aRGS...)           msc_log_message("<-",rECEIVER, sENDER, bYTES, nUMbYTES, fORMAT, ##aRGS)
-#define MSC_LOG_RX_DISCARDED_MESSAGE(rECEIVER, sENDER, bYTES, nUMbYTES, fORMAT, aRGS...) msc_log_message("x-",rECEIVER, sENDER, bYTES, nUMbYTES, fORMAT, ##aRGS)
-#define MSC_LOG_TX_MESSAGE(sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, aRGS...)           msc_log_message("->",sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, ##aRGS)
-#define MSC_LOG_TX_MESSAGE_FAILED(sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, aRGS...)    msc_log_message("-x",sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, ##aRGS)
 #else
-#define MSC_INIT(arg1,arg2)
-#define MSC_START_USE(mScPaRaMs)
-#define MSC_END(mScPaRaMs)
-#define MSC_LOG_EVENT(mScPaRaMs, fORMAT, aRGS...)
-#define MSC_LOG_RX_MESSAGE(mScPaRaMs, fORMAT, aRGS...)
-#define MSC_LOG_RX_DISCARDED_MESSAGE(mScPaRaMs, fORMAT, aRGS...)
-#define MSC_LOG_TX_MESSAGE(mScPaRaMs, fORMAT, aRGS...)
-#define MSC_LOG_TX_MESSAGE_FAILED(mScPaRaMs, fORMAT, aRGS...)
-#endif
+
+msc_interface_t msc_interface;
+#define MSC_INIT(arg1,arg2)                                     if(msc_interface.msc_loaded) msc_interface.msc_init(arg1,arg2)
+#define MSC_START_USE                                           if(msc_interface.msc_loaded) msc_interface.msc_start_use
+#define MSC_END                                                 if(msc_interface.msc_loaded) msc_interface.msc_end
+#define MSC_LOG_EVENT(mScPaRaMs, fORMAT, aRGS...)               if(msc_interface.msc_loaded) msc_interface.msc_log_event(mScPaRaMs, fORMAT, ##aRGS)
+#define MSC_LOG_RX_MESSAGE(rECEIVER, sENDER, bYTES, nUMbYTES, fORMAT, aRGS...)           if(msc_interface.msc_loaded) msc_interface.msc_log_message("<-",rECEIVER, sENDER, (const uint8_t *)bYTES, nUMbYTES, fORMAT, ##aRGS)
+#define MSC_LOG_RX_DISCARDED_MESSAGE(rECEIVER, sENDER, bYTES, nUMbYTES, fORMAT, aRGS...) if(msc_interface.msc_loaded) msc_interface.msc_log_message("x-",rECEIVER, sENDER, (const uint8_t *)bYTES, nUMbYTES, fORMAT, ##aRGS)
+#define MSC_LOG_TX_MESSAGE(sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, aRGS...)           if(msc_interface.msc_loaded) msc_interface.msc_log_message("->",sENDER, rECEIVER, (const uint8_t *)bYTES, nUMbYTES, fORMAT, ##aRGS)
+#define MSC_LOG_TX_MESSAGE_FAILED(sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, aRGS...)    if(msc_interface.msc_loaded) msc_interface.msc_log_message("-x",sENDER, rECEIVER, (const uint8_t *)bYTES, nUMbYTES, fORMAT, ##aRGS)
 #endif
+
+#endif 
diff --git a/common/utils/ocp_itti/intertask_interface.cpp b/common/utils/ocp_itti/intertask_interface.cpp
index 7222161a7edc5bb9c50ff6181e68f80de9ef7cbf..931eb40c0fc04a1798d51cc40ec207837e5688d0 100644
--- a/common/utils/ocp_itti/intertask_interface.cpp
+++ b/common/utils/ocp_itti/intertask_interface.cpp
@@ -1,6 +1,6 @@
 /*
   Author: Laurent THOMAS, Open Cells
-  copyleft: OpenAirInterface Software Alliance
+  copyleft: OpenAirInterface Software Alliance and it's licence 
 */
 #include <vector>
 #include <map>
diff --git a/common/utils/ocp_itti/intertask_interface.h b/common/utils/ocp_itti/intertask_interface.h
index 4a8402716b59f061352a19efc7dafa758c60530b..7d07724cc14be3c0b3aee2f2f23de62318a7e799 100644
--- a/common/utils/ocp_itti/intertask_interface.h
+++ b/common/utils/ocp_itti/intertask_interface.h
@@ -1,6 +1,6 @@
 /*
   Author: Laurent THOMAS, Open Cells
-  Copyleft: OpenAirInterface software alliance
+  Copyleft: OpenAirInterface software alliance and it's licence 
 */
 #ifndef INTERTASK_INTERFACE_H_
 #define INTERTASK_INTERFACE_H_
diff --git a/common/utils/telnetsrv/telnetsrv_proccmd.c b/common/utils/telnetsrv/telnetsrv_proccmd.c
index cd827490573e845b0ec0a6b20d35ca9b4e0ea3ac..3b423bd4655e47d15e711e972c4b5d722dbcafec 100644
--- a/common/utils/telnetsrv/telnetsrv_proccmd.c
+++ b/common/utils/telnetsrv/telnetsrv_proccmd.c
@@ -199,28 +199,29 @@ int proccmd_show(char *buf, int debug, telnet_printfunc_t prnt)
        print_threads(buf,debug,prnt);
    }
    if (strcasestr(buf,"loglvl") != NULL) {
-       prnt("               component level  enabled\n");
+       prnt("\n               component level  enabled   output\n");
        for (int i=MIN_LOG_COMPONENTS; i < MAX_LOG_COMPONENTS; i++) {
             if (g_log->log_component[i].name != NULL) {
-               prnt("%02i %17.17s:%10.10s  %s\n",i ,g_log->log_component[i].name, 
-	             map_int_to_str(log_level_names,g_log->log_component[i].level),
-                     ((g_log->log_component[i].interval>0)?"Y":"N") );
+               prnt("%02i %17.17s:%10.10s    %s      %s\n",i ,g_log->log_component[i].name, 
+	             map_int_to_str(log_level_names,(g_log->log_component[i].level>=0)?g_log->log_component[i].level:g_log->log_component[i].savedlevel),
+                     ((g_log->log_component[i].level>=0)?"Y":"N"),
+                     ((g_log->log_component[i].filelog>0)?g_log->log_component[i].filelog_name:"stdout"));
            }
        }
    }
    if (strcasestr(buf,"logopt") != NULL) {
-       prnt("               option      enabled\n");
+       prnt("\n               option      enabled\n");
        for (int i=0; log_options[i].name != NULL; i++) {
                prnt("%02i %17.17s %10.10s \n",i ,log_options[i].name, 
                      ((g_log->flag & log_options[i].value)?"Y":"N") );
        }
    }
    if (strcasestr(buf,"dbgopt") != NULL) {
-       prnt("               option  debug matlab\n");
+       prnt("\n               module  debug dumpfile\n");
        for (int i=0; log_maskmap[i].name != NULL ; i++) {
-               prnt("%02i %17.17s %5.5s %5.5s\n",i ,log_maskmap[i].name, 
+               prnt("%02i %17.17s %5.5s   %5.5s\n",i ,log_maskmap[i].name, 
 	             ((g_log->debug_mask &  log_maskmap[i].value)?"Y":"N"),
-                     ((g_log->matlab_mask & log_maskmap[i].value)?"Y":"N") );
+                     ((g_log->dump_mask & log_maskmap[i].value)?"Y":"N") );
        }
    }
    if (strcasestr(buf,"config") != NULL) {
@@ -335,15 +336,15 @@ int s = sscanf(buf,"%ms %i-%i\n",&logsubcmd, &idx1,&idx2);
           prnt("Available log levels: \n   ");
           for (int i=0; log_level_names[i].name != NULL; i++)
              prnt("%s ",log_level_names[i].name);
-          prnt("\n");
+          prnt("\n\n");
           prnt("Available display options: \n   ");
           for (int i=0; log_options[i].name != NULL; i++)
              prnt("%s ",log_options[i].name);
-          prnt("\n");
-          prnt("Available debug or matlab options: \n   ");
+          prnt("\n\n");
+          prnt("Available debug and dump options: \n   ");
           for (int i=0; log_maskmap[i].name != NULL; i++)
              prnt("%s ",log_maskmap[i].name);
-          prnt("\n");
+          prnt("\n\n");
    	  proccmd_show("loglvl",debug,prnt);
    	  proccmd_show("logopt",debug,prnt);
    	  proccmd_show("dbgopt",debug,prnt);
@@ -375,7 +376,7 @@ int s = sscanf(buf,"%ms %i-%i\n",&logsubcmd, &idx1,&idx2);
       else if (l == 2 && strcmp(logparam,"debug") == 0){
          optbit=map_str_to_int(log_maskmap,opt);
          if (optbit < 0) {
-            prnt("debug flag %s unknown\n",opt);
+            prnt("module %s unknown\n",opt);
          } else {
             if (idx1 > 0)    
                 SET_LOG_DEBUG(optbit);
@@ -384,42 +385,51 @@ int s = sscanf(buf,"%ms %i-%i\n",&logsubcmd, &idx1,&idx2);
             proccmd_show("dbgopt",debug,prnt);
          }
       }  
-       else if (l == 2 && strcmp(logparam,"matlab") == 0){
+       else if (l == 2 && strcmp(logparam,"dump") == 0){
          optbit=map_str_to_int(log_maskmap,opt);
          if (optbit < 0) {
-            prnt("matlab flag %s unknown\n",opt);
+            prnt("module %s unknown\n",opt);
          } else {
             if (idx1 > 0)    
-                SET_LOG_MATLAB(optbit);
+                SET_LOG_DUMP(optbit);
             else
-                CLEAR_LOG_MATLAB(optbit);
+                CLEAR_LOG_DUMP(optbit);
             proccmd_show("dbgopt",debug,prnt);
          }
       }       
       if (logparam != NULL) free(logparam);
       if (opt != NULL)      free(opt); 
    } else if ( s == 3 && logsubcmd != NULL) {
-      int level, interval;
+      int level, enable,filelog;
       char *tmpstr=NULL;
       char *logparam=NULL;
       int l;
 
-      level = interval = -1;
+      level = OAILOG_DISABLE - 1;
+      filelog = -1;
+      enable=-1; 
       l=sscanf(logsubcmd,"%m[^'_']_%m[^'_']",&logparam,&tmpstr);
       if (debug > 0)
           prnt("l=%i, %s %s\n",l,((logparam==NULL)?"\"\"":logparam), ((tmpstr==NULL)?"\"\"":tmpstr));
       if (l ==2 ) {
          if (strcmp(logparam,"level") == 0) {
              level=map_str_to_int(log_level_names,tmpstr);
-             if (level < 0)  prnt("level %s unknown\n",tmpstr);
+             if (level < 0) {
+                 prnt("level %s unknown\n",tmpstr);
+                 level=OAILOG_DISABLE - 1;
+              }
          } else {
              prnt("%s%s unknown log sub command \n",logparam, tmpstr);
          }
       } else if (l ==1 ) {
          if (strcmp(logparam,"enable") == 0) {
-              interval = 1;
+            enable=1;
          } else if (strcmp(logparam,"disable") == 0) {
-              interval = 0;
+             level=OAILOG_DISABLE;
+         } else if (strcmp(logparam,"file") == 0) {
+             filelog = 1 ;
+         } else if (strcmp(logparam,"nofile") == 0) {
+             filelog = 0 ;
          } else {
              prnt("%s%s unknown log sub command \n",logparam, tmpstr);
          }
@@ -429,20 +439,18 @@ int s = sscanf(buf,"%ms %i-%i\n",&logsubcmd, &idx1,&idx2);
       if (logparam != NULL) free(logparam);
       if (tmpstr != NULL)   free(tmpstr);
       for (int i=idx1; i<=idx2 ; i++) {
-          if (level < 0) {
-              level=g_log->log_component[i].level;
-           }
-          if (interval < 0) {
-              interval=g_log->log_component[i].interval;
-           }
-          set_log(i, level, interval);
-          prnt("log level  comp %i %s set to %s (%s)\n",
-                i,((g_log->log_component[i].name==NULL)?"":g_log->log_component[i].name),
-                map_int_to_str(log_level_names,g_log->log_component[i].level),
-                ((g_log->log_component[i].interval>0)?"enabled":"disabled"));
-
-        
-      }     
+        if (level >= OAILOG_DISABLE)
+           set_log(i, level);
+        else if ( enable == 1)
+           set_log(i,g_log->log_component[i].savedlevel);
+        else if ( filelog == 1 ) {
+           set_component_filelog(i);
+        } else if ( filelog == 0 ) {
+           close_component_filelog(i);
+        } 
+          
+      }
+     proccmd_show("loglvl",debug,prnt);
    } else {
        prnt("%s: wrong log command...\n",buf);
    }
diff --git a/common/utils/telnetsrv/telnetsrv_proccmd.h b/common/utils/telnetsrv/telnetsrv_proccmd.h
index 409484455ce9a9d5c0a7e24717f1964fc04d8947..1a0a8d25dc4006c74f5b9afe3c2b82db94db7e45 100644
--- a/common/utils/telnetsrv/telnetsrv_proccmd.h
+++ b/common/utils/telnetsrv/telnetsrv_proccmd.h
@@ -48,13 +48,15 @@ telnetshell_vardef_t proc_vardef[] = {
  show:  		     display current log configuration \n\
  online, noonline:	     enable or disable console logs \n\
  enable, disable id1-id2:    enable or disable logs for components index id1 to id2 \n\
+ file, nofile id1-id2:       enable or disable redirecting logs to file for components index id1 to id2 \n\
+                             logfile name depends on component name and is printed in the show command \n\
  level_<level> id1-id2:      set log level to <level> for components index id1 to id2 \n\
-use the show command to get the authorized values for <level> and the list of component \
-indexes that can be used for id1 and id2 \n\
+                             use the show command to get the authorized values for \n\
+                             <level> and the list of component indexes that can be used for id1 and id2 \n\
  print_<opt> <0|1>           disable or enable the \"opt\" log option, use the show command to get \
-the available options\n\
- matlab_<opt> debug_<func>   disable or enable the debug code or matlab file generation \
-for \"func\" function. use the show command to get the available options\n"  
+                             the available options\n\
+ dump_<mod> debug_<mod >     disable or enable the debug file generation or debug code\
+                             for \"mod\" module. use the show command to get the available modules\n"  
 
 #define PROCCMD_THREAD_HELP_STRING " thread sub commands: \n\
  <thread id> aff <core>  :    set affinity of thread <thread id> to core <core> \n\
diff --git a/openair1/PHY/CODING/coding_load.c b/openair1/PHY/CODING/coding_load.c
index a895d9648ec8530b06a1728bc401a1c7e837335c..30b876c654789db2d68584e420840d47495dfc7d 100644
--- a/openair1/PHY/CODING/coding_load.c
+++ b/openair1/PHY/CODING/coding_load.c
@@ -130,7 +130,7 @@ int load_codinglib(void) {
      shlib_fdesc[ENCODE_SSE_FPTRIDX].fname=    "threegpplte_turbo_encoder_sse";
      shlib_fdesc[ENCODE_C_FPTRIDX].fname=      "threegpplte_turbo_encoder";
      shlib_fdesc[ENCODE_INIT_SSE_FPTRIDX].fname=       "init_encoder_sse";
-     ret=load_module_shlib("coding",shlib_fdesc,DECODE_NUM_FPTR);
+     ret=load_module_shlib("coding",shlib_fdesc,DECODE_NUM_FPTR,NULL);
      if (ret < 0) exit_fun("Error loading coding library");
 
 /* execute encoder/decoder init functions */     
diff --git a/openair1/PHY/INIT/init_top.c b/openair1/PHY/INIT/init_top.c
index 25f35ab0828c11b31c38c6d6b73700d4a53064d5..e64eda740ca0a9bd8b73335392373e5728c62da4 100644
--- a/openair1/PHY/INIT/init_top.c
+++ b/openair1/PHY/INIT/init_top.c
@@ -67,15 +67,12 @@ void generate_qpsk_table(void)
 void init_lte_top(LTE_DL_FRAME_PARMS *frame_parms)
 {
 
-  ccodedot11_init();
-  ccodedot11_init_inv();
-
   ccodelte_init();
   ccodelte_init_inv();
 
+  init_dfts();
 
 
-  phy_generate_viterbi_tables();
   phy_generate_viterbi_tables_lte();
 
   load_codinglib();
@@ -86,6 +83,7 @@ void init_lte_top(LTE_DL_FRAME_PARMS *frame_parms)
 
   generate_64qam_table();
   generate_16qam_table();
+  generate_qpsk_table();
   generate_RIV_tables();
 
   init_unscrambling_lut();
diff --git a/openair1/PHY/INIT/lte_init.c b/openair1/PHY/INIT/lte_init.c
index cbae84f56b6c1643884468f09fbc52db0df62694..bec08732769d0758332f4231fd3b7b4a2f9da721 100644
--- a/openair1/PHY/INIT/lte_init.c
+++ b/openair1/PHY/INIT/lte_init.c
@@ -450,11 +450,11 @@ void phy_config_sib2_eNB(uint8_t Mod_id,
       } else if (mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.present == MBSFN_SubframeConfig__subframeAllocation_PR_fourFrames) { // 24-bit subframe configuration
         fp->MBSFN_config[i].fourFrames_flag = 1;
         fp->MBSFN_config[i].mbsfn_SubframeConfig =
-          mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[0]|
+          mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[2]|
           (mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[1]<<8)|
-          (mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[2]<<16);
+          (mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[0]<<16);
 
-        LOG_I(PHY, "[CONFIG] MBSFN_SubframeConfig[%d] pattern is  %d\n", i,
+        LOG_I(PHY, "[CONFIG] MBSFN_SubframeConfig[%d] pattern is  %x\n", i,
               fp->MBSFN_config[i].mbsfn_SubframeConfig);
       }
     }
diff --git a/openair1/PHY/INIT/lte_init_ue.c b/openair1/PHY/INIT/lte_init_ue.c
index 62d768a50aeee992662826aff4928d8c5d1e5e08..1ed9e20d602ecc39f4f573f37b83142a5fa60d2d 100644
--- a/openair1/PHY/INIT/lte_init_ue.c
+++ b/openair1/PHY/INIT/lte_init_ue.c
@@ -165,11 +165,11 @@ void phy_config_sib2_ue(module_id_t Mod_id,int CC_id,
       } else if (mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.present == MBSFN_SubframeConfig__subframeAllocation_PR_fourFrames) { // 24-bit subframe configuration
         fp->MBSFN_config[i].fourFrames_flag = 1;
         fp->MBSFN_config[i].mbsfn_SubframeConfig =
-          mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[0]|
+          mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[2]|
           (mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[1]<<8)|
-          (mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[2]<<16);
+          (mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[0]<<16);
 
-        LOG_I(PHY, "[CONFIG] MBSFN_SubframeConfig[%d] pattern is  %d\n", i,
+        LOG_I(PHY, "[CONFIG] MBSFN_SubframeConfig[%d] pattern is  %x\n", i,
               fp->MBSFN_config[i].mbsfn_SubframeConfig);
       }
     }
diff --git a/openair1/PHY/INIT/lte_parms.c b/openair1/PHY/INIT/lte_parms.c
index 3b8a26125d43fda03bb8a86f1460277a73bd42a5..03f226c6379098a05a56f92ce286db5a83a9d0bb 100644
--- a/openair1/PHY/INIT/lte_parms.c
+++ b/openair1/PHY/INIT/lte_parms.c
@@ -20,7 +20,7 @@
  */
 
 #include "phy_init.h"
-#include "log.h"
+#include "common/utils/LOG/log.h"
 
 uint16_t dl_S_table_normal[10]={3,9,10,11,12,3,9,10,11,6};
 uint16_t dl_S_table_extended[10]={3,8,9,10,3,8,9,5,0,0};
diff --git a/openair1/PHY/INIT/phy_init.h b/openair1/PHY/INIT/phy_init.h
index 8da34fc51cb9bc9ef43349e3fcf750f37e3afdc4..da4050c84824f8eaf9df4c16b454afa433fbcc9f 100644
--- a/openair1/PHY/INIT/phy_init.h
+++ b/openair1/PHY/INIT/phy_init.h
@@ -373,6 +373,8 @@ void phy_config_request(PHY_Config_t *phy_config);
 int init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms,uint8_t osf);
 void dump_frame_parms(LTE_DL_FRAME_PARMS *frame_parms);
 
+void init_dfts(void);
+
 /** @} */
 #endif
 
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
index e268a5b061c0e06031681909be23cfbb4acc87cd..516cb32999b505aa08f1e36c2c23a1d08c747288 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
@@ -61,8 +61,8 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
     temp = 0;
 
     for (aa=0; aa<frame_parms->nb_antennas_rx; aa++) {
-      Re = ((int16_t*)ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id][aa])[(i<<2)];
-      Im = ((int16_t*)ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id][aa])[1+(i<<2)];
+      Re = ((int16_t*)ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id][aa])[(i<<1)];
+      Im = ((int16_t*)ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id][aa])[1+(i<<1)];
       temp += (Re*Re/2) + (Im*Im/2);
     }
 
@@ -81,7 +81,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
   // do not filter to have proactive timing adjustment
   max_pos_fil = max_pos;
 
-  if(subframe == 6)
+  if(subframe == 5)
   {
       diff = max_pos_fil - (frame_parms->nb_prefix_samples>>3);
 
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_ue.c b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_ue.c
index 732db1fa4e533998a83ede51735111520df19042..c912c8893482c1c00c47b73128a0e7de5b73a052 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_ue.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_ue.c
@@ -62,8 +62,8 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
     temp = 0;
 
     for (aa=0; aa<frame_parms->nb_antennas_rx; aa++) {
-      Re = ((int16_t*)ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id][aa])[(i<<2)];
-      Im = ((int16_t*)ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id][aa])[1+(i<<2)];
+      Re = ((int16_t*)ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id][aa])[(i<<1)];
+      Im = ((int16_t*)ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id][aa])[1+(i<<1)];
       temp += (Re*Re/2) + (Im*Im/2);
     }
 
@@ -82,7 +82,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
   // do not filter to have proactive timing adjustment
   max_pos_fil = max_pos;
 
-  if(subframe == 6)
+  if(subframe == 5)
   {
       diff = max_pos_fil - (frame_parms->nb_prefix_samples>>3);
 
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c b/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c
index ae33722c90dea75f86bf7bb43cd34f4d21f07c42..87abdfe19cb67567344ec6507b807290c8a2e33e 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c
@@ -274,11 +274,11 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms )   // LTE_UE_COMMON *com
 
 
 
-LOG_M_BEGIN(DEBUG_LTEESTIM);
-  LOG_M("primary_sync0.m","psync0",primary_synch0_time,frame_parms->ofdm_symbol_size,1,1);
-  LOG_M("primary_sync1.m","psync1",primary_synch1_time,frame_parms->ofdm_symbol_size,1,1);
-  LOG_M("primary_sync2.m","psync2",primary_synch2_time,frame_parms->ofdm_symbol_size,1,1);
-LOG_M_END
+  if ( LOG_DUMPFLAG(DEBUG_LTEESTIM)){
+    LOG_M("primary_sync0.m","psync0",primary_synch0_time,frame_parms->ofdm_symbol_size,1,1);
+    LOG_M("primary_sync1.m","psync1",primary_synch1_time,frame_parms->ofdm_symbol_size,1,1);
+    LOG_M("primary_sync2.m","psync2",primary_synch2_time,frame_parms->ofdm_symbol_size,1,1);
+  }
   return (1);
 }
 
@@ -460,18 +460,18 @@ int lte_sync_time(int **rxdata, ///rx data in time domain
   LOG_I(PHY,"[UE] lte_sync_time: Sync source = %d, Peak found at pos %d, val = %d (%d dB)\n",sync_source,peak_pos,peak_val,dB_fixed(peak_val)/2);
 
 
-LOG_M_BEGIN(DEBUG_LTEESTIM)
-static int debug_cnt;
-  if (debug_cnt == 0) {
-    LOG_M("sync_corr0_ue.m","synccorr0",sync_corr_ue0,2*length,1,2);
-    LOG_M("sync_corr1_ue.m","synccorr1",sync_corr_ue1,2*length,1,2);
-    LOG_M("sync_corr2_ue.m","synccorr2",sync_corr_ue2,2*length,1,2);
-    LOG_M("rxdata0.m","rxd0",rxdata[0],length<<1,1,1);
-    //    exit(-1);
-  } else {
+  if ( LOG_DUMPFLAG(DEBUG_LTEESTIM)){
+    static int debug_cnt;
+    if (debug_cnt == 0) {
+      LOG_M("sync_corr0_ue.m","synccorr0",sync_corr_ue0,2*length,1,2);
+      LOG_M("sync_corr1_ue.m","synccorr1",sync_corr_ue1,2*length,1,2);
+      LOG_M("sync_corr2_ue.m","synccorr2",sync_corr_ue2,2*length,1,2);
+      LOG_M("rxdata0.m","rxd0",rxdata[0],length<<1,1,1);
+      //    exit(-1);
+    } else {
     debug_cnt++;
   }
-LOG_M_END
+} 
 
 
   return(peak_pos);
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c b/openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
index e8225aa1fd2b9299875cb17e2287c56ab2b08903..de48a855df6b5814b569cc3d5fcc15f24e28e434 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
@@ -81,7 +81,7 @@ void lte_sync_timefreq(PHY_VARS_UE *ue,int band,unsigned int DL_freq)
 
       //compute frequency-domain representation of 6144-sample chunk
       dft6144((int16_t *)rxp,
-              sp);
+              sp,1);
 
 
       /*
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c b/openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
index bf228021452834bb65f3dddf8bfa3a168b367c95..2e4f3e60361eeb564e376435a34fcd8b9443982c 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
@@ -23,7 +23,7 @@
 
 #include "PHY/defs_UE.h"
 #include "PHY/phy_extern_ue.h"
-#include "log.h"
+#include "common/utils/LOG/log.h"
 #include "PHY/sse_intrin.h"
 
 //#define k1 1000
diff --git a/openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c b/openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c
index 1eabfd6c367afa38701d6d82b7f0514d0e8339a2..284a22e2e62567eb1444cca3c410dfcb8dab2251 100644
--- a/openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c
+++ b/openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c
@@ -25,9 +25,9 @@
 #include "PHY/defs_eNB.h"
 #include "PHY/defs_UE.h"
 #include "PHY/impl_defs_top.h"
-
+#include "common/utils/LOG/log.h"
 //extern unsigned int lte_gold_table[3][20][2][14];
-//#define DEBUG_DL_CELL_SPEC
+
 
 
 
@@ -64,7 +64,7 @@ int lte_dl_cell_spec_SS(PHY_VARS_eNB *eNB,
   else if ((p==1) && (l>0))
     nu = 0;
   else {
-    printf("lte_dl_cell_spec: p %d, l %d -> ERROR\n",p,l);
+    LOG_E(PHY,"lte_dl_cell_spec: p %d, l %d -> ERROR\n",p,l);
     return(-1);
   }
 
@@ -85,19 +85,19 @@ int lte_dl_cell_spec_SS(PHY_VARS_eNB *eNB,
     // this is r_mprime from 3GPP 36-211 6.10.1.2
     output[k] = qpsk[(eNB->lte_gold_table[Ns][l][mprime_dword]>>(2*mprime_qpsk_symb))&3];
     //output[k] = (lte_gold_table[eNB_offset][Ns][l][mprime_dword]>>(2*mprime_qpsk_symb))&3;
-#ifdef DEBUG_DL_CELL_SPEC
-    printf("Ns %d, l %d, m %d,mprime_dword %d, mprime_qpsk_symbol %d\n",
-              Ns,l,m,mprime_dword,mprime_qpsk_symb);
-    printf("index = %d (k %d)\n",(eNB->lte_gold_table[Ns][l][mprime_dword]>>(2*mprime_qpsk_symb))&3,k);
-#endif
+    if (LOG_DEBUGFLAG(DEBUG_DLCELLSPEC)) {
+      LOG_I(PHY,"Ns %d, l %d, m %d,mprime_dword %d, mprime_qpsk_symbol %d\n",
+                Ns,l,m,mprime_dword,mprime_qpsk_symb);
+      LOG_I(PHY,"index = %d (k %d)\n",(eNB->lte_gold_table[Ns][l][mprime_dword]>>(2*mprime_qpsk_symb))&3,k);
+    }
 
     mprime++;
-#ifdef DEBUG_DL_CELL_SPEC
 
+    if (LOG_DEBUGFLAG(DEBUG_DLCELLSPEC)) {
     if (m<4)
-      printf("Ns %d, l %d output[%d] = (%d,%d)\n",Ns,l,k,((short *)&output[k])[0],((short *)&output[k])[1]);
+      LOG_I(PHY,"Ns %d, l %d output[%d] = (%d,%d)\n",Ns,l,k,((short *)&output[k])[0],((short *)&output[k])[1]);
 
-#endif
+    }
     k+=6;//b
 
     if (k >= eNB->frame_parms.ofdm_symbol_size) {
@@ -105,7 +105,7 @@ int lte_dl_cell_spec_SS(PHY_VARS_eNB *eNB,
       k-=eNB->frame_parms.ofdm_symbol_size;
     }
 
-    //    printf("** k %d\n",k);
+    //    LOG_I(PHY,"** k %d\n",k);
   }
 
   return(0);
@@ -143,7 +143,7 @@ int lte_dl_cell_spec(PHY_VARS_eNB *eNB,
   else if ((p==1) && (l>0))
     nu = 0;
   else {
-    printf("lte_dl_cell_spec: p %d, l %d -> ERROR\n",p,l);
+    LOG_E(PHY,"lte_dl_cell_spec: p %d, l %d -> ERROR\n",p,l);
     return(-1);
   }
 
@@ -168,27 +168,24 @@ int lte_dl_cell_spec(PHY_VARS_eNB *eNB,
     // this is r_mprime from 3GPP 36-211 6.10.1.2
     output[k] = qpsk[(eNB->lte_gold_table[Ns][l][mprime_dword]>>(2*mprime_qpsk_symb))&3];
     //output[k] = (lte_gold_table[eNB_offset][Ns][l][mprime_dword]>>(2*mprime_qpsk_symb))&3;
-#ifdef DEBUG_DL_CELL_SPEC
-    printf("Ns %d, l %d, m %d,mprime_dword %d, mprime_qpsk_symbol %d\n",
-        Ns,l,m,mprime_dword,mprime_qpsk_symb);
-    printf("index = %d (k %d)\n",(eNB->lte_gold_table[Ns][l][mprime_dword]>>(2*mprime_qpsk_symb))&3,k);
-#endif
-
+    if (LOG_DEBUGFLAG(DEBUG_DLCELLSPEC)) {
+      LOG_I(PHY,"Ns %d, l %d, m %d,mprime_dword %d, mprime_qpsk_symbol %d\n",
+          Ns,l,m,mprime_dword,mprime_qpsk_symb);
+      LOG_I(PHY,"index = %d (k %d)\n",(eNB->lte_gold_table[Ns][l][mprime_dword]>>(2*mprime_qpsk_symb))&3,k);
+    }
     mprime++;
-#ifdef DEBUG_DL_CELL_SPEC
-
-    if (m<4)
-      printf("Ns %d, l %d output[%d] = (%d,%d)\n",Ns,l,k,((short *)&output[k])[0],((short *)&output[k])[1]);
+    if (LOG_DEBUGFLAG(DEBUG_DLCELLSPEC)) {
+      if (m<4)
+        LOG_I(PHY,"Ns %d, l %d output[%d] = (%d,%d)\n",Ns,l,k,((short *)&output[k])[0],((short *)&output[k])[1]);
+    }
 
-#endif
     k+=6;
-
     if (k >= eNB->frame_parms.ofdm_symbol_size) {
       k++;  // skip DC carrier
       k-=eNB->frame_parms.ofdm_symbol_size;
     }
 
-    //    printf("** k %d\n",k);
+    //    LOG_I(PHY,"** k %d\n",k);
   }
 
   return(0);
@@ -231,21 +228,21 @@ int lte_dl_cell_spec_rx(PHY_VARS_UE *ue,
 
     // this is r_mprime from 3GPP 36-211 6.10.1.2
     output[k] = qpsk[(ue->lte_gold_table[eNB_offset][Ns][l][mprime_dword]>>(2*mprime_qpsk_symb))&3];
-#ifdef DEBUG_DL_CELL_SPEC
-    printf("Ns %d, l %d, m %d,mprime_dword %d, mprime_qpsk_symbol %d\n",
-           Ns,l,m,mprime_dword,mprime_qpsk_symb);
-    printf("index = %d (k %d)\n",(ue->lte_gold_table[eNB_offset][Ns][l][mprime_dword]>>(2*mprime_qpsk_symb))&3,k);
-#endif
+    if (LOG_DEBUGFLAG(DEBUG_DLCELLSPEC)) {
+      LOG_I(PHY,"Ns %d, l %d, m %d,mprime_dword %d, mprime_qpsk_symbol %d\n",
+             Ns,l,m,mprime_dword,mprime_qpsk_symb);
+      LOG_I(PHY,"index = %d (k %d)\n",(ue->lte_gold_table[eNB_offset][Ns][l][mprime_dword]>>(2*mprime_qpsk_symb))&3,k);
+    }
 
     mprime++;
-#ifdef DEBUG_DL_CELL_SPEC
+    if (LOG_DEBUGFLAG(DEBUG_DLCELLSPEC)) {
 
-    if (m<4)
-      printf("Ns %d l %d output[%d] = (%d,%d)\n",Ns,l,k,((short *)&output[k])[0],((short *)&output[k])[1]);
+      if (m<4)
+        LOG_I(PHY,"Ns %d l %d output[%d] = (%d,%d)\n",Ns,l,k,((short *)&output[k])[0],((short *)&output[k])[1]);
 
-#endif
-    k++;
-    //    printf("** k %d\n",k);
+      }
+      k++;
+    //    LOG_I(PHY,"** k %d\n",k);
   }
 
   return(0);
diff --git a/openair1/PHY/LTE_REFSIG/lte_dl_uespec.c b/openair1/PHY/LTE_REFSIG/lte_dl_uespec.c
index 2c5240e14329452b2c294c8e8bde8b994278531c..1b9c17133c050dceea97d78391659003db3f30d0 100644
--- a/openair1/PHY/LTE_REFSIG/lte_dl_uespec.c
+++ b/openair1/PHY/LTE_REFSIG/lte_dl_uespec.c
@@ -36,7 +36,7 @@
 #include "lte_refsig.h"
 #include "PHY/defs_eNB.h"
 #include "PHY/defs_UE.h"
-#include "log.h"
+#include "common/utils/LOG/log.h"
 #include "PHY/impl_defs_top.h"
 
 //extern unsigned int lte_gold_table[3][20][2][14];
diff --git a/openair1/PHY/LTE_REFSIG/lte_gold_mbsfn.c b/openair1/PHY/LTE_REFSIG/lte_gold_mbsfn.c
index 14def309b7bdb11043ef66712b0828d5546898d6..69dbb705db8fd4cd85f215f50a63949f5fb88ed1 100644
--- a/openair1/PHY/LTE_REFSIG/lte_gold_mbsfn.c
+++ b/openair1/PHY/LTE_REFSIG/lte_gold_mbsfn.c
@@ -54,9 +54,9 @@ void lte_gold_mbsfn(LTE_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_mbsfn_tabl
     for (l=0; l<3; l++) {
 
       if (l==0)
-        x2 = (Nid_mbsfn) + (((1+(Nid_mbsfn<<1))*(1 + 2 + (7*(1+(sfn>>1)))))<<9); //cinit
+        x2 = (Nid_mbsfn) + (((1+(Nid_mbsfn<<1))*(1 + 2 + (7*(1+(sfn<<1)))))<<9); //cinit
       else
-        x2 = (Nid_mbsfn) + (((1+(Nid_mbsfn<<1))*(1 + ((l-1)<<2) + (7*(2+(sfn>>1)))))<<9); //cinit
+        x2 = (Nid_mbsfn) + (((1+(Nid_mbsfn<<1))*(1 + ((l-1)<<2) + (7*(2+(sfn<<1)))))<<9); //cinit
 
       //x2 = frame_parms->Ncp + (Nid_cell<<1) + (1+(Nid_cell<<1))*(1 + (3*l) + (7*(1+ns))); //cinit
       //n = 0
diff --git a/openair1/PHY/LTE_TRANSPORT/dci.c b/openair1/PHY/LTE_TRANSPORT/dci.c
index 1c015b1c84452beb7f0f9d0f3c3b0ec2fe43d51b..520488664d26289952564d1c1a75b15fbc8c01a0 100755
--- a/openair1/PHY/LTE_TRANSPORT/dci.c
+++ b/openair1/PHY/LTE_TRANSPORT/dci.c
@@ -346,6 +346,13 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols,
   y[0] = &yseq0[0];
   y[1] = &yseq1[0];
 
+#if BASIC_SIMULATOR
+  /* this should be the normal case
+   * but it has to be validated for all the various cases
+   * so let's just do it for the basic simulator
+   */
+  memset(e, 2, DCI_BITS_MAX);
+#else
 #if 1
   // reset all bits to <NIL>, here we set <NIL> elements as 2
   // memset(e, 2, DCI_BITS_MAX);
@@ -358,6 +365,7 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols,
    * (not sure about this, to be checked somehow)
    */
   //memset(e, 0, DCI_BITS_MAX);
+#endif /* BASIC_SIMULATOR */
 
   e_ptr = e;
 
diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c
index c3a309a424f9c422e62045e400d1812323de56b3..c33d9efe63b35dba960f5c9412fac2e607bd2d4e 100644
--- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c
+++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c
@@ -220,7 +220,7 @@ void fill_pdcch_order(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_a
     break;
   }
 
-  LOG_I(PHY,"%d.%d: DCI 1A: rnti %x, PDCCH order to do PRACH\n",
+  LOG_T(PHY,"%d.%d: DCI 1A: rnti %x, PDCCH order to do PRACH\n",
         proc->frame_tx, proc->subframe_tx, rel8->rnti);
 }
 
@@ -1791,7 +1791,7 @@ void fill_dci0(PHY_VARS_eNB *eNB,int frame,int subframe,eNB_rxtx_proc_t *proc,
 
 #ifdef T_TRACER
   T(T_ENB_PHY_ULSCH_UE_DCI, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe),
-    T_INT(pdu->dci_pdu_rel8.rnti), T_INT(((frame*10+subframe+4) % 8) /* TODO: correct harq pid */),
+    T_INT(pdu->dci_pdu_rel8.rnti), T_INT(pdu->dci_pdu_rel8.harq_pid),
     T_INT(mcs), T_INT(-1 /* TODO: remove round? */),
     T_INT(pdu->dci_pdu_rel8.resource_block_start),
     T_INT(pdu->dci_pdu_rel8.number_of_resource_block),
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
index f29668332040cf94c48120af2d2276dfca0f5137..a766bb82023df5caddfea8982a68a5812c8cca20 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
@@ -511,16 +511,15 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
       proc->tep[i].total_worker      = worker_num;
       proc->tep[i].current_worker    = i;
       if (pthread_cond_signal(&proc->tep[i].cond_te) != 0) {
-      printf("[eNB] ERROR pthread_cond_signal for te thread exit\n");
-      exit_fun( "ERROR pthread_cond_signal" );
-      return (-1);
+        printf("[eNB] ERROR pthread_cond_signal for te thread exit\n");
+        exit_fun( "ERROR pthread_cond_signal" );
+        return (-1);
       }
     }
   }
 
   // Fill in the "e"-sequence from 36-212, V8.6 2009-03, p. 16-17 (for each "e") and concatenate the
   // outputs for each code segment, see Section 5.1.5 p.20
-
   for (r=0,r_offset=0; r<dlsch->harq_processes[harq_pid]->C; r++) {
 
     // get information for E for the segments that are handled by the worker thread
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
index d42d5c9ac5764e8ae980eec45cbbedccd4e48367..bfdcdc1e94694f0f549e3ed885db322baef8bd2f 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
@@ -39,7 +39,7 @@
 #include "PHY/LTE_TRANSPORT/transport_proto.h"
 #include "PHY/LTE_TRANSPORT/transport_common_proto.h"
 //#define DEBUG_DLSCH_MODULATION
-#define NEW_ALLOC_RE
+//#define NEW_ALLOC_RE
 
 //#define is_not_pilot(pilots,re,nushift,use2ndpilots) ((pilots==0) || ((re!=nushift) && (re!=nushift+6)&&((re!=nushift+3)||(use2ndpilots==1))&&((re!=nushift+9)||(use2ndpilots==1)))?1:0)
 
@@ -165,10 +165,19 @@ int allocate_REs_in_RB_no_pilots_QPSK_siso(PHY_VARS_eNB* phy_vars_eNB,
   uint32_t tti_offset;
   uint8_t re;
   uint8_t *x0p;
+  uint8_t first_re,last_re;
+
+  last_re=12;
+  first_re=0;
+  if (skip_half==1)
+    last_re=6;
+  else if (skip_half==2)
+    first_re=6;
+  re=first_re;
 
   if (skip_dc == 0) {
-    for (x0p=&x0[*jj],tti_offset=symbol_offset+re_offset,re=0;
-         re<12;
+    for (x0p=&x0[*jj],tti_offset=symbol_offset+re_offset+re;
+         re<last_re;
          re++,x0p+=2,tti_offset++) {
 
       qpsk_table_offset_re=x0p[0];
@@ -199,8 +208,16 @@ int allocate_REs_in_RB_no_pilots_QPSK_siso(PHY_VARS_eNB* phy_vars_eNB,
       ((int16_t *)&txdataF[0][tti_offset])[1]=qam_table_s0[qpsk_table_offset_im];
     }
   }
-  *re_allocated = *re_allocated + 12;
-  *jj=*jj + 24;
+  if(skip_half!=0)
+  {
+    *re_allocated = *re_allocated + 6;
+    *jj=*jj + 12;
+  }
+  else
+  {
+    *re_allocated = *re_allocated + 12;
+    *jj=*jj + 24;
+  }
 
     return(0);
 }
@@ -238,12 +255,20 @@ int allocate_REs_in_RB_pilots_QPSK_siso(PHY_VARS_eNB* phy_vars_eNB,
   uint32_t tti_offset;
   uint8_t re;
   uint8_t *x0p;
+  uint8_t first_re,last_re;
 
+  last_re=12;
+  first_re=0;
+  if (skip_half==1)
+    last_re=6;
+  else if (skip_half==2)
+    first_re=6;
+  re=first_re+P1_SHIFT[0];
 
   if (skip_dc == 0) {
     //    printf("pilots: P1_SHIFT[0] %d\n",P1_SHIFT[0]);
-    for (x0p=&x0[*jj],tti_offset=symbol_offset+re_offset+P1_SHIFT[0],re=P1_SHIFT[0];
-         re<12;
+    for (x0p=&x0[*jj],tti_offset=symbol_offset+re_offset+re;
+         re<last_re;
          x0p+=2) {
 
       qpsk_table_offset_re=x0p[0];
@@ -260,8 +285,8 @@ int allocate_REs_in_RB_pilots_QPSK_siso(PHY_VARS_eNB* phy_vars_eNB,
          re<6;
          x0p+=2) {
 
-      qpsk_table_offset_re+=x0p[0];
-      qpsk_table_offset_im+=x0p[1];
+      qpsk_table_offset_re=x0p[0];
+      qpsk_table_offset_im=x0p[1];
       ((int16_t *)&txdataF[0][tti_offset])[0]=qam_table_s0[qpsk_table_offset_re];
       ((int16_t *)&txdataF[0][tti_offset])[1]=qam_table_s0[qpsk_table_offset_im];
       tti_offset+=P1_SHIFT[re+1];
@@ -272,16 +297,24 @@ int allocate_REs_in_RB_pilots_QPSK_siso(PHY_VARS_eNB* phy_vars_eNB,
          re<12;
          x0p+=2) {
 
-      qpsk_table_offset_re+=x0p[0];
-      qpsk_table_offset_im+=x0p[1];
+      qpsk_table_offset_re=x0p[0];
+      qpsk_table_offset_im=x0p[1];
       ((int16_t *)&txdataF[0][tti_offset])[0]=qam_table_s0[qpsk_table_offset_re];
       ((int16_t *)&txdataF[0][tti_offset])[1]=qam_table_s0[qpsk_table_offset_im];
       tti_offset+=P1_SHIFT[re+1];
       re+=P1_SHIFT[re+1];
     }
   }
-  *re_allocated = *re_allocated + 10;
-  *jj=*jj + 20;
+  if(skip_half!=0)
+  {
+    *re_allocated = *re_allocated + 5;
+    *jj=*jj + 10;
+  }
+  else
+  {
+    *re_allocated = *re_allocated + 10;
+    *jj=*jj + 20;
+  }
 
   return(0);
 }
@@ -317,10 +350,19 @@ int allocate_REs_in_RB_no_pilots_16QAM_siso(PHY_VARS_eNB* phy_vars_eNB,
   uint32_t tti_offset;
   uint8_t re;
   uint8_t *x0p;
+  uint8_t first_re,last_re;
+
+  last_re=12;
+  first_re=0;
+  if (skip_half==1)
+    last_re=6;
+  else if (skip_half==2)
+    first_re=6;
+  re=first_re;
 
   if (skip_dc == 0) {
-    for (x0p=&x0[*jj],tti_offset=symbol_offset+re_offset,re=0;
-         re<12;
+    for (x0p=&x0[*jj],tti_offset=symbol_offset+re_offset+re;
+         re<last_re;
          re++,x0p+=4,tti_offset++) {
 
       qam16_table_offset_re=TWO[x0p[0]];
@@ -357,8 +399,16 @@ int allocate_REs_in_RB_no_pilots_16QAM_siso(PHY_VARS_eNB* phy_vars_eNB,
       ((int16_t *)&txdataF[0][tti_offset])[1]=qam_table_s0[qam16_table_offset_im];
     }
   }
-  *re_allocated = *re_allocated + 12;
-  *jj=*jj + 48;
+  if(skip_half!=0)
+  {
+    *re_allocated = *re_allocated + 6;
+    *jj=*jj + 24;
+  }
+  else
+  {
+    *re_allocated = *re_allocated + 12;
+    *jj=*jj + 48;
+  }
 
     return(0);
 }
@@ -396,12 +446,21 @@ int allocate_REs_in_RB_pilots_16QAM_siso(PHY_VARS_eNB* phy_vars_eNB,
   uint32_t tti_offset;
   uint8_t re;
   uint8_t *x0p;
+  uint8_t first_re,last_re;
+
+  last_re=12;
+  first_re=0;
+  if (skip_half==1)
+    last_re=6;
+  else if (skip_half==2)
+    first_re=6;
+  re=first_re+P1_SHIFT[0];
 
 
   if (skip_dc == 0) {
     //    LOG_I(PHY,"pilots: P1_SHIFT[0] %d\n",P1_SHIFT[0]);
-    for (x0p=&x0[*jj],tti_offset=symbol_offset+re_offset+P1_SHIFT[0],re=P1_SHIFT[0];
-         re<12;
+    for (x0p=&x0[*jj],tti_offset=symbol_offset+re_offset+re;
+         re<last_re;
          x0p+=4) {
 
       qam16_table_offset_re=TWO[x0p[0]];
@@ -444,8 +503,16 @@ int allocate_REs_in_RB_pilots_16QAM_siso(PHY_VARS_eNB* phy_vars_eNB,
       re+=P1_SHIFT[re+1];
     }
   }
-  *re_allocated = *re_allocated + 10;
-  *jj=*jj + 40;
+  if(skip_half!=0)
+  {
+    *re_allocated = *re_allocated + 5;
+    *jj=*jj + 20;
+  }
+  else
+  {
+    *re_allocated = *re_allocated + 10;
+    *jj=*jj + 40;
+  }
 
   return(0);
 }
@@ -482,10 +549,16 @@ int allocate_REs_in_RB_no_pilots_64QAM_siso(PHY_VARS_eNB* phy_vars_eNB,
   uint32_t tti_offset;
   uint8_t re;
   uint8_t *x0p;
+  uint8_t first_re;
+
+  first_re=0;
+  if (skip_half==2)
+    first_re=6;
+  re=first_re;
 
   if (skip_dc == 0) {
 
-    x0p=&x0[*jj],tti_offset=symbol_offset+re_offset;
+    x0p=&x0[*jj],tti_offset=symbol_offset+re_offset+re;
 
     /*    for (x0p=&x0[*jj],tti_offset=symbol_offset+re_offset,re=0;
          re<12;
@@ -521,36 +594,38 @@ int allocate_REs_in_RB_no_pilots_64QAM_siso(PHY_VARS_eNB* phy_vars_eNB,
       ((int16_t *)&txdataF[0][tti_offset])[10]=qam_table_s0[qam64_table_offset_re];
       ((int16_t *)&txdataF[0][tti_offset])[11]=qam_table_s0[qam64_table_offset_im];
 
-      qam64_table_offset_re=(x0p[36]<<2)|(x0p[38]<<1)|x0p[40];
-      qam64_table_offset_im=(x0p[37]<<2)|(x0p[39]<<1)|x0p[41];
-      ((int16_t *)&txdataF[0][tti_offset])[12]=qam_table_s0[qam64_table_offset_re];
-      ((int16_t *)&txdataF[0][tti_offset])[13]=qam_table_s0[qam64_table_offset_im];
-
-      qam64_table_offset_re=(x0p[42]<<2)|(x0p[44]<<1)|x0p[46];
-      qam64_table_offset_im=(x0p[43]<<2)|(x0p[45]<<1)|x0p[47];
-      ((int16_t *)&txdataF[0][tti_offset])[14]=qam_table_s0[qam64_table_offset_re];
-      ((int16_t *)&txdataF[0][tti_offset])[15]=qam_table_s0[qam64_table_offset_im];
-
-      qam64_table_offset_re=(x0p[48]<<2)|(x0p[50]<<1)|x0p[52];
-      qam64_table_offset_im=(x0p[49]<<2)|(x0p[51]<<1)|x0p[53];
-      ((int16_t *)&txdataF[0][tti_offset])[16]=qam_table_s0[qam64_table_offset_re];
-      ((int16_t *)&txdataF[0][tti_offset])[17]=qam_table_s0[qam64_table_offset_im];
-
-      qam64_table_offset_re=(x0p[54]<<2)|(x0p[56]<<1)|x0p[58];
-      qam64_table_offset_im=(x0p[55]<<2)|(x0p[57]<<1)|x0p[59];
-      ((int16_t *)&txdataF[0][tti_offset])[18]=qam_table_s0[qam64_table_offset_re];
-      ((int16_t *)&txdataF[0][tti_offset])[19]=qam_table_s0[qam64_table_offset_im];
-
-      qam64_table_offset_re=(x0p[60]<<2)|(x0p[62]<<1)|x0p[64];
-      qam64_table_offset_im=(x0p[61]<<2)|(x0p[63]<<1)|x0p[65];
-      ((int16_t *)&txdataF[0][tti_offset])[20]=qam_table_s0[qam64_table_offset_re];
-      ((int16_t *)&txdataF[0][tti_offset])[21]=qam_table_s0[qam64_table_offset_im];
-
-      qam64_table_offset_re=(x0p[66]<<2)|(x0p[68]<<1)|x0p[70];
-      qam64_table_offset_im=(x0p[67]<<2)|(x0p[69]<<1)|x0p[71];
-      ((int16_t *)&txdataF[0][tti_offset])[22]=qam_table_s0[qam64_table_offset_re];
-      ((int16_t *)&txdataF[0][tti_offset])[23]=qam_table_s0[qam64_table_offset_im];
-
+      if(skip_half==0)
+      {
+        qam64_table_offset_re=(x0p[36]<<2)|(x0p[38]<<1)|x0p[40];
+        qam64_table_offset_im=(x0p[37]<<2)|(x0p[39]<<1)|x0p[41];
+        ((int16_t *)&txdataF[0][tti_offset])[12]=qam_table_s0[qam64_table_offset_re];
+        ((int16_t *)&txdataF[0][tti_offset])[13]=qam_table_s0[qam64_table_offset_im];
+
+        qam64_table_offset_re=(x0p[42]<<2)|(x0p[44]<<1)|x0p[46];
+        qam64_table_offset_im=(x0p[43]<<2)|(x0p[45]<<1)|x0p[47];
+        ((int16_t *)&txdataF[0][tti_offset])[14]=qam_table_s0[qam64_table_offset_re];
+        ((int16_t *)&txdataF[0][tti_offset])[15]=qam_table_s0[qam64_table_offset_im];
+
+        qam64_table_offset_re=(x0p[48]<<2)|(x0p[50]<<1)|x0p[52];
+        qam64_table_offset_im=(x0p[49]<<2)|(x0p[51]<<1)|x0p[53];
+        ((int16_t *)&txdataF[0][tti_offset])[16]=qam_table_s0[qam64_table_offset_re];
+        ((int16_t *)&txdataF[0][tti_offset])[17]=qam_table_s0[qam64_table_offset_im];
+
+        qam64_table_offset_re=(x0p[54]<<2)|(x0p[56]<<1)|x0p[58];
+        qam64_table_offset_im=(x0p[55]<<2)|(x0p[57]<<1)|x0p[59];
+        ((int16_t *)&txdataF[0][tti_offset])[18]=qam_table_s0[qam64_table_offset_re];
+        ((int16_t *)&txdataF[0][tti_offset])[19]=qam_table_s0[qam64_table_offset_im];
+
+        qam64_table_offset_re=(x0p[60]<<2)|(x0p[62]<<1)|x0p[64];
+        qam64_table_offset_im=(x0p[61]<<2)|(x0p[63]<<1)|x0p[65];
+        ((int16_t *)&txdataF[0][tti_offset])[20]=qam_table_s0[qam64_table_offset_re];
+        ((int16_t *)&txdataF[0][tti_offset])[21]=qam_table_s0[qam64_table_offset_im];
+
+        qam64_table_offset_re=(x0p[66]<<2)|(x0p[68]<<1)|x0p[70];
+        qam64_table_offset_im=(x0p[67]<<2)|(x0p[69]<<1)|x0p[71];
+        ((int16_t *)&txdataF[0][tti_offset])[22]=qam_table_s0[qam64_table_offset_re];
+        ((int16_t *)&txdataF[0][tti_offset])[23]=qam_table_s0[qam64_table_offset_im];
+      }
 
       //    }
   }
@@ -584,8 +659,16 @@ int allocate_REs_in_RB_no_pilots_64QAM_siso(PHY_VARS_eNB* phy_vars_eNB,
     }
   }
 
-  *re_allocated = *re_allocated + 12;
-  *jj=*jj + 72;
+  if(skip_half!=0)
+  {
+    *re_allocated = *re_allocated + 6;
+    *jj=*jj + 36;
+  }
+  else
+  {
+    *re_allocated = *re_allocated + 12;
+    *jj=*jj + 72;
+  }
 
   return(0);
 }
@@ -623,12 +706,21 @@ int allocate_REs_in_RB_pilots_64QAM_siso(PHY_VARS_eNB* phy_vars_eNB,
   uint32_t tti_offset;
   uint8_t re;
   uint8_t *x0p;
+  uint8_t first_re,last_re;
+
+  last_re=12;
+  first_re=0;
+  if (skip_half==1)
+    last_re=6;
+  else if (skip_half==2)
+    first_re=6;
+  re=first_re+P1_SHIFT[0];
 
 
   if (skip_dc == 0) {
     //    LOG_I(PHY,"pilots: P1_SHIFT[0] %d\n",P1_SHIFT[0]);
-    for (x0p=&x0[*jj],tti_offset=symbol_offset+re_offset+P1_SHIFT[0],re=P1_SHIFT[0];
-         re<12;
+    for (x0p=&x0[*jj],tti_offset=symbol_offset+re_offset+re;
+         re<last_re;
          x0p+=6) {
 
       qam64_table_offset_re=FOUR[x0p[0]];
@@ -677,8 +769,16 @@ int allocate_REs_in_RB_pilots_64QAM_siso(PHY_VARS_eNB* phy_vars_eNB,
       re+=P1_SHIFT[re+1];
     }
   }
-  *re_allocated = *re_allocated + 10;
-  *jj=*jj + 60;
+  if(skip_half!=0)
+  {
+    *re_allocated = *re_allocated + 5;
+    *jj=*jj + 30;
+  }
+  else
+  {
+    *re_allocated = *re_allocated + 10;
+    *jj=*jj + 60;
+  }
 
   return(0);
 }
@@ -706,6 +806,7 @@ int allocate_REs_in_RB(PHY_VARS_eNB* phy_vars_eNB,
                        int *P2_SHIFT)
 {
 
+
   uint8_t *x0 = NULL;
   MIMO_mode_t mimo_mode = -1;
 
@@ -2099,10 +2200,33 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
   uint8_t mod_order0 = 0;
   uint8_t mod_order1 = 0;
   int16_t amp_rho_a, amp_rho_b;
-  int16_t qam16_table_a0[4],qam64_table_a0[8],qam16_table_b0[4],qam64_table_b0[8];//qpsk_table_a0[2],qpsk_table_b0[2]
-  int16_t qam16_table_a1[4],qam64_table_a1[8],qam16_table_b1[4],qam64_table_b1[8];//qpsk_table_a1[2],qpsk_table_b1[2]
+  int16_t qam16_table_a0[4],qam64_table_a0[8],qam16_table_b0[4],qam64_table_b0[8],qpsk_table_a0[2],qpsk_table_b0[2];
+  int16_t qam16_table_a1[4],qam64_table_a1[8],qam16_table_b1[4],qam64_table_b1[8],qpsk_table_a1[2],qpsk_table_b1[2];
 
   int16_t *qam_table_s0=NULL,*qam_table_s1=NULL;
+  int (*allocate_REs)(PHY_VARS_eNB*,
+                      int **,
+                      uint32_t*,
+                      uint32_t*,
+                      uint16_t,
+                      uint32_t,
+                      LTE_DL_eNB_HARQ_t *,
+                      LTE_DL_eNB_HARQ_t *,
+                      uint8_t,
+                      int16_t,
+                      uint8_t,
+                      int16_t *,
+                      int16_t *,
+                      uint32_t *,
+                      uint8_t,
+                      uint8_t,
+                      uint8_t,
+                      uint8_t,
+                      uint8_t,
+                      int *,
+                      int *);
+
+
 
   int P1_SHIFT[13],P2_SHIFT[13];
   int offset,nushiftmod3;
@@ -2201,7 +2325,7 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
   amp_rho_b = (int16_t)(((int32_t)amp*dlsch1->sqrt_rho_b)>>13);
   }
 
-  /*if(mod_order0 == 2)
+  if(mod_order0 == 2)
   {
     for(i=0;i<2;i++)
     {
@@ -2209,7 +2333,7 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
       qpsk_table_b0[i] = (int16_t)(((int32_t)qpsk_table[i]*amp_rho_b)>>15);
     }
   }
-  else*/ if (mod_order0 == 4)
+  else if (mod_order0 == 4)
     for (i=0;i<4; i++) {
       qam16_table_a0[i] = (int16_t)(((int32_t)qam16_table[i]*amp_rho_a)>>15);
       qam16_table_b0[i] = (int16_t)(((int32_t)qam16_table[i]*amp_rho_b)>>15);
@@ -2220,14 +2344,14 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
       qam64_table_b0[i] = (int16_t)(((int32_t)qam64_table[i]*amp_rho_b)>>15);
     }
 
-  /*if (mod_order1 == 2)
+  if (mod_order1 == 2)
   {
     for (i=0; i<2; i++) {
       qpsk_table_a1[i] = (int16_t)(((int32_t)qpsk_table[i]*amp_rho_a)>>15);
       qpsk_table_b1[i] = (int16_t)(((int32_t)qpsk_table[i]*amp_rho_b)>>15);
     }
   }
-  else*/ if (mod_order1 == 4)
+  else if (mod_order1 == 4)
     for (i=0; i<4; i++) {
       qam16_table_a1[i] = (int16_t)(((int32_t)qam16_table[i]*amp_rho_a)>>15);
       qam16_table_b1[i] = (int16_t)(((int32_t)qam16_table[i]*amp_rho_b)>>15);
@@ -2348,24 +2472,36 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
 
     re_offset = frame_parms->first_carrier_offset;
     symbol_offset = (uint32_t)frame_parms->ofdm_symbol_size*(l+(subframe_offset*nsymb));
+    allocate_REs = allocate_REs_in_RB;
 
     switch (mod_order0) {
     case 2:
       qam_table_s0 = NULL;
-      /*if (pilots) {
+      if (pilots) {
         qam_table_s0 = qpsk_table_b0;
+        allocate_REs = (dlsch0->harq_processes[harq_pid]->mimo_mode == SISO) ?
+          allocate_REs_in_RB_pilots_QPSK_siso :
+          allocate_REs_in_RB;
       }
       else {
         qam_table_s0 = qpsk_table_a0;
-
-      }*/
+        allocate_REs = (dlsch0->harq_processes[harq_pid]->mimo_mode == SISO) ?
+          allocate_REs_in_RB_no_pilots_QPSK_siso :
+          allocate_REs_in_RB;
+      }
       break;
     case 4:
       if (pilots) {
         qam_table_s0 = qam16_table_b0;
+        allocate_REs = (dlsch0->harq_processes[harq_pid]->mimo_mode == SISO) ?
+          allocate_REs_in_RB_pilots_16QAM_siso :
+          allocate_REs_in_RB;
       }
       else {
         qam_table_s0 = qam16_table_a0;
+        allocate_REs = (dlsch0->harq_processes[harq_pid]->mimo_mode == SISO) ?
+          allocate_REs_in_RB_no_pilots_16QAM_siso :
+          allocate_REs_in_RB;
 
       }
       break;
@@ -2373,23 +2509,42 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
     case 6:
       if (pilots) {
         qam_table_s0 = qam64_table_b0;
+        allocate_REs = (dlsch0->harq_processes[harq_pid]->mimo_mode == SISO) ?
+          allocate_REs_in_RB_pilots_64QAM_siso :
+          allocate_REs_in_RB;
       }
       else {
         qam_table_s0 = qam64_table_a0;
+        allocate_REs = (dlsch0->harq_processes[harq_pid]->mimo_mode == SISO) ?
+          allocate_REs_in_RB_no_pilots_64QAM_siso :
+          allocate_REs_in_RB;
       }
+      /* TODO: this is a quick hack to be removed. There is a problem
+       * with above code that needs to be analyzed and fixed. In the
+       * meantime, let's use the generic function.
+       */
+      //allocate_REs = allocate_REs_in_RB;
       break;
 
     }
 
+    /* TODO: hack, to be removed. The power is too different from
+     * previous version. Some more work/validation is needed before
+     * we switch to the new version.
+     */
+    //if (frame_parms->N_RB_DL==25)
+      //allocate_REs = allocate_REs_in_RB;
+
     switch (mod_order1) {
     case 2:
       qam_table_s1 = NULL;
-      /*if (pilots) {
+      allocate_REs = allocate_REs_in_RB;
+      if (pilots) {
         qam_table_s1 = qpsk_table_b1;
       }
       else {
         qam_table_s1 = qpsk_table_a1;
-      }*/
+      }
       break;
     case 4:
       if (pilots) {
@@ -2432,8 +2587,6 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
       skip_half = check_skiphalf(rb,subframe_offset,frame_parms,l,nsymb);
       skip_dc   = check_skip_dc(rb,frame_parms);
 
-
-
      if (dlsch0) {
         if (dlsch0_harq->Nlayers>1) {
           LOG_E(PHY,"Nlayers %d: re_offset %d, symbol %d offset %d\n",dlsch0_harq->Nlayers,re_offset,l,symbol_offset);
@@ -2465,7 +2618,7 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
                                rb);
 
 
-      allocate_REs_in_RB(phy_vars_eNB,
+      allocate_REs(phy_vars_eNB,
                          txdataF,
                          &jj,
                          &jj2,
diff --git a/openair1/PHY/LTE_TRANSPORT/pmch_common.c b/openair1/PHY/LTE_TRANSPORT/pmch_common.c
index 1d12c79621ea403c93c1eaa6389da0fa5065aa8c..a4821a420ff27f87731c6b737d515598e5758343 100644
--- a/openair1/PHY/LTE_TRANSPORT/pmch_common.c
+++ b/openair1/PHY/LTE_TRANSPORT/pmch_common.c
@@ -27,6 +27,7 @@ int is_pmch_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_par
 
   uint32_t period;
   uint8_t i;
+  uint8_t j;
 
   //  LOG_D(PHY,"is_pmch_subframe: frame %d, subframe %d, num_MBSFN_config %d\n",
   //  frame,subframe,frame_parms->num_MBSFN_config);
@@ -34,8 +35,8 @@ int is_pmch_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_par
   for (i=0; i<frame_parms->num_MBSFN_config; i++) {  // we have at least one MBSFN configuration
     period = 1<<frame_parms->MBSFN_config[i].radioframeAllocationPeriod;
 
-    if ((frame % period) == frame_parms->MBSFN_config[i].radioframeAllocationOffset) {
-      if (frame_parms->MBSFN_config[i].fourFrames_flag == 0) {
+    if (frame_parms->MBSFN_config[i].fourFrames_flag == 0) {
+      if ((frame % period) == frame_parms->MBSFN_config[i].radioframeAllocationOffset) {
         if (frame_parms->frame_type == FDD) {
           switch (subframe) {
 
@@ -108,9 +109,96 @@ int is_pmch_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_par
             break;
           }
         }
+      }
+
+    } else { // handle 4 frames case
+
+      for(j=0;j<4;j++) {
+        if ((frame % period) == (frame_parms->MBSFN_config[i].radioframeAllocationOffset + j)) {
+          if (frame_parms->frame_type == FDD) {
+            switch (subframe) {
+            case 1:
+              if (((frame_parms->MBSFN_config[i].mbsfn_SubframeConfig)  & (0x800000>>(j*6))) > 0) {
+                //LOG_E(PHY,"SubframeConfig<<6(%x),MBSFN_FDD_SF1(%x)\n",frame_parms->MBSFN_config[i].mbsfn_SubframeConfig,0x800000>>(j*6));
+                return(1);
+              }
+
+              break;
+
+            case 2:
+              if (((frame_parms->MBSFN_config[i].mbsfn_SubframeConfig) & (0x400000>>(j*6))) > 0) {
+                //LOG_E(PHY,"SubframeConfig<<6(%x),MBSFN_FDD_SF1(%x)\n",frame_parms->MBSFN_config[i].mbsfn_SubframeConfig,0x400000>>(j*6));
+                return(1);
+              }
+
+              break;
+
+            case 3:
+              if (((frame_parms->MBSFN_config[i].mbsfn_SubframeConfig) & (0x200000>>(j*6))) > 0) {
+                //LOG_E(PHY,"SubframeConfig<<6(%x),MBSFN_FDD_SF1(%x)\n",frame_parms->MBSFN_config[i].mbsfn_SubframeConfig,0x200000>>(j*6));
+                return(1);
+              }
+
+              break;
+
+            case 6:
+              if (((frame_parms->MBSFN_config[i].mbsfn_SubframeConfig) & (0x100000>>(j*6))) > 0) {
+                //LOG_E(PHY,"SubframeConfig<<6(%x),MBSFN_FDD_SF1(%x)\n",frame_parms->MBSFN_config[i].mbsfn_SubframeConfig,0x100000>>(j*6));
+                return(1);
+              }
+
+              break;
+
+            case 7:
+              if (((frame_parms->MBSFN_config[i].mbsfn_SubframeConfig) & (0x80000>>(j*6))) > 0) {
+                //LOG_E(PHY,"SubframeConfig<<6(%x),MBSFN_FDD_SF1(%x)\n",frame_parms->MBSFN_config[i].mbsfn_SubframeConfig,0x80000>>(j*6));
+                return(1);
+              }
+
+              break;
 
-      } else { // handle 4 frames case
+            case 8:
+              if (((frame_parms->MBSFN_config[i].mbsfn_SubframeConfig) & (0x40000>>(j*6))) > 0) {
+                //LOG_E(PHY,"SubframeConfig<<6(%x),MBSFN_FDD_SF1(%x)\n",frame_parms->MBSFN_config[i].mbsfn_SubframeConfig,0x40000>>(j*6));
+                return(1);
+              }
 
+              break;
+            }
+          } else {
+            switch (subframe) {
+            case 3:
+              if (((frame_parms->MBSFN_config[i].mbsfn_SubframeConfig>>j*6) & MBSFN_TDD_SF3) > 0)
+                return(1);
+
+              break;
+
+            case 4:
+              if (((frame_parms->MBSFN_config[i].mbsfn_SubframeConfig>>j*6) & MBSFN_TDD_SF4) > 0)
+                return(1);
+
+              break;
+
+            case 7:
+              if (((frame_parms->MBSFN_config[i].mbsfn_SubframeConfig>>j*6) & MBSFN_TDD_SF7) > 0)
+                return(1);
+
+              break;
+
+            case 8:
+              if (((frame_parms->MBSFN_config[i].mbsfn_SubframeConfig>>j*6) & MBSFN_TDD_SF8) > 0)
+                return(1);
+
+              break;
+
+            case 9:
+              if (((frame_parms->MBSFN_config[i].mbsfn_SubframeConfig>>j*6) & MBSFN_TDD_SF9) > 0)
+                return(1);
+
+              break;
+            }
+          }
+        }
       }
     }
   }
diff --git a/openair1/PHY/LTE_TRANSPORT/prach.c b/openair1/PHY/LTE_TRANSPORT/prach.c
index 07d1267def271a09e4416b0237da6ce44db26a2f..ec0b7db4ad7d003398dfddd842f935f6639b0743 100644
--- a/openair1/PHY/LTE_TRANSPORT/prach.c
+++ b/openair1/PHY/LTE_TRANSPORT/prach.c
@@ -153,25 +153,24 @@ void rx_prach0(PHY_VARS_eNB *eNB,
       subframe            = eNB->proc.subframe_prach_br;
       prachF              = eNB->prach_vars_br.prachF;
       rxsigF              = eNB->prach_vars_br.rxsigF[ce_level];
-LOG_DEBUG_BEGIN(PRACH)
-      if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (eNB) : running rx_prach (br_flag %d, ce_level %d) for frame %d subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d, rootSequenceIndex %d, repetition number %d,numRepetitionsPrePreambleAttempt %d\n",
-				   br_flag,ce_level,ru->proc.frame_prach,subframe,
-				   fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],
-				   prach_ConfigIndex,rootSequenceIndex,
-				   eNB->prach_vars_br.repetition_number[ce_level],
-				   fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[ce_level]);
-LOG_DEBUG_END
-    }
-    else
+      if (LOG_DEBUGFLAG(PRACH)){
+        if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (eNB) : running rx_prach (br_flag %d, ce_level %d) for frame %d subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d, rootSequenceIndex %d, repetition number %d,numRepetitionsPrePreambleAttempt %d\n",
+			  	     br_flag,ce_level,ru->proc.frame_prach,subframe,
+				     fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],
+				     prach_ConfigIndex,rootSequenceIndex,
+				     eNB->prach_vars_br.repetition_number[ce_level],
+				     fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[ce_level]);
+      }
+    } else
 #endif
       {
         prach_ifftp       = eNB->prach_vars.prach_ifft[0];
         subframe          = eNB->proc.subframe_prach;
         prachF            = eNB->prach_vars.prachF;
         rxsigF            = eNB->prach_vars.rxsigF[0];
-LOG_DEBUG_BEGIN(PRACH)
-        if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (eNB) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d , rootSequenceIndex %d\n", subframe,fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset,prach_ConfigIndex,rootSequenceIndex);
-LOG_DEBUG_END
+        if (LOG_DEBUGFLAG(PRACH)){
+          if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (eNB) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d , rootSequenceIndex %d\n", subframe,fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset,prach_ConfigIndex,rootSequenceIndex);
+        }
       }
   }
   else {
@@ -179,20 +178,19 @@ LOG_DEBUG_END
     if (br_flag == 1) {
         subframe          = ru->proc.subframe_prach_br;
         rxsigF            = ru->prach_rxsigF_br[ce_level];
-LOG_DEBUG_BEGIN(PRACH)
-        if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (RU) : running rx_prach (br_flag %d, ce_level %d) for frame %d subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d\n",
-				     br_flag,ce_level,ru->proc.frame_prach,subframe,fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],prach_ConfigIndex);
-LOG_DEBUG_END
-    }
-    else
+        if (LOG_DEBUGFLAG(PRACH)){
+          if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (RU) : running rx_prach (br_flag %d, ce_level %d) for frame %d subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d\n",
+				       br_flag,ce_level,ru->proc.frame_prach,subframe,fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],prach_ConfigIndex);
+        }
+    } else
 #endif
       {
         subframe          = ru->proc.subframe_prach;
         rxsigF            = ru->prach_rxsigF;
-LOG_DEBUG_BEGIN(PRACH)
-        if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (RU) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d\n",
-	      subframe,fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset,prach_ConfigIndex);
-LOG_DEBUG_END
+        if (LOG_DEBUGFLAG(PRACH)){
+          if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (RU) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d\n",
+	        subframe,fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset,prach_ConfigIndex);
+        }
       }
 
   }
@@ -204,27 +202,25 @@ LOG_DEBUG_END
       // DJP - indexing below in subframe zero takes us off the beginning of the array???
       prach[aa] = (int16_t*)&ru->common.rxdata[aa][(subframe*fp->samples_per_tti)-ru->N_TA_offset];
 
-LOG_M_BEGIN(PRACH)
-        int32_t en0=signal_energy((int32_t*)prach[aa],fp->samples_per_tti);
-        int8_t dbEn0 = dB_fixed(en0);
-        int8_t rach_dBm = dbEn0 - ru->rx_total_gain_dB;
-        char buffer[80];
-        if (dbEn0>32 && prach[0]!= NULL)
-        {
-          static int counter=0;
-          sprintf(buffer, "%s%d", "/tmp/prach_rx",counter);
-          LOG_M(buffer,"prach_rx",prach[0],fp->samples_per_tti,1,13);
-        }
-      if (dB_fixed(en0)>32)
-      {
-        sprintf(buffer, "rach_dBm:%d",rach_dBm);
-        if (prach[0]!= NULL) LOG_M("prach_rx","prach_rx",prach[0],fp->samples_per_tti,1,1);
-        LOG_I(PHY,"RU %d, br_flag %d ce_level %d frame %d subframe %d per_tti:%d prach:%p (energy %d) TA:%d %s rxdata:%p index:%d\n",
-              ru->idx,br_flag,ce_level,ru->proc.frame_prach,subframe,fp->samples_per_tti,
-              prach[aa],dbEn0,ru->N_TA_offset,buffer,ru->common.rxdata[aa], 
-              (subframe*fp->samples_per_tti)-ru->N_TA_offset);
+        if (LOG_DUMPFLAG(PRACH)){
+          int32_t en0=signal_energy((int32_t*)prach[aa],fp->samples_per_tti);
+          int8_t dbEn0 = dB_fixed(en0);
+          int8_t rach_dBm = dbEn0 - ru->rx_total_gain_dB;
+          char buffer[80];
+          if (dbEn0>32 && prach[0]!= NULL) {
+            static int counter=0;
+            sprintf(buffer, "%s%d", "/tmp/prach_rx",counter);
+            LOG_M(buffer,"prach_rx",prach[0],fp->samples_per_tti,1,13);
+          }
+        if (dB_fixed(en0)>32) {
+          sprintf(buffer, "rach_dBm:%d",rach_dBm);
+          if (prach[0]!= NULL) LOG_M("prach_rx","prach_rx",prach[0],fp->samples_per_tti,1,1);
+            LOG_I(PHY,"RU %d, br_flag %d ce_level %d frame %d subframe %d per_tti:%d prach:%p (energy %d) TA:%d %s rxdata:%p index:%d\n",
+                  ru->idx,br_flag,ce_level,ru->proc.frame_prach,subframe,fp->samples_per_tti,
+                  prach[aa],dbEn0,ru->N_TA_offset,buffer,ru->common.rxdata[aa], 
+                  (subframe*fp->samples_per_tti)-ru->N_TA_offset);
         }
-LOG_M_END
+      }
     }
   }
 
@@ -306,9 +302,9 @@ LOG_M_END
   if (((eNB!=NULL) && (ru->function != NGFI_RAU_IF4p5))||
       ((eNB==NULL) && (ru->function == NGFI_RRU_IF4p5))) { // compute the DFTs of the PRACH temporal resources
     // Do forward transform
-LOG_DEBUG_BEGIN(PRACH)
-    LOG_D(PHY,"rx_prach: Doing FFT for N_RB_UL %d nb_rx:%d Ncp:%d\n",fp->N_RB_UL, nb_rx, Ncp);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(PRACH)) {
+      LOG_D(PHY,"rx_prach: Doing FFT for N_RB_UL %d nb_rx:%d Ncp:%d\n",fp->N_RB_UL, nb_rx, Ncp);
+    }
     for (aa=0; aa<nb_rx; aa++) {
       AssertFatal(prach[aa]!=NULL,"prach[%d] is null\n",aa);
       prach2 = prach[aa] + (Ncp<<1);
@@ -331,10 +327,10 @@ LOG_DEBUG_END
 	if (prach_fmt == 4) {
 	  dft256(prach2,rxsigF[aa],1);
 	} else {
-	  dft3072(prach2,rxsigF[aa]);
+	  dft3072(prach2,rxsigF[aa],1);
 	  
 	  if (prach_fmt>1)
-	    dft3072(prach2+6144,rxsigF[aa]+6144);
+	    dft3072(prach2+6144,rxsigF[aa]+6144,1);
 	}
 	
 	break;
@@ -345,10 +341,10 @@ LOG_DEBUG_END
 	  dft1024(prach2,rxsigF[aa],1);
 	  fft_size = 1024;
 	} else {
-	  dft6144(prach2,rxsigF[aa]);
+	  dft6144(prach2,rxsigF[aa],1);
 	  
 	  if (prach_fmt>1)
-	    dft6144(prach2+12288,rxsigF[aa]+12288);
+	    dft6144(prach2+12288,rxsigF[aa]+12288,1);
 	  
 	  fft_size = 6144;
 	}
@@ -359,22 +355,22 @@ LOG_DEBUG_END
 	if (prach_fmt == 4) {
 	  dft2048(prach2,rxsigF[aa],1);
 	} else {
-	  dft12288(prach2,rxsigF[aa]);
+	  dft12288(prach2,rxsigF[aa],1);
 	  
 	  if (prach_fmt>1)
-	    dft12288(prach2+24576,rxsigF[aa]+24576);
+	    dft12288(prach2+24576,rxsigF[aa]+24576,1);
 	}
 	
 	break;
 	
       case 75:
 	if (prach_fmt == 4) {
-	  dft3072(prach2,rxsigF[aa]);
+	  dft3072(prach2,rxsigF[aa],1);
 	} else {
-	  dft18432(prach2,rxsigF[aa]);
+	  dft18432(prach2,rxsigF[aa],1);
 	  
 	  if (prach_fmt>1)
-	    dft18432(prach2+36864,rxsigF[aa]+36864);
+	    dft18432(prach2+36864,rxsigF[aa]+36864,1);
 	}
 	
 	break;
@@ -384,19 +380,19 @@ LOG_DEBUG_END
 	  if (prach_fmt == 4) {
 	    dft4096(prach2,rxsigF[aa],1);
 	  } else {
-	    dft24576(prach2,rxsigF[aa]);
+	    dft24576(prach2,rxsigF[aa],1);
 	    
 	    if (prach_fmt>1)
-	      dft24576(prach2+49152,rxsigF[aa]+49152);
+	      dft24576(prach2+49152,rxsigF[aa]+49152,1);
 	  }
 	} else {
 	  if (prach_fmt == 4) {
-	    dft3072(prach2,rxsigF[aa]);
+	    dft3072(prach2,rxsigF[aa],1);
 	  } else {
-	    dft18432(prach2,rxsigF[aa]);
+	    dft18432(prach2,rxsigF[aa],1);
 	    
 	    if (prach_fmt>1)
-	      dft18432(prach2+36864,rxsigF[aa]+36864);
+	      dft18432(prach2+36864,rxsigF[aa]+36864,1);
 	  }
 	}
 	
@@ -439,10 +435,10 @@ LOG_DEBUG_END
     return;
   } else if (eNB!=NULL) {
 
-LOG_DEBUG_BEGIN(PRACH)
-    int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
-    if ((en > 60)&&(br_flag==1)) LOG_I(PHY,"PRACH (br_flag %d,ce_level %d, n_ra_prb %d, k %d): Frame %d, Subframe %d => %d dB\n",br_flag,ce_level,n_ra_prb,k,eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
-LOG_DEBUG_END
+    if ( LOG_DEBUGFLAG(PRACH)) {
+      int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
+      if ((en > 60)&&(br_flag==1)) LOG_I(PHY,"PRACH (br_flag %d,ce_level %d, n_ra_prb %d, k %d): Frame %d, Subframe %d => %d dB\n",br_flag,ce_level,n_ra_prb,k,eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
+    }
   }
   
   // in case of RAU and prach received rx_thread wakes up prach
@@ -477,10 +473,10 @@ LOG_DEBUG_END
   *max_preamble_energy=0;
   for (preamble_index=0 ; preamble_index<64 ; preamble_index++) {
 
-LOG_DEBUG_BEGIN(PRACH)
-    int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
-    if (en>60) LOG_I(PHY,"frame %d, subframe %d : Trying preamble %d (br_flag %d)\n",ru->proc.frame_prach,subframe,preamble_index,br_flag);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(PRACH)){
+      int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
+      if (en>60) LOG_I(PHY,"frame %d, subframe %d : Trying preamble %d (br_flag %d)\n",ru->proc.frame_prach,subframe,preamble_index,br_flag);
+    }
     if (restricted_set == 0) {
       // This is the relative offset in the root sequence table (5.7.2-4 from 36.211) for the given preamble index
       preamble_offset = ((NCS==0)? preamble_index : (preamble_index/(N_ZC/NCS)));
@@ -563,11 +559,11 @@ LOG_DEBUG_END
     }
 
     // Compute DFT of RX signal (conjugate input, results in conjugate output) for each new rootSequenceIndex
-LOG_DEBUG_BEGIN(PRACH)
-    int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
-    if (en>60) LOG_I(PHY,"frame %d, subframe %d : preamble index %d: offset %d, preamble shift %d (br_flag %d, en %d)\n",
-		     ru->proc.frame_prach,subframe,preamble_index,preamble_offset,preamble_shift,br_flag,en);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(PRACH)) {
+      int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
+      if (en>60) LOG_I(PHY,"frame %d, subframe %d : preamble index %d: offset %d, preamble shift %d (br_flag %d, en %d)\n",
+		       ru->proc.frame_prach,subframe,preamble_index,preamble_offset,preamble_shift,br_flag,en);
+    }
     log2_ifft_size = 10;
     fft_size = 6144;
 
@@ -589,13 +585,13 @@ LOG_DEBUG_END
 	}
 
       memset(prachF, 0, sizeof(int16_t)*2*1024 );
-LOG_M_BEGIN(PRACH)      
-      if (prach[0]!= NULL) LOG_M("prach_rx0.m","prach_rx0",prach[0],6144+792,1,1);
-       LOG_M("prach_rx1.m","prach_rx1",prach[1],6144+792,1,1);
-       LOG_M("prach_rxF0.m","prach_rxF0",rxsigF[0],24576,1,1);
-       LOG_M("prach_rxF1.m","prach_rxF1",rxsigF[1],6144,1,1);
-LOG_M_END
-
+      if (LOG_DUMPFLAG(PRACH)) {      
+        if (prach[0]!= NULL) LOG_M("prach_rx0.m","prach_rx0",prach[0],6144+792,1,1);
+         LOG_M("prach_rx1.m","prach_rx1",prach[1],6144+792,1,1);
+         LOG_M("prach_rxF0.m","prach_rxF0",rxsigF[0],24576,1,1);
+         LOG_M("prach_rxF1.m","prach_rxF1",rxsigF[1],6144,1,1);
+      }
+   
       for (aa=0;aa<nb_rx; aa++) {
       // Do componentwise product with Xu* on each antenna 
 
@@ -623,10 +619,10 @@ LOG_M_END
 	    prach_ifft[i] += (prach_ifft_tmp[i<<1]*prach_ifft_tmp[(i<<1)] + prach_ifft_tmp[1+(i<<1)]*prach_ifft_tmp[1+(i<<1)])>>10;
 	}
 
-LOG_M_BEGIN(PRACH)	
-	if (aa==0) LOG_M("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
-        if (aa==1) LOG_M("prach_rxF_comp1.m","prach_rxF_comp1",prachF,1024,1,1);
-LOG_M_END
+        if (LOG_DUMPFLAG(PRACH)) {	
+	  if (aa==0) LOG_M("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
+          if (aa==1) LOG_M("prach_rxF_comp1.m","prach_rxF_comp1",prachF,1024,1,1);
+        }
       }// antennas_rx
     } // new dft
     
@@ -637,10 +633,10 @@ LOG_M_END
 	 eNB->frame_parms.prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[ce_level]))
 #endif
       {
-LOG_DEBUG_BEGIN(PRACH)
+      if (LOG_DEBUGFLAG(PRACH)){
         int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
 	if (en>60) LOG_I(PHY,"frame %d, subframe %d: Checking for peak in time-domain (br_flag %d, en %d)\n",ru->proc.frame_prach,subframe,br_flag,en);
-LOG_DEBUG_END
+      }
 	preamble_shift2 = ((preamble_shift==0) ? 0 : ((preamble_shift<<log2_ifft_size)/N_ZC));
 
     
@@ -652,44 +648,48 @@ LOG_DEBUG_END
 	    *max_preamble_energy  = levdB;
 	    *max_preamble_delay   = ((i*fft_size)>>log2_ifft_size)*update_TA/update_TA2;
 	    *max_preamble         = preamble_index;
-LOG_DEBUG_BEGIN(PRACH)
-            int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
-	    if ((en>60) && (br_flag==1)) LOG_D(PHY,"frame %d, subframe %d : max_preamble_energy %d, max_preamble_delay %d, max_preamble %d (br_flag %d,ce_level %d, levdB %d, lev %d)\n",ru->proc.frame_prach,subframe,*max_preamble_energy,*max_preamble_delay,*max_preamble,br_flag,ce_level,levdB,lev);
-LOG_DEBUG_END
+            if (LOG_DEBUGFLAG(PRACH)){
+              int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
+	      if ((en>60) && (br_flag==1)) 
+                 LOG_D(PHY,"frame %d, subframe %d : max_preamble_energy %d, max_preamble_delay %d, max_preamble %d (br_flag %d,ce_level %d, levdB %d, lev %d)\n",
+                       ru->proc.frame_prach,subframe,
+                       *max_preamble_energy,*max_preamble_delay,
+                       *max_preamble,br_flag,ce_level,levdB,lev);
+            }
 	  }
 	}
 
       }
   }// preamble_index
 
-LOG_M_BEGIN(PRACH)
-  int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));  
-  if (en>60) {
-    k = (12*n_ra_prb) - 6*fp->N_RB_UL;
-    
-    if (k<0) k+=fp->ofdm_symbol_size;
-    
-    k*=12;
-    k+=13;
-    k*=2;
-    
-    if (br_flag == 0) {
-	LOG_M("rxsigF.m","prach_rxF",&rxsigF[0][0],12288,1,1);
-	LOG_M("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
-	LOG_M("Xu.m","xu",Xu,N_ZC,1,1);
-	LOG_M("prach_ifft0.m","prach_t0",prach_ifft,1024,1,1);
-    }
-    else {
-      LOG_E(PHY,"Dumping prach (br_flag %d), k = %d (n_ra_prb %d)\n",br_flag,k,n_ra_prb);
-      LOG_M("rxsigF_br.m","prach_rxF_br",&rxsigF[0][0],12288,1,1);
-      LOG_M("prach_rxF_comp0_br.m","prach_rxF_comp0_br",prachF,1024,1,1);
-      LOG_M("Xu_br.m","xu_br",Xu,N_ZC,1,1);
-      LOG_M("prach_ifft0_br.m","prach_t0_br",prach_ifft,1024,1,1);
-      exit(-1);      
-    }
+  if (LOG_DUMPFLAG(PRACH)) {
+    int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));  
+    if (en>60) {
+      k = (12*n_ra_prb) - 6*fp->N_RB_UL;
+      
+      if (k<0) k+=fp->ofdm_symbol_size;
+      
+      k*=12;
+      k+=13;
+      k*=2;
+      
+      if (br_flag == 0) {
+  	  LOG_M("rxsigF.m","prach_rxF",&rxsigF[0][0],12288,1,1);
+  	  LOG_M("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
+  	  LOG_M("Xu.m","xu",Xu,N_ZC,1,1);
+  	  LOG_M("prach_ifft0.m","prach_t0",prach_ifft,1024,1,1);
+      }
+      else {
+  	LOG_E(PHY,"Dumping prach (br_flag %d), k = %d (n_ra_prb %d)\n",br_flag,k,n_ra_prb);
+  	LOG_M("rxsigF_br.m","prach_rxF_br",&rxsigF[0][0],12288,1,1);
+  	LOG_M("prach_rxF_comp0_br.m","prach_rxF_comp0_br",prachF,1024,1,1);
+  	LOG_M("Xu_br.m","xu_br",Xu,N_ZC,1,1);
+  	LOG_M("prach_ifft0_br.m","prach_t0_br",prach_ifft,1024,1,1);
+  	exit(-1);      
+      }
 
-  }
-LOG_M_END
+    }
+  } /* LOG_DUMPFLAG(PRACH) */
   if (eNB) stop_meas(&eNB->rx_prach);
 
 }
diff --git a/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c b/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
index 619d84cee203f174a661b8a88377ff22e41d81c3..adb0d1576f31322448cdf6a4a5c53f7486e4a00b 100644
--- a/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
@@ -33,7 +33,6 @@
 #include "PHY/defs_eNB.h"
 #include "PHY/phy_extern.h"
 #include "transport_eNB.h"
-//#define DEBUG_ULSCH
 #include "PHY/sse_intrin.h"
 #include "transport_common_proto.h"
 #include "PHY/LTE_ESTIMATION/lte_estimation.h"
@@ -67,7 +66,7 @@ void lte_idft(LTE_DL_FRAME_PARMS *frame_parms,uint32_t *z, uint16_t Msc_PUSCH)
 
 
 
-  //  printf("Doing lte_idft for Msc_PUSCH %d\n",Msc_PUSCH);
+  LOG_T(PHY,"Doing lte_idft for Msc_PUSCH %d\n",Msc_PUSCH);
 
   if (frame_parms->Ncp == 0) { // Normal prefix
     z0 = z;
@@ -388,13 +387,13 @@ void lte_idft(LTE_DL_FRAME_PARMS *frame_parms,uint32_t *z, uint16_t Msc_PUSCH)
 
   for (i=0,ip=0; i<Msc_PUSCH; i++,ip+=4) {
     z0[i]     = ((uint32_t*)idft_out0)[ip];
-    /*
-      printf("out0 (%d,%d),(%d,%d),(%d,%d),(%d,%d)\n",
-      ((int16_t*)&idft_out0[ip])[0],((int16_t*)&idft_out0[ip])[1],
-      ((int16_t*)&idft_out0[ip+1])[0],((int16_t*)&idft_out0[ip+1])[1],
-      ((int16_t*)&idft_out0[ip+2])[0],((int16_t*)&idft_out0[ip+2])[1],
-      ((int16_t*)&idft_out0[ip+3])[0],((int16_t*)&idft_out0[ip+3])[1]);
-    */
+      if(LOG_DEBUGFLAG(DEBUG_ULSCH)) {
+        LOG_I(PHY,"out0 (%d,%d),(%d,%d),(%d,%d),(%d,%d)\n",
+            ((int16_t*)&idft_out0[ip])[0],((int16_t*)&idft_out0[ip])[1],
+            ((int16_t*)&idft_out0[ip+1])[0],((int16_t*)&idft_out0[ip+1])[1],
+            ((int16_t*)&idft_out0[ip+2])[0],((int16_t*)&idft_out0[ip+2])[1],
+            ((int16_t*)&idft_out0[ip+3])[0],((int16_t*)&idft_out0[ip+3])[1]);
+      }
     z1[i]     = ((uint32_t*)idft_out0)[ip+1];
     z2[i]     = ((uint32_t*)idft_out0)[ip+2];
     z3[i]     = ((uint32_t*)idft_out0)[ip+3];
@@ -479,10 +478,7 @@ int32_t ulsch_qpsk_llr(LTE_DL_FRAME_PARMS *frame_parms,
 
   int i;
 
-  //  printf("qpsk llr for symbol %d (pos %d), llr offset %d\n",symbol,(symbol*frame_parms->N_RB_DL*12),llr128U-(__m128i*)ulsch_llr);
-
   for (i=0; i<(nb_rb*3); i++) {
-    //printf("%d,%d,%d,%d,%d,%d,%d,%d\n",((int16_t *)rxF)[0],((int16_t *)rxF)[1],((int16_t *)rxF)[2],((int16_t *)rxF)[3],((int16_t *)rxF)[4],((int16_t *)rxF)[5],((int16_t *)rxF)[6],((int16_t *)rxF)[7]);
     *(*llrp128) = *rxF;
     rxF++;
     (*llrp128)++;
@@ -593,7 +589,9 @@ void ulsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
   ch_mag =(int16x8_t*)&ul_ch_mag[0][(symbol*frame_parms->N_RB_DL*12)];
   ch_magb =(int16x8_t*)&ul_ch_magb[0][(symbol*frame_parms->N_RB_DL*12)];
 #endif
-  //  printf("symbol %d: mag %d, magb %d\n",symbol,_mm_extract_epi16(ch_mag[0],0),_mm_extract_epi16(ch_magb[0],0));
+  if(LOG_DEBUGFLAG(DEBUG_ULSCH)) {
+     LOG_UI(PHY,"symbol %d: mag %d, magb %d\n",symbol,_mm_extract_epi16(ch_mag[0],0),_mm_extract_epi16(ch_magb[0],0));
+  }
   for (i=0; i<(nb_rb*3); i++) {
 
 
@@ -736,9 +734,9 @@ void ulsch_extract_rbs_single(int32_t **rxdataF,
     nb_rb1 = cmin(cmax((int)(frame_parms->N_RB_UL) - (int)(2*first_rb),(int)0),(int)(2*nb_rb));    // 2 times no. RBs before the DC
     nb_rb2 = 2*nb_rb - nb_rb1;                                   // 2 times no. RBs after the DC
  
-#ifdef DEBUG_ULSCH
-    printf("ulsch_extract_rbs_single: 2*nb_rb1 = %d, 2*nb_rb2 = %d\n",nb_rb1,nb_rb2);
-#endif
+    if(LOG_DEBUGFLAG(DEBUG_ULSCH)) {
+       LOG_UI(PHY,"ulsch_extract_rbs_single: 2*nb_rb1 = %d, 2*nb_rb2 = %d\n",nb_rb1,nb_rb2);
+    }
 
     rxF_ext   = &rxdataF_ext[aarx][(symbol*frame_parms->N_RB_UL*12)];
 
@@ -838,7 +836,7 @@ void ulsch_channel_compensation(int32_t **rxdataF_ext,
 
 #endif
     for (rb=0; rb<nb_rb; rb++) {
-      //            printf("comp: symbol %d rb %d\n",symbol,rb);
+      LOG_D(PHY,"comp: symbol %d rb %d\n",symbol,rb);
 
 // just compute channel magnitude without scaling, this is done after equalization for SC-FDMA
 
@@ -861,7 +859,7 @@ void ulsch_channel_compensation(int32_t **rxdataF_ext,
       mmtmpU1 = _mm_packs_epi32(mmtmpU0,mmtmpU0);
       ul_ch_mag128[2] = _mm_unpacklo_epi16(mmtmpU1,mmtmpU1);
 
-      // printf("comp: symbol %d rb %d => %d,%d,%d (output_shift %d)\n",symbol,rb,*((int16_t*)&ul_ch_mag128[0]),*((int16_t*)&ul_ch_mag128[1]),*((int16_t*)&ul_ch_mag128[2]),output_shift);
+      LOG_D(PHY,"comp: symbol %d rb %d => %d,%d,%d (output_shift %d)\n",symbol,rb,*((int16_t*)&ul_ch_mag128[0]),*((int16_t*)&ul_ch_mag128[1]),*((int16_t*)&ul_ch_mag128[2]),output_shift);
 
 
 #elif defined(__arm__)
@@ -1125,10 +1123,9 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
 
   harq_pid = subframe2harq_pid(frame_parms,proc->frame_rx,subframe);
   Qm = ulsch[UE_id]->harq_processes[harq_pid]->Qm;
-#ifdef DEBUG_ULSCH
-  printf("rx_ulsch: harq_pid %d, nb_rb %d first_rb %d\n",harq_pid,ulsch[UE_id]->harq_processes[harq_pid]->nb_rb,ulsch[UE_id]->harq_processes[harq_pid]->first_rb);
-
-#endif //DEBUG_ULSCH
+  if(LOG_DEBUGFLAG(DEBUG_ULSCH)) {
+     LOG_I(PHY,"rx_ulsch: harq_pid %d, nb_rb %d first_rb %d\n",harq_pid,ulsch[UE_id]->harq_processes[harq_pid]->nb_rb,ulsch[UE_id]->harq_processes[harq_pid]->first_rb);
+  }
 
   if (ulsch[UE_id]->harq_processes[harq_pid]->nb_rb == 0) {
     LOG_E(PHY,"PUSCH (%d/%x) nb_rb=0!\n", harq_pid,ulsch[UE_id]->rnti);
@@ -1137,13 +1134,13 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
 
   for (l=0; l<(frame_parms->symbols_per_tti-ulsch[UE_id]->harq_processes[harq_pid]->srs_active); l++) {
 
-#ifdef DEBUG_ULSCH
-    printf("rx_ulsch : symbol %d (first_rb %d,nb_rb %d), rxdataF %p, rxdataF_ext %p\n",l,
+  if(LOG_DEBUGFLAG(DEBUG_ULSCH)) {
+    LOG_I(PHY,"rx_ulsch : symbol %d (first_rb %d,nb_rb %d), rxdataF %p, rxdataF_ext %p\n",l,
         ulsch[UE_id]->harq_processes[harq_pid]->first_rb,
         ulsch[UE_id]->harq_processes[harq_pid]->nb_rb,
         common_vars->rxdataF,
         pusch_vars->rxdataF_ext);
-#endif //DEBUG_ULSCH
+  }
 
     ulsch_extract_rbs_single(common_vars->rxdataF,
                              pusch_vars->rxdataF_ext,
@@ -1179,21 +1176,16 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
     
     pusch_vars->ulsch_power[i] = signal_energy_nodc(pusch_vars->drs_ch_estimates[i],
 						    ulsch[UE_id]->harq_processes[harq_pid]->nb_rb*12)/correction_factor;
-    /*    printf("%4.4d.%d power harq_pid %d rb %2.2d TBS %2.2d (MPR_times_Ks %d correction %d)  power %d dBtimes10\n", proc->frame_rx, proc->subframe_rx, harq_pid, ulsch[UE_id]->harq_processes[harq_pid]->nb_rb, ulsch[UE_id]->harq_processes[harq_pid]->TBS,MPR_times_100Ks,correction_factor,dB_fixed_times10(pusch_vars->ulsch_power[i])); 
-     */
+    LOG_D(PHY,"%4.4d.%d power harq_pid %d rb %2.2d TBS %2.2d (MPR_times_Ks %d correction %d)  power %d dBtimes10\n", proc->frame_rx, proc->subframe_rx, harq_pid, ulsch[UE_id]->harq_processes[harq_pid]->nb_rb, ulsch[UE_id]->harq_processes[harq_pid]->TBS,MPR_times_100Ks,correction_factor,dB_fixed_times10(pusch_vars->ulsch_power[i])); 
+     
   }
 
-
-  //LOG_M("rxdataF_ext.m","rxF_ext",pusch_vars->rxdataF_ext[eNB_id][0],300*(frame_parms->symbols_per_tti-ulsch[UE_id]->srs_active),1,1);
-  //LOG_M("ulsch_chest.m","drs_est",pusch_vars->drs_ch_estimates[eNB_id][0],300*(frame_parms->symbols_per_tti-ulsch[UE_id]->srs_active),1,1);
-
-
   ulsch_channel_level(pusch_vars->drs_ch_estimates,
 		      frame_parms,
 		      avgU,
 		      ulsch[UE_id]->harq_processes[harq_pid]->nb_rb);
   
-  //  printf("[ULSCH] avg[0] %d\n",avgU[0]);
+  LOG_D(PHY,"[ULSCH] avg[0] %d\n",avgU[0]);
   
   
   avgs = 0;
@@ -1205,9 +1197,9 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
   
   log2_maxh = (log2_approx(avgs)/2)+ log2_approx(frame_parms->nb_antennas_rx-1)+4;
   
-#ifdef DEBUG_ULSCH
-  printf("[ULSCH] log2_maxh = %d (%d,%d)\n",log2_maxh,avgU[0],avgs);
-#endif
+
+  LOG_D(PHY,"[ULSCH] log2_maxh = %d (%d,%d)\n",log2_maxh,avgU[0],avgs);
+
 
 
   for (l=0; l<(frame_parms->symbols_per_tti-ulsch[UE_id]->harq_processes[harq_pid]->srs_active); l++) {
@@ -1229,9 +1221,6 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
 			       ulsch[UE_id]->harq_processes[harq_pid]->nb_rb,
 			       log2_maxh); // log2_maxh+I0_shift
 
-  
-
-
     if (frame_parms->nb_antennas_rx > 1)
       ulsch_detection_mrc(frame_parms,
 			  pusch_vars->rxdataF_comp,
@@ -1240,9 +1229,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
 			  l,
 			  ulsch[UE_id]->harq_processes[harq_pid]->nb_rb);
     
-    
-    
-    //    if ((eNB->measurements.n0_power_dB[0]+3)<pusch_vars->ulsch_power[0]) {
+    //    if ((eNB->measurements.n0_power_dB[0]+3)<pusch_vars->ulsch_power[0]) 
     if (23<pusch_vars->ulsch_power[0]) {
       freq_equalization(frame_parms,
 			pusch_vars->rxdataF_comp,
@@ -1254,22 +1241,9 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
     }
   }
 
-  
-
-
-
-  //#ifdef DEBUG_ULSCH
-  // Inverse-Transform equalized outputs
-  //  printf("Doing IDFTs\n");
   lte_idft(frame_parms,
            (uint32_t*)pusch_vars->rxdataF_comp[0],
            ulsch[UE_id]->harq_processes[harq_pid]->nb_rb*12);
-  //  printf("Done\n");
-  //#endif //DEBUG_ULSCH
-
-
-
-
 
   llrp = (int16_t*)&pusch_vars->llr[0];
 
@@ -1316,9 +1290,8 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
       break;
 
     default:
-#ifdef DEBUG_ULSCH
-      printf("ulsch_demodulation.c (rx_ulsch): Unknown Qm!!!!\n");
-#endif //DEBUG_ULSCH
+      LOG_E(PHY,"ulsch_demodulation.c (rx_ulsch): Unknown Qm!!!!\n");
+
       break;
     }
   }
@@ -1329,7 +1302,7 @@ void rx_ulsch_emul(PHY_VARS_eNB *eNB,
 		   eNB_rxtx_proc_t *proc,
                    uint8_t UE_index)
 {
-  printf("[PHY] EMUL eNB %d rx_ulsch_emul : subframe %d, UE_index %d\n",eNB->Mod_id,proc->subframe_rx,UE_index);
+  LOG_I(PHY,"[PHY] EMUL eNB %d rx_ulsch_emul : subframe %d, UE_index %d\n",eNB->Mod_id,proc->subframe_rx,UE_index);
   eNB->pusch_vars[UE_index]->ulsch_power[0] = 31622; //=45dB;
   eNB->pusch_vars[UE_index]->ulsch_power[1] = 31622; //=45dB;
 
@@ -1344,7 +1317,7 @@ void rx_ulsch_emul(PHY_VARS_eNB *eNB,
 
   harq_pid = subframe2harq_pid(&eNB->frame_parms,frame,subframe);
 
-  printf("Dumping ULSCH in subframe %d with harq_pid %d, round %d for NB_rb %d, TBS %d, Qm %d, N_symb %d\n", 
+  LOG_UI(PHY,"Dumping ULSCH in subframe %d with harq_pid %d, round %d for NB_rb %d, TBS %d, Qm %d, N_symb %d\n", 
 	 subframe,harq_pid,round,eNB->ulsch[UE_id]->harq_processes[harq_pid]->nb_rb,
          eNB->ulsch[UE_id]->harq_processes[harq_pid]->TBS,eNB->ulsch[UE_id]->harq_processes[harq_pid]->Qm,
          eNB->ulsch[UE_id]->harq_processes[harq_pid]->Nsymb_pusch);
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c
index b9fbcad9c9349cbec14cd23f4c75e4ddbab6b6e4..e0ea796a826fb6b05357f5624942a954706cb389 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c
@@ -179,29 +179,29 @@ void extract_dci1C_info(uint8_t N_RB_DL, lte_frame_type_t frame_type, void *dci_
 
     uint32_t rballoc=0;
     uint8_t mcs=0;
+    uint8_t Ngap=0;
 
     switch (N_RB_DL) {
         case 6:
-          mcs             = ((DCI1C_5MHz_t *)dci_pdu)->mcs;
-          rballoc         = conv_1C_RIV(((DCI1C_5MHz_t *)dci_pdu)->rballoc,6);
-
+          mcs             = ((DCI1C_1_5MHz_t *)dci_pdu)->mcs;
+          rballoc         = conv_1C_RIV(((DCI1C_1_5MHz_t *)dci_pdu)->rballoc, 6);
           break;
 
         case 25:
-            mcs             = ((DCI1C_5MHz_t *)dci_pdu)->mcs;
-            rballoc         = conv_1C_RIV(((DCI1C_5MHz_t *)dci_pdu)->rballoc,6);
-
+          mcs             = ((DCI1C_5MHz_t *)dci_pdu)->mcs;
+          rballoc         = conv_1C_RIV(((DCI1C_5MHz_t *)dci_pdu)->rballoc, 25);
           break;
 
         case 50:
-            mcs             = ((DCI1C_10MHz_t *)dci_pdu)->mcs;
-            rballoc         = conv_1C_RIV(((DCI1C_10MHz_t *)dci_pdu)->rballoc,6);
-
+          mcs             = ((DCI1C_10MHz_t *)dci_pdu)->mcs;
+          rballoc         = conv_1C_RIV(((DCI1C_10MHz_t *)dci_pdu)->rballoc, 50);
+          Ngap            = ((DCI1C_10MHz_t *)dci_pdu)->Ngap;
           break;
 
         case 100:
-            mcs             = ((DCI1C_20MHz_t *)dci_pdu)->mcs;
-            rballoc         = conv_1C_RIV(((DCI1C_20MHz_t *)dci_pdu)->rballoc,6);
+          mcs             = ((DCI1C_20MHz_t *)dci_pdu)->mcs;
+          rballoc         = conv_1C_RIV(((DCI1C_20MHz_t *)dci_pdu)->rballoc, 100);
+          Ngap            = ((DCI1C_20MHz_t *)dci_pdu)->Ngap;
           break;
 
         default:
@@ -211,6 +211,7 @@ void extract_dci1C_info(uint8_t N_RB_DL, lte_frame_type_t frame_type, void *dci_
 
     pdci_info_extarcted->mcs1     = mcs;
     pdci_info_extarcted->rballoc  = rballoc;
+    pdci_info_extarcted->Ngap     = Ngap;
 }
 
 void extract_dci1_info(uint8_t N_RB_DL, lte_frame_type_t frame_type, void *dci_pdu, DCI_INFO_EXTRACTED_t *pdci_info_extarcted)
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
index 4787d94d1a4736e8b19f13b054d665193f32efcc..50b09102d88857b2b1a2cabf439e2e81a28f2d70 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
@@ -40,8 +40,14 @@
 #include<math.h>
 #include <stdlib.h>
 #include <string.h>
+#include <linux/version.h>
+#if RHEL_RELEASE_CODE >= 1796
+#include <lapacke/lapacke_utils.h>
+#include <lapacke/lapacke.h>
+#else
 #include <lapacke_utils.h>
 #include <lapacke.h>
+#endif
 #include <cblas.h>
 #include "linear_preprocessing_rec.h"
 
@@ -1314,14 +1320,17 @@ void dlsch_channel_compensation(int **rxdataF_ext,
     }
 
     for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
-
-      dl_ch128          = (__m128i *)&dl_ch_estimates_ext[aatx*2 + aarx][symbol*frame_parms->N_RB_DL*12];
+      /* TODO: hack to be removed. There is crash for 1 antenna case, so
+       * for 1 antenna case, I put back the value 2 as it was before
+       * Elena's commit.
+       */
+      int x = frame_parms->nb_antennas_rx > 1 ? frame_parms->nb_antennas_rx : 2;
+      dl_ch128          = (__m128i *)&dl_ch_estimates_ext[aatx*x + aarx][symbol*frame_parms->N_RB_DL*12];
       //print_shorts("dl_ch128[0]=",&dl_ch128[0]);*/
-      dl_ch_mag128      = (__m128i *)&dl_ch_mag[aatx*2 + aarx][symbol*frame_parms->N_RB_DL*12];
-      dl_ch_mag128b     = (__m128i *)&dl_ch_magb[aatx*2 + aarx][symbol*frame_parms->N_RB_DL*12];
+      dl_ch_mag128      = (__m128i *)&dl_ch_mag[aatx*x + aarx][symbol*frame_parms->N_RB_DL*12];
+      dl_ch_mag128b     = (__m128i *)&dl_ch_magb[aatx*x + aarx][symbol*frame_parms->N_RB_DL*12];
       rxdataF128        = (__m128i *)&rxdataF_ext[aarx][symbol*frame_parms->N_RB_DL*12];
-      rxdataF_comp128   = (__m128i *)&rxdataF_comp[aatx*2 + aarx][symbol*frame_parms->N_RB_DL*12];
-
+      rxdataF_comp128   = (__m128i *)&rxdataF_comp[aatx*x + aarx][symbol*frame_parms->N_RB_DL*12];
 
       for (rb=0; rb<nb_rb; rb++) {
         if (mod_order>2) {
@@ -1771,12 +1780,17 @@ void dlsch_channel_compensation_core(int **rxdataF_ext,
     }
 
     for (aarx=0; aarx<n_rx; aarx++) {
-
-    dl_ch128          = (__m128i *)&dl_ch_estimates_ext[aatx*2 + aarx][start_point];
-    dl_ch_mag128      = (__m128i *)&dl_ch_mag[aatx*2 + aarx][start_point];
-    dl_ch_mag128b     = (__m128i *)&dl_ch_magb[aatx*2 + aarx][start_point];
+      /* TODO: hack to be removed. There is crash for 1 antenna case, so
+       * for 1 antenna case, I put back the value 2 as it was before
+       * Elena's commit.
+       */
+      int x = n_rx > 1 ? n_rx : 2;
+
+    dl_ch128          = (__m128i *)&dl_ch_estimates_ext[aatx*x + aarx][start_point];
+    dl_ch_mag128      = (__m128i *)&dl_ch_mag[aatx*x + aarx][start_point];
+    dl_ch_mag128b     = (__m128i *)&dl_ch_magb[aatx*x + aarx][start_point];
     rxdataF128        = (__m128i *)&rxdataF_ext[aarx][start_point];
-    rxdataF_comp128   = (__m128i *)&rxdataF_comp[aatx*2 + aarx][start_point];
+    rxdataF_comp128   = (__m128i *)&rxdataF_comp[aatx*x + aarx][start_point];
 
       length_mod8 = length&7;
       if (length_mod8 == 0){
@@ -3974,17 +3988,12 @@ void dlsch_channel_level_median(int **dl_ch_estimates_ext,
                     ((int32_t*)&norm128D)[2] +
                     ((int32_t*)&norm128D)[3];
 
-        if (ii<1){
-//        print_ints("norm128D",&norm128D[0]);
-          printf("norm_pack[%d] %d\n", aatx*n_rx + aarx, norm_pack);
-        }
-
         if (norm_pack > max)
           max = norm_pack;
         if (norm_pack < min)
           min = norm_pack;
 
-          dl_ch128+=1;
+        dl_ch128+=1;
       }
 
         median[aatx*n_rx + aarx]  = (max+min)>>1;
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/linear_preprocessing_rec.c b/openair1/PHY/LTE_UE_TRANSPORT/linear_preprocessing_rec.c
index d85d440193757044eedadaf820ef4d46b47eddb6..7d063e326effc919180e5ebe12c02fa19d85b6a2 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/linear_preprocessing_rec.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/linear_preprocessing_rec.c
@@ -13,9 +13,14 @@ data storage. */
 #include <stdlib.h>
 #include <cblas.h>
 #include <string.h>
+#include <linux/version.h>
+#if RHEL_RELEASE_CODE >= 1796
+#include <lapacke/lapacke_utils.h>
+#include <lapacke/lapacke.h>
+#else
 #include <lapacke_utils.h>
 #include <lapacke.h>
-
+#endif
 //#define DEBUG_PREPROC
 
 
@@ -366,4 +371,4 @@ float sqrt_float(float x, float sqrt_x)
 {
   sqrt_x = (float)(sqrt((double)(x)));
   return sqrt_x;
-}
\ No newline at end of file
+}
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c
index 1dbe75641ee54a074f3d073e2695178d753551a1..481d0bcaf8510623a8c6c7712d960ab0335a83ee 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c
@@ -376,7 +376,7 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1
       memmove( prach, prach+1024, Ncp<<2 );
       prach_len = 512+Ncp;
     } else {
-      idft3072(prachF,prach2);
+      idft3072(prachF,prach2,1);
       memmove( prach, prach+6144, Ncp<<2 );
       prach_len = 3072+Ncp;
 
@@ -395,7 +395,7 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1
       memmove( prach, prach+2048, Ncp<<2 );
       prach_len = 1024+Ncp;
     } else {
-      idft6144(prachF,prach2);
+      idft6144(prachF,prach2,1);
       /*for (i=0;i<6144*2;i++)
       prach2[i]<<=1;*/
       memmove( prach, prach+12288, Ncp<<2 );
@@ -415,7 +415,7 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1
       memmove( prach, prach+4096, Ncp<<2 );
       prach_len = 2048+Ncp;
     } else {
-      idft12288(prachF,prach2);
+      idft12288(prachF,prach2,1);
       memmove( prach, prach+24576, Ncp<<2 );
       prach_len = 12288+Ncp;
 
@@ -429,12 +429,12 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1
 
   case 75:
     if (prach_fmt == 4) {
-      idft3072(prachF,prach2);
+      idft3072(prachF,prach2,1);
       //TODO: account for repeated format in dft output
       memmove( prach, prach+6144, Ncp<<2 );
       prach_len = 3072+Ncp;
     } else {
-      idft18432(prachF,prach2);
+      idft18432(prachF,prach2,1);
       memmove( prach, prach+36864, Ncp<<2 );
       prach_len = 18432+Ncp;
 
@@ -453,7 +453,7 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1
 	memmove( prach, prach+8192, Ncp<<2 );
 	prach_len = 4096+Ncp;
       } else {
-	idft24576(prachF,prach2);
+	idft24576(prachF,prach2,1);
 	memmove( prach, prach+49152, Ncp<<2 );
 	prach_len = 24576+Ncp;
 	
@@ -465,12 +465,12 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1
     }
     else {
       if (prach_fmt == 4) {
-	idft3072(prachF,prach2);
+	idft3072(prachF,prach2,1);
 	//TODO: account for repeated format in dft output
 	memmove( prach, prach+6144, Ncp<<2 );
 	prach_len = 3072+Ncp;
       } else {
-	idft18432(prachF,prach2);
+	idft18432(prachF,prach2,1);
 	memmove( prach, prach+36864, Ncp<<2 );
 	prach_len = 18432+Ncp;
 	printf("Generated prach for 100 PRB, 3/4 sampling\n");
diff --git a/openair1/PHY/TOOLS/Makefile b/openair1/PHY/TOOLS/Makefile
index 59b6a1e03beedc51371c2a611964fb3d5a2682b6..017bc7427643cc3f2ecb51da33c579b71f44a724 100644
--- a/openair1/PHY/TOOLS/Makefile
+++ b/openair1/PHY/TOOLS/Makefile
@@ -1,14 +1,14 @@
 lte_dfts_sse4: lte_dfts.c
-	gcc -O2 -msse4.1 -g -ggdb -o lte_dfts_sse4 lte_dfts.c time_meas.c file_output.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR2_DIR/COMMON -DMR_MAIN -DNB_ANTENNAS_RX=1 # -DD256STATS #-DD64STATS
+	gcc -O2 -std=gnu99 -msse4.1 -g -ggdb -o lte_dfts_sse4 lte_dfts.c time_meas.c  ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
 
 lte_dfts_avx2: lte_dfts.c
-	gcc -O2 -mavx2 -g -ggdb -o lte_dfts_avx2 lte_dfts.c time_meas.c file_output.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR2_DIR/COMMON -DMR_MAIN -DNB_ANTENNAS_RX=1 # -DD256STATS #-DD64STATS
+	gcc -O2 -std=gnu99 -mavx2 -g -ggdb -o lte_dfts_avx2 lte_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
 
 lte_dfts_avx2.s: lte_dfts.c
-	gcc -O2 -mavx2 -S lte_dfts.c time_meas.c file_output.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR2_DIR/COMMON -DMR_MAIN -DNB_ANTENNAS_RX=1 # -DD256STATS #-DD64STATS
+	gcc -O2 -std=gnu99 -mavx2 -S lte_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
 
 lte_dfts_sse4.s: lte_dfts.c
-	gcc -O2 -msse4.1 -S lte_dfts.c time_meas.c file_output.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR2_DIR/COMMON -DMR_MAIN -DNB_ANTENNAS_RX=1 # -DD256STATS #-DD64STATS
+	gcc -O2 -std=gnu99 -msse4.1 -S lte_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm # -DD256STATS #-DD64STATS
 
 dft_cycles_avx2: lte_dfts_avx2
 	./lte_dfts_avx2 | egrep cycles
diff --git a/openair1/PHY/TOOLS/lte_dfts.c b/openair1/PHY/TOOLS/lte_dfts.c
index 4bf6afd1fd367d99d1aa06635f93baefd7082454..7e24af179d756380b1327bb07674d1b6adf5ab97 100644
--- a/openair1/PHY/TOOLS/lte_dfts.c
+++ b/openair1/PHY/TOOLS/lte_dfts.c
@@ -24,6 +24,13 @@
 #include <string.h>
 
 #include <stdint.h>
+#include <math.h>
+#include <pthread.h>
+#include <execinfo.h>
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
 
 #ifndef MR_MAIN
 #include "PHY/defs_common.h"
@@ -31,18 +38,19 @@
 #include "tools_defs.h"
 #else
 #include "time_meas.h"
-#include <math.h>
-
+#include "UTIL/LOG/log.h"
 #define debug_msg
 #define ONE_OVER_SQRT2_Q15 23170
 
-
+int oai_exit=0;
 #endif
 
 #define ONE_OVER_SQRT3_Q15 18919
 
 #include "PHY/sse_intrin.h"
 
+#include "assertions.h"
+
 #define print_shorts(s,x) printf("%s %d,%d,%d,%d,%d,%d,%d,%d\n",s,(x)[0],(x)[1],(x)[2],(x)[3],(x)[4],(x)[5],(x)[6],(x)[7])
 #define print_shorts256(s,x) printf("%s %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",s,(x)[0],(x)[1],(x)[2],(x)[3],(x)[4],(x)[5],(x)[6],(x)[7],(x)[8],(x)[9],(x)[10],(x)[11],(x)[12],(x)[13],(x)[14],(x)[15])
 
@@ -54,6 +62,8 @@ const static int16_t conjugatedft[32] __attribute__((aligned(32))) = {-1,1,-1,1,
 
 const static int16_t reflip[32]  __attribute__((aligned(32))) = {1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1};
 
+
+
 #if defined(__x86_64__) || defined(__i386__)
 static inline void cmac(__m128i a,__m128i b, __m128i *re32, __m128i *im32) __attribute__((always_inline));
 static inline void cmac(__m128i a,__m128i b, __m128i *re32, __m128i *im32)
@@ -3087,10 +3097,10 @@ void dft128(int16_t *x,int16_t *y,int scale)
 
   dft64((int16_t*)(xtmp),(int16_t*)ytmp,1);
   dft64((int16_t*)(xtmp+32),(int16_t*)(ytmp+16),1);
-
-  /*  LOG_M("dft128a.m","dfta",ytmp,64,1,1);
-      LOG_M("dft128b.m","dftb",ytmp+16,64,1,1);*/
-
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {
+    LOG_M("dft128a.m","dfta",ytmp,64,1,1);
+    LOG_M("dft128b.m","dftb",ytmp+16,64,1,1);*/
+  }
   for (i=0; i<16; i++) {
     bfly2_16(ytmpp,ytmpp+16,
              y128p,y128p+16,
@@ -3139,9 +3149,10 @@ void dft128(int16_t *x,int16_t *y,int scale)
 
 
   }
-
-  /*  LOG_M("dft128out.m","dft128",y,128,1,1);
-      exit(-1);*/
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {
+     LOG_M("dft128out.m","dft128",y,128,1,1);
+     exit(-1);
+  }
   _mm_empty();
   _m_empty();
 
@@ -3166,17 +3177,17 @@ void dft128(int16_t *x,int16_t *y,int scale)
   transpose4_ooff_simd256(x256+10,xtmp+5,8);
   transpose4_ooff_simd256(x256+12,xtmp+6,8);
   transpose4_ooff_simd256(x256+14,xtmp+7,8);
-  
-  /*  LOG_M("dft128ina_256.m","dftina",xtmp,64,1,1);
-  LOG_M("dft128inb_256.m","dftinb",xtmp+8,64,1,1);
-  */
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {  
+     LOG_M("dft128ina_256.m","dftina",xtmp,64,1,1);
+     LOG_M("dft128inb_256.m","dftinb",xtmp+8,64,1,1);
+  }
 
   dft64((int16_t*)(xtmp),(int16_t*)ytmp,1);
   dft64((int16_t*)(xtmp+8),(int16_t*)(ytmp+8),1);
-  
-  /*LOG_M("dft128outa_256.m","dftouta",ytmp,64,1,1);
-  LOG_M("dft128outb_256.m","dftoutb",ytmp+8,64,1,1);
-  */
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {  
+    LOG_M("dft128outa_256.m","dftouta",ytmp,64,1,1);
+    LOG_M("dft128outb_256.m","dftoutb",ytmp+8,64,1,1);
+  }
 
   for (i=0; i<8; i++) {
     bfly2_16_256(ytmpp,ytmpp+8,
@@ -3209,9 +3220,10 @@ void dft128(int16_t *x,int16_t *y,int scale)
     y256[15] = mulhi_int16_simd256(y256[15],ONE_OVER_SQRT2_Q15_256);
 
   }
-  
-  /*  LOG_M("dft128.m","dft",y256,128,1,1);
-      exit(-1);*/
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {  
+   LOG_M("dft128.m","dft",y256,128,1,1);
+   exit(-1);
+  }
 }
 
 #endif
@@ -4134,10 +4146,8 @@ void idft512(int16_t *x,int16_t *y,int scale)
 
 #endif
 
-int16_t tw1024[1536] __attribute__((aligned(32))) = {  32767,0,32766,-202,32764,-403,32761,-604,32757,-805,32751,-1006,32744,-1207,32736,-1407,32727,-1608,32717,-1809,32705,-2010,32692,-2210,32678,-2411,32662,-2611,32646,-2812,32628,-3012,32609,-3212,32588,-3412,32567,-3612,32544,-3812,32520,-4012,32495,-4211,32468,-4410,32441,-4609,32412,-4808,32382,-5007,32350,-5206,32318,-5404,32284,-5602,32249,-5800,32213,-5998,32176,-6196,32137,-6393,32097,-6590,32056,-6787,32014,-6983,31970,-7180,31926,-7376,31880,-7572,31833,-7767,31785,-7962,31735,-8157,31684,-8352,31633,-8546,31580,-8740,31525,-8933,31470,-9127,31413,-9320,31356,-9512,31297,-9704,31236,-9896,31175,-10088,31113,-10279,31049,-10470,30984,-10660,30918,-10850,30851,-11039,30783,-11228,30713,-11417,30643,-11605,30571,-11793,30498,-11981,30424,-12167,30349,-12354,30272,-12540,30195,-12725,30116,-12910,30036,-13095,29955,-13279,29873,-13463,29790,-13646,29706,-13828,29621,-14010,29534,-14192,29446,-14373,29358,-14553,29268,-14733,29177,-14912,29085,-15091,28992,-15269,28897,-15447,28802,-15624,28706,-15800,28608,-15976,28510,-16151,28410,-16326,28309,-16500,28208,-16673,28105,-16846,28001,-17018,27896,-17190,27790,-17361,27683,-17531,27575,-17700,27466,-17869,27355,-18037,27244,-18205,27132,-18372,27019,-18538,26905,-18703,26789,-18868,26673,-19032,26556,-19195,26437,-19358,26318,-19520,26198,-19681,26077,-19841,25954,-20001,25831,-20160,25707,-20318,25582,-20475,25456,-20632,25329,-20788,25201,-20943,25072,-21097,24942,-21250,24811,-21403,24679,-21555,24546,-21706,24413,-21856,24278,-22005,24143,-22154,24006,-22302,23869,-22449,23731,-22595,23592,-22740,23452,-22884,23311,-23028,23169,-23170,23027,-23312,22883,-23453,22739,-23593,22594,-23732,22448,-23870,22301,-24007,22153,-24144,22004,-24279,21855,-24414,21705,-24547,21554,-24680,21402,-24812,21249,-24943,21096,-25073,20942,-25202,20787,-25330,20631,-25457,20474,-25583,20317,-25708,20159,-25832,20000,-25955,19840,-26078,19680,-26199,19519,-26319,19357,-26438,19194,-26557,19031,-26674,18867,-26790,18702,-26906,18537,-27020,18371,-27133,18204,-27245,18036,-27356,17868,-27467,17699,-27576,17530,-27684,17360,-27791,17189,-27897,17017,-28002,16845,-28106,16672,-28209,16499,-28310,16325,-28411,16150,-28511,15975,-28609,15799,-28707,15623,-28803,15446,-28898,15268,-28993,15090,-29086,14911,-29178,14732,-29269,14552,-29359,14372,-29447,14191,-29535,14009,-29622,13827,-29707,13645,-29791,13462,-29874,13278,-29956,13094,-30037,12909,-30117,12724,-30196,12539,-30273,12353,-30350,12166,-30425,11980,-30499,11792,-30572,11604,-30644,11416,-30714,11227,-30784,11038,-30852,10849,-30919,10659,-30985,10469,-31050,10278,-31114,10087,-31176,9895,-31237,9703,-31298,9511,-31357,9319,-31414,9126,-31471,8932,-31526,8739,-31581,8545,-31634,8351,-31685,8156,-31736,7961,-31786,7766,-31834,7571,-31881,7375,-31927,7179,-31971,6982,-32015,6786,-32057,6589,-32098,6392,-32138,6195,-32177,5997,-32214,5799,-32250,5601,-32285,5403,-32319,5205,-32351,5006,-32383,4807,-32413,4608,-32442,4409,-32469,4210,-32496,4011,-32521,3811,-32545,3611,-32568,3411,-32589,3211,-32610,3011,-32629,2811,-32647,2610,-32663,2410,-32679,2209,-32693,2009,-32706,1808,-32718,1607,-32728,1406,-32737,1206,-32745,1005,-32752,804,-32758,603,-32762,402,-32765,201,-32767,
-                                                       32767,0,32764,-403,32757,-805,32744,-1207,32727,-1608,32705,-2010,32678,-2411,32646,-2812,32609,-3212,32567,-3612,32520,-4012,32468,-4410,32412,-4808,32350,-5206,32284,-5602,32213,-5998,32137,-6393,32056,-6787,31970,-7180,31880,-7572,31785,-7962,31684,-8352,31580,-8740,31470,-9127,31356,-9512,31236,-9896,31113,-10279,30984,-10660,30851,-11039,30713,-11417,30571,-11793,30424,-12167,30272,-12540,30116,-12910,29955,-13279,29790,-13646,29621,-14010,29446,-14373,29268,-14733,29085,-15091,28897,-15447,28706,-15800,28510,-16151,28309,-16500,28105,-16846,27896,-17190,27683,-17531,27466,-17869,27244,-18205,27019,-18538,26789,-18868,26556,-19195,26318,-19520,26077,-19841,25831,-20160,25582,-20475,25329,-20788,25072,-21097,24811,-21403,24546,-21706,24278,-22005,24006,-22302,23731,-22595,23452,-22884,23169,-23170,22883,-23453,22594,-23732,22301,-24007,22004,-24279,21705,-24547,21402,-24812,21096,-25073,20787,-25330,20474,-25583,20159,-25832,19840,-26078,19519,-26319,19194,-26557,18867,-26790,18537,-27020,18204,-27245,17868,-27467,17530,-27684,17189,-27897,16845,-28106,16499,-28310,16150,-28511,15799,-28707,15446,-28898,15090,-29086,14732,-29269,14372,-29447,14009,-29622,13645,-29791,13278,-29956,12909,-30117,12539,-30273,12166,-30425,11792,-30572,11416,-30714,11038,-30852,10659,-30985,10278,-31114,9895,-31237,9511,-31357,9126,-31471,8739,-31581,8351,-31685,7961,-31786,7571,-31881,7179,-31971,6786,-32057,6392,-32138,5997,-32214,5601,-32285,5205,-32351,4807,-32413,4409,-32469,4011,-32521,3611,-32568,3211,-32610,2811,-32647,2410,-32679,2009,-32706,1607,-32728,1206,-32745,804,-32758,402,-32765,0,-32767,-403,-32765,-805,-32758,-1207,-32745,-1608,-32728,-2010,-32706,-2411,-32679,-2812,-32647,-3212,-32610,-3612,-32568,-4012,-32521,-4410,-32469,-4808,-32413,-5206,-32351,-5602,-32285,-5998,-32214,-6393,-32138,-6787,-32057,-7180,-31971,-7572,-31881,-7962,-31786,-8352,-31685,-8740,-31581,-9127,-31471,-9512,-31357,-9896,-31237,-10279,-31114,-10660,-30985,-11039,-30852,-11417,-30714,-11793,-30572,-12167,-30425,-12540,-30273,-12910,-30117,-13279,-29956,-13646,-29791,-14010,-29622,-14373,-29447,-14733,-29269,-15091,-29086,-15447,-28898,-15800,-28707,-16151,-28511,-16500,-28310,-16846,-28106,-17190,-27897,-17531,-27684,-17869,-27467,-18205,-27245,-18538,-27020,-18868,-26790,-19195,-26557,-19520,-26319,-19841,-26078,-20160,-25832,-20475,-25583,-20788,-25330,-21097,-25073,-21403,-24812,-21706,-24547,-22005,-24279,-22302,-24007,-22595,-23732,-22884,-23453,-23170,-23170,-23453,-22884,-23732,-22595,-24007,-22302,-24279,-22005,-24547,-21706,-24812,-21403,-25073,-21097,-25330,-20788,-25583,-20475,-25832,-20160,-26078,-19841,-26319,-19520,-26557,-19195,-26790,-18868,-27020,-18538,-27245,-18205,-27467,-17869,-27684,-17531,-27897,-17190,-28106,-16846,-28310,-16500,-28511,-16151,-28707,-15800,-28898,-15447,-29086,-15091,-29269,-14733,-29447,-14373,-29622,-14010,-29791,-13646,-29956,-13279,-30117,-12910,-30273,-12540,-30425,-12167,-30572,-11793,-30714,-11417,-30852,-11039,-30985,-10660,-31114,-10279,-31237,-9896,-31357,-9512,-31471,-9127,-31581,-8740,-31685,-8352,-31786,-7962,-31881,-7572,-31971,-7180,-32057,-6787,-32138,-6393,-32214,-5998,-32285,-5602,-32351,-5206,-32413,-4808,-32469,-4410,-32521,-4012,-32568,-3612,-32610,-3212,-32647,-2812,-32679,-2411,-32706,-2010,-32728,-1608,-32745,-1207,-32758,-805,-32765,-403,
-                                                       32767,0,32761,-604,32744,-1207,32717,-1809,32678,-2411,32628,-3012,32567,-3612,32495,-4211,32412,-4808,32318,-5404,32213,-5998,32097,-6590,31970,-7180,31833,-7767,31684,-8352,31525,-8933,31356,-9512,31175,-10088,30984,-10660,30783,-11228,30571,-11793,30349,-12354,30116,-12910,29873,-13463,29621,-14010,29358,-14553,29085,-15091,28802,-15624,28510,-16151,28208,-16673,27896,-17190,27575,-17700,27244,-18205,26905,-18703,26556,-19195,26198,-19681,25831,-20160,25456,-20632,25072,-21097,24679,-21555,24278,-22005,23869,-22449,23452,-22884,23027,-23312,22594,-23732,22153,-24144,21705,-24547,21249,-24943,20787,-25330,20317,-25708,19840,-26078,19357,-26438,18867,-26790,18371,-27133,17868,-27467,17360,-27791,16845,-28106,16325,-28411,15799,-28707,15268,-28993,14732,-29269,14191,-29535,13645,-29791,13094,-30037,12539,-30273,11980,-30499,11416,-30714,10849,-30919,10278,-31114,9703,-31298,9126,-31471,8545,-31634,7961,-31786,7375,-31927,6786,-32057,6195,-32177,5601,-32285,5006,-32383,4409,-32469,3811,-32545,3211,-32610,2610,-32663,2009,-32706,1406,-32737,804,-32758,201,-32767,-403,-32765,-1006,-32752,-1608,-32728,-2210,-32693,-2812,-32647,-3412,-32589,-4012,-32521,-4609,-32442,-5206,-32351,-5800,-32250,-6393,-32138,-6983,-32015,-7572,-31881,-8157,-31736,-8740,-31581,-9320,-31414,-9896,-31237,-10470,-31050,-11039,-30852,-11605,-30644,-12167,-30425,-12725,-30196,-13279,-29956,-13828,-29707,-14373,-29447,-14912,-29178,-15447,-28898,-15976,-28609,-16500,-28310,-17018,-28002,-17531,-27684,-18037,-27356,-18538,-27020,-19032,-26674,-19520,-26319,-20001,-25955,-20475,-25583,-20943,-25202,-21403,-24812,-21856,-24414,-22302,-24007,-22740,-23593,-23170,-23170,-23593,-22740,-24007,-22302,-24414,-21856,-24812,-21403,-25202,-20943,-25583,-20475,-25955,-20001,-26319,-19520,-26674,-19032,-27020,-18538,-27356,-18037,-27684,-17531,-28002,-17018,-28310,-16500,-28609,-15976,-28898,-15447,-29178,-14912,-29447,-14373,-29707,-13828,-29956,-13279,-30196,-12725,-30425,-12167,-30644,-11605,-30852,-11039,-31050,-10470,-31237,-9896,-31414,-9320,-31581,-8740,-31736,-8157,-31881,-7572,-32015,-6983,-32138,-6393,-32250,-5800,-32351,-5206,-32442,-4609,-32521,-4012,-32589,-3412,-32647,-2812,-32693,-2210,-32728,-1608,-32752,-1006,-32765,-403,-32767,201,-32758,804,-32737,1406,-32706,2009,-32663,2610,-32610,3211,-32545,3811,-32469,4409,-32383,5006,-32285,5601,-32177,6195,-32057,6786,-31927,7375,-31786,7961,-31634,8545,-31471,9126,-31298,9703,-31114,10278,-30919,10849,-30714,11416,-30499,11980,-30273,12539,-30037,13094,-29791,13645,-29535,14191,-29269,14732,-28993,15268,-28707,15799,-28411,16325,-28106,16845,-27791,17360,-27467,17868,-27133,18371,-26790,18867,-26438,19357,-26078,19840,-25708,20317,-25330,20787,-24943,21249,-24547,21705,-24144,22153,-23732,22594,-23312,23027,-22884,23452,-22449,23869,-22005,24278,-21555,24679,-21097,25072,-20632,25456,-20160,25831,-19681,26198,-19195,26556,-18703,26905,-18205,27244,-17700,27575,-17190,27896,-16673,28208,-16151,28510,-15624,28802,-15091,29085,-14553,29358,-14010,29621,-13463,29873,-12910,30116,-12354,30349,-11793,30571,-11228,30783,-10660,30984,-10088,31175,-9512,31356,-8933,31525,-8352,31684,-7767,31833,-7180,31970,-6590,32097,-5998,32213,-5404,32318,-4808,32412,-4211,32495,-3612,32567,-3012,32628,-2411,32678,-1809,32717,-1207,32744,-604,32761
-                                                    };
+int16_t tw1024[1536] __attribute__((aligned(32)));
+
 #ifndef __AVX2__
 void dft1024(int16_t *x,int16_t *y,int scale)
 {
@@ -4365,7 +4375,7 @@ void idft1024(int16_t *x,int16_t *y,int scale)
 }
 #endif
 
-int16_t tw2048[2048] __attribute__((aligned(32))) = {32767,0,32766,-101,32766,-202,32765,-302,32764,-403,32763,-503,32761,-604,32759,-704,32757,-805,32754,-905,32751,-1006,32748,-1106,32744,-1207,32740,-1307,32736,-1407,32732,-1508,32727,-1608,32722,-1709,32717,-1809,32711,-1909,32705,-2010,32699,-2110,32692,-2210,32685,-2311,32678,-2411,32670,-2511,32662,-2611,32654,-2712,32646,-2812,32637,-2912,32628,-3012,32618,-3112,32609,-3212,32599,-3312,32588,-3412,32578,-3512,32567,-3612,32556,-3712,32544,-3812,32532,-3912,32520,-4012,32508,-4111,32495,-4211,32482,-4311,32468,-4410,32455,-4510,32441,-4609,32426,-4709,32412,-4808,32397,-4908,32382,-5007,32366,-5107,32350,-5206,32334,-5305,32318,-5404,32301,-5503,32284,-5602,32267,-5701,32249,-5800,32231,-5899,32213,-5998,32194,-6097,32176,-6196,32156,-6294,32137,-6393,32117,-6492,32097,-6590,32077,-6689,32056,-6787,32035,-6885,32014,-6983,31992,-7082,31970,-7180,31948,-7278,31926,-7376,31903,-7474,31880,-7572,31856,-7669,31833,-7767,31809,-7865,31785,-7962,31760,-8060,31735,-8157,31710,-8254,31684,-8352,31659,-8449,31633,-8546,31606,-8643,31580,-8740,31553,-8837,31525,-8933,31498,-9030,31470,-9127,31442,-9223,31413,-9320,31385,-9416,31356,-9512,31326,-9608,31297,-9704,31267,-9800,31236,-9896,31206,-9992,31175,-10088,31144,-10183,31113,-10279,31081,-10374,31049,-10470,31017,-10565,30984,-10660,30951,-10755,30918,-10850,30885,-10945,30851,-11039,30817,-11134,30783,-11228,30748,-11323,30713,-11417,30678,-11511,30643,-11605,30607,-11699,30571,-11793,30535,-11887,30498,-11981,30461,-12074,30424,-12167,30386,-12261,30349,-12354,30311,-12447,30272,-12540,30234,-12633,30195,-12725,30156,-12818,30116,-12910,30076,-13003,30036,-13095,29996,-13187,29955,-13279,29915,-13371,29873,-13463,29832,-13554,29790,-13646,29748,-13737,29706,-13828,29663,-13919,29621,-14010,29577,-14101,29534,-14192,29490,-14282,29446,-14373,29402,-14463,29358,-14553,29313,-14643,29268,-14733,29222,-14823,29177,-14912,29131,-15002,29085,-15091,29038,-15180,28992,-15269,28945,-15358,28897,-15447,28850,-15535,28802,-15624,28754,-15712,28706,-15800,28657,-15888,28608,-15976,28559,-16064,28510,-16151,28460,-16239,28410,-16326,28360,-16413,28309,-16500,28259,-16587,28208,-16673,28156,-16760,28105,-16846,28053,-16932,28001,-17018,27948,-17104,27896,-17190,27843,-17275,27790,-17361,27736,-17446,27683,-17531,27629,-17616,27575,-17700,27520,-17785,27466,-17869,27411,-17953,27355,-18037,27300,-18121,27244,-18205,27188,-18288,27132,-18372,27076,-18455,27019,-18538,26962,-18621,26905,-18703,26847,-18786,26789,-18868,26731,-18950,26673,-19032,26615,-19114,26556,-19195,26497,-19277,26437,-19358,26378,-19439,26318,-19520,26258,-19600,26198,-19681,26137,-19761,26077,-19841,26016,-19921,25954,-20001,25893,-20080,25831,-20160,25769,-20239,25707,-20318,25645,-20397,25582,-20475,25519,-20554,25456,-20632,25392,-20710,25329,-20788,25265,-20865,25201,-20943,25136,-21020,25072,-21097,25007,-21174,24942,-21250,24877,-21327,24811,-21403,24745,-21479,24679,-21555,24613,-21630,24546,-21706,24480,-21781,24413,-21856,24346,-21931,24278,-22005,24211,-22080,24143,-22154,24075,-22228,24006,-22302,23938,-22375,23869,-22449,23800,-22522,23731,-22595,23661,-22667,23592,-22740,23522,-22812,23452,-22884,23382,-22956,23311,-23028,23240,-23099,23169,-23170,23098,-23241,23027,-23312,22955,-23383,22883,-23453,22811,-23523,22739,-23593,22666,-23662,22594,-23732,22521,-23801,22448,-23870,22374,-23939,22301,-24007,22227,-24076,22153,-24144,22079,-24212,22004,-24279,21930,-24347,21855,-24414,21780,-24481,21705,-24547,21629,-24614,21554,-24680,21478,-24746,21402,-24812,21326,-24878,21249,-24943,21173,-25008,21096,-25073,21019,-25137,20942,-25202,20864,-25266,20787,-25330,20709,-25393,20631,-25457,20553,-25520,20474,-25583,20396,-25646,20317,-25708,20238,-25770,20159,-25832,20079,-25894,20000,-25955,19920,-26017,19840,-26078,19760,-26138,19680,-26199,19599,-26259,19519,-26319,19438,-26379,19357,-26438,19276,-26498,19194,-26557,19113,-26616,19031,-26674,18949,-26732,18867,-26790,18785,-26848,18702,-26906,18620,-26963,18537,-27020,18454,-27077,18371,-27133,18287,-27189,18204,-27245,18120,-27301,18036,-27356,17952,-27412,17868,-27467,17784,-27521,17699,-27576,17615,-27630,17530,-27684,17445,-27737,17360,-27791,17274,-27844,17189,-27897,17103,-27949,17017,-28002,16931,-28054,16845,-28106,16759,-28157,16672,-28209,16586,-28260,16499,-28310,16412,-28361,16325,-28411,16238,-28461,16150,-28511,16063,-28560,15975,-28609,15887,-28658,15799,-28707,15711,-28755,15623,-28803,15534,-28851,15446,-28898,15357,-28946,15268,-28993,15179,-29039,15090,-29086,15001,-29132,14911,-29178,14822,-29223,14732,-29269,14642,-29314,14552,-29359,14462,-29403,14372,-29447,14281,-29491,14191,-29535,14100,-29578,14009,-29622,13918,-29664,13827,-29707,13736,-29749,13645,-29791,13553,-29833,13462,-29874,13370,-29916,13278,-29956,13186,-29997,13094,-30037,13002,-30077,12909,-30117,12817,-30157,12724,-30196,12632,-30235,12539,-30273,12446,-30312,12353,-30350,12260,-30387,12166,-30425,12073,-30462,11980,-30499,11886,-30536,11792,-30572,11698,-30608,11604,-30644,11510,-30679,11416,-30714,11322,-30749,11227,-30784,11133,-30818,11038,-30852,10944,-30886,10849,-30919,10754,-30952,10659,-30985,10564,-31018,10469,-31050,10373,-31082,10278,-31114,10182,-31145,10087,-31176,9991,-31207,9895,-31237,9799,-31268,9703,-31298,9607,-31327,9511,-31357,9415,-31386,9319,-31414,9222,-31443,9126,-31471,9029,-31499,8932,-31526,8836,-31554,8739,-31581,8642,-31607,8545,-31634,8448,-31660,8351,-31685,8253,-31711,8156,-31736,8059,-31761,7961,-31786,7864,-31810,7766,-31834,7668,-31857,7571,-31881,7473,-31904,7375,-31927,7277,-31949,7179,-31971,7081,-31993,6982,-32015,6884,-32036,6786,-32057,6688,-32078,6589,-32098,6491,-32118,6392,-32138,6293,-32157,6195,-32177,6096,-32195,5997,-32214,5898,-32232,5799,-32250,5700,-32268,5601,-32285,5502,-32302,5403,-32319,5304,-32335,5205,-32351,5106,-32367,5006,-32383,4907,-32398,4807,-32413,4708,-32427,4608,-32442,4509,-32456,4409,-32469,4310,-32483,4210,-32496,4110,-32509,4011,-32521,3911,-32533,3811,-32545,3711,-32557,3611,-32568,3511,-32579,3411,-32589,3311,-32600,3211,-32610,3111,-32619,3011,-32629,2911,-32638,2811,-32647,2711,-32655,2610,-32663,2510,-32671,2410,-32679,2310,-32686,2209,-32693,2109,-32700,2009,-32706,1908,-32712,1808,-32718,1708,-32723,1607,-32728,1507,-32733,1406,-32737,1306,-32741,1206,-32745,1105,-32749,1005,-32752,904,-32755,804,-32758,703,-32760,603,-32762,502,-32764,402,-32765,301,-32766,201,-32767,100,-32767,0,-32767,-101,-32767,-202,-32767,-302,-32766,-403,-32765,-503,-32764,-604,-32762,-704,-32760,-805,-32758,-905,-32755,-1006,-32752,-1106,-32749,-1207,-32745,-1307,-32741,-1407,-32737,-1508,-32733,-1608,-32728,-1709,-32723,-1809,-32718,-1909,-32712,-2010,-32706,-2110,-32700,-2210,-32693,-2311,-32686,-2411,-32679,-2511,-32671,-2611,-32663,-2712,-32655,-2812,-32647,-2912,-32638,-3012,-32629,-3112,-32619,-3212,-32610,-3312,-32600,-3412,-32589,-3512,-32579,-3612,-32568,-3712,-32557,-3812,-32545,-3912,-32533,-4012,-32521,-4111,-32509,-4211,-32496,-4311,-32483,-4410,-32469,-4510,-32456,-4609,-32442,-4709,-32427,-4808,-32413,-4908,-32398,-5007,-32383,-5107,-32367,-5206,-32351,-5305,-32335,-5404,-32319,-5503,-32302,-5602,-32285,-5701,-32268,-5800,-32250,-5899,-32232,-5998,-32214,-6097,-32195,-6196,-32177,-6294,-32157,-6393,-32138,-6492,-32118,-6590,-32098,-6689,-32078,-6787,-32057,-6885,-32036,-6983,-32015,-7082,-31993,-7180,-31971,-7278,-31949,-7376,-31927,-7474,-31904,-7572,-31881,-7669,-31857,-7767,-31834,-7865,-31810,-7962,-31786,-8060,-31761,-8157,-31736,-8254,-31711,-8352,-31685,-8449,-31660,-8546,-31634,-8643,-31607,-8740,-31581,-8837,-31554,-8933,-31526,-9030,-31499,-9127,-31471,-9223,-31443,-9320,-31414,-9416,-31386,-9512,-31357,-9608,-31327,-9704,-31298,-9800,-31268,-9896,-31237,-9992,-31207,-10088,-31176,-10183,-31145,-10279,-31114,-10374,-31082,-10470,-31050,-10565,-31018,-10660,-30985,-10755,-30952,-10850,-30919,-10945,-30886,-11039,-30852,-11134,-30818,-11228,-30784,-11323,-30749,-11417,-30714,-11511,-30679,-11605,-30644,-11699,-30608,-11793,-30572,-11887,-30536,-11981,-30499,-12074,-30462,-12167,-30425,-12261,-30387,-12354,-30350,-12447,-30312,-12540,-30273,-12633,-30235,-12725,-30196,-12818,-30157,-12910,-30117,-13003,-30077,-13095,-30037,-13187,-29997,-13279,-29956,-13371,-29916,-13463,-29874,-13554,-29833,-13646,-29791,-13737,-29749,-13828,-29707,-13919,-29664,-14010,-29622,-14101,-29578,-14192,-29535,-14282,-29491,-14373,-29447,-14463,-29403,-14553,-29359,-14643,-29314,-14733,-29269,-14823,-29223,-14912,-29178,-15002,-29132,-15091,-29086,-15180,-29039,-15269,-28993,-15358,-28946,-15447,-28898,-15535,-28851,-15624,-28803,-15712,-28755,-15800,-28707,-15888,-28658,-15976,-28609,-16064,-28560,-16151,-28511,-16239,-28461,-16326,-28411,-16413,-28361,-16500,-28310,-16587,-28260,-16673,-28209,-16760,-28157,-16846,-28106,-16932,-28054,-17018,-28002,-17104,-27949,-17190,-27897,-17275,-27844,-17361,-27791,-17446,-27737,-17531,-27684,-17616,-27630,-17700,-27576,-17785,-27521,-17869,-27467,-17953,-27412,-18037,-27356,-18121,-27301,-18205,-27245,-18288,-27189,-18372,-27133,-18455,-27077,-18538,-27020,-18621,-26963,-18703,-26906,-18786,-26848,-18868,-26790,-18950,-26732,-19032,-26674,-19114,-26616,-19195,-26557,-19277,-26498,-19358,-26438,-19439,-26379,-19520,-26319,-19600,-26259,-19681,-26199,-19761,-26138,-19841,-26078,-19921,-26017,-20001,-25955,-20080,-25894,-20160,-25832,-20239,-25770,-20318,-25708,-20397,-25646,-20475,-25583,-20554,-25520,-20632,-25457,-20710,-25393,-20788,-25330,-20865,-25266,-20943,-25202,-21020,-25137,-21097,-25073,-21174,-25008,-21250,-24943,-21327,-24878,-21403,-24812,-21479,-24746,-21555,-24680,-21630,-24614,-21706,-24547,-21781,-24481,-21856,-24414,-21931,-24347,-22005,-24279,-22080,-24212,-22154,-24144,-22228,-24076,-22302,-24007,-22375,-23939,-22449,-23870,-22522,-23801,-22595,-23732,-22667,-23662,-22740,-23593,-22812,-23523,-22884,-23453,-22956,-23383,-23028,-23312,-23099,-23241,-23170,-23170,-23241,-23099,-23312,-23028,-23383,-22956,-23453,-22884,-23523,-22812,-23593,-22740,-23662,-22667,-23732,-22595,-23801,-22522,-23870,-22449,-23939,-22375,-24007,-22302,-24076,-22228,-24144,-22154,-24212,-22080,-24279,-22005,-24347,-21931,-24414,-21856,-24481,-21781,-24547,-21706,-24614,-21630,-24680,-21555,-24746,-21479,-24812,-21403,-24878,-21327,-24943,-21250,-25008,-21174,-25073,-21097,-25137,-21020,-25202,-20943,-25266,-20865,-25330,-20788,-25393,-20710,-25457,-20632,-25520,-20554,-25583,-20475,-25646,-20397,-25708,-20318,-25770,-20239,-25832,-20160,-25894,-20080,-25955,-20001,-26017,-19921,-26078,-19841,-26138,-19761,-26199,-19681,-26259,-19600,-26319,-19520,-26379,-19439,-26438,-19358,-26498,-19277,-26557,-19195,-26616,-19114,-26674,-19032,-26732,-18950,-26790,-18868,-26848,-18786,-26906,-18703,-26963,-18621,-27020,-18538,-27077,-18455,-27133,-18372,-27189,-18288,-27245,-18205,-27301,-18121,-27356,-18037,-27412,-17953,-27467,-17869,-27521,-17785,-27576,-17700,-27630,-17616,-27684,-17531,-27737,-17446,-27791,-17361,-27844,-17275,-27897,-17190,-27949,-17104,-28002,-17018,-28054,-16932,-28106,-16846,-28157,-16760,-28209,-16673,-28260,-16587,-28310,-16500,-28361,-16413,-28411,-16326,-28461,-16239,-28511,-16151,-28560,-16064,-28609,-15976,-28658,-15888,-28707,-15800,-28755,-15712,-28803,-15624,-28851,-15535,-28898,-15447,-28946,-15358,-28993,-15269,-29039,-15180,-29086,-15091,-29132,-15002,-29178,-14912,-29223,-14823,-29269,-14733,-29314,-14643,-29359,-14553,-29403,-14463,-29447,-14373,-29491,-14282,-29535,-14192,-29578,-14101,-29622,-14010,-29664,-13919,-29707,-13828,-29749,-13737,-29791,-13646,-29833,-13554,-29874,-13463,-29916,-13371,-29956,-13279,-29997,-13187,-30037,-13095,-30077,-13003,-30117,-12910,-30157,-12818,-30196,-12725,-30235,-12633,-30273,-12540,-30312,-12447,-30350,-12354,-30387,-12261,-30425,-12167,-30462,-12074,-30499,-11981,-30536,-11887,-30572,-11793,-30608,-11699,-30644,-11605,-30679,-11511,-30714,-11417,-30749,-11323,-30784,-11228,-30818,-11134,-30852,-11039,-30886,-10945,-30919,-10850,-30952,-10755,-30985,-10660,-31018,-10565,-31050,-10470,-31082,-10374,-31114,-10279,-31145,-10183,-31176,-10088,-31207,-9992,-31237,-9896,-31268,-9800,-31298,-9704,-31327,-9608,-31357,-9512,-31386,-9416,-31414,-9320,-31443,-9223,-31471,-9127,-31499,-9030,-31526,-8933,-31554,-8837,-31581,-8740,-31607,-8643,-31634,-8546,-31660,-8449,-31685,-8352,-31711,-8254,-31736,-8157,-31761,-8060,-31786,-7962,-31810,-7865,-31834,-7767,-31857,-7669,-31881,-7572,-31904,-7474,-31927,-7376,-31949,-7278,-31971,-7180,-31993,-7082,-32015,-6983,-32036,-6885,-32057,-6787,-32078,-6689,-32098,-6590,-32118,-6492,-32138,-6393,-32157,-6294,-32177,-6196,-32195,-6097,-32214,-5998,-32232,-5899,-32250,-5800,-32268,-5701,-32285,-5602,-32302,-5503,-32319,-5404,-32335,-5305,-32351,-5206,-32367,-5107,-32383,-5007,-32398,-4908,-32413,-4808,-32427,-4709,-32442,-4609,-32456,-4510,-32469,-4410,-32483,-4311,-32496,-4211,-32509,-4111,-32521,-4012,-32533,-3912,-32545,-3812,-32557,-3712,-32568,-3612,-32579,-3512,-32589,-3412,-32600,-3312,-32610,-3212,-32619,-3112,-32629,-3012,-32638,-2912,-32647,-2812,-32655,-2712,-32663,-2611,-32671,-2511,-32679,-2411,-32686,-2311,-32693,-2210,-32700,-2110,-32706,-2010,-32712,-1909,-32718,-1809,-32723,-1709,-32728,-1608,-32733,-1508,-32737,-1407,-32741,-1307,-32745,-1207,-32749,-1106,-32752,-1006,-32755,-905,-32758,-805,-32760,-704,-32762,-604,-32764,-503,-32765,-403,-32766,-302,-32767,-202,-32767,-101};
+int16_t tw2048[2048] __attribute__((aligned(32)));
 
 #ifndef __AVX2__
 void dft2048(int16_t *x,int16_t *y,int scale)
@@ -4732,7 +4742,9 @@ void idft2048(int16_t *x,int16_t *y,int scale)
 
 #endif
 
-#include "twiddles4096.h"
+
+
+int16_t tw4096[3*2*1024];
 
 #ifndef __AVX2__
 void dft4096(int16_t *x,int16_t *y,int scale)
@@ -4965,7 +4977,7 @@ void idft4096(int16_t *x,int16_t *y,int scale)
 #endif //__AVX2__
 
 
-#include "twiddles8192.h"
+int16_t tw8192[2*4096] __attribute__((aligned(32)));
 
 #ifndef __AVX2__
 void dft8192(int16_t *x,int16_t *y,int scale)
@@ -5154,6 +5166,7 @@ void dft8192(int16_t *x,int16_t *y,int scale)
 
   simd256_q15_t xtmp[1024],*xtmpp,*x256 = (simd256_q15_t *)x;
   simd256_q15_t ytmp[1024],*tw8192_256p=(simd256_q15_t *)tw8192,*y256=(simd256_q15_t *)y,*y256p=(simd256_q15_t *)y;
+
   simd256_q15_t *ytmpp = &ytmp[0];
   int i;
   simd256_q15_t ONE_OVER_SQRT2_Q15_128 = set1_int16_simd256(ONE_OVER_SQRT2_Q15);
@@ -5332,7 +5345,8 @@ void idft8192(int16_t *x,int16_t *y,int scale)
 
 #endif
 
-#include "twiddle1536.h"
+int16_t twa1536[1024],twb1536[1024];
+
 // 512 x 3
 void idft1536(int16_t *input, int16_t *output, int scale)
 {
@@ -5410,10 +5424,11 @@ void dft1536(int16_t *input, int16_t *output, int scale)
     tmpo[1][i] = tmpo[1][i<<1];
     tmpo[2][i] = tmpo[2][i<<1];
     }*/
-
-  //  LOG_M("out0.m","o0",tmpo[0],2048,1,1);
-  //  LOG_M("out1.m","o1",tmpo[1],2048,1,1);
-  //  LOG_M("out2.m","o2",tmpo[2],2048,1,1);
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {
+    LOG_M("dft1536out0.m","o0",tmpo[0],2048,1,1);
+    LOG_M("dft1536out1.m","o1",tmpo[1],2048,1,1);
+    LOG_M("dft1536out2.m","o2",tmpo[2],2048,1,1);
+  }
   for (i=0,i2=0; i<1024; i+=8,i2+=4)  {
     bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
           (simd_q15_t*)(output+i),(simd_q15_t*)(output+1024+i),(simd_q15_t*)(output+2048+i),
@@ -5447,24 +5462,121 @@ void dft1536(int16_t *input, int16_t *output, int scale)
 
 }
 
+int16_t twa3072[2048] __attribute__((aligned(32)));
+int16_t twb3072[2048] __attribute__((aligned(32)));
 // 1024 x 3
-void dft3072(int16_t *input, int16_t *output)
+void dft3072(int16_t *input, int16_t *output,int scale)
 {
+  int i,i2,j;
+  uint32_t tmp[3][1024] __attribute__((aligned(32)));
+  uint32_t tmpo[3][1024] __attribute__((aligned(32)));
+  simd_q15_t *y128p=(simd_q15_t*)output;
+  simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
+
+  for (i=0,j=0; i<1024; i++) {
+    tmp[0][i] = ((uint32_t *)input)[j++];
+    tmp[1][i] = ((uint32_t *)input)[j++];
+    tmp[2][i] = ((uint32_t *)input)[j++];
+  }
+
+  dft1024((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1);
+  dft1024((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1);
+  dft1024((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1);
+
+  for (i=0,i2=0; i<2048; i+=8,i2+=4)  {
+    bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
+          (simd_q15_t*)(output+i),(simd_q15_t*)(output+2048+i),(simd_q15_t*)(output+4096+i),
+          (simd_q15_t*)(twa3072+i),(simd_q15_t*)(twb3072+i));
+  }
+
+  if (scale==1) {
+    for (i=0; i<48; i++) {
+      y128p[0]  = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
+      y128p[1]  = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
+      y128p[2]  = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
+      y128p[3]  = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
+      y128p[4]  = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
+      y128p[5]  = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
+      y128p[6]  = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
+      y128p[7]  = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
+      y128p[8]  = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
+      y128p[9]  = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
+      y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
+      y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
+      y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
+      y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
+      y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
+      y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
+      y128p+=16;
+    }
+  }
 
+  _mm_empty();
+  _m_empty();
 }
 
-void idft3072(int16_t *input, int16_t *output)
+void idft3072(int16_t *input, int16_t *output,int scale)
 {
+  int i,i2,j;
+  uint32_t tmp[3][1024]__attribute__((aligned(32)));
+  uint32_t tmpo[3][1024] __attribute__((aligned(32)));
+  simd_q15_t *y128p=(simd_q15_t*)output;
+  simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
+
+  for (i=0,j=0; i<1024; i++) {
+    tmp[0][i] = ((uint32_t *)input)[j++];
+    tmp[1][i] = ((uint32_t *)input)[j++];
+    tmp[2][i] = ((uint32_t *)input)[j++];
+  }
+
+  idft1024((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1);
+  idft1024((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1);
+  idft1024((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1);
+
+  for (i=0,i2=0; i<2048; i+=8,i2+=4)  {
+    ibfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),((simd_q15_t*)&tmpo[2][i2]),
+          (simd_q15_t*)(output+i),(simd_q15_t*)(output+2048+i),(simd_q15_t*)(output+4096+i),
+          (simd_q15_t*)(twa3072+i),(simd_q15_t*)(twb3072+i));
+  }
+
+
+  if (scale==1) {
+    for (i=0; i<48; i++) {
+      y128p[0]  = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
+      y128p[1]  = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
+      y128p[2]  = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
+      y128p[3]  = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
+      y128p[4]  = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
+      y128p[5]  = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
+      y128p[6]  = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
+      y128p[7]  = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
+      y128p[8]  = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
+      y128p[9]  = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
+      y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
+      y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
+      y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
+      y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
+      y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
+      y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
+      y128p+=16;
+    }
+  }
 
+  _mm_empty();
+  _m_empty();
 }
 
-#include "twiddle6144.h"
 
-void idft6144(int16_t *input, int16_t *output)
+int16_t twa6144[4096] __attribute__((aligned(32)));
+int16_t twb6144[4096] __attribute__((aligned(32)));
+
+void idft6144(int16_t *input, int16_t *output,int scale)
 {
   int i,i2,j;
   uint32_t tmp[3][2048] __attribute__((aligned(32)));
   uint32_t tmpo[3][2048] __attribute__((aligned(32)));
+  simd_q15_t *y128p=(simd_q15_t*)output;
+  simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
 
   for (i=0,j=0; i<2048; i++) {
     tmp[0][i] = ((uint32_t *)input)[j++];
@@ -5476,17 +5588,12 @@ void idft6144(int16_t *input, int16_t *output)
   idft2048((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1);
   idft2048((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1);
 
-  /*
-  for (i=1; i<2048; i++) {
-    tmpo[0][i] = tmpo[0][i<<1];
-    tmpo[1][i] = tmpo[1][i<<1];
-    tmpo[2][i] = tmpo[2][i<<1];
-    }*/
-
-  //  LOG_M("in.m","in",input,6144,1,1);
-  //  LOG_M("out0.m","o0",tmpo[0],2048,1,1);
-  //  LOG_M("out1.m","o1",tmpo[1],2048,1,1);
-  //  LOG_M("out2.m","o2",tmpo[2],2048,1,1);
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {
+    LOG_M("idft6144in.m","in",input,6144,1,1);
+    LOG_M("idft6144out0.m","o0",tmpo[0],2048,1,1);
+    LOG_M("idft6144out1.m","o1",tmpo[1],2048,1,1);
+    LOG_M("idft6144out2.m","o2",tmpo[2],2048,1,1);
+  }
 
   for (i=0,i2=0; i<4096; i+=8,i2+=4)  {
     ibfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),((simd_q15_t*)&tmpo[2][i2]),
@@ -5494,18 +5601,42 @@ void idft6144(int16_t *input, int16_t *output)
 	   (simd_q15_t*)(twa6144+i),(simd_q15_t*)(twb6144+i));
   }
 
-  //  LOG_M("out.m","out",output,6144,1,1);
+
+  if (scale==1) {
+    for (i=0; i<96; i++) {
+      y128p[0]  = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
+      y128p[1]  = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
+      y128p[2]  = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
+      y128p[3]  = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
+      y128p[4]  = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
+      y128p[5]  = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
+      y128p[6]  = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
+      y128p[7]  = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
+      y128p[8]  = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
+      y128p[9]  = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
+      y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
+      y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
+      y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
+      y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
+      y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
+      y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
+      y128p+=16;
+    }
+  }
+
   _mm_empty();
   _m_empty();
 
 }
 
 
-void dft6144(int16_t *input, int16_t *output)
+void dft6144(int16_t *input, int16_t *output,int scale)
 {
   int i,i2,j;
   uint32_t tmp[3][2048] __attribute__((aligned(32)));
   uint32_t tmpo[3][2048] __attribute__((aligned(32)));
+  simd_q15_t *y128p=(simd_q15_t*)output;
+  simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
 
   for (i=0,j=0; i<2048; i++) {
     tmp[0][i] = ((uint32_t *)input)[j++];
@@ -5523,29 +5654,55 @@ void dft6144(int16_t *input, int16_t *output)
     tmpo[1][i] = tmpo[1][i<<1];
     tmpo[2][i] = tmpo[2][i<<1];
     }*/
-
-  //  LOG_M("out0.m","o0",tmpo[0],2048,1,1);
-  //  LOG_M("out1.m","o1",tmpo[1],2048,1,1);
-  //  LOG_M("out2.m","o2",tmpo[2],2048,1,1);
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {
+    LOG_M("ft6144out0.m","o0",tmpo[0],2048,1,1);
+    LOG_M("ft6144out1.m","o1",tmpo[1],2048,1,1);
+    LOG_M("ft6144out2.m","o2",tmpo[2],2048,1,1);
+  }
   for (i=0,i2=0; i<4096; i+=8,i2+=4)  {
     bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
           (simd_q15_t*)(output+i),(simd_q15_t*)(output+4096+i),(simd_q15_t*)(output+8192+i),
           (simd_q15_t*)(twa6144+i),(simd_q15_t*)(twb6144+i));
   }
 
+  if (scale==1) {
+    for (i=0; i<96; i++) {
+      y128p[0]  = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
+      y128p[1]  = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
+      y128p[2]  = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
+      y128p[3]  = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
+      y128p[4]  = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
+      y128p[5]  = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
+      y128p[6]  = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
+      y128p[7]  = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
+      y128p[8]  = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
+      y128p[9]  = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
+      y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
+      y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
+      y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
+      y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
+      y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
+      y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
+      y128p+=16;
+    }
+  }
+  
   _mm_empty();
   _m_empty();
 
 }
 
-#include "twiddle12288.h"
 
+int16_t twa12288[8192] __attribute__((aligned(32)));
+int16_t twb12288[8192] __attribute__((aligned(32)));
 // 4096 x 3
-void dft12288(int16_t *input, int16_t *output)
+void dft12288(int16_t *input, int16_t *output,int scale)
 {
   int i,i2,j;
   uint32_t tmp[3][4096] __attribute__((aligned(32)));
   uint32_t tmpo[3][4096] __attribute__((aligned(32)));
+  simd_q15_t *y128p=(simd_q15_t*)output;
+  simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
 
   for (i=0,j=0; i<4096; i++) {
     tmp[0][i] = ((uint32_t *)input)[j++];
@@ -5553,35 +5710,59 @@ void dft12288(int16_t *input, int16_t *output)
     tmp[2][i] = ((uint32_t *)input)[j++];
   }
 
-  dft4096((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1);
-  dft4096((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1);
-  dft4096((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1);
+  dft4096((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),scale);
+  dft4096((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),scale);
+  dft4096((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),scale);
   /*
   for (i=1; i<4096; i++) {
     tmpo[0][i] = tmpo[0][i<<1];
     tmpo[1][i] = tmpo[1][i<<1];
     tmpo[2][i] = tmpo[2][i<<1];
     }*/
-
-  //  LOG_M("out0.m","o0",tmpo[0],4096,1,1);
-  //  LOG_M("out1.m","o1",tmpo[1],4096,1,1);
-  //  LOG_M("out2.m","o2",tmpo[2],4096,1,1);
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {
+    LOG_M("dft12288out0.m","o0",tmpo[0],4096,1,1);
+    LOG_M("dft12288out1.m","o1",tmpo[1],4096,1,1);
+    LOG_M("dft12288out2.m","o2",tmpo[2],4096,1,1);
+  }
   for (i=0,i2=0; i<8192; i+=8,i2+=4)  {
     bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
           (simd_q15_t*)(output+i),(simd_q15_t*)(output+8192+i),(simd_q15_t*)(output+16384+i),
           (simd_q15_t*)(twa12288+i),(simd_q15_t*)(twb12288+i));
   }
 
+  if (scale==1) {
+    for (i=0; i<192; i++) {
+      y128p[0]  = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
+      y128p[1]  = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
+      y128p[2]  = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
+      y128p[3]  = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
+      y128p[4]  = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
+      y128p[5]  = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
+      y128p[6]  = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
+      y128p[7]  = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
+      y128p[8]  = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
+      y128p[9]  = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
+      y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
+      y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
+      y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
+      y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
+      y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
+      y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
+      y128p+=16;
+    }
+  }
   _mm_empty();
   _m_empty();
 
 }
 
-void idft12288(int16_t *input, int16_t *output)
+void idft12288(int16_t *input, int16_t *output,int scale)
 {
   int i,i2,j;
   uint32_t tmp[3][4096] __attribute__((aligned(32)));
   uint32_t tmpo[3][4096] __attribute__((aligned(32)));
+  simd_q15_t *y128p=(simd_q15_t*)output;
+  simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
 
   for (i=0,j=0; i<4096; i++) {
     tmp[0][i] = ((uint32_t *)input)[j++];
@@ -5590,34 +5771,62 @@ void idft12288(int16_t *input, int16_t *output)
   }
 
 
-  idft4096((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1);
-  idft4096((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1);
-  idft4096((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1);
-  /*
-    LOG_M("in.m","in",input,12288,1,1);
-    LOG_M("out0.m","o0",tmpo[0],4096,1,1);
-    LOG_M("out1.m","o1",tmpo[1],4096,1,1);
-    LOG_M("out2.m","o2",tmpo[2],4096,1,1);
-  */
+
+  idft4096((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),scale);
+  idft4096((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),scale);
+  idft4096((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),scale);
+
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {
+    LOG_M("idft12288in.m","in",input,12288,1,1);
+    LOG_M("idft12288out0.m","o0",tmpo[0],4096,1,1);
+    LOG_M("idft12288out1.m","o1",tmpo[1],4096,1,1);
+    LOG_M("idft12288out2.m","o2",tmpo[2],4096,1,1);
+  }
+
   for (i=0,i2=0; i<8192; i+=8,i2+=4)  {
     ibfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),((simd_q15_t*)&tmpo[2][i2]),
           (simd_q15_t*)(output+i),(simd_q15_t*)(output+8192+i),(simd_q15_t*)(output+16384+i),
           (simd_q15_t*)(twa12288+i),(simd_q15_t*)(twb12288+i));
   }
 
+  if (scale==1) {
+    for (i=0; i<192; i++) {
+      y128p[0]  = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
+      y128p[1]  = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
+      y128p[2]  = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
+      y128p[3]  = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
+      y128p[4]  = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
+      y128p[5]  = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
+      y128p[6]  = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
+      y128p[7]  = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
+      y128p[8]  = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
+      y128p[9]  = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
+      y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
+      y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
+      y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
+      y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
+      y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
+      y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
+      y128p+=16;
+    }
+  }
   _mm_empty();
   _m_empty();
-
-  //  LOG_M("out.m","out",output,6144,1,1);
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {
+     LOG_M("idft12288out.m","out",output,6144,1,1);
+  }
 }
 
-#include "twiddle18432.h"
+int16_t twa18432[12288] __attribute__((aligned(32)));
+int16_t twb18432[12288] __attribute__((aligned(32)));
 // 6144 x 3
-void dft18432(int16_t *input, int16_t *output) {
+void dft18432(int16_t *input, int16_t *output,int scale) {
 
   int i,i2,j;
   uint32_t tmp[3][6144] __attribute__((aligned(32)));
   uint32_t tmpo[3][6144] __attribute__((aligned(32)));
+  simd_q15_t *y128p=(simd_q15_t*)output;
+  simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
 
   for (i=0,j=0; i<6144; i++) {
     tmp[0][i] = ((uint32_t *)input)[j++];
@@ -5625,25 +5834,47 @@ void dft18432(int16_t *input, int16_t *output) {
     tmp[2][i] = ((uint32_t *)input)[j++];
   }
 
-  dft6144((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]));
-  dft6144((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]));
-  dft6144((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]));
+  dft6144((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),scale);
+  dft6144((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),scale);
+  dft6144((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),scale);
 
   for (i=0,i2=0; i<12288; i+=8,i2+=4)  {
     bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
           (simd_q15_t*)(output+i),(simd_q15_t*)(output+12288+i),(simd_q15_t*)(output+24576+i),
           (simd_q15_t*)(twa18432+i),(simd_q15_t*)(twb18432+i));
   }
-
+  if (scale==1) {
+    for (i=0; i<288; i++) {
+      y128p[0]  = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
+      y128p[1]  = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
+      y128p[2]  = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
+      y128p[3]  = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
+      y128p[4]  = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
+      y128p[5]  = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
+      y128p[6]  = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
+      y128p[7]  = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
+      y128p[8]  = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
+      y128p[9]  = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
+      y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
+      y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
+      y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
+      y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
+      y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
+      y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
+      y128p+=16;
+    }
+  }
   _mm_empty();
   _m_empty();
 }
 
-void idft18432(int16_t *input, int16_t *output) {
+void idft18432(int16_t *input, int16_t *output,int scale) {
 
   int i,i2,j;
   uint32_t tmp[3][6144] __attribute__((aligned(32)));
   uint32_t tmpo[3][6144] __attribute__((aligned(32)));
+  simd_q15_t *y128p=(simd_q15_t*)output;
+  simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
 
   for (i=0,j=0; i<6144; i++) {
     tmp[0][i] = ((uint32_t *)input)[j++];
@@ -5651,28 +5882,52 @@ void idft18432(int16_t *input, int16_t *output) {
     tmp[2][i] = ((uint32_t *)input)[j++];
   }
 
-  idft6144((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]));
-  idft6144((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]));
-  idft6144((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]));
+  idft6144((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),scale);
+  idft6144((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),scale);
+  idft6144((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),scale);
 
   for (i=0,i2=0; i<12288; i+=8,i2+=4)  {
     ibfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
 	   (simd_q15_t*)(output+i),(simd_q15_t*)(output+12288+i),(simd_q15_t*)(output+24576+i),
 	   (simd_q15_t*)(twa18432+i),(simd_q15_t*)(twb18432+i));
   }
-
-  _mm_empty();
-  _m_empty();
-}
-
-#include "twiddle24576.h"
-// 8192 x 3
-void dft24576(int16_t *input, int16_t *output)
-{
-  int i,i2,j;
-  uint32_t tmp[3][8192] __attribute__((aligned(32)));
-  uint32_t tmpo[3][8192] __attribute__((aligned(32)));
-
+  if (scale==1) {
+    for (i=0; i<288; i++) {
+      y128p[0]  = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
+      y128p[1]  = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
+      y128p[2]  = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
+      y128p[3]  = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
+      y128p[4]  = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
+      y128p[5]  = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
+      y128p[6]  = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
+      y128p[7]  = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
+      y128p[8]  = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
+      y128p[9]  = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
+      y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
+      y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
+      y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
+      y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
+      y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
+      y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
+      y128p+=16;
+    }
+  }
+  _mm_empty();
+  _m_empty();
+}
+
+
+int16_t twa24576[16384] __attribute__((aligned(32)));
+int16_t twb24576[16384] __attribute__((aligned(32)));
+// 8192 x 3
+void dft24576(int16_t *input, int16_t *output,int scale)
+{
+  int i,i2,j;
+  uint32_t tmp[3][8192] __attribute__((aligned(32)));
+  uint32_t tmpo[3][8192] __attribute__((aligned(32)));
+  simd_q15_t *y128p=(simd_q15_t*)output;
+  simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
+
   for (i=0,j=0; i<8192; i++) {
     tmp[0][i] = ((uint32_t *)input)[j++];
     tmp[1][i] = ((uint32_t *)input)[j++];
@@ -5688,27 +5943,53 @@ void dft24576(int16_t *input, int16_t *output)
     tmpo[1][i] = tmpo[1][i<<1];
     tmpo[2][i] = tmpo[2][i<<1];
     }*/
-
-  //   LOG_M("out0.m","o0",tmpo[0],8192,1,1);
-  //    LOG_M("out1.m","o1",tmpo[1],8192,1,1);
-  //    LOG_M("out2.m","o2",tmpo[2],8192,1,1);
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {
+    LOG_M("dft24576out0.m","o0",tmpo[0],8192,1,1);
+    LOG_M("dft24576out1.m","o1",tmpo[1],8192,1,1);
+    LOG_M("dft24576out2.m","o2",tmpo[2],8192,1,1);
+  }
   for (i=0,i2=0; i<16384; i+=8,i2+=4)  {
     bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
           (simd_q15_t*)(output+i),(simd_q15_t*)(output+16384+i),(simd_q15_t*)(output+32768+i),
           (simd_q15_t*)(twa24576+i),(simd_q15_t*)(twb24576+i));
   }
 
+
+  if (scale==1) {
+    for (i=0; i<384; i++) {
+      y128p[0]  = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
+      y128p[1]  = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
+      y128p[2]  = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
+      y128p[3]  = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
+      y128p[4]  = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
+      y128p[5]  = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
+      y128p[6]  = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
+      y128p[7]  = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
+      y128p[8]  = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
+      y128p[9]  = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
+      y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
+      y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
+      y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
+      y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
+      y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
+      y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
+      y128p+=16;
+    }
+  }
   _mm_empty();
   _m_empty();
-
-  //  LOG_M("out.m","out",output,24576,1,1);
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {
+     LOG_M("out.m","out",output,24576,1,1);
+  }
 }
 
-void idft24576(int16_t *input, int16_t *output)
+void idft24576(int16_t *input, int16_t *output,int scale)
 {
   int i,i2,j;
   uint32_t tmp[3][8192] __attribute__((aligned(32)));
   uint32_t tmpo[3][8192] __attribute__((aligned(32)));
+  simd_q15_t *y128p=(simd_q15_t*)output;
+  simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15);
 
   for (i=0,j=0; i<8192; i++) {
     tmp[0][i] = ((uint32_t *)input)[j++];
@@ -5720,23 +6001,45 @@ void idft24576(int16_t *input, int16_t *output)
   idft8192((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1);
   idft8192((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1);
   
-  /*
-    LOG_M("in.m","in",input,24576,1,1);
-    LOG_M("out0.m","o0",tmpo[0],8192,1,1);
-    LOG_M("out1.m","o1",tmpo[1],8192,1,1);
-    LOG_M("out2.m","o2",tmpo[2],8192,1,1);
-  */
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {
+    LOG_M("idft24576in.m","in",input,24576,1,1);
+    LOG_M("idft24576out0.m","o0",tmpo[0],8192,1,1);
+    LOG_M("idft24576out1.m","o1",tmpo[1],8192,1,1);
+    LOG_M("idft24576out2.m","o2",tmpo[2],8192,1,1);
+  }
 
   for (i=0,i2=0; i<16384; i+=8,i2+=4)  {
     ibfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),((simd_q15_t*)&tmpo[2][i2]),
           (simd_q15_t*)(output+i),(simd_q15_t*)(output+16384+i),(simd_q15_t*)(output+32768+i),
           (simd_q15_t*)(twa24576+i),(simd_q15_t*)(twb24576+i));
   }
-
+  if (scale==1) {
+    for (i=0; i<384; i++) {
+      y128p[0]  = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128);
+      y128p[1]  = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128);
+      y128p[2]  = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128);
+      y128p[3]  = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128);
+      y128p[4]  = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128);
+      y128p[5]  = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128);
+      y128p[6]  = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128);
+      y128p[7]  = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128);
+      y128p[8]  = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128);
+      y128p[9]  = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128);
+      y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128);
+      y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128);
+      y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128);
+      y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128);
+      y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128);
+      y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128);
+      y128p+=16;
+    }
+  }
   _mm_empty();
   _m_empty();
 
-  //  LOG_M("out.m","out",output,24576,1,1);
+  if (LOG_DUMPFLAG(DEBUG_DFT)) {
+    LOG_M("idft24576out.m","out",output,24576,1,1);
+  }
 }
 
 ///  THIS SECTION IS FOR ALL PUSCH DFTS (i.e. radix 2^a * 3^b * 4^c * 5^d)
@@ -6111,23 +6414,7 @@ void dft12_simd256(int16_t *x,int16_t *y)
 
 #endif
 
-static int16_t tw24[88]__attribute__((aligned(32))) = {31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                       28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                       23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                       16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                       8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                       0,-32767,0,-32767,0,-32767,0,-32767,
-                                                       -8480,-31650,-8480,-31650,-8480,-31650,-8480,-31650,
-                                                       -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                       -23169,-23169,-23169,-23169,-23169,-23169,-23169,-23169,
-                                                       -28377,-16383,-28377,-16383,-28377,-16383,-28377,-16383,
-                                                       -31650,-8480,-31650,-8480,-31650,-8480,-31650,-8480
-                                                      };
-
-//static simd_q15_t ytmp128array[300];
-//static simd_q15_t ytmp128array2[300];
-//static simd_q15_t ytmp128array3[300];
-//static simd_q15_t x2128array[300];
+static int16_t tw24[88]__attribute__((aligned(32)));
 
 void dft24(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
@@ -6222,31 +6509,8 @@ void dft24(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
-static int16_t twa36[88]__attribute__((aligned(32))) = {32269,-5689,32269,-5689,32269,-5689,32269,-5689,
-                                                        30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                        28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                        25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                        21062,-25100,21062,-25100,21062,-25100,21062,-25100,
-                                                        16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                        11206,-30790,11206,-30790,11206,-30790,11206,-30790,
-                                                        5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                        0,-32767,0,-32767,0,-32767,0,-32767,
-                                                        -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                        -11206,-30790,-11206,-30790,-11206,-30790,-11206,-30790
-                                                       };
-
-static int16_t twb36[88]__attribute__((aligned(32))) = {30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                        25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                        16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                        5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                        -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                        -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                        -25100,-21062,-25100,-21062,-25100,-21062,-25100,-21062,
-                                                        -30790,-11206,-30790,-11206,-30790,-11206,-30790,-11206,
-                                                        -32767,0,-32767,0,-32767,0,-32767,0,
-                                                        -30790,11206,-30790,11206,-30790,11206,-30790,11206,
-                                                        -25100,21062,-25100,21062,-25100,21062,-25100,21062
-                                                       };
+static int16_t twa36[88]__attribute__((aligned(32)));
+static int16_t twb36[88]__attribute__((aligned(32)));
 
 void dft36(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
@@ -6368,44 +6632,9 @@ void dft36(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
-static int16_t twa48[88]__attribute__((aligned(32))) = {32486,-4276,32486,-4276,32486,-4276,32486,-4276,
-                                                        31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                        30272,-12539,30272,-12539,30272,-12539,30272,-12539,
-                                                        28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                        25995,-19947,25995,-19947,25995,-19947,25995,-19947,
-                                                        23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                        19947,-25995,19947,-25995,19947,-25995,19947,-25995,
-                                                        16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                        12539,-30272,12539,-30272,12539,-30272,12539,-30272,
-                                                        8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                        4276,-32486,4276,-32486,4276,-32486,4276,-32486
-                                                       };
-
-static int16_t twb48[88]__attribute__((aligned(32))) = {31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                        28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                        23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                        16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                        8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                        0,-32767,0,-32767,0,-32767,0,-32767,
-                                                        -8480,-31650,-8480,-31650,-8480,-31650,-8480,-31650,
-                                                        -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                        -23169,-23169,-23169,-23169,-23169,-23169,-23169,-23169,
-                                                        -28377,-16383,-28377,-16383,-28377,-16383,-28377,-16383,
-                                                        -31650,-8480,-31650,-8480,-31650,-8480,-31650,-8480
-                                                       };
-
-static int16_t twc48[88]__attribute__((aligned(32))) = {30272,-12539,30272,-12539,30272,-12539,30272,-12539,
-                                                        23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                        12539,-30272,12539,-30272,12539,-30272,12539,-30272,
-                                                        0,-32767,0,-32767,0,-32767,0,-32767,
-                                                        -12539,-30272,-12539,-30272,-12539,-30272,-12539,-30272,
-                                                        -23169,-23169,-23169,-23169,-23169,-23169,-23169,-23169,
-                                                        -30272,-12539,-30272,-12539,-30272,-12539,-30272,-12539,
-                                                        -32767,0,-32767,0,-32767,0,-32767,0,
-                                                        -30272,12539,-30272,12539,-30272,12539,-30272,12539,
-                                                        -23169,23169,-23169,23169,-23169,23169,-23169,23169,
-                                                        -12539,30272,-12539,30272,-12539,30272,-12539,30272
-                                                       };
+static int16_t twa48[88]__attribute__((aligned(32)));
+static int16_t twb48[88]__attribute__((aligned(32)));
+static int16_t twc48[88]__attribute__((aligned(32)));
 
 void dft48(int16_t *x, int16_t *y,unsigned char scale_flag)
 {
@@ -6564,54 +6793,10 @@ void dft48(int16_t *x, int16_t *y,unsigned char scale_flag)
 
 }
 
-static int16_t twa60[88]__attribute__((aligned(32))) = {32587,-3425,32587,-3425,32587,-3425,32587,-3425,
-                                                        32050,-6812,32050,-6812,32050,-6812,32050,-6812,
-                                                        31163,-10125,31163,-10125,31163,-10125,31163,-10125,
-                                                        29934,-13327,29934,-13327,29934,-13327,29934,-13327,
-                                                        28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                        26509,-19259,26509,-19259,26509,-19259,26509,-19259,
-                                                        24350,-21925,24350,-21925,24350,-21925,24350,-21925,
-                                                        21925,-24350,21925,-24350,21925,-24350,21925,-24350,
-                                                        19259,-26509,19259,-26509,19259,-26509,19259,-26509,
-                                                        16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                        13327,-29934,13327,-29934,13327,-29934,13327,-29934
-                                                       };
-static int16_t twb60[88]__attribute__((aligned(32))) = {32050,-6812,32050,-6812,32050,-6812,32050,-6812,
-                                                        29934,-13327,29934,-13327,29934,-13327,29934,-13327,
-                                                        26509,-19259,26509,-19259,26509,-19259,26509,-19259,
-                                                        21925,-24350,21925,-24350,21925,-24350,21925,-24350,
-                                                        16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                        10125,-31163,10125,-31163,10125,-31163,10125,-31163,
-                                                        3425,-32587,3425,-32587,3425,-32587,3425,-32587,
-                                                        -3425,-32587,-3425,-32587,-3425,-32587,-3425,-32587,
-                                                        -10125,-31163,-10125,-31163,-10125,-31163,-10125,-31163,
-                                                        -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                        -21925,-24350,-21925,-24350,-21925,-24350,-21925,-24350
-                                                       };
-static int16_t twc60[88]__attribute__((aligned(32))) = {31163,-10125,31163,-10125,31163,-10125,31163,-10125,
-                                                        26509,-19259,26509,-19259,26509,-19259,26509,-19259,
-                                                        19259,-26509,19259,-26509,19259,-26509,19259,-26509,
-                                                        10125,-31163,10125,-31163,10125,-31163,10125,-31163,
-                                                        0,-32767,0,-32767,0,-32767,0,-32767,
-                                                        -10125,-31163,-10125,-31163,-10125,-31163,-10125,-31163,
-                                                        -19259,-26509,-19259,-26509,-19259,-26509,-19259,-26509,
-                                                        -26509,-19259,-26509,-19259,-26509,-19259,-26509,-19259,
-                                                        -31163,-10125,-31163,-10125,-31163,-10125,-31163,-10125,
-                                                        -32767,0,-32767,0,-32767,0,-32767,0,
-                                                        -31163,10125,-31163,10125,-31163,10125,-31163,10125
-                                                       };
-static int16_t twd60[88]__attribute__((aligned(32))) = {29934,-13327,29934,-13327,29934,-13327,29934,-13327,
-                                                        21925,-24350,21925,-24350,21925,-24350,21925,-24350,
-                                                        10125,-31163,10125,-31163,10125,-31163,10125,-31163,
-                                                        -3425,-32587,-3425,-32587,-3425,-32587,-3425,-32587,
-                                                        -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                        -26509,-19259,-26509,-19259,-26509,-19259,-26509,-19259,
-                                                        -32050,-6812,-32050,-6812,-32050,-6812,-32050,-6812,
-                                                        -32050,6812,-32050,6812,-32050,6812,-32050,6812,
-                                                        -26509,19259,-26509,19259,-26509,19259,-26509,19259,
-                                                        -16383,28377,-16383,28377,-16383,28377,-16383,28377,
-                                                        -3425,32587,-3425,32587,-3425,32587,-3425,32587
-                                                       };
+static int16_t twa60[88]__attribute__((aligned(32)));
+static int16_t twb60[88]__attribute__((aligned(32)));
+static int16_t twc60[88]__attribute__((aligned(32)));
+static int16_t twd60[88]__attribute__((aligned(32)));
 
 void dft60(int16_t *x,int16_t *y,unsigned char scale)
 {
@@ -6793,42 +6978,7 @@ void dft60(int16_t *x,int16_t *y,unsigned char scale)
 
 }
 
-static int16_t tw72[280]__attribute__((aligned(32))) = {32642,-2855,32642,-2855,32642,-2855,32642,-2855,
-                                                        32269,-5689,32269,-5689,32269,-5689,32269,-5689,
-                                                        31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                        30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                        29696,-13847,29696,-13847,29696,-13847,29696,-13847,
-                                                        28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                        26841,-18794,26841,-18794,26841,-18794,26841,-18794,
-                                                        25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                        23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                        21062,-25100,21062,-25100,21062,-25100,21062,-25100,
-                                                        18794,-26841,18794,-26841,18794,-26841,18794,-26841,
-                                                        16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                        13847,-29696,13847,-29696,13847,-29696,13847,-29696,
-                                                        11206,-30790,11206,-30790,11206,-30790,11206,-30790,
-                                                        8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                        5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                        2855,-32642,2855,-32642,2855,-32642,2855,-32642,
-                                                        0,-32767,0,-32767,0,-32767,0,-32767,
-                                                        -2855,-32642,-2855,-32642,-2855,-32642,-2855,-32642,
-                                                        -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                        -8480,-31650,-8480,-31650,-8480,-31650,-8480,-31650,
-                                                        -11206,-30790,-11206,-30790,-11206,-30790,-11206,-30790,
-                                                        -13847,-29696,-13847,-29696,-13847,-29696,-13847,-29696,
-                                                        -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                        -18794,-26841,-18794,-26841,-18794,-26841,-18794,-26841,
-                                                        -21062,-25100,-21062,-25100,-21062,-25100,-21062,-25100,
-                                                        -23169,-23169,-23169,-23169,-23169,-23169,-23169,-23169,
-                                                        -25100,-21062,-25100,-21062,-25100,-21062,-25100,-21062,
-                                                        -26841,-18794,-26841,-18794,-26841,-18794,-26841,-18794,
-                                                        -28377,-16383,-28377,-16383,-28377,-16383,-28377,-16383,
-                                                        -29696,-13847,-29696,-13847,-29696,-13847,-29696,-13847,
-                                                        -30790,-11206,-30790,-11206,-30790,-11206,-30790,-11206,
-                                                        -31650,-8480,-31650,-8480,-31650,-8480,-31650,-8480,
-                                                        -32269,-5689,-32269,-5689,-32269,-5689,-32269,-5689,
-                                                        -32642,-2855,-32642,-2855,-32642,-2855,-32642,-2855,
-                                                       };
+static int16_t tw72[280]__attribute__((aligned(32)));
 
 void dft72(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
@@ -6872,54 +7022,7 @@ void dft72(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
-static int16_t tw96[376]__attribute__((aligned(32))) = {32696,-2143,32696,-2143,32696,-2143,32696,-2143,
-                                                        32486,-4276,32486,-4276,32486,-4276,32486,-4276,
-                                                        32137,-6392,32137,-6392,32137,-6392,32137,-6392,
-                                                        31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                        31028,-10532,31028,-10532,31028,-10532,31028,-10532,
-                                                        30272,-12539,30272,-12539,30272,-12539,30272,-12539,
-                                                        29387,-14492,29387,-14492,29387,-14492,29387,-14492,
-                                                        28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                        27244,-18204,27244,-18204,27244,-18204,27244,-18204,
-                                                        25995,-19947,25995,-19947,25995,-19947,25995,-19947,
-                                                        24635,-21604,24635,-21604,24635,-21604,24635,-21604,
-                                                        23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                        21604,-24635,21604,-24635,21604,-24635,21604,-24635,
-                                                        19947,-25995,19947,-25995,19947,-25995,19947,-25995,
-                                                        18204,-27244,18204,-27244,18204,-27244,18204,-27244,
-                                                        16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                        14492,-29387,14492,-29387,14492,-29387,14492,-29387,
-                                                        12539,-30272,12539,-30272,12539,-30272,12539,-30272,
-                                                        10532,-31028,10532,-31028,10532,-31028,10532,-31028,
-                                                        8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                        6392,-32137,6392,-32137,6392,-32137,6392,-32137,
-                                                        4276,-32486,4276,-32486,4276,-32486,4276,-32486,
-                                                        2143,-32696,2143,-32696,2143,-32696,2143,-32696,
-                                                        0,-32767,0,-32767,0,-32767,0,-32767,
-                                                        -2143,-32696,-2143,-32696,-2143,-32696,-2143,-32696,
-                                                        -4276,-32486,-4276,-32486,-4276,-32486,-4276,-32486,
-                                                        -6392,-32137,-6392,-32137,-6392,-32137,-6392,-32137,
-                                                        -8480,-31650,-8480,-31650,-8480,-31650,-8480,-31650,
-                                                        -10532,-31028,-10532,-31028,-10532,-31028,-10532,-31028,
-                                                        -12539,-30272,-12539,-30272,-12539,-30272,-12539,-30272,
-                                                        -14492,-29387,-14492,-29387,-14492,-29387,-14492,-29387,
-                                                        -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                        -18204,-27244,-18204,-27244,-18204,-27244,-18204,-27244,
-                                                        -19947,-25995,-19947,-25995,-19947,-25995,-19947,-25995,
-                                                        -21604,-24635,-21604,-24635,-21604,-24635,-21604,-24635,
-                                                        -23169,-23169,-23169,-23169,-23169,-23169,-23169,-23169,
-                                                        -24635,-21604,-24635,-21604,-24635,-21604,-24635,-21604,
-                                                        -25995,-19947,-25995,-19947,-25995,-19947,-25995,-19947,
-                                                        -27244,-18204,-27244,-18204,-27244,-18204,-27244,-18204,
-                                                        -28377,-16383,-28377,-16383,-28377,-16383,-28377,-16383,
-                                                        -29387,-14492,-29387,-14492,-29387,-14492,-29387,-14492,
-                                                        -30272,-12539,-30272,-12539,-30272,-12539,-30272,-12539,
-                                                        -31028,-10532,-31028,-10532,-31028,-10532,-31028,-10532,
-                                                        -31650,-8480,-31650,-8480,-31650,-8480,-31650,-8480,
-                                                        -32137,-6392,-32137,-6392,-32137,-6392,-32137,-6392,
-                                                        -32486,-4276,-32486,-4276,-32486,-4276,-32486,-4276,
-                                                        -32696,-2143,-32696,-2143,-32696,-2143,-32696,-2143
-                                                       };
+static int16_t tw96[376]__attribute__((aligned(32)));
 
 void dft96(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
@@ -6965,84 +7068,11 @@ void dft96(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
-static int16_t twa108[280]__attribute__((aligned(32))) = {32711,-1905,32711,-1905,32711,-1905,32711,-1905,
-                                                          32545,-3804,32545,-3804,32545,-3804,32545,-3804,
-                                                          32269,-5689,32269,-5689,32269,-5689,32269,-5689,
-                                                          31883,-7556,31883,-7556,31883,-7556,31883,-7556,
-                                                          31390,-9397,31390,-9397,31390,-9397,31390,-9397,
-                                                          30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                          30087,-12978,30087,-12978,30087,-12978,30087,-12978,
-                                                          29281,-14705,29281,-14705,29281,-14705,29281,-14705,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          27376,-18005,27376,-18005,27376,-18005,27376,-18005,
-                                                          26283,-19567,26283,-19567,26283,-19567,26283,-19567,
-                                                          25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                          23833,-22486,23833,-22486,23833,-22486,23833,-22486,
-                                                          22486,-23833,22486,-23833,22486,-23833,22486,-23833,
-                                                          21062,-25100,21062,-25100,21062,-25100,21062,-25100,
-                                                          19567,-26283,19567,-26283,19567,-26283,19567,-26283,
-                                                          18005,-27376,18005,-27376,18005,-27376,18005,-27376,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          14705,-29281,14705,-29281,14705,-29281,14705,-29281,
-                                                          12978,-30087,12978,-30087,12978,-30087,12978,-30087,
-                                                          11206,-30790,11206,-30790,11206,-30790,11206,-30790,
-                                                          9397,-31390,9397,-31390,9397,-31390,9397,-31390,
-                                                          7556,-31883,7556,-31883,7556,-31883,7556,-31883,
-                                                          5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                          3804,-32545,3804,-32545,3804,-32545,3804,-32545,
-                                                          1905,-32711,1905,-32711,1905,-32711,1905,-32711,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -1905,-32711,-1905,-32711,-1905,-32711,-1905,-32711,
-                                                          -3804,-32545,-3804,-32545,-3804,-32545,-3804,-32545,
-                                                          -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                          -7556,-31883,-7556,-31883,-7556,-31883,-7556,-31883,
-                                                          -9397,-31390,-9397,-31390,-9397,-31390,-9397,-31390,
-                                                          -11206,-30790,-11206,-30790,-11206,-30790,-11206,-30790,
-                                                          -12978,-30087,-12978,-30087,-12978,-30087,-12978,-30087,
-                                                          -14705,-29281,-14705,-29281,-14705,-29281,-14705,-29281
-                                                         };
-
-static int16_t twb108[280]__attribute__((aligned(32))) = {32545,-3804,32545,-3804,32545,-3804,32545,-3804,
-                                                          31883,-7556,31883,-7556,31883,-7556,31883,-7556,
-                                                          30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                          29281,-14705,29281,-14705,29281,-14705,29281,-14705,
-                                                          27376,-18005,27376,-18005,27376,-18005,27376,-18005,
-                                                          25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                          22486,-23833,22486,-23833,22486,-23833,22486,-23833,
-                                                          19567,-26283,19567,-26283,19567,-26283,19567,-26283,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          12978,-30087,12978,-30087,12978,-30087,12978,-30087,
-                                                          9397,-31390,9397,-31390,9397,-31390,9397,-31390,
-                                                          5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                          1905,-32711,1905,-32711,1905,-32711,1905,-32711,
-                                                          -1905,-32711,-1905,-32711,-1905,-32711,-1905,-32711,
-                                                          -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                          -9397,-31390,-9397,-31390,-9397,-31390,-9397,-31390,
-                                                          -12978,-30087,-12978,-30087,-12978,-30087,-12978,-30087,
-                                                          -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                          -19567,-26283,-19567,-26283,-19567,-26283,-19567,-26283,
-                                                          -22486,-23833,-22486,-23833,-22486,-23833,-22486,-23833,
-                                                          -25100,-21062,-25100,-21062,-25100,-21062,-25100,-21062,
-                                                          -27376,-18005,-27376,-18005,-27376,-18005,-27376,-18005,
-                                                          -29281,-14705,-29281,-14705,-29281,-14705,-29281,-14705,
-                                                          -30790,-11206,-30790,-11206,-30790,-11206,-30790,-11206,
-                                                          -31883,-7556,-31883,-7556,-31883,-7556,-31883,-7556,
-                                                          -32545,-3804,-32545,-3804,-32545,-3804,-32545,-3804,
-                                                          -32767,0,-32767,0,-32767,0,-32767,0,
-                                                          -32545,3804,-32545,3804,-32545,3804,-32545,3804,
-                                                          -31883,7556,-31883,7556,-31883,7556,-31883,7556,
-                                                          -30790,11206,-30790,11206,-30790,11206,-30790,11206,
-                                                          -29281,14705,-29281,14705,-29281,14705,-29281,14705,
-                                                          -27376,18005,-27376,18005,-27376,18005,-27376,18005,
-                                                          -25100,21062,-25100,21062,-25100,21062,-25100,21062,
-                                                          -22486,23833,-22486,23833,-22486,23833,-22486,23833,
-                                                          -19567,26283,-19567,26283,-19567,26283,-19567,26283
-                                                         };
+static int16_t twa108[280]__attribute__((aligned(32)));
+static int16_t twb108[280]__attribute__((aligned(32)));
 
 void dft108(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
-
-
   int i,j;
   simd_q15_t *x128=(simd_q15_t *)x;
   simd_q15_t *y128=(simd_q15_t *)y;
@@ -7089,71 +7119,9 @@ void dft108(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
-static int16_t tw120[472]__attribute__((aligned(32))) = {32722,-1714,32722,-1714,32722,-1714,32722,-1714,
-                                                         32587,-3425,32587,-3425,32587,-3425,32587,-3425,
-                                                         32363,-5125,32363,-5125,32363,-5125,32363,-5125,
-                                                         32050,-6812,32050,-6812,32050,-6812,32050,-6812,
-                                                         31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                         31163,-10125,31163,-10125,31163,-10125,31163,-10125,
-                                                         30590,-11742,30590,-11742,30590,-11742,30590,-11742,
-                                                         29934,-13327,29934,-13327,29934,-13327,29934,-13327,
-                                                         29195,-14875,29195,-14875,29195,-14875,29195,-14875,
-                                                         28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                         27480,-17846,27480,-17846,27480,-17846,27480,-17846,
-                                                         26509,-19259,26509,-19259,26509,-19259,26509,-19259,
-                                                         25464,-20620,25464,-20620,25464,-20620,25464,-20620,
-                                                         24350,-21925,24350,-21925,24350,-21925,24350,-21925,
-                                                         23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                         21925,-24350,21925,-24350,21925,-24350,21925,-24350,
-                                                         20620,-25464,20620,-25464,20620,-25464,20620,-25464,
-                                                         19259,-26509,19259,-26509,19259,-26509,19259,-26509,
-                                                         17846,-27480,17846,-27480,17846,-27480,17846,-27480,
-                                                         16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                         14875,-29195,14875,-29195,14875,-29195,14875,-29195,
-                                                         13327,-29934,13327,-29934,13327,-29934,13327,-29934,
-                                                         11742,-30590,11742,-30590,11742,-30590,11742,-30590,
-                                                         10125,-31163,10125,-31163,10125,-31163,10125,-31163,
-                                                         8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                         6812,-32050,6812,-32050,6812,-32050,6812,-32050,
-                                                         5125,-32363,5125,-32363,5125,-32363,5125,-32363,
-                                                         3425,-32587,3425,-32587,3425,-32587,3425,-32587,
-                                                         1714,-32722,1714,-32722,1714,-32722,1714,-32722,
-                                                         0,-32767,0,-32767,0,-32767,0,-32767,
-                                                         -1714,-32722,-1714,-32722,-1714,-32722,-1714,-32722,
-                                                         -3425,-32587,-3425,-32587,-3425,-32587,-3425,-32587,
-                                                         -5125,-32363,-5125,-32363,-5125,-32363,-5125,-32363,
-                                                         -6812,-32050,-6812,-32050,-6812,-32050,-6812,-32050,
-                                                         -8480,-31650,-8480,-31650,-8480,-31650,-8480,-31650,
-                                                         -10125,-31163,-10125,-31163,-10125,-31163,-10125,-31163,
-                                                         -11742,-30590,-11742,-30590,-11742,-30590,-11742,-30590,
-                                                         -13327,-29934,-13327,-29934,-13327,-29934,-13327,-29934,
-                                                         -14875,-29195,-14875,-29195,-14875,-29195,-14875,-29195,
-                                                         -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                         -17846,-27480,-17846,-27480,-17846,-27480,-17846,-27480,
-                                                         -19259,-26509,-19259,-26509,-19259,-26509,-19259,-26509,
-                                                         -20620,-25464,-20620,-25464,-20620,-25464,-20620,-25464,
-                                                         -21925,-24350,-21925,-24350,-21925,-24350,-21925,-24350,
-                                                         -23169,-23169,-23169,-23169,-23169,-23169,-23169,-23169,
-                                                         -24350,-21925,-24350,-21925,-24350,-21925,-24350,-21925,
-                                                         -25464,-20620,-25464,-20620,-25464,-20620,-25464,-20620,
-                                                         -26509,-19259,-26509,-19259,-26509,-19259,-26509,-19259,
-                                                         -27480,-17846,-27480,-17846,-27480,-17846,-27480,-17846,
-                                                         -28377,-16383,-28377,-16383,-28377,-16383,-28377,-16383,
-                                                         -29195,-14875,-29195,-14875,-29195,-14875,-29195,-14875,
-                                                         -29934,-13327,-29934,-13327,-29934,-13327,-29934,-13327,
-                                                         -30590,-11742,-30590,-11742,-30590,-11742,-30590,-11742,
-                                                         -31163,-10125,-31163,-10125,-31163,-10125,-31163,-10125,
-                                                         -31650,-8480,-31650,-8480,-31650,-8480,-31650,-8480,
-                                                         -32050,-6812,-32050,-6812,-32050,-6812,-32050,-6812,
-                                                         -32363,-5125,-32363,-5125,-32363,-5125,-32363,-5125,
-                                                         -32587,-3425,-32587,-3425,-32587,-3425,-32587,-3425,
-                                                         -32722,-1714,-32722,-1714,-32722,-1714,-32722,-1714
-                                                        };
-
+static int16_t tw120[472]__attribute__((aligned(32)));
 void dft120(int16_t *x,int16_t *y, unsigned char scale_flag)
 {
-
-
   int i,j;
   simd_q15_t *x128=(simd_q15_t *)x;
   simd_q15_t *y128=(simd_q15_t *)y;
@@ -7161,7 +7129,6 @@ void dft120(int16_t *x,int16_t *y, unsigned char scale_flag)
   simd_q15_t x2128[120];// = (simd_q15_t *)&x2128array[0];
   simd_q15_t ytmp128[120];//=&ytmp128array2[0];
 
-
   for (i=0,j=0; i<60; i++,j+=2) {
     x2128[i]    = x128[j];
     x2128[i+60] = x128[j+1];
@@ -7194,107 +7161,11 @@ void dft120(int16_t *x,int16_t *y, unsigned char scale_flag)
 
 }
 
-static int16_t twa144[376]__attribute__((aligned(32))) = {32735,-1429,32735,-1429,32735,-1429,32735,-1429,
-                                                          32642,-2855,32642,-2855,32642,-2855,32642,-2855,
-                                                          32486,-4276,32486,-4276,32486,-4276,32486,-4276,
-                                                          32269,-5689,32269,-5689,32269,-5689,32269,-5689,
-                                                          31990,-7092,31990,-7092,31990,-7092,31990,-7092,
-                                                          31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                          31250,-9853,31250,-9853,31250,-9853,31250,-9853,
-                                                          30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                          30272,-12539,30272,-12539,30272,-12539,30272,-12539,
-                                                          29696,-13847,29696,-13847,29696,-13847,29696,-13847,
-                                                          29064,-15130,29064,-15130,29064,-15130,29064,-15130,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          27635,-17605,27635,-17605,27635,-17605,27635,-17605,
-                                                          26841,-18794,26841,-18794,26841,-18794,26841,-18794,
-                                                          25995,-19947,25995,-19947,25995,-19947,25995,-19947,
-                                                          25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                          24158,-22137,24158,-22137,24158,-22137,24158,-22137,
-                                                          23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                          22137,-24158,22137,-24158,22137,-24158,22137,-24158,
-                                                          21062,-25100,21062,-25100,21062,-25100,21062,-25100,
-                                                          19947,-25995,19947,-25995,19947,-25995,19947,-25995,
-                                                          18794,-26841,18794,-26841,18794,-26841,18794,-26841,
-                                                          17605,-27635,17605,-27635,17605,-27635,17605,-27635,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          15130,-29064,15130,-29064,15130,-29064,15130,-29064,
-                                                          13847,-29696,13847,-29696,13847,-29696,13847,-29696,
-                                                          12539,-30272,12539,-30272,12539,-30272,12539,-30272,
-                                                          11206,-30790,11206,-30790,11206,-30790,11206,-30790,
-                                                          9853,-31250,9853,-31250,9853,-31250,9853,-31250,
-                                                          8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                          7092,-31990,7092,-31990,7092,-31990,7092,-31990,
-                                                          5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                          4276,-32486,4276,-32486,4276,-32486,4276,-32486,
-                                                          2855,-32642,2855,-32642,2855,-32642,2855,-32642,
-                                                          1429,-32735,1429,-32735,1429,-32735,1429,-32735,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -1429,-32735,-1429,-32735,-1429,-32735,-1429,-32735,
-                                                          -2855,-32642,-2855,-32642,-2855,-32642,-2855,-32642,
-                                                          -4276,-32486,-4276,-32486,-4276,-32486,-4276,-32486,
-                                                          -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                          -7092,-31990,-7092,-31990,-7092,-31990,-7092,-31990,
-                                                          -8480,-31650,-8480,-31650,-8480,-31650,-8480,-31650,
-                                                          -9853,-31250,-9853,-31250,-9853,-31250,-9853,-31250,
-                                                          -11206,-30790,-11206,-30790,-11206,-30790,-11206,-30790,
-                                                          -12539,-30272,-12539,-30272,-12539,-30272,-12539,-30272,
-                                                          -13847,-29696,-13847,-29696,-13847,-29696,-13847,-29696,
-                                                          -15130,-29064,-15130,-29064,-15130,-29064,-15130,-29064
-                                                         };
-
-static int16_t twb144[376]__attribute__((aligned(32))) = {32642,-2855,32642,-2855,32642,-2855,32642,-2855,
-                                                          32269,-5689,32269,-5689,32269,-5689,32269,-5689,
-                                                          31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                          30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                          29696,-13847,29696,-13847,29696,-13847,29696,-13847,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          26841,-18794,26841,-18794,26841,-18794,26841,-18794,
-                                                          25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                          23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                          21062,-25100,21062,-25100,21062,-25100,21062,-25100,
-                                                          18794,-26841,18794,-26841,18794,-26841,18794,-26841,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          13847,-29696,13847,-29696,13847,-29696,13847,-29696,
-                                                          11206,-30790,11206,-30790,11206,-30790,11206,-30790,
-                                                          8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                          5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                          2855,-32642,2855,-32642,2855,-32642,2855,-32642,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -2855,-32642,-2855,-32642,-2855,-32642,-2855,-32642,
-                                                          -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                          -8480,-31650,-8480,-31650,-8480,-31650,-8480,-31650,
-                                                          -11206,-30790,-11206,-30790,-11206,-30790,-11206,-30790,
-                                                          -13847,-29696,-13847,-29696,-13847,-29696,-13847,-29696,
-                                                          -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                          -18794,-26841,-18794,-26841,-18794,-26841,-18794,-26841,
-                                                          -21062,-25100,-21062,-25100,-21062,-25100,-21062,-25100,
-                                                          -23169,-23169,-23169,-23169,-23169,-23169,-23169,-23169,
-                                                          -25100,-21062,-25100,-21062,-25100,-21062,-25100,-21062,
-                                                          -26841,-18794,-26841,-18794,-26841,-18794,-26841,-18794,
-                                                          -28377,-16383,-28377,-16383,-28377,-16383,-28377,-16383,
-                                                          -29696,-13847,-29696,-13847,-29696,-13847,-29696,-13847,
-                                                          -30790,-11206,-30790,-11206,-30790,-11206,-30790,-11206,
-                                                          -31650,-8480,-31650,-8480,-31650,-8480,-31650,-8480,
-                                                          -32269,-5689,-32269,-5689,-32269,-5689,-32269,-5689,
-                                                          -32642,-2855,-32642,-2855,-32642,-2855,-32642,-2855,
-                                                          -32767,0,-32767,0,-32767,0,-32767,0,
-                                                          -32642,2855,-32642,2855,-32642,2855,-32642,2855,
-                                                          -32269,5689,-32269,5689,-32269,5689,-32269,5689,
-                                                          -31650,8480,-31650,8480,-31650,8480,-31650,8480,
-                                                          -30790,11206,-30790,11206,-30790,11206,-30790,11206,
-                                                          -29696,13847,-29696,13847,-29696,13847,-29696,13847,
-                                                          -28377,16383,-28377,16383,-28377,16383,-28377,16383,
-                                                          -26841,18794,-26841,18794,-26841,18794,-26841,18794,
-                                                          -25100,21062,-25100,21062,-25100,21062,-25100,21062,
-                                                          -23169,23169,-23169,23169,-23169,23169,-23169,23169,
-                                                          -21062,25100,-21062,25100,-21062,25100,-21062,25100,
-                                                          -18794,26841,-18794,26841,-18794,26841,-18794,26841
-                                                         };
+static int16_t twa144[376]__attribute__((aligned(32)));
+static int16_t twb144[376]__attribute__((aligned(32)));
 
 void dft144(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
-
   int i,j;
   simd_q15_t *x128=(simd_q15_t *)x;
   simd_q15_t *y128=(simd_q15_t *)y;
@@ -7341,127 +7212,8 @@ void dft144(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
-static int16_t twa180[472]__attribute__((aligned(32))) = {32747,-1143,32747,-1143,32747,-1143,32747,-1143,
-                                                          32687,-2285,32687,-2285,32687,-2285,32687,-2285,
-                                                          32587,-3425,32587,-3425,32587,-3425,32587,-3425,
-                                                          32448,-4560,32448,-4560,32448,-4560,32448,-4560,
-                                                          32269,-5689,32269,-5689,32269,-5689,32269,-5689,
-                                                          32050,-6812,32050,-6812,32050,-6812,32050,-6812,
-                                                          31793,-7927,31793,-7927,31793,-7927,31793,-7927,
-                                                          31497,-9031,31497,-9031,31497,-9031,31497,-9031,
-                                                          31163,-10125,31163,-10125,31163,-10125,31163,-10125,
-                                                          30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                          30381,-12274,30381,-12274,30381,-12274,30381,-12274,
-                                                          29934,-13327,29934,-13327,29934,-13327,29934,-13327,
-                                                          29450,-14364,29450,-14364,29450,-14364,29450,-14364,
-                                                          28931,-15383,28931,-15383,28931,-15383,28931,-15383,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          27787,-17363,27787,-17363,27787,-17363,27787,-17363,
-                                                          27165,-18323,27165,-18323,27165,-18323,27165,-18323,
-                                                          26509,-19259,26509,-19259,26509,-19259,26509,-19259,
-                                                          25820,-20173,25820,-20173,25820,-20173,25820,-20173,
-                                                          25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                          24350,-21925,24350,-21925,24350,-21925,24350,-21925,
-                                                          23570,-22761,23570,-22761,23570,-22761,23570,-22761,
-                                                          22761,-23570,22761,-23570,22761,-23570,22761,-23570,
-                                                          21925,-24350,21925,-24350,21925,-24350,21925,-24350,
-                                                          21062,-25100,21062,-25100,21062,-25100,21062,-25100,
-                                                          20173,-25820,20173,-25820,20173,-25820,20173,-25820,
-                                                          19259,-26509,19259,-26509,19259,-26509,19259,-26509,
-                                                          18323,-27165,18323,-27165,18323,-27165,18323,-27165,
-                                                          17363,-27787,17363,-27787,17363,-27787,17363,-27787,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          15383,-28931,15383,-28931,15383,-28931,15383,-28931,
-                                                          14364,-29450,14364,-29450,14364,-29450,14364,-29450,
-                                                          13327,-29934,13327,-29934,13327,-29934,13327,-29934,
-                                                          12274,-30381,12274,-30381,12274,-30381,12274,-30381,
-                                                          11206,-30790,11206,-30790,11206,-30790,11206,-30790,
-                                                          10125,-31163,10125,-31163,10125,-31163,10125,-31163,
-                                                          9031,-31497,9031,-31497,9031,-31497,9031,-31497,
-                                                          7927,-31793,7927,-31793,7927,-31793,7927,-31793,
-                                                          6812,-32050,6812,-32050,6812,-32050,6812,-32050,
-                                                          5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                          4560,-32448,4560,-32448,4560,-32448,4560,-32448,
-                                                          3425,-32587,3425,-32587,3425,-32587,3425,-32587,
-                                                          2285,-32687,2285,-32687,2285,-32687,2285,-32687,
-                                                          1143,-32747,1143,-32747,1143,-32747,1143,-32747,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -1143,-32747,-1143,-32747,-1143,-32747,-1143,-32747,
-                                                          -2285,-32687,-2285,-32687,-2285,-32687,-2285,-32687,
-                                                          -3425,-32587,-3425,-32587,-3425,-32587,-3425,-32587,
-                                                          -4560,-32448,-4560,-32448,-4560,-32448,-4560,-32448,
-                                                          -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                          -6812,-32050,-6812,-32050,-6812,-32050,-6812,-32050,
-                                                          -7927,-31793,-7927,-31793,-7927,-31793,-7927,-31793,
-                                                          -9031,-31497,-9031,-31497,-9031,-31497,-9031,-31497,
-                                                          -10125,-31163,-10125,-31163,-10125,-31163,-10125,-31163,
-                                                          -11206,-30790,-11206,-30790,-11206,-30790,-11206,-30790,
-                                                          -12274,-30381,-12274,-30381,-12274,-30381,-12274,-30381,
-                                                          -13327,-29934,-13327,-29934,-13327,-29934,-13327,-29934,
-                                                          -14364,-29450,-14364,-29450,-14364,-29450,-14364,-29450,
-                                                          -15383,-28931,-15383,-28931,-15383,-28931,-15383,-28931
-                                                         };
-
-static int16_t twb180[472]__attribute__((aligned(32))) = {32687,-2285,32687,-2285,32687,-2285,32687,-2285,
-                                                          32448,-4560,32448,-4560,32448,-4560,32448,-4560,
-                                                          32050,-6812,32050,-6812,32050,-6812,32050,-6812,
-                                                          31497,-9031,31497,-9031,31497,-9031,31497,-9031,
-                                                          30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                          29934,-13327,29934,-13327,29934,-13327,29934,-13327,
-                                                          28931,-15383,28931,-15383,28931,-15383,28931,-15383,
-                                                          27787,-17363,27787,-17363,27787,-17363,27787,-17363,
-                                                          26509,-19259,26509,-19259,26509,-19259,26509,-19259,
-                                                          25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                          23570,-22761,23570,-22761,23570,-22761,23570,-22761,
-                                                          21925,-24350,21925,-24350,21925,-24350,21925,-24350,
-                                                          20173,-25820,20173,-25820,20173,-25820,20173,-25820,
-                                                          18323,-27165,18323,-27165,18323,-27165,18323,-27165,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          14364,-29450,14364,-29450,14364,-29450,14364,-29450,
-                                                          12274,-30381,12274,-30381,12274,-30381,12274,-30381,
-                                                          10125,-31163,10125,-31163,10125,-31163,10125,-31163,
-                                                          7927,-31793,7927,-31793,7927,-31793,7927,-31793,
-                                                          5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                          3425,-32587,3425,-32587,3425,-32587,3425,-32587,
-                                                          1143,-32747,1143,-32747,1143,-32747,1143,-32747,
-                                                          -1143,-32747,-1143,-32747,-1143,-32747,-1143,-32747,
-                                                          -3425,-32587,-3425,-32587,-3425,-32587,-3425,-32587,
-                                                          -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                          -7927,-31793,-7927,-31793,-7927,-31793,-7927,-31793,
-                                                          -10125,-31163,-10125,-31163,-10125,-31163,-10125,-31163,
-                                                          -12274,-30381,-12274,-30381,-12274,-30381,-12274,-30381,
-                                                          -14364,-29450,-14364,-29450,-14364,-29450,-14364,-29450,
-                                                          -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                          -18323,-27165,-18323,-27165,-18323,-27165,-18323,-27165,
-                                                          -20173,-25820,-20173,-25820,-20173,-25820,-20173,-25820,
-                                                          -21925,-24350,-21925,-24350,-21925,-24350,-21925,-24350,
-                                                          -23570,-22761,-23570,-22761,-23570,-22761,-23570,-22761,
-                                                          -25100,-21062,-25100,-21062,-25100,-21062,-25100,-21062,
-                                                          -26509,-19259,-26509,-19259,-26509,-19259,-26509,-19259,
-                                                          -27787,-17363,-27787,-17363,-27787,-17363,-27787,-17363,
-                                                          -28931,-15383,-28931,-15383,-28931,-15383,-28931,-15383,
-                                                          -29934,-13327,-29934,-13327,-29934,-13327,-29934,-13327,
-                                                          -30790,-11206,-30790,-11206,-30790,-11206,-30790,-11206,
-                                                          -31497,-9031,-31497,-9031,-31497,-9031,-31497,-9031,
-                                                          -32050,-6812,-32050,-6812,-32050,-6812,-32050,-6812,
-                                                          -32448,-4560,-32448,-4560,-32448,-4560,-32448,-4560,
-                                                          -32687,-2285,-32687,-2285,-32687,-2285,-32687,-2285,
-                                                          -32767,0,-32767,0,-32767,0,-32767,0,
-                                                          -32687,2285,-32687,2285,-32687,2285,-32687,2285,
-                                                          -32448,4560,-32448,4560,-32448,4560,-32448,4560,
-                                                          -32050,6812,-32050,6812,-32050,6812,-32050,6812,
-                                                          -31497,9031,-31497,9031,-31497,9031,-31497,9031,
-                                                          -30790,11206,-30790,11206,-30790,11206,-30790,11206,
-                                                          -29934,13327,-29934,13327,-29934,13327,-29934,13327,
-                                                          -28931,15383,-28931,15383,-28931,15383,-28931,15383,
-                                                          -27787,17363,-27787,17363,-27787,17363,-27787,17363,
-                                                          -26509,19259,-26509,19259,-26509,19259,-26509,19259,
-                                                          -25100,21062,-25100,21062,-25100,21062,-25100,21062,
-                                                          -23570,22761,-23570,22761,-23570,22761,-23570,22761,
-                                                          -21925,24350,-21925,24350,-21925,24350,-21925,24350,
-                                                          -20173,25820,-20173,25820,-20173,25820,-20173,25820,
-                                                          -18323,27165,-18323,27165,-18323,27165,-18323,27165
-                                                         };
+static int16_t twa180[472]__attribute__((aligned(32)));
+static int16_t twb180[472]__attribute__((aligned(32)));
 
 void dft180(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
@@ -7512,152 +7264,9 @@ void dft180(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
-static int16_t twa192[376]__attribute__((aligned(32))) = {32749,-1072,32749,-1072,32749,-1072,32749,-1072,
-                                                          32696,-2143,32696,-2143,32696,-2143,32696,-2143,
-                                                          32609,-3211,32609,-3211,32609,-3211,32609,-3211,
-                                                          32486,-4276,32486,-4276,32486,-4276,32486,-4276,
-                                                          32329,-5337,32329,-5337,32329,-5337,32329,-5337,
-                                                          32137,-6392,32137,-6392,32137,-6392,32137,-6392,
-                                                          31911,-7440,31911,-7440,31911,-7440,31911,-7440,
-                                                          31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                          31356,-9511,31356,-9511,31356,-9511,31356,-9511,
-                                                          31028,-10532,31028,-10532,31028,-10532,31028,-10532,
-                                                          30666,-11542,30666,-11542,30666,-11542,30666,-11542,
-                                                          30272,-12539,30272,-12539,30272,-12539,30272,-12539,
-                                                          29846,-13523,29846,-13523,29846,-13523,29846,-13523,
-                                                          29387,-14492,29387,-14492,29387,-14492,29387,-14492,
-                                                          28897,-15446,28897,-15446,28897,-15446,28897,-15446,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          27825,-17303,27825,-17303,27825,-17303,27825,-17303,
-                                                          27244,-18204,27244,-18204,27244,-18204,27244,-18204,
-                                                          26634,-19086,26634,-19086,26634,-19086,26634,-19086,
-                                                          25995,-19947,25995,-19947,25995,-19947,25995,-19947,
-                                                          25329,-20787,25329,-20787,25329,-20787,25329,-20787,
-                                                          24635,-21604,24635,-21604,24635,-21604,24635,-21604,
-                                                          23915,-22399,23915,-22399,23915,-22399,23915,-22399,
-                                                          23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                          22399,-23915,22399,-23915,22399,-23915,22399,-23915,
-                                                          21604,-24635,21604,-24635,21604,-24635,21604,-24635,
-                                                          20787,-25329,20787,-25329,20787,-25329,20787,-25329,
-                                                          19947,-25995,19947,-25995,19947,-25995,19947,-25995,
-                                                          19086,-26634,19086,-26634,19086,-26634,19086,-26634,
-                                                          18204,-27244,18204,-27244,18204,-27244,18204,-27244,
-                                                          17303,-27825,17303,-27825,17303,-27825,17303,-27825,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          15446,-28897,15446,-28897,15446,-28897,15446,-28897,
-                                                          14492,-29387,14492,-29387,14492,-29387,14492,-29387,
-                                                          13523,-29846,13523,-29846,13523,-29846,13523,-29846,
-                                                          12539,-30272,12539,-30272,12539,-30272,12539,-30272,
-                                                          11542,-30666,11542,-30666,11542,-30666,11542,-30666,
-                                                          10532,-31028,10532,-31028,10532,-31028,10532,-31028,
-                                                          9511,-31356,9511,-31356,9511,-31356,9511,-31356,
-                                                          8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                          7440,-31911,7440,-31911,7440,-31911,7440,-31911,
-                                                          6392,-32137,6392,-32137,6392,-32137,6392,-32137,
-                                                          5337,-32329,5337,-32329,5337,-32329,5337,-32329,
-                                                          4276,-32486,4276,-32486,4276,-32486,4276,-32486,
-                                                          3211,-32609,3211,-32609,3211,-32609,3211,-32609,
-                                                          2143,-32696,2143,-32696,2143,-32696,2143,-32696,
-                                                          1072,-32749,1072,-32749,1072,-32749,1072,-32749
-                                                         };
-
-static int16_t twb192[376]__attribute__((aligned(32))) = {32696,-2143,32696,-2143,32696,-2143,32696,-2143,
-                                                          32486,-4276,32486,-4276,32486,-4276,32486,-4276,
-                                                          32137,-6392,32137,-6392,32137,-6392,32137,-6392,
-                                                          31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                          31028,-10532,31028,-10532,31028,-10532,31028,-10532,
-                                                          30272,-12539,30272,-12539,30272,-12539,30272,-12539,
-                                                          29387,-14492,29387,-14492,29387,-14492,29387,-14492,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          27244,-18204,27244,-18204,27244,-18204,27244,-18204,
-                                                          25995,-19947,25995,-19947,25995,-19947,25995,-19947,
-                                                          24635,-21604,24635,-21604,24635,-21604,24635,-21604,
-                                                          23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                          21604,-24635,21604,-24635,21604,-24635,21604,-24635,
-                                                          19947,-25995,19947,-25995,19947,-25995,19947,-25995,
-                                                          18204,-27244,18204,-27244,18204,-27244,18204,-27244,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          14492,-29387,14492,-29387,14492,-29387,14492,-29387,
-                                                          12539,-30272,12539,-30272,12539,-30272,12539,-30272,
-                                                          10532,-31028,10532,-31028,10532,-31028,10532,-31028,
-                                                          8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                          6392,-32137,6392,-32137,6392,-32137,6392,-32137,
-                                                          4276,-32486,4276,-32486,4276,-32486,4276,-32486,
-                                                          2143,-32696,2143,-32696,2143,-32696,2143,-32696,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -2143,-32696,-2143,-32696,-2143,-32696,-2143,-32696,
-                                                          -4276,-32486,-4276,-32486,-4276,-32486,-4276,-32486,
-                                                          -6392,-32137,-6392,-32137,-6392,-32137,-6392,-32137,
-                                                          -8480,-31650,-8480,-31650,-8480,-31650,-8480,-31650,
-                                                          -10532,-31028,-10532,-31028,-10532,-31028,-10532,-31028,
-                                                          -12539,-30272,-12539,-30272,-12539,-30272,-12539,-30272,
-                                                          -14492,-29387,-14492,-29387,-14492,-29387,-14492,-29387,
-                                                          -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                          -18204,-27244,-18204,-27244,-18204,-27244,-18204,-27244,
-                                                          -19947,-25995,-19947,-25995,-19947,-25995,-19947,-25995,
-                                                          -21604,-24635,-21604,-24635,-21604,-24635,-21604,-24635,
-                                                          -23169,-23169,-23169,-23169,-23169,-23169,-23169,-23169,
-                                                          -24635,-21604,-24635,-21604,-24635,-21604,-24635,-21604,
-                                                          -25995,-19947,-25995,-19947,-25995,-19947,-25995,-19947,
-                                                          -27244,-18204,-27244,-18204,-27244,-18204,-27244,-18204,
-                                                          -28377,-16383,-28377,-16383,-28377,-16383,-28377,-16383,
-                                                          -29387,-14492,-29387,-14492,-29387,-14492,-29387,-14492,
-                                                          -30272,-12539,-30272,-12539,-30272,-12539,-30272,-12539,
-                                                          -31028,-10532,-31028,-10532,-31028,-10532,-31028,-10532,
-                                                          -31650,-8480,-31650,-8480,-31650,-8480,-31650,-8480,
-                                                          -32137,-6392,-32137,-6392,-32137,-6392,-32137,-6392,
-                                                          -32486,-4276,-32486,-4276,-32486,-4276,-32486,-4276,
-                                                          -32696,-2143,-32696,-2143,-32696,-2143,-32696,-2143
-                                                         };
-
-static int16_t twc192[376]__attribute__((aligned(32))) = {32609,-3211,32609,-3211,32609,-3211,32609,-3211,
-                                                          32137,-6392,32137,-6392,32137,-6392,32137,-6392,
-                                                          31356,-9511,31356,-9511,31356,-9511,31356,-9511,
-                                                          30272,-12539,30272,-12539,30272,-12539,30272,-12539,
-                                                          28897,-15446,28897,-15446,28897,-15446,28897,-15446,
-                                                          27244,-18204,27244,-18204,27244,-18204,27244,-18204,
-                                                          25329,-20787,25329,-20787,25329,-20787,25329,-20787,
-                                                          23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                          20787,-25329,20787,-25329,20787,-25329,20787,-25329,
-                                                          18204,-27244,18204,-27244,18204,-27244,18204,-27244,
-                                                          15446,-28897,15446,-28897,15446,-28897,15446,-28897,
-                                                          12539,-30272,12539,-30272,12539,-30272,12539,-30272,
-                                                          9511,-31356,9511,-31356,9511,-31356,9511,-31356,
-                                                          6392,-32137,6392,-32137,6392,-32137,6392,-32137,
-                                                          3211,-32609,3211,-32609,3211,-32609,3211,-32609,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -3211,-32609,-3211,-32609,-3211,-32609,-3211,-32609,
-                                                          -6392,-32137,-6392,-32137,-6392,-32137,-6392,-32137,
-                                                          -9511,-31356,-9511,-31356,-9511,-31356,-9511,-31356,
-                                                          -12539,-30272,-12539,-30272,-12539,-30272,-12539,-30272,
-                                                          -15446,-28897,-15446,-28897,-15446,-28897,-15446,-28897,
-                                                          -18204,-27244,-18204,-27244,-18204,-27244,-18204,-27244,
-                                                          -20787,-25329,-20787,-25329,-20787,-25329,-20787,-25329,
-                                                          -23169,-23169,-23169,-23169,-23169,-23169,-23169,-23169,
-                                                          -25329,-20787,-25329,-20787,-25329,-20787,-25329,-20787,
-                                                          -27244,-18204,-27244,-18204,-27244,-18204,-27244,-18204,
-                                                          -28897,-15446,-28897,-15446,-28897,-15446,-28897,-15446,
-                                                          -30272,-12539,-30272,-12539,-30272,-12539,-30272,-12539,
-                                                          -31356,-9511,-31356,-9511,-31356,-9511,-31356,-9511,
-                                                          -32137,-6392,-32137,-6392,-32137,-6392,-32137,-6392,
-                                                          -32609,-3211,-32609,-3211,-32609,-3211,-32609,-3211,
-                                                          -32767,0,-32767,0,-32767,0,-32767,0,
-                                                          -32609,3211,-32609,3211,-32609,3211,-32609,3211,
-                                                          -32137,6392,-32137,6392,-32137,6392,-32137,6392,
-                                                          -31356,9511,-31356,9511,-31356,9511,-31356,9511,
-                                                          -30272,12539,-30272,12539,-30272,12539,-30272,12539,
-                                                          -28897,15446,-28897,15446,-28897,15446,-28897,15446,
-                                                          -27244,18204,-27244,18204,-27244,18204,-27244,18204,
-                                                          -25329,20787,-25329,20787,-25329,20787,-25329,20787,
-                                                          -23169,23169,-23169,23169,-23169,23169,-23169,23169,
-                                                          -20787,25329,-20787,25329,-20787,25329,-20787,25329,
-                                                          -18204,27244,-18204,27244,-18204,27244,-18204,27244,
-                                                          -15446,28897,-15446,28897,-15446,28897,-15446,28897,
-                                                          -12539,30272,-12539,30272,-12539,30272,-12539,30272,
-                                                          -9511,31356,-9511,31356,-9511,31356,-9511,31356,
-                                                          -6392,32137,-6392,32137,-6392,32137,-6392,32137,
-                                                          -3211,32609,-3211,32609,-3211,32609,-3211,32609
-                                                         };
+static int16_t twa192[376]__attribute__((aligned(32)));
+static int16_t twb192[376]__attribute__((aligned(32)));
+static int16_t twc192[376]__attribute__((aligned(32)));
 
 void dft192(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
@@ -7714,151 +7323,8 @@ void dft192(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
-static int16_t twa216[568]__attribute__((aligned(32))) = {32753,-953,32753,-953,32753,-953,32753,-953,
-                                                          32711,-1905,32711,-1905,32711,-1905,32711,-1905,
-                                                          32642,-2855,32642,-2855,32642,-2855,32642,-2855,
-                                                          32545,-3804,32545,-3804,32545,-3804,32545,-3804,
-                                                          32421,-4748,32421,-4748,32421,-4748,32421,-4748,
-                                                          32269,-5689,32269,-5689,32269,-5689,32269,-5689,
-                                                          32090,-6626,32090,-6626,32090,-6626,32090,-6626,
-                                                          31883,-7556,31883,-7556,31883,-7556,31883,-7556,
-                                                          31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                          31390,-9397,31390,-9397,31390,-9397,31390,-9397,
-                                                          31103,-10306,31103,-10306,31103,-10306,31103,-10306,
-                                                          30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                          30451,-12097,30451,-12097,30451,-12097,30451,-12097,
-                                                          30087,-12978,30087,-12978,30087,-12978,30087,-12978,
-                                                          29696,-13847,29696,-13847,29696,-13847,29696,-13847,
-                                                          29281,-14705,29281,-14705,29281,-14705,29281,-14705,
-                                                          28841,-15551,28841,-15551,28841,-15551,28841,-15551,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          27888,-17201,27888,-17201,27888,-17201,27888,-17201,
-                                                          27376,-18005,27376,-18005,27376,-18005,27376,-18005,
-                                                          26841,-18794,26841,-18794,26841,-18794,26841,-18794,
-                                                          26283,-19567,26283,-19567,26283,-19567,26283,-19567,
-                                                          25702,-20323,25702,-20323,25702,-20323,25702,-20323,
-                                                          25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                          24477,-21783,24477,-21783,24477,-21783,24477,-21783,
-                                                          23833,-22486,23833,-22486,23833,-22486,23833,-22486,
-                                                          23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                          22486,-23833,22486,-23833,22486,-23833,22486,-23833,
-                                                          21783,-24477,21783,-24477,21783,-24477,21783,-24477,
-                                                          21062,-25100,21062,-25100,21062,-25100,21062,-25100,
-                                                          20323,-25702,20323,-25702,20323,-25702,20323,-25702,
-                                                          19567,-26283,19567,-26283,19567,-26283,19567,-26283,
-                                                          18794,-26841,18794,-26841,18794,-26841,18794,-26841,
-                                                          18005,-27376,18005,-27376,18005,-27376,18005,-27376,
-                                                          17201,-27888,17201,-27888,17201,-27888,17201,-27888,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          15551,-28841,15551,-28841,15551,-28841,15551,-28841,
-                                                          14705,-29281,14705,-29281,14705,-29281,14705,-29281,
-                                                          13847,-29696,13847,-29696,13847,-29696,13847,-29696,
-                                                          12978,-30087,12978,-30087,12978,-30087,12978,-30087,
-                                                          12097,-30451,12097,-30451,12097,-30451,12097,-30451,
-                                                          11206,-30790,11206,-30790,11206,-30790,11206,-30790,
-                                                          10306,-31103,10306,-31103,10306,-31103,10306,-31103,
-                                                          9397,-31390,9397,-31390,9397,-31390,9397,-31390,
-                                                          8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                          7556,-31883,7556,-31883,7556,-31883,7556,-31883,
-                                                          6626,-32090,6626,-32090,6626,-32090,6626,-32090,
-                                                          5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                          4748,-32421,4748,-32421,4748,-32421,4748,-32421,
-                                                          3804,-32545,3804,-32545,3804,-32545,3804,-32545,
-                                                          2855,-32642,2855,-32642,2855,-32642,2855,-32642,
-                                                          1905,-32711,1905,-32711,1905,-32711,1905,-32711,
-                                                          953,-32753,953,-32753,953,-32753,953,-32753,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -953,-32753,-953,-32753,-953,-32753,-953,-32753,
-                                                          -1905,-32711,-1905,-32711,-1905,-32711,-1905,-32711,
-                                                          -2855,-32642,-2855,-32642,-2855,-32642,-2855,-32642,
-                                                          -3804,-32545,-3804,-32545,-3804,-32545,-3804,-32545,
-                                                          -4748,-32421,-4748,-32421,-4748,-32421,-4748,-32421,
-                                                          -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                          -6626,-32090,-6626,-32090,-6626,-32090,-6626,-32090,
-                                                          -7556,-31883,-7556,-31883,-7556,-31883,-7556,-31883,
-                                                          -8480,-31650,-8480,-31650,-8480,-31650,-8480,-31650,
-                                                          -9397,-31390,-9397,-31390,-9397,-31390,-9397,-31390,
-                                                          -10306,-31103,-10306,-31103,-10306,-31103,-10306,-31103,
-                                                          -11206,-30790,-11206,-30790,-11206,-30790,-11206,-30790,
-                                                          -12097,-30451,-12097,-30451,-12097,-30451,-12097,-30451,
-                                                          -12978,-30087,-12978,-30087,-12978,-30087,-12978,-30087,
-                                                          -13847,-29696,-13847,-29696,-13847,-29696,-13847,-29696,
-                                                          -14705,-29281,-14705,-29281,-14705,-29281,-14705,-29281,
-                                                          -15551,-28841,-15551,-28841,-15551,-28841,-15551,-28841
-                                                         };
-
-static int16_t twb216[568]__attribute__((aligned(32))) = {32711,-1905,32711,-1905,32711,-1905,32711,-1905,
-                                                          32545,-3804,32545,-3804,32545,-3804,32545,-3804,
-                                                          32269,-5689,32269,-5689,32269,-5689,32269,-5689,
-                                                          31883,-7556,31883,-7556,31883,-7556,31883,-7556,
-                                                          31390,-9397,31390,-9397,31390,-9397,31390,-9397,
-                                                          30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                          30087,-12978,30087,-12978,30087,-12978,30087,-12978,
-                                                          29281,-14705,29281,-14705,29281,-14705,29281,-14705,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          27376,-18005,27376,-18005,27376,-18005,27376,-18005,
-                                                          26283,-19567,26283,-19567,26283,-19567,26283,-19567,
-                                                          25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                          23833,-22486,23833,-22486,23833,-22486,23833,-22486,
-                                                          22486,-23833,22486,-23833,22486,-23833,22486,-23833,
-                                                          21062,-25100,21062,-25100,21062,-25100,21062,-25100,
-                                                          19567,-26283,19567,-26283,19567,-26283,19567,-26283,
-                                                          18005,-27376,18005,-27376,18005,-27376,18005,-27376,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          14705,-29281,14705,-29281,14705,-29281,14705,-29281,
-                                                          12978,-30087,12978,-30087,12978,-30087,12978,-30087,
-                                                          11206,-30790,11206,-30790,11206,-30790,11206,-30790,
-                                                          9397,-31390,9397,-31390,9397,-31390,9397,-31390,
-                                                          7556,-31883,7556,-31883,7556,-31883,7556,-31883,
-                                                          5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                          3804,-32545,3804,-32545,3804,-32545,3804,-32545,
-                                                          1905,-32711,1905,-32711,1905,-32711,1905,-32711,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -1905,-32711,-1905,-32711,-1905,-32711,-1905,-32711,
-                                                          -3804,-32545,-3804,-32545,-3804,-32545,-3804,-32545,
-                                                          -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                          -7556,-31883,-7556,-31883,-7556,-31883,-7556,-31883,
-                                                          -9397,-31390,-9397,-31390,-9397,-31390,-9397,-31390,
-                                                          -11206,-30790,-11206,-30790,-11206,-30790,-11206,-30790,
-                                                          -12978,-30087,-12978,-30087,-12978,-30087,-12978,-30087,
-                                                          -14705,-29281,-14705,-29281,-14705,-29281,-14705,-29281,
-                                                          -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                          -18005,-27376,-18005,-27376,-18005,-27376,-18005,-27376,
-                                                          -19567,-26283,-19567,-26283,-19567,-26283,-19567,-26283,
-                                                          -21062,-25100,-21062,-25100,-21062,-25100,-21062,-25100,
-                                                          -22486,-23833,-22486,-23833,-22486,-23833,-22486,-23833,
-                                                          -23833,-22486,-23833,-22486,-23833,-22486,-23833,-22486,
-                                                          -25100,-21062,-25100,-21062,-25100,-21062,-25100,-21062,
-                                                          -26283,-19567,-26283,-19567,-26283,-19567,-26283,-19567,
-                                                          -27376,-18005,-27376,-18005,-27376,-18005,-27376,-18005,
-                                                          -28377,-16383,-28377,-16383,-28377,-16383,-28377,-16383,
-                                                          -29281,-14705,-29281,-14705,-29281,-14705,-29281,-14705,
-                                                          -30087,-12978,-30087,-12978,-30087,-12978,-30087,-12978,
-                                                          -30790,-11206,-30790,-11206,-30790,-11206,-30790,-11206,
-                                                          -31390,-9397,-31390,-9397,-31390,-9397,-31390,-9397,
-                                                          -31883,-7556,-31883,-7556,-31883,-7556,-31883,-7556,
-                                                          -32269,-5689,-32269,-5689,-32269,-5689,-32269,-5689,
-                                                          -32545,-3804,-32545,-3804,-32545,-3804,-32545,-3804,
-                                                          -32711,-1905,-32711,-1905,-32711,-1905,-32711,-1905,
-                                                          -32767,0,-32767,0,-32767,0,-32767,0,
-                                                          -32711,1905,-32711,1905,-32711,1905,-32711,1905,
-                                                          -32545,3804,-32545,3804,-32545,3804,-32545,3804,
-                                                          -32269,5689,-32269,5689,-32269,5689,-32269,5689,
-                                                          -31883,7556,-31883,7556,-31883,7556,-31883,7556,
-                                                          -31390,9397,-31390,9397,-31390,9397,-31390,9397,
-                                                          -30790,11206,-30790,11206,-30790,11206,-30790,11206,
-                                                          -30087,12978,-30087,12978,-30087,12978,-30087,12978,
-                                                          -29281,14705,-29281,14705,-29281,14705,-29281,14705,
-                                                          -28377,16383,-28377,16383,-28377,16383,-28377,16383,
-                                                          -27376,18005,-27376,18005,-27376,18005,-27376,18005,
-                                                          -26283,19567,-26283,19567,-26283,19567,-26283,19567,
-                                                          -25100,21062,-25100,21062,-25100,21062,-25100,21062,
-                                                          -23833,22486,-23833,22486,-23833,22486,-23833,22486,
-                                                          -22486,23833,-22486,23833,-22486,23833,-22486,23833,
-                                                          -21062,25100,-21062,25100,-21062,25100,-21062,25100,
-                                                          -19567,26283,-19567,26283,-19567,26283,-19567,26283,
-                                                          -18005,27376,-18005,27376,-18005,27376,-18005,27376
-                                                         };
+static int16_t twa216[568]__attribute__((aligned(32)));
+static int16_t twb216[568]__attribute__((aligned(32)));
 
 void dft216(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
@@ -7909,188 +7375,9 @@ void dft216(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
-static int16_t twa240[472]__attribute__((aligned(32))) = {32755,-857,32755,-857,32755,-857,32755,-857,
-                                                          32722,-1714,32722,-1714,32722,-1714,32722,-1714,
-                                                          32665,-2570,32665,-2570,32665,-2570,32665,-2570,
-                                                          32587,-3425,32587,-3425,32587,-3425,32587,-3425,
-                                                          32486,-4276,32486,-4276,32486,-4276,32486,-4276,
-                                                          32363,-5125,32363,-5125,32363,-5125,32363,-5125,
-                                                          32218,-5971,32218,-5971,32218,-5971,32218,-5971,
-                                                          32050,-6812,32050,-6812,32050,-6812,32050,-6812,
-                                                          31861,-7649,31861,-7649,31861,-7649,31861,-7649,
-                                                          31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                          31417,-9306,31417,-9306,31417,-9306,31417,-9306,
-                                                          31163,-10125,31163,-10125,31163,-10125,31163,-10125,
-                                                          30887,-10937,30887,-10937,30887,-10937,30887,-10937,
-                                                          30590,-11742,30590,-11742,30590,-11742,30590,-11742,
-                                                          30272,-12539,30272,-12539,30272,-12539,30272,-12539,
-                                                          29934,-13327,29934,-13327,29934,-13327,29934,-13327,
-                                                          29575,-14106,29575,-14106,29575,-14106,29575,-14106,
-                                                          29195,-14875,29195,-14875,29195,-14875,29195,-14875,
-                                                          28796,-15635,28796,-15635,28796,-15635,28796,-15635,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          27938,-17120,27938,-17120,27938,-17120,27938,-17120,
-                                                          27480,-17846,27480,-17846,27480,-17846,27480,-17846,
-                                                          27004,-18559,27004,-18559,27004,-18559,27004,-18559,
-                                                          26509,-19259,26509,-19259,26509,-19259,26509,-19259,
-                                                          25995,-19947,25995,-19947,25995,-19947,25995,-19947,
-                                                          25464,-20620,25464,-20620,25464,-20620,25464,-20620,
-                                                          24916,-21280,24916,-21280,24916,-21280,24916,-21280,
-                                                          24350,-21925,24350,-21925,24350,-21925,24350,-21925,
-                                                          23768,-22555,23768,-22555,23768,-22555,23768,-22555,
-                                                          23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                          22555,-23768,22555,-23768,22555,-23768,22555,-23768,
-                                                          21925,-24350,21925,-24350,21925,-24350,21925,-24350,
-                                                          21280,-24916,21280,-24916,21280,-24916,21280,-24916,
-                                                          20620,-25464,20620,-25464,20620,-25464,20620,-25464,
-                                                          19947,-25995,19947,-25995,19947,-25995,19947,-25995,
-                                                          19259,-26509,19259,-26509,19259,-26509,19259,-26509,
-                                                          18559,-27004,18559,-27004,18559,-27004,18559,-27004,
-                                                          17846,-27480,17846,-27480,17846,-27480,17846,-27480,
-                                                          17120,-27938,17120,-27938,17120,-27938,17120,-27938,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          15635,-28796,15635,-28796,15635,-28796,15635,-28796,
-                                                          14875,-29195,14875,-29195,14875,-29195,14875,-29195,
-                                                          14106,-29575,14106,-29575,14106,-29575,14106,-29575,
-                                                          13327,-29934,13327,-29934,13327,-29934,13327,-29934,
-                                                          12539,-30272,12539,-30272,12539,-30272,12539,-30272,
-                                                          11742,-30590,11742,-30590,11742,-30590,11742,-30590,
-                                                          10937,-30887,10937,-30887,10937,-30887,10937,-30887,
-                                                          10125,-31163,10125,-31163,10125,-31163,10125,-31163,
-                                                          9306,-31417,9306,-31417,9306,-31417,9306,-31417,
-                                                          8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                          7649,-31861,7649,-31861,7649,-31861,7649,-31861,
-                                                          6812,-32050,6812,-32050,6812,-32050,6812,-32050,
-                                                          5971,-32218,5971,-32218,5971,-32218,5971,-32218,
-                                                          5125,-32363,5125,-32363,5125,-32363,5125,-32363,
-                                                          4276,-32486,4276,-32486,4276,-32486,4276,-32486,
-                                                          3425,-32587,3425,-32587,3425,-32587,3425,-32587,
-                                                          2570,-32665,2570,-32665,2570,-32665,2570,-32665,
-                                                          1714,-32722,1714,-32722,1714,-32722,1714,-32722,
-                                                          857,-32755,857,-32755,857,-32755,857,-32755
-                                                         };
-
-static int16_t twb240[472]__attribute__((aligned(32))) = {32722,-1714,32722,-1714,32722,-1714,32722,-1714,
-                                                          32587,-3425,32587,-3425,32587,-3425,32587,-3425,
-                                                          32363,-5125,32363,-5125,32363,-5125,32363,-5125,
-                                                          32050,-6812,32050,-6812,32050,-6812,32050,-6812,
-                                                          31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                          31163,-10125,31163,-10125,31163,-10125,31163,-10125,
-                                                          30590,-11742,30590,-11742,30590,-11742,30590,-11742,
-                                                          29934,-13327,29934,-13327,29934,-13327,29934,-13327,
-                                                          29195,-14875,29195,-14875,29195,-14875,29195,-14875,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          27480,-17846,27480,-17846,27480,-17846,27480,-17846,
-                                                          26509,-19259,26509,-19259,26509,-19259,26509,-19259,
-                                                          25464,-20620,25464,-20620,25464,-20620,25464,-20620,
-                                                          24350,-21925,24350,-21925,24350,-21925,24350,-21925,
-                                                          23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                          21925,-24350,21925,-24350,21925,-24350,21925,-24350,
-                                                          20620,-25464,20620,-25464,20620,-25464,20620,-25464,
-                                                          19259,-26509,19259,-26509,19259,-26509,19259,-26509,
-                                                          17846,-27480,17846,-27480,17846,-27480,17846,-27480,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          14875,-29195,14875,-29195,14875,-29195,14875,-29195,
-                                                          13327,-29934,13327,-29934,13327,-29934,13327,-29934,
-                                                          11742,-30590,11742,-30590,11742,-30590,11742,-30590,
-                                                          10125,-31163,10125,-31163,10125,-31163,10125,-31163,
-                                                          8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                          6812,-32050,6812,-32050,6812,-32050,6812,-32050,
-                                                          5125,-32363,5125,-32363,5125,-32363,5125,-32363,
-                                                          3425,-32587,3425,-32587,3425,-32587,3425,-32587,
-                                                          1714,-32722,1714,-32722,1714,-32722,1714,-32722,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -1714,-32722,-1714,-32722,-1714,-32722,-1714,-32722,
-                                                          -3425,-32587,-3425,-32587,-3425,-32587,-3425,-32587,
-                                                          -5125,-32363,-5125,-32363,-5125,-32363,-5125,-32363,
-                                                          -6812,-32050,-6812,-32050,-6812,-32050,-6812,-32050,
-                                                          -8480,-31650,-8480,-31650,-8480,-31650,-8480,-31650,
-                                                          -10125,-31163,-10125,-31163,-10125,-31163,-10125,-31163,
-                                                          -11742,-30590,-11742,-30590,-11742,-30590,-11742,-30590,
-                                                          -13327,-29934,-13327,-29934,-13327,-29934,-13327,-29934,
-                                                          -14875,-29195,-14875,-29195,-14875,-29195,-14875,-29195,
-                                                          -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                          -17846,-27480,-17846,-27480,-17846,-27480,-17846,-27480,
-                                                          -19259,-26509,-19259,-26509,-19259,-26509,-19259,-26509,
-                                                          -20620,-25464,-20620,-25464,-20620,-25464,-20620,-25464,
-                                                          -21925,-24350,-21925,-24350,-21925,-24350,-21925,-24350,
-                                                          -23169,-23169,-23169,-23169,-23169,-23169,-23169,-23169,
-                                                          -24350,-21925,-24350,-21925,-24350,-21925,-24350,-21925,
-                                                          -25464,-20620,-25464,-20620,-25464,-20620,-25464,-20620,
-                                                          -26509,-19259,-26509,-19259,-26509,-19259,-26509,-19259,
-                                                          -27480,-17846,-27480,-17846,-27480,-17846,-27480,-17846,
-                                                          -28377,-16383,-28377,-16383,-28377,-16383,-28377,-16383,
-                                                          -29195,-14875,-29195,-14875,-29195,-14875,-29195,-14875,
-                                                          -29934,-13327,-29934,-13327,-29934,-13327,-29934,-13327,
-                                                          -30590,-11742,-30590,-11742,-30590,-11742,-30590,-11742,
-                                                          -31163,-10125,-31163,-10125,-31163,-10125,-31163,-10125,
-                                                          -31650,-8480,-31650,-8480,-31650,-8480,-31650,-8480,
-                                                          -32050,-6812,-32050,-6812,-32050,-6812,-32050,-6812,
-                                                          -32363,-5125,-32363,-5125,-32363,-5125,-32363,-5125,
-                                                          -32587,-3425,-32587,-3425,-32587,-3425,-32587,-3425,
-                                                          -32722,-1714,-32722,-1714,-32722,-1714,-32722,-1714
-                                                         };
-
-static int16_t twc240[472]__attribute__((aligned(32))) = {32665,-2570,32665,-2570,32665,-2570,32665,-2570,
-                                                          32363,-5125,32363,-5125,32363,-5125,32363,-5125,
-                                                          31861,-7649,31861,-7649,31861,-7649,31861,-7649,
-                                                          31163,-10125,31163,-10125,31163,-10125,31163,-10125,
-                                                          30272,-12539,30272,-12539,30272,-12539,30272,-12539,
-                                                          29195,-14875,29195,-14875,29195,-14875,29195,-14875,
-                                                          27938,-17120,27938,-17120,27938,-17120,27938,-17120,
-                                                          26509,-19259,26509,-19259,26509,-19259,26509,-19259,
-                                                          24916,-21280,24916,-21280,24916,-21280,24916,-21280,
-                                                          23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                          21280,-24916,21280,-24916,21280,-24916,21280,-24916,
-                                                          19259,-26509,19259,-26509,19259,-26509,19259,-26509,
-                                                          17120,-27938,17120,-27938,17120,-27938,17120,-27938,
-                                                          14875,-29195,14875,-29195,14875,-29195,14875,-29195,
-                                                          12539,-30272,12539,-30272,12539,-30272,12539,-30272,
-                                                          10125,-31163,10125,-31163,10125,-31163,10125,-31163,
-                                                          7649,-31861,7649,-31861,7649,-31861,7649,-31861,
-                                                          5125,-32363,5125,-32363,5125,-32363,5125,-32363,
-                                                          2570,-32665,2570,-32665,2570,-32665,2570,-32665,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -2570,-32665,-2570,-32665,-2570,-32665,-2570,-32665,
-                                                          -5125,-32363,-5125,-32363,-5125,-32363,-5125,-32363,
-                                                          -7649,-31861,-7649,-31861,-7649,-31861,-7649,-31861,
-                                                          -10125,-31163,-10125,-31163,-10125,-31163,-10125,-31163,
-                                                          -12539,-30272,-12539,-30272,-12539,-30272,-12539,-30272,
-                                                          -14875,-29195,-14875,-29195,-14875,-29195,-14875,-29195,
-                                                          -17120,-27938,-17120,-27938,-17120,-27938,-17120,-27938,
-                                                          -19259,-26509,-19259,-26509,-19259,-26509,-19259,-26509,
-                                                          -21280,-24916,-21280,-24916,-21280,-24916,-21280,-24916,
-                                                          -23169,-23169,-23169,-23169,-23169,-23169,-23169,-23169,
-                                                          -24916,-21280,-24916,-21280,-24916,-21280,-24916,-21280,
-                                                          -26509,-19259,-26509,-19259,-26509,-19259,-26509,-19259,
-                                                          -27938,-17120,-27938,-17120,-27938,-17120,-27938,-17120,
-                                                          -29195,-14875,-29195,-14875,-29195,-14875,-29195,-14875,
-                                                          -30272,-12539,-30272,-12539,-30272,-12539,-30272,-12539,
-                                                          -31163,-10125,-31163,-10125,-31163,-10125,-31163,-10125,
-                                                          -31861,-7649,-31861,-7649,-31861,-7649,-31861,-7649,
-                                                          -32363,-5125,-32363,-5125,-32363,-5125,-32363,-5125,
-                                                          -32665,-2570,-32665,-2570,-32665,-2570,-32665,-2570,
-                                                          -32767,0,-32767,0,-32767,0,-32767,0,
-                                                          -32665,2570,-32665,2570,-32665,2570,-32665,2570,
-                                                          -32363,5125,-32363,5125,-32363,5125,-32363,5125,
-                                                          -31861,7649,-31861,7649,-31861,7649,-31861,7649,
-                                                          -31163,10125,-31163,10125,-31163,10125,-31163,10125,
-                                                          -30272,12539,-30272,12539,-30272,12539,-30272,12539,
-                                                          -29195,14875,-29195,14875,-29195,14875,-29195,14875,
-                                                          -27938,17120,-27938,17120,-27938,17120,-27938,17120,
-                                                          -26509,19259,-26509,19259,-26509,19259,-26509,19259,
-                                                          -24916,21280,-24916,21280,-24916,21280,-24916,21280,
-                                                          -23169,23169,-23169,23169,-23169,23169,-23169,23169,
-                                                          -21280,24916,-21280,24916,-21280,24916,-21280,24916,
-                                                          -19259,26509,-19259,26509,-19259,26509,-19259,26509,
-                                                          -17120,27938,-17120,27938,-17120,27938,-17120,27938,
-                                                          -14875,29195,-14875,29195,-14875,29195,-14875,29195,
-                                                          -12539,30272,-12539,30272,-12539,30272,-12539,30272,
-                                                          -10125,31163,-10125,31163,-10125,31163,-10125,31163,
-                                                          -7649,31861,-7649,31861,-7649,31861,-7649,31861,
-                                                          -5125,32363,-5125,32363,-5125,32363,-5125,32363,
-                                                          -2570,32665,-2570,32665,-2570,32665,-2570,32665
-                                                         };
+static int16_t twa240[472]__attribute__((aligned(32)));
+static int16_t twb240[472]__attribute__((aligned(32)));
+static int16_t twc240[472]__attribute__((aligned(32)));
 
 void dft240(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
@@ -8147,211 +7434,8 @@ void dft240(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:95)/288));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*(2:2:190)/288));
-twa2 = zeros(1,191);
-twb2 = zeros(1,191);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-
-
- */
-static int16_t twa288[760]__attribute__((aligned(32))) = {32759,-714,32759,-714,32759,-714,32759,-714,
-                                                          32735,-1429,32735,-1429,32735,-1429,32735,-1429,
-                                                          32696,-2143,32696,-2143,32696,-2143,32696,-2143,
-                                                          32642,-2855,32642,-2855,32642,-2855,32642,-2855,
-                                                          32572,-3567,32572,-3567,32572,-3567,32572,-3567,
-                                                          32486,-4276,32486,-4276,32486,-4276,32486,-4276,
-                                                          32385,-4984,32385,-4984,32385,-4984,32385,-4984,
-                                                          32269,-5689,32269,-5689,32269,-5689,32269,-5689,
-                                                          32137,-6392,32137,-6392,32137,-6392,32137,-6392,
-                                                          31990,-7092,31990,-7092,31990,-7092,31990,-7092,
-                                                          31827,-7788,31827,-7788,31827,-7788,31827,-7788,
-                                                          31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                          31457,-9169,31457,-9169,31457,-9169,31457,-9169,
-                                                          31250,-9853,31250,-9853,31250,-9853,31250,-9853,
-                                                          31028,-10532,31028,-10532,31028,-10532,31028,-10532,
-                                                          30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                          30539,-11876,30539,-11876,30539,-11876,30539,-11876,
-                                                          30272,-12539,30272,-12539,30272,-12539,30272,-12539,
-                                                          29992,-13196,29992,-13196,29992,-13196,29992,-13196,
-                                                          29696,-13847,29696,-13847,29696,-13847,29696,-13847,
-                                                          29387,-14492,29387,-14492,29387,-14492,29387,-14492,
-                                                          29064,-15130,29064,-15130,29064,-15130,29064,-15130,
-                                                          28727,-15760,28727,-15760,28727,-15760,28727,-15760,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          28012,-16998,28012,-16998,28012,-16998,28012,-16998,
-                                                          27635,-17605,27635,-17605,27635,-17605,27635,-17605,
-                                                          27244,-18204,27244,-18204,27244,-18204,27244,-18204,
-                                                          26841,-18794,26841,-18794,26841,-18794,26841,-18794,
-                                                          26424,-19375,26424,-19375,26424,-19375,26424,-19375,
-                                                          25995,-19947,25995,-19947,25995,-19947,25995,-19947,
-                                                          25554,-20509,25554,-20509,25554,-20509,25554,-20509,
-                                                          25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                          24635,-21604,24635,-21604,24635,-21604,24635,-21604,
-                                                          24158,-22137,24158,-22137,24158,-22137,24158,-22137,
-                                                          23669,-22658,23669,-22658,23669,-22658,23669,-22658,
-                                                          23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                          22658,-23669,22658,-23669,22658,-23669,22658,-23669,
-                                                          22137,-24158,22137,-24158,22137,-24158,22137,-24158,
-                                                          21604,-24635,21604,-24635,21604,-24635,21604,-24635,
-                                                          21062,-25100,21062,-25100,21062,-25100,21062,-25100,
-                                                          20509,-25554,20509,-25554,20509,-25554,20509,-25554,
-                                                          19947,-25995,19947,-25995,19947,-25995,19947,-25995,
-                                                          19375,-26424,19375,-26424,19375,-26424,19375,-26424,
-                                                          18794,-26841,18794,-26841,18794,-26841,18794,-26841,
-                                                          18204,-27244,18204,-27244,18204,-27244,18204,-27244,
-                                                          17605,-27635,17605,-27635,17605,-27635,17605,-27635,
-                                                          16998,-28012,16998,-28012,16998,-28012,16998,-28012,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          15760,-28727,15760,-28727,15760,-28727,15760,-28727,
-                                                          15130,-29064,15130,-29064,15130,-29064,15130,-29064,
-                                                          14492,-29387,14492,-29387,14492,-29387,14492,-29387,
-                                                          13847,-29696,13847,-29696,13847,-29696,13847,-29696,
-                                                          13196,-29992,13196,-29992,13196,-29992,13196,-29992,
-                                                          12539,-30272,12539,-30272,12539,-30272,12539,-30272,
-                                                          11876,-30539,11876,-30539,11876,-30539,11876,-30539,
-                                                          11206,-30790,11206,-30790,11206,-30790,11206,-30790,
-                                                          10532,-31028,10532,-31028,10532,-31028,10532,-31028,
-                                                          9853,-31250,9853,-31250,9853,-31250,9853,-31250,
-                                                          9169,-31457,9169,-31457,9169,-31457,9169,-31457,
-                                                          8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                          7788,-31827,7788,-31827,7788,-31827,7788,-31827,
-                                                          7092,-31990,7092,-31990,7092,-31990,7092,-31990,
-                                                          6392,-32137,6392,-32137,6392,-32137,6392,-32137,
-                                                          5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                          4984,-32385,4984,-32385,4984,-32385,4984,-32385,
-                                                          4276,-32486,4276,-32486,4276,-32486,4276,-32486,
-                                                          3567,-32572,3567,-32572,3567,-32572,3567,-32572,
-                                                          2855,-32642,2855,-32642,2855,-32642,2855,-32642,
-                                                          2143,-32696,2143,-32696,2143,-32696,2143,-32696,
-                                                          1429,-32735,1429,-32735,1429,-32735,1429,-32735,
-                                                          714,-32759,714,-32759,714,-32759,714,-32759,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -714,-32759,-714,-32759,-714,-32759,-714,-32759,
-                                                          -1429,-32735,-1429,-32735,-1429,-32735,-1429,-32735,
-                                                          -2143,-32696,-2143,-32696,-2143,-32696,-2143,-32696,
-                                                          -2855,-32642,-2855,-32642,-2855,-32642,-2855,-32642,
-                                                          -3567,-32572,-3567,-32572,-3567,-32572,-3567,-32572,
-                                                          -4276,-32486,-4276,-32486,-4276,-32486,-4276,-32486,
-                                                          -4984,-32385,-4984,-32385,-4984,-32385,-4984,-32385,
-                                                          -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                          -6392,-32137,-6392,-32137,-6392,-32137,-6392,-32137,
-                                                          -7092,-31990,-7092,-31990,-7092,-31990,-7092,-31990,
-                                                          -7788,-31827,-7788,-31827,-7788,-31827,-7788,-31827,
-                                                          -8480,-31650,-8480,-31650,-8480,-31650,-8480,-31650,
-                                                          -9169,-31457,-9169,-31457,-9169,-31457,-9169,-31457,
-                                                          -9853,-31250,-9853,-31250,-9853,-31250,-9853,-31250,
-                                                          -10532,-31028,-10532,-31028,-10532,-31028,-10532,-31028,
-                                                          -11206,-30790,-11206,-30790,-11206,-30790,-11206,-30790,
-                                                          -11876,-30539,-11876,-30539,-11876,-30539,-11876,-30539,
-                                                          -12539,-30272,-12539,-30272,-12539,-30272,-12539,-30272,
-                                                          -13196,-29992,-13196,-29992,-13196,-29992,-13196,-29992,
-                                                          -13847,-29696,-13847,-29696,-13847,-29696,-13847,-29696,
-                                                          -14492,-29387,-14492,-29387,-14492,-29387,-14492,-29387,
-                                                          -15130,-29064,-15130,-29064,-15130,-29064,-15130,-29064,
-                                                          -15760,-28727,-15760,-28727,-15760,-28727,-15760,-28727
-                                                         };
-
-static int16_t twb288[760]__attribute__((aligned(32))) = {32735,-1429,32735,-1429,32735,-1429,32735,-1429,
-                                                          32642,-2855,32642,-2855,32642,-2855,32642,-2855,
-                                                          32486,-4276,32486,-4276,32486,-4276,32486,-4276,
-                                                          32269,-5689,32269,-5689,32269,-5689,32269,-5689,
-                                                          31990,-7092,31990,-7092,31990,-7092,31990,-7092,
-                                                          31650,-8480,31650,-8480,31650,-8480,31650,-8480,
-                                                          31250,-9853,31250,-9853,31250,-9853,31250,-9853,
-                                                          30790,-11206,30790,-11206,30790,-11206,30790,-11206,
-                                                          30272,-12539,30272,-12539,30272,-12539,30272,-12539,
-                                                          29696,-13847,29696,-13847,29696,-13847,29696,-13847,
-                                                          29064,-15130,29064,-15130,29064,-15130,29064,-15130,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          27635,-17605,27635,-17605,27635,-17605,27635,-17605,
-                                                          26841,-18794,26841,-18794,26841,-18794,26841,-18794,
-                                                          25995,-19947,25995,-19947,25995,-19947,25995,-19947,
-                                                          25100,-21062,25100,-21062,25100,-21062,25100,-21062,
-                                                          24158,-22137,24158,-22137,24158,-22137,24158,-22137,
-                                                          23169,-23169,23169,-23169,23169,-23169,23169,-23169,
-                                                          22137,-24158,22137,-24158,22137,-24158,22137,-24158,
-                                                          21062,-25100,21062,-25100,21062,-25100,21062,-25100,
-                                                          19947,-25995,19947,-25995,19947,-25995,19947,-25995,
-                                                          18794,-26841,18794,-26841,18794,-26841,18794,-26841,
-                                                          17605,-27635,17605,-27635,17605,-27635,17605,-27635,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          15130,-29064,15130,-29064,15130,-29064,15130,-29064,
-                                                          13847,-29696,13847,-29696,13847,-29696,13847,-29696,
-                                                          12539,-30272,12539,-30272,12539,-30272,12539,-30272,
-                                                          11206,-30790,11206,-30790,11206,-30790,11206,-30790,
-                                                          9853,-31250,9853,-31250,9853,-31250,9853,-31250,
-                                                          8480,-31650,8480,-31650,8480,-31650,8480,-31650,
-                                                          7092,-31990,7092,-31990,7092,-31990,7092,-31990,
-                                                          5689,-32269,5689,-32269,5689,-32269,5689,-32269,
-                                                          4276,-32486,4276,-32486,4276,-32486,4276,-32486,
-                                                          2855,-32642,2855,-32642,2855,-32642,2855,-32642,
-                                                          1429,-32735,1429,-32735,1429,-32735,1429,-32735,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -1429,-32735,-1429,-32735,-1429,-32735,-1429,-32735,
-                                                          -2855,-32642,-2855,-32642,-2855,-32642,-2855,-32642,
-                                                          -4276,-32486,-4276,-32486,-4276,-32486,-4276,-32486,
-                                                          -5689,-32269,-5689,-32269,-5689,-32269,-5689,-32269,
-                                                          -7092,-31990,-7092,-31990,-7092,-31990,-7092,-31990,
-                                                          -8480,-31650,-8480,-31650,-8480,-31650,-8480,-31650,
-                                                          -9853,-31250,-9853,-31250,-9853,-31250,-9853,-31250,
-                                                          -11206,-30790,-11206,-30790,-11206,-30790,-11206,-30790,
-                                                          -12539,-30272,-12539,-30272,-12539,-30272,-12539,-30272,
-                                                          -13847,-29696,-13847,-29696,-13847,-29696,-13847,-29696,
-                                                          -15130,-29064,-15130,-29064,-15130,-29064,-15130,-29064,
-                                                          -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                          -17605,-27635,-17605,-27635,-17605,-27635,-17605,-27635,
-                                                          -18794,-26841,-18794,-26841,-18794,-26841,-18794,-26841,
-                                                          -19947,-25995,-19947,-25995,-19947,-25995,-19947,-25995,
-                                                          -21062,-25100,-21062,-25100,-21062,-25100,-21062,-25100,
-                                                          -22137,-24158,-22137,-24158,-22137,-24158,-22137,-24158,
-                                                          -23169,-23169,-23169,-23169,-23169,-23169,-23169,-23169,
-                                                          -24158,-22137,-24158,-22137,-24158,-22137,-24158,-22137,
-                                                          -25100,-21062,-25100,-21062,-25100,-21062,-25100,-21062,
-                                                          -25995,-19947,-25995,-19947,-25995,-19947,-25995,-19947,
-                                                          -26841,-18794,-26841,-18794,-26841,-18794,-26841,-18794,
-                                                          -27635,-17605,-27635,-17605,-27635,-17605,-27635,-17605,
-                                                          -28377,-16383,-28377,-16383,-28377,-16383,-28377,-16383,
-                                                          -29064,-15130,-29064,-15130,-29064,-15130,-29064,-15130,
-                                                          -29696,-13847,-29696,-13847,-29696,-13847,-29696,-13847,
-                                                          -30272,-12539,-30272,-12539,-30272,-12539,-30272,-12539,
-                                                          -30790,-11206,-30790,-11206,-30790,-11206,-30790,-11206,
-                                                          -31250,-9853,-31250,-9853,-31250,-9853,-31250,-9853,
-                                                          -31650,-8480,-31650,-8480,-31650,-8480,-31650,-8480,
-                                                          -31990,-7092,-31990,-7092,-31990,-7092,-31990,-7092,
-                                                          -32269,-5689,-32269,-5689,-32269,-5689,-32269,-5689,
-                                                          -32486,-4276,-32486,-4276,-32486,-4276,-32486,-4276,
-                                                          -32642,-2855,-32642,-2855,-32642,-2855,-32642,-2855,
-                                                          -32735,-1429,-32735,-1429,-32735,-1429,-32735,-1429,
-                                                          -32767,0,-32767,0,-32767,0,-32767,0,
-                                                          -32735,1429,-32735,1429,-32735,1429,-32735,1429,
-                                                          -32642,2855,-32642,2855,-32642,2855,-32642,2855,
-                                                          -32486,4276,-32486,4276,-32486,4276,-32486,4276,
-                                                          -32269,5689,-32269,5689,-32269,5689,-32269,5689,
-                                                          -31990,7092,-31990,7092,-31990,7092,-31990,7092,
-                                                          -31650,8480,-31650,8480,-31650,8480,-31650,8480,
-                                                          -31250,9853,-31250,9853,-31250,9853,-31250,9853,
-                                                          -30790,11206,-30790,11206,-30790,11206,-30790,11206,
-                                                          -30272,12539,-30272,12539,-30272,12539,-30272,12539,
-                                                          -29696,13847,-29696,13847,-29696,13847,-29696,13847,
-                                                          -29064,15130,-29064,15130,-29064,15130,-29064,15130,
-                                                          -28377,16383,-28377,16383,-28377,16383,-28377,16383,
-                                                          -27635,17605,-27635,17605,-27635,17605,-27635,17605,
-                                                          -26841,18794,-26841,18794,-26841,18794,-26841,18794,
-                                                          -25995,19947,-25995,19947,-25995,19947,-25995,19947,
-                                                          -25100,21062,-25100,21062,-25100,21062,-25100,21062,
-                                                          -24158,22137,-24158,22137,-24158,22137,-24158,22137,
-                                                          -23169,23169,-23169,23169,-23169,23169,-23169,23169,
-                                                          -22137,24158,-22137,24158,-22137,24158,-22137,24158,
-                                                          -21062,25100,-21062,25100,-21062,25100,-21062,25100,
-                                                          -19947,25995,-19947,25995,-19947,25995,-19947,25995,
-                                                          -18794,26841,-18794,26841,-18794,26841,-18794,26841,
-                                                          -17605,27635,-17605,27635,-17605,27635,-17605,27635
-                                                         };
+static int16_t twa288[760]__attribute__((aligned(32)));
+static int16_t twb288[760]__attribute__((aligned(32)));
 
 void dft288(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
@@ -8402,249 +7486,10 @@ void dft288(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
-static int16_t twa300[472]__attribute__((aligned(32))) = {32759,-686,32759,-686,32759,-686,32759,-686,
-                                                          32738,-1372,32738,-1372,32738,-1372,32738,-1372,
-                                                          32702,-2057,32702,-2057,32702,-2057,32702,-2057,
-                                                          32652,-2741,32652,-2741,32652,-2741,32652,-2741,
-                                                          32587,-3425,32587,-3425,32587,-3425,32587,-3425,
-                                                          32508,-4106,32508,-4106,32508,-4106,32508,-4106,
-                                                          32415,-4786,32415,-4786,32415,-4786,32415,-4786,
-                                                          32308,-5464,32308,-5464,32308,-5464,32308,-5464,
-                                                          32186,-6139,32186,-6139,32186,-6139,32186,-6139,
-                                                          32050,-6812,32050,-6812,32050,-6812,32050,-6812,
-                                                          31901,-7482,31901,-7482,31901,-7482,31901,-7482,
-                                                          31737,-8148,31737,-8148,31737,-8148,31737,-8148,
-                                                          31559,-8811,31559,-8811,31559,-8811,31559,-8811,
-                                                          31368,-9470,31368,-9470,31368,-9470,31368,-9470,
-                                                          31163,-10125,31163,-10125,31163,-10125,31163,-10125,
-                                                          30944,-10775,30944,-10775,30944,-10775,30944,-10775,
-                                                          30711,-11421,30711,-11421,30711,-11421,30711,-11421,
-                                                          30465,-12062,30465,-12062,30465,-12062,30465,-12062,
-                                                          30206,-12697,30206,-12697,30206,-12697,30206,-12697,
-                                                          29934,-13327,29934,-13327,29934,-13327,29934,-13327,
-                                                          29648,-13951,29648,-13951,29648,-13951,29648,-13951,
-                                                          29349,-14569,29349,-14569,29349,-14569,29349,-14569,
-                                                          29038,-15180,29038,-15180,29038,-15180,29038,-15180,
-                                                          28713,-15785,28713,-15785,28713,-15785,28713,-15785,
-                                                          28377,-16383,28377,-16383,28377,-16383,28377,-16383,
-                                                          28027,-16974,28027,-16974,28027,-16974,28027,-16974,
-                                                          27666,-17557,27666,-17557,27666,-17557,27666,-17557,
-                                                          27292,-18132,27292,-18132,27292,-18132,27292,-18132,
-                                                          26906,-18700,26906,-18700,26906,-18700,26906,-18700,
-                                                          26509,-19259,26509,-19259,26509,-19259,26509,-19259,
-                                                          26099,-19810,26099,-19810,26099,-19810,26099,-19810,
-                                                          25679,-20353,25679,-20353,25679,-20353,25679,-20353,
-                                                          25247,-20886,25247,-20886,25247,-20886,25247,-20886,
-                                                          24804,-21410,24804,-21410,24804,-21410,24804,-21410,
-                                                          24350,-21925,24350,-21925,24350,-21925,24350,-21925,
-                                                          23886,-22430,23886,-22430,23886,-22430,23886,-22430,
-                                                          23411,-22925,23411,-22925,23411,-22925,23411,-22925,
-                                                          22925,-23411,22925,-23411,22925,-23411,22925,-23411,
-                                                          22430,-23886,22430,-23886,22430,-23886,22430,-23886,
-                                                          21925,-24350,21925,-24350,21925,-24350,21925,-24350,
-                                                          21410,-24804,21410,-24804,21410,-24804,21410,-24804,
-                                                          20886,-25247,20886,-25247,20886,-25247,20886,-25247,
-                                                          20353,-25679,20353,-25679,20353,-25679,20353,-25679,
-                                                          19810,-26099,19810,-26099,19810,-26099,19810,-26099,
-                                                          19259,-26509,19259,-26509,19259,-26509,19259,-26509,
-                                                          18700,-26906,18700,-26906,18700,-26906,18700,-26906,
-                                                          18132,-27292,18132,-27292,18132,-27292,18132,-27292,
-                                                          17557,-27666,17557,-27666,17557,-27666,17557,-27666,
-                                                          16974,-28027,16974,-28027,16974,-28027,16974,-28027,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          15785,-28713,15785,-28713,15785,-28713,15785,-28713,
-                                                          15180,-29038,15180,-29038,15180,-29038,15180,-29038,
-                                                          14569,-29349,14569,-29349,14569,-29349,14569,-29349,
-                                                          13951,-29648,13951,-29648,13951,-29648,13951,-29648,
-                                                          13327,-29934,13327,-29934,13327,-29934,13327,-29934,
-                                                          12697,-30206,12697,-30206,12697,-30206,12697,-30206,
-                                                          12062,-30465,12062,-30465,12062,-30465,12062,-30465,
-                                                          11421,-30711,11421,-30711,11421,-30711,11421,-30711,
-                                                          10775,-30944,10775,-30944,10775,-30944,10775,-30944
-                                                         };
-
-static int16_t twb300[472]__attribute__((aligned(32))) = {32738,-1372,32738,-1372,32738,-1372,32738,-1372,
-                                                          32652,-2741,32652,-2741,32652,-2741,32652,-2741,
-                                                          32508,-4106,32508,-4106,32508,-4106,32508,-4106,
-                                                          32308,-5464,32308,-5464,32308,-5464,32308,-5464,
-                                                          32050,-6812,32050,-6812,32050,-6812,32050,-6812,
-                                                          31737,-8148,31737,-8148,31737,-8148,31737,-8148,
-                                                          31368,-9470,31368,-9470,31368,-9470,31368,-9470,
-                                                          30944,-10775,30944,-10775,30944,-10775,30944,-10775,
-                                                          30465,-12062,30465,-12062,30465,-12062,30465,-12062,
-                                                          29934,-13327,29934,-13327,29934,-13327,29934,-13327,
-                                                          29349,-14569,29349,-14569,29349,-14569,29349,-14569,
-                                                          28713,-15785,28713,-15785,28713,-15785,28713,-15785,
-                                                          28027,-16974,28027,-16974,28027,-16974,28027,-16974,
-                                                          27292,-18132,27292,-18132,27292,-18132,27292,-18132,
-                                                          26509,-19259,26509,-19259,26509,-19259,26509,-19259,
-                                                          25679,-20353,25679,-20353,25679,-20353,25679,-20353,
-                                                          24804,-21410,24804,-21410,24804,-21410,24804,-21410,
-                                                          23886,-22430,23886,-22430,23886,-22430,23886,-22430,
-                                                          22925,-23411,22925,-23411,22925,-23411,22925,-23411,
-                                                          21925,-24350,21925,-24350,21925,-24350,21925,-24350,
-                                                          20886,-25247,20886,-25247,20886,-25247,20886,-25247,
-                                                          19810,-26099,19810,-26099,19810,-26099,19810,-26099,
-                                                          18700,-26906,18700,-26906,18700,-26906,18700,-26906,
-                                                          17557,-27666,17557,-27666,17557,-27666,17557,-27666,
-                                                          16383,-28377,16383,-28377,16383,-28377,16383,-28377,
-                                                          15180,-29038,15180,-29038,15180,-29038,15180,-29038,
-                                                          13951,-29648,13951,-29648,13951,-29648,13951,-29648,
-                                                          12697,-30206,12697,-30206,12697,-30206,12697,-30206,
-                                                          11421,-30711,11421,-30711,11421,-30711,11421,-30711,
-                                                          10125,-31163,10125,-31163,10125,-31163,10125,-31163,
-                                                          8811,-31559,8811,-31559,8811,-31559,8811,-31559,
-                                                          7482,-31901,7482,-31901,7482,-31901,7482,-31901,
-                                                          6139,-32186,6139,-32186,6139,-32186,6139,-32186,
-                                                          4786,-32415,4786,-32415,4786,-32415,4786,-32415,
-                                                          3425,-32587,3425,-32587,3425,-32587,3425,-32587,
-                                                          2057,-32702,2057,-32702,2057,-32702,2057,-32702,
-                                                          686,-32759,686,-32759,686,-32759,686,-32759,
-                                                          -686,-32759,-686,-32759,-686,-32759,-686,-32759,
-                                                          -2057,-32702,-2057,-32702,-2057,-32702,-2057,-32702,
-                                                          -3425,-32587,-3425,-32587,-3425,-32587,-3425,-32587,
-                                                          -4786,-32415,-4786,-32415,-4786,-32415,-4786,-32415,
-                                                          -6139,-32186,-6139,-32186,-6139,-32186,-6139,-32186,
-                                                          -7482,-31901,-7482,-31901,-7482,-31901,-7482,-31901,
-                                                          -8811,-31559,-8811,-31559,-8811,-31559,-8811,-31559,
-                                                          -10125,-31163,-10125,-31163,-10125,-31163,-10125,-31163,
-                                                          -11421,-30711,-11421,-30711,-11421,-30711,-11421,-30711,
-                                                          -12697,-30206,-12697,-30206,-12697,-30206,-12697,-30206,
-                                                          -13951,-29648,-13951,-29648,-13951,-29648,-13951,-29648,
-                                                          -15180,-29038,-15180,-29038,-15180,-29038,-15180,-29038,
-                                                          -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                          -17557,-27666,-17557,-27666,-17557,-27666,-17557,-27666,
-                                                          -18700,-26906,-18700,-26906,-18700,-26906,-18700,-26906,
-                                                          -19810,-26099,-19810,-26099,-19810,-26099,-19810,-26099,
-                                                          -20886,-25247,-20886,-25247,-20886,-25247,-20886,-25247,
-                                                          -21925,-24350,-21925,-24350,-21925,-24350,-21925,-24350,
-                                                          -22925,-23411,-22925,-23411,-22925,-23411,-22925,-23411,
-                                                          -23886,-22430,-23886,-22430,-23886,-22430,-23886,-22430,
-                                                          -24804,-21410,-24804,-21410,-24804,-21410,-24804,-21410,
-                                                          -25679,-20353,-25679,-20353,-25679,-20353,-25679,-20353
-                                                         };
-
-static int16_t twc300[472]__attribute__((aligned(32))) = {32702,-2057,32702,-2057,32702,-2057,32702,-2057,
-                                                          32508,-4106,32508,-4106,32508,-4106,32508,-4106,
-                                                          32186,-6139,32186,-6139,32186,-6139,32186,-6139,
-                                                          31737,-8148,31737,-8148,31737,-8148,31737,-8148,
-                                                          31163,-10125,31163,-10125,31163,-10125,31163,-10125,
-                                                          30465,-12062,30465,-12062,30465,-12062,30465,-12062,
-                                                          29648,-13951,29648,-13951,29648,-13951,29648,-13951,
-                                                          28713,-15785,28713,-15785,28713,-15785,28713,-15785,
-                                                          27666,-17557,27666,-17557,27666,-17557,27666,-17557,
-                                                          26509,-19259,26509,-19259,26509,-19259,26509,-19259,
-                                                          25247,-20886,25247,-20886,25247,-20886,25247,-20886,
-                                                          23886,-22430,23886,-22430,23886,-22430,23886,-22430,
-                                                          22430,-23886,22430,-23886,22430,-23886,22430,-23886,
-                                                          20886,-25247,20886,-25247,20886,-25247,20886,-25247,
-                                                          19259,-26509,19259,-26509,19259,-26509,19259,-26509,
-                                                          17557,-27666,17557,-27666,17557,-27666,17557,-27666,
-                                                          15785,-28713,15785,-28713,15785,-28713,15785,-28713,
-                                                          13951,-29648,13951,-29648,13951,-29648,13951,-29648,
-                                                          12062,-30465,12062,-30465,12062,-30465,12062,-30465,
-                                                          10125,-31163,10125,-31163,10125,-31163,10125,-31163,
-                                                          8148,-31737,8148,-31737,8148,-31737,8148,-31737,
-                                                          6139,-32186,6139,-32186,6139,-32186,6139,-32186,
-                                                          4106,-32508,4106,-32508,4106,-32508,4106,-32508,
-                                                          2057,-32702,2057,-32702,2057,-32702,2057,-32702,
-                                                          0,-32767,0,-32767,0,-32767,0,-32767,
-                                                          -2057,-32702,-2057,-32702,-2057,-32702,-2057,-32702,
-                                                          -4106,-32508,-4106,-32508,-4106,-32508,-4106,-32508,
-                                                          -6139,-32186,-6139,-32186,-6139,-32186,-6139,-32186,
-                                                          -8148,-31737,-8148,-31737,-8148,-31737,-8148,-31737,
-                                                          -10125,-31163,-10125,-31163,-10125,-31163,-10125,-31163,
-                                                          -12062,-30465,-12062,-30465,-12062,-30465,-12062,-30465,
-                                                          -13951,-29648,-13951,-29648,-13951,-29648,-13951,-29648,
-                                                          -15785,-28713,-15785,-28713,-15785,-28713,-15785,-28713,
-                                                          -17557,-27666,-17557,-27666,-17557,-27666,-17557,-27666,
-                                                          -19259,-26509,-19259,-26509,-19259,-26509,-19259,-26509,
-                                                          -20886,-25247,-20886,-25247,-20886,-25247,-20886,-25247,
-                                                          -22430,-23886,-22430,-23886,-22430,-23886,-22430,-23886,
-                                                          -23886,-22430,-23886,-22430,-23886,-22430,-23886,-22430,
-                                                          -25247,-20886,-25247,-20886,-25247,-20886,-25247,-20886,
-                                                          -26509,-19259,-26509,-19259,-26509,-19259,-26509,-19259,
-                                                          -27666,-17557,-27666,-17557,-27666,-17557,-27666,-17557,
-                                                          -28713,-15785,-28713,-15785,-28713,-15785,-28713,-15785,
-                                                          -29648,-13951,-29648,-13951,-29648,-13951,-29648,-13951,
-                                                          -30465,-12062,-30465,-12062,-30465,-12062,-30465,-12062,
-                                                          -31163,-10125,-31163,-10125,-31163,-10125,-31163,-10125,
-                                                          -31737,-8148,-31737,-8148,-31737,-8148,-31737,-8148,
-                                                          -32186,-6139,-32186,-6139,-32186,-6139,-32186,-6139,
-                                                          -32508,-4106,-32508,-4106,-32508,-4106,-32508,-4106,
-                                                          -32702,-2057,-32702,-2057,-32702,-2057,-32702,-2057,
-                                                          -32767,0,-32767,0,-32767,0,-32767,0,
-                                                          -32702,2057,-32702,2057,-32702,2057,-32702,2057,
-                                                          -32508,4106,-32508,4106,-32508,4106,-32508,4106,
-                                                          -32186,6139,-32186,6139,-32186,6139,-32186,6139,
-                                                          -31737,8148,-31737,8148,-31737,8148,-31737,8148,
-                                                          -31163,10125,-31163,10125,-31163,10125,-31163,10125,
-                                                          -30465,12062,-30465,12062,-30465,12062,-30465,12062,
-                                                          -29648,13951,-29648,13951,-29648,13951,-29648,13951,
-                                                          -28713,15785,-28713,15785,-28713,15785,-28713,15785,
-                                                          -27666,17557,-27666,17557,-27666,17557,-27666,17557
-                                                         };
-
-static int16_t twd300[472]__attribute__((aligned(32))) = {32652,-2741,32652,-2741,32652,-2741,32652,-2741,
-                                                          32308,-5464,32308,-5464,32308,-5464,32308,-5464,
-                                                          31737,-8148,31737,-8148,31737,-8148,31737,-8148,
-                                                          30944,-10775,30944,-10775,30944,-10775,30944,-10775,
-                                                          29934,-13327,29934,-13327,29934,-13327,29934,-13327,
-                                                          28713,-15785,28713,-15785,28713,-15785,28713,-15785,
-                                                          27292,-18132,27292,-18132,27292,-18132,27292,-18132,
-                                                          25679,-20353,25679,-20353,25679,-20353,25679,-20353,
-                                                          23886,-22430,23886,-22430,23886,-22430,23886,-22430,
-                                                          21925,-24350,21925,-24350,21925,-24350,21925,-24350,
-                                                          19810,-26099,19810,-26099,19810,-26099,19810,-26099,
-                                                          17557,-27666,17557,-27666,17557,-27666,17557,-27666,
-                                                          15180,-29038,15180,-29038,15180,-29038,15180,-29038,
-                                                          12697,-30206,12697,-30206,12697,-30206,12697,-30206,
-                                                          10125,-31163,10125,-31163,10125,-31163,10125,-31163,
-                                                          7482,-31901,7482,-31901,7482,-31901,7482,-31901,
-                                                          4786,-32415,4786,-32415,4786,-32415,4786,-32415,
-                                                          2057,-32702,2057,-32702,2057,-32702,2057,-32702,
-                                                          -686,-32759,-686,-32759,-686,-32759,-686,-32759,
-                                                          -3425,-32587,-3425,-32587,-3425,-32587,-3425,-32587,
-                                                          -6139,-32186,-6139,-32186,-6139,-32186,-6139,-32186,
-                                                          -8811,-31559,-8811,-31559,-8811,-31559,-8811,-31559,
-                                                          -11421,-30711,-11421,-30711,-11421,-30711,-11421,-30711,
-                                                          -13951,-29648,-13951,-29648,-13951,-29648,-13951,-29648,
-                                                          -16383,-28377,-16383,-28377,-16383,-28377,-16383,-28377,
-                                                          -18700,-26906,-18700,-26906,-18700,-26906,-18700,-26906,
-                                                          -20886,-25247,-20886,-25247,-20886,-25247,-20886,-25247,
-                                                          -22925,-23411,-22925,-23411,-22925,-23411,-22925,-23411,
-                                                          -24804,-21410,-24804,-21410,-24804,-21410,-24804,-21410,
-                                                          -26509,-19259,-26509,-19259,-26509,-19259,-26509,-19259,
-                                                          -28027,-16974,-28027,-16974,-28027,-16974,-28027,-16974,
-                                                          -29349,-14569,-29349,-14569,-29349,-14569,-29349,-14569,
-                                                          -30465,-12062,-30465,-12062,-30465,-12062,-30465,-12062,
-                                                          -31368,-9470,-31368,-9470,-31368,-9470,-31368,-9470,
-                                                          -32050,-6812,-32050,-6812,-32050,-6812,-32050,-6812,
-                                                          -32508,-4106,-32508,-4106,-32508,-4106,-32508,-4106,
-                                                          -32738,-1372,-32738,-1372,-32738,-1372,-32738,-1372,
-                                                          -32738,1372,-32738,1372,-32738,1372,-32738,1372,
-                                                          -32508,4106,-32508,4106,-32508,4106,-32508,4106,
-                                                          -32050,6812,-32050,6812,-32050,6812,-32050,6812,
-                                                          -31368,9470,-31368,9470,-31368,9470,-31368,9470,
-                                                          -30465,12062,-30465,12062,-30465,12062,-30465,12062,
-                                                          -29349,14569,-29349,14569,-29349,14569,-29349,14569,
-                                                          -28027,16974,-28027,16974,-28027,16974,-28027,16974,
-                                                          -26509,19259,-26509,19259,-26509,19259,-26509,19259,
-                                                          -24804,21410,-24804,21410,-24804,21410,-24804,21410,
-                                                          -22925,23411,-22925,23411,-22925,23411,-22925,23411,
-                                                          -20886,25247,-20886,25247,-20886,25247,-20886,25247,
-                                                          -18700,26906,-18700,26906,-18700,26906,-18700,26906,
-                                                          -16383,28377,-16383,28377,-16383,28377,-16383,28377,
-                                                          -13951,29648,-13951,29648,-13951,29648,-13951,29648,
-                                                          -11421,30711,-11421,30711,-11421,30711,-11421,30711,
-                                                          -8811,31559,-8811,31559,-8811,31559,-8811,31559,
-                                                          -6139,32186,-6139,32186,-6139,32186,-6139,32186,
-                                                          -3425,32587,-3425,32587,-3425,32587,-3425,32587,
-                                                          -686,32759,-686,32759,-686,32759,-686,32759,
-                                                          2057,32702,2057,32702,2057,32702,2057,32702,
-                                                          4786,32415,4786,32415,4786,32415,4786,32415,
-                                                          7482,31901,7482,31901,7482,31901,7482,31901
-                                                         };
+static int16_t twa300[472]__attribute__((aligned(32)));
+static int16_t twb300[472]__attribute__((aligned(32)));
+static int16_t twc300[472]__attribute__((aligned(32)));
+static int16_t twd300[472]__attribute__((aligned(32)));
 
 void dft300(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
@@ -8707,246 +7552,8 @@ void dft300(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:107)/324));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:107)/324));
-twa2 = zeros(1,2*107);
-twb2 = zeros(1,2*107);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa324[107*2*4] = {");
-for i=1:2:(2*106)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"static int16_t twb324[107*2*4] = {");
-for i=1:2:(2*106)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fclose(fd);
- */
-static int16_t twa324[107*2*4] = {32760,-636,32760,-636,32760,-636,32760,-636,
-                                  32742,-1271,32742,-1271,32742,-1271,32742,-1271,
-                                  32711,-1906,32711,-1906,32711,-1906,32711,-1906,
-                                  32668,-2540,32668,-2540,32668,-2540,32668,-2540,
-                                  32613,-3173,32613,-3173,32613,-3173,32613,-3173,
-                                  32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                  32465,-4435,32465,-4435,32465,-4435,32465,-4435,
-                                  32373,-5064,32373,-5064,32373,-5064,32373,-5064,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32152,-6315,32152,-6315,32152,-6315,32152,-6315,
-                                  32024,-6937,32024,-6937,32024,-6937,32024,-6937,
-                                  31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                  31731,-8174,31731,-8174,31731,-8174,31731,-8174,
-                                  31566,-8788,31566,-8788,31566,-8788,31566,-8788,
-                                  31390,-9398,31390,-9398,31390,-9398,31390,-9398,
-                                  31202,-10005,31202,-10005,31202,-10005,31202,-10005,
-                                  31002,-10608,31002,-10608,31002,-10608,31002,-10608,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30567,-11802,30567,-11802,30567,-11802,30567,-11802,
-                                  30333,-12393,30333,-12393,30333,-12393,30333,-12393,
-                                  30087,-12979,30087,-12979,30087,-12979,30087,-12979,
-                                  29829,-13560,29829,-13560,29829,-13560,29829,-13560,
-                                  29561,-14136,29561,-14136,29561,-14136,29561,-14136,
-                                  29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                  28990,-15271,28990,-15271,28990,-15271,28990,-15271,
-                                  28689,-15831,28689,-15831,28689,-15831,28689,-15831,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28054,-16931,28054,-16931,28054,-16931,28054,-16931,
-                                  27720,-17472,27720,-17472,27720,-17472,27720,-17472,
-                                  27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                  27022,-18534,27022,-18534,27022,-18534,27022,-18534,
-                                  26657,-19054,26657,-19054,26657,-19054,26657,-19054,
-                                  26283,-19568,26283,-19568,26283,-19568,26283,-19568,
-                                  25898,-20074,25898,-20074,25898,-20074,25898,-20074,
-                                  25504,-20572,25504,-20572,25504,-20572,25504,-20572,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24687,-21546,24687,-21546,24687,-21546,24687,-21546,
-                                  24265,-22020,24265,-22020,24265,-22020,24265,-22020,
-                                  23833,-22487,23833,-22487,23833,-22487,23833,-22487,
-                                  23393,-22945,23393,-22945,23393,-22945,23393,-22945,
-                                  22944,-23394,22944,-23394,22944,-23394,22944,-23394,
-                                  22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                  22019,-24266,22019,-24266,22019,-24266,22019,-24266,
-                                  21545,-24688,21545,-24688,21545,-24688,21545,-24688,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20571,-25505,20571,-25505,20571,-25505,20571,-25505,
-                                  20073,-25899,20073,-25899,20073,-25899,20073,-25899,
-                                  19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                  19053,-26658,19053,-26658,19053,-26658,19053,-26658,
-                                  18533,-27023,18533,-27023,18533,-27023,18533,-27023,
-                                  18005,-27377,18005,-27377,18005,-27377,18005,-27377,
-                                  17471,-27721,17471,-27721,17471,-27721,17471,-27721,
-                                  16930,-28055,16930,-28055,16930,-28055,16930,-28055,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15830,-28690,15830,-28690,15830,-28690,15830,-28690,
-                                  15270,-28991,15270,-28991,15270,-28991,15270,-28991,
-                                  14705,-29282,14705,-29282,14705,-29282,14705,-29282,
-                                  14135,-29562,14135,-29562,14135,-29562,14135,-29562,
-                                  13559,-29830,13559,-29830,13559,-29830,13559,-29830,
-                                  12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                  12392,-30334,12392,-30334,12392,-30334,12392,-30334,
-                                  11801,-30568,11801,-30568,11801,-30568,11801,-30568,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10607,-31003,10607,-31003,10607,-31003,10607,-31003,
-                                  10004,-31203,10004,-31203,10004,-31203,10004,-31203,
-                                  9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                  8787,-31567,8787,-31567,8787,-31567,8787,-31567,
-                                  8173,-31732,8173,-31732,8173,-31732,8173,-31732,
-                                  7556,-31884,7556,-31884,7556,-31884,7556,-31884,
-                                  6936,-32025,6936,-32025,6936,-32025,6936,-32025,
-                                  6314,-32153,6314,-32153,6314,-32153,6314,-32153,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5063,-32374,5063,-32374,5063,-32374,5063,-32374,
-                                  4434,-32466,4434,-32466,4434,-32466,4434,-32466,
-                                  3804,-32546,3804,-32546,3804,-32546,3804,-32546,
-                                  3172,-32614,3172,-32614,3172,-32614,3172,-32614,
-                                  2539,-32669,2539,-32669,2539,-32669,2539,-32669,
-                                  1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                  1270,-32743,1270,-32743,1270,-32743,1270,-32743,
-                                  635,-32761,635,-32761,635,-32761,635,-32761,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -636,-32761,-636,-32761,-636,-32761,-636,-32761,
-                                  -1271,-32743,-1271,-32743,-1271,-32743,-1271,-32743,
-                                  -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                  -2540,-32669,-2540,-32669,-2540,-32669,-2540,-32669,
-                                  -3173,-32614,-3173,-32614,-3173,-32614,-3173,-32614,
-                                  -3805,-32546,-3805,-32546,-3805,-32546,-3805,-32546,
-                                  -4435,-32466,-4435,-32466,-4435,-32466,-4435,-32466,
-                                  -5064,-32374,-5064,-32374,-5064,-32374,-5064,-32374,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6315,-32153,-6315,-32153,-6315,-32153,-6315,-32153,
-                                  -6937,-32025,-6937,-32025,-6937,-32025,-6937,-32025,
-                                  -7557,-31884,-7557,-31884,-7557,-31884,-7557,-31884,
-                                  -8174,-31732,-8174,-31732,-8174,-31732,-8174,-31732,
-                                  -8788,-31567,-8788,-31567,-8788,-31567,-8788,-31567,
-                                  -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                  -10005,-31203,-10005,-31203,-10005,-31203,-10005,-31203,
-                                  -10608,-31003,-10608,-31003,-10608,-31003,-10608,-31003,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -11802,-30568,-11802,-30568,-11802,-30568,-11802,-30568,
-                                  -12393,-30334,-12393,-30334,-12393,-30334,-12393,-30334,
-                                  -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                  -13560,-29830,-13560,-29830,-13560,-29830,-13560,-29830,
-                                  -14136,-29562,-14136,-29562,-14136,-29562,-14136,-29562,
-                                  -14706,-29282,-14706,-29282,-14706,-29282,-14706,-29282,
-                                  -15271,-28991,-15271,-28991,-15271,-28991,-15271,-28991,
-                                  -15831,-28690,-15831,-28690,-15831,-28690,-15831,-28690
-                                 };
-static int16_t twb324[107*2*4] = {32742,-1271,32742,-1271,32742,-1271,32742,-1271,
-                                  32668,-2540,32668,-2540,32668,-2540,32668,-2540,
-                                  32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                  32373,-5064,32373,-5064,32373,-5064,32373,-5064,
-                                  32152,-6315,32152,-6315,32152,-6315,32152,-6315,
-                                  31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                  31566,-8788,31566,-8788,31566,-8788,31566,-8788,
-                                  31202,-10005,31202,-10005,31202,-10005,31202,-10005,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30333,-12393,30333,-12393,30333,-12393,30333,-12393,
-                                  29829,-13560,29829,-13560,29829,-13560,29829,-13560,
-                                  29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                  28689,-15831,28689,-15831,28689,-15831,28689,-15831,
-                                  28054,-16931,28054,-16931,28054,-16931,28054,-16931,
-                                  27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                  26657,-19054,26657,-19054,26657,-19054,26657,-19054,
-                                  25898,-20074,25898,-20074,25898,-20074,25898,-20074,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24265,-22020,24265,-22020,24265,-22020,24265,-22020,
-                                  23393,-22945,23393,-22945,23393,-22945,23393,-22945,
-                                  22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                  21545,-24688,21545,-24688,21545,-24688,21545,-24688,
-                                  20571,-25505,20571,-25505,20571,-25505,20571,-25505,
-                                  19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                  18533,-27023,18533,-27023,18533,-27023,18533,-27023,
-                                  17471,-27721,17471,-27721,17471,-27721,17471,-27721,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15270,-28991,15270,-28991,15270,-28991,15270,-28991,
-                                  14135,-29562,14135,-29562,14135,-29562,14135,-29562,
-                                  12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                  11801,-30568,11801,-30568,11801,-30568,11801,-30568,
-                                  10607,-31003,10607,-31003,10607,-31003,10607,-31003,
-                                  9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                  8173,-31732,8173,-31732,8173,-31732,8173,-31732,
-                                  6936,-32025,6936,-32025,6936,-32025,6936,-32025,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  4434,-32466,4434,-32466,4434,-32466,4434,-32466,
-                                  3172,-32614,3172,-32614,3172,-32614,3172,-32614,
-                                  1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                  635,-32761,635,-32761,635,-32761,635,-32761,
-                                  -636,-32761,-636,-32761,-636,-32761,-636,-32761,
-                                  -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                  -3173,-32614,-3173,-32614,-3173,-32614,-3173,-32614,
-                                  -4435,-32466,-4435,-32466,-4435,-32466,-4435,-32466,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6937,-32025,-6937,-32025,-6937,-32025,-6937,-32025,
-                                  -8174,-31732,-8174,-31732,-8174,-31732,-8174,-31732,
-                                  -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                  -10608,-31003,-10608,-31003,-10608,-31003,-10608,-31003,
-                                  -11802,-30568,-11802,-30568,-11802,-30568,-11802,-30568,
-                                  -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                  -14136,-29562,-14136,-29562,-14136,-29562,-14136,-29562,
-                                  -15271,-28991,-15271,-28991,-15271,-28991,-15271,-28991,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -17472,-27721,-17472,-27721,-17472,-27721,-17472,-27721,
-                                  -18534,-27023,-18534,-27023,-18534,-27023,-18534,-27023,
-                                  -19568,-26284,-19568,-26284,-19568,-26284,-19568,-26284,
-                                  -20572,-25505,-20572,-25505,-20572,-25505,-20572,-25505,
-                                  -21546,-24688,-21546,-24688,-21546,-24688,-21546,-24688,
-                                  -22487,-23834,-22487,-23834,-22487,-23834,-22487,-23834,
-                                  -23394,-22945,-23394,-22945,-23394,-22945,-23394,-22945,
-                                  -24266,-22020,-24266,-22020,-24266,-22020,-24266,-22020,
-                                  -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                  -25899,-20074,-25899,-20074,-25899,-20074,-25899,-20074,
-                                  -26658,-19054,-26658,-19054,-26658,-19054,-26658,-19054,
-                                  -27377,-18006,-27377,-18006,-27377,-18006,-27377,-18006,
-                                  -28055,-16931,-28055,-16931,-28055,-16931,-28055,-16931,
-                                  -28690,-15831,-28690,-15831,-28690,-15831,-28690,-15831,
-                                  -29282,-14706,-29282,-14706,-29282,-14706,-29282,-14706,
-                                  -29830,-13560,-29830,-13560,-29830,-13560,-29830,-13560,
-                                  -30334,-12393,-30334,-12393,-30334,-12393,-30334,-12393,
-                                  -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                  -31203,-10005,-31203,-10005,-31203,-10005,-31203,-10005,
-                                  -31567,-8788,-31567,-8788,-31567,-8788,-31567,-8788,
-                                  -31884,-7557,-31884,-7557,-31884,-7557,-31884,-7557,
-                                  -32153,-6315,-32153,-6315,-32153,-6315,-32153,-6315,
-                                  -32374,-5064,-32374,-5064,-32374,-5064,-32374,-5064,
-                                  -32546,-3805,-32546,-3805,-32546,-3805,-32546,-3805,
-                                  -32669,-2540,-32669,-2540,-32669,-2540,-32669,-2540,
-                                  -32743,-1271,-32743,-1271,-32743,-1271,-32743,-1271,
-                                  -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                  -32743,1270,-32743,1270,-32743,1270,-32743,1270,
-                                  -32669,2539,-32669,2539,-32669,2539,-32669,2539,
-                                  -32546,3804,-32546,3804,-32546,3804,-32546,3804,
-                                  -32374,5063,-32374,5063,-32374,5063,-32374,5063,
-                                  -32153,6314,-32153,6314,-32153,6314,-32153,6314,
-                                  -31884,7556,-31884,7556,-31884,7556,-31884,7556,
-                                  -31567,8787,-31567,8787,-31567,8787,-31567,8787,
-                                  -31203,10004,-31203,10004,-31203,10004,-31203,10004,
-                                  -30791,11206,-30791,11206,-30791,11206,-30791,11206,
-                                  -30334,12392,-30334,12392,-30334,12392,-30334,12392,
-                                  -29830,13559,-29830,13559,-29830,13559,-29830,13559,
-                                  -29282,14705,-29282,14705,-29282,14705,-29282,14705,
-                                  -28690,15830,-28690,15830,-28690,15830,-28690,15830,
-                                  -28055,16930,-28055,16930,-28055,16930,-28055,16930,
-                                  -27377,18005,-27377,18005,-27377,18005,-27377,18005,
-                                  -26658,19053,-26658,19053,-26658,19053,-26658,19053,
-                                  -25899,20073,-25899,20073,-25899,20073,-25899,20073,
-                                  -25101,21062,-25101,21062,-25101,21062,-25101,21062,
-                                  -24266,22019,-24266,22019,-24266,22019,-24266,22019,
-                                  -23394,22944,-23394,22944,-23394,22944,-23394,22944,
-                                  -22487,23833,-22487,23833,-22487,23833,-22487,23833,
-                                  -21546,24687,-21546,24687,-21546,24687,-21546,24687,
-                                  -20572,25504,-20572,25504,-20572,25504,-20572,25504,
-                                  -19568,26283,-19568,26283,-19568,26283,-19568,26283,
-                                  -18534,27022,-18534,27022,-18534,27022,-18534,27022,
-                                  -17472,27720,-17472,27720,-17472,27720,-17472,27720
-                                 };
+static int16_t twa324[107*2*4];
+static int16_t twb324[107*2*4];
 
 void dft324(int16_t *x,int16_t *y,unsigned char scale_flag)  // 108 x 3
 {
@@ -8996,271 +7603,8 @@ void dft324(int16_t *x,int16_t *y,unsigned char scale_flag)  // 108 x 3
 
 };
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:119)/360));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:119)/360));
-twa2 = zeros(1,2*119);
-twb2 = zeros(1,2*119);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa360[119*2*4] = {");
-for i=1:2:(2*118)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"static int16_t twb360[119*2*4] = {");
-for i=1:2:(2*118)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fclose(fd);
- */
-static int16_t twa360[119*2*4] = {32762,-572,32762,-572,32762,-572,32762,-572,
-                                  32747,-1144,32747,-1144,32747,-1144,32747,-1144,
-                                  32722,-1715,32722,-1715,32722,-1715,32722,-1715,
-                                  32687,-2286,32687,-2286,32687,-2286,32687,-2286,
-                                  32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                  32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                  32522,-3994,32522,-3994,32522,-3994,32522,-3994,
-                                  32448,-4561,32448,-4561,32448,-4561,32448,-4561,
-                                  32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32164,-6253,32164,-6253,32164,-6253,32164,-6253,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  31927,-7371,31927,-7371,31927,-7371,31927,-7371,
-                                  31793,-7928,31793,-7928,31793,-7928,31793,-7928,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31497,-9032,31497,-9032,31497,-9032,31497,-9032,
-                                  31335,-9581,31335,-9581,31335,-9581,31335,-9581,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  30981,-10668,30981,-10668,30981,-10668,30981,-10668,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30590,-11743,30590,-11743,30590,-11743,30590,-11743,
-                                  30381,-12275,30381,-12275,30381,-12275,30381,-12275,
-                                  30162,-12804,30162,-12804,30162,-12804,30162,-12804,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                  29450,-14365,29450,-14365,29450,-14365,29450,-14365,
-                                  29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                                  28931,-15384,28931,-15384,28931,-15384,28931,-15384,
-                                  28658,-15886,28658,-15886,28658,-15886,28658,-15886,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28086,-16877,28086,-16877,28086,-16877,28086,-16877,
-                                  27787,-17364,27787,-17364,27787,-17364,27787,-17364,
-                                  27480,-17847,27480,-17847,27480,-17847,27480,-17847,
-                                  27165,-18324,27165,-18324,27165,-18324,27165,-18324,
-                                  26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  26168,-19720,26168,-19720,26168,-19720,26168,-19720,
-                                  25820,-20174,25820,-20174,25820,-20174,25820,-20174,
-                                  25464,-20621,25464,-20621,25464,-20621,25464,-20621,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24729,-21498,24729,-21498,24729,-21498,24729,-21498,
-                                  24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                  23964,-22348,23964,-22348,23964,-22348,23964,-22348,
-                                  23570,-22762,23570,-22762,23570,-22762,23570,-22762,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22761,-23571,22761,-23571,22761,-23571,22761,-23571,
-                                  22347,-23965,22347,-23965,22347,-23965,22347,-23965,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21497,-24730,21497,-24730,21497,-24730,21497,-24730,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20620,-25465,20620,-25465,20620,-25465,20620,-25465,
-                                  20173,-25821,20173,-25821,20173,-25821,20173,-25821,
-                                  19719,-26169,19719,-26169,19719,-26169,19719,-26169,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                  18323,-27166,18323,-27166,18323,-27166,18323,-27166,
-                                  17846,-27481,17846,-27481,17846,-27481,17846,-27481,
-                                  17363,-27788,17363,-27788,17363,-27788,17363,-27788,
-                                  16876,-28087,16876,-28087,16876,-28087,16876,-28087,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15885,-28659,15885,-28659,15885,-28659,15885,-28659,
-                                  15383,-28932,15383,-28932,15383,-28932,15383,-28932,
-                                  14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                                  14364,-29451,14364,-29451,14364,-29451,14364,-29451,
-                                  13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                  13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                  12803,-30163,12803,-30163,12803,-30163,12803,-30163,
-                                  12274,-30382,12274,-30382,12274,-30382,12274,-30382,
-                                  11742,-30591,11742,-30591,11742,-30591,11742,-30591,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10667,-30982,10667,-30982,10667,-30982,10667,-30982,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9580,-31336,9580,-31336,9580,-31336,9580,-31336,
-                                  9031,-31498,9031,-31498,9031,-31498,9031,-31498,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  7927,-31794,7927,-31794,7927,-31794,7927,-31794,
-                                  7370,-31928,7370,-31928,7370,-31928,7370,-31928,
-                                  6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                  6252,-32165,6252,-32165,6252,-32165,6252,-32165,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                                  4560,-32449,4560,-32449,4560,-32449,4560,-32449,
-                                  3993,-32523,3993,-32523,3993,-32523,3993,-32523,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                  2285,-32688,2285,-32688,2285,-32688,2285,-32688,
-                                  1714,-32723,1714,-32723,1714,-32723,1714,-32723,
-                                  1143,-32748,1143,-32748,1143,-32748,1143,-32748,
-                                  571,-32763,571,-32763,571,-32763,571,-32763,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -572,-32763,-572,-32763,-572,-32763,-572,-32763,
-                                  -1144,-32748,-1144,-32748,-1144,-32748,-1144,-32748,
-                                  -1715,-32723,-1715,-32723,-1715,-32723,-1715,-32723,
-                                  -2286,-32688,-2286,-32688,-2286,-32688,-2286,-32688,
-                                  -2856,-32643,-2856,-32643,-2856,-32643,-2856,-32643,
-                                  -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                  -3994,-32523,-3994,-32523,-3994,-32523,-3994,-32523,
-                                  -4561,-32449,-4561,-32449,-4561,-32449,-4561,-32449,
-                                  -5126,-32364,-5126,-32364,-5126,-32364,-5126,-32364,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6253,-32165,-6253,-32165,-6253,-32165,-6253,-32165,
-                                  -6813,-32051,-6813,-32051,-6813,-32051,-6813,-32051,
-                                  -7371,-31928,-7371,-31928,-7371,-31928,-7371,-31928,
-                                  -7928,-31794,-7928,-31794,-7928,-31794,-7928,-31794,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -9032,-31498,-9032,-31498,-9032,-31498,-9032,-31498,
-                                  -9581,-31336,-9581,-31336,-9581,-31336,-9581,-31336,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -10668,-30982,-10668,-30982,-10668,-30982,-10668,-30982,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -11743,-30591,-11743,-30591,-11743,-30591,-11743,-30591,
-                                  -12275,-30382,-12275,-30382,-12275,-30382,-12275,-30382,
-                                  -12804,-30163,-12804,-30163,-12804,-30163,-12804,-30163,
-                                  -13328,-29935,-13328,-29935,-13328,-29935,-13328,-29935,
-                                  -13848,-29697,-13848,-29697,-13848,-29697,-13848,-29697,
-                                  -14365,-29451,-14365,-29451,-14365,-29451,-14365,-29451,
-                                  -14876,-29196,-14876,-29196,-14876,-29196,-14876,-29196,
-                                  -15384,-28932,-15384,-28932,-15384,-28932,-15384,-28932,
-                                  -15886,-28659,-15886,-28659,-15886,-28659,-15886,-28659
-                                 };
-static int16_t twb360[119*2*4] = {32747,-1144,32747,-1144,32747,-1144,32747,-1144,
-                                  32687,-2286,32687,-2286,32687,-2286,32687,-2286,
-                                  32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                  32448,-4561,32448,-4561,32448,-4561,32448,-4561,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  31793,-7928,31793,-7928,31793,-7928,31793,-7928,
-                                  31497,-9032,31497,-9032,31497,-9032,31497,-9032,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30381,-12275,30381,-12275,30381,-12275,30381,-12275,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29450,-14365,29450,-14365,29450,-14365,29450,-14365,
-                                  28931,-15384,28931,-15384,28931,-15384,28931,-15384,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  27787,-17364,27787,-17364,27787,-17364,27787,-17364,
-                                  27165,-18324,27165,-18324,27165,-18324,27165,-18324,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  25820,-20174,25820,-20174,25820,-20174,25820,-20174,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                  23570,-22762,23570,-22762,23570,-22762,23570,-22762,
-                                  22761,-23571,22761,-23571,22761,-23571,22761,-23571,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20173,-25821,20173,-25821,20173,-25821,20173,-25821,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  18323,-27166,18323,-27166,18323,-27166,18323,-27166,
-                                  17363,-27788,17363,-27788,17363,-27788,17363,-27788,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15383,-28932,15383,-28932,15383,-28932,15383,-28932,
-                                  14364,-29451,14364,-29451,14364,-29451,14364,-29451,
-                                  13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                  12274,-30382,12274,-30382,12274,-30382,12274,-30382,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9031,-31498,9031,-31498,9031,-31498,9031,-31498,
-                                  7927,-31794,7927,-31794,7927,-31794,7927,-31794,
-                                  6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  4560,-32449,4560,-32449,4560,-32449,4560,-32449,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  2285,-32688,2285,-32688,2285,-32688,2285,-32688,
-                                  1143,-32748,1143,-32748,1143,-32748,1143,-32748,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -1144,-32748,-1144,-32748,-1144,-32748,-1144,-32748,
-                                  -2286,-32688,-2286,-32688,-2286,-32688,-2286,-32688,
-                                  -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                  -4561,-32449,-4561,-32449,-4561,-32449,-4561,-32449,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6813,-32051,-6813,-32051,-6813,-32051,-6813,-32051,
-                                  -7928,-31794,-7928,-31794,-7928,-31794,-7928,-31794,
-                                  -9032,-31498,-9032,-31498,-9032,-31498,-9032,-31498,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -12275,-30382,-12275,-30382,-12275,-30382,-12275,-30382,
-                                  -13328,-29935,-13328,-29935,-13328,-29935,-13328,-29935,
-                                  -14365,-29451,-14365,-29451,-14365,-29451,-14365,-29451,
-                                  -15384,-28932,-15384,-28932,-15384,-28932,-15384,-28932,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -17364,-27788,-17364,-27788,-17364,-27788,-17364,-27788,
-                                  -18324,-27166,-18324,-27166,-18324,-27166,-18324,-27166,
-                                  -19260,-26510,-19260,-26510,-19260,-26510,-19260,-26510,
-                                  -20174,-25821,-20174,-25821,-20174,-25821,-20174,-25821,
-                                  -21063,-25101,-21063,-25101,-21063,-25101,-21063,-25101,
-                                  -21926,-24351,-21926,-24351,-21926,-24351,-21926,-24351,
-                                  -22762,-23571,-22762,-23571,-22762,-23571,-22762,-23571,
-                                  -23571,-22762,-23571,-22762,-23571,-22762,-23571,-22762,
-                                  -24351,-21926,-24351,-21926,-24351,-21926,-24351,-21926,
-                                  -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                  -25821,-20174,-25821,-20174,-25821,-20174,-25821,-20174,
-                                  -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                                  -27166,-18324,-27166,-18324,-27166,-18324,-27166,-18324,
-                                  -27788,-17364,-27788,-17364,-27788,-17364,-27788,-17364,
-                                  -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                  -28932,-15384,-28932,-15384,-28932,-15384,-28932,-15384,
-                                  -29451,-14365,-29451,-14365,-29451,-14365,-29451,-14365,
-                                  -29935,-13328,-29935,-13328,-29935,-13328,-29935,-13328,
-                                  -30382,-12275,-30382,-12275,-30382,-12275,-30382,-12275,
-                                  -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                  -31164,-10126,-31164,-10126,-31164,-10126,-31164,-10126,
-                                  -31498,-9032,-31498,-9032,-31498,-9032,-31498,-9032,
-                                  -31794,-7928,-31794,-7928,-31794,-7928,-31794,-7928,
-                                  -32051,-6813,-32051,-6813,-32051,-6813,-32051,-6813,
-                                  -32270,-5690,-32270,-5690,-32270,-5690,-32270,-5690,
-                                  -32449,-4561,-32449,-4561,-32449,-4561,-32449,-4561,
-                                  -32588,-3426,-32588,-3426,-32588,-3426,-32588,-3426,
-                                  -32688,-2286,-32688,-2286,-32688,-2286,-32688,-2286,
-                                  -32748,-1144,-32748,-1144,-32748,-1144,-32748,-1144,
-                                  -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                  -32748,1143,-32748,1143,-32748,1143,-32748,1143,
-                                  -32688,2285,-32688,2285,-32688,2285,-32688,2285,
-                                  -32588,3425,-32588,3425,-32588,3425,-32588,3425,
-                                  -32449,4560,-32449,4560,-32449,4560,-32449,4560,
-                                  -32270,5689,-32270,5689,-32270,5689,-32270,5689,
-                                  -32051,6812,-32051,6812,-32051,6812,-32051,6812,
-                                  -31794,7927,-31794,7927,-31794,7927,-31794,7927,
-                                  -31498,9031,-31498,9031,-31498,9031,-31498,9031,
-                                  -31164,10125,-31164,10125,-31164,10125,-31164,10125,
-                                  -30791,11206,-30791,11206,-30791,11206,-30791,11206,
-                                  -30382,12274,-30382,12274,-30382,12274,-30382,12274,
-                                  -29935,13327,-29935,13327,-29935,13327,-29935,13327,
-                                  -29451,14364,-29451,14364,-29451,14364,-29451,14364,
-                                  -28932,15383,-28932,15383,-28932,15383,-28932,15383,
-                                  -28378,16383,-28378,16383,-28378,16383,-28378,16383,
-                                  -27788,17363,-27788,17363,-27788,17363,-27788,17363,
-                                  -27166,18323,-27166,18323,-27166,18323,-27166,18323,
-                                  -26510,19259,-26510,19259,-26510,19259,-26510,19259,
-                                  -25821,20173,-25821,20173,-25821,20173,-25821,20173,
-                                  -25101,21062,-25101,21062,-25101,21062,-25101,21062,
-                                  -24351,21925,-24351,21925,-24351,21925,-24351,21925,
-                                  -23571,22761,-23571,22761,-23571,22761,-23571,22761,
-                                  -22762,23570,-22762,23570,-22762,23570,-22762,23570,
-                                  -21926,24350,-21926,24350,-21926,24350,-21926,24350,
-                                  -21063,25100,-21063,25100,-21063,25100,-21063,25100,
-                                  -20174,25820,-20174,25820,-20174,25820,-20174,25820,
-                                  -19260,26509,-19260,26509,-19260,26509,-19260,26509,
-                                  -18324,27165,-18324,27165,-18324,27165,-18324,27165,
-                                  -17364,27787,-17364,27787,-17364,27787,-17364,27787
-                                 };
-
+static int16_t twa360[119*2*4];
+static int16_t twb360[119*2*4];
 
 void dft360(int16_t *x,int16_t *y,unsigned char scale_flag)  // 120 x 3
 {
@@ -9310,329 +7654,9 @@ void dft360(int16_t *x,int16_t *y,unsigned char scale_flag)  // 120 x 3
 
 };
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:95)/384));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:95)/384));
-twc = floor(32767*exp(-sqrt(-1)*2*pi*3*(1:95)/384));
-twa2 = zeros(1,2*95);
-twb2 = zeros(1,2*95);
-twc2 = zeros(1,2*95);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-twc2(1:2:end) = real(twc);
-twc2(2:2:end) = imag(twc);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa384[95*2*4] = {");
-for i=1:2:(2*94)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"static int16_t twb384[95*2*4] = {");
-for i=1:2:(2*94)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fprintf(fd,"static int16_t twc384[95*2*4] = {");
-for i=1:2:(2*94)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1));
-fclose(fd);
- */
-
-static int16_t twa384[95*2*4] = {32762,-537,32762,-537,32762,-537,32762,-537,
-                                 32749,-1073,32749,-1073,32749,-1073,32749,-1073,
-                                 32727,-1608,32727,-1608,32727,-1608,32727,-1608,
-                                 32696,-2144,32696,-2144,32696,-2144,32696,-2144,
-                                 32657,-2678,32657,-2678,32657,-2678,32657,-2678,
-                                 32609,-3212,32609,-3212,32609,-3212,32609,-3212,
-                                 32552,-3745,32552,-3745,32552,-3745,32552,-3745,
-                                 32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                 32412,-4808,32412,-4808,32412,-4808,32412,-4808,
-                                 32329,-5338,32329,-5338,32329,-5338,32329,-5338,
-                                 32237,-5866,32237,-5866,32237,-5866,32237,-5866,
-                                 32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                 32028,-6918,32028,-6918,32028,-6918,32028,-6918,
-                                 31911,-7441,31911,-7441,31911,-7441,31911,-7441,
-                                 31785,-7962,31785,-7962,31785,-7962,31785,-7962,
-                                 31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                 31507,-8998,31507,-8998,31507,-8998,31507,-8998,
-                                 31356,-9512,31356,-9512,31356,-9512,31356,-9512,
-                                 31196,-10024,31196,-10024,31196,-10024,31196,-10024,
-                                 31028,-10533,31028,-10533,31028,-10533,31028,-10533,
-                                 30851,-11039,30851,-11039,30851,-11039,30851,-11039,
-                                 30666,-11543,30666,-11543,30666,-11543,30666,-11543,
-                                 30473,-12043,30473,-12043,30473,-12043,30473,-12043,
-                                 30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                 30063,-13034,30063,-13034,30063,-13034,30063,-13034,
-                                 29846,-13524,29846,-13524,29846,-13524,29846,-13524,
-                                 29621,-14010,29621,-14010,29621,-14010,29621,-14010,
-                                 29387,-14493,29387,-14493,29387,-14493,29387,-14493,
-                                 29146,-14972,29146,-14972,29146,-14972,29146,-14972,
-                                 28897,-15447,28897,-15447,28897,-15447,28897,-15447,
-                                 28641,-15918,28641,-15918,28641,-15918,28641,-15918,
-                                 28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                 28105,-16846,28105,-16846,28105,-16846,28105,-16846,
-                                 27825,-17304,27825,-17304,27825,-17304,27825,-17304,
-                                 27538,-17757,27538,-17757,27538,-17757,27538,-17757,
-                                 27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                 26943,-18648,26943,-18648,26943,-18648,26943,-18648,
-                                 26634,-19087,26634,-19087,26634,-19087,26634,-19087,
-                                 26318,-19520,26318,-19520,26318,-19520,26318,-19520,
-                                 25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                 25665,-20370,25665,-20370,25665,-20370,25665,-20370,
-                                 25329,-20788,25329,-20788,25329,-20788,25329,-20788,
-                                 24985,-21199,24985,-21199,24985,-21199,24985,-21199,
-                                 24635,-21605,24635,-21605,24635,-21605,24635,-21605,
-                                 24278,-22005,24278,-22005,24278,-22005,24278,-22005,
-                                 23915,-22400,23915,-22400,23915,-22400,23915,-22400,
-                                 23545,-22788,23545,-22788,23545,-22788,23545,-22788,
-                                 23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                 22787,-23546,22787,-23546,22787,-23546,22787,-23546,
-                                 22399,-23916,22399,-23916,22399,-23916,22399,-23916,
-                                 22004,-24279,22004,-24279,22004,-24279,22004,-24279,
-                                 21604,-24636,21604,-24636,21604,-24636,21604,-24636,
-                                 21198,-24986,21198,-24986,21198,-24986,21198,-24986,
-                                 20787,-25330,20787,-25330,20787,-25330,20787,-25330,
-                                 20369,-25666,20369,-25666,20369,-25666,20369,-25666,
-                                 19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                 19519,-26319,19519,-26319,19519,-26319,19519,-26319,
-                                 19086,-26635,19086,-26635,19086,-26635,19086,-26635,
-                                 18647,-26944,18647,-26944,18647,-26944,18647,-26944,
-                                 18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                 17756,-27539,17756,-27539,17756,-27539,17756,-27539,
-                                 17303,-27826,17303,-27826,17303,-27826,17303,-27826,
-                                 16845,-28106,16845,-28106,16845,-28106,16845,-28106,
-                                 16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                 15917,-28642,15917,-28642,15917,-28642,15917,-28642,
-                                 15446,-28898,15446,-28898,15446,-28898,15446,-28898,
-                                 14971,-29147,14971,-29147,14971,-29147,14971,-29147,
-                                 14492,-29388,14492,-29388,14492,-29388,14492,-29388,
-                                 14009,-29622,14009,-29622,14009,-29622,14009,-29622,
-                                 13523,-29847,13523,-29847,13523,-29847,13523,-29847,
-                                 13033,-30064,13033,-30064,13033,-30064,13033,-30064,
-                                 12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                 12042,-30474,12042,-30474,12042,-30474,12042,-30474,
-                                 11542,-30667,11542,-30667,11542,-30667,11542,-30667,
-                                 11038,-30852,11038,-30852,11038,-30852,11038,-30852,
-                                 10532,-31029,10532,-31029,10532,-31029,10532,-31029,
-                                 10023,-31197,10023,-31197,10023,-31197,10023,-31197,
-                                 9511,-31357,9511,-31357,9511,-31357,9511,-31357,
-                                 8997,-31508,8997,-31508,8997,-31508,8997,-31508,
-                                 8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                 7961,-31786,7961,-31786,7961,-31786,7961,-31786,
-                                 7440,-31912,7440,-31912,7440,-31912,7440,-31912,
-                                 6917,-32029,6917,-32029,6917,-32029,6917,-32029,
-                                 6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                 5865,-32238,5865,-32238,5865,-32238,5865,-32238,
-                                 5337,-32330,5337,-32330,5337,-32330,5337,-32330,
-                                 4807,-32413,4807,-32413,4807,-32413,4807,-32413,
-                                 4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                 3744,-32553,3744,-32553,3744,-32553,3744,-32553,
-                                 3211,-32610,3211,-32610,3211,-32610,3211,-32610,
-                                 2677,-32658,2677,-32658,2677,-32658,2677,-32658,
-                                 2143,-32697,2143,-32697,2143,-32697,2143,-32697,
-                                 1607,-32728,1607,-32728,1607,-32728,1607,-32728,
-                                 1072,-32750,1072,-32750,1072,-32750,1072,-32750,
-                                 536,-32763,536,-32763,536,-32763,536,-32763
-                                };
-static int16_t twb384[95*2*4] = {32749,-1073,32749,-1073,32749,-1073,32749,-1073,
-                                 32696,-2144,32696,-2144,32696,-2144,32696,-2144,
-                                 32609,-3212,32609,-3212,32609,-3212,32609,-3212,
-                                 32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                 32329,-5338,32329,-5338,32329,-5338,32329,-5338,
-                                 32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                 31911,-7441,31911,-7441,31911,-7441,31911,-7441,
-                                 31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                 31356,-9512,31356,-9512,31356,-9512,31356,-9512,
-                                 31028,-10533,31028,-10533,31028,-10533,31028,-10533,
-                                 30666,-11543,30666,-11543,30666,-11543,30666,-11543,
-                                 30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                 29846,-13524,29846,-13524,29846,-13524,29846,-13524,
-                                 29387,-14493,29387,-14493,29387,-14493,29387,-14493,
-                                 28897,-15447,28897,-15447,28897,-15447,28897,-15447,
-                                 28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                 27825,-17304,27825,-17304,27825,-17304,27825,-17304,
-                                 27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                 26634,-19087,26634,-19087,26634,-19087,26634,-19087,
-                                 25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                 25329,-20788,25329,-20788,25329,-20788,25329,-20788,
-                                 24635,-21605,24635,-21605,24635,-21605,24635,-21605,
-                                 23915,-22400,23915,-22400,23915,-22400,23915,-22400,
-                                 23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                 22399,-23916,22399,-23916,22399,-23916,22399,-23916,
-                                 21604,-24636,21604,-24636,21604,-24636,21604,-24636,
-                                 20787,-25330,20787,-25330,20787,-25330,20787,-25330,
-                                 19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                 19086,-26635,19086,-26635,19086,-26635,19086,-26635,
-                                 18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                 17303,-27826,17303,-27826,17303,-27826,17303,-27826,
-                                 16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                 15446,-28898,15446,-28898,15446,-28898,15446,-28898,
-                                 14492,-29388,14492,-29388,14492,-29388,14492,-29388,
-                                 13523,-29847,13523,-29847,13523,-29847,13523,-29847,
-                                 12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                 11542,-30667,11542,-30667,11542,-30667,11542,-30667,
-                                 10532,-31029,10532,-31029,10532,-31029,10532,-31029,
-                                 9511,-31357,9511,-31357,9511,-31357,9511,-31357,
-                                 8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                 7440,-31912,7440,-31912,7440,-31912,7440,-31912,
-                                 6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                 5337,-32330,5337,-32330,5337,-32330,5337,-32330,
-                                 4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                 3211,-32610,3211,-32610,3211,-32610,3211,-32610,
-                                 2143,-32697,2143,-32697,2143,-32697,2143,-32697,
-                                 1072,-32750,1072,-32750,1072,-32750,1072,-32750,
-                                 0,-32767,0,-32767,0,-32767,0,-32767,
-                                 -1073,-32750,-1073,-32750,-1073,-32750,-1073,-32750,
-                                 -2144,-32697,-2144,-32697,-2144,-32697,-2144,-32697,
-                                 -3212,-32610,-3212,-32610,-3212,-32610,-3212,-32610,
-                                 -4277,-32487,-4277,-32487,-4277,-32487,-4277,-32487,
-                                 -5338,-32330,-5338,-32330,-5338,-32330,-5338,-32330,
-                                 -6393,-32138,-6393,-32138,-6393,-32138,-6393,-32138,
-                                 -7441,-31912,-7441,-31912,-7441,-31912,-7441,-31912,
-                                 -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                 -9512,-31357,-9512,-31357,-9512,-31357,-9512,-31357,
-                                 -10533,-31029,-10533,-31029,-10533,-31029,-10533,-31029,
-                                 -11543,-30667,-11543,-30667,-11543,-30667,-11543,-30667,
-                                 -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                 -13524,-29847,-13524,-29847,-13524,-29847,-13524,-29847,
-                                 -14493,-29388,-14493,-29388,-14493,-29388,-14493,-29388,
-                                 -15447,-28898,-15447,-28898,-15447,-28898,-15447,-28898,
-                                 -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                 -17304,-27826,-17304,-27826,-17304,-27826,-17304,-27826,
-                                 -18205,-27245,-18205,-27245,-18205,-27245,-18205,-27245,
-                                 -19087,-26635,-19087,-26635,-19087,-26635,-19087,-26635,
-                                 -19948,-25996,-19948,-25996,-19948,-25996,-19948,-25996,
-                                 -20788,-25330,-20788,-25330,-20788,-25330,-20788,-25330,
-                                 -21605,-24636,-21605,-24636,-21605,-24636,-21605,-24636,
-                                 -22400,-23916,-22400,-23916,-22400,-23916,-22400,-23916,
-                                 -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                 -23916,-22400,-23916,-22400,-23916,-22400,-23916,-22400,
-                                 -24636,-21605,-24636,-21605,-24636,-21605,-24636,-21605,
-                                 -25330,-20788,-25330,-20788,-25330,-20788,-25330,-20788,
-                                 -25996,-19948,-25996,-19948,-25996,-19948,-25996,-19948,
-                                 -26635,-19087,-26635,-19087,-26635,-19087,-26635,-19087,
-                                 -27245,-18205,-27245,-18205,-27245,-18205,-27245,-18205,
-                                 -27826,-17304,-27826,-17304,-27826,-17304,-27826,-17304,
-                                 -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                 -28898,-15447,-28898,-15447,-28898,-15447,-28898,-15447,
-                                 -29388,-14493,-29388,-14493,-29388,-14493,-29388,-14493,
-                                 -29847,-13524,-29847,-13524,-29847,-13524,-29847,-13524,
-                                 -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                                 -30667,-11543,-30667,-11543,-30667,-11543,-30667,-11543,
-                                 -31029,-10533,-31029,-10533,-31029,-10533,-31029,-10533,
-                                 -31357,-9512,-31357,-9512,-31357,-9512,-31357,-9512,
-                                 -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                                 -31912,-7441,-31912,-7441,-31912,-7441,-31912,-7441,
-                                 -32138,-6393,-32138,-6393,-32138,-6393,-32138,-6393,
-                                 -32330,-5338,-32330,-5338,-32330,-5338,-32330,-5338,
-                                 -32487,-4277,-32487,-4277,-32487,-4277,-32487,-4277,
-                                 -32610,-3212,-32610,-3212,-32610,-3212,-32610,-3212,
-                                 -32697,-2144,-32697,-2144,-32697,-2144,-32697,-2144,
-                                 -32750,-1073,-32750,-1073,-32750,-1073,-32750,-1073
-                                };
-static int16_t twc384[95*2*4] = {32727,-1608,32727,-1608,32727,-1608,32727,-1608,
-                                 32609,-3212,32609,-3212,32609,-3212,32609,-3212,
-                                 32412,-4808,32412,-4808,32412,-4808,32412,-4808,
-                                 32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                 31785,-7962,31785,-7962,31785,-7962,31785,-7962,
-                                 31356,-9512,31356,-9512,31356,-9512,31356,-9512,
-                                 30851,-11039,30851,-11039,30851,-11039,30851,-11039,
-                                 30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                 29621,-14010,29621,-14010,29621,-14010,29621,-14010,
-                                 28897,-15447,28897,-15447,28897,-15447,28897,-15447,
-                                 28105,-16846,28105,-16846,28105,-16846,28105,-16846,
-                                 27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                 26318,-19520,26318,-19520,26318,-19520,26318,-19520,
-                                 25329,-20788,25329,-20788,25329,-20788,25329,-20788,
-                                 24278,-22005,24278,-22005,24278,-22005,24278,-22005,
-                                 23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                 22004,-24279,22004,-24279,22004,-24279,22004,-24279,
-                                 20787,-25330,20787,-25330,20787,-25330,20787,-25330,
-                                 19519,-26319,19519,-26319,19519,-26319,19519,-26319,
-                                 18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                 16845,-28106,16845,-28106,16845,-28106,16845,-28106,
-                                 15446,-28898,15446,-28898,15446,-28898,15446,-28898,
-                                 14009,-29622,14009,-29622,14009,-29622,14009,-29622,
-                                 12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                 11038,-30852,11038,-30852,11038,-30852,11038,-30852,
-                                 9511,-31357,9511,-31357,9511,-31357,9511,-31357,
-                                 7961,-31786,7961,-31786,7961,-31786,7961,-31786,
-                                 6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                 4807,-32413,4807,-32413,4807,-32413,4807,-32413,
-                                 3211,-32610,3211,-32610,3211,-32610,3211,-32610,
-                                 1607,-32728,1607,-32728,1607,-32728,1607,-32728,
-                                 0,-32767,0,-32767,0,-32767,0,-32767,
-                                 -1608,-32728,-1608,-32728,-1608,-32728,-1608,-32728,
-                                 -3212,-32610,-3212,-32610,-3212,-32610,-3212,-32610,
-                                 -4808,-32413,-4808,-32413,-4808,-32413,-4808,-32413,
-                                 -6393,-32138,-6393,-32138,-6393,-32138,-6393,-32138,
-                                 -7962,-31786,-7962,-31786,-7962,-31786,-7962,-31786,
-                                 -9512,-31357,-9512,-31357,-9512,-31357,-9512,-31357,
-                                 -11039,-30852,-11039,-30852,-11039,-30852,-11039,-30852,
-                                 -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                 -14010,-29622,-14010,-29622,-14010,-29622,-14010,-29622,
-                                 -15447,-28898,-15447,-28898,-15447,-28898,-15447,-28898,
-                                 -16846,-28106,-16846,-28106,-16846,-28106,-16846,-28106,
-                                 -18205,-27245,-18205,-27245,-18205,-27245,-18205,-27245,
-                                 -19520,-26319,-19520,-26319,-19520,-26319,-19520,-26319,
-                                 -20788,-25330,-20788,-25330,-20788,-25330,-20788,-25330,
-                                 -22005,-24279,-22005,-24279,-22005,-24279,-22005,-24279,
-                                 -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                 -24279,-22005,-24279,-22005,-24279,-22005,-24279,-22005,
-                                 -25330,-20788,-25330,-20788,-25330,-20788,-25330,-20788,
-                                 -26319,-19520,-26319,-19520,-26319,-19520,-26319,-19520,
-                                 -27245,-18205,-27245,-18205,-27245,-18205,-27245,-18205,
-                                 -28106,-16846,-28106,-16846,-28106,-16846,-28106,-16846,
-                                 -28898,-15447,-28898,-15447,-28898,-15447,-28898,-15447,
-                                 -29622,-14010,-29622,-14010,-29622,-14010,-29622,-14010,
-                                 -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                                 -30852,-11039,-30852,-11039,-30852,-11039,-30852,-11039,
-                                 -31357,-9512,-31357,-9512,-31357,-9512,-31357,-9512,
-                                 -31786,-7962,-31786,-7962,-31786,-7962,-31786,-7962,
-                                 -32138,-6393,-32138,-6393,-32138,-6393,-32138,-6393,
-                                 -32413,-4808,-32413,-4808,-32413,-4808,-32413,-4808,
-                                 -32610,-3212,-32610,-3212,-32610,-3212,-32610,-3212,
-                                 -32728,-1608,-32728,-1608,-32728,-1608,-32728,-1608,
-                                 -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                 -32728,1607,-32728,1607,-32728,1607,-32728,1607,
-                                 -32610,3211,-32610,3211,-32610,3211,-32610,3211,
-                                 -32413,4807,-32413,4807,-32413,4807,-32413,4807,
-                                 -32138,6392,-32138,6392,-32138,6392,-32138,6392,
-                                 -31786,7961,-31786,7961,-31786,7961,-31786,7961,
-                                 -31357,9511,-31357,9511,-31357,9511,-31357,9511,
-                                 -30852,11038,-30852,11038,-30852,11038,-30852,11038,
-                                 -30273,12539,-30273,12539,-30273,12539,-30273,12539,
-                                 -29622,14009,-29622,14009,-29622,14009,-29622,14009,
-                                 -28898,15446,-28898,15446,-28898,15446,-28898,15446,
-                                 -28106,16845,-28106,16845,-28106,16845,-28106,16845,
-                                 -27245,18204,-27245,18204,-27245,18204,-27245,18204,
-                                 -26319,19519,-26319,19519,-26319,19519,-26319,19519,
-                                 -25330,20787,-25330,20787,-25330,20787,-25330,20787,
-                                 -24279,22004,-24279,22004,-24279,22004,-24279,22004,
-                                 -23170,23169,-23170,23169,-23170,23169,-23170,23169,
-                                 -22005,24278,-22005,24278,-22005,24278,-22005,24278,
-                                 -20788,25329,-20788,25329,-20788,25329,-20788,25329,
-                                 -19520,26318,-19520,26318,-19520,26318,-19520,26318,
-                                 -18205,27244,-18205,27244,-18205,27244,-18205,27244,
-                                 -16846,28105,-16846,28105,-16846,28105,-16846,28105,
-                                 -15447,28897,-15447,28897,-15447,28897,-15447,28897,
-                                 -14010,29621,-14010,29621,-14010,29621,-14010,29621,
-                                 -12540,30272,-12540,30272,-12540,30272,-12540,30272,
-                                 -11039,30851,-11039,30851,-11039,30851,-11039,30851,
-                                 -9512,31356,-9512,31356,-9512,31356,-9512,31356,
-                                 -7962,31785,-7962,31785,-7962,31785,-7962,31785,
-                                 -6393,32137,-6393,32137,-6393,32137,-6393,32137,
-                                 -4808,32412,-4808,32412,-4808,32412,-4808,32412,
-                                 -3212,32609,-3212,32609,-3212,32609,-3212,32609,
-                                 -1608,32727,-1608,32727,-1608,32727,-1608,32727
-                                };
+static int16_t twa384[95*2*4];
+static int16_t twb384[95*2*4];
+static int16_t twc384[95*2*4];
 
 void dft384(int16_t *x,int16_t *y,unsigned char scale_flag)  // 96 x 4
 {
@@ -9688,366 +7712,9 @@ void dft384(int16_t *x,int16_t *y,unsigned char scale_flag)  // 96 x 4
 
 };
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:107)/432));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:107)/432));
-twc = floor(32767*exp(-sqrt(-1)*2*pi*3*(1:107)/432));
-twa2 = zeros(1,2*107);
-twb2 = zeros(1,2*107);
-twc2 = zeros(1,2*107);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-twc2(1:2:end) = real(twc);
-twc2(2:2:end) = imag(twc);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa432[107*2*4] = {");
-for i=1:2:(2*106)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"static int16_t twb432[107*2*4] = {");
-for i=1:2:(2*106)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fprintf(fd,"static int16_t twc432[107*2*4] = {");
-for i=1:2:(2*106)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1));
-fclose(fd);
- */
-
-static int16_t twa432[107*2*4] = {32763,-477,32763,-477,32763,-477,32763,-477,
-                                  32753,-954,32753,-954,32753,-954,32753,-954,
-                                  32735,-1430,32735,-1430,32735,-1430,32735,-1430,
-                                  32711,-1906,32711,-1906,32711,-1906,32711,-1906,
-                                  32680,-2381,32680,-2381,32680,-2381,32680,-2381,
-                                  32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                  32597,-3331,32597,-3331,32597,-3331,32597,-3331,
-                                  32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                  32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                  32421,-4749,32421,-4749,32421,-4749,32421,-4749,
-                                  32348,-5221,32348,-5221,32348,-5221,32348,-5221,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32183,-6159,32183,-6159,32183,-6159,32183,-6159,
-                                  32090,-6627,32090,-6627,32090,-6627,32090,-6627,
-                                  31990,-7093,31990,-7093,31990,-7093,31990,-7093,
-                                  31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                  31770,-8020,31770,-8020,31770,-8020,31770,-8020,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31523,-8941,31523,-8941,31523,-8941,31523,-8941,
-                                  31390,-9398,31390,-9398,31390,-9398,31390,-9398,
-                                  31250,-9854,31250,-9854,31250,-9854,31250,-9854,
-                                  31103,-10307,31103,-10307,31103,-10307,31103,-10307,
-                                  30950,-10758,30950,-10758,30950,-10758,30950,-10758,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30624,-11654,30624,-11654,30624,-11654,30624,-11654,
-                                  30451,-12098,30451,-12098,30451,-12098,30451,-12098,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  30087,-12979,30087,-12979,30087,-12979,30087,-12979,
-                                  29895,-13415,29895,-13415,29895,-13415,29895,-13415,
-                                  29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                  29492,-14279,29492,-14279,29492,-14279,29492,-14279,
-                                  29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                  29064,-15131,29064,-15131,29064,-15131,29064,-15131,
-                                  28841,-15552,28841,-15552,28841,-15552,28841,-15552,
-                                  28612,-15970,28612,-15970,28612,-15970,28612,-15970,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28135,-16795,28135,-16795,28135,-16795,28135,-16795,
-                                  27888,-17202,27888,-17202,27888,-17202,27888,-17202,
-                                  27635,-17606,27635,-17606,27635,-17606,27635,-17606,
-                                  27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                  27111,-18403,27111,-18403,27111,-18403,27111,-18403,
-                                  26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                  26564,-19183,26564,-19183,26564,-19183,26564,-19183,
-                                  26283,-19568,26283,-19568,26283,-19568,26283,-19568,
-                                  25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                  25702,-20324,25702,-20324,25702,-20324,25702,-20324,
-                                  25404,-20695,25404,-20695,25404,-20695,25404,-20695,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24791,-21426,24791,-21426,24791,-21426,24791,-21426,
-                                  24477,-21784,24477,-21784,24477,-21784,24477,-21784,
-                                  24158,-22138,24158,-22138,24158,-22138,24158,-22138,
-                                  23833,-22487,23833,-22487,23833,-22487,23833,-22487,
-                                  23504,-22831,23504,-22831,23504,-22831,23504,-22831,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22830,-23505,22830,-23505,22830,-23505,22830,-23505,
-                                  22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                  22137,-24159,22137,-24159,22137,-24159,22137,-24159,
-                                  21783,-24478,21783,-24478,21783,-24478,21783,-24478,
-                                  21425,-24792,21425,-24792,21425,-24792,21425,-24792,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20694,-25405,20694,-25405,20694,-25405,20694,-25405,
-                                  20323,-25703,20323,-25703,20323,-25703,20323,-25703,
-                                  19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                  19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                  19182,-26565,19182,-26565,19182,-26565,19182,-26565,
-                                  18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                  18402,-27112,18402,-27112,18402,-27112,18402,-27112,
-                                  18005,-27377,18005,-27377,18005,-27377,18005,-27377,
-                                  17605,-27636,17605,-27636,17605,-27636,17605,-27636,
-                                  17201,-27889,17201,-27889,17201,-27889,17201,-27889,
-                                  16794,-28136,16794,-28136,16794,-28136,16794,-28136,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15969,-28613,15969,-28613,15969,-28613,15969,-28613,
-                                  15551,-28842,15551,-28842,15551,-28842,15551,-28842,
-                                  15130,-29065,15130,-29065,15130,-29065,15130,-29065,
-                                  14705,-29282,14705,-29282,14705,-29282,14705,-29282,
-                                  14278,-29493,14278,-29493,14278,-29493,14278,-29493,
-                                  13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                  13414,-29896,13414,-29896,13414,-29896,13414,-29896,
-                                  12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  12097,-30452,12097,-30452,12097,-30452,12097,-30452,
-                                  11653,-30625,11653,-30625,11653,-30625,11653,-30625,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10757,-30951,10757,-30951,10757,-30951,10757,-30951,
-                                  10306,-31104,10306,-31104,10306,-31104,10306,-31104,
-                                  9853,-31251,9853,-31251,9853,-31251,9853,-31251,
-                                  9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                  8940,-31524,8940,-31524,8940,-31524,8940,-31524,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  8019,-31771,8019,-31771,8019,-31771,8019,-31771,
-                                  7556,-31884,7556,-31884,7556,-31884,7556,-31884,
-                                  7092,-31991,7092,-31991,7092,-31991,7092,-31991,
-                                  6626,-32091,6626,-32091,6626,-32091,6626,-32091,
-                                  6158,-32184,6158,-32184,6158,-32184,6158,-32184,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5220,-32349,5220,-32349,5220,-32349,5220,-32349,
-                                  4748,-32422,4748,-32422,4748,-32422,4748,-32422,
-                                  4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                  3804,-32546,3804,-32546,3804,-32546,3804,-32546,
-                                  3330,-32598,3330,-32598,3330,-32598,3330,-32598,
-                                  2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                  2380,-32681,2380,-32681,2380,-32681,2380,-32681,
-                                  1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                  1429,-32736,1429,-32736,1429,-32736,1429,-32736,
-                                  953,-32754,953,-32754,953,-32754,953,-32754,
-                                  476,-32764,476,-32764,476,-32764,476,-32764
-                                 };
-static int16_t twb432[107*2*4] = {32753,-954,32753,-954,32753,-954,32753,-954,
-                                  32711,-1906,32711,-1906,32711,-1906,32711,-1906,
-                                  32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                  32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                  32421,-4749,32421,-4749,32421,-4749,32421,-4749,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32090,-6627,32090,-6627,32090,-6627,32090,-6627,
-                                  31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31390,-9398,31390,-9398,31390,-9398,31390,-9398,
-                                  31103,-10307,31103,-10307,31103,-10307,31103,-10307,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30451,-12098,30451,-12098,30451,-12098,30451,-12098,
-                                  30087,-12979,30087,-12979,30087,-12979,30087,-12979,
-                                  29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                  29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                  28841,-15552,28841,-15552,28841,-15552,28841,-15552,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  27888,-17202,27888,-17202,27888,-17202,27888,-17202,
-                                  27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                  26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                  26283,-19568,26283,-19568,26283,-19568,26283,-19568,
-                                  25702,-20324,25702,-20324,25702,-20324,25702,-20324,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24477,-21784,24477,-21784,24477,-21784,24477,-21784,
-                                  23833,-22487,23833,-22487,23833,-22487,23833,-22487,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                  21783,-24478,21783,-24478,21783,-24478,21783,-24478,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20323,-25703,20323,-25703,20323,-25703,20323,-25703,
-                                  19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                  18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                  18005,-27377,18005,-27377,18005,-27377,18005,-27377,
-                                  17201,-27889,17201,-27889,17201,-27889,17201,-27889,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15551,-28842,15551,-28842,15551,-28842,15551,-28842,
-                                  14705,-29282,14705,-29282,14705,-29282,14705,-29282,
-                                  13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                  12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                  12097,-30452,12097,-30452,12097,-30452,12097,-30452,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10306,-31104,10306,-31104,10306,-31104,10306,-31104,
-                                  9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  7556,-31884,7556,-31884,7556,-31884,7556,-31884,
-                                  6626,-32091,6626,-32091,6626,-32091,6626,-32091,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  4748,-32422,4748,-32422,4748,-32422,4748,-32422,
-                                  3804,-32546,3804,-32546,3804,-32546,3804,-32546,
-                                  2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                  1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                  953,-32754,953,-32754,953,-32754,953,-32754,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -954,-32754,-954,-32754,-954,-32754,-954,-32754,
-                                  -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                  -2856,-32643,-2856,-32643,-2856,-32643,-2856,-32643,
-                                  -3805,-32546,-3805,-32546,-3805,-32546,-3805,-32546,
-                                  -4749,-32422,-4749,-32422,-4749,-32422,-4749,-32422,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6627,-32091,-6627,-32091,-6627,-32091,-6627,-32091,
-                                  -7557,-31884,-7557,-31884,-7557,-31884,-7557,-31884,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                  -10307,-31104,-10307,-31104,-10307,-31104,-10307,-31104,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -12098,-30452,-12098,-30452,-12098,-30452,-12098,-30452,
-                                  -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                  -13848,-29697,-13848,-29697,-13848,-29697,-13848,-29697,
-                                  -14706,-29282,-14706,-29282,-14706,-29282,-14706,-29282,
-                                  -15552,-28842,-15552,-28842,-15552,-28842,-15552,-28842,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -17202,-27889,-17202,-27889,-17202,-27889,-17202,-27889,
-                                  -18006,-27377,-18006,-27377,-18006,-27377,-18006,-27377,
-                                  -18795,-26842,-18795,-26842,-18795,-26842,-18795,-26842,
-                                  -19568,-26284,-19568,-26284,-19568,-26284,-19568,-26284,
-                                  -20324,-25703,-20324,-25703,-20324,-25703,-20324,-25703,
-                                  -21063,-25101,-21063,-25101,-21063,-25101,-21063,-25101,
-                                  -21784,-24478,-21784,-24478,-21784,-24478,-21784,-24478,
-                                  -22487,-23834,-22487,-23834,-22487,-23834,-22487,-23834,
-                                  -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                  -23834,-22487,-23834,-22487,-23834,-22487,-23834,-22487,
-                                  -24478,-21784,-24478,-21784,-24478,-21784,-24478,-21784,
-                                  -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                  -25703,-20324,-25703,-20324,-25703,-20324,-25703,-20324,
-                                  -26284,-19568,-26284,-19568,-26284,-19568,-26284,-19568,
-                                  -26842,-18795,-26842,-18795,-26842,-18795,-26842,-18795,
-                                  -27377,-18006,-27377,-18006,-27377,-18006,-27377,-18006,
-                                  -27889,-17202,-27889,-17202,-27889,-17202,-27889,-17202,
-                                  -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                  -28842,-15552,-28842,-15552,-28842,-15552,-28842,-15552,
-                                  -29282,-14706,-29282,-14706,-29282,-14706,-29282,-14706,
-                                  -29697,-13848,-29697,-13848,-29697,-13848,-29697,-13848,
-                                  -30088,-12979,-30088,-12979,-30088,-12979,-30088,-12979,
-                                  -30452,-12098,-30452,-12098,-30452,-12098,-30452,-12098,
-                                  -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                  -31104,-10307,-31104,-10307,-31104,-10307,-31104,-10307,
-                                  -31391,-9398,-31391,-9398,-31391,-9398,-31391,-9398,
-                                  -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                                  -31884,-7557,-31884,-7557,-31884,-7557,-31884,-7557,
-                                  -32091,-6627,-32091,-6627,-32091,-6627,-32091,-6627,
-                                  -32270,-5690,-32270,-5690,-32270,-5690,-32270,-5690,
-                                  -32422,-4749,-32422,-4749,-32422,-4749,-32422,-4749,
-                                  -32546,-3805,-32546,-3805,-32546,-3805,-32546,-3805,
-                                  -32643,-2856,-32643,-2856,-32643,-2856,-32643,-2856,
-                                  -32712,-1906,-32712,-1906,-32712,-1906,-32712,-1906,
-                                  -32754,-954,-32754,-954,-32754,-954,-32754,-954
-                                 };
-static int16_t twc432[107*2*4] = {32735,-1430,32735,-1430,32735,-1430,32735,-1430,
-                                  32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                  32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  31990,-7093,31990,-7093,31990,-7093,31990,-7093,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31250,-9854,31250,-9854,31250,-9854,31250,-9854,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                  29064,-15131,29064,-15131,29064,-15131,29064,-15131,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  27635,-17606,27635,-17606,27635,-17606,27635,-17606,
-                                  26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                  25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24158,-22138,24158,-22138,24158,-22138,24158,-22138,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22137,-24159,22137,-24159,22137,-24159,22137,-24159,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                  18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                  17605,-27636,17605,-27636,17605,-27636,17605,-27636,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15130,-29065,15130,-29065,15130,-29065,15130,-29065,
-                                  13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  9853,-31251,9853,-31251,9853,-31251,9853,-31251,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  7092,-31991,7092,-31991,7092,-31991,7092,-31991,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                  2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                  1429,-32736,1429,-32736,1429,-32736,1429,-32736,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -1430,-32736,-1430,-32736,-1430,-32736,-1430,-32736,
-                                  -2856,-32643,-2856,-32643,-2856,-32643,-2856,-32643,
-                                  -4277,-32487,-4277,-32487,-4277,-32487,-4277,-32487,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -7093,-31991,-7093,-31991,-7093,-31991,-7093,-31991,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -9854,-31251,-9854,-31251,-9854,-31251,-9854,-31251,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                  -13848,-29697,-13848,-29697,-13848,-29697,-13848,-29697,
-                                  -15131,-29065,-15131,-29065,-15131,-29065,-15131,-29065,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -17606,-27636,-17606,-27636,-17606,-27636,-17606,-27636,
-                                  -18795,-26842,-18795,-26842,-18795,-26842,-18795,-26842,
-                                  -19948,-25996,-19948,-25996,-19948,-25996,-19948,-25996,
-                                  -21063,-25101,-21063,-25101,-21063,-25101,-21063,-25101,
-                                  -22138,-24159,-22138,-24159,-22138,-24159,-22138,-24159,
-                                  -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                  -24159,-22138,-24159,-22138,-24159,-22138,-24159,-22138,
-                                  -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                  -25996,-19948,-25996,-19948,-25996,-19948,-25996,-19948,
-                                  -26842,-18795,-26842,-18795,-26842,-18795,-26842,-18795,
-                                  -27636,-17606,-27636,-17606,-27636,-17606,-27636,-17606,
-                                  -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                  -29065,-15131,-29065,-15131,-29065,-15131,-29065,-15131,
-                                  -29697,-13848,-29697,-13848,-29697,-13848,-29697,-13848,
-                                  -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                                  -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                  -31251,-9854,-31251,-9854,-31251,-9854,-31251,-9854,
-                                  -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                                  -31991,-7093,-31991,-7093,-31991,-7093,-31991,-7093,
-                                  -32270,-5690,-32270,-5690,-32270,-5690,-32270,-5690,
-                                  -32487,-4277,-32487,-4277,-32487,-4277,-32487,-4277,
-                                  -32643,-2856,-32643,-2856,-32643,-2856,-32643,-2856,
-                                  -32736,-1430,-32736,-1430,-32736,-1430,-32736,-1430,
-                                  -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                  -32736,1429,-32736,1429,-32736,1429,-32736,1429,
-                                  -32643,2855,-32643,2855,-32643,2855,-32643,2855,
-                                  -32487,4276,-32487,4276,-32487,4276,-32487,4276,
-                                  -32270,5689,-32270,5689,-32270,5689,-32270,5689,
-                                  -31991,7092,-31991,7092,-31991,7092,-31991,7092,
-                                  -31651,8480,-31651,8480,-31651,8480,-31651,8480,
-                                  -31251,9853,-31251,9853,-31251,9853,-31251,9853,
-                                  -30791,11206,-30791,11206,-30791,11206,-30791,11206,
-                                  -30273,12539,-30273,12539,-30273,12539,-30273,12539,
-                                  -29697,13847,-29697,13847,-29697,13847,-29697,13847,
-                                  -29065,15130,-29065,15130,-29065,15130,-29065,15130,
-                                  -28378,16383,-28378,16383,-28378,16383,-28378,16383,
-                                  -27636,17605,-27636,17605,-27636,17605,-27636,17605,
-                                  -26842,18794,-26842,18794,-26842,18794,-26842,18794,
-                                  -25996,19947,-25996,19947,-25996,19947,-25996,19947,
-                                  -25101,21062,-25101,21062,-25101,21062,-25101,21062,
-                                  -24159,22137,-24159,22137,-24159,22137,-24159,22137,
-                                  -23170,23169,-23170,23169,-23170,23169,-23170,23169,
-                                  -22138,24158,-22138,24158,-22138,24158,-22138,24158,
-                                  -21063,25100,-21063,25100,-21063,25100,-21063,25100,
-                                  -19948,25995,-19948,25995,-19948,25995,-19948,25995,
-                                  -18795,26841,-18795,26841,-18795,26841,-18795,26841,
-                                  -17606,27635,-17606,27635,-17606,27635,-17606,27635,
-                                  -16384,28377,-16384,28377,-16384,28377,-16384,28377,
-                                  -15131,29064,-15131,29064,-15131,29064,-15131,29064,
-                                  -13848,29696,-13848,29696,-13848,29696,-13848,29696,
-                                  -12540,30272,-12540,30272,-12540,30272,-12540,30272,
-                                  -11207,30790,-11207,30790,-11207,30790,-11207,30790,
-                                  -9854,31250,-9854,31250,-9854,31250,-9854,31250,
-                                  -8481,31650,-8481,31650,-8481,31650,-8481,31650,
-                                  -7093,31990,-7093,31990,-7093,31990,-7093,31990,
-                                  -5690,32269,-5690,32269,-5690,32269,-5690,32269,
-                                  -4277,32486,-4277,32486,-4277,32486,-4277,32486,
-                                  -2856,32642,-2856,32642,-2856,32642,-2856,32642,
-                                  -1430,32735,-1430,32735,-1430,32735,-1430,32735
-                                 };
-
+static int16_t twa432[107*2*4];
+static int16_t twb432[107*2*4];
+static int16_t twc432[107*2*4];
 
 void dft432(int16_t *x,int16_t *y,unsigned char scale_flag)  // 108 x 4
 {
@@ -10101,402 +7768,9 @@ void dft432(int16_t *x,int16_t *y,unsigned char scale_flag)  // 108 x 4
   _m_empty();
 
 };
-/*
-Twiddles generated with
-
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:119)/480));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:119)/480));
-twc = floor(32767*exp(-sqrt(-1)*2*pi*3*(1:119)/480));
-twa2 = zeros(1,2*119);
-twb2 = zeros(1,2*119);
-twc2 = zeros(1,2*119);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-twc2(1:2:end) = real(twc);
-twc2(2:2:end) = imag(twc);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa480[119*2*4] = {");
-for i=1:2:(2*118)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"static int16_t twb480[119*2*4] = {");
-for i=1:2:(2*118)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fprintf(fd,"static int16_t twc480[119*2*4] = {");
-for i=1:2:(2*118)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1));
-fclose(fd);
-*/
-static int16_t twa480[119*2*4] = {32764,-429,32764,-429,32764,-429,32764,-429,
-                                  32755,-858,32755,-858,32755,-858,32755,-858,
-                                  32741,-1287,32741,-1287,32741,-1287,32741,-1287,
-                                  32722,-1715,32722,-1715,32722,-1715,32722,-1715,
-                                  32696,-2144,32696,-2144,32696,-2144,32696,-2144,
-                                  32665,-2571,32665,-2571,32665,-2571,32665,-2571,
-                                  32629,-2999,32629,-2999,32629,-2999,32629,-2999,
-                                  32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                  32539,-3852,32539,-3852,32539,-3852,32539,-3852,
-                                  32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                  32427,-4702,32427,-4702,32427,-4702,32427,-4702,
-                                  32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                                  32293,-5550,32293,-5550,32293,-5550,32293,-5550,
-                                  32218,-5972,32218,-5972,32218,-5972,32218,-5972,
-                                  32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  31959,-7232,31959,-7232,31959,-7232,31959,-7232,
-                                  31861,-7650,31861,-7650,31861,-7650,31861,-7650,
-                                  31758,-8066,31758,-8066,31758,-8066,31758,-8066,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31536,-8895,31536,-8895,31536,-8895,31536,-8895,
-                                  31417,-9307,31417,-9307,31417,-9307,31417,-9307,
-                                  31293,-9717,31293,-9717,31293,-9717,31293,-9717,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  31028,-10533,31028,-10533,31028,-10533,31028,-10533,
-                                  30887,-10938,30887,-10938,30887,-10938,30887,-10938,
-                                  30741,-11342,30741,-11342,30741,-11342,30741,-11342,
-                                  30590,-11743,30590,-11743,30590,-11743,30590,-11743,
-                                  30434,-12143,30434,-12143,30434,-12143,30434,-12143,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  30106,-12935,30106,-12935,30106,-12935,30106,-12935,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29757,-13719,29757,-13719,29757,-13719,29757,-13719,
-                                  29575,-14107,29575,-14107,29575,-14107,29575,-14107,
-                                  29387,-14493,29387,-14493,29387,-14493,29387,-14493,
-                                  29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                                  28998,-15257,28998,-15257,28998,-15257,28998,-15257,
-                                  28796,-15636,28796,-15636,28796,-15636,28796,-15636,
-                                  28589,-16011,28589,-16011,28589,-16011,28589,-16011,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28160,-16754,28160,-16754,28160,-16754,28160,-16754,
-                                  27938,-17121,27938,-17121,27938,-17121,27938,-17121,
-                                  27711,-17485,27711,-17485,27711,-17485,27711,-17485,
-                                  27480,-17847,27480,-17847,27480,-17847,27480,-17847,
-                                  27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                  27004,-18560,27004,-18560,27004,-18560,27004,-18560,
-                                  26758,-18912,26758,-18912,26758,-18912,26758,-18912,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  26254,-19606,26254,-19606,26254,-19606,26254,-19606,
-                                  25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                  25732,-20286,25732,-20286,25732,-20286,25732,-20286,
-                                  25464,-20621,25464,-20621,25464,-20621,25464,-20621,
-                                  25192,-20953,25192,-20953,25192,-20953,25192,-20953,
-                                  24916,-21281,24916,-21281,24916,-21281,24916,-21281,
-                                  24635,-21605,24635,-21605,24635,-21605,24635,-21605,
-                                  24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                  24061,-22243,24061,-22243,24061,-22243,24061,-22243,
-                                  23768,-22556,23768,-22556,23768,-22556,23768,-22556,
-                                  23471,-22865,23471,-22865,23471,-22865,23471,-22865,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22864,-23472,22864,-23472,22864,-23472,22864,-23472,
-                                  22555,-23769,22555,-23769,22555,-23769,22555,-23769,
-                                  22242,-24062,22242,-24062,22242,-24062,22242,-24062,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21604,-24636,21604,-24636,21604,-24636,21604,-24636,
-                                  21280,-24917,21280,-24917,21280,-24917,21280,-24917,
-                                  20952,-25193,20952,-25193,20952,-25193,20952,-25193,
-                                  20620,-25465,20620,-25465,20620,-25465,20620,-25465,
-                                  20285,-25733,20285,-25733,20285,-25733,20285,-25733,
-                                  19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                  19605,-26255,19605,-26255,19605,-26255,19605,-26255,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  18911,-26759,18911,-26759,18911,-26759,18911,-26759,
-                                  18559,-27005,18559,-27005,18559,-27005,18559,-27005,
-                                  18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                  17846,-27481,17846,-27481,17846,-27481,17846,-27481,
-                                  17484,-27712,17484,-27712,17484,-27712,17484,-27712,
-                                  17120,-27939,17120,-27939,17120,-27939,17120,-27939,
-                                  16753,-28161,16753,-28161,16753,-28161,16753,-28161,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  16010,-28590,16010,-28590,16010,-28590,16010,-28590,
-                                  15635,-28797,15635,-28797,15635,-28797,15635,-28797,
-                                  15256,-28999,15256,-28999,15256,-28999,15256,-28999,
-                                  14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                                  14492,-29388,14492,-29388,14492,-29388,14492,-29388,
-                                  14106,-29576,14106,-29576,14106,-29576,14106,-29576,
-                                  13718,-29758,13718,-29758,13718,-29758,13718,-29758,
-                                  13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                  12934,-30107,12934,-30107,12934,-30107,12934,-30107,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  12142,-30435,12142,-30435,12142,-30435,12142,-30435,
-                                  11742,-30591,11742,-30591,11742,-30591,11742,-30591,
-                                  11341,-30742,11341,-30742,11341,-30742,11341,-30742,
-                                  10937,-30888,10937,-30888,10937,-30888,10937,-30888,
-                                  10532,-31029,10532,-31029,10532,-31029,10532,-31029,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9716,-31294,9716,-31294,9716,-31294,9716,-31294,
-                                  9306,-31418,9306,-31418,9306,-31418,9306,-31418,
-                                  8894,-31537,8894,-31537,8894,-31537,8894,-31537,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  8065,-31759,8065,-31759,8065,-31759,8065,-31759,
-                                  7649,-31862,7649,-31862,7649,-31862,7649,-31862,
-                                  7231,-31960,7231,-31960,7231,-31960,7231,-31960,
-                                  6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                  6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                  5971,-32219,5971,-32219,5971,-32219,5971,-32219,
-                                  5549,-32294,5549,-32294,5549,-32294,5549,-32294,
-                                  5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                                  4701,-32428,4701,-32428,4701,-32428,4701,-32428,
-                                  4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                  3851,-32540,3851,-32540,3851,-32540,3851,-32540,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  2998,-32630,2998,-32630,2998,-32630,2998,-32630,
-                                  2570,-32666,2570,-32666,2570,-32666,2570,-32666,
-                                  2143,-32697,2143,-32697,2143,-32697,2143,-32697,
-                                  1714,-32723,1714,-32723,1714,-32723,1714,-32723,
-                                  1286,-32742,1286,-32742,1286,-32742,1286,-32742,
-                                  857,-32756,857,-32756,857,-32756,857,-32756,
-                                  428,-32765,428,-32765,428,-32765,428,-32765
-                                 };
-static int16_t twb480[119*2*4] = {32755,-858,32755,-858,32755,-858,32755,-858,
-                                  32722,-1715,32722,-1715,32722,-1715,32722,-1715,
-                                  32665,-2571,32665,-2571,32665,-2571,32665,-2571,
-                                  32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                  32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                  32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                                  32218,-5972,32218,-5972,32218,-5972,32218,-5972,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  31861,-7650,31861,-7650,31861,-7650,31861,-7650,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31417,-9307,31417,-9307,31417,-9307,31417,-9307,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  30887,-10938,30887,-10938,30887,-10938,30887,-10938,
-                                  30590,-11743,30590,-11743,30590,-11743,30590,-11743,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29575,-14107,29575,-14107,29575,-14107,29575,-14107,
-                                  29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                                  28796,-15636,28796,-15636,28796,-15636,28796,-15636,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  27938,-17121,27938,-17121,27938,-17121,27938,-17121,
-                                  27480,-17847,27480,-17847,27480,-17847,27480,-17847,
-                                  27004,-18560,27004,-18560,27004,-18560,27004,-18560,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                  25464,-20621,25464,-20621,25464,-20621,25464,-20621,
-                                  24916,-21281,24916,-21281,24916,-21281,24916,-21281,
-                                  24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                  23768,-22556,23768,-22556,23768,-22556,23768,-22556,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22555,-23769,22555,-23769,22555,-23769,22555,-23769,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21280,-24917,21280,-24917,21280,-24917,21280,-24917,
-                                  20620,-25465,20620,-25465,20620,-25465,20620,-25465,
-                                  19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  18559,-27005,18559,-27005,18559,-27005,18559,-27005,
-                                  17846,-27481,17846,-27481,17846,-27481,17846,-27481,
-                                  17120,-27939,17120,-27939,17120,-27939,17120,-27939,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15635,-28797,15635,-28797,15635,-28797,15635,-28797,
-                                  14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                                  14106,-29576,14106,-29576,14106,-29576,14106,-29576,
-                                  13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  11742,-30591,11742,-30591,11742,-30591,11742,-30591,
-                                  10937,-30888,10937,-30888,10937,-30888,10937,-30888,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9306,-31418,9306,-31418,9306,-31418,9306,-31418,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  7649,-31862,7649,-31862,7649,-31862,7649,-31862,
-                                  6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                  5971,-32219,5971,-32219,5971,-32219,5971,-32219,
-                                  5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                                  4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  2570,-32666,2570,-32666,2570,-32666,2570,-32666,
-                                  1714,-32723,1714,-32723,1714,-32723,1714,-32723,
-                                  857,-32756,857,-32756,857,-32756,857,-32756,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -858,-32756,-858,-32756,-858,-32756,-858,-32756,
-                                  -1715,-32723,-1715,-32723,-1715,-32723,-1715,-32723,
-                                  -2571,-32666,-2571,-32666,-2571,-32666,-2571,-32666,
-                                  -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                  -4277,-32487,-4277,-32487,-4277,-32487,-4277,-32487,
-                                  -5126,-32364,-5126,-32364,-5126,-32364,-5126,-32364,
-                                  -5972,-32219,-5972,-32219,-5972,-32219,-5972,-32219,
-                                  -6813,-32051,-6813,-32051,-6813,-32051,-6813,-32051,
-                                  -7650,-31862,-7650,-31862,-7650,-31862,-7650,-31862,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -9307,-31418,-9307,-31418,-9307,-31418,-9307,-31418,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -10938,-30888,-10938,-30888,-10938,-30888,-10938,-30888,
-                                  -11743,-30591,-11743,-30591,-11743,-30591,-11743,-30591,
-                                  -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                  -13328,-29935,-13328,-29935,-13328,-29935,-13328,-29935,
-                                  -14107,-29576,-14107,-29576,-14107,-29576,-14107,-29576,
-                                  -14876,-29196,-14876,-29196,-14876,-29196,-14876,-29196,
-                                  -15636,-28797,-15636,-28797,-15636,-28797,-15636,-28797,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -17121,-27939,-17121,-27939,-17121,-27939,-17121,-27939,
-                                  -17847,-27481,-17847,-27481,-17847,-27481,-17847,-27481,
-                                  -18560,-27005,-18560,-27005,-18560,-27005,-18560,-27005,
-                                  -19260,-26510,-19260,-26510,-19260,-26510,-19260,-26510,
-                                  -19948,-25996,-19948,-25996,-19948,-25996,-19948,-25996,
-                                  -20621,-25465,-20621,-25465,-20621,-25465,-20621,-25465,
-                                  -21281,-24917,-21281,-24917,-21281,-24917,-21281,-24917,
-                                  -21926,-24351,-21926,-24351,-21926,-24351,-21926,-24351,
-                                  -22556,-23769,-22556,-23769,-22556,-23769,-22556,-23769,
-                                  -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                  -23769,-22556,-23769,-22556,-23769,-22556,-23769,-22556,
-                                  -24351,-21926,-24351,-21926,-24351,-21926,-24351,-21926,
-                                  -24917,-21281,-24917,-21281,-24917,-21281,-24917,-21281,
-                                  -25465,-20621,-25465,-20621,-25465,-20621,-25465,-20621,
-                                  -25996,-19948,-25996,-19948,-25996,-19948,-25996,-19948,
-                                  -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                                  -27005,-18560,-27005,-18560,-27005,-18560,-27005,-18560,
-                                  -27481,-17847,-27481,-17847,-27481,-17847,-27481,-17847,
-                                  -27939,-17121,-27939,-17121,-27939,-17121,-27939,-17121,
-                                  -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                  -28797,-15636,-28797,-15636,-28797,-15636,-28797,-15636,
-                                  -29196,-14876,-29196,-14876,-29196,-14876,-29196,-14876,
-                                  -29576,-14107,-29576,-14107,-29576,-14107,-29576,-14107,
-                                  -29935,-13328,-29935,-13328,-29935,-13328,-29935,-13328,
-                                  -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                                  -30591,-11743,-30591,-11743,-30591,-11743,-30591,-11743,
-                                  -30888,-10938,-30888,-10938,-30888,-10938,-30888,-10938,
-                                  -31164,-10126,-31164,-10126,-31164,-10126,-31164,-10126,
-                                  -31418,-9307,-31418,-9307,-31418,-9307,-31418,-9307,
-                                  -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                                  -31862,-7650,-31862,-7650,-31862,-7650,-31862,-7650,
-                                  -32051,-6813,-32051,-6813,-32051,-6813,-32051,-6813,
-                                  -32219,-5972,-32219,-5972,-32219,-5972,-32219,-5972,
-                                  -32364,-5126,-32364,-5126,-32364,-5126,-32364,-5126,
-                                  -32487,-4277,-32487,-4277,-32487,-4277,-32487,-4277,
-                                  -32588,-3426,-32588,-3426,-32588,-3426,-32588,-3426,
-                                  -32666,-2571,-32666,-2571,-32666,-2571,-32666,-2571,
-                                  -32723,-1715,-32723,-1715,-32723,-1715,-32723,-1715,
-                                  -32756,-858,-32756,-858,-32756,-858,-32756,-858
-                                 };
-static int16_t twc480[119*2*4] = {32741,-1287,32741,-1287,32741,-1287,32741,-1287,
-                                  32665,-2571,32665,-2571,32665,-2571,32665,-2571,
-                                  32539,-3852,32539,-3852,32539,-3852,32539,-3852,
-                                  32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                                  32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                  31861,-7650,31861,-7650,31861,-7650,31861,-7650,
-                                  31536,-8895,31536,-8895,31536,-8895,31536,-8895,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  30741,-11342,30741,-11342,30741,-11342,30741,-11342,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  29757,-13719,29757,-13719,29757,-13719,29757,-13719,
-                                  29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                                  28589,-16011,28589,-16011,28589,-16011,28589,-16011,
-                                  27938,-17121,27938,-17121,27938,-17121,27938,-17121,
-                                  27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  25732,-20286,25732,-20286,25732,-20286,25732,-20286,
-                                  24916,-21281,24916,-21281,24916,-21281,24916,-21281,
-                                  24061,-22243,24061,-22243,24061,-22243,24061,-22243,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22242,-24062,22242,-24062,22242,-24062,22242,-24062,
-                                  21280,-24917,21280,-24917,21280,-24917,21280,-24917,
-                                  20285,-25733,20285,-25733,20285,-25733,20285,-25733,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                  17120,-27939,17120,-27939,17120,-27939,17120,-27939,
-                                  16010,-28590,16010,-28590,16010,-28590,16010,-28590,
-                                  14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                                  13718,-29758,13718,-29758,13718,-29758,13718,-29758,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  11341,-30742,11341,-30742,11341,-30742,11341,-30742,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  8894,-31537,8894,-31537,8894,-31537,8894,-31537,
-                                  7649,-31862,7649,-31862,7649,-31862,7649,-31862,
-                                  6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                  5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                                  3851,-32540,3851,-32540,3851,-32540,3851,-32540,
-                                  2570,-32666,2570,-32666,2570,-32666,2570,-32666,
-                                  1286,-32742,1286,-32742,1286,-32742,1286,-32742,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -1287,-32742,-1287,-32742,-1287,-32742,-1287,-32742,
-                                  -2571,-32666,-2571,-32666,-2571,-32666,-2571,-32666,
-                                  -3852,-32540,-3852,-32540,-3852,-32540,-3852,-32540,
-                                  -5126,-32364,-5126,-32364,-5126,-32364,-5126,-32364,
-                                  -6393,-32138,-6393,-32138,-6393,-32138,-6393,-32138,
-                                  -7650,-31862,-7650,-31862,-7650,-31862,-7650,-31862,
-                                  -8895,-31537,-8895,-31537,-8895,-31537,-8895,-31537,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -11342,-30742,-11342,-30742,-11342,-30742,-11342,-30742,
-                                  -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                  -13719,-29758,-13719,-29758,-13719,-29758,-13719,-29758,
-                                  -14876,-29196,-14876,-29196,-14876,-29196,-14876,-29196,
-                                  -16011,-28590,-16011,-28590,-16011,-28590,-16011,-28590,
-                                  -17121,-27939,-17121,-27939,-17121,-27939,-17121,-27939,
-                                  -18205,-27245,-18205,-27245,-18205,-27245,-18205,-27245,
-                                  -19260,-26510,-19260,-26510,-19260,-26510,-19260,-26510,
-                                  -20286,-25733,-20286,-25733,-20286,-25733,-20286,-25733,
-                                  -21281,-24917,-21281,-24917,-21281,-24917,-21281,-24917,
-                                  -22243,-24062,-22243,-24062,-22243,-24062,-22243,-24062,
-                                  -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                  -24062,-22243,-24062,-22243,-24062,-22243,-24062,-22243,
-                                  -24917,-21281,-24917,-21281,-24917,-21281,-24917,-21281,
-                                  -25733,-20286,-25733,-20286,-25733,-20286,-25733,-20286,
-                                  -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                                  -27245,-18205,-27245,-18205,-27245,-18205,-27245,-18205,
-                                  -27939,-17121,-27939,-17121,-27939,-17121,-27939,-17121,
-                                  -28590,-16011,-28590,-16011,-28590,-16011,-28590,-16011,
-                                  -29196,-14876,-29196,-14876,-29196,-14876,-29196,-14876,
-                                  -29758,-13719,-29758,-13719,-29758,-13719,-29758,-13719,
-                                  -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                                  -30742,-11342,-30742,-11342,-30742,-11342,-30742,-11342,
-                                  -31164,-10126,-31164,-10126,-31164,-10126,-31164,-10126,
-                                  -31537,-8895,-31537,-8895,-31537,-8895,-31537,-8895,
-                                  -31862,-7650,-31862,-7650,-31862,-7650,-31862,-7650,
-                                  -32138,-6393,-32138,-6393,-32138,-6393,-32138,-6393,
-                                  -32364,-5126,-32364,-5126,-32364,-5126,-32364,-5126,
-                                  -32540,-3852,-32540,-3852,-32540,-3852,-32540,-3852,
-                                  -32666,-2571,-32666,-2571,-32666,-2571,-32666,-2571,
-                                  -32742,-1287,-32742,-1287,-32742,-1287,-32742,-1287,
-                                  -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                  -32742,1286,-32742,1286,-32742,1286,-32742,1286,
-                                  -32666,2570,-32666,2570,-32666,2570,-32666,2570,
-                                  -32540,3851,-32540,3851,-32540,3851,-32540,3851,
-                                  -32364,5125,-32364,5125,-32364,5125,-32364,5125,
-                                  -32138,6392,-32138,6392,-32138,6392,-32138,6392,
-                                  -31862,7649,-31862,7649,-31862,7649,-31862,7649,
-                                  -31537,8894,-31537,8894,-31537,8894,-31537,8894,
-                                  -31164,10125,-31164,10125,-31164,10125,-31164,10125,
-                                  -30742,11341,-30742,11341,-30742,11341,-30742,11341,
-                                  -30273,12539,-30273,12539,-30273,12539,-30273,12539,
-                                  -29758,13718,-29758,13718,-29758,13718,-29758,13718,
-                                  -29196,14875,-29196,14875,-29196,14875,-29196,14875,
-                                  -28590,16010,-28590,16010,-28590,16010,-28590,16010,
-                                  -27939,17120,-27939,17120,-27939,17120,-27939,17120,
-                                  -27245,18204,-27245,18204,-27245,18204,-27245,18204,
-                                  -26510,19259,-26510,19259,-26510,19259,-26510,19259,
-                                  -25733,20285,-25733,20285,-25733,20285,-25733,20285,
-                                  -24917,21280,-24917,21280,-24917,21280,-24917,21280,
-                                  -24062,22242,-24062,22242,-24062,22242,-24062,22242,
-                                  -23170,23169,-23170,23169,-23170,23169,-23170,23169,
-                                  -22243,24061,-22243,24061,-22243,24061,-22243,24061,
-                                  -21281,24916,-21281,24916,-21281,24916,-21281,24916,
-                                  -20286,25732,-20286,25732,-20286,25732,-20286,25732,
-                                  -19260,26509,-19260,26509,-19260,26509,-19260,26509,
-                                  -18205,27244,-18205,27244,-18205,27244,-18205,27244,
-                                  -17121,27938,-17121,27938,-17121,27938,-17121,27938,
-                                  -16011,28589,-16011,28589,-16011,28589,-16011,28589,
-                                  -14876,29195,-14876,29195,-14876,29195,-14876,29195,
-                                  -13719,29757,-13719,29757,-13719,29757,-13719,29757,
-                                  -12540,30272,-12540,30272,-12540,30272,-12540,30272,
-                                  -11342,30741,-11342,30741,-11342,30741,-11342,30741,
-                                  -10126,31163,-10126,31163,-10126,31163,-10126,31163,
-                                  -8895,31536,-8895,31536,-8895,31536,-8895,31536,
-                                  -7650,31861,-7650,31861,-7650,31861,-7650,31861,
-                                  -6393,32137,-6393,32137,-6393,32137,-6393,32137,
-                                  -5126,32363,-5126,32363,-5126,32363,-5126,32363,
-                                  -3852,32539,-3852,32539,-3852,32539,-3852,32539,
-                                  -2571,32665,-2571,32665,-2571,32665,-2571,32665,
-                                  -1287,32741,-1287,32741,-1287,32741,-1287,32741
-                                 };
+static int16_t twa480[119*2*4];
+static int16_t twb480[119*2*4];
+static int16_t twc480[119*2*4];
 
 void dft480(int16_t *x,int16_t *y,unsigned char scale_flag)  // 120 x 4
 {
@@ -10552,392 +7826,9 @@ void dft480(int16_t *x,int16_t *y,unsigned char scale_flag)  // 120 x 4
 
 };
 
-/*
-Twiddles generated with
-
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:179)/540));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:179)/540));
-twa2 = zeros(1,2*179);
-twb2 = zeros(1,2*179);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa540[179*2*4] = {");
-for i=1:2:(2*178)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"static int16_t twb540[179*2*4] = {");
-for i=1:2:(2*178)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fclose(fd);
-*/
-static int16_t twa540[179*2*4] = {32764,-382,32764,-382,32764,-382,32764,-382,
-                                  32758,-763,32758,-763,32758,-763,32758,-763,
-                                  32747,-1144,32747,-1144,32747,-1144,32747,-1144,
-                                  32731,-1525,32731,-1525,32731,-1525,32731,-1525,
-                                  32711,-1906,32711,-1906,32711,-1906,32711,-1906,
-                                  32687,-2286,32687,-2286,32687,-2286,32687,-2286,
-                                  32658,-2666,32658,-2666,32658,-2666,32658,-2666,
-                                  32625,-3046,32625,-3046,32625,-3046,32625,-3046,
-                                  32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                  32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                  32498,-4183,32498,-4183,32498,-4183,32498,-4183,
-                                  32448,-4561,32448,-4561,32448,-4561,32448,-4561,
-                                  32392,-4938,32392,-4938,32392,-4938,32392,-4938,
-                                  32333,-5315,32333,-5315,32333,-5315,32333,-5315,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32200,-6066,32200,-6066,32200,-6066,32200,-6066,
-                                  32128,-6440,32128,-6440,32128,-6440,32128,-6440,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  31969,-7186,31969,-7186,31969,-7186,31969,-7186,
-                                  31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                  31793,-7928,31793,-7928,31793,-7928,31793,-7928,
-                                  31699,-8297,31699,-8297,31699,-8297,31699,-8297,
-                                  31600,-8665,31600,-8665,31600,-8665,31600,-8665,
-                                  31497,-9032,31497,-9032,31497,-9032,31497,-9032,
-                                  31390,-9398,31390,-9398,31390,-9398,31390,-9398,
-                                  31278,-9763,31278,-9763,31278,-9763,31278,-9763,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  31043,-10488,31043,-10488,31043,-10488,31043,-10488,
-                                  30919,-10848,30919,-10848,30919,-10848,30919,-10848,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30658,-11565,30658,-11565,30658,-11565,30658,-11565,
-                                  30521,-11921,30521,-11921,30521,-11921,30521,-11921,
-                                  30381,-12275,30381,-12275,30381,-12275,30381,-12275,
-                                  30236,-12628,30236,-12628,30236,-12628,30236,-12628,
-                                  30087,-12979,30087,-12979,30087,-12979,30087,-12979,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29777,-13675,29777,-13675,29777,-13675,29777,-13675,
-                                  29615,-14021,29615,-14021,29615,-14021,29615,-14021,
-                                  29450,-14365,29450,-14365,29450,-14365,29450,-14365,
-                                  29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                  29108,-15046,29108,-15046,29108,-15046,29108,-15046,
-                                  28931,-15384,28931,-15384,28931,-15384,28931,-15384,
-                                  28750,-15719,28750,-15719,28750,-15719,28750,-15719,
-                                  28565,-16053,28565,-16053,28565,-16053,28565,-16053,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28184,-16713,28184,-16713,28184,-16713,28184,-16713,
-                                  27988,-17040,27988,-17040,27988,-17040,27988,-17040,
-                                  27787,-17364,27787,-17364,27787,-17364,27787,-17364,
-                                  27584,-17687,27584,-17687,27584,-17687,27584,-17687,
-                                  27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                  27165,-18324,27165,-18324,27165,-18324,27165,-18324,
-                                  26950,-18638,26950,-18638,26950,-18638,26950,-18638,
-                                  26731,-18951,26731,-18951,26731,-18951,26731,-18951,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  26283,-19568,26283,-19568,26283,-19568,26283,-19568,
-                                  26053,-19872,26053,-19872,26053,-19872,26053,-19872,
-                                  25820,-20174,25820,-20174,25820,-20174,25820,-20174,
-                                  25584,-20473,25584,-20473,25584,-20473,25584,-20473,
-                                  25344,-20769,25344,-20769,25344,-20769,25344,-20769,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24854,-21353,24854,-21353,24854,-21353,24854,-21353,
-                                  24604,-21641,24604,-21641,24604,-21641,24604,-21641,
-                                  24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                  24093,-22208,24093,-22208,24093,-22208,24093,-22208,
-                                  23833,-22487,23833,-22487,23833,-22487,23833,-22487,
-                                  23570,-22762,23570,-22762,23570,-22762,23570,-22762,
-                                  23304,-23035,23304,-23035,23304,-23035,23304,-23035,
-                                  23034,-23305,23034,-23305,23034,-23305,23034,-23305,
-                                  22761,-23571,22761,-23571,22761,-23571,22761,-23571,
-                                  22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                  22207,-24094,22207,-24094,22207,-24094,22207,-24094,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21640,-24605,21640,-24605,21640,-24605,21640,-24605,
-                                  21352,-24855,21352,-24855,21352,-24855,21352,-24855,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20768,-25345,20768,-25345,20768,-25345,20768,-25345,
-                                  20472,-25585,20472,-25585,20472,-25585,20472,-25585,
-                                  20173,-25821,20173,-25821,20173,-25821,20173,-25821,
-                                  19871,-26054,19871,-26054,19871,-26054,19871,-26054,
-                                  19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  18950,-26732,18950,-26732,18950,-26732,18950,-26732,
-                                  18637,-26951,18637,-26951,18637,-26951,18637,-26951,
-                                  18323,-27166,18323,-27166,18323,-27166,18323,-27166,
-                                  18005,-27377,18005,-27377,18005,-27377,18005,-27377,
-                                  17686,-27585,17686,-27585,17686,-27585,17686,-27585,
-                                  17363,-27788,17363,-27788,17363,-27788,17363,-27788,
-                                  17039,-27989,17039,-27989,17039,-27989,17039,-27989,
-                                  16712,-28185,16712,-28185,16712,-28185,16712,-28185,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  16052,-28566,16052,-28566,16052,-28566,16052,-28566,
-                                  15718,-28751,15718,-28751,15718,-28751,15718,-28751,
-                                  15383,-28932,15383,-28932,15383,-28932,15383,-28932,
-                                  15045,-29109,15045,-29109,15045,-29109,15045,-29109,
-                                  14705,-29282,14705,-29282,14705,-29282,14705,-29282,
-                                  14364,-29451,14364,-29451,14364,-29451,14364,-29451,
-                                  14020,-29616,14020,-29616,14020,-29616,14020,-29616,
-                                  13674,-29778,13674,-29778,13674,-29778,13674,-29778,
-                                  13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                  12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                  12627,-30237,12627,-30237,12627,-30237,12627,-30237,
-                                  12274,-30382,12274,-30382,12274,-30382,12274,-30382,
-                                  11920,-30522,11920,-30522,11920,-30522,11920,-30522,
-                                  11564,-30659,11564,-30659,11564,-30659,11564,-30659,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10847,-30920,10847,-30920,10847,-30920,10847,-30920,
-                                  10487,-31044,10487,-31044,10487,-31044,10487,-31044,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9762,-31279,9762,-31279,9762,-31279,9762,-31279,
-                                  9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                  9031,-31498,9031,-31498,9031,-31498,9031,-31498,
-                                  8664,-31601,8664,-31601,8664,-31601,8664,-31601,
-                                  8296,-31700,8296,-31700,8296,-31700,8296,-31700,
-                                  7927,-31794,7927,-31794,7927,-31794,7927,-31794,
-                                  7556,-31884,7556,-31884,7556,-31884,7556,-31884,
-                                  7185,-31970,7185,-31970,7185,-31970,7185,-31970,
-                                  6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                  6439,-32129,6439,-32129,6439,-32129,6439,-32129,
-                                  6065,-32201,6065,-32201,6065,-32201,6065,-32201,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5314,-32334,5314,-32334,5314,-32334,5314,-32334,
-                                  4937,-32393,4937,-32393,4937,-32393,4937,-32393,
-                                  4560,-32449,4560,-32449,4560,-32449,4560,-32449,
-                                  4182,-32499,4182,-32499,4182,-32499,4182,-32499,
-                                  3804,-32546,3804,-32546,3804,-32546,3804,-32546,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  3045,-32626,3045,-32626,3045,-32626,3045,-32626,
-                                  2665,-32659,2665,-32659,2665,-32659,2665,-32659,
-                                  2285,-32688,2285,-32688,2285,-32688,2285,-32688,
-                                  1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                  1524,-32732,1524,-32732,1524,-32732,1524,-32732,
-                                  1143,-32748,1143,-32748,1143,-32748,1143,-32748,
-                                  762,-32759,762,-32759,762,-32759,762,-32759,
-                                  381,-32765,381,-32765,381,-32765,381,-32765,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -382,-32765,-382,-32765,-382,-32765,-382,-32765,
-                                  -763,-32759,-763,-32759,-763,-32759,-763,-32759,
-                                  -1144,-32748,-1144,-32748,-1144,-32748,-1144,-32748,
-                                  -1525,-32732,-1525,-32732,-1525,-32732,-1525,-32732,
-                                  -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                  -2286,-32688,-2286,-32688,-2286,-32688,-2286,-32688,
-                                  -2666,-32659,-2666,-32659,-2666,-32659,-2666,-32659,
-                                  -3046,-32626,-3046,-32626,-3046,-32626,-3046,-32626,
-                                  -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                  -3805,-32546,-3805,-32546,-3805,-32546,-3805,-32546,
-                                  -4183,-32499,-4183,-32499,-4183,-32499,-4183,-32499,
-                                  -4561,-32449,-4561,-32449,-4561,-32449,-4561,-32449,
-                                  -4938,-32393,-4938,-32393,-4938,-32393,-4938,-32393,
-                                  -5315,-32334,-5315,-32334,-5315,-32334,-5315,-32334,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6066,-32201,-6066,-32201,-6066,-32201,-6066,-32201,
-                                  -6440,-32129,-6440,-32129,-6440,-32129,-6440,-32129,
-                                  -6813,-32051,-6813,-32051,-6813,-32051,-6813,-32051,
-                                  -7186,-31970,-7186,-31970,-7186,-31970,-7186,-31970,
-                                  -7557,-31884,-7557,-31884,-7557,-31884,-7557,-31884,
-                                  -7928,-31794,-7928,-31794,-7928,-31794,-7928,-31794,
-                                  -8297,-31700,-8297,-31700,-8297,-31700,-8297,-31700,
-                                  -8665,-31601,-8665,-31601,-8665,-31601,-8665,-31601,
-                                  -9032,-31498,-9032,-31498,-9032,-31498,-9032,-31498,
-                                  -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                  -9763,-31279,-9763,-31279,-9763,-31279,-9763,-31279,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -10488,-31044,-10488,-31044,-10488,-31044,-10488,-31044,
-                                  -10848,-30920,-10848,-30920,-10848,-30920,-10848,-30920,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -11565,-30659,-11565,-30659,-11565,-30659,-11565,-30659,
-                                  -11921,-30522,-11921,-30522,-11921,-30522,-11921,-30522,
-                                  -12275,-30382,-12275,-30382,-12275,-30382,-12275,-30382,
-                                  -12628,-30237,-12628,-30237,-12628,-30237,-12628,-30237,
-                                  -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                  -13328,-29935,-13328,-29935,-13328,-29935,-13328,-29935,
-                                  -13675,-29778,-13675,-29778,-13675,-29778,-13675,-29778,
-                                  -14021,-29616,-14021,-29616,-14021,-29616,-14021,-29616,
-                                  -14365,-29451,-14365,-29451,-14365,-29451,-14365,-29451,
-                                  -14706,-29282,-14706,-29282,-14706,-29282,-14706,-29282,
-                                  -15046,-29109,-15046,-29109,-15046,-29109,-15046,-29109,
-                                  -15384,-28932,-15384,-28932,-15384,-28932,-15384,-28932,
-                                  -15719,-28751,-15719,-28751,-15719,-28751,-15719,-28751,
-                                  -16053,-28566,-16053,-28566,-16053,-28566,-16053,-28566
-                                 };
-static int16_t twb540[179*2*4] = {32758,-763,32758,-763,32758,-763,32758,-763,
-                                  32731,-1525,32731,-1525,32731,-1525,32731,-1525,
-                                  32687,-2286,32687,-2286,32687,-2286,32687,-2286,
-                                  32625,-3046,32625,-3046,32625,-3046,32625,-3046,
-                                  32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                  32448,-4561,32448,-4561,32448,-4561,32448,-4561,
-                                  32333,-5315,32333,-5315,32333,-5315,32333,-5315,
-                                  32200,-6066,32200,-6066,32200,-6066,32200,-6066,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                  31699,-8297,31699,-8297,31699,-8297,31699,-8297,
-                                  31497,-9032,31497,-9032,31497,-9032,31497,-9032,
-                                  31278,-9763,31278,-9763,31278,-9763,31278,-9763,
-                                  31043,-10488,31043,-10488,31043,-10488,31043,-10488,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30521,-11921,30521,-11921,30521,-11921,30521,-11921,
-                                  30236,-12628,30236,-12628,30236,-12628,30236,-12628,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29615,-14021,29615,-14021,29615,-14021,29615,-14021,
-                                  29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                  28931,-15384,28931,-15384,28931,-15384,28931,-15384,
-                                  28565,-16053,28565,-16053,28565,-16053,28565,-16053,
-                                  28184,-16713,28184,-16713,28184,-16713,28184,-16713,
-                                  27787,-17364,27787,-17364,27787,-17364,27787,-17364,
-                                  27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                  26950,-18638,26950,-18638,26950,-18638,26950,-18638,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  26053,-19872,26053,-19872,26053,-19872,26053,-19872,
-                                  25584,-20473,25584,-20473,25584,-20473,25584,-20473,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24604,-21641,24604,-21641,24604,-21641,24604,-21641,
-                                  24093,-22208,24093,-22208,24093,-22208,24093,-22208,
-                                  23570,-22762,23570,-22762,23570,-22762,23570,-22762,
-                                  23034,-23305,23034,-23305,23034,-23305,23034,-23305,
-                                  22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21352,-24855,21352,-24855,21352,-24855,21352,-24855,
-                                  20768,-25345,20768,-25345,20768,-25345,20768,-25345,
-                                  20173,-25821,20173,-25821,20173,-25821,20173,-25821,
-                                  19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                  18950,-26732,18950,-26732,18950,-26732,18950,-26732,
-                                  18323,-27166,18323,-27166,18323,-27166,18323,-27166,
-                                  17686,-27585,17686,-27585,17686,-27585,17686,-27585,
-                                  17039,-27989,17039,-27989,17039,-27989,17039,-27989,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15718,-28751,15718,-28751,15718,-28751,15718,-28751,
-                                  15045,-29109,15045,-29109,15045,-29109,15045,-29109,
-                                  14364,-29451,14364,-29451,14364,-29451,14364,-29451,
-                                  13674,-29778,13674,-29778,13674,-29778,13674,-29778,
-                                  12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                  12274,-30382,12274,-30382,12274,-30382,12274,-30382,
-                                  11564,-30659,11564,-30659,11564,-30659,11564,-30659,
-                                  10847,-30920,10847,-30920,10847,-30920,10847,-30920,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                  8664,-31601,8664,-31601,8664,-31601,8664,-31601,
-                                  7927,-31794,7927,-31794,7927,-31794,7927,-31794,
-                                  7185,-31970,7185,-31970,7185,-31970,7185,-31970,
-                                  6439,-32129,6439,-32129,6439,-32129,6439,-32129,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  4937,-32393,4937,-32393,4937,-32393,4937,-32393,
-                                  4182,-32499,4182,-32499,4182,-32499,4182,-32499,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  2665,-32659,2665,-32659,2665,-32659,2665,-32659,
-                                  1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                  1143,-32748,1143,-32748,1143,-32748,1143,-32748,
-                                  381,-32765,381,-32765,381,-32765,381,-32765,
-                                  -382,-32765,-382,-32765,-382,-32765,-382,-32765,
-                                  -1144,-32748,-1144,-32748,-1144,-32748,-1144,-32748,
-                                  -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                  -2666,-32659,-2666,-32659,-2666,-32659,-2666,-32659,
-                                  -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                  -4183,-32499,-4183,-32499,-4183,-32499,-4183,-32499,
-                                  -4938,-32393,-4938,-32393,-4938,-32393,-4938,-32393,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6440,-32129,-6440,-32129,-6440,-32129,-6440,-32129,
-                                  -7186,-31970,-7186,-31970,-7186,-31970,-7186,-31970,
-                                  -7928,-31794,-7928,-31794,-7928,-31794,-7928,-31794,
-                                  -8665,-31601,-8665,-31601,-8665,-31601,-8665,-31601,
-                                  -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -10848,-30920,-10848,-30920,-10848,-30920,-10848,-30920,
-                                  -11565,-30659,-11565,-30659,-11565,-30659,-11565,-30659,
-                                  -12275,-30382,-12275,-30382,-12275,-30382,-12275,-30382,
-                                  -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                  -13675,-29778,-13675,-29778,-13675,-29778,-13675,-29778,
-                                  -14365,-29451,-14365,-29451,-14365,-29451,-14365,-29451,
-                                  -15046,-29109,-15046,-29109,-15046,-29109,-15046,-29109,
-                                  -15719,-28751,-15719,-28751,-15719,-28751,-15719,-28751,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -17040,-27989,-17040,-27989,-17040,-27989,-17040,-27989,
-                                  -17687,-27585,-17687,-27585,-17687,-27585,-17687,-27585,
-                                  -18324,-27166,-18324,-27166,-18324,-27166,-18324,-27166,
-                                  -18951,-26732,-18951,-26732,-18951,-26732,-18951,-26732,
-                                  -19568,-26284,-19568,-26284,-19568,-26284,-19568,-26284,
-                                  -20174,-25821,-20174,-25821,-20174,-25821,-20174,-25821,
-                                  -20769,-25345,-20769,-25345,-20769,-25345,-20769,-25345,
-                                  -21353,-24855,-21353,-24855,-21353,-24855,-21353,-24855,
-                                  -21926,-24351,-21926,-24351,-21926,-24351,-21926,-24351,
-                                  -22487,-23834,-22487,-23834,-22487,-23834,-22487,-23834,
-                                  -23035,-23305,-23035,-23305,-23035,-23305,-23035,-23305,
-                                  -23571,-22762,-23571,-22762,-23571,-22762,-23571,-22762,
-                                  -24094,-22208,-24094,-22208,-24094,-22208,-24094,-22208,
-                                  -24605,-21641,-24605,-21641,-24605,-21641,-24605,-21641,
-                                  -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                  -25585,-20473,-25585,-20473,-25585,-20473,-25585,-20473,
-                                  -26054,-19872,-26054,-19872,-26054,-19872,-26054,-19872,
-                                  -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                                  -26951,-18638,-26951,-18638,-26951,-18638,-26951,-18638,
-                                  -27377,-18006,-27377,-18006,-27377,-18006,-27377,-18006,
-                                  -27788,-17364,-27788,-17364,-27788,-17364,-27788,-17364,
-                                  -28185,-16713,-28185,-16713,-28185,-16713,-28185,-16713,
-                                  -28566,-16053,-28566,-16053,-28566,-16053,-28566,-16053,
-                                  -28932,-15384,-28932,-15384,-28932,-15384,-28932,-15384,
-                                  -29282,-14706,-29282,-14706,-29282,-14706,-29282,-14706,
-                                  -29616,-14021,-29616,-14021,-29616,-14021,-29616,-14021,
-                                  -29935,-13328,-29935,-13328,-29935,-13328,-29935,-13328,
-                                  -30237,-12628,-30237,-12628,-30237,-12628,-30237,-12628,
-                                  -30522,-11921,-30522,-11921,-30522,-11921,-30522,-11921,
-                                  -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                  -31044,-10488,-31044,-10488,-31044,-10488,-31044,-10488,
-                                  -31279,-9763,-31279,-9763,-31279,-9763,-31279,-9763,
-                                  -31498,-9032,-31498,-9032,-31498,-9032,-31498,-9032,
-                                  -31700,-8297,-31700,-8297,-31700,-8297,-31700,-8297,
-                                  -31884,-7557,-31884,-7557,-31884,-7557,-31884,-7557,
-                                  -32051,-6813,-32051,-6813,-32051,-6813,-32051,-6813,
-                                  -32201,-6066,-32201,-6066,-32201,-6066,-32201,-6066,
-                                  -32334,-5315,-32334,-5315,-32334,-5315,-32334,-5315,
-                                  -32449,-4561,-32449,-4561,-32449,-4561,-32449,-4561,
-                                  -32546,-3805,-32546,-3805,-32546,-3805,-32546,-3805,
-                                  -32626,-3046,-32626,-3046,-32626,-3046,-32626,-3046,
-                                  -32688,-2286,-32688,-2286,-32688,-2286,-32688,-2286,
-                                  -32732,-1525,-32732,-1525,-32732,-1525,-32732,-1525,
-                                  -32759,-763,-32759,-763,-32759,-763,-32759,-763,
-                                  -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                  -32759,762,-32759,762,-32759,762,-32759,762,
-                                  -32732,1524,-32732,1524,-32732,1524,-32732,1524,
-                                  -32688,2285,-32688,2285,-32688,2285,-32688,2285,
-                                  -32626,3045,-32626,3045,-32626,3045,-32626,3045,
-                                  -32546,3804,-32546,3804,-32546,3804,-32546,3804,
-                                  -32449,4560,-32449,4560,-32449,4560,-32449,4560,
-                                  -32334,5314,-32334,5314,-32334,5314,-32334,5314,
-                                  -32201,6065,-32201,6065,-32201,6065,-32201,6065,
-                                  -32051,6812,-32051,6812,-32051,6812,-32051,6812,
-                                  -31884,7556,-31884,7556,-31884,7556,-31884,7556,
-                                  -31700,8296,-31700,8296,-31700,8296,-31700,8296,
-                                  -31498,9031,-31498,9031,-31498,9031,-31498,9031,
-                                  -31279,9762,-31279,9762,-31279,9762,-31279,9762,
-                                  -31044,10487,-31044,10487,-31044,10487,-31044,10487,
-                                  -30791,11206,-30791,11206,-30791,11206,-30791,11206,
-                                  -30522,11920,-30522,11920,-30522,11920,-30522,11920,
-                                  -30237,12627,-30237,12627,-30237,12627,-30237,12627,
-                                  -29935,13327,-29935,13327,-29935,13327,-29935,13327,
-                                  -29616,14020,-29616,14020,-29616,14020,-29616,14020,
-                                  -29282,14705,-29282,14705,-29282,14705,-29282,14705,
-                                  -28932,15383,-28932,15383,-28932,15383,-28932,15383,
-                                  -28566,16052,-28566,16052,-28566,16052,-28566,16052,
-                                  -28185,16712,-28185,16712,-28185,16712,-28185,16712,
-                                  -27788,17363,-27788,17363,-27788,17363,-27788,17363,
-                                  -27377,18005,-27377,18005,-27377,18005,-27377,18005,
-                                  -26951,18637,-26951,18637,-26951,18637,-26951,18637,
-                                  -26510,19259,-26510,19259,-26510,19259,-26510,19259,
-                                  -26054,19871,-26054,19871,-26054,19871,-26054,19871,
-                                  -25585,20472,-25585,20472,-25585,20472,-25585,20472,
-                                  -25101,21062,-25101,21062,-25101,21062,-25101,21062,
-                                  -24605,21640,-24605,21640,-24605,21640,-24605,21640,
-                                  -24094,22207,-24094,22207,-24094,22207,-24094,22207,
-                                  -23571,22761,-23571,22761,-23571,22761,-23571,22761,
-                                  -23035,23304,-23035,23304,-23035,23304,-23035,23304,
-                                  -22487,23833,-22487,23833,-22487,23833,-22487,23833,
-                                  -21926,24350,-21926,24350,-21926,24350,-21926,24350,
-                                  -21353,24854,-21353,24854,-21353,24854,-21353,24854,
-                                  -20769,25344,-20769,25344,-20769,25344,-20769,25344,
-                                  -20174,25820,-20174,25820,-20174,25820,-20174,25820,
-                                  -19568,26283,-19568,26283,-19568,26283,-19568,26283,
-                                  -18951,26731,-18951,26731,-18951,26731,-18951,26731,
-                                  -18324,27165,-18324,27165,-18324,27165,-18324,27165,
-                                  -17687,27584,-17687,27584,-17687,27584,-17687,27584,
-                                  -17040,27988,-17040,27988,-17040,27988,-17040,27988
-                                 };
+
+static int16_t twa540[179*2*4];
+static int16_t twb540[179*2*4];
 
 void dft540(int16_t *x,int16_t *y,unsigned char scale_flag)  // 180 x 3
 {
@@ -10987,416 +7878,8 @@ void dft540(int16_t *x,int16_t *y,unsigned char scale_flag)  // 180 x 3
 
 };
 
-/*
-Twiddles generated with
-
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:191)/576));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:191)/576));
-twa2 = zeros(1,2*191);
-twb2 = zeros(1,2*191);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa576[191*2*4] = {");
-for i=1:2:(2*190)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"static int16_t twb576[191*2*4] = {");
-for i=1:2:(2*190)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fclose(fd);
-*/
-static int16_t twa576[191*2*4] = {32765,-358,32765,-358,32765,-358,32765,-358,
-                                  32759,-715,32759,-715,32759,-715,32759,-715,
-                                  32749,-1073,32749,-1073,32749,-1073,32749,-1073,
-                                  32735,-1430,32735,-1430,32735,-1430,32735,-1430,
-                                  32718,-1787,32718,-1787,32718,-1787,32718,-1787,
-                                  32696,-2144,32696,-2144,32696,-2144,32696,-2144,
-                                  32671,-2500,32671,-2500,32671,-2500,32671,-2500,
-                                  32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                  32609,-3212,32609,-3212,32609,-3212,32609,-3212,
-                                  32572,-3568,32572,-3568,32572,-3568,32572,-3568,
-                                  32531,-3923,32531,-3923,32531,-3923,32531,-3923,
-                                  32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                  32438,-4632,32438,-4632,32438,-4632,32438,-4632,
-                                  32385,-4985,32385,-4985,32385,-4985,32385,-4985,
-                                  32329,-5338,32329,-5338,32329,-5338,32329,-5338,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32205,-6042,32205,-6042,32205,-6042,32205,-6042,
-                                  32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                  32065,-6743,32065,-6743,32065,-6743,32065,-6743,
-                                  31990,-7093,31990,-7093,31990,-7093,31990,-7093,
-                                  31911,-7441,31911,-7441,31911,-7441,31911,-7441,
-                                  31827,-7789,31827,-7789,31827,-7789,31827,-7789,
-                                  31741,-8135,31741,-8135,31741,-8135,31741,-8135,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31556,-8826,31556,-8826,31556,-8826,31556,-8826,
-                                  31457,-9170,31457,-9170,31457,-9170,31457,-9170,
-                                  31356,-9512,31356,-9512,31356,-9512,31356,-9512,
-                                  31250,-9854,31250,-9854,31250,-9854,31250,-9854,
-                                  31141,-10194,31141,-10194,31141,-10194,31141,-10194,
-                                  31028,-10533,31028,-10533,31028,-10533,31028,-10533,
-                                  30911,-10871,30911,-10871,30911,-10871,30911,-10871,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30666,-11543,30666,-11543,30666,-11543,30666,-11543,
-                                  30539,-11877,30539,-11877,30539,-11877,30539,-11877,
-                                  30407,-12209,30407,-12209,30407,-12209,30407,-12209,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  30134,-12869,30134,-12869,30134,-12869,30134,-12869,
-                                  29992,-13197,29992,-13197,29992,-13197,29992,-13197,
-                                  29846,-13524,29846,-13524,29846,-13524,29846,-13524,
-                                  29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                  29544,-14172,29544,-14172,29544,-14172,29544,-14172,
-                                  29387,-14493,29387,-14493,29387,-14493,29387,-14493,
-                                  29227,-14813,29227,-14813,29227,-14813,29227,-14813,
-                                  29064,-15131,29064,-15131,29064,-15131,29064,-15131,
-                                  28897,-15447,28897,-15447,28897,-15447,28897,-15447,
-                                  28727,-15761,28727,-15761,28727,-15761,28727,-15761,
-                                  28554,-16073,28554,-16073,28554,-16073,28554,-16073,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28196,-16693,28196,-16693,28196,-16693,28196,-16693,
-                                  28012,-16999,28012,-16999,28012,-16999,28012,-16999,
-                                  27825,-17304,27825,-17304,27825,-17304,27825,-17304,
-                                  27635,-17606,27635,-17606,27635,-17606,27635,-17606,
-                                  27441,-17907,27441,-17907,27441,-17907,27441,-17907,
-                                  27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                  27044,-18501,27044,-18501,27044,-18501,27044,-18501,
-                                  26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                  26634,-19087,26634,-19087,26634,-19087,26634,-19087,
-                                  26424,-19376,26424,-19376,26424,-19376,26424,-19376,
-                                  26211,-19663,26211,-19663,26211,-19663,26211,-19663,
-                                  25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                  25776,-20230,25776,-20230,25776,-20230,25776,-20230,
-                                  25554,-20510,25554,-20510,25554,-20510,25554,-20510,
-                                  25329,-20788,25329,-20788,25329,-20788,25329,-20788,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24869,-21335,24869,-21335,24869,-21335,24869,-21335,
-                                  24635,-21605,24635,-21605,24635,-21605,24635,-21605,
-                                  24398,-21873,24398,-21873,24398,-21873,24398,-21873,
-                                  24158,-22138,24158,-22138,24158,-22138,24158,-22138,
-                                  23915,-22400,23915,-22400,23915,-22400,23915,-22400,
-                                  23669,-22659,23669,-22659,23669,-22659,23669,-22659,
-                                  23421,-22916,23421,-22916,23421,-22916,23421,-22916,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22915,-23422,22915,-23422,22915,-23422,22915,-23422,
-                                  22658,-23670,22658,-23670,22658,-23670,22658,-23670,
-                                  22399,-23916,22399,-23916,22399,-23916,22399,-23916,
-                                  22137,-24159,22137,-24159,22137,-24159,22137,-24159,
-                                  21872,-24399,21872,-24399,21872,-24399,21872,-24399,
-                                  21604,-24636,21604,-24636,21604,-24636,21604,-24636,
-                                  21334,-24870,21334,-24870,21334,-24870,21334,-24870,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20787,-25330,20787,-25330,20787,-25330,20787,-25330,
-                                  20509,-25555,20509,-25555,20509,-25555,20509,-25555,
-                                  20229,-25777,20229,-25777,20229,-25777,20229,-25777,
-                                  19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                  19662,-26212,19662,-26212,19662,-26212,19662,-26212,
-                                  19375,-26425,19375,-26425,19375,-26425,19375,-26425,
-                                  19086,-26635,19086,-26635,19086,-26635,19086,-26635,
-                                  18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                  18500,-27045,18500,-27045,18500,-27045,18500,-27045,
-                                  18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                  17906,-27442,17906,-27442,17906,-27442,17906,-27442,
-                                  17605,-27636,17605,-27636,17605,-27636,17605,-27636,
-                                  17303,-27826,17303,-27826,17303,-27826,17303,-27826,
-                                  16998,-28013,16998,-28013,16998,-28013,16998,-28013,
-                                  16692,-28197,16692,-28197,16692,-28197,16692,-28197,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  16072,-28555,16072,-28555,16072,-28555,16072,-28555,
-                                  15760,-28728,15760,-28728,15760,-28728,15760,-28728,
-                                  15446,-28898,15446,-28898,15446,-28898,15446,-28898,
-                                  15130,-29065,15130,-29065,15130,-29065,15130,-29065,
-                                  14812,-29228,14812,-29228,14812,-29228,14812,-29228,
-                                  14492,-29388,14492,-29388,14492,-29388,14492,-29388,
-                                  14171,-29545,14171,-29545,14171,-29545,14171,-29545,
-                                  13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                  13523,-29847,13523,-29847,13523,-29847,13523,-29847,
-                                  13196,-29993,13196,-29993,13196,-29993,13196,-29993,
-                                  12868,-30135,12868,-30135,12868,-30135,12868,-30135,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  12208,-30408,12208,-30408,12208,-30408,12208,-30408,
-                                  11876,-30540,11876,-30540,11876,-30540,11876,-30540,
-                                  11542,-30667,11542,-30667,11542,-30667,11542,-30667,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10870,-30912,10870,-30912,10870,-30912,10870,-30912,
-                                  10532,-31029,10532,-31029,10532,-31029,10532,-31029,
-                                  10193,-31142,10193,-31142,10193,-31142,10193,-31142,
-                                  9853,-31251,9853,-31251,9853,-31251,9853,-31251,
-                                  9511,-31357,9511,-31357,9511,-31357,9511,-31357,
-                                  9169,-31458,9169,-31458,9169,-31458,9169,-31458,
-                                  8825,-31557,8825,-31557,8825,-31557,8825,-31557,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  8134,-31742,8134,-31742,8134,-31742,8134,-31742,
-                                  7788,-31828,7788,-31828,7788,-31828,7788,-31828,
-                                  7440,-31912,7440,-31912,7440,-31912,7440,-31912,
-                                  7092,-31991,7092,-31991,7092,-31991,7092,-31991,
-                                  6742,-32066,6742,-32066,6742,-32066,6742,-32066,
-                                  6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                  6041,-32206,6041,-32206,6041,-32206,6041,-32206,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5337,-32330,5337,-32330,5337,-32330,5337,-32330,
-                                  4984,-32386,4984,-32386,4984,-32386,4984,-32386,
-                                  4631,-32439,4631,-32439,4631,-32439,4631,-32439,
-                                  4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                  3922,-32532,3922,-32532,3922,-32532,3922,-32532,
-                                  3567,-32573,3567,-32573,3567,-32573,3567,-32573,
-                                  3211,-32610,3211,-32610,3211,-32610,3211,-32610,
-                                  2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                  2499,-32672,2499,-32672,2499,-32672,2499,-32672,
-                                  2143,-32697,2143,-32697,2143,-32697,2143,-32697,
-                                  1786,-32719,1786,-32719,1786,-32719,1786,-32719,
-                                  1429,-32736,1429,-32736,1429,-32736,1429,-32736,
-                                  1072,-32750,1072,-32750,1072,-32750,1072,-32750,
-                                  714,-32760,714,-32760,714,-32760,714,-32760,
-                                  357,-32766,357,-32766,357,-32766,357,-32766,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -358,-32766,-358,-32766,-358,-32766,-358,-32766,
-                                  -715,-32760,-715,-32760,-715,-32760,-715,-32760,
-                                  -1073,-32750,-1073,-32750,-1073,-32750,-1073,-32750,
-                                  -1430,-32736,-1430,-32736,-1430,-32736,-1430,-32736,
-                                  -1787,-32719,-1787,-32719,-1787,-32719,-1787,-32719,
-                                  -2144,-32697,-2144,-32697,-2144,-32697,-2144,-32697,
-                                  -2500,-32672,-2500,-32672,-2500,-32672,-2500,-32672,
-                                  -2856,-32643,-2856,-32643,-2856,-32643,-2856,-32643,
-                                  -3212,-32610,-3212,-32610,-3212,-32610,-3212,-32610,
-                                  -3568,-32573,-3568,-32573,-3568,-32573,-3568,-32573,
-                                  -3923,-32532,-3923,-32532,-3923,-32532,-3923,-32532,
-                                  -4277,-32487,-4277,-32487,-4277,-32487,-4277,-32487,
-                                  -4632,-32439,-4632,-32439,-4632,-32439,-4632,-32439,
-                                  -4985,-32386,-4985,-32386,-4985,-32386,-4985,-32386,
-                                  -5338,-32330,-5338,-32330,-5338,-32330,-5338,-32330,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6042,-32206,-6042,-32206,-6042,-32206,-6042,-32206,
-                                  -6393,-32138,-6393,-32138,-6393,-32138,-6393,-32138,
-                                  -6743,-32066,-6743,-32066,-6743,-32066,-6743,-32066,
-                                  -7093,-31991,-7093,-31991,-7093,-31991,-7093,-31991,
-                                  -7441,-31912,-7441,-31912,-7441,-31912,-7441,-31912,
-                                  -7789,-31828,-7789,-31828,-7789,-31828,-7789,-31828,
-                                  -8135,-31742,-8135,-31742,-8135,-31742,-8135,-31742,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -8826,-31557,-8826,-31557,-8826,-31557,-8826,-31557,
-                                  -9170,-31458,-9170,-31458,-9170,-31458,-9170,-31458,
-                                  -9512,-31357,-9512,-31357,-9512,-31357,-9512,-31357,
-                                  -9854,-31251,-9854,-31251,-9854,-31251,-9854,-31251,
-                                  -10194,-31142,-10194,-31142,-10194,-31142,-10194,-31142,
-                                  -10533,-31029,-10533,-31029,-10533,-31029,-10533,-31029,
-                                  -10871,-30912,-10871,-30912,-10871,-30912,-10871,-30912,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -11543,-30667,-11543,-30667,-11543,-30667,-11543,-30667,
-                                  -11877,-30540,-11877,-30540,-11877,-30540,-11877,-30540,
-                                  -12209,-30408,-12209,-30408,-12209,-30408,-12209,-30408,
-                                  -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                  -12869,-30135,-12869,-30135,-12869,-30135,-12869,-30135,
-                                  -13197,-29993,-13197,-29993,-13197,-29993,-13197,-29993,
-                                  -13524,-29847,-13524,-29847,-13524,-29847,-13524,-29847,
-                                  -13848,-29697,-13848,-29697,-13848,-29697,-13848,-29697,
-                                  -14172,-29545,-14172,-29545,-14172,-29545,-14172,-29545,
-                                  -14493,-29388,-14493,-29388,-14493,-29388,-14493,-29388,
-                                  -14813,-29228,-14813,-29228,-14813,-29228,-14813,-29228,
-                                  -15131,-29065,-15131,-29065,-15131,-29065,-15131,-29065,
-                                  -15447,-28898,-15447,-28898,-15447,-28898,-15447,-28898,
-                                  -15761,-28728,-15761,-28728,-15761,-28728,-15761,-28728,
-                                  -16073,-28555,-16073,-28555,-16073,-28555,-16073,-28555
-                                 };
-static int16_t twb576[191*2*4] = {32759,-715,32759,-715,32759,-715,32759,-715,
-                                  32735,-1430,32735,-1430,32735,-1430,32735,-1430,
-                                  32696,-2144,32696,-2144,32696,-2144,32696,-2144,
-                                  32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                  32572,-3568,32572,-3568,32572,-3568,32572,-3568,
-                                  32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                  32385,-4985,32385,-4985,32385,-4985,32385,-4985,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                  31990,-7093,31990,-7093,31990,-7093,31990,-7093,
-                                  31827,-7789,31827,-7789,31827,-7789,31827,-7789,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31457,-9170,31457,-9170,31457,-9170,31457,-9170,
-                                  31250,-9854,31250,-9854,31250,-9854,31250,-9854,
-                                  31028,-10533,31028,-10533,31028,-10533,31028,-10533,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30539,-11877,30539,-11877,30539,-11877,30539,-11877,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  29992,-13197,29992,-13197,29992,-13197,29992,-13197,
-                                  29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                  29387,-14493,29387,-14493,29387,-14493,29387,-14493,
-                                  29064,-15131,29064,-15131,29064,-15131,29064,-15131,
-                                  28727,-15761,28727,-15761,28727,-15761,28727,-15761,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28012,-16999,28012,-16999,28012,-16999,28012,-16999,
-                                  27635,-17606,27635,-17606,27635,-17606,27635,-17606,
-                                  27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                  26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                  26424,-19376,26424,-19376,26424,-19376,26424,-19376,
-                                  25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                  25554,-20510,25554,-20510,25554,-20510,25554,-20510,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24635,-21605,24635,-21605,24635,-21605,24635,-21605,
-                                  24158,-22138,24158,-22138,24158,-22138,24158,-22138,
-                                  23669,-22659,23669,-22659,23669,-22659,23669,-22659,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22658,-23670,22658,-23670,22658,-23670,22658,-23670,
-                                  22137,-24159,22137,-24159,22137,-24159,22137,-24159,
-                                  21604,-24636,21604,-24636,21604,-24636,21604,-24636,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20509,-25555,20509,-25555,20509,-25555,20509,-25555,
-                                  19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                  19375,-26425,19375,-26425,19375,-26425,19375,-26425,
-                                  18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                  18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                  17605,-27636,17605,-27636,17605,-27636,17605,-27636,
-                                  16998,-28013,16998,-28013,16998,-28013,16998,-28013,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15760,-28728,15760,-28728,15760,-28728,15760,-28728,
-                                  15130,-29065,15130,-29065,15130,-29065,15130,-29065,
-                                  14492,-29388,14492,-29388,14492,-29388,14492,-29388,
-                                  13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                  13196,-29993,13196,-29993,13196,-29993,13196,-29993,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  11876,-30540,11876,-30540,11876,-30540,11876,-30540,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10532,-31029,10532,-31029,10532,-31029,10532,-31029,
-                                  9853,-31251,9853,-31251,9853,-31251,9853,-31251,
-                                  9169,-31458,9169,-31458,9169,-31458,9169,-31458,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  7788,-31828,7788,-31828,7788,-31828,7788,-31828,
-                                  7092,-31991,7092,-31991,7092,-31991,7092,-31991,
-                                  6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  4984,-32386,4984,-32386,4984,-32386,4984,-32386,
-                                  4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                  3567,-32573,3567,-32573,3567,-32573,3567,-32573,
-                                  2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                  2143,-32697,2143,-32697,2143,-32697,2143,-32697,
-                                  1429,-32736,1429,-32736,1429,-32736,1429,-32736,
-                                  714,-32760,714,-32760,714,-32760,714,-32760,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -715,-32760,-715,-32760,-715,-32760,-715,-32760,
-                                  -1430,-32736,-1430,-32736,-1430,-32736,-1430,-32736,
-                                  -2144,-32697,-2144,-32697,-2144,-32697,-2144,-32697,
-                                  -2856,-32643,-2856,-32643,-2856,-32643,-2856,-32643,
-                                  -3568,-32573,-3568,-32573,-3568,-32573,-3568,-32573,
-                                  -4277,-32487,-4277,-32487,-4277,-32487,-4277,-32487,
-                                  -4985,-32386,-4985,-32386,-4985,-32386,-4985,-32386,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6393,-32138,-6393,-32138,-6393,-32138,-6393,-32138,
-                                  -7093,-31991,-7093,-31991,-7093,-31991,-7093,-31991,
-                                  -7789,-31828,-7789,-31828,-7789,-31828,-7789,-31828,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -9170,-31458,-9170,-31458,-9170,-31458,-9170,-31458,
-                                  -9854,-31251,-9854,-31251,-9854,-31251,-9854,-31251,
-                                  -10533,-31029,-10533,-31029,-10533,-31029,-10533,-31029,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -11877,-30540,-11877,-30540,-11877,-30540,-11877,-30540,
-                                  -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                  -13197,-29993,-13197,-29993,-13197,-29993,-13197,-29993,
-                                  -13848,-29697,-13848,-29697,-13848,-29697,-13848,-29697,
-                                  -14493,-29388,-14493,-29388,-14493,-29388,-14493,-29388,
-                                  -15131,-29065,-15131,-29065,-15131,-29065,-15131,-29065,
-                                  -15761,-28728,-15761,-28728,-15761,-28728,-15761,-28728,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -16999,-28013,-16999,-28013,-16999,-28013,-16999,-28013,
-                                  -17606,-27636,-17606,-27636,-17606,-27636,-17606,-27636,
-                                  -18205,-27245,-18205,-27245,-18205,-27245,-18205,-27245,
-                                  -18795,-26842,-18795,-26842,-18795,-26842,-18795,-26842,
-                                  -19376,-26425,-19376,-26425,-19376,-26425,-19376,-26425,
-                                  -19948,-25996,-19948,-25996,-19948,-25996,-19948,-25996,
-                                  -20510,-25555,-20510,-25555,-20510,-25555,-20510,-25555,
-                                  -21063,-25101,-21063,-25101,-21063,-25101,-21063,-25101,
-                                  -21605,-24636,-21605,-24636,-21605,-24636,-21605,-24636,
-                                  -22138,-24159,-22138,-24159,-22138,-24159,-22138,-24159,
-                                  -22659,-23670,-22659,-23670,-22659,-23670,-22659,-23670,
-                                  -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                  -23670,-22659,-23670,-22659,-23670,-22659,-23670,-22659,
-                                  -24159,-22138,-24159,-22138,-24159,-22138,-24159,-22138,
-                                  -24636,-21605,-24636,-21605,-24636,-21605,-24636,-21605,
-                                  -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                  -25555,-20510,-25555,-20510,-25555,-20510,-25555,-20510,
-                                  -25996,-19948,-25996,-19948,-25996,-19948,-25996,-19948,
-                                  -26425,-19376,-26425,-19376,-26425,-19376,-26425,-19376,
-                                  -26842,-18795,-26842,-18795,-26842,-18795,-26842,-18795,
-                                  -27245,-18205,-27245,-18205,-27245,-18205,-27245,-18205,
-                                  -27636,-17606,-27636,-17606,-27636,-17606,-27636,-17606,
-                                  -28013,-16999,-28013,-16999,-28013,-16999,-28013,-16999,
-                                  -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                  -28728,-15761,-28728,-15761,-28728,-15761,-28728,-15761,
-                                  -29065,-15131,-29065,-15131,-29065,-15131,-29065,-15131,
-                                  -29388,-14493,-29388,-14493,-29388,-14493,-29388,-14493,
-                                  -29697,-13848,-29697,-13848,-29697,-13848,-29697,-13848,
-                                  -29993,-13197,-29993,-13197,-29993,-13197,-29993,-13197,
-                                  -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                                  -30540,-11877,-30540,-11877,-30540,-11877,-30540,-11877,
-                                  -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                  -31029,-10533,-31029,-10533,-31029,-10533,-31029,-10533,
-                                  -31251,-9854,-31251,-9854,-31251,-9854,-31251,-9854,
-                                  -31458,-9170,-31458,-9170,-31458,-9170,-31458,-9170,
-                                  -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                                  -31828,-7789,-31828,-7789,-31828,-7789,-31828,-7789,
-                                  -31991,-7093,-31991,-7093,-31991,-7093,-31991,-7093,
-                                  -32138,-6393,-32138,-6393,-32138,-6393,-32138,-6393,
-                                  -32270,-5690,-32270,-5690,-32270,-5690,-32270,-5690,
-                                  -32386,-4985,-32386,-4985,-32386,-4985,-32386,-4985,
-                                  -32487,-4277,-32487,-4277,-32487,-4277,-32487,-4277,
-                                  -32573,-3568,-32573,-3568,-32573,-3568,-32573,-3568,
-                                  -32643,-2856,-32643,-2856,-32643,-2856,-32643,-2856,
-                                  -32697,-2144,-32697,-2144,-32697,-2144,-32697,-2144,
-                                  -32736,-1430,-32736,-1430,-32736,-1430,-32736,-1430,
-                                  -32760,-715,-32760,-715,-32760,-715,-32760,-715,
-                                  -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                  -32760,714,-32760,714,-32760,714,-32760,714,
-                                  -32736,1429,-32736,1429,-32736,1429,-32736,1429,
-                                  -32697,2143,-32697,2143,-32697,2143,-32697,2143,
-                                  -32643,2855,-32643,2855,-32643,2855,-32643,2855,
-                                  -32573,3567,-32573,3567,-32573,3567,-32573,3567,
-                                  -32487,4276,-32487,4276,-32487,4276,-32487,4276,
-                                  -32386,4984,-32386,4984,-32386,4984,-32386,4984,
-                                  -32270,5689,-32270,5689,-32270,5689,-32270,5689,
-                                  -32138,6392,-32138,6392,-32138,6392,-32138,6392,
-                                  -31991,7092,-31991,7092,-31991,7092,-31991,7092,
-                                  -31828,7788,-31828,7788,-31828,7788,-31828,7788,
-                                  -31651,8480,-31651,8480,-31651,8480,-31651,8480,
-                                  -31458,9169,-31458,9169,-31458,9169,-31458,9169,
-                                  -31251,9853,-31251,9853,-31251,9853,-31251,9853,
-                                  -31029,10532,-31029,10532,-31029,10532,-31029,10532,
-                                  -30791,11206,-30791,11206,-30791,11206,-30791,11206,
-                                  -30540,11876,-30540,11876,-30540,11876,-30540,11876,
-                                  -30273,12539,-30273,12539,-30273,12539,-30273,12539,
-                                  -29993,13196,-29993,13196,-29993,13196,-29993,13196,
-                                  -29697,13847,-29697,13847,-29697,13847,-29697,13847,
-                                  -29388,14492,-29388,14492,-29388,14492,-29388,14492,
-                                  -29065,15130,-29065,15130,-29065,15130,-29065,15130,
-                                  -28728,15760,-28728,15760,-28728,15760,-28728,15760,
-                                  -28378,16383,-28378,16383,-28378,16383,-28378,16383,
-                                  -28013,16998,-28013,16998,-28013,16998,-28013,16998,
-                                  -27636,17605,-27636,17605,-27636,17605,-27636,17605,
-                                  -27245,18204,-27245,18204,-27245,18204,-27245,18204,
-                                  -26842,18794,-26842,18794,-26842,18794,-26842,18794,
-                                  -26425,19375,-26425,19375,-26425,19375,-26425,19375,
-                                  -25996,19947,-25996,19947,-25996,19947,-25996,19947,
-                                  -25555,20509,-25555,20509,-25555,20509,-25555,20509,
-                                  -25101,21062,-25101,21062,-25101,21062,-25101,21062,
-                                  -24636,21604,-24636,21604,-24636,21604,-24636,21604,
-                                  -24159,22137,-24159,22137,-24159,22137,-24159,22137,
-                                  -23670,22658,-23670,22658,-23670,22658,-23670,22658,
-                                  -23170,23169,-23170,23169,-23170,23169,-23170,23169,
-                                  -22659,23669,-22659,23669,-22659,23669,-22659,23669,
-                                  -22138,24158,-22138,24158,-22138,24158,-22138,24158,
-                                  -21605,24635,-21605,24635,-21605,24635,-21605,24635,
-                                  -21063,25100,-21063,25100,-21063,25100,-21063,25100,
-                                  -20510,25554,-20510,25554,-20510,25554,-20510,25554,
-                                  -19948,25995,-19948,25995,-19948,25995,-19948,25995,
-                                  -19376,26424,-19376,26424,-19376,26424,-19376,26424,
-                                  -18795,26841,-18795,26841,-18795,26841,-18795,26841,
-                                  -18205,27244,-18205,27244,-18205,27244,-18205,27244,
-                                  -17606,27635,-17606,27635,-17606,27635,-17606,27635,
-                                  -16999,28012,-16999,28012,-16999,28012,-16999,28012
-                                 };
+static int16_t twa576[191*2*4];
+static int16_t twb576[191*2*4];
 
 void dft576(int16_t *x,int16_t *y,unsigned char scale_flag)  // 192 x 3
 {
@@ -11446,320 +7929,8 @@ void dft576(int16_t *x,int16_t *y,unsigned char scale_flag)  // 192 x 3
   _m_empty();
 };
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:299)/600));
-twa2 = zeros(1,2*299);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa600[299*2*4] = {");
-for i=1:2:(2*298)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fclose(fd);
- */
-static int16_t twa600[299*2*4] = {32765,-344,32765,-344,32765,-344,32765,-344,
-                                  32759,-687,32759,-687,32759,-687,32759,-687,
-                                  32750,-1030,32750,-1030,32750,-1030,32750,-1030,
-                                  32738,-1373,32738,-1373,32738,-1373,32738,-1373,
-                                  32722,-1715,32722,-1715,32722,-1715,32722,-1715,
-                                  32702,-2058,32702,-2058,32702,-2058,32702,-2058,
-                                  32679,-2400,32679,-2400,32679,-2400,32679,-2400,
-                                  32652,-2742,32652,-2742,32652,-2742,32652,-2742,
-                                  32621,-3084,32621,-3084,32621,-3084,32621,-3084,
-                                  32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                  32549,-3767,32549,-3767,32549,-3767,32549,-3767,
-                                  32508,-4107,32508,-4107,32508,-4107,32508,-4107,
-                                  32463,-4447,32463,-4447,32463,-4447,32463,-4447,
-                                  32415,-4787,32415,-4787,32415,-4787,32415,-4787,
-                                  32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                                  32308,-5465,32308,-5465,32308,-5465,32308,-5465,
-                                  32249,-5803,32249,-5803,32249,-5803,32249,-5803,
-                                  32186,-6140,32186,-6140,32186,-6140,32186,-6140,
-                                  32120,-6477,32120,-6477,32120,-6477,32120,-6477,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  31977,-7148,31977,-7148,31977,-7148,31977,-7148,
-                                  31901,-7483,31901,-7483,31901,-7483,31901,-7483,
-                                  31821,-7817,31821,-7817,31821,-7817,31821,-7817,
-                                  31737,-8149,31737,-8149,31737,-8149,31737,-8149,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31559,-8812,31559,-8812,31559,-8812,31559,-8812,
-                                  31465,-9142,31465,-9142,31465,-9142,31465,-9142,
-                                  31368,-9471,31368,-9471,31368,-9471,31368,-9471,
-                                  31267,-9799,31267,-9799,31267,-9799,31267,-9799,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  31055,-10452,31055,-10452,31055,-10452,31055,-10452,
-                                  30944,-10776,30944,-10776,30944,-10776,30944,-10776,
-                                  30829,-11100,30829,-11100,30829,-11100,30829,-11100,
-                                  30711,-11422,30711,-11422,30711,-11422,30711,-11422,
-                                  30590,-11743,30590,-11743,30590,-11743,30590,-11743,
-                                  30465,-12063,30465,-12063,30465,-12063,30465,-12063,
-                                  30338,-12381,30338,-12381,30338,-12381,30338,-12381,
-                                  30206,-12698,30206,-12698,30206,-12698,30206,-12698,
-                                  30072,-13014,30072,-13014,30072,-13014,30072,-13014,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29792,-13641,29792,-13641,29792,-13641,29792,-13641,
-                                  29648,-13952,29648,-13952,29648,-13952,29648,-13952,
-                                  29500,-14262,29500,-14262,29500,-14262,29500,-14262,
-                                  29349,-14570,29349,-14570,29349,-14570,29349,-14570,
-                                  29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                                  29038,-15181,29038,-15181,29038,-15181,29038,-15181,
-                                  28877,-15485,28877,-15485,28877,-15485,28877,-15485,
-                                  28713,-15786,28713,-15786,28713,-15786,28713,-15786,
-                                  28547,-16086,28547,-16086,28547,-16086,28547,-16086,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28203,-16680,28203,-16680,28203,-16680,28203,-16680,
-                                  28027,-16975,28027,-16975,28027,-16975,28027,-16975,
-                                  27848,-17267,27848,-17267,27848,-17267,27848,-17267,
-                                  27666,-17558,27666,-17558,27666,-17558,27666,-17558,
-                                  27480,-17847,27480,-17847,27480,-17847,27480,-17847,
-                                  27292,-18133,27292,-18133,27292,-18133,27292,-18133,
-                                  27100,-18418,27100,-18418,27100,-18418,27100,-18418,
-                                  26906,-18701,26906,-18701,26906,-18701,26906,-18701,
-                                  26709,-18982,26709,-18982,26709,-18982,26709,-18982,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  26305,-19537,26305,-19537,26305,-19537,26305,-19537,
-                                  26099,-19811,26099,-19811,26099,-19811,26099,-19811,
-                                  25891,-20084,25891,-20084,25891,-20084,25891,-20084,
-                                  25679,-20354,25679,-20354,25679,-20354,25679,-20354,
-                                  25464,-20621,25464,-20621,25464,-20621,25464,-20621,
-                                  25247,-20887,25247,-20887,25247,-20887,25247,-20887,
-                                  25027,-21150,25027,-21150,25027,-21150,25027,-21150,
-                                  24804,-21411,24804,-21411,24804,-21411,24804,-21411,
-                                  24578,-21670,24578,-21670,24578,-21670,24578,-21670,
-                                  24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                  24119,-22180,24119,-22180,24119,-22180,24119,-22180,
-                                  23886,-22431,23886,-22431,23886,-22431,23886,-22431,
-                                  23649,-22680,23649,-22680,23649,-22680,23649,-22680,
-                                  23411,-22926,23411,-22926,23411,-22926,23411,-22926,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22925,-23412,22925,-23412,22925,-23412,22925,-23412,
-                                  22679,-23650,22679,-23650,22679,-23650,22679,-23650,
-                                  22430,-23887,22430,-23887,22430,-23887,22430,-23887,
-                                  22179,-24120,22179,-24120,22179,-24120,22179,-24120,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21669,-24579,21669,-24579,21669,-24579,21669,-24579,
-                                  21410,-24805,21410,-24805,21410,-24805,21410,-24805,
-                                  21149,-25028,21149,-25028,21149,-25028,21149,-25028,
-                                  20886,-25248,20886,-25248,20886,-25248,20886,-25248,
-                                  20620,-25465,20620,-25465,20620,-25465,20620,-25465,
-                                  20353,-25680,20353,-25680,20353,-25680,20353,-25680,
-                                  20083,-25892,20083,-25892,20083,-25892,20083,-25892,
-                                  19810,-26100,19810,-26100,19810,-26100,19810,-26100,
-                                  19536,-26306,19536,-26306,19536,-26306,19536,-26306,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  18981,-26710,18981,-26710,18981,-26710,18981,-26710,
-                                  18700,-26907,18700,-26907,18700,-26907,18700,-26907,
-                                  18417,-27101,18417,-27101,18417,-27101,18417,-27101,
-                                  18132,-27293,18132,-27293,18132,-27293,18132,-27293,
-                                  17846,-27481,17846,-27481,17846,-27481,17846,-27481,
-                                  17557,-27667,17557,-27667,17557,-27667,17557,-27667,
-                                  17266,-27849,17266,-27849,17266,-27849,17266,-27849,
-                                  16974,-28028,16974,-28028,16974,-28028,16974,-28028,
-                                  16679,-28204,16679,-28204,16679,-28204,16679,-28204,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  16085,-28548,16085,-28548,16085,-28548,16085,-28548,
-                                  15785,-28714,15785,-28714,15785,-28714,15785,-28714,
-                                  15484,-28878,15484,-28878,15484,-28878,15484,-28878,
-                                  15180,-29039,15180,-29039,15180,-29039,15180,-29039,
-                                  14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                                  14569,-29350,14569,-29350,14569,-29350,14569,-29350,
-                                  14261,-29501,14261,-29501,14261,-29501,14261,-29501,
-                                  13951,-29649,13951,-29649,13951,-29649,13951,-29649,
-                                  13640,-29793,13640,-29793,13640,-29793,13640,-29793,
-                                  13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                  13013,-30073,13013,-30073,13013,-30073,13013,-30073,
-                                  12697,-30207,12697,-30207,12697,-30207,12697,-30207,
-                                  12380,-30339,12380,-30339,12380,-30339,12380,-30339,
-                                  12062,-30466,12062,-30466,12062,-30466,12062,-30466,
-                                  11742,-30591,11742,-30591,11742,-30591,11742,-30591,
-                                  11421,-30712,11421,-30712,11421,-30712,11421,-30712,
-                                  11099,-30830,11099,-30830,11099,-30830,11099,-30830,
-                                  10775,-30945,10775,-30945,10775,-30945,10775,-30945,
-                                  10451,-31056,10451,-31056,10451,-31056,10451,-31056,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9798,-31268,9798,-31268,9798,-31268,9798,-31268,
-                                  9470,-31369,9470,-31369,9470,-31369,9470,-31369,
-                                  9141,-31466,9141,-31466,9141,-31466,9141,-31466,
-                                  8811,-31560,8811,-31560,8811,-31560,8811,-31560,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  8148,-31738,8148,-31738,8148,-31738,8148,-31738,
-                                  7816,-31822,7816,-31822,7816,-31822,7816,-31822,
-                                  7482,-31902,7482,-31902,7482,-31902,7482,-31902,
-                                  7147,-31978,7147,-31978,7147,-31978,7147,-31978,
-                                  6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                  6476,-32121,6476,-32121,6476,-32121,6476,-32121,
-                                  6139,-32187,6139,-32187,6139,-32187,6139,-32187,
-                                  5802,-32250,5802,-32250,5802,-32250,5802,-32250,
-                                  5464,-32309,5464,-32309,5464,-32309,5464,-32309,
-                                  5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                                  4786,-32416,4786,-32416,4786,-32416,4786,-32416,
-                                  4446,-32464,4446,-32464,4446,-32464,4446,-32464,
-                                  4106,-32509,4106,-32509,4106,-32509,4106,-32509,
-                                  3766,-32550,3766,-32550,3766,-32550,3766,-32550,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  3083,-32622,3083,-32622,3083,-32622,3083,-32622,
-                                  2741,-32653,2741,-32653,2741,-32653,2741,-32653,
-                                  2399,-32680,2399,-32680,2399,-32680,2399,-32680,
-                                  2057,-32703,2057,-32703,2057,-32703,2057,-32703,
-                                  1714,-32723,1714,-32723,1714,-32723,1714,-32723,
-                                  1372,-32739,1372,-32739,1372,-32739,1372,-32739,
-                                  1029,-32751,1029,-32751,1029,-32751,1029,-32751,
-                                  686,-32760,686,-32760,686,-32760,686,-32760,
-                                  343,-32766,343,-32766,343,-32766,343,-32766,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -344,-32766,-344,-32766,-344,-32766,-344,-32766,
-                                  -687,-32760,-687,-32760,-687,-32760,-687,-32760,
-                                  -1030,-32751,-1030,-32751,-1030,-32751,-1030,-32751,
-                                  -1373,-32739,-1373,-32739,-1373,-32739,-1373,-32739,
-                                  -1715,-32723,-1715,-32723,-1715,-32723,-1715,-32723,
-                                  -2058,-32703,-2058,-32703,-2058,-32703,-2058,-32703,
-                                  -2400,-32680,-2400,-32680,-2400,-32680,-2400,-32680,
-                                  -2742,-32653,-2742,-32653,-2742,-32653,-2742,-32653,
-                                  -3084,-32622,-3084,-32622,-3084,-32622,-3084,-32622,
-                                  -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                  -3767,-32550,-3767,-32550,-3767,-32550,-3767,-32550,
-                                  -4107,-32509,-4107,-32509,-4107,-32509,-4107,-32509,
-                                  -4447,-32464,-4447,-32464,-4447,-32464,-4447,-32464,
-                                  -4787,-32416,-4787,-32416,-4787,-32416,-4787,-32416,
-                                  -5126,-32364,-5126,-32364,-5126,-32364,-5126,-32364,
-                                  -5465,-32309,-5465,-32309,-5465,-32309,-5465,-32309,
-                                  -5803,-32250,-5803,-32250,-5803,-32250,-5803,-32250,
-                                  -6140,-32187,-6140,-32187,-6140,-32187,-6140,-32187,
-                                  -6477,-32121,-6477,-32121,-6477,-32121,-6477,-32121,
-                                  -6813,-32051,-6813,-32051,-6813,-32051,-6813,-32051,
-                                  -7148,-31978,-7148,-31978,-7148,-31978,-7148,-31978,
-                                  -7483,-31902,-7483,-31902,-7483,-31902,-7483,-31902,
-                                  -7817,-31822,-7817,-31822,-7817,-31822,-7817,-31822,
-                                  -8149,-31738,-8149,-31738,-8149,-31738,-8149,-31738,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -8812,-31560,-8812,-31560,-8812,-31560,-8812,-31560,
-                                  -9142,-31466,-9142,-31466,-9142,-31466,-9142,-31466,
-                                  -9471,-31369,-9471,-31369,-9471,-31369,-9471,-31369,
-                                  -9799,-31268,-9799,-31268,-9799,-31268,-9799,-31268,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -10452,-31056,-10452,-31056,-10452,-31056,-10452,-31056,
-                                  -10776,-30945,-10776,-30945,-10776,-30945,-10776,-30945,
-                                  -11100,-30830,-11100,-30830,-11100,-30830,-11100,-30830,
-                                  -11422,-30712,-11422,-30712,-11422,-30712,-11422,-30712,
-                                  -11743,-30591,-11743,-30591,-11743,-30591,-11743,-30591,
-                                  -12063,-30466,-12063,-30466,-12063,-30466,-12063,-30466,
-                                  -12381,-30339,-12381,-30339,-12381,-30339,-12381,-30339,
-                                  -12698,-30207,-12698,-30207,-12698,-30207,-12698,-30207,
-                                  -13014,-30073,-13014,-30073,-13014,-30073,-13014,-30073,
-                                  -13328,-29935,-13328,-29935,-13328,-29935,-13328,-29935,
-                                  -13641,-29793,-13641,-29793,-13641,-29793,-13641,-29793,
-                                  -13952,-29649,-13952,-29649,-13952,-29649,-13952,-29649,
-                                  -14262,-29501,-14262,-29501,-14262,-29501,-14262,-29501,
-                                  -14570,-29350,-14570,-29350,-14570,-29350,-14570,-29350,
-                                  -14876,-29196,-14876,-29196,-14876,-29196,-14876,-29196,
-                                  -15181,-29039,-15181,-29039,-15181,-29039,-15181,-29039,
-                                  -15485,-28878,-15485,-28878,-15485,-28878,-15485,-28878,
-                                  -15786,-28714,-15786,-28714,-15786,-28714,-15786,-28714,
-                                  -16086,-28548,-16086,-28548,-16086,-28548,-16086,-28548,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -16680,-28204,-16680,-28204,-16680,-28204,-16680,-28204,
-                                  -16975,-28028,-16975,-28028,-16975,-28028,-16975,-28028,
-                                  -17267,-27849,-17267,-27849,-17267,-27849,-17267,-27849,
-                                  -17558,-27667,-17558,-27667,-17558,-27667,-17558,-27667,
-                                  -17847,-27481,-17847,-27481,-17847,-27481,-17847,-27481,
-                                  -18133,-27293,-18133,-27293,-18133,-27293,-18133,-27293,
-                                  -18418,-27101,-18418,-27101,-18418,-27101,-18418,-27101,
-                                  -18701,-26907,-18701,-26907,-18701,-26907,-18701,-26907,
-                                  -18982,-26710,-18982,-26710,-18982,-26710,-18982,-26710,
-                                  -19260,-26510,-19260,-26510,-19260,-26510,-19260,-26510,
-                                  -19537,-26306,-19537,-26306,-19537,-26306,-19537,-26306,
-                                  -19811,-26100,-19811,-26100,-19811,-26100,-19811,-26100,
-                                  -20084,-25892,-20084,-25892,-20084,-25892,-20084,-25892,
-                                  -20354,-25680,-20354,-25680,-20354,-25680,-20354,-25680,
-                                  -20621,-25465,-20621,-25465,-20621,-25465,-20621,-25465,
-                                  -20887,-25248,-20887,-25248,-20887,-25248,-20887,-25248,
-                                  -21150,-25028,-21150,-25028,-21150,-25028,-21150,-25028,
-                                  -21411,-24805,-21411,-24805,-21411,-24805,-21411,-24805,
-                                  -21670,-24579,-21670,-24579,-21670,-24579,-21670,-24579,
-                                  -21926,-24351,-21926,-24351,-21926,-24351,-21926,-24351,
-                                  -22180,-24120,-22180,-24120,-22180,-24120,-22180,-24120,
-                                  -22431,-23887,-22431,-23887,-22431,-23887,-22431,-23887,
-                                  -22680,-23650,-22680,-23650,-22680,-23650,-22680,-23650,
-                                  -22926,-23412,-22926,-23412,-22926,-23412,-22926,-23412,
-                                  -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                  -23412,-22926,-23412,-22926,-23412,-22926,-23412,-22926,
-                                  -23650,-22680,-23650,-22680,-23650,-22680,-23650,-22680,
-                                  -23887,-22431,-23887,-22431,-23887,-22431,-23887,-22431,
-                                  -24120,-22180,-24120,-22180,-24120,-22180,-24120,-22180,
-                                  -24351,-21926,-24351,-21926,-24351,-21926,-24351,-21926,
-                                  -24579,-21670,-24579,-21670,-24579,-21670,-24579,-21670,
-                                  -24805,-21411,-24805,-21411,-24805,-21411,-24805,-21411,
-                                  -25028,-21150,-25028,-21150,-25028,-21150,-25028,-21150,
-                                  -25248,-20887,-25248,-20887,-25248,-20887,-25248,-20887,
-                                  -25465,-20621,-25465,-20621,-25465,-20621,-25465,-20621,
-                                  -25680,-20354,-25680,-20354,-25680,-20354,-25680,-20354,
-                                  -25892,-20084,-25892,-20084,-25892,-20084,-25892,-20084,
-                                  -26100,-19811,-26100,-19811,-26100,-19811,-26100,-19811,
-                                  -26306,-19537,-26306,-19537,-26306,-19537,-26306,-19537,
-                                  -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                                  -26710,-18982,-26710,-18982,-26710,-18982,-26710,-18982,
-                                  -26907,-18701,-26907,-18701,-26907,-18701,-26907,-18701,
-                                  -27101,-18418,-27101,-18418,-27101,-18418,-27101,-18418,
-                                  -27293,-18133,-27293,-18133,-27293,-18133,-27293,-18133,
-                                  -27481,-17847,-27481,-17847,-27481,-17847,-27481,-17847,
-                                  -27667,-17558,-27667,-17558,-27667,-17558,-27667,-17558,
-                                  -27849,-17267,-27849,-17267,-27849,-17267,-27849,-17267,
-                                  -28028,-16975,-28028,-16975,-28028,-16975,-28028,-16975,
-                                  -28204,-16680,-28204,-16680,-28204,-16680,-28204,-16680,
-                                  -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                  -28548,-16086,-28548,-16086,-28548,-16086,-28548,-16086,
-                                  -28714,-15786,-28714,-15786,-28714,-15786,-28714,-15786,
-                                  -28878,-15485,-28878,-15485,-28878,-15485,-28878,-15485,
-                                  -29039,-15181,-29039,-15181,-29039,-15181,-29039,-15181,
-                                  -29196,-14876,-29196,-14876,-29196,-14876,-29196,-14876,
-                                  -29350,-14570,-29350,-14570,-29350,-14570,-29350,-14570,
-                                  -29501,-14262,-29501,-14262,-29501,-14262,-29501,-14262,
-                                  -29649,-13952,-29649,-13952,-29649,-13952,-29649,-13952,
-                                  -29793,-13641,-29793,-13641,-29793,-13641,-29793,-13641,
-                                  -29935,-13328,-29935,-13328,-29935,-13328,-29935,-13328,
-                                  -30073,-13014,-30073,-13014,-30073,-13014,-30073,-13014,
-                                  -30207,-12698,-30207,-12698,-30207,-12698,-30207,-12698,
-                                  -30339,-12381,-30339,-12381,-30339,-12381,-30339,-12381,
-                                  -30466,-12063,-30466,-12063,-30466,-12063,-30466,-12063,
-                                  -30591,-11743,-30591,-11743,-30591,-11743,-30591,-11743,
-                                  -30712,-11422,-30712,-11422,-30712,-11422,-30712,-11422,
-                                  -30830,-11100,-30830,-11100,-30830,-11100,-30830,-11100,
-                                  -30945,-10776,-30945,-10776,-30945,-10776,-30945,-10776,
-                                  -31056,-10452,-31056,-10452,-31056,-10452,-31056,-10452,
-                                  -31164,-10126,-31164,-10126,-31164,-10126,-31164,-10126,
-                                  -31268,-9799,-31268,-9799,-31268,-9799,-31268,-9799,
-                                  -31369,-9471,-31369,-9471,-31369,-9471,-31369,-9471,
-                                  -31466,-9142,-31466,-9142,-31466,-9142,-31466,-9142,
-                                  -31560,-8812,-31560,-8812,-31560,-8812,-31560,-8812,
-                                  -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                                  -31738,-8149,-31738,-8149,-31738,-8149,-31738,-8149,
-                                  -31822,-7817,-31822,-7817,-31822,-7817,-31822,-7817,
-                                  -31902,-7483,-31902,-7483,-31902,-7483,-31902,-7483,
-                                  -31978,-7148,-31978,-7148,-31978,-7148,-31978,-7148,
-                                  -32051,-6813,-32051,-6813,-32051,-6813,-32051,-6813,
-                                  -32121,-6477,-32121,-6477,-32121,-6477,-32121,-6477,
-                                  -32187,-6140,-32187,-6140,-32187,-6140,-32187,-6140,
-                                  -32250,-5803,-32250,-5803,-32250,-5803,-32250,-5803,
-                                  -32309,-5465,-32309,-5465,-32309,-5465,-32309,-5465,
-                                  -32364,-5126,-32364,-5126,-32364,-5126,-32364,-5126,
-                                  -32416,-4787,-32416,-4787,-32416,-4787,-32416,-4787,
-                                  -32464,-4447,-32464,-4447,-32464,-4447,-32464,-4447,
-                                  -32509,-4107,-32509,-4107,-32509,-4107,-32509,-4107,
-                                  -32550,-3767,-32550,-3767,-32550,-3767,-32550,-3767,
-                                  -32588,-3426,-32588,-3426,-32588,-3426,-32588,-3426,
-                                  -32622,-3084,-32622,-3084,-32622,-3084,-32622,-3084,
-                                  -32653,-2742,-32653,-2742,-32653,-2742,-32653,-2742,
-                                  -32680,-2400,-32680,-2400,-32680,-2400,-32680,-2400,
-                                  -32703,-2058,-32703,-2058,-32703,-2058,-32703,-2058,
-                                  -32723,-1715,-32723,-1715,-32723,-1715,-32723,-1715,
-                                  -32739,-1373,-32739,-1373,-32739,-1373,-32739,-1373,
-                                  -32751,-1030,-32751,-1030,-32751,-1030,-32751,-1030,
-                                  -32760,-687,-32760,-687,-32760,-687,-32760,-687,
-                                  -32766,-344,-32766,-344,-32766,-344,-32766,-344
-                                 };
+
+static int16_t twa600[299*2*4];
 
 void dft600(int16_t *x,int16_t *y,unsigned char scale_flag)  // 300 x 2
 {
@@ -11803,464 +7974,8 @@ void dft600(int16_t *x,int16_t *y,unsigned char scale_flag)  // 300 x 2
 };
 
 
-/*
-Twiddles generated with
-
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:215)/648));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:215)/648));
-twa2 = zeros(1,2*215);
-twb2 = zeros(1,2*215);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa648[215*2*4] = {");
-for i=1:2:(2*214)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"static int16_t twb648[215*2*4] = {");
-for i=1:2:(2*214)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fclose(fd);
-*/
-static int16_t twa648[215*2*4] = {32765,-318,32765,-318,32765,-318,32765,-318,
-                                  32760,-636,32760,-636,32760,-636,32760,-636,
-                                  32753,-954,32753,-954,32753,-954,32753,-954,
-                                  32742,-1271,32742,-1271,32742,-1271,32742,-1271,
-                                  32728,-1588,32728,-1588,32728,-1588,32728,-1588,
-                                  32711,-1906,32711,-1906,32711,-1906,32711,-1906,
-                                  32691,-2223,32691,-2223,32691,-2223,32691,-2223,
-                                  32668,-2540,32668,-2540,32668,-2540,32668,-2540,
-                                  32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                  32613,-3173,32613,-3173,32613,-3173,32613,-3173,
-                                  32580,-3489,32580,-3489,32580,-3489,32580,-3489,
-                                  32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                  32507,-4120,32507,-4120,32507,-4120,32507,-4120,
-                                  32465,-4435,32465,-4435,32465,-4435,32465,-4435,
-                                  32421,-4749,32421,-4749,32421,-4749,32421,-4749,
-                                  32373,-5064,32373,-5064,32373,-5064,32373,-5064,
-                                  32322,-5377,32322,-5377,32322,-5377,32322,-5377,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32212,-6003,32212,-6003,32212,-6003,32212,-6003,
-                                  32152,-6315,32152,-6315,32152,-6315,32152,-6315,
-                                  32090,-6627,32090,-6627,32090,-6627,32090,-6627,
-                                  32024,-6937,32024,-6937,32024,-6937,32024,-6937,
-                                  31955,-7248,31955,-7248,31955,-7248,31955,-7248,
-                                  31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                  31808,-7866,31808,-7866,31808,-7866,31808,-7866,
-                                  31731,-8174,31731,-8174,31731,-8174,31731,-8174,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31566,-8788,31566,-8788,31566,-8788,31566,-8788,
-                                  31480,-9093,31480,-9093,31480,-9093,31480,-9093,
-                                  31390,-9398,31390,-9398,31390,-9398,31390,-9398,
-                                  31297,-9702,31297,-9702,31297,-9702,31297,-9702,
-                                  31202,-10005,31202,-10005,31202,-10005,31202,-10005,
-                                  31103,-10307,31103,-10307,31103,-10307,31103,-10307,
-                                  31002,-10608,31002,-10608,31002,-10608,31002,-10608,
-                                  30898,-10908,30898,-10908,30898,-10908,30898,-10908,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30680,-11505,30680,-11505,30680,-11505,30680,-11505,
-                                  30567,-11802,30567,-11802,30567,-11802,30567,-11802,
-                                  30451,-12098,30451,-12098,30451,-12098,30451,-12098,
-                                  30333,-12393,30333,-12393,30333,-12393,30333,-12393,
-                                  30211,-12687,30211,-12687,30211,-12687,30211,-12687,
-                                  30087,-12979,30087,-12979,30087,-12979,30087,-12979,
-                                  29959,-13270,29959,-13270,29959,-13270,29959,-13270,
-                                  29829,-13560,29829,-13560,29829,-13560,29829,-13560,
-                                  29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                  29561,-14136,29561,-14136,29561,-14136,29561,-14136,
-                                  29422,-14422,29422,-14422,29422,-14422,29422,-14422,
-                                  29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                  29137,-14990,29137,-14990,29137,-14990,29137,-14990,
-                                  28990,-15271,28990,-15271,28990,-15271,28990,-15271,
-                                  28841,-15552,28841,-15552,28841,-15552,28841,-15552,
-                                  28689,-15831,28689,-15831,28689,-15831,28689,-15831,
-                                  28534,-16108,28534,-16108,28534,-16108,28534,-16108,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28216,-16658,28216,-16658,28216,-16658,28216,-16658,
-                                  28054,-16931,28054,-16931,28054,-16931,28054,-16931,
-                                  27888,-17202,27888,-17202,27888,-17202,27888,-17202,
-                                  27720,-17472,27720,-17472,27720,-17472,27720,-17472,
-                                  27549,-17740,27549,-17740,27549,-17740,27549,-17740,
-                                  27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                  27200,-18271,27200,-18271,27200,-18271,27200,-18271,
-                                  27022,-18534,27022,-18534,27022,-18534,27022,-18534,
-                                  26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                  26657,-19054,26657,-19054,26657,-19054,26657,-19054,
-                                  26471,-19312,26471,-19312,26471,-19312,26471,-19312,
-                                  26283,-19568,26283,-19568,26283,-19568,26283,-19568,
-                                  26092,-19822,26092,-19822,26092,-19822,26092,-19822,
-                                  25898,-20074,25898,-20074,25898,-20074,25898,-20074,
-                                  25702,-20324,25702,-20324,25702,-20324,25702,-20324,
-                                  25504,-20572,25504,-20572,25504,-20572,25504,-20572,
-                                  25304,-20818,25304,-20818,25304,-20818,25304,-20818,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24895,-21305,24895,-21305,24895,-21305,24895,-21305,
-                                  24687,-21546,24687,-21546,24687,-21546,24687,-21546,
-                                  24477,-21784,24477,-21784,24477,-21784,24477,-21784,
-                                  24265,-22020,24265,-22020,24265,-22020,24265,-22020,
-                                  24050,-22254,24050,-22254,24050,-22254,24050,-22254,
-                                  23833,-22487,23833,-22487,23833,-22487,23833,-22487,
-                                  23614,-22717,23614,-22717,23614,-22717,23614,-22717,
-                                  23393,-22945,23393,-22945,23393,-22945,23393,-22945,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22944,-23394,22944,-23394,22944,-23394,22944,-23394,
-                                  22716,-23615,22716,-23615,22716,-23615,22716,-23615,
-                                  22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                  22253,-24051,22253,-24051,22253,-24051,22253,-24051,
-                                  22019,-24266,22019,-24266,22019,-24266,22019,-24266,
-                                  21783,-24478,21783,-24478,21783,-24478,21783,-24478,
-                                  21545,-24688,21545,-24688,21545,-24688,21545,-24688,
-                                  21304,-24896,21304,-24896,21304,-24896,21304,-24896,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20817,-25305,20817,-25305,20817,-25305,20817,-25305,
-                                  20571,-25505,20571,-25505,20571,-25505,20571,-25505,
-                                  20323,-25703,20323,-25703,20323,-25703,20323,-25703,
-                                  20073,-25899,20073,-25899,20073,-25899,20073,-25899,
-                                  19821,-26093,19821,-26093,19821,-26093,19821,-26093,
-                                  19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                  19311,-26472,19311,-26472,19311,-26472,19311,-26472,
-                                  19053,-26658,19053,-26658,19053,-26658,19053,-26658,
-                                  18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                  18533,-27023,18533,-27023,18533,-27023,18533,-27023,
-                                  18270,-27201,18270,-27201,18270,-27201,18270,-27201,
-                                  18005,-27377,18005,-27377,18005,-27377,18005,-27377,
-                                  17739,-27550,17739,-27550,17739,-27550,17739,-27550,
-                                  17471,-27721,17471,-27721,17471,-27721,17471,-27721,
-                                  17201,-27889,17201,-27889,17201,-27889,17201,-27889,
-                                  16930,-28055,16930,-28055,16930,-28055,16930,-28055,
-                                  16657,-28217,16657,-28217,16657,-28217,16657,-28217,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  16107,-28535,16107,-28535,16107,-28535,16107,-28535,
-                                  15830,-28690,15830,-28690,15830,-28690,15830,-28690,
-                                  15551,-28842,15551,-28842,15551,-28842,15551,-28842,
-                                  15270,-28991,15270,-28991,15270,-28991,15270,-28991,
-                                  14989,-29138,14989,-29138,14989,-29138,14989,-29138,
-                                  14705,-29282,14705,-29282,14705,-29282,14705,-29282,
-                                  14421,-29423,14421,-29423,14421,-29423,14421,-29423,
-                                  14135,-29562,14135,-29562,14135,-29562,14135,-29562,
-                                  13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                  13559,-29830,13559,-29830,13559,-29830,13559,-29830,
-                                  13269,-29960,13269,-29960,13269,-29960,13269,-29960,
-                                  12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                  12686,-30212,12686,-30212,12686,-30212,12686,-30212,
-                                  12392,-30334,12392,-30334,12392,-30334,12392,-30334,
-                                  12097,-30452,12097,-30452,12097,-30452,12097,-30452,
-                                  11801,-30568,11801,-30568,11801,-30568,11801,-30568,
-                                  11504,-30681,11504,-30681,11504,-30681,11504,-30681,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10907,-30899,10907,-30899,10907,-30899,10907,-30899,
-                                  10607,-31003,10607,-31003,10607,-31003,10607,-31003,
-                                  10306,-31104,10306,-31104,10306,-31104,10306,-31104,
-                                  10004,-31203,10004,-31203,10004,-31203,10004,-31203,
-                                  9701,-31298,9701,-31298,9701,-31298,9701,-31298,
-                                  9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                  9092,-31481,9092,-31481,9092,-31481,9092,-31481,
-                                  8787,-31567,8787,-31567,8787,-31567,8787,-31567,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  8173,-31732,8173,-31732,8173,-31732,8173,-31732,
-                                  7865,-31809,7865,-31809,7865,-31809,7865,-31809,
-                                  7556,-31884,7556,-31884,7556,-31884,7556,-31884,
-                                  7247,-31956,7247,-31956,7247,-31956,7247,-31956,
-                                  6936,-32025,6936,-32025,6936,-32025,6936,-32025,
-                                  6626,-32091,6626,-32091,6626,-32091,6626,-32091,
-                                  6314,-32153,6314,-32153,6314,-32153,6314,-32153,
-                                  6002,-32213,6002,-32213,6002,-32213,6002,-32213,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5376,-32323,5376,-32323,5376,-32323,5376,-32323,
-                                  5063,-32374,5063,-32374,5063,-32374,5063,-32374,
-                                  4748,-32422,4748,-32422,4748,-32422,4748,-32422,
-                                  4434,-32466,4434,-32466,4434,-32466,4434,-32466,
-                                  4119,-32508,4119,-32508,4119,-32508,4119,-32508,
-                                  3804,-32546,3804,-32546,3804,-32546,3804,-32546,
-                                  3488,-32581,3488,-32581,3488,-32581,3488,-32581,
-                                  3172,-32614,3172,-32614,3172,-32614,3172,-32614,
-                                  2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                  2539,-32669,2539,-32669,2539,-32669,2539,-32669,
-                                  2222,-32692,2222,-32692,2222,-32692,2222,-32692,
-                                  1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                  1587,-32729,1587,-32729,1587,-32729,1587,-32729,
-                                  1270,-32743,1270,-32743,1270,-32743,1270,-32743,
-                                  953,-32754,953,-32754,953,-32754,953,-32754,
-                                  635,-32761,635,-32761,635,-32761,635,-32761,
-                                  317,-32766,317,-32766,317,-32766,317,-32766,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -318,-32766,-318,-32766,-318,-32766,-318,-32766,
-                                  -636,-32761,-636,-32761,-636,-32761,-636,-32761,
-                                  -954,-32754,-954,-32754,-954,-32754,-954,-32754,
-                                  -1271,-32743,-1271,-32743,-1271,-32743,-1271,-32743,
-                                  -1588,-32729,-1588,-32729,-1588,-32729,-1588,-32729,
-                                  -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                  -2223,-32692,-2223,-32692,-2223,-32692,-2223,-32692,
-                                  -2540,-32669,-2540,-32669,-2540,-32669,-2540,-32669,
-                                  -2856,-32643,-2856,-32643,-2856,-32643,-2856,-32643,
-                                  -3173,-32614,-3173,-32614,-3173,-32614,-3173,-32614,
-                                  -3489,-32581,-3489,-32581,-3489,-32581,-3489,-32581,
-                                  -3805,-32546,-3805,-32546,-3805,-32546,-3805,-32546,
-                                  -4120,-32508,-4120,-32508,-4120,-32508,-4120,-32508,
-                                  -4435,-32466,-4435,-32466,-4435,-32466,-4435,-32466,
-                                  -4749,-32422,-4749,-32422,-4749,-32422,-4749,-32422,
-                                  -5064,-32374,-5064,-32374,-5064,-32374,-5064,-32374,
-                                  -5377,-32323,-5377,-32323,-5377,-32323,-5377,-32323,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6003,-32213,-6003,-32213,-6003,-32213,-6003,-32213,
-                                  -6315,-32153,-6315,-32153,-6315,-32153,-6315,-32153,
-                                  -6627,-32091,-6627,-32091,-6627,-32091,-6627,-32091,
-                                  -6937,-32025,-6937,-32025,-6937,-32025,-6937,-32025,
-                                  -7248,-31956,-7248,-31956,-7248,-31956,-7248,-31956,
-                                  -7557,-31884,-7557,-31884,-7557,-31884,-7557,-31884,
-                                  -7866,-31809,-7866,-31809,-7866,-31809,-7866,-31809,
-                                  -8174,-31732,-8174,-31732,-8174,-31732,-8174,-31732,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -8788,-31567,-8788,-31567,-8788,-31567,-8788,-31567,
-                                  -9093,-31481,-9093,-31481,-9093,-31481,-9093,-31481,
-                                  -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                  -9702,-31298,-9702,-31298,-9702,-31298,-9702,-31298,
-                                  -10005,-31203,-10005,-31203,-10005,-31203,-10005,-31203,
-                                  -10307,-31104,-10307,-31104,-10307,-31104,-10307,-31104,
-                                  -10608,-31003,-10608,-31003,-10608,-31003,-10608,-31003,
-                                  -10908,-30899,-10908,-30899,-10908,-30899,-10908,-30899,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -11505,-30681,-11505,-30681,-11505,-30681,-11505,-30681,
-                                  -11802,-30568,-11802,-30568,-11802,-30568,-11802,-30568,
-                                  -12098,-30452,-12098,-30452,-12098,-30452,-12098,-30452,
-                                  -12393,-30334,-12393,-30334,-12393,-30334,-12393,-30334,
-                                  -12687,-30212,-12687,-30212,-12687,-30212,-12687,-30212,
-                                  -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                  -13270,-29960,-13270,-29960,-13270,-29960,-13270,-29960,
-                                  -13560,-29830,-13560,-29830,-13560,-29830,-13560,-29830,
-                                  -13848,-29697,-13848,-29697,-13848,-29697,-13848,-29697,
-                                  -14136,-29562,-14136,-29562,-14136,-29562,-14136,-29562,
-                                  -14422,-29423,-14422,-29423,-14422,-29423,-14422,-29423,
-                                  -14706,-29282,-14706,-29282,-14706,-29282,-14706,-29282,
-                                  -14990,-29138,-14990,-29138,-14990,-29138,-14990,-29138,
-                                  -15271,-28991,-15271,-28991,-15271,-28991,-15271,-28991,
-                                  -15552,-28842,-15552,-28842,-15552,-28842,-15552,-28842,
-                                  -15831,-28690,-15831,-28690,-15831,-28690,-15831,-28690,
-                                  -16108,-28535,-16108,-28535,-16108,-28535,-16108,-28535
-                                 };
-static int16_t twb648[215*2*4] = {32760,-636,32760,-636,32760,-636,32760,-636,
-                                  32742,-1271,32742,-1271,32742,-1271,32742,-1271,
-                                  32711,-1906,32711,-1906,32711,-1906,32711,-1906,
-                                  32668,-2540,32668,-2540,32668,-2540,32668,-2540,
-                                  32613,-3173,32613,-3173,32613,-3173,32613,-3173,
-                                  32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                  32465,-4435,32465,-4435,32465,-4435,32465,-4435,
-                                  32373,-5064,32373,-5064,32373,-5064,32373,-5064,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32152,-6315,32152,-6315,32152,-6315,32152,-6315,
-                                  32024,-6937,32024,-6937,32024,-6937,32024,-6937,
-                                  31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                  31731,-8174,31731,-8174,31731,-8174,31731,-8174,
-                                  31566,-8788,31566,-8788,31566,-8788,31566,-8788,
-                                  31390,-9398,31390,-9398,31390,-9398,31390,-9398,
-                                  31202,-10005,31202,-10005,31202,-10005,31202,-10005,
-                                  31002,-10608,31002,-10608,31002,-10608,31002,-10608,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30567,-11802,30567,-11802,30567,-11802,30567,-11802,
-                                  30333,-12393,30333,-12393,30333,-12393,30333,-12393,
-                                  30087,-12979,30087,-12979,30087,-12979,30087,-12979,
-                                  29829,-13560,29829,-13560,29829,-13560,29829,-13560,
-                                  29561,-14136,29561,-14136,29561,-14136,29561,-14136,
-                                  29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                  28990,-15271,28990,-15271,28990,-15271,28990,-15271,
-                                  28689,-15831,28689,-15831,28689,-15831,28689,-15831,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28054,-16931,28054,-16931,28054,-16931,28054,-16931,
-                                  27720,-17472,27720,-17472,27720,-17472,27720,-17472,
-                                  27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                  27022,-18534,27022,-18534,27022,-18534,27022,-18534,
-                                  26657,-19054,26657,-19054,26657,-19054,26657,-19054,
-                                  26283,-19568,26283,-19568,26283,-19568,26283,-19568,
-                                  25898,-20074,25898,-20074,25898,-20074,25898,-20074,
-                                  25504,-20572,25504,-20572,25504,-20572,25504,-20572,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24687,-21546,24687,-21546,24687,-21546,24687,-21546,
-                                  24265,-22020,24265,-22020,24265,-22020,24265,-22020,
-                                  23833,-22487,23833,-22487,23833,-22487,23833,-22487,
-                                  23393,-22945,23393,-22945,23393,-22945,23393,-22945,
-                                  22944,-23394,22944,-23394,22944,-23394,22944,-23394,
-                                  22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                  22019,-24266,22019,-24266,22019,-24266,22019,-24266,
-                                  21545,-24688,21545,-24688,21545,-24688,21545,-24688,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20571,-25505,20571,-25505,20571,-25505,20571,-25505,
-                                  20073,-25899,20073,-25899,20073,-25899,20073,-25899,
-                                  19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                  19053,-26658,19053,-26658,19053,-26658,19053,-26658,
-                                  18533,-27023,18533,-27023,18533,-27023,18533,-27023,
-                                  18005,-27377,18005,-27377,18005,-27377,18005,-27377,
-                                  17471,-27721,17471,-27721,17471,-27721,17471,-27721,
-                                  16930,-28055,16930,-28055,16930,-28055,16930,-28055,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15830,-28690,15830,-28690,15830,-28690,15830,-28690,
-                                  15270,-28991,15270,-28991,15270,-28991,15270,-28991,
-                                  14705,-29282,14705,-29282,14705,-29282,14705,-29282,
-                                  14135,-29562,14135,-29562,14135,-29562,14135,-29562,
-                                  13559,-29830,13559,-29830,13559,-29830,13559,-29830,
-                                  12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                  12392,-30334,12392,-30334,12392,-30334,12392,-30334,
-                                  11801,-30568,11801,-30568,11801,-30568,11801,-30568,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10607,-31003,10607,-31003,10607,-31003,10607,-31003,
-                                  10004,-31203,10004,-31203,10004,-31203,10004,-31203,
-                                  9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                  8787,-31567,8787,-31567,8787,-31567,8787,-31567,
-                                  8173,-31732,8173,-31732,8173,-31732,8173,-31732,
-                                  7556,-31884,7556,-31884,7556,-31884,7556,-31884,
-                                  6936,-32025,6936,-32025,6936,-32025,6936,-32025,
-                                  6314,-32153,6314,-32153,6314,-32153,6314,-32153,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5063,-32374,5063,-32374,5063,-32374,5063,-32374,
-                                  4434,-32466,4434,-32466,4434,-32466,4434,-32466,
-                                  3804,-32546,3804,-32546,3804,-32546,3804,-32546,
-                                  3172,-32614,3172,-32614,3172,-32614,3172,-32614,
-                                  2539,-32669,2539,-32669,2539,-32669,2539,-32669,
-                                  1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                  1270,-32743,1270,-32743,1270,-32743,1270,-32743,
-                                  635,-32761,635,-32761,635,-32761,635,-32761,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -636,-32761,-636,-32761,-636,-32761,-636,-32761,
-                                  -1271,-32743,-1271,-32743,-1271,-32743,-1271,-32743,
-                                  -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                  -2540,-32669,-2540,-32669,-2540,-32669,-2540,-32669,
-                                  -3173,-32614,-3173,-32614,-3173,-32614,-3173,-32614,
-                                  -3805,-32546,-3805,-32546,-3805,-32546,-3805,-32546,
-                                  -4435,-32466,-4435,-32466,-4435,-32466,-4435,-32466,
-                                  -5064,-32374,-5064,-32374,-5064,-32374,-5064,-32374,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6315,-32153,-6315,-32153,-6315,-32153,-6315,-32153,
-                                  -6937,-32025,-6937,-32025,-6937,-32025,-6937,-32025,
-                                  -7557,-31884,-7557,-31884,-7557,-31884,-7557,-31884,
-                                  -8174,-31732,-8174,-31732,-8174,-31732,-8174,-31732,
-                                  -8788,-31567,-8788,-31567,-8788,-31567,-8788,-31567,
-                                  -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                  -10005,-31203,-10005,-31203,-10005,-31203,-10005,-31203,
-                                  -10608,-31003,-10608,-31003,-10608,-31003,-10608,-31003,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -11802,-30568,-11802,-30568,-11802,-30568,-11802,-30568,
-                                  -12393,-30334,-12393,-30334,-12393,-30334,-12393,-30334,
-                                  -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                  -13560,-29830,-13560,-29830,-13560,-29830,-13560,-29830,
-                                  -14136,-29562,-14136,-29562,-14136,-29562,-14136,-29562,
-                                  -14706,-29282,-14706,-29282,-14706,-29282,-14706,-29282,
-                                  -15271,-28991,-15271,-28991,-15271,-28991,-15271,-28991,
-                                  -15831,-28690,-15831,-28690,-15831,-28690,-15831,-28690,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -16931,-28055,-16931,-28055,-16931,-28055,-16931,-28055,
-                                  -17472,-27721,-17472,-27721,-17472,-27721,-17472,-27721,
-                                  -18006,-27377,-18006,-27377,-18006,-27377,-18006,-27377,
-                                  -18534,-27023,-18534,-27023,-18534,-27023,-18534,-27023,
-                                  -19054,-26658,-19054,-26658,-19054,-26658,-19054,-26658,
-                                  -19568,-26284,-19568,-26284,-19568,-26284,-19568,-26284,
-                                  -20074,-25899,-20074,-25899,-20074,-25899,-20074,-25899,
-                                  -20572,-25505,-20572,-25505,-20572,-25505,-20572,-25505,
-                                  -21063,-25101,-21063,-25101,-21063,-25101,-21063,-25101,
-                                  -21546,-24688,-21546,-24688,-21546,-24688,-21546,-24688,
-                                  -22020,-24266,-22020,-24266,-22020,-24266,-22020,-24266,
-                                  -22487,-23834,-22487,-23834,-22487,-23834,-22487,-23834,
-                                  -22945,-23394,-22945,-23394,-22945,-23394,-22945,-23394,
-                                  -23394,-22945,-23394,-22945,-23394,-22945,-23394,-22945,
-                                  -23834,-22487,-23834,-22487,-23834,-22487,-23834,-22487,
-                                  -24266,-22020,-24266,-22020,-24266,-22020,-24266,-22020,
-                                  -24688,-21546,-24688,-21546,-24688,-21546,-24688,-21546,
-                                  -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                  -25505,-20572,-25505,-20572,-25505,-20572,-25505,-20572,
-                                  -25899,-20074,-25899,-20074,-25899,-20074,-25899,-20074,
-                                  -26284,-19568,-26284,-19568,-26284,-19568,-26284,-19568,
-                                  -26658,-19054,-26658,-19054,-26658,-19054,-26658,-19054,
-                                  -27023,-18534,-27023,-18534,-27023,-18534,-27023,-18534,
-                                  -27377,-18006,-27377,-18006,-27377,-18006,-27377,-18006,
-                                  -27721,-17472,-27721,-17472,-27721,-17472,-27721,-17472,
-                                  -28055,-16931,-28055,-16931,-28055,-16931,-28055,-16931,
-                                  -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                  -28690,-15831,-28690,-15831,-28690,-15831,-28690,-15831,
-                                  -28991,-15271,-28991,-15271,-28991,-15271,-28991,-15271,
-                                  -29282,-14706,-29282,-14706,-29282,-14706,-29282,-14706,
-                                  -29562,-14136,-29562,-14136,-29562,-14136,-29562,-14136,
-                                  -29830,-13560,-29830,-13560,-29830,-13560,-29830,-13560,
-                                  -30088,-12979,-30088,-12979,-30088,-12979,-30088,-12979,
-                                  -30334,-12393,-30334,-12393,-30334,-12393,-30334,-12393,
-                                  -30568,-11802,-30568,-11802,-30568,-11802,-30568,-11802,
-                                  -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                  -31003,-10608,-31003,-10608,-31003,-10608,-31003,-10608,
-                                  -31203,-10005,-31203,-10005,-31203,-10005,-31203,-10005,
-                                  -31391,-9398,-31391,-9398,-31391,-9398,-31391,-9398,
-                                  -31567,-8788,-31567,-8788,-31567,-8788,-31567,-8788,
-                                  -31732,-8174,-31732,-8174,-31732,-8174,-31732,-8174,
-                                  -31884,-7557,-31884,-7557,-31884,-7557,-31884,-7557,
-                                  -32025,-6937,-32025,-6937,-32025,-6937,-32025,-6937,
-                                  -32153,-6315,-32153,-6315,-32153,-6315,-32153,-6315,
-                                  -32270,-5690,-32270,-5690,-32270,-5690,-32270,-5690,
-                                  -32374,-5064,-32374,-5064,-32374,-5064,-32374,-5064,
-                                  -32466,-4435,-32466,-4435,-32466,-4435,-32466,-4435,
-                                  -32546,-3805,-32546,-3805,-32546,-3805,-32546,-3805,
-                                  -32614,-3173,-32614,-3173,-32614,-3173,-32614,-3173,
-                                  -32669,-2540,-32669,-2540,-32669,-2540,-32669,-2540,
-                                  -32712,-1906,-32712,-1906,-32712,-1906,-32712,-1906,
-                                  -32743,-1271,-32743,-1271,-32743,-1271,-32743,-1271,
-                                  -32761,-636,-32761,-636,-32761,-636,-32761,-636,
-                                  -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                  -32761,635,-32761,635,-32761,635,-32761,635,
-                                  -32743,1270,-32743,1270,-32743,1270,-32743,1270,
-                                  -32712,1905,-32712,1905,-32712,1905,-32712,1905,
-                                  -32669,2539,-32669,2539,-32669,2539,-32669,2539,
-                                  -32614,3172,-32614,3172,-32614,3172,-32614,3172,
-                                  -32546,3804,-32546,3804,-32546,3804,-32546,3804,
-                                  -32466,4434,-32466,4434,-32466,4434,-32466,4434,
-                                  -32374,5063,-32374,5063,-32374,5063,-32374,5063,
-                                  -32270,5689,-32270,5689,-32270,5689,-32270,5689,
-                                  -32153,6314,-32153,6314,-32153,6314,-32153,6314,
-                                  -32025,6936,-32025,6936,-32025,6936,-32025,6936,
-                                  -31884,7556,-31884,7556,-31884,7556,-31884,7556,
-                                  -31732,8173,-31732,8173,-31732,8173,-31732,8173,
-                                  -31567,8787,-31567,8787,-31567,8787,-31567,8787,
-                                  -31391,9397,-31391,9397,-31391,9397,-31391,9397,
-                                  -31203,10004,-31203,10004,-31203,10004,-31203,10004,
-                                  -31003,10607,-31003,10607,-31003,10607,-31003,10607,
-                                  -30791,11206,-30791,11206,-30791,11206,-30791,11206,
-                                  -30568,11801,-30568,11801,-30568,11801,-30568,11801,
-                                  -30334,12392,-30334,12392,-30334,12392,-30334,12392,
-                                  -30088,12978,-30088,12978,-30088,12978,-30088,12978,
-                                  -29830,13559,-29830,13559,-29830,13559,-29830,13559,
-                                  -29562,14135,-29562,14135,-29562,14135,-29562,14135,
-                                  -29282,14705,-29282,14705,-29282,14705,-29282,14705,
-                                  -28991,15270,-28991,15270,-28991,15270,-28991,15270,
-                                  -28690,15830,-28690,15830,-28690,15830,-28690,15830,
-                                  -28378,16383,-28378,16383,-28378,16383,-28378,16383,
-                                  -28055,16930,-28055,16930,-28055,16930,-28055,16930,
-                                  -27721,17471,-27721,17471,-27721,17471,-27721,17471,
-                                  -27377,18005,-27377,18005,-27377,18005,-27377,18005,
-                                  -27023,18533,-27023,18533,-27023,18533,-27023,18533,
-                                  -26658,19053,-26658,19053,-26658,19053,-26658,19053,
-                                  -26284,19567,-26284,19567,-26284,19567,-26284,19567,
-                                  -25899,20073,-25899,20073,-25899,20073,-25899,20073,
-                                  -25505,20571,-25505,20571,-25505,20571,-25505,20571,
-                                  -25101,21062,-25101,21062,-25101,21062,-25101,21062,
-                                  -24688,21545,-24688,21545,-24688,21545,-24688,21545,
-                                  -24266,22019,-24266,22019,-24266,22019,-24266,22019,
-                                  -23834,22486,-23834,22486,-23834,22486,-23834,22486,
-                                  -23394,22944,-23394,22944,-23394,22944,-23394,22944,
-                                  -22945,23393,-22945,23393,-22945,23393,-22945,23393,
-                                  -22487,23833,-22487,23833,-22487,23833,-22487,23833,
-                                  -22020,24265,-22020,24265,-22020,24265,-22020,24265,
-                                  -21546,24687,-21546,24687,-21546,24687,-21546,24687,
-                                  -21063,25100,-21063,25100,-21063,25100,-21063,25100,
-                                  -20572,25504,-20572,25504,-20572,25504,-20572,25504,
-                                  -20074,25898,-20074,25898,-20074,25898,-20074,25898,
-                                  -19568,26283,-19568,26283,-19568,26283,-19568,26283,
-                                  -19054,26657,-19054,26657,-19054,26657,-19054,26657,
-                                  -18534,27022,-18534,27022,-18534,27022,-18534,27022,
-                                  -18006,27376,-18006,27376,-18006,27376,-18006,27376,
-                                  -17472,27720,-17472,27720,-17472,27720,-17472,27720,
-                                  -16931,28054,-16931,28054,-16931,28054,-16931,28054
-                                 };
+static int16_t twa648[215*2*4];
+static int16_t twb648[215*2*4];
 
 void dft648(int16_t *x,int16_t *y,unsigned char scale_flag)  // 216 x 3
 {
@@ -12311,583 +8026,10 @@ void dft648(int16_t *x,int16_t *y,unsigned char scale_flag)  // 216 x 3
 };
 
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:179)/720));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:179)/720));
-twc = floor(32767*exp(-sqrt(-1)*2*pi*3*(1:179)/720));
-twa2 = zeros(1,2*179);
-twb2 = zeros(1,2*179);
-twc2 = zeros(1,2*179);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-twc2(1:2:end) = real(twc);
-twc2(2:2:end) = imag(twc);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa720[179*2*4] = {");
-for i=1:2:(2*178)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"\nstatic int16_t twb720[179*2*4] = {");
-for i=1:2:(2*178)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fprintf(fd,"\nstatic int16_t twc720[179*2*4] = {");
-for i=1:2:(2*178)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1));
-fclose(fd);
- */
+static int16_t twa720[179*2*4];
+static int16_t twb720[179*2*4];
+static int16_t twc720[179*2*4];
 
-static int16_t twa720[179*2*4] = {32765,-286,32765,-286,32765,-286,32765,-286,
-                                  32762,-572,32762,-572,32762,-572,32762,-572,
-                                  32755,-858,32755,-858,32755,-858,32755,-858,
-                                  32747,-1144,32747,-1144,32747,-1144,32747,-1144,
-                                  32735,-1430,32735,-1430,32735,-1430,32735,-1430,
-                                  32722,-1715,32722,-1715,32722,-1715,32722,-1715,
-                                  32705,-2001,32705,-2001,32705,-2001,32705,-2001,
-                                  32687,-2286,32687,-2286,32687,-2286,32687,-2286,
-                                  32665,-2571,32665,-2571,32665,-2571,32665,-2571,
-                                  32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                  32616,-3141,32616,-3141,32616,-3141,32616,-3141,
-                                  32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                  32556,-3710,32556,-3710,32556,-3710,32556,-3710,
-                                  32522,-3994,32522,-3994,32522,-3994,32522,-3994,
-                                  32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                  32448,-4561,32448,-4561,32448,-4561,32448,-4561,
-                                  32407,-4844,32407,-4844,32407,-4844,32407,-4844,
-                                  32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                                  32317,-5409,32317,-5409,32317,-5409,32317,-5409,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32218,-5972,32218,-5972,32218,-5972,32218,-5972,
-                                  32164,-6253,32164,-6253,32164,-6253,32164,-6253,
-                                  32109,-6533,32109,-6533,32109,-6533,32109,-6533,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  31990,-7093,31990,-7093,31990,-7093,31990,-7093,
-                                  31927,-7371,31927,-7371,31927,-7371,31927,-7371,
-                                  31861,-7650,31861,-7650,31861,-7650,31861,-7650,
-                                  31793,-7928,31793,-7928,31793,-7928,31793,-7928,
-                                  31723,-8205,31723,-8205,31723,-8205,31723,-8205,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31575,-8757,31575,-8757,31575,-8757,31575,-8757,
-                                  31497,-9032,31497,-9032,31497,-9032,31497,-9032,
-                                  31417,-9307,31417,-9307,31417,-9307,31417,-9307,
-                                  31335,-9581,31335,-9581,31335,-9581,31335,-9581,
-                                  31250,-9854,31250,-9854,31250,-9854,31250,-9854,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  31073,-10398,31073,-10398,31073,-10398,31073,-10398,
-                                  30981,-10668,30981,-10668,30981,-10668,30981,-10668,
-                                  30887,-10938,30887,-10938,30887,-10938,30887,-10938,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30691,-11476,30691,-11476,30691,-11476,30691,-11476,
-                                  30590,-11743,30590,-11743,30590,-11743,30590,-11743,
-                                  30486,-12010,30486,-12010,30486,-12010,30486,-12010,
-                                  30381,-12275,30381,-12275,30381,-12275,30381,-12275,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  30162,-12804,30162,-12804,30162,-12804,30162,-12804,
-                                  30049,-13066,30049,-13066,30049,-13066,30049,-13066,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29816,-13589,29816,-13589,29816,-13589,29816,-13589,
-                                  29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                  29575,-14107,29575,-14107,29575,-14107,29575,-14107,
-                                  29450,-14365,29450,-14365,29450,-14365,29450,-14365,
-                                  29324,-14621,29324,-14621,29324,-14621,29324,-14621,
-                                  29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                                  29064,-15131,29064,-15131,29064,-15131,29064,-15131,
-                                  28931,-15384,28931,-15384,28931,-15384,28931,-15384,
-                                  28796,-15636,28796,-15636,28796,-15636,28796,-15636,
-                                  28658,-15886,28658,-15886,28658,-15886,28658,-15886,
-                                  28518,-16136,28518,-16136,28518,-16136,28518,-16136,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28233,-16631,28233,-16631,28233,-16631,28233,-16631,
-                                  28086,-16877,28086,-16877,28086,-16877,28086,-16877,
-                                  27938,-17121,27938,-17121,27938,-17121,27938,-17121,
-                                  27787,-17364,27787,-17364,27787,-17364,27787,-17364,
-                                  27635,-17606,27635,-17606,27635,-17606,27635,-17606,
-                                  27480,-17847,27480,-17847,27480,-17847,27480,-17847,
-                                  27323,-18086,27323,-18086,27323,-18086,27323,-18086,
-                                  27165,-18324,27165,-18324,27165,-18324,27165,-18324,
-                                  27004,-18560,27004,-18560,27004,-18560,27004,-18560,
-                                  26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                  26676,-19028,26676,-19028,26676,-19028,26676,-19028,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  26339,-19491,26339,-19491,26339,-19491,26339,-19491,
-                                  26168,-19720,26168,-19720,26168,-19720,26168,-19720,
-                                  25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                  25820,-20174,25820,-20174,25820,-20174,25820,-20174,
-                                  25643,-20398,25643,-20398,25643,-20398,25643,-20398,
-                                  25464,-20621,25464,-20621,25464,-20621,25464,-20621,
-                                  25283,-20843,25283,-20843,25283,-20843,25283,-20843,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24916,-21281,24916,-21281,24916,-21281,24916,-21281,
-                                  24729,-21498,24729,-21498,24729,-21498,24729,-21498,
-                                  24541,-21713,24541,-21713,24541,-21713,24541,-21713,
-                                  24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                  24158,-22138,24158,-22138,24158,-22138,24158,-22138,
-                                  23964,-22348,23964,-22348,23964,-22348,23964,-22348,
-                                  23768,-22556,23768,-22556,23768,-22556,23768,-22556,
-                                  23570,-22762,23570,-22762,23570,-22762,23570,-22762,
-                                  23371,-22967,23371,-22967,23371,-22967,23371,-22967,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22966,-23372,22966,-23372,22966,-23372,22966,-23372,
-                                  22761,-23571,22761,-23571,22761,-23571,22761,-23571,
-                                  22555,-23769,22555,-23769,22555,-23769,22555,-23769,
-                                  22347,-23965,22347,-23965,22347,-23965,22347,-23965,
-                                  22137,-24159,22137,-24159,22137,-24159,22137,-24159,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21712,-24542,21712,-24542,21712,-24542,21712,-24542,
-                                  21497,-24730,21497,-24730,21497,-24730,21497,-24730,
-                                  21280,-24917,21280,-24917,21280,-24917,21280,-24917,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20842,-25284,20842,-25284,20842,-25284,20842,-25284,
-                                  20620,-25465,20620,-25465,20620,-25465,20620,-25465,
-                                  20397,-25644,20397,-25644,20397,-25644,20397,-25644,
-                                  20173,-25821,20173,-25821,20173,-25821,20173,-25821,
-                                  19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                  19719,-26169,19719,-26169,19719,-26169,19719,-26169,
-                                  19490,-26340,19490,-26340,19490,-26340,19490,-26340,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  19027,-26677,19027,-26677,19027,-26677,19027,-26677,
-                                  18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                  18559,-27005,18559,-27005,18559,-27005,18559,-27005,
-                                  18323,-27166,18323,-27166,18323,-27166,18323,-27166,
-                                  18085,-27324,18085,-27324,18085,-27324,18085,-27324,
-                                  17846,-27481,17846,-27481,17846,-27481,17846,-27481,
-                                  17605,-27636,17605,-27636,17605,-27636,17605,-27636,
-                                  17363,-27788,17363,-27788,17363,-27788,17363,-27788,
-                                  17120,-27939,17120,-27939,17120,-27939,17120,-27939,
-                                  16876,-28087,16876,-28087,16876,-28087,16876,-28087,
-                                  16630,-28234,16630,-28234,16630,-28234,16630,-28234,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  16135,-28519,16135,-28519,16135,-28519,16135,-28519,
-                                  15885,-28659,15885,-28659,15885,-28659,15885,-28659,
-                                  15635,-28797,15635,-28797,15635,-28797,15635,-28797,
-                                  15383,-28932,15383,-28932,15383,-28932,15383,-28932,
-                                  15130,-29065,15130,-29065,15130,-29065,15130,-29065,
-                                  14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                                  14620,-29325,14620,-29325,14620,-29325,14620,-29325,
-                                  14364,-29451,14364,-29451,14364,-29451,14364,-29451,
-                                  14106,-29576,14106,-29576,14106,-29576,14106,-29576,
-                                  13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                  13588,-29817,13588,-29817,13588,-29817,13588,-29817,
-                                  13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                  13065,-30050,13065,-30050,13065,-30050,13065,-30050,
-                                  12803,-30163,12803,-30163,12803,-30163,12803,-30163,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  12274,-30382,12274,-30382,12274,-30382,12274,-30382,
-                                  12009,-30487,12009,-30487,12009,-30487,12009,-30487,
-                                  11742,-30591,11742,-30591,11742,-30591,11742,-30591,
-                                  11475,-30692,11475,-30692,11475,-30692,11475,-30692,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10937,-30888,10937,-30888,10937,-30888,10937,-30888,
-                                  10667,-30982,10667,-30982,10667,-30982,10667,-30982,
-                                  10397,-31074,10397,-31074,10397,-31074,10397,-31074,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9853,-31251,9853,-31251,9853,-31251,9853,-31251,
-                                  9580,-31336,9580,-31336,9580,-31336,9580,-31336,
-                                  9306,-31418,9306,-31418,9306,-31418,9306,-31418,
-                                  9031,-31498,9031,-31498,9031,-31498,9031,-31498,
-                                  8756,-31576,8756,-31576,8756,-31576,8756,-31576,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  8204,-31724,8204,-31724,8204,-31724,8204,-31724,
-                                  7927,-31794,7927,-31794,7927,-31794,7927,-31794,
-                                  7649,-31862,7649,-31862,7649,-31862,7649,-31862,
-                                  7370,-31928,7370,-31928,7370,-31928,7370,-31928,
-                                  7092,-31991,7092,-31991,7092,-31991,7092,-31991,
-                                  6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                  6532,-32110,6532,-32110,6532,-32110,6532,-32110,
-                                  6252,-32165,6252,-32165,6252,-32165,6252,-32165,
-                                  5971,-32219,5971,-32219,5971,-32219,5971,-32219,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5408,-32318,5408,-32318,5408,-32318,5408,-32318,
-                                  5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                                  4843,-32408,4843,-32408,4843,-32408,4843,-32408,
-                                  4560,-32449,4560,-32449,4560,-32449,4560,-32449,
-                                  4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                  3993,-32523,3993,-32523,3993,-32523,3993,-32523,
-                                  3709,-32557,3709,-32557,3709,-32557,3709,-32557,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  3140,-32617,3140,-32617,3140,-32617,3140,-32617,
-                                  2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                  2570,-32666,2570,-32666,2570,-32666,2570,-32666,
-                                  2285,-32688,2285,-32688,2285,-32688,2285,-32688,
-                                  2000,-32706,2000,-32706,2000,-32706,2000,-32706,
-                                  1714,-32723,1714,-32723,1714,-32723,1714,-32723,
-                                  1429,-32736,1429,-32736,1429,-32736,1429,-32736,
-                                  1143,-32748,1143,-32748,1143,-32748,1143,-32748,
-                                  857,-32756,857,-32756,857,-32756,857,-32756,
-                                  571,-32763,571,-32763,571,-32763,571,-32763,
-                                  285,-32766,285,-32766,285,-32766,285,-32766
-                                 };
-
-static int16_t twb720[179*2*4] = {32762,-572,32762,-572,32762,-572,32762,-572,
-                                  32747,-1144,32747,-1144,32747,-1144,32747,-1144,
-                                  32722,-1715,32722,-1715,32722,-1715,32722,-1715,
-                                  32687,-2286,32687,-2286,32687,-2286,32687,-2286,
-                                  32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                  32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                  32522,-3994,32522,-3994,32522,-3994,32522,-3994,
-                                  32448,-4561,32448,-4561,32448,-4561,32448,-4561,
-                                  32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32164,-6253,32164,-6253,32164,-6253,32164,-6253,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  31927,-7371,31927,-7371,31927,-7371,31927,-7371,
-                                  31793,-7928,31793,-7928,31793,-7928,31793,-7928,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31497,-9032,31497,-9032,31497,-9032,31497,-9032,
-                                  31335,-9581,31335,-9581,31335,-9581,31335,-9581,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  30981,-10668,30981,-10668,30981,-10668,30981,-10668,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30590,-11743,30590,-11743,30590,-11743,30590,-11743,
-                                  30381,-12275,30381,-12275,30381,-12275,30381,-12275,
-                                  30162,-12804,30162,-12804,30162,-12804,30162,-12804,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                  29450,-14365,29450,-14365,29450,-14365,29450,-14365,
-                                  29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                                  28931,-15384,28931,-15384,28931,-15384,28931,-15384,
-                                  28658,-15886,28658,-15886,28658,-15886,28658,-15886,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28086,-16877,28086,-16877,28086,-16877,28086,-16877,
-                                  27787,-17364,27787,-17364,27787,-17364,27787,-17364,
-                                  27480,-17847,27480,-17847,27480,-17847,27480,-17847,
-                                  27165,-18324,27165,-18324,27165,-18324,27165,-18324,
-                                  26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  26168,-19720,26168,-19720,26168,-19720,26168,-19720,
-                                  25820,-20174,25820,-20174,25820,-20174,25820,-20174,
-                                  25464,-20621,25464,-20621,25464,-20621,25464,-20621,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24729,-21498,24729,-21498,24729,-21498,24729,-21498,
-                                  24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                  23964,-22348,23964,-22348,23964,-22348,23964,-22348,
-                                  23570,-22762,23570,-22762,23570,-22762,23570,-22762,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22761,-23571,22761,-23571,22761,-23571,22761,-23571,
-                                  22347,-23965,22347,-23965,22347,-23965,22347,-23965,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21497,-24730,21497,-24730,21497,-24730,21497,-24730,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20620,-25465,20620,-25465,20620,-25465,20620,-25465,
-                                  20173,-25821,20173,-25821,20173,-25821,20173,-25821,
-                                  19719,-26169,19719,-26169,19719,-26169,19719,-26169,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                  18323,-27166,18323,-27166,18323,-27166,18323,-27166,
-                                  17846,-27481,17846,-27481,17846,-27481,17846,-27481,
-                                  17363,-27788,17363,-27788,17363,-27788,17363,-27788,
-                                  16876,-28087,16876,-28087,16876,-28087,16876,-28087,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15885,-28659,15885,-28659,15885,-28659,15885,-28659,
-                                  15383,-28932,15383,-28932,15383,-28932,15383,-28932,
-                                  14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                                  14364,-29451,14364,-29451,14364,-29451,14364,-29451,
-                                  13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                  13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                  12803,-30163,12803,-30163,12803,-30163,12803,-30163,
-                                  12274,-30382,12274,-30382,12274,-30382,12274,-30382,
-                                  11742,-30591,11742,-30591,11742,-30591,11742,-30591,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10667,-30982,10667,-30982,10667,-30982,10667,-30982,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9580,-31336,9580,-31336,9580,-31336,9580,-31336,
-                                  9031,-31498,9031,-31498,9031,-31498,9031,-31498,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  7927,-31794,7927,-31794,7927,-31794,7927,-31794,
-                                  7370,-31928,7370,-31928,7370,-31928,7370,-31928,
-                                  6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                  6252,-32165,6252,-32165,6252,-32165,6252,-32165,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                                  4560,-32449,4560,-32449,4560,-32449,4560,-32449,
-                                  3993,-32523,3993,-32523,3993,-32523,3993,-32523,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                  2285,-32688,2285,-32688,2285,-32688,2285,-32688,
-                                  1714,-32723,1714,-32723,1714,-32723,1714,-32723,
-                                  1143,-32748,1143,-32748,1143,-32748,1143,-32748,
-                                  571,-32763,571,-32763,571,-32763,571,-32763,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -572,-32763,-572,-32763,-572,-32763,-572,-32763,
-                                  -1144,-32748,-1144,-32748,-1144,-32748,-1144,-32748,
-                                  -1715,-32723,-1715,-32723,-1715,-32723,-1715,-32723,
-                                  -2286,-32688,-2286,-32688,-2286,-32688,-2286,-32688,
-                                  -2856,-32643,-2856,-32643,-2856,-32643,-2856,-32643,
-                                  -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                  -3994,-32523,-3994,-32523,-3994,-32523,-3994,-32523,
-                                  -4561,-32449,-4561,-32449,-4561,-32449,-4561,-32449,
-                                  -5126,-32364,-5126,-32364,-5126,-32364,-5126,-32364,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6253,-32165,-6253,-32165,-6253,-32165,-6253,-32165,
-                                  -6813,-32051,-6813,-32051,-6813,-32051,-6813,-32051,
-                                  -7371,-31928,-7371,-31928,-7371,-31928,-7371,-31928,
-                                  -7928,-31794,-7928,-31794,-7928,-31794,-7928,-31794,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -9032,-31498,-9032,-31498,-9032,-31498,-9032,-31498,
-                                  -9581,-31336,-9581,-31336,-9581,-31336,-9581,-31336,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -10668,-30982,-10668,-30982,-10668,-30982,-10668,-30982,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -11743,-30591,-11743,-30591,-11743,-30591,-11743,-30591,
-                                  -12275,-30382,-12275,-30382,-12275,-30382,-12275,-30382,
-                                  -12804,-30163,-12804,-30163,-12804,-30163,-12804,-30163,
-                                  -13328,-29935,-13328,-29935,-13328,-29935,-13328,-29935,
-                                  -13848,-29697,-13848,-29697,-13848,-29697,-13848,-29697,
-                                  -14365,-29451,-14365,-29451,-14365,-29451,-14365,-29451,
-                                  -14876,-29196,-14876,-29196,-14876,-29196,-14876,-29196,
-                                  -15384,-28932,-15384,-28932,-15384,-28932,-15384,-28932,
-                                  -15886,-28659,-15886,-28659,-15886,-28659,-15886,-28659,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -16877,-28087,-16877,-28087,-16877,-28087,-16877,-28087,
-                                  -17364,-27788,-17364,-27788,-17364,-27788,-17364,-27788,
-                                  -17847,-27481,-17847,-27481,-17847,-27481,-17847,-27481,
-                                  -18324,-27166,-18324,-27166,-18324,-27166,-18324,-27166,
-                                  -18795,-26842,-18795,-26842,-18795,-26842,-18795,-26842,
-                                  -19260,-26510,-19260,-26510,-19260,-26510,-19260,-26510,
-                                  -19720,-26169,-19720,-26169,-19720,-26169,-19720,-26169,
-                                  -20174,-25821,-20174,-25821,-20174,-25821,-20174,-25821,
-                                  -20621,-25465,-20621,-25465,-20621,-25465,-20621,-25465,
-                                  -21063,-25101,-21063,-25101,-21063,-25101,-21063,-25101,
-                                  -21498,-24730,-21498,-24730,-21498,-24730,-21498,-24730,
-                                  -21926,-24351,-21926,-24351,-21926,-24351,-21926,-24351,
-                                  -22348,-23965,-22348,-23965,-22348,-23965,-22348,-23965,
-                                  -22762,-23571,-22762,-23571,-22762,-23571,-22762,-23571,
-                                  -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                  -23571,-22762,-23571,-22762,-23571,-22762,-23571,-22762,
-                                  -23965,-22348,-23965,-22348,-23965,-22348,-23965,-22348,
-                                  -24351,-21926,-24351,-21926,-24351,-21926,-24351,-21926,
-                                  -24730,-21498,-24730,-21498,-24730,-21498,-24730,-21498,
-                                  -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                  -25465,-20621,-25465,-20621,-25465,-20621,-25465,-20621,
-                                  -25821,-20174,-25821,-20174,-25821,-20174,-25821,-20174,
-                                  -26169,-19720,-26169,-19720,-26169,-19720,-26169,-19720,
-                                  -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                                  -26842,-18795,-26842,-18795,-26842,-18795,-26842,-18795,
-                                  -27166,-18324,-27166,-18324,-27166,-18324,-27166,-18324,
-                                  -27481,-17847,-27481,-17847,-27481,-17847,-27481,-17847,
-                                  -27788,-17364,-27788,-17364,-27788,-17364,-27788,-17364,
-                                  -28087,-16877,-28087,-16877,-28087,-16877,-28087,-16877,
-                                  -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                  -28659,-15886,-28659,-15886,-28659,-15886,-28659,-15886,
-                                  -28932,-15384,-28932,-15384,-28932,-15384,-28932,-15384,
-                                  -29196,-14876,-29196,-14876,-29196,-14876,-29196,-14876,
-                                  -29451,-14365,-29451,-14365,-29451,-14365,-29451,-14365,
-                                  -29697,-13848,-29697,-13848,-29697,-13848,-29697,-13848,
-                                  -29935,-13328,-29935,-13328,-29935,-13328,-29935,-13328,
-                                  -30163,-12804,-30163,-12804,-30163,-12804,-30163,-12804,
-                                  -30382,-12275,-30382,-12275,-30382,-12275,-30382,-12275,
-                                  -30591,-11743,-30591,-11743,-30591,-11743,-30591,-11743,
-                                  -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                  -30982,-10668,-30982,-10668,-30982,-10668,-30982,-10668,
-                                  -31164,-10126,-31164,-10126,-31164,-10126,-31164,-10126,
-                                  -31336,-9581,-31336,-9581,-31336,-9581,-31336,-9581,
-                                  -31498,-9032,-31498,-9032,-31498,-9032,-31498,-9032,
-                                  -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                                  -31794,-7928,-31794,-7928,-31794,-7928,-31794,-7928,
-                                  -31928,-7371,-31928,-7371,-31928,-7371,-31928,-7371,
-                                  -32051,-6813,-32051,-6813,-32051,-6813,-32051,-6813,
-                                  -32165,-6253,-32165,-6253,-32165,-6253,-32165,-6253,
-                                  -32270,-5690,-32270,-5690,-32270,-5690,-32270,-5690,
-                                  -32364,-5126,-32364,-5126,-32364,-5126,-32364,-5126,
-                                  -32449,-4561,-32449,-4561,-32449,-4561,-32449,-4561,
-                                  -32523,-3994,-32523,-3994,-32523,-3994,-32523,-3994,
-                                  -32588,-3426,-32588,-3426,-32588,-3426,-32588,-3426,
-                                  -32643,-2856,-32643,-2856,-32643,-2856,-32643,-2856,
-                                  -32688,-2286,-32688,-2286,-32688,-2286,-32688,-2286,
-                                  -32723,-1715,-32723,-1715,-32723,-1715,-32723,-1715,
-                                  -32748,-1144,-32748,-1144,-32748,-1144,-32748,-1144,
-                                  -32763,-572,-32763,-572,-32763,-572,-32763,-572
-                                 };
-
-static int16_t twc720[179*2*4] = {32755,-858,32755,-858,32755,-858,32755,-858,
-                                  32722,-1715,32722,-1715,32722,-1715,32722,-1715,
-                                  32665,-2571,32665,-2571,32665,-2571,32665,-2571,
-                                  32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                  32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                  32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                                  32218,-5972,32218,-5972,32218,-5972,32218,-5972,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  31861,-7650,31861,-7650,31861,-7650,31861,-7650,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31417,-9307,31417,-9307,31417,-9307,31417,-9307,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  30887,-10938,30887,-10938,30887,-10938,30887,-10938,
-                                  30590,-11743,30590,-11743,30590,-11743,30590,-11743,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29575,-14107,29575,-14107,29575,-14107,29575,-14107,
-                                  29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                                  28796,-15636,28796,-15636,28796,-15636,28796,-15636,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  27938,-17121,27938,-17121,27938,-17121,27938,-17121,
-                                  27480,-17847,27480,-17847,27480,-17847,27480,-17847,
-                                  27004,-18560,27004,-18560,27004,-18560,27004,-18560,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                  25464,-20621,25464,-20621,25464,-20621,25464,-20621,
-                                  24916,-21281,24916,-21281,24916,-21281,24916,-21281,
-                                  24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                  23768,-22556,23768,-22556,23768,-22556,23768,-22556,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22555,-23769,22555,-23769,22555,-23769,22555,-23769,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21280,-24917,21280,-24917,21280,-24917,21280,-24917,
-                                  20620,-25465,20620,-25465,20620,-25465,20620,-25465,
-                                  19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  18559,-27005,18559,-27005,18559,-27005,18559,-27005,
-                                  17846,-27481,17846,-27481,17846,-27481,17846,-27481,
-                                  17120,-27939,17120,-27939,17120,-27939,17120,-27939,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15635,-28797,15635,-28797,15635,-28797,15635,-28797,
-                                  14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                                  14106,-29576,14106,-29576,14106,-29576,14106,-29576,
-                                  13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  11742,-30591,11742,-30591,11742,-30591,11742,-30591,
-                                  10937,-30888,10937,-30888,10937,-30888,10937,-30888,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9306,-31418,9306,-31418,9306,-31418,9306,-31418,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  7649,-31862,7649,-31862,7649,-31862,7649,-31862,
-                                  6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                  5971,-32219,5971,-32219,5971,-32219,5971,-32219,
-                                  5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                                  4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  2570,-32666,2570,-32666,2570,-32666,2570,-32666,
-                                  1714,-32723,1714,-32723,1714,-32723,1714,-32723,
-                                  857,-32756,857,-32756,857,-32756,857,-32756,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -858,-32756,-858,-32756,-858,-32756,-858,-32756,
-                                  -1715,-32723,-1715,-32723,-1715,-32723,-1715,-32723,
-                                  -2571,-32666,-2571,-32666,-2571,-32666,-2571,-32666,
-                                  -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                  -4277,-32487,-4277,-32487,-4277,-32487,-4277,-32487,
-                                  -5126,-32364,-5126,-32364,-5126,-32364,-5126,-32364,
-                                  -5972,-32219,-5972,-32219,-5972,-32219,-5972,-32219,
-                                  -6813,-32051,-6813,-32051,-6813,-32051,-6813,-32051,
-                                  -7650,-31862,-7650,-31862,-7650,-31862,-7650,-31862,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -9307,-31418,-9307,-31418,-9307,-31418,-9307,-31418,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -10938,-30888,-10938,-30888,-10938,-30888,-10938,-30888,
-                                  -11743,-30591,-11743,-30591,-11743,-30591,-11743,-30591,
-                                  -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                  -13328,-29935,-13328,-29935,-13328,-29935,-13328,-29935,
-                                  -14107,-29576,-14107,-29576,-14107,-29576,-14107,-29576,
-                                  -14876,-29196,-14876,-29196,-14876,-29196,-14876,-29196,
-                                  -15636,-28797,-15636,-28797,-15636,-28797,-15636,-28797,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -17121,-27939,-17121,-27939,-17121,-27939,-17121,-27939,
-                                  -17847,-27481,-17847,-27481,-17847,-27481,-17847,-27481,
-                                  -18560,-27005,-18560,-27005,-18560,-27005,-18560,-27005,
-                                  -19260,-26510,-19260,-26510,-19260,-26510,-19260,-26510,
-                                  -19948,-25996,-19948,-25996,-19948,-25996,-19948,-25996,
-                                  -20621,-25465,-20621,-25465,-20621,-25465,-20621,-25465,
-                                  -21281,-24917,-21281,-24917,-21281,-24917,-21281,-24917,
-                                  -21926,-24351,-21926,-24351,-21926,-24351,-21926,-24351,
-                                  -22556,-23769,-22556,-23769,-22556,-23769,-22556,-23769,
-                                  -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                  -23769,-22556,-23769,-22556,-23769,-22556,-23769,-22556,
-                                  -24351,-21926,-24351,-21926,-24351,-21926,-24351,-21926,
-                                  -24917,-21281,-24917,-21281,-24917,-21281,-24917,-21281,
-                                  -25465,-20621,-25465,-20621,-25465,-20621,-25465,-20621,
-                                  -25996,-19948,-25996,-19948,-25996,-19948,-25996,-19948,
-                                  -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                                  -27005,-18560,-27005,-18560,-27005,-18560,-27005,-18560,
-                                  -27481,-17847,-27481,-17847,-27481,-17847,-27481,-17847,
-                                  -27939,-17121,-27939,-17121,-27939,-17121,-27939,-17121,
-                                  -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                  -28797,-15636,-28797,-15636,-28797,-15636,-28797,-15636,
-                                  -29196,-14876,-29196,-14876,-29196,-14876,-29196,-14876,
-                                  -29576,-14107,-29576,-14107,-29576,-14107,-29576,-14107,
-                                  -29935,-13328,-29935,-13328,-29935,-13328,-29935,-13328,
-                                  -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                                  -30591,-11743,-30591,-11743,-30591,-11743,-30591,-11743,
-                                  -30888,-10938,-30888,-10938,-30888,-10938,-30888,-10938,
-                                  -31164,-10126,-31164,-10126,-31164,-10126,-31164,-10126,
-                                  -31418,-9307,-31418,-9307,-31418,-9307,-31418,-9307,
-                                  -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                                  -31862,-7650,-31862,-7650,-31862,-7650,-31862,-7650,
-                                  -32051,-6813,-32051,-6813,-32051,-6813,-32051,-6813,
-                                  -32219,-5972,-32219,-5972,-32219,-5972,-32219,-5972,
-                                  -32364,-5126,-32364,-5126,-32364,-5126,-32364,-5126,
-                                  -32487,-4277,-32487,-4277,-32487,-4277,-32487,-4277,
-                                  -32588,-3426,-32588,-3426,-32588,-3426,-32588,-3426,
-                                  -32666,-2571,-32666,-2571,-32666,-2571,-32666,-2571,
-                                  -32723,-1715,-32723,-1715,-32723,-1715,-32723,-1715,
-                                  -32756,-858,-32756,-858,-32756,-858,-32756,-858,
-                                  -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                  -32756,857,-32756,857,-32756,857,-32756,857,
-                                  -32723,1714,-32723,1714,-32723,1714,-32723,1714,
-                                  -32666,2570,-32666,2570,-32666,2570,-32666,2570,
-                                  -32588,3425,-32588,3425,-32588,3425,-32588,3425,
-                                  -32487,4276,-32487,4276,-32487,4276,-32487,4276,
-                                  -32364,5125,-32364,5125,-32364,5125,-32364,5125,
-                                  -32219,5971,-32219,5971,-32219,5971,-32219,5971,
-                                  -32051,6812,-32051,6812,-32051,6812,-32051,6812,
-                                  -31862,7649,-31862,7649,-31862,7649,-31862,7649,
-                                  -31651,8480,-31651,8480,-31651,8480,-31651,8480,
-                                  -31418,9306,-31418,9306,-31418,9306,-31418,9306,
-                                  -31164,10125,-31164,10125,-31164,10125,-31164,10125,
-                                  -30888,10937,-30888,10937,-30888,10937,-30888,10937,
-                                  -30591,11742,-30591,11742,-30591,11742,-30591,11742,
-                                  -30273,12539,-30273,12539,-30273,12539,-30273,12539,
-                                  -29935,13327,-29935,13327,-29935,13327,-29935,13327,
-                                  -29576,14106,-29576,14106,-29576,14106,-29576,14106,
-                                  -29196,14875,-29196,14875,-29196,14875,-29196,14875,
-                                  -28797,15635,-28797,15635,-28797,15635,-28797,15635,
-                                  -28378,16383,-28378,16383,-28378,16383,-28378,16383,
-                                  -27939,17120,-27939,17120,-27939,17120,-27939,17120,
-                                  -27481,17846,-27481,17846,-27481,17846,-27481,17846,
-                                  -27005,18559,-27005,18559,-27005,18559,-27005,18559,
-                                  -26510,19259,-26510,19259,-26510,19259,-26510,19259,
-                                  -25996,19947,-25996,19947,-25996,19947,-25996,19947,
-                                  -25465,20620,-25465,20620,-25465,20620,-25465,20620,
-                                  -24917,21280,-24917,21280,-24917,21280,-24917,21280,
-                                  -24351,21925,-24351,21925,-24351,21925,-24351,21925,
-                                  -23769,22555,-23769,22555,-23769,22555,-23769,22555,
-                                  -23170,23169,-23170,23169,-23170,23169,-23170,23169,
-                                  -22556,23768,-22556,23768,-22556,23768,-22556,23768,
-                                  -21926,24350,-21926,24350,-21926,24350,-21926,24350,
-                                  -21281,24916,-21281,24916,-21281,24916,-21281,24916,
-                                  -20621,25464,-20621,25464,-20621,25464,-20621,25464,
-                                  -19948,25995,-19948,25995,-19948,25995,-19948,25995,
-                                  -19260,26509,-19260,26509,-19260,26509,-19260,26509,
-                                  -18560,27004,-18560,27004,-18560,27004,-18560,27004,
-                                  -17847,27480,-17847,27480,-17847,27480,-17847,27480,
-                                  -17121,27938,-17121,27938,-17121,27938,-17121,27938,
-                                  -16384,28377,-16384,28377,-16384,28377,-16384,28377,
-                                  -15636,28796,-15636,28796,-15636,28796,-15636,28796,
-                                  -14876,29195,-14876,29195,-14876,29195,-14876,29195,
-                                  -14107,29575,-14107,29575,-14107,29575,-14107,29575,
-                                  -13328,29934,-13328,29934,-13328,29934,-13328,29934,
-                                  -12540,30272,-12540,30272,-12540,30272,-12540,30272,
-                                  -11743,30590,-11743,30590,-11743,30590,-11743,30590,
-                                  -10938,30887,-10938,30887,-10938,30887,-10938,30887,
-                                  -10126,31163,-10126,31163,-10126,31163,-10126,31163,
-                                  -9307,31417,-9307,31417,-9307,31417,-9307,31417,
-                                  -8481,31650,-8481,31650,-8481,31650,-8481,31650,
-                                  -7650,31861,-7650,31861,-7650,31861,-7650,31861,
-                                  -6813,32050,-6813,32050,-6813,32050,-6813,32050,
-                                  -5972,32218,-5972,32218,-5972,32218,-5972,32218,
-                                  -5126,32363,-5126,32363,-5126,32363,-5126,32363,
-                                  -4277,32486,-4277,32486,-4277,32486,-4277,32486,
-                                  -3426,32587,-3426,32587,-3426,32587,-3426,32587,
-                                  -2571,32665,-2571,32665,-2571,32665,-2571,32665,
-                                  -1715,32722,-1715,32722,-1715,32722,-1715,32722,
-                                  -858,32755,-858,32755,-858,32755,-858,32755
-                                 };
 
 void dft720(int16_t *x,int16_t *y,unsigned char scale_flag)  // 180 x 4
 {
@@ -12943,606 +8085,68 @@ void dft720(int16_t *x,int16_t *y,unsigned char scale_flag)  // 180 x 4
 
 };
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:287)/864));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:287)/864));
-twa2 = zeros(1,2*287);
-twb2 = zeros(1,2*287);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa864[287*2*4] = {");
-for i=1:2:(2*286)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"static int16_t twb864[287*2*4] = {");
-for i=1:2:(2*286)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fclose(fd);
-*/
-static int16_t twa864[287*2*4] = {32766,-239,32766,-239,32766,-239,32766,-239,
-                                  32763,-477,32763,-477,32763,-477,32763,-477,
-                                  32759,-715,32759,-715,32759,-715,32759,-715,
-                                  32753,-954,32753,-954,32753,-954,32753,-954,
-                                  32745,-1192,32745,-1192,32745,-1192,32745,-1192,
-                                  32735,-1430,32735,-1430,32735,-1430,32735,-1430,
-                                  32724,-1668,32724,-1668,32724,-1668,32724,-1668,
-                                  32711,-1906,32711,-1906,32711,-1906,32711,-1906,
-                                  32696,-2144,32696,-2144,32696,-2144,32696,-2144,
-                                  32680,-2381,32680,-2381,32680,-2381,32680,-2381,
-                                  32662,-2619,32662,-2619,32662,-2619,32662,-2619,
-                                  32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                  32620,-3094,32620,-3094,32620,-3094,32620,-3094,
-                                  32597,-3331,32597,-3331,32597,-3331,32597,-3331,
-                                  32572,-3568,32572,-3568,32572,-3568,32572,-3568,
-                                  32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                  32516,-4041,32516,-4041,32516,-4041,32516,-4041,
-                                  32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                  32454,-4514,32454,-4514,32454,-4514,32454,-4514,
-                                  32421,-4749,32421,-4749,32421,-4749,32421,-4749,
-                                  32385,-4985,32385,-4985,32385,-4985,32385,-4985,
-                                  32348,-5221,32348,-5221,32348,-5221,32348,-5221,
-                                  32309,-5456,32309,-5456,32309,-5456,32309,-5456,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32226,-5925,32226,-5925,32226,-5925,32226,-5925,
-                                  32183,-6159,32183,-6159,32183,-6159,32183,-6159,
-                                  32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                  32090,-6627,32090,-6627,32090,-6627,32090,-6627,
-                                  32041,-6860,32041,-6860,32041,-6860,32041,-6860,
-                                  31990,-7093,31990,-7093,31990,-7093,31990,-7093,
-                                  31937,-7325,31937,-7325,31937,-7325,31937,-7325,
-                                  31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                  31827,-7789,31827,-7789,31827,-7789,31827,-7789,
-                                  31770,-8020,31770,-8020,31770,-8020,31770,-8020,
-                                  31711,-8251,31711,-8251,31711,-8251,31711,-8251,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31587,-8711,31587,-8711,31587,-8711,31587,-8711,
-                                  31523,-8941,31523,-8941,31523,-8941,31523,-8941,
-                                  31457,-9170,31457,-9170,31457,-9170,31457,-9170,
-                                  31390,-9398,31390,-9398,31390,-9398,31390,-9398,
-                                  31321,-9626,31321,-9626,31321,-9626,31321,-9626,
-                                  31250,-9854,31250,-9854,31250,-9854,31250,-9854,
-                                  31177,-10081,31177,-10081,31177,-10081,31177,-10081,
-                                  31103,-10307,31103,-10307,31103,-10307,31103,-10307,
-                                  31028,-10533,31028,-10533,31028,-10533,31028,-10533,
-                                  30950,-10758,30950,-10758,30950,-10758,30950,-10758,
-                                  30871,-10983,30871,-10983,30871,-10983,30871,-10983,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30708,-11431,30708,-11431,30708,-11431,30708,-11431,
-                                  30624,-11654,30624,-11654,30624,-11654,30624,-11654,
-                                  30539,-11877,30539,-11877,30539,-11877,30539,-11877,
-                                  30451,-12098,30451,-12098,30451,-12098,30451,-12098,
-                                  30363,-12319,30363,-12319,30363,-12319,30363,-12319,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  30180,-12760,30180,-12760,30180,-12760,30180,-12760,
-                                  30087,-12979,30087,-12979,30087,-12979,30087,-12979,
-                                  29992,-13197,29992,-13197,29992,-13197,29992,-13197,
-                                  29895,-13415,29895,-13415,29895,-13415,29895,-13415,
-                                  29796,-13632,29796,-13632,29796,-13632,29796,-13632,
-                                  29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                  29595,-14064,29595,-14064,29595,-14064,29595,-14064,
-                                  29492,-14279,29492,-14279,29492,-14279,29492,-14279,
-                                  29387,-14493,29387,-14493,29387,-14493,29387,-14493,
-                                  29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                  29173,-14919,29173,-14919,29173,-14919,29173,-14919,
-                                  29064,-15131,29064,-15131,29064,-15131,29064,-15131,
-                                  28953,-15342,28953,-15342,28953,-15342,28953,-15342,
-                                  28841,-15552,28841,-15552,28841,-15552,28841,-15552,
-                                  28727,-15761,28727,-15761,28727,-15761,28727,-15761,
-                                  28612,-15970,28612,-15970,28612,-15970,28612,-15970,
-                                  28495,-16177,28495,-16177,28495,-16177,28495,-16177,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28257,-16590,28257,-16590,28257,-16590,28257,-16590,
-                                  28135,-16795,28135,-16795,28135,-16795,28135,-16795,
-                                  28012,-16999,28012,-16999,28012,-16999,28012,-16999,
-                                  27888,-17202,27888,-17202,27888,-17202,27888,-17202,
-                                  27762,-17405,27762,-17405,27762,-17405,27762,-17405,
-                                  27635,-17606,27635,-17606,27635,-17606,27635,-17606,
-                                  27506,-17807,27506,-17807,27506,-17807,27506,-17807,
-                                  27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                  27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                  27111,-18403,27111,-18403,27111,-18403,27111,-18403,
-                                  26977,-18599,26977,-18599,26977,-18599,26977,-18599,
-                                  26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                  26703,-18990,26703,-18990,26703,-18990,26703,-18990,
-                                  26564,-19183,26564,-19183,26564,-19183,26564,-19183,
-                                  26424,-19376,26424,-19376,26424,-19376,26424,-19376,
-                                  26283,-19568,26283,-19568,26283,-19568,26283,-19568,
-                                  26140,-19758,26140,-19758,26140,-19758,26140,-19758,
-                                  25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                  25850,-20136,25850,-20136,25850,-20136,25850,-20136,
-                                  25702,-20324,25702,-20324,25702,-20324,25702,-20324,
-                                  25554,-20510,25554,-20510,25554,-20510,25554,-20510,
-                                  25404,-20695,25404,-20695,25404,-20695,25404,-20695,
-                                  25253,-20880,25253,-20880,25253,-20880,25253,-20880,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24947,-21245,24947,-21245,24947,-21245,24947,-21245,
-                                  24791,-21426,24791,-21426,24791,-21426,24791,-21426,
-                                  24635,-21605,24635,-21605,24635,-21605,24635,-21605,
-                                  24477,-21784,24477,-21784,24477,-21784,24477,-21784,
-                                  24318,-21961,24318,-21961,24318,-21961,24318,-21961,
-                                  24158,-22138,24158,-22138,24158,-22138,24158,-22138,
-                                  23996,-22313,23996,-22313,23996,-22313,23996,-22313,
-                                  23833,-22487,23833,-22487,23833,-22487,23833,-22487,
-                                  23669,-22659,23669,-22659,23669,-22659,23669,-22659,
-                                  23504,-22831,23504,-22831,23504,-22831,23504,-22831,
-                                  23337,-23001,23337,-23001,23337,-23001,23337,-23001,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  23000,-23338,23000,-23338,23000,-23338,23000,-23338,
-                                  22830,-23505,22830,-23505,22830,-23505,22830,-23505,
-                                  22658,-23670,22658,-23670,22658,-23670,22658,-23670,
-                                  22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                  22312,-23997,22312,-23997,22312,-23997,22312,-23997,
-                                  22137,-24159,22137,-24159,22137,-24159,22137,-24159,
-                                  21960,-24319,21960,-24319,21960,-24319,21960,-24319,
-                                  21783,-24478,21783,-24478,21783,-24478,21783,-24478,
-                                  21604,-24636,21604,-24636,21604,-24636,21604,-24636,
-                                  21425,-24792,21425,-24792,21425,-24792,21425,-24792,
-                                  21244,-24948,21244,-24948,21244,-24948,21244,-24948,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20879,-25254,20879,-25254,20879,-25254,20879,-25254,
-                                  20694,-25405,20694,-25405,20694,-25405,20694,-25405,
-                                  20509,-25555,20509,-25555,20509,-25555,20509,-25555,
-                                  20323,-25703,20323,-25703,20323,-25703,20323,-25703,
-                                  20135,-25851,20135,-25851,20135,-25851,20135,-25851,
-                                  19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                  19757,-26141,19757,-26141,19757,-26141,19757,-26141,
-                                  19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                  19375,-26425,19375,-26425,19375,-26425,19375,-26425,
-                                  19182,-26565,19182,-26565,19182,-26565,19182,-26565,
-                                  18989,-26704,18989,-26704,18989,-26704,18989,-26704,
-                                  18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                  18598,-26978,18598,-26978,18598,-26978,18598,-26978,
-                                  18402,-27112,18402,-27112,18402,-27112,18402,-27112,
-                                  18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                  18005,-27377,18005,-27377,18005,-27377,18005,-27377,
-                                  17806,-27507,17806,-27507,17806,-27507,17806,-27507,
-                                  17605,-27636,17605,-27636,17605,-27636,17605,-27636,
-                                  17404,-27763,17404,-27763,17404,-27763,17404,-27763,
-                                  17201,-27889,17201,-27889,17201,-27889,17201,-27889,
-                                  16998,-28013,16998,-28013,16998,-28013,16998,-28013,
-                                  16794,-28136,16794,-28136,16794,-28136,16794,-28136,
-                                  16589,-28258,16589,-28258,16589,-28258,16589,-28258,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  16176,-28496,16176,-28496,16176,-28496,16176,-28496,
-                                  15969,-28613,15969,-28613,15969,-28613,15969,-28613,
-                                  15760,-28728,15760,-28728,15760,-28728,15760,-28728,
-                                  15551,-28842,15551,-28842,15551,-28842,15551,-28842,
-                                  15341,-28954,15341,-28954,15341,-28954,15341,-28954,
-                                  15130,-29065,15130,-29065,15130,-29065,15130,-29065,
-                                  14918,-29174,14918,-29174,14918,-29174,14918,-29174,
-                                  14705,-29282,14705,-29282,14705,-29282,14705,-29282,
-                                  14492,-29388,14492,-29388,14492,-29388,14492,-29388,
-                                  14278,-29493,14278,-29493,14278,-29493,14278,-29493,
-                                  14063,-29596,14063,-29596,14063,-29596,14063,-29596,
-                                  13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                  13631,-29797,13631,-29797,13631,-29797,13631,-29797,
-                                  13414,-29896,13414,-29896,13414,-29896,13414,-29896,
-                                  13196,-29993,13196,-29993,13196,-29993,13196,-29993,
-                                  12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                  12759,-30181,12759,-30181,12759,-30181,12759,-30181,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  12318,-30364,12318,-30364,12318,-30364,12318,-30364,
-                                  12097,-30452,12097,-30452,12097,-30452,12097,-30452,
-                                  11876,-30540,11876,-30540,11876,-30540,11876,-30540,
-                                  11653,-30625,11653,-30625,11653,-30625,11653,-30625,
-                                  11430,-30709,11430,-30709,11430,-30709,11430,-30709,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10982,-30872,10982,-30872,10982,-30872,10982,-30872,
-                                  10757,-30951,10757,-30951,10757,-30951,10757,-30951,
-                                  10532,-31029,10532,-31029,10532,-31029,10532,-31029,
-                                  10306,-31104,10306,-31104,10306,-31104,10306,-31104,
-                                  10080,-31178,10080,-31178,10080,-31178,10080,-31178,
-                                  9853,-31251,9853,-31251,9853,-31251,9853,-31251,
-                                  9625,-31322,9625,-31322,9625,-31322,9625,-31322,
-                                  9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                  9169,-31458,9169,-31458,9169,-31458,9169,-31458,
-                                  8940,-31524,8940,-31524,8940,-31524,8940,-31524,
-                                  8710,-31588,8710,-31588,8710,-31588,8710,-31588,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  8250,-31712,8250,-31712,8250,-31712,8250,-31712,
-                                  8019,-31771,8019,-31771,8019,-31771,8019,-31771,
-                                  7788,-31828,7788,-31828,7788,-31828,7788,-31828,
-                                  7556,-31884,7556,-31884,7556,-31884,7556,-31884,
-                                  7324,-31938,7324,-31938,7324,-31938,7324,-31938,
-                                  7092,-31991,7092,-31991,7092,-31991,7092,-31991,
-                                  6859,-32042,6859,-32042,6859,-32042,6859,-32042,
-                                  6626,-32091,6626,-32091,6626,-32091,6626,-32091,
-                                  6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                  6158,-32184,6158,-32184,6158,-32184,6158,-32184,
-                                  5924,-32227,5924,-32227,5924,-32227,5924,-32227,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5455,-32310,5455,-32310,5455,-32310,5455,-32310,
-                                  5220,-32349,5220,-32349,5220,-32349,5220,-32349,
-                                  4984,-32386,4984,-32386,4984,-32386,4984,-32386,
-                                  4748,-32422,4748,-32422,4748,-32422,4748,-32422,
-                                  4513,-32455,4513,-32455,4513,-32455,4513,-32455,
-                                  4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                  4040,-32517,4040,-32517,4040,-32517,4040,-32517,
-                                  3804,-32546,3804,-32546,3804,-32546,3804,-32546,
-                                  3567,-32573,3567,-32573,3567,-32573,3567,-32573,
-                                  3330,-32598,3330,-32598,3330,-32598,3330,-32598,
-                                  3093,-32621,3093,-32621,3093,-32621,3093,-32621,
-                                  2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                  2618,-32663,2618,-32663,2618,-32663,2618,-32663,
-                                  2380,-32681,2380,-32681,2380,-32681,2380,-32681,
-                                  2143,-32697,2143,-32697,2143,-32697,2143,-32697,
-                                  1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                  1667,-32725,1667,-32725,1667,-32725,1667,-32725,
-                                  1429,-32736,1429,-32736,1429,-32736,1429,-32736,
-                                  1191,-32746,1191,-32746,1191,-32746,1191,-32746,
-                                  953,-32754,953,-32754,953,-32754,953,-32754,
-                                  714,-32760,714,-32760,714,-32760,714,-32760,
-                                  476,-32764,476,-32764,476,-32764,476,-32764,
-                                  238,-32767,238,-32767,238,-32767,238,-32767,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -239,-32767,-239,-32767,-239,-32767,-239,-32767,
-                                  -477,-32764,-477,-32764,-477,-32764,-477,-32764,
-                                  -715,-32760,-715,-32760,-715,-32760,-715,-32760,
-                                  -954,-32754,-954,-32754,-954,-32754,-954,-32754,
-                                  -1192,-32746,-1192,-32746,-1192,-32746,-1192,-32746,
-                                  -1430,-32736,-1430,-32736,-1430,-32736,-1430,-32736,
-                                  -1668,-32725,-1668,-32725,-1668,-32725,-1668,-32725,
-                                  -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                  -2144,-32697,-2144,-32697,-2144,-32697,-2144,-32697,
-                                  -2381,-32681,-2381,-32681,-2381,-32681,-2381,-32681,
-                                  -2619,-32663,-2619,-32663,-2619,-32663,-2619,-32663,
-                                  -2856,-32643,-2856,-32643,-2856,-32643,-2856,-32643,
-                                  -3094,-32621,-3094,-32621,-3094,-32621,-3094,-32621,
-                                  -3331,-32598,-3331,-32598,-3331,-32598,-3331,-32598,
-                                  -3568,-32573,-3568,-32573,-3568,-32573,-3568,-32573,
-                                  -3805,-32546,-3805,-32546,-3805,-32546,-3805,-32546,
-                                  -4041,-32517,-4041,-32517,-4041,-32517,-4041,-32517,
-                                  -4277,-32487,-4277,-32487,-4277,-32487,-4277,-32487,
-                                  -4514,-32455,-4514,-32455,-4514,-32455,-4514,-32455,
-                                  -4749,-32422,-4749,-32422,-4749,-32422,-4749,-32422,
-                                  -4985,-32386,-4985,-32386,-4985,-32386,-4985,-32386,
-                                  -5221,-32349,-5221,-32349,-5221,-32349,-5221,-32349,
-                                  -5456,-32310,-5456,-32310,-5456,-32310,-5456,-32310,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -5925,-32227,-5925,-32227,-5925,-32227,-5925,-32227,
-                                  -6159,-32184,-6159,-32184,-6159,-32184,-6159,-32184,
-                                  -6393,-32138,-6393,-32138,-6393,-32138,-6393,-32138,
-                                  -6627,-32091,-6627,-32091,-6627,-32091,-6627,-32091,
-                                  -6860,-32042,-6860,-32042,-6860,-32042,-6860,-32042,
-                                  -7093,-31991,-7093,-31991,-7093,-31991,-7093,-31991,
-                                  -7325,-31938,-7325,-31938,-7325,-31938,-7325,-31938,
-                                  -7557,-31884,-7557,-31884,-7557,-31884,-7557,-31884,
-                                  -7789,-31828,-7789,-31828,-7789,-31828,-7789,-31828,
-                                  -8020,-31771,-8020,-31771,-8020,-31771,-8020,-31771,
-                                  -8251,-31712,-8251,-31712,-8251,-31712,-8251,-31712,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -8711,-31588,-8711,-31588,-8711,-31588,-8711,-31588,
-                                  -8941,-31524,-8941,-31524,-8941,-31524,-8941,-31524,
-                                  -9170,-31458,-9170,-31458,-9170,-31458,-9170,-31458,
-                                  -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                  -9626,-31322,-9626,-31322,-9626,-31322,-9626,-31322,
-                                  -9854,-31251,-9854,-31251,-9854,-31251,-9854,-31251,
-                                  -10081,-31178,-10081,-31178,-10081,-31178,-10081,-31178,
-                                  -10307,-31104,-10307,-31104,-10307,-31104,-10307,-31104,
-                                  -10533,-31029,-10533,-31029,-10533,-31029,-10533,-31029,
-                                  -10758,-30951,-10758,-30951,-10758,-30951,-10758,-30951,
-                                  -10983,-30872,-10983,-30872,-10983,-30872,-10983,-30872,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -11431,-30709,-11431,-30709,-11431,-30709,-11431,-30709,
-                                  -11654,-30625,-11654,-30625,-11654,-30625,-11654,-30625,
-                                  -11877,-30540,-11877,-30540,-11877,-30540,-11877,-30540,
-                                  -12098,-30452,-12098,-30452,-12098,-30452,-12098,-30452,
-                                  -12319,-30364,-12319,-30364,-12319,-30364,-12319,-30364,
-                                  -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                  -12760,-30181,-12760,-30181,-12760,-30181,-12760,-30181,
-                                  -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                  -13197,-29993,-13197,-29993,-13197,-29993,-13197,-29993,
-                                  -13415,-29896,-13415,-29896,-13415,-29896,-13415,-29896,
-                                  -13632,-29797,-13632,-29797,-13632,-29797,-13632,-29797,
-                                  -13848,-29697,-13848,-29697,-13848,-29697,-13848,-29697,
-                                  -14064,-29596,-14064,-29596,-14064,-29596,-14064,-29596,
-                                  -14279,-29493,-14279,-29493,-14279,-29493,-14279,-29493,
-                                  -14493,-29388,-14493,-29388,-14493,-29388,-14493,-29388,
-                                  -14706,-29282,-14706,-29282,-14706,-29282,-14706,-29282,
-                                  -14919,-29174,-14919,-29174,-14919,-29174,-14919,-29174,
-                                  -15131,-29065,-15131,-29065,-15131,-29065,-15131,-29065,
-                                  -15342,-28954,-15342,-28954,-15342,-28954,-15342,-28954,
-                                  -15552,-28842,-15552,-28842,-15552,-28842,-15552,-28842,
-                                  -15761,-28728,-15761,-28728,-15761,-28728,-15761,-28728,
-                                  -15970,-28613,-15970,-28613,-15970,-28613,-15970,-28613,
-                                  -16177,-28496,-16177,-28496,-16177,-28496,-16177,-28496
-                                 };
-static int16_t twb864[287*2*4] = {32763,-477,32763,-477,32763,-477,32763,-477,
-                                  32753,-954,32753,-954,32753,-954,32753,-954,
-                                  32735,-1430,32735,-1430,32735,-1430,32735,-1430,
-                                  32711,-1906,32711,-1906,32711,-1906,32711,-1906,
-                                  32680,-2381,32680,-2381,32680,-2381,32680,-2381,
-                                  32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                  32597,-3331,32597,-3331,32597,-3331,32597,-3331,
-                                  32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                  32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                  32421,-4749,32421,-4749,32421,-4749,32421,-4749,
-                                  32348,-5221,32348,-5221,32348,-5221,32348,-5221,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32183,-6159,32183,-6159,32183,-6159,32183,-6159,
-                                  32090,-6627,32090,-6627,32090,-6627,32090,-6627,
-                                  31990,-7093,31990,-7093,31990,-7093,31990,-7093,
-                                  31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                  31770,-8020,31770,-8020,31770,-8020,31770,-8020,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31523,-8941,31523,-8941,31523,-8941,31523,-8941,
-                                  31390,-9398,31390,-9398,31390,-9398,31390,-9398,
-                                  31250,-9854,31250,-9854,31250,-9854,31250,-9854,
-                                  31103,-10307,31103,-10307,31103,-10307,31103,-10307,
-                                  30950,-10758,30950,-10758,30950,-10758,30950,-10758,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30624,-11654,30624,-11654,30624,-11654,30624,-11654,
-                                  30451,-12098,30451,-12098,30451,-12098,30451,-12098,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  30087,-12979,30087,-12979,30087,-12979,30087,-12979,
-                                  29895,-13415,29895,-13415,29895,-13415,29895,-13415,
-                                  29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                  29492,-14279,29492,-14279,29492,-14279,29492,-14279,
-                                  29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                  29064,-15131,29064,-15131,29064,-15131,29064,-15131,
-                                  28841,-15552,28841,-15552,28841,-15552,28841,-15552,
-                                  28612,-15970,28612,-15970,28612,-15970,28612,-15970,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28135,-16795,28135,-16795,28135,-16795,28135,-16795,
-                                  27888,-17202,27888,-17202,27888,-17202,27888,-17202,
-                                  27635,-17606,27635,-17606,27635,-17606,27635,-17606,
-                                  27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                  27111,-18403,27111,-18403,27111,-18403,27111,-18403,
-                                  26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                  26564,-19183,26564,-19183,26564,-19183,26564,-19183,
-                                  26283,-19568,26283,-19568,26283,-19568,26283,-19568,
-                                  25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                  25702,-20324,25702,-20324,25702,-20324,25702,-20324,
-                                  25404,-20695,25404,-20695,25404,-20695,25404,-20695,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24791,-21426,24791,-21426,24791,-21426,24791,-21426,
-                                  24477,-21784,24477,-21784,24477,-21784,24477,-21784,
-                                  24158,-22138,24158,-22138,24158,-22138,24158,-22138,
-                                  23833,-22487,23833,-22487,23833,-22487,23833,-22487,
-                                  23504,-22831,23504,-22831,23504,-22831,23504,-22831,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22830,-23505,22830,-23505,22830,-23505,22830,-23505,
-                                  22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                  22137,-24159,22137,-24159,22137,-24159,22137,-24159,
-                                  21783,-24478,21783,-24478,21783,-24478,21783,-24478,
-                                  21425,-24792,21425,-24792,21425,-24792,21425,-24792,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20694,-25405,20694,-25405,20694,-25405,20694,-25405,
-                                  20323,-25703,20323,-25703,20323,-25703,20323,-25703,
-                                  19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                  19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                  19182,-26565,19182,-26565,19182,-26565,19182,-26565,
-                                  18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                  18402,-27112,18402,-27112,18402,-27112,18402,-27112,
-                                  18005,-27377,18005,-27377,18005,-27377,18005,-27377,
-                                  17605,-27636,17605,-27636,17605,-27636,17605,-27636,
-                                  17201,-27889,17201,-27889,17201,-27889,17201,-27889,
-                                  16794,-28136,16794,-28136,16794,-28136,16794,-28136,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15969,-28613,15969,-28613,15969,-28613,15969,-28613,
-                                  15551,-28842,15551,-28842,15551,-28842,15551,-28842,
-                                  15130,-29065,15130,-29065,15130,-29065,15130,-29065,
-                                  14705,-29282,14705,-29282,14705,-29282,14705,-29282,
-                                  14278,-29493,14278,-29493,14278,-29493,14278,-29493,
-                                  13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                  13414,-29896,13414,-29896,13414,-29896,13414,-29896,
-                                  12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  12097,-30452,12097,-30452,12097,-30452,12097,-30452,
-                                  11653,-30625,11653,-30625,11653,-30625,11653,-30625,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10757,-30951,10757,-30951,10757,-30951,10757,-30951,
-                                  10306,-31104,10306,-31104,10306,-31104,10306,-31104,
-                                  9853,-31251,9853,-31251,9853,-31251,9853,-31251,
-                                  9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                  8940,-31524,8940,-31524,8940,-31524,8940,-31524,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  8019,-31771,8019,-31771,8019,-31771,8019,-31771,
-                                  7556,-31884,7556,-31884,7556,-31884,7556,-31884,
-                                  7092,-31991,7092,-31991,7092,-31991,7092,-31991,
-                                  6626,-32091,6626,-32091,6626,-32091,6626,-32091,
-                                  6158,-32184,6158,-32184,6158,-32184,6158,-32184,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5220,-32349,5220,-32349,5220,-32349,5220,-32349,
-                                  4748,-32422,4748,-32422,4748,-32422,4748,-32422,
-                                  4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                  3804,-32546,3804,-32546,3804,-32546,3804,-32546,
-                                  3330,-32598,3330,-32598,3330,-32598,3330,-32598,
-                                  2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                  2380,-32681,2380,-32681,2380,-32681,2380,-32681,
-                                  1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                  1429,-32736,1429,-32736,1429,-32736,1429,-32736,
-                                  953,-32754,953,-32754,953,-32754,953,-32754,
-                                  476,-32764,476,-32764,476,-32764,476,-32764,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -477,-32764,-477,-32764,-477,-32764,-477,-32764,
-                                  -954,-32754,-954,-32754,-954,-32754,-954,-32754,
-                                  -1430,-32736,-1430,-32736,-1430,-32736,-1430,-32736,
-                                  -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                  -2381,-32681,-2381,-32681,-2381,-32681,-2381,-32681,
-                                  -2856,-32643,-2856,-32643,-2856,-32643,-2856,-32643,
-                                  -3331,-32598,-3331,-32598,-3331,-32598,-3331,-32598,
-                                  -3805,-32546,-3805,-32546,-3805,-32546,-3805,-32546,
-                                  -4277,-32487,-4277,-32487,-4277,-32487,-4277,-32487,
-                                  -4749,-32422,-4749,-32422,-4749,-32422,-4749,-32422,
-                                  -5221,-32349,-5221,-32349,-5221,-32349,-5221,-32349,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6159,-32184,-6159,-32184,-6159,-32184,-6159,-32184,
-                                  -6627,-32091,-6627,-32091,-6627,-32091,-6627,-32091,
-                                  -7093,-31991,-7093,-31991,-7093,-31991,-7093,-31991,
-                                  -7557,-31884,-7557,-31884,-7557,-31884,-7557,-31884,
-                                  -8020,-31771,-8020,-31771,-8020,-31771,-8020,-31771,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -8941,-31524,-8941,-31524,-8941,-31524,-8941,-31524,
-                                  -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                  -9854,-31251,-9854,-31251,-9854,-31251,-9854,-31251,
-                                  -10307,-31104,-10307,-31104,-10307,-31104,-10307,-31104,
-                                  -10758,-30951,-10758,-30951,-10758,-30951,-10758,-30951,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -11654,-30625,-11654,-30625,-11654,-30625,-11654,-30625,
-                                  -12098,-30452,-12098,-30452,-12098,-30452,-12098,-30452,
-                                  -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                  -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                  -13415,-29896,-13415,-29896,-13415,-29896,-13415,-29896,
-                                  -13848,-29697,-13848,-29697,-13848,-29697,-13848,-29697,
-                                  -14279,-29493,-14279,-29493,-14279,-29493,-14279,-29493,
-                                  -14706,-29282,-14706,-29282,-14706,-29282,-14706,-29282,
-                                  -15131,-29065,-15131,-29065,-15131,-29065,-15131,-29065,
-                                  -15552,-28842,-15552,-28842,-15552,-28842,-15552,-28842,
-                                  -15970,-28613,-15970,-28613,-15970,-28613,-15970,-28613,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -16795,-28136,-16795,-28136,-16795,-28136,-16795,-28136,
-                                  -17202,-27889,-17202,-27889,-17202,-27889,-17202,-27889,
-                                  -17606,-27636,-17606,-27636,-17606,-27636,-17606,-27636,
-                                  -18006,-27377,-18006,-27377,-18006,-27377,-18006,-27377,
-                                  -18403,-27112,-18403,-27112,-18403,-27112,-18403,-27112,
-                                  -18795,-26842,-18795,-26842,-18795,-26842,-18795,-26842,
-                                  -19183,-26565,-19183,-26565,-19183,-26565,-19183,-26565,
-                                  -19568,-26284,-19568,-26284,-19568,-26284,-19568,-26284,
-                                  -19948,-25996,-19948,-25996,-19948,-25996,-19948,-25996,
-                                  -20324,-25703,-20324,-25703,-20324,-25703,-20324,-25703,
-                                  -20695,-25405,-20695,-25405,-20695,-25405,-20695,-25405,
-                                  -21063,-25101,-21063,-25101,-21063,-25101,-21063,-25101,
-                                  -21426,-24792,-21426,-24792,-21426,-24792,-21426,-24792,
-                                  -21784,-24478,-21784,-24478,-21784,-24478,-21784,-24478,
-                                  -22138,-24159,-22138,-24159,-22138,-24159,-22138,-24159,
-                                  -22487,-23834,-22487,-23834,-22487,-23834,-22487,-23834,
-                                  -22831,-23505,-22831,-23505,-22831,-23505,-22831,-23505,
-                                  -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                  -23505,-22831,-23505,-22831,-23505,-22831,-23505,-22831,
-                                  -23834,-22487,-23834,-22487,-23834,-22487,-23834,-22487,
-                                  -24159,-22138,-24159,-22138,-24159,-22138,-24159,-22138,
-                                  -24478,-21784,-24478,-21784,-24478,-21784,-24478,-21784,
-                                  -24792,-21426,-24792,-21426,-24792,-21426,-24792,-21426,
-                                  -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                  -25405,-20695,-25405,-20695,-25405,-20695,-25405,-20695,
-                                  -25703,-20324,-25703,-20324,-25703,-20324,-25703,-20324,
-                                  -25996,-19948,-25996,-19948,-25996,-19948,-25996,-19948,
-                                  -26284,-19568,-26284,-19568,-26284,-19568,-26284,-19568,
-                                  -26565,-19183,-26565,-19183,-26565,-19183,-26565,-19183,
-                                  -26842,-18795,-26842,-18795,-26842,-18795,-26842,-18795,
-                                  -27112,-18403,-27112,-18403,-27112,-18403,-27112,-18403,
-                                  -27377,-18006,-27377,-18006,-27377,-18006,-27377,-18006,
-                                  -27636,-17606,-27636,-17606,-27636,-17606,-27636,-17606,
-                                  -27889,-17202,-27889,-17202,-27889,-17202,-27889,-17202,
-                                  -28136,-16795,-28136,-16795,-28136,-16795,-28136,-16795,
-                                  -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                  -28613,-15970,-28613,-15970,-28613,-15970,-28613,-15970,
-                                  -28842,-15552,-28842,-15552,-28842,-15552,-28842,-15552,
-                                  -29065,-15131,-29065,-15131,-29065,-15131,-29065,-15131,
-                                  -29282,-14706,-29282,-14706,-29282,-14706,-29282,-14706,
-                                  -29493,-14279,-29493,-14279,-29493,-14279,-29493,-14279,
-                                  -29697,-13848,-29697,-13848,-29697,-13848,-29697,-13848,
-                                  -29896,-13415,-29896,-13415,-29896,-13415,-29896,-13415,
-                                  -30088,-12979,-30088,-12979,-30088,-12979,-30088,-12979,
-                                  -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                                  -30452,-12098,-30452,-12098,-30452,-12098,-30452,-12098,
-                                  -30625,-11654,-30625,-11654,-30625,-11654,-30625,-11654,
-                                  -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                  -30951,-10758,-30951,-10758,-30951,-10758,-30951,-10758,
-                                  -31104,-10307,-31104,-10307,-31104,-10307,-31104,-10307,
-                                  -31251,-9854,-31251,-9854,-31251,-9854,-31251,-9854,
-                                  -31391,-9398,-31391,-9398,-31391,-9398,-31391,-9398,
-                                  -31524,-8941,-31524,-8941,-31524,-8941,-31524,-8941,
-                                  -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                                  -31771,-8020,-31771,-8020,-31771,-8020,-31771,-8020,
-                                  -31884,-7557,-31884,-7557,-31884,-7557,-31884,-7557,
-                                  -31991,-7093,-31991,-7093,-31991,-7093,-31991,-7093,
-                                  -32091,-6627,-32091,-6627,-32091,-6627,-32091,-6627,
-                                  -32184,-6159,-32184,-6159,-32184,-6159,-32184,-6159,
-                                  -32270,-5690,-32270,-5690,-32270,-5690,-32270,-5690,
-                                  -32349,-5221,-32349,-5221,-32349,-5221,-32349,-5221,
-                                  -32422,-4749,-32422,-4749,-32422,-4749,-32422,-4749,
-                                  -32487,-4277,-32487,-4277,-32487,-4277,-32487,-4277,
-                                  -32546,-3805,-32546,-3805,-32546,-3805,-32546,-3805,
-                                  -32598,-3331,-32598,-3331,-32598,-3331,-32598,-3331,
-                                  -32643,-2856,-32643,-2856,-32643,-2856,-32643,-2856,
-                                  -32681,-2381,-32681,-2381,-32681,-2381,-32681,-2381,
-                                  -32712,-1906,-32712,-1906,-32712,-1906,-32712,-1906,
-                                  -32736,-1430,-32736,-1430,-32736,-1430,-32736,-1430,
-                                  -32754,-954,-32754,-954,-32754,-954,-32754,-954,
-                                  -32764,-477,-32764,-477,-32764,-477,-32764,-477,
-                                  -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                  -32764,476,-32764,476,-32764,476,-32764,476,
-                                  -32754,953,-32754,953,-32754,953,-32754,953,
-                                  -32736,1429,-32736,1429,-32736,1429,-32736,1429,
-                                  -32712,1905,-32712,1905,-32712,1905,-32712,1905,
-                                  -32681,2380,-32681,2380,-32681,2380,-32681,2380,
-                                  -32643,2855,-32643,2855,-32643,2855,-32643,2855,
-                                  -32598,3330,-32598,3330,-32598,3330,-32598,3330,
-                                  -32546,3804,-32546,3804,-32546,3804,-32546,3804,
-                                  -32487,4276,-32487,4276,-32487,4276,-32487,4276,
-                                  -32422,4748,-32422,4748,-32422,4748,-32422,4748,
-                                  -32349,5220,-32349,5220,-32349,5220,-32349,5220,
-                                  -32270,5689,-32270,5689,-32270,5689,-32270,5689,
-                                  -32184,6158,-32184,6158,-32184,6158,-32184,6158,
-                                  -32091,6626,-32091,6626,-32091,6626,-32091,6626,
-                                  -31991,7092,-31991,7092,-31991,7092,-31991,7092,
-                                  -31884,7556,-31884,7556,-31884,7556,-31884,7556,
-                                  -31771,8019,-31771,8019,-31771,8019,-31771,8019,
-                                  -31651,8480,-31651,8480,-31651,8480,-31651,8480,
-                                  -31524,8940,-31524,8940,-31524,8940,-31524,8940,
-                                  -31391,9397,-31391,9397,-31391,9397,-31391,9397,
-                                  -31251,9853,-31251,9853,-31251,9853,-31251,9853,
-                                  -31104,10306,-31104,10306,-31104,10306,-31104,10306,
-                                  -30951,10757,-30951,10757,-30951,10757,-30951,10757,
-                                  -30791,11206,-30791,11206,-30791,11206,-30791,11206,
-                                  -30625,11653,-30625,11653,-30625,11653,-30625,11653,
-                                  -30452,12097,-30452,12097,-30452,12097,-30452,12097,
-                                  -30273,12539,-30273,12539,-30273,12539,-30273,12539,
-                                  -30088,12978,-30088,12978,-30088,12978,-30088,12978,
-                                  -29896,13414,-29896,13414,-29896,13414,-29896,13414,
-                                  -29697,13847,-29697,13847,-29697,13847,-29697,13847,
-                                  -29493,14278,-29493,14278,-29493,14278,-29493,14278,
-                                  -29282,14705,-29282,14705,-29282,14705,-29282,14705,
-                                  -29065,15130,-29065,15130,-29065,15130,-29065,15130,
-                                  -28842,15551,-28842,15551,-28842,15551,-28842,15551,
-                                  -28613,15969,-28613,15969,-28613,15969,-28613,15969,
-                                  -28378,16383,-28378,16383,-28378,16383,-28378,16383,
-                                  -28136,16794,-28136,16794,-28136,16794,-28136,16794,
-                                  -27889,17201,-27889,17201,-27889,17201,-27889,17201,
-                                  -27636,17605,-27636,17605,-27636,17605,-27636,17605,
-                                  -27377,18005,-27377,18005,-27377,18005,-27377,18005,
-                                  -27112,18402,-27112,18402,-27112,18402,-27112,18402,
-                                  -26842,18794,-26842,18794,-26842,18794,-26842,18794,
-                                  -26565,19182,-26565,19182,-26565,19182,-26565,19182,
-                                  -26284,19567,-26284,19567,-26284,19567,-26284,19567,
-                                  -25996,19947,-25996,19947,-25996,19947,-25996,19947,
-                                  -25703,20323,-25703,20323,-25703,20323,-25703,20323,
-                                  -25405,20694,-25405,20694,-25405,20694,-25405,20694,
-                                  -25101,21062,-25101,21062,-25101,21062,-25101,21062,
-                                  -24792,21425,-24792,21425,-24792,21425,-24792,21425,
-                                  -24478,21783,-24478,21783,-24478,21783,-24478,21783,
-                                  -24159,22137,-24159,22137,-24159,22137,-24159,22137,
-                                  -23834,22486,-23834,22486,-23834,22486,-23834,22486,
-                                  -23505,22830,-23505,22830,-23505,22830,-23505,22830,
-                                  -23170,23169,-23170,23169,-23170,23169,-23170,23169,
-                                  -22831,23504,-22831,23504,-22831,23504,-22831,23504,
-                                  -22487,23833,-22487,23833,-22487,23833,-22487,23833,
-                                  -22138,24158,-22138,24158,-22138,24158,-22138,24158,
-                                  -21784,24477,-21784,24477,-21784,24477,-21784,24477,
-                                  -21426,24791,-21426,24791,-21426,24791,-21426,24791,
-                                  -21063,25100,-21063,25100,-21063,25100,-21063,25100,
-                                  -20695,25404,-20695,25404,-20695,25404,-20695,25404,
-                                  -20324,25702,-20324,25702,-20324,25702,-20324,25702,
-                                  -19948,25995,-19948,25995,-19948,25995,-19948,25995,
-                                  -19568,26283,-19568,26283,-19568,26283,-19568,26283,
-                                  -19183,26564,-19183,26564,-19183,26564,-19183,26564,
-                                  -18795,26841,-18795,26841,-18795,26841,-18795,26841,
-                                  -18403,27111,-18403,27111,-18403,27111,-18403,27111,
-                                  -18006,27376,-18006,27376,-18006,27376,-18006,27376,
-                                  -17606,27635,-17606,27635,-17606,27635,-17606,27635,
-                                  -17202,27888,-17202,27888,-17202,27888,-17202,27888,
-                                  -16795,28135,-16795,28135,-16795,28135,-16795,28135
-                                 };
+static int16_t twa768[191*2*4];
+static int16_t twb768[191*2*4];
+static int16_t twc768[191*2*4];
+
+void dft768(int16_t *x,int16_t *y,unsigned char scale_flag) { // 192x 4;
+
+  int i,j;
+  simd_q15_t *x128=(simd_q15_t *)x;
+  simd_q15_t *y128=(simd_q15_t *)y;
+  simd_q15_t *twa128=(simd_q15_t *)&twa768[0];
+  simd_q15_t *twb128=(simd_q15_t *)&twb768[0];
+  simd_q15_t *twc128=(simd_q15_t *)&twc768[0];
+  simd_q15_t x2128[768];// = (simd_q15_t *)&x2128array[0];
+  simd_q15_t ytmp128[768];//=&ytmp128array2[0];
+
+
+
+  for (i=0,j=0; i<192; i++,j+=4) {
+    x2128[i]     = x128[j];
+    x2128[i+192] = x128[j+1];
+    x2128[i+384] = x128[j+2];
+    x2128[i+576] = x128[j+3];
+  }
+
+  dft192((int16_t *)x2128,(int16_t *)ytmp128,1);
+  dft192((int16_t *)(x2128+192),(int16_t *)(ytmp128+192),1);
+  dft192((int16_t *)(x2128+384),(int16_t *)(ytmp128+384),1);
+  dft192((int16_t *)(x2128+576),(int16_t *)(ytmp128+576),1);
+
+  bfly4_tw1(ytmp128,ytmp128+192,ytmp128+384,ytmp128+576,y128,y128+192,y128+384,y128+576);
+
+  for (i=1,j=0; i<192; i++,j++) {
+    bfly4(ytmp128+i,
+          ytmp128+192+i,
+          ytmp128+384+i,
+          ytmp128+576+i,
+          y128+i,
+          y128+192+i,
+          y128+384+i,
+          y128+576+i,
+          twa128+j,
+          twb128+j,
+          twc128+j);
+  }
+
+  if (scale_flag==1) {
+    norm128 = set1_int16(16384);//dft_norm_table[13]);
+
+    for (i=0; i<768; i++) {
+      y128[i] = mulhi_int16(y128[i],norm128);
+    }
+  }
+
+  _mm_empty();
+  _m_empty();
+
+
+}
+
+
+static int16_t twa864[287*2*4];
+static int16_t twb864[287*2*4];
 
 void dft864(int16_t *x,int16_t *y,unsigned char scale_flag)  // 288 x 3
 {
@@ -13592,630 +8196,8 @@ void dft864(int16_t *x,int16_t *y,unsigned char scale_flag)  // 288 x 3
 
 };
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:299)/900));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:299)/900));
-twa2 = zeros(1,2*299);
-twb2 = zeros(1,2*299);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa900[299*2*4] = {");
-for i=1:2:(2*298)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"static int16_t twb900[299*2*4] = {");
-for i=1:2:(2*298)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fclose(fd);
-*/
-static int16_t twa900[299*2*4] = {32766,-229,32766,-229,32766,-229,32766,-229,
-                                  32763,-458,32763,-458,32763,-458,32763,-458,
-                                  32759,-687,32759,-687,32759,-687,32759,-687,
-                                  32754,-915,32754,-915,32754,-915,32754,-915,
-                                  32747,-1144,32747,-1144,32747,-1144,32747,-1144,
-                                  32738,-1373,32738,-1373,32738,-1373,32738,-1373,
-                                  32727,-1601,32727,-1601,32727,-1601,32727,-1601,
-                                  32715,-1830,32715,-1830,32715,-1830,32715,-1830,
-                                  32702,-2058,32702,-2058,32702,-2058,32702,-2058,
-                                  32687,-2286,32687,-2286,32687,-2286,32687,-2286,
-                                  32670,-2514,32670,-2514,32670,-2514,32670,-2514,
-                                  32652,-2742,32652,-2742,32652,-2742,32652,-2742,
-                                  32632,-2970,32632,-2970,32632,-2970,32632,-2970,
-                                  32610,-3198,32610,-3198,32610,-3198,32610,-3198,
-                                  32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                  32562,-3653,32562,-3653,32562,-3653,32562,-3653,
-                                  32536,-3880,32536,-3880,32536,-3880,32536,-3880,
-                                  32508,-4107,32508,-4107,32508,-4107,32508,-4107,
-                                  32479,-4334,32479,-4334,32479,-4334,32479,-4334,
-                                  32448,-4561,32448,-4561,32448,-4561,32448,-4561,
-                                  32415,-4787,32415,-4787,32415,-4787,32415,-4787,
-                                  32381,-5013,32381,-5013,32381,-5013,32381,-5013,
-                                  32345,-5239,32345,-5239,32345,-5239,32345,-5239,
-                                  32308,-5465,32308,-5465,32308,-5465,32308,-5465,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32228,-5916,32228,-5916,32228,-5916,32228,-5916,
-                                  32186,-6140,32186,-6140,32186,-6140,32186,-6140,
-                                  32142,-6365,32142,-6365,32142,-6365,32142,-6365,
-                                  32097,-6589,32097,-6589,32097,-6589,32097,-6589,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  32002,-7037,32002,-7037,32002,-7037,32002,-7037,
-                                  31952,-7260,31952,-7260,31952,-7260,31952,-7260,
-                                  31901,-7483,31901,-7483,31901,-7483,31901,-7483,
-                                  31848,-7705,31848,-7705,31848,-7705,31848,-7705,
-                                  31793,-7928,31793,-7928,31793,-7928,31793,-7928,
-                                  31737,-8149,31737,-8149,31737,-8149,31737,-8149,
-                                  31679,-8371,31679,-8371,31679,-8371,31679,-8371,
-                                  31620,-8592,31620,-8592,31620,-8592,31620,-8592,
-                                  31559,-8812,31559,-8812,31559,-8812,31559,-8812,
-                                  31497,-9032,31497,-9032,31497,-9032,31497,-9032,
-                                  31433,-9252,31433,-9252,31433,-9252,31433,-9252,
-                                  31368,-9471,31368,-9471,31368,-9471,31368,-9471,
-                                  31301,-9690,31301,-9690,31301,-9690,31301,-9690,
-                                  31233,-9908,31233,-9908,31233,-9908,31233,-9908,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  31091,-10343,31091,-10343,31091,-10343,31091,-10343,
-                                  31018,-10560,31018,-10560,31018,-10560,31018,-10560,
-                                  30944,-10776,30944,-10776,30944,-10776,30944,-10776,
-                                  30868,-10992,30868,-10992,30868,-10992,30868,-10992,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30711,-11422,30711,-11422,30711,-11422,30711,-11422,
-                                  30631,-11636,30631,-11636,30631,-11636,30631,-11636,
-                                  30549,-11850,30549,-11850,30549,-11850,30549,-11850,
-                                  30465,-12063,30465,-12063,30465,-12063,30465,-12063,
-                                  30381,-12275,30381,-12275,30381,-12275,30381,-12275,
-                                  30294,-12487,30294,-12487,30294,-12487,30294,-12487,
-                                  30206,-12698,30206,-12698,30206,-12698,30206,-12698,
-                                  30117,-12909,30117,-12909,30117,-12909,30117,-12909,
-                                  30026,-13119,30026,-13119,30026,-13119,30026,-13119,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29840,-13537,29840,-13537,29840,-13537,29840,-13537,
-                                  29745,-13745,29745,-13745,29745,-13745,29745,-13745,
-                                  29648,-13952,29648,-13952,29648,-13952,29648,-13952,
-                                  29550,-14159,29550,-14159,29550,-14159,29550,-14159,
-                                  29450,-14365,29450,-14365,29450,-14365,29450,-14365,
-                                  29349,-14570,29349,-14570,29349,-14570,29349,-14570,
-                                  29247,-14774,29247,-14774,29247,-14774,29247,-14774,
-                                  29143,-14978,29143,-14978,29143,-14978,29143,-14978,
-                                  29038,-15181,29038,-15181,29038,-15181,29038,-15181,
-                                  28931,-15384,28931,-15384,28931,-15384,28931,-15384,
-                                  28823,-15585,28823,-15585,28823,-15585,28823,-15585,
-                                  28713,-15786,28713,-15786,28713,-15786,28713,-15786,
-                                  28603,-15986,28603,-15986,28603,-15986,28603,-15986,
-                                  28490,-16185,28490,-16185,28490,-16185,28490,-16185,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28261,-16582,28261,-16582,28261,-16582,28261,-16582,
-                                  28145,-16779,28145,-16779,28145,-16779,28145,-16779,
-                                  28027,-16975,28027,-16975,28027,-16975,28027,-16975,
-                                  27908,-17170,27908,-17170,27908,-17170,27908,-17170,
-                                  27787,-17364,27787,-17364,27787,-17364,27787,-17364,
-                                  27666,-17558,27666,-17558,27666,-17558,27666,-17558,
-                                  27542,-17751,27542,-17751,27542,-17751,27542,-17751,
-                                  27418,-17943,27418,-17943,27418,-17943,27418,-17943,
-                                  27292,-18133,27292,-18133,27292,-18133,27292,-18133,
-                                  27165,-18324,27165,-18324,27165,-18324,27165,-18324,
-                                  27036,-18513,27036,-18513,27036,-18513,27036,-18513,
-                                  26906,-18701,26906,-18701,26906,-18701,26906,-18701,
-                                  26775,-18888,26775,-18888,26775,-18888,26775,-18888,
-                                  26642,-19075,26642,-19075,26642,-19075,26642,-19075,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  26373,-19445,26373,-19445,26373,-19445,26373,-19445,
-                                  26237,-19629,26237,-19629,26237,-19629,26237,-19629,
-                                  26099,-19811,26099,-19811,26099,-19811,26099,-19811,
-                                  25960,-19993,25960,-19993,25960,-19993,25960,-19993,
-                                  25820,-20174,25820,-20174,25820,-20174,25820,-20174,
-                                  25679,-20354,25679,-20354,25679,-20354,25679,-20354,
-                                  25536,-20532,25536,-20532,25536,-20532,25536,-20532,
-                                  25392,-20710,25392,-20710,25392,-20710,25392,-20710,
-                                  25247,-20887,25247,-20887,25247,-20887,25247,-20887,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24953,-21237,24953,-21237,24953,-21237,24953,-21237,
-                                  24804,-21411,24804,-21411,24804,-21411,24804,-21411,
-                                  24654,-21584,24654,-21584,24654,-21584,24654,-21584,
-                                  24503,-21755,24503,-21755,24503,-21755,24503,-21755,
-                                  24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                  24196,-22095,24196,-22095,24196,-22095,24196,-22095,
-                                  24042,-22264,24042,-22264,24042,-22264,24042,-22264,
-                                  23886,-22431,23886,-22431,23886,-22431,23886,-22431,
-                                  23728,-22597,23728,-22597,23728,-22597,23728,-22597,
-                                  23570,-22762,23570,-22762,23570,-22762,23570,-22762,
-                                  23411,-22926,23411,-22926,23411,-22926,23411,-22926,
-                                  23250,-23089,23250,-23089,23250,-23089,23250,-23089,
-                                  23088,-23251,23088,-23251,23088,-23251,23088,-23251,
-                                  22925,-23412,22925,-23412,22925,-23412,22925,-23412,
-                                  22761,-23571,22761,-23571,22761,-23571,22761,-23571,
-                                  22596,-23729,22596,-23729,22596,-23729,22596,-23729,
-                                  22430,-23887,22430,-23887,22430,-23887,22430,-23887,
-                                  22263,-24043,22263,-24043,22263,-24043,22263,-24043,
-                                  22094,-24197,22094,-24197,22094,-24197,22094,-24197,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21754,-24504,21754,-24504,21754,-24504,21754,-24504,
-                                  21583,-24655,21583,-24655,21583,-24655,21583,-24655,
-                                  21410,-24805,21410,-24805,21410,-24805,21410,-24805,
-                                  21236,-24954,21236,-24954,21236,-24954,21236,-24954,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20886,-25248,20886,-25248,20886,-25248,20886,-25248,
-                                  20709,-25393,20709,-25393,20709,-25393,20709,-25393,
-                                  20531,-25537,20531,-25537,20531,-25537,20531,-25537,
-                                  20353,-25680,20353,-25680,20353,-25680,20353,-25680,
-                                  20173,-25821,20173,-25821,20173,-25821,20173,-25821,
-                                  19992,-25961,19992,-25961,19992,-25961,19992,-25961,
-                                  19810,-26100,19810,-26100,19810,-26100,19810,-26100,
-                                  19628,-26238,19628,-26238,19628,-26238,19628,-26238,
-                                  19444,-26374,19444,-26374,19444,-26374,19444,-26374,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  19074,-26643,19074,-26643,19074,-26643,19074,-26643,
-                                  18887,-26776,18887,-26776,18887,-26776,18887,-26776,
-                                  18700,-26907,18700,-26907,18700,-26907,18700,-26907,
-                                  18512,-27037,18512,-27037,18512,-27037,18512,-27037,
-                                  18323,-27166,18323,-27166,18323,-27166,18323,-27166,
-                                  18132,-27293,18132,-27293,18132,-27293,18132,-27293,
-                                  17942,-27419,17942,-27419,17942,-27419,17942,-27419,
-                                  17750,-27543,17750,-27543,17750,-27543,17750,-27543,
-                                  17557,-27667,17557,-27667,17557,-27667,17557,-27667,
-                                  17363,-27788,17363,-27788,17363,-27788,17363,-27788,
-                                  17169,-27909,17169,-27909,17169,-27909,17169,-27909,
-                                  16974,-28028,16974,-28028,16974,-28028,16974,-28028,
-                                  16778,-28146,16778,-28146,16778,-28146,16778,-28146,
-                                  16581,-28262,16581,-28262,16581,-28262,16581,-28262,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  16184,-28491,16184,-28491,16184,-28491,16184,-28491,
-                                  15985,-28604,15985,-28604,15985,-28604,15985,-28604,
-                                  15785,-28714,15785,-28714,15785,-28714,15785,-28714,
-                                  15584,-28824,15584,-28824,15584,-28824,15584,-28824,
-                                  15383,-28932,15383,-28932,15383,-28932,15383,-28932,
-                                  15180,-29039,15180,-29039,15180,-29039,15180,-29039,
-                                  14977,-29144,14977,-29144,14977,-29144,14977,-29144,
-                                  14773,-29248,14773,-29248,14773,-29248,14773,-29248,
-                                  14569,-29350,14569,-29350,14569,-29350,14569,-29350,
-                                  14364,-29451,14364,-29451,14364,-29451,14364,-29451,
-                                  14158,-29551,14158,-29551,14158,-29551,14158,-29551,
-                                  13951,-29649,13951,-29649,13951,-29649,13951,-29649,
-                                  13744,-29746,13744,-29746,13744,-29746,13744,-29746,
-                                  13536,-29841,13536,-29841,13536,-29841,13536,-29841,
-                                  13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                  13118,-30027,13118,-30027,13118,-30027,13118,-30027,
-                                  12908,-30118,12908,-30118,12908,-30118,12908,-30118,
-                                  12697,-30207,12697,-30207,12697,-30207,12697,-30207,
-                                  12486,-30295,12486,-30295,12486,-30295,12486,-30295,
-                                  12274,-30382,12274,-30382,12274,-30382,12274,-30382,
-                                  12062,-30466,12062,-30466,12062,-30466,12062,-30466,
-                                  11849,-30550,11849,-30550,11849,-30550,11849,-30550,
-                                  11635,-30632,11635,-30632,11635,-30632,11635,-30632,
-                                  11421,-30712,11421,-30712,11421,-30712,11421,-30712,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  10991,-30869,10991,-30869,10991,-30869,10991,-30869,
-                                  10775,-30945,10775,-30945,10775,-30945,10775,-30945,
-                                  10559,-31019,10559,-31019,10559,-31019,10559,-31019,
-                                  10342,-31092,10342,-31092,10342,-31092,10342,-31092,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9907,-31234,9907,-31234,9907,-31234,9907,-31234,
-                                  9689,-31302,9689,-31302,9689,-31302,9689,-31302,
-                                  9470,-31369,9470,-31369,9470,-31369,9470,-31369,
-                                  9251,-31434,9251,-31434,9251,-31434,9251,-31434,
-                                  9031,-31498,9031,-31498,9031,-31498,9031,-31498,
-                                  8811,-31560,8811,-31560,8811,-31560,8811,-31560,
-                                  8591,-31621,8591,-31621,8591,-31621,8591,-31621,
-                                  8370,-31680,8370,-31680,8370,-31680,8370,-31680,
-                                  8148,-31738,8148,-31738,8148,-31738,8148,-31738,
-                                  7927,-31794,7927,-31794,7927,-31794,7927,-31794,
-                                  7704,-31849,7704,-31849,7704,-31849,7704,-31849,
-                                  7482,-31902,7482,-31902,7482,-31902,7482,-31902,
-                                  7259,-31953,7259,-31953,7259,-31953,7259,-31953,
-                                  7036,-32003,7036,-32003,7036,-32003,7036,-32003,
-                                  6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                  6588,-32098,6588,-32098,6588,-32098,6588,-32098,
-                                  6364,-32143,6364,-32143,6364,-32143,6364,-32143,
-                                  6139,-32187,6139,-32187,6139,-32187,6139,-32187,
-                                  5915,-32229,5915,-32229,5915,-32229,5915,-32229,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5464,-32309,5464,-32309,5464,-32309,5464,-32309,
-                                  5238,-32346,5238,-32346,5238,-32346,5238,-32346,
-                                  5012,-32382,5012,-32382,5012,-32382,5012,-32382,
-                                  4786,-32416,4786,-32416,4786,-32416,4786,-32416,
-                                  4560,-32449,4560,-32449,4560,-32449,4560,-32449,
-                                  4333,-32480,4333,-32480,4333,-32480,4333,-32480,
-                                  4106,-32509,4106,-32509,4106,-32509,4106,-32509,
-                                  3879,-32537,3879,-32537,3879,-32537,3879,-32537,
-                                  3652,-32563,3652,-32563,3652,-32563,3652,-32563,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  3197,-32611,3197,-32611,3197,-32611,3197,-32611,
-                                  2969,-32633,2969,-32633,2969,-32633,2969,-32633,
-                                  2741,-32653,2741,-32653,2741,-32653,2741,-32653,
-                                  2513,-32671,2513,-32671,2513,-32671,2513,-32671,
-                                  2285,-32688,2285,-32688,2285,-32688,2285,-32688,
-                                  2057,-32703,2057,-32703,2057,-32703,2057,-32703,
-                                  1829,-32716,1829,-32716,1829,-32716,1829,-32716,
-                                  1600,-32728,1600,-32728,1600,-32728,1600,-32728,
-                                  1372,-32739,1372,-32739,1372,-32739,1372,-32739,
-                                  1143,-32748,1143,-32748,1143,-32748,1143,-32748,
-                                  914,-32755,914,-32755,914,-32755,914,-32755,
-                                  686,-32760,686,-32760,686,-32760,686,-32760,
-                                  457,-32764,457,-32764,457,-32764,457,-32764,
-                                  228,-32767,228,-32767,228,-32767,228,-32767,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -229,-32767,-229,-32767,-229,-32767,-229,-32767,
-                                  -458,-32764,-458,-32764,-458,-32764,-458,-32764,
-                                  -687,-32760,-687,-32760,-687,-32760,-687,-32760,
-                                  -915,-32755,-915,-32755,-915,-32755,-915,-32755,
-                                  -1144,-32748,-1144,-32748,-1144,-32748,-1144,-32748,
-                                  -1373,-32739,-1373,-32739,-1373,-32739,-1373,-32739,
-                                  -1601,-32728,-1601,-32728,-1601,-32728,-1601,-32728,
-                                  -1830,-32716,-1830,-32716,-1830,-32716,-1830,-32716,
-                                  -2058,-32703,-2058,-32703,-2058,-32703,-2058,-32703,
-                                  -2286,-32688,-2286,-32688,-2286,-32688,-2286,-32688,
-                                  -2514,-32671,-2514,-32671,-2514,-32671,-2514,-32671,
-                                  -2742,-32653,-2742,-32653,-2742,-32653,-2742,-32653,
-                                  -2970,-32633,-2970,-32633,-2970,-32633,-2970,-32633,
-                                  -3198,-32611,-3198,-32611,-3198,-32611,-3198,-32611,
-                                  -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                  -3653,-32563,-3653,-32563,-3653,-32563,-3653,-32563,
-                                  -3880,-32537,-3880,-32537,-3880,-32537,-3880,-32537,
-                                  -4107,-32509,-4107,-32509,-4107,-32509,-4107,-32509,
-                                  -4334,-32480,-4334,-32480,-4334,-32480,-4334,-32480,
-                                  -4561,-32449,-4561,-32449,-4561,-32449,-4561,-32449,
-                                  -4787,-32416,-4787,-32416,-4787,-32416,-4787,-32416,
-                                  -5013,-32382,-5013,-32382,-5013,-32382,-5013,-32382,
-                                  -5239,-32346,-5239,-32346,-5239,-32346,-5239,-32346,
-                                  -5465,-32309,-5465,-32309,-5465,-32309,-5465,-32309,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -5916,-32229,-5916,-32229,-5916,-32229,-5916,-32229,
-                                  -6140,-32187,-6140,-32187,-6140,-32187,-6140,-32187,
-                                  -6365,-32143,-6365,-32143,-6365,-32143,-6365,-32143,
-                                  -6589,-32098,-6589,-32098,-6589,-32098,-6589,-32098,
-                                  -6813,-32051,-6813,-32051,-6813,-32051,-6813,-32051,
-                                  -7037,-32003,-7037,-32003,-7037,-32003,-7037,-32003,
-                                  -7260,-31953,-7260,-31953,-7260,-31953,-7260,-31953,
-                                  -7483,-31902,-7483,-31902,-7483,-31902,-7483,-31902,
-                                  -7705,-31849,-7705,-31849,-7705,-31849,-7705,-31849,
-                                  -7928,-31794,-7928,-31794,-7928,-31794,-7928,-31794,
-                                  -8149,-31738,-8149,-31738,-8149,-31738,-8149,-31738,
-                                  -8371,-31680,-8371,-31680,-8371,-31680,-8371,-31680,
-                                  -8592,-31621,-8592,-31621,-8592,-31621,-8592,-31621,
-                                  -8812,-31560,-8812,-31560,-8812,-31560,-8812,-31560,
-                                  -9032,-31498,-9032,-31498,-9032,-31498,-9032,-31498,
-                                  -9252,-31434,-9252,-31434,-9252,-31434,-9252,-31434,
-                                  -9471,-31369,-9471,-31369,-9471,-31369,-9471,-31369,
-                                  -9690,-31302,-9690,-31302,-9690,-31302,-9690,-31302,
-                                  -9908,-31234,-9908,-31234,-9908,-31234,-9908,-31234,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -10343,-31092,-10343,-31092,-10343,-31092,-10343,-31092,
-                                  -10560,-31019,-10560,-31019,-10560,-31019,-10560,-31019,
-                                  -10776,-30945,-10776,-30945,-10776,-30945,-10776,-30945,
-                                  -10992,-30869,-10992,-30869,-10992,-30869,-10992,-30869,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -11422,-30712,-11422,-30712,-11422,-30712,-11422,-30712,
-                                  -11636,-30632,-11636,-30632,-11636,-30632,-11636,-30632,
-                                  -11850,-30550,-11850,-30550,-11850,-30550,-11850,-30550,
-                                  -12063,-30466,-12063,-30466,-12063,-30466,-12063,-30466,
-                                  -12275,-30382,-12275,-30382,-12275,-30382,-12275,-30382,
-                                  -12487,-30295,-12487,-30295,-12487,-30295,-12487,-30295,
-                                  -12698,-30207,-12698,-30207,-12698,-30207,-12698,-30207,
-                                  -12909,-30118,-12909,-30118,-12909,-30118,-12909,-30118,
-                                  -13119,-30027,-13119,-30027,-13119,-30027,-13119,-30027,
-                                  -13328,-29935,-13328,-29935,-13328,-29935,-13328,-29935,
-                                  -13537,-29841,-13537,-29841,-13537,-29841,-13537,-29841,
-                                  -13745,-29746,-13745,-29746,-13745,-29746,-13745,-29746,
-                                  -13952,-29649,-13952,-29649,-13952,-29649,-13952,-29649,
-                                  -14159,-29551,-14159,-29551,-14159,-29551,-14159,-29551,
-                                  -14365,-29451,-14365,-29451,-14365,-29451,-14365,-29451,
-                                  -14570,-29350,-14570,-29350,-14570,-29350,-14570,-29350,
-                                  -14774,-29248,-14774,-29248,-14774,-29248,-14774,-29248,
-                                  -14978,-29144,-14978,-29144,-14978,-29144,-14978,-29144,
-                                  -15181,-29039,-15181,-29039,-15181,-29039,-15181,-29039,
-                                  -15384,-28932,-15384,-28932,-15384,-28932,-15384,-28932,
-                                  -15585,-28824,-15585,-28824,-15585,-28824,-15585,-28824,
-                                  -15786,-28714,-15786,-28714,-15786,-28714,-15786,-28714,
-                                  -15986,-28604,-15986,-28604,-15986,-28604,-15986,-28604,
-                                  -16185,-28491,-16185,-28491,-16185,-28491,-16185,-28491
-                                 };
-static int16_t twb900[299*2*4] = {32763,-458,32763,-458,32763,-458,32763,-458,
-                                  32754,-915,32754,-915,32754,-915,32754,-915,
-                                  32738,-1373,32738,-1373,32738,-1373,32738,-1373,
-                                  32715,-1830,32715,-1830,32715,-1830,32715,-1830,
-                                  32687,-2286,32687,-2286,32687,-2286,32687,-2286,
-                                  32652,-2742,32652,-2742,32652,-2742,32652,-2742,
-                                  32610,-3198,32610,-3198,32610,-3198,32610,-3198,
-                                  32562,-3653,32562,-3653,32562,-3653,32562,-3653,
-                                  32508,-4107,32508,-4107,32508,-4107,32508,-4107,
-                                  32448,-4561,32448,-4561,32448,-4561,32448,-4561,
-                                  32381,-5013,32381,-5013,32381,-5013,32381,-5013,
-                                  32308,-5465,32308,-5465,32308,-5465,32308,-5465,
-                                  32228,-5916,32228,-5916,32228,-5916,32228,-5916,
-                                  32142,-6365,32142,-6365,32142,-6365,32142,-6365,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  31952,-7260,31952,-7260,31952,-7260,31952,-7260,
-                                  31848,-7705,31848,-7705,31848,-7705,31848,-7705,
-                                  31737,-8149,31737,-8149,31737,-8149,31737,-8149,
-                                  31620,-8592,31620,-8592,31620,-8592,31620,-8592,
-                                  31497,-9032,31497,-9032,31497,-9032,31497,-9032,
-                                  31368,-9471,31368,-9471,31368,-9471,31368,-9471,
-                                  31233,-9908,31233,-9908,31233,-9908,31233,-9908,
-                                  31091,-10343,31091,-10343,31091,-10343,31091,-10343,
-                                  30944,-10776,30944,-10776,30944,-10776,30944,-10776,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30631,-11636,30631,-11636,30631,-11636,30631,-11636,
-                                  30465,-12063,30465,-12063,30465,-12063,30465,-12063,
-                                  30294,-12487,30294,-12487,30294,-12487,30294,-12487,
-                                  30117,-12909,30117,-12909,30117,-12909,30117,-12909,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29745,-13745,29745,-13745,29745,-13745,29745,-13745,
-                                  29550,-14159,29550,-14159,29550,-14159,29550,-14159,
-                                  29349,-14570,29349,-14570,29349,-14570,29349,-14570,
-                                  29143,-14978,29143,-14978,29143,-14978,29143,-14978,
-                                  28931,-15384,28931,-15384,28931,-15384,28931,-15384,
-                                  28713,-15786,28713,-15786,28713,-15786,28713,-15786,
-                                  28490,-16185,28490,-16185,28490,-16185,28490,-16185,
-                                  28261,-16582,28261,-16582,28261,-16582,28261,-16582,
-                                  28027,-16975,28027,-16975,28027,-16975,28027,-16975,
-                                  27787,-17364,27787,-17364,27787,-17364,27787,-17364,
-                                  27542,-17751,27542,-17751,27542,-17751,27542,-17751,
-                                  27292,-18133,27292,-18133,27292,-18133,27292,-18133,
-                                  27036,-18513,27036,-18513,27036,-18513,27036,-18513,
-                                  26775,-18888,26775,-18888,26775,-18888,26775,-18888,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  26237,-19629,26237,-19629,26237,-19629,26237,-19629,
-                                  25960,-19993,25960,-19993,25960,-19993,25960,-19993,
-                                  25679,-20354,25679,-20354,25679,-20354,25679,-20354,
-                                  25392,-20710,25392,-20710,25392,-20710,25392,-20710,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24804,-21411,24804,-21411,24804,-21411,24804,-21411,
-                                  24503,-21755,24503,-21755,24503,-21755,24503,-21755,
-                                  24196,-22095,24196,-22095,24196,-22095,24196,-22095,
-                                  23886,-22431,23886,-22431,23886,-22431,23886,-22431,
-                                  23570,-22762,23570,-22762,23570,-22762,23570,-22762,
-                                  23250,-23089,23250,-23089,23250,-23089,23250,-23089,
-                                  22925,-23412,22925,-23412,22925,-23412,22925,-23412,
-                                  22596,-23729,22596,-23729,22596,-23729,22596,-23729,
-                                  22263,-24043,22263,-24043,22263,-24043,22263,-24043,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21583,-24655,21583,-24655,21583,-24655,21583,-24655,
-                                  21236,-24954,21236,-24954,21236,-24954,21236,-24954,
-                                  20886,-25248,20886,-25248,20886,-25248,20886,-25248,
-                                  20531,-25537,20531,-25537,20531,-25537,20531,-25537,
-                                  20173,-25821,20173,-25821,20173,-25821,20173,-25821,
-                                  19810,-26100,19810,-26100,19810,-26100,19810,-26100,
-                                  19444,-26374,19444,-26374,19444,-26374,19444,-26374,
-                                  19074,-26643,19074,-26643,19074,-26643,19074,-26643,
-                                  18700,-26907,18700,-26907,18700,-26907,18700,-26907,
-                                  18323,-27166,18323,-27166,18323,-27166,18323,-27166,
-                                  17942,-27419,17942,-27419,17942,-27419,17942,-27419,
-                                  17557,-27667,17557,-27667,17557,-27667,17557,-27667,
-                                  17169,-27909,17169,-27909,17169,-27909,17169,-27909,
-                                  16778,-28146,16778,-28146,16778,-28146,16778,-28146,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  15985,-28604,15985,-28604,15985,-28604,15985,-28604,
-                                  15584,-28824,15584,-28824,15584,-28824,15584,-28824,
-                                  15180,-29039,15180,-29039,15180,-29039,15180,-29039,
-                                  14773,-29248,14773,-29248,14773,-29248,14773,-29248,
-                                  14364,-29451,14364,-29451,14364,-29451,14364,-29451,
-                                  13951,-29649,13951,-29649,13951,-29649,13951,-29649,
-                                  13536,-29841,13536,-29841,13536,-29841,13536,-29841,
-                                  13118,-30027,13118,-30027,13118,-30027,13118,-30027,
-                                  12697,-30207,12697,-30207,12697,-30207,12697,-30207,
-                                  12274,-30382,12274,-30382,12274,-30382,12274,-30382,
-                                  11849,-30550,11849,-30550,11849,-30550,11849,-30550,
-                                  11421,-30712,11421,-30712,11421,-30712,11421,-30712,
-                                  10991,-30869,10991,-30869,10991,-30869,10991,-30869,
-                                  10559,-31019,10559,-31019,10559,-31019,10559,-31019,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9689,-31302,9689,-31302,9689,-31302,9689,-31302,
-                                  9251,-31434,9251,-31434,9251,-31434,9251,-31434,
-                                  8811,-31560,8811,-31560,8811,-31560,8811,-31560,
-                                  8370,-31680,8370,-31680,8370,-31680,8370,-31680,
-                                  7927,-31794,7927,-31794,7927,-31794,7927,-31794,
-                                  7482,-31902,7482,-31902,7482,-31902,7482,-31902,
-                                  7036,-32003,7036,-32003,7036,-32003,7036,-32003,
-                                  6588,-32098,6588,-32098,6588,-32098,6588,-32098,
-                                  6139,-32187,6139,-32187,6139,-32187,6139,-32187,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5238,-32346,5238,-32346,5238,-32346,5238,-32346,
-                                  4786,-32416,4786,-32416,4786,-32416,4786,-32416,
-                                  4333,-32480,4333,-32480,4333,-32480,4333,-32480,
-                                  3879,-32537,3879,-32537,3879,-32537,3879,-32537,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  2969,-32633,2969,-32633,2969,-32633,2969,-32633,
-                                  2513,-32671,2513,-32671,2513,-32671,2513,-32671,
-                                  2057,-32703,2057,-32703,2057,-32703,2057,-32703,
-                                  1600,-32728,1600,-32728,1600,-32728,1600,-32728,
-                                  1143,-32748,1143,-32748,1143,-32748,1143,-32748,
-                                  686,-32760,686,-32760,686,-32760,686,-32760,
-                                  228,-32767,228,-32767,228,-32767,228,-32767,
-                                  -229,-32767,-229,-32767,-229,-32767,-229,-32767,
-                                  -687,-32760,-687,-32760,-687,-32760,-687,-32760,
-                                  -1144,-32748,-1144,-32748,-1144,-32748,-1144,-32748,
-                                  -1601,-32728,-1601,-32728,-1601,-32728,-1601,-32728,
-                                  -2058,-32703,-2058,-32703,-2058,-32703,-2058,-32703,
-                                  -2514,-32671,-2514,-32671,-2514,-32671,-2514,-32671,
-                                  -2970,-32633,-2970,-32633,-2970,-32633,-2970,-32633,
-                                  -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                  -3880,-32537,-3880,-32537,-3880,-32537,-3880,-32537,
-                                  -4334,-32480,-4334,-32480,-4334,-32480,-4334,-32480,
-                                  -4787,-32416,-4787,-32416,-4787,-32416,-4787,-32416,
-                                  -5239,-32346,-5239,-32346,-5239,-32346,-5239,-32346,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6140,-32187,-6140,-32187,-6140,-32187,-6140,-32187,
-                                  -6589,-32098,-6589,-32098,-6589,-32098,-6589,-32098,
-                                  -7037,-32003,-7037,-32003,-7037,-32003,-7037,-32003,
-                                  -7483,-31902,-7483,-31902,-7483,-31902,-7483,-31902,
-                                  -7928,-31794,-7928,-31794,-7928,-31794,-7928,-31794,
-                                  -8371,-31680,-8371,-31680,-8371,-31680,-8371,-31680,
-                                  -8812,-31560,-8812,-31560,-8812,-31560,-8812,-31560,
-                                  -9252,-31434,-9252,-31434,-9252,-31434,-9252,-31434,
-                                  -9690,-31302,-9690,-31302,-9690,-31302,-9690,-31302,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -10560,-31019,-10560,-31019,-10560,-31019,-10560,-31019,
-                                  -10992,-30869,-10992,-30869,-10992,-30869,-10992,-30869,
-                                  -11422,-30712,-11422,-30712,-11422,-30712,-11422,-30712,
-                                  -11850,-30550,-11850,-30550,-11850,-30550,-11850,-30550,
-                                  -12275,-30382,-12275,-30382,-12275,-30382,-12275,-30382,
-                                  -12698,-30207,-12698,-30207,-12698,-30207,-12698,-30207,
-                                  -13119,-30027,-13119,-30027,-13119,-30027,-13119,-30027,
-                                  -13537,-29841,-13537,-29841,-13537,-29841,-13537,-29841,
-                                  -13952,-29649,-13952,-29649,-13952,-29649,-13952,-29649,
-                                  -14365,-29451,-14365,-29451,-14365,-29451,-14365,-29451,
-                                  -14774,-29248,-14774,-29248,-14774,-29248,-14774,-29248,
-                                  -15181,-29039,-15181,-29039,-15181,-29039,-15181,-29039,
-                                  -15585,-28824,-15585,-28824,-15585,-28824,-15585,-28824,
-                                  -15986,-28604,-15986,-28604,-15986,-28604,-15986,-28604,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -16779,-28146,-16779,-28146,-16779,-28146,-16779,-28146,
-                                  -17170,-27909,-17170,-27909,-17170,-27909,-17170,-27909,
-                                  -17558,-27667,-17558,-27667,-17558,-27667,-17558,-27667,
-                                  -17943,-27419,-17943,-27419,-17943,-27419,-17943,-27419,
-                                  -18324,-27166,-18324,-27166,-18324,-27166,-18324,-27166,
-                                  -18701,-26907,-18701,-26907,-18701,-26907,-18701,-26907,
-                                  -19075,-26643,-19075,-26643,-19075,-26643,-19075,-26643,
-                                  -19445,-26374,-19445,-26374,-19445,-26374,-19445,-26374,
-                                  -19811,-26100,-19811,-26100,-19811,-26100,-19811,-26100,
-                                  -20174,-25821,-20174,-25821,-20174,-25821,-20174,-25821,
-                                  -20532,-25537,-20532,-25537,-20532,-25537,-20532,-25537,
-                                  -20887,-25248,-20887,-25248,-20887,-25248,-20887,-25248,
-                                  -21237,-24954,-21237,-24954,-21237,-24954,-21237,-24954,
-                                  -21584,-24655,-21584,-24655,-21584,-24655,-21584,-24655,
-                                  -21926,-24351,-21926,-24351,-21926,-24351,-21926,-24351,
-                                  -22264,-24043,-22264,-24043,-22264,-24043,-22264,-24043,
-                                  -22597,-23729,-22597,-23729,-22597,-23729,-22597,-23729,
-                                  -22926,-23412,-22926,-23412,-22926,-23412,-22926,-23412,
-                                  -23251,-23089,-23251,-23089,-23251,-23089,-23251,-23089,
-                                  -23571,-22762,-23571,-22762,-23571,-22762,-23571,-22762,
-                                  -23887,-22431,-23887,-22431,-23887,-22431,-23887,-22431,
-                                  -24197,-22095,-24197,-22095,-24197,-22095,-24197,-22095,
-                                  -24504,-21755,-24504,-21755,-24504,-21755,-24504,-21755,
-                                  -24805,-21411,-24805,-21411,-24805,-21411,-24805,-21411,
-                                  -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                  -25393,-20710,-25393,-20710,-25393,-20710,-25393,-20710,
-                                  -25680,-20354,-25680,-20354,-25680,-20354,-25680,-20354,
-                                  -25961,-19993,-25961,-19993,-25961,-19993,-25961,-19993,
-                                  -26238,-19629,-26238,-19629,-26238,-19629,-26238,-19629,
-                                  -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                                  -26776,-18888,-26776,-18888,-26776,-18888,-26776,-18888,
-                                  -27037,-18513,-27037,-18513,-27037,-18513,-27037,-18513,
-                                  -27293,-18133,-27293,-18133,-27293,-18133,-27293,-18133,
-                                  -27543,-17751,-27543,-17751,-27543,-17751,-27543,-17751,
-                                  -27788,-17364,-27788,-17364,-27788,-17364,-27788,-17364,
-                                  -28028,-16975,-28028,-16975,-28028,-16975,-28028,-16975,
-                                  -28262,-16582,-28262,-16582,-28262,-16582,-28262,-16582,
-                                  -28491,-16185,-28491,-16185,-28491,-16185,-28491,-16185,
-                                  -28714,-15786,-28714,-15786,-28714,-15786,-28714,-15786,
-                                  -28932,-15384,-28932,-15384,-28932,-15384,-28932,-15384,
-                                  -29144,-14978,-29144,-14978,-29144,-14978,-29144,-14978,
-                                  -29350,-14570,-29350,-14570,-29350,-14570,-29350,-14570,
-                                  -29551,-14159,-29551,-14159,-29551,-14159,-29551,-14159,
-                                  -29746,-13745,-29746,-13745,-29746,-13745,-29746,-13745,
-                                  -29935,-13328,-29935,-13328,-29935,-13328,-29935,-13328,
-                                  -30118,-12909,-30118,-12909,-30118,-12909,-30118,-12909,
-                                  -30295,-12487,-30295,-12487,-30295,-12487,-30295,-12487,
-                                  -30466,-12063,-30466,-12063,-30466,-12063,-30466,-12063,
-                                  -30632,-11636,-30632,-11636,-30632,-11636,-30632,-11636,
-                                  -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                  -30945,-10776,-30945,-10776,-30945,-10776,-30945,-10776,
-                                  -31092,-10343,-31092,-10343,-31092,-10343,-31092,-10343,
-                                  -31234,-9908,-31234,-9908,-31234,-9908,-31234,-9908,
-                                  -31369,-9471,-31369,-9471,-31369,-9471,-31369,-9471,
-                                  -31498,-9032,-31498,-9032,-31498,-9032,-31498,-9032,
-                                  -31621,-8592,-31621,-8592,-31621,-8592,-31621,-8592,
-                                  -31738,-8149,-31738,-8149,-31738,-8149,-31738,-8149,
-                                  -31849,-7705,-31849,-7705,-31849,-7705,-31849,-7705,
-                                  -31953,-7260,-31953,-7260,-31953,-7260,-31953,-7260,
-                                  -32051,-6813,-32051,-6813,-32051,-6813,-32051,-6813,
-                                  -32143,-6365,-32143,-6365,-32143,-6365,-32143,-6365,
-                                  -32229,-5916,-32229,-5916,-32229,-5916,-32229,-5916,
-                                  -32309,-5465,-32309,-5465,-32309,-5465,-32309,-5465,
-                                  -32382,-5013,-32382,-5013,-32382,-5013,-32382,-5013,
-                                  -32449,-4561,-32449,-4561,-32449,-4561,-32449,-4561,
-                                  -32509,-4107,-32509,-4107,-32509,-4107,-32509,-4107,
-                                  -32563,-3653,-32563,-3653,-32563,-3653,-32563,-3653,
-                                  -32611,-3198,-32611,-3198,-32611,-3198,-32611,-3198,
-                                  -32653,-2742,-32653,-2742,-32653,-2742,-32653,-2742,
-                                  -32688,-2286,-32688,-2286,-32688,-2286,-32688,-2286,
-                                  -32716,-1830,-32716,-1830,-32716,-1830,-32716,-1830,
-                                  -32739,-1373,-32739,-1373,-32739,-1373,-32739,-1373,
-                                  -32755,-915,-32755,-915,-32755,-915,-32755,-915,
-                                  -32764,-458,-32764,-458,-32764,-458,-32764,-458,
-                                  -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                  -32764,457,-32764,457,-32764,457,-32764,457,
-                                  -32755,914,-32755,914,-32755,914,-32755,914,
-                                  -32739,1372,-32739,1372,-32739,1372,-32739,1372,
-                                  -32716,1829,-32716,1829,-32716,1829,-32716,1829,
-                                  -32688,2285,-32688,2285,-32688,2285,-32688,2285,
-                                  -32653,2741,-32653,2741,-32653,2741,-32653,2741,
-                                  -32611,3197,-32611,3197,-32611,3197,-32611,3197,
-                                  -32563,3652,-32563,3652,-32563,3652,-32563,3652,
-                                  -32509,4106,-32509,4106,-32509,4106,-32509,4106,
-                                  -32449,4560,-32449,4560,-32449,4560,-32449,4560,
-                                  -32382,5012,-32382,5012,-32382,5012,-32382,5012,
-                                  -32309,5464,-32309,5464,-32309,5464,-32309,5464,
-                                  -32229,5915,-32229,5915,-32229,5915,-32229,5915,
-                                  -32143,6364,-32143,6364,-32143,6364,-32143,6364,
-                                  -32051,6812,-32051,6812,-32051,6812,-32051,6812,
-                                  -31953,7259,-31953,7259,-31953,7259,-31953,7259,
-                                  -31849,7704,-31849,7704,-31849,7704,-31849,7704,
-                                  -31738,8148,-31738,8148,-31738,8148,-31738,8148,
-                                  -31621,8591,-31621,8591,-31621,8591,-31621,8591,
-                                  -31498,9031,-31498,9031,-31498,9031,-31498,9031,
-                                  -31369,9470,-31369,9470,-31369,9470,-31369,9470,
-                                  -31234,9907,-31234,9907,-31234,9907,-31234,9907,
-                                  -31092,10342,-31092,10342,-31092,10342,-31092,10342,
-                                  -30945,10775,-30945,10775,-30945,10775,-30945,10775,
-                                  -30791,11206,-30791,11206,-30791,11206,-30791,11206,
-                                  -30632,11635,-30632,11635,-30632,11635,-30632,11635,
-                                  -30466,12062,-30466,12062,-30466,12062,-30466,12062,
-                                  -30295,12486,-30295,12486,-30295,12486,-30295,12486,
-                                  -30118,12908,-30118,12908,-30118,12908,-30118,12908,
-                                  -29935,13327,-29935,13327,-29935,13327,-29935,13327,
-                                  -29746,13744,-29746,13744,-29746,13744,-29746,13744,
-                                  -29551,14158,-29551,14158,-29551,14158,-29551,14158,
-                                  -29350,14569,-29350,14569,-29350,14569,-29350,14569,
-                                  -29144,14977,-29144,14977,-29144,14977,-29144,14977,
-                                  -28932,15383,-28932,15383,-28932,15383,-28932,15383,
-                                  -28714,15785,-28714,15785,-28714,15785,-28714,15785,
-                                  -28491,16184,-28491,16184,-28491,16184,-28491,16184,
-                                  -28262,16581,-28262,16581,-28262,16581,-28262,16581,
-                                  -28028,16974,-28028,16974,-28028,16974,-28028,16974,
-                                  -27788,17363,-27788,17363,-27788,17363,-27788,17363,
-                                  -27543,17750,-27543,17750,-27543,17750,-27543,17750,
-                                  -27293,18132,-27293,18132,-27293,18132,-27293,18132,
-                                  -27037,18512,-27037,18512,-27037,18512,-27037,18512,
-                                  -26776,18887,-26776,18887,-26776,18887,-26776,18887,
-                                  -26510,19259,-26510,19259,-26510,19259,-26510,19259,
-                                  -26238,19628,-26238,19628,-26238,19628,-26238,19628,
-                                  -25961,19992,-25961,19992,-25961,19992,-25961,19992,
-                                  -25680,20353,-25680,20353,-25680,20353,-25680,20353,
-                                  -25393,20709,-25393,20709,-25393,20709,-25393,20709,
-                                  -25101,21062,-25101,21062,-25101,21062,-25101,21062,
-                                  -24805,21410,-24805,21410,-24805,21410,-24805,21410,
-                                  -24504,21754,-24504,21754,-24504,21754,-24504,21754,
-                                  -24197,22094,-24197,22094,-24197,22094,-24197,22094,
-                                  -23887,22430,-23887,22430,-23887,22430,-23887,22430,
-                                  -23571,22761,-23571,22761,-23571,22761,-23571,22761,
-                                  -23251,23088,-23251,23088,-23251,23088,-23251,23088,
-                                  -22926,23411,-22926,23411,-22926,23411,-22926,23411,
-                                  -22597,23728,-22597,23728,-22597,23728,-22597,23728,
-                                  -22264,24042,-22264,24042,-22264,24042,-22264,24042,
-                                  -21926,24350,-21926,24350,-21926,24350,-21926,24350,
-                                  -21584,24654,-21584,24654,-21584,24654,-21584,24654,
-                                  -21237,24953,-21237,24953,-21237,24953,-21237,24953,
-                                  -20887,25247,-20887,25247,-20887,25247,-20887,25247,
-                                  -20532,25536,-20532,25536,-20532,25536,-20532,25536,
-                                  -20174,25820,-20174,25820,-20174,25820,-20174,25820,
-                                  -19811,26099,-19811,26099,-19811,26099,-19811,26099,
-                                  -19445,26373,-19445,26373,-19445,26373,-19445,26373,
-                                  -19075,26642,-19075,26642,-19075,26642,-19075,26642,
-                                  -18701,26906,-18701,26906,-18701,26906,-18701,26906,
-                                  -18324,27165,-18324,27165,-18324,27165,-18324,27165,
-                                  -17943,27418,-17943,27418,-17943,27418,-17943,27418,
-                                  -17558,27666,-17558,27666,-17558,27666,-17558,27666,
-                                  -17170,27908,-17170,27908,-17170,27908,-17170,27908,
-                                  -16779,28145,-16779,28145,-16779,28145,-16779,28145
-                                 };
+static int16_t twa900[299*2*4];
+static int16_t twb900[299*2*4];
 
 void dft900(int16_t *x,int16_t *y,unsigned char scale_flag)  // 300 x 3
 {
@@ -14266,762 +8248,10 @@ void dft900(int16_t *x,int16_t *y,unsigned char scale_flag)  // 300 x 3
 };
 
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:239)/960));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:239)/960));
-twc = floor(32767*exp(-sqrt(-1)*2*pi*3*(1:239)/960));
-twa2 = zeros(1,2*239);
-twb2 = zeros(1,2*239);
-twc2 = zeros(1,2*239);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-twc2(1:2:end) = real(twc);
-twc2(2:2:end) = imag(twc);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa960[239*2*4] = {");
-for i=1:2:(2*238)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"\nstatic int16_t twb960[239*2*4] = {");
-for i=1:2:(2*238)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fprintf(fd,"\nstatic int16_t twc960[239*2*4] = {");
-for i=1:2:(2*238)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1));
-fclose(fd);
-*/
-static int16_t twa960[239*2*4] = {32766,-215,32766,-215,32766,-215,32766,-215,
-                                  32764,-429,32764,-429,32764,-429,32764,-429,
-                                  32760,-644,32760,-644,32760,-644,32760,-644,
-                                  32755,-858,32755,-858,32755,-858,32755,-858,
-                                  32749,-1073,32749,-1073,32749,-1073,32749,-1073,
-                                  32741,-1287,32741,-1287,32741,-1287,32741,-1287,
-                                  32732,-1501,32732,-1501,32732,-1501,32732,-1501,
-                                  32722,-1715,32722,-1715,32722,-1715,32722,-1715,
-                                  32710,-1930,32710,-1930,32710,-1930,32710,-1930,
-                                  32696,-2144,32696,-2144,32696,-2144,32696,-2144,
-                                  32682,-2358,32682,-2358,32682,-2358,32682,-2358,
-                                  32665,-2571,32665,-2571,32665,-2571,32665,-2571,
-                                  32648,-2785,32648,-2785,32648,-2785,32648,-2785,
-                                  32629,-2999,32629,-2999,32629,-2999,32629,-2999,
-                                  32609,-3212,32609,-3212,32609,-3212,32609,-3212,
-                                  32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                  32564,-3639,32564,-3639,32564,-3639,32564,-3639,
-                                  32539,-3852,32539,-3852,32539,-3852,32539,-3852,
-                                  32513,-4065,32513,-4065,32513,-4065,32513,-4065,
-                                  32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                  32457,-4490,32457,-4490,32457,-4490,32457,-4490,
-                                  32427,-4702,32427,-4702,32427,-4702,32427,-4702,
-                                  32396,-4914,32396,-4914,32396,-4914,32396,-4914,
-                                  32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                                  32329,-5338,32329,-5338,32329,-5338,32329,-5338,
-                                  32293,-5550,32293,-5550,32293,-5550,32293,-5550,
-                                  32256,-5761,32256,-5761,32256,-5761,32256,-5761,
-                                  32218,-5972,32218,-5972,32218,-5972,32218,-5972,
-                                  32178,-6183,32178,-6183,32178,-6183,32178,-6183,
-                                  32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                  32094,-6603,32094,-6603,32094,-6603,32094,-6603,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  32005,-7023,32005,-7023,32005,-7023,32005,-7023,
-                                  31959,-7232,31959,-7232,31959,-7232,31959,-7232,
-                                  31911,-7441,31911,-7441,31911,-7441,31911,-7441,
-                                  31861,-7650,31861,-7650,31861,-7650,31861,-7650,
-                                  31810,-7858,31810,-7858,31810,-7858,31810,-7858,
-                                  31758,-8066,31758,-8066,31758,-8066,31758,-8066,
-                                  31705,-8274,31705,-8274,31705,-8274,31705,-8274,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31594,-8688,31594,-8688,31594,-8688,31594,-8688,
-                                  31536,-8895,31536,-8895,31536,-8895,31536,-8895,
-                                  31477,-9101,31477,-9101,31477,-9101,31477,-9101,
-                                  31417,-9307,31417,-9307,31417,-9307,31417,-9307,
-                                  31356,-9512,31356,-9512,31356,-9512,31356,-9512,
-                                  31293,-9717,31293,-9717,31293,-9717,31293,-9717,
-                                  31228,-9922,31228,-9922,31228,-9922,31228,-9922,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  31096,-10330,31096,-10330,31096,-10330,31096,-10330,
-                                  31028,-10533,31028,-10533,31028,-10533,31028,-10533,
-                                  30958,-10736,30958,-10736,30958,-10736,30958,-10736,
-                                  30887,-10938,30887,-10938,30887,-10938,30887,-10938,
-                                  30815,-11140,30815,-11140,30815,-11140,30815,-11140,
-                                  30741,-11342,30741,-11342,30741,-11342,30741,-11342,
-                                  30666,-11543,30666,-11543,30666,-11543,30666,-11543,
-                                  30590,-11743,30590,-11743,30590,-11743,30590,-11743,
-                                  30513,-11943,30513,-11943,30513,-11943,30513,-11943,
-                                  30434,-12143,30434,-12143,30434,-12143,30434,-12143,
-                                  30354,-12341,30354,-12341,30354,-12341,30354,-12341,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  30190,-12738,30190,-12738,30190,-12738,30190,-12738,
-                                  30106,-12935,30106,-12935,30106,-12935,30106,-12935,
-                                  30020,-13132,30020,-13132,30020,-13132,30020,-13132,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29846,-13524,29846,-13524,29846,-13524,29846,-13524,
-                                  29757,-13719,29757,-13719,29757,-13719,29757,-13719,
-                                  29666,-13913,29666,-13913,29666,-13913,29666,-13913,
-                                  29575,-14107,29575,-14107,29575,-14107,29575,-14107,
-                                  29482,-14300,29482,-14300,29482,-14300,29482,-14300,
-                                  29387,-14493,29387,-14493,29387,-14493,29387,-14493,
-                                  29292,-14685,29292,-14685,29292,-14685,29292,-14685,
-                                  29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                                  29097,-15067,29097,-15067,29097,-15067,29097,-15067,
-                                  28998,-15257,28998,-15257,28998,-15257,28998,-15257,
-                                  28897,-15447,28897,-15447,28897,-15447,28897,-15447,
-                                  28796,-15636,28796,-15636,28796,-15636,28796,-15636,
-                                  28693,-15824,28693,-15824,28693,-15824,28693,-15824,
-                                  28589,-16011,28589,-16011,28589,-16011,28589,-16011,
-                                  28483,-16198,28483,-16198,28483,-16198,28483,-16198,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28269,-16569,28269,-16569,28269,-16569,28269,-16569,
-                                  28160,-16754,28160,-16754,28160,-16754,28160,-16754,
-                                  28049,-16938,28049,-16938,28049,-16938,28049,-16938,
-                                  27938,-17121,27938,-17121,27938,-17121,27938,-17121,
-                                  27825,-17304,27825,-17304,27825,-17304,27825,-17304,
-                                  27711,-17485,27711,-17485,27711,-17485,27711,-17485,
-                                  27596,-17666,27596,-17666,27596,-17666,27596,-17666,
-                                  27480,-17847,27480,-17847,27480,-17847,27480,-17847,
-                                  27363,-18026,27363,-18026,27363,-18026,27363,-18026,
-                                  27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                  27125,-18383,27125,-18383,27125,-18383,27125,-18383,
-                                  27004,-18560,27004,-18560,27004,-18560,27004,-18560,
-                                  26882,-18736,26882,-18736,26882,-18736,26882,-18736,
-                                  26758,-18912,26758,-18912,26758,-18912,26758,-18912,
-                                  26634,-19087,26634,-19087,26634,-19087,26634,-19087,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  26382,-19434,26382,-19434,26382,-19434,26382,-19434,
-                                  26254,-19606,26254,-19606,26254,-19606,26254,-19606,
-                                  26125,-19777,26125,-19777,26125,-19777,26125,-19777,
-                                  25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                  25864,-20117,25864,-20117,25864,-20117,25864,-20117,
-                                  25732,-20286,25732,-20286,25732,-20286,25732,-20286,
-                                  25599,-20454,25599,-20454,25599,-20454,25599,-20454,
-                                  25464,-20621,25464,-20621,25464,-20621,25464,-20621,
-                                  25329,-20788,25329,-20788,25329,-20788,25329,-20788,
-                                  25192,-20953,25192,-20953,25192,-20953,25192,-20953,
-                                  25054,-21117,25054,-21117,25054,-21117,25054,-21117,
-                                  24916,-21281,24916,-21281,24916,-21281,24916,-21281,
-                                  24776,-21444,24776,-21444,24776,-21444,24776,-21444,
-                                  24635,-21605,24635,-21605,24635,-21605,24635,-21605,
-                                  24493,-21766,24493,-21766,24493,-21766,24493,-21766,
-                                  24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                  24206,-22085,24206,-22085,24206,-22085,24206,-22085,
-                                  24061,-22243,24061,-22243,24061,-22243,24061,-22243,
-                                  23915,-22400,23915,-22400,23915,-22400,23915,-22400,
-                                  23768,-22556,23768,-22556,23768,-22556,23768,-22556,
-                                  23620,-22711,23620,-22711,23620,-22711,23620,-22711,
-                                  23471,-22865,23471,-22865,23471,-22865,23471,-22865,
-                                  23320,-23018,23320,-23018,23320,-23018,23320,-23018,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  23017,-23321,23017,-23321,23017,-23321,23017,-23321,
-                                  22864,-23472,22864,-23472,22864,-23472,22864,-23472,
-                                  22710,-23621,22710,-23621,22710,-23621,22710,-23621,
-                                  22555,-23769,22555,-23769,22555,-23769,22555,-23769,
-                                  22399,-23916,22399,-23916,22399,-23916,22399,-23916,
-                                  22242,-24062,22242,-24062,22242,-24062,22242,-24062,
-                                  22084,-24207,22084,-24207,22084,-24207,22084,-24207,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21765,-24494,21765,-24494,21765,-24494,21765,-24494,
-                                  21604,-24636,21604,-24636,21604,-24636,21604,-24636,
-                                  21443,-24777,21443,-24777,21443,-24777,21443,-24777,
-                                  21280,-24917,21280,-24917,21280,-24917,21280,-24917,
-                                  21116,-25055,21116,-25055,21116,-25055,21116,-25055,
-                                  20952,-25193,20952,-25193,20952,-25193,20952,-25193,
-                                  20787,-25330,20787,-25330,20787,-25330,20787,-25330,
-                                  20620,-25465,20620,-25465,20620,-25465,20620,-25465,
-                                  20453,-25600,20453,-25600,20453,-25600,20453,-25600,
-                                  20285,-25733,20285,-25733,20285,-25733,20285,-25733,
-                                  20116,-25865,20116,-25865,20116,-25865,20116,-25865,
-                                  19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                  19776,-26126,19776,-26126,19776,-26126,19776,-26126,
-                                  19605,-26255,19605,-26255,19605,-26255,19605,-26255,
-                                  19433,-26383,19433,-26383,19433,-26383,19433,-26383,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  19086,-26635,19086,-26635,19086,-26635,19086,-26635,
-                                  18911,-26759,18911,-26759,18911,-26759,18911,-26759,
-                                  18735,-26883,18735,-26883,18735,-26883,18735,-26883,
-                                  18559,-27005,18559,-27005,18559,-27005,18559,-27005,
-                                  18382,-27126,18382,-27126,18382,-27126,18382,-27126,
-                                  18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                  18025,-27364,18025,-27364,18025,-27364,18025,-27364,
-                                  17846,-27481,17846,-27481,17846,-27481,17846,-27481,
-                                  17665,-27597,17665,-27597,17665,-27597,17665,-27597,
-                                  17484,-27712,17484,-27712,17484,-27712,17484,-27712,
-                                  17303,-27826,17303,-27826,17303,-27826,17303,-27826,
-                                  17120,-27939,17120,-27939,17120,-27939,17120,-27939,
-                                  16937,-28050,16937,-28050,16937,-28050,16937,-28050,
-                                  16753,-28161,16753,-28161,16753,-28161,16753,-28161,
-                                  16568,-28270,16568,-28270,16568,-28270,16568,-28270,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  16197,-28484,16197,-28484,16197,-28484,16197,-28484,
-                                  16010,-28590,16010,-28590,16010,-28590,16010,-28590,
-                                  15823,-28694,15823,-28694,15823,-28694,15823,-28694,
-                                  15635,-28797,15635,-28797,15635,-28797,15635,-28797,
-                                  15446,-28898,15446,-28898,15446,-28898,15446,-28898,
-                                  15256,-28999,15256,-28999,15256,-28999,15256,-28999,
-                                  15066,-29098,15066,-29098,15066,-29098,15066,-29098,
-                                  14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                                  14684,-29293,14684,-29293,14684,-29293,14684,-29293,
-                                  14492,-29388,14492,-29388,14492,-29388,14492,-29388,
-                                  14299,-29483,14299,-29483,14299,-29483,14299,-29483,
-                                  14106,-29576,14106,-29576,14106,-29576,14106,-29576,
-                                  13912,-29667,13912,-29667,13912,-29667,13912,-29667,
-                                  13718,-29758,13718,-29758,13718,-29758,13718,-29758,
-                                  13523,-29847,13523,-29847,13523,-29847,13523,-29847,
-                                  13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                  13131,-30021,13131,-30021,13131,-30021,13131,-30021,
-                                  12934,-30107,12934,-30107,12934,-30107,12934,-30107,
-                                  12737,-30191,12737,-30191,12737,-30191,12737,-30191,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  12340,-30355,12340,-30355,12340,-30355,12340,-30355,
-                                  12142,-30435,12142,-30435,12142,-30435,12142,-30435,
-                                  11942,-30514,11942,-30514,11942,-30514,11942,-30514,
-                                  11742,-30591,11742,-30591,11742,-30591,11742,-30591,
-                                  11542,-30667,11542,-30667,11542,-30667,11542,-30667,
-                                  11341,-30742,11341,-30742,11341,-30742,11341,-30742,
-                                  11139,-30816,11139,-30816,11139,-30816,11139,-30816,
-                                  10937,-30888,10937,-30888,10937,-30888,10937,-30888,
-                                  10735,-30959,10735,-30959,10735,-30959,10735,-30959,
-                                  10532,-31029,10532,-31029,10532,-31029,10532,-31029,
-                                  10329,-31097,10329,-31097,10329,-31097,10329,-31097,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9921,-31229,9921,-31229,9921,-31229,9921,-31229,
-                                  9716,-31294,9716,-31294,9716,-31294,9716,-31294,
-                                  9511,-31357,9511,-31357,9511,-31357,9511,-31357,
-                                  9306,-31418,9306,-31418,9306,-31418,9306,-31418,
-                                  9100,-31478,9100,-31478,9100,-31478,9100,-31478,
-                                  8894,-31537,8894,-31537,8894,-31537,8894,-31537,
-                                  8687,-31595,8687,-31595,8687,-31595,8687,-31595,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  8273,-31706,8273,-31706,8273,-31706,8273,-31706,
-                                  8065,-31759,8065,-31759,8065,-31759,8065,-31759,
-                                  7857,-31811,7857,-31811,7857,-31811,7857,-31811,
-                                  7649,-31862,7649,-31862,7649,-31862,7649,-31862,
-                                  7440,-31912,7440,-31912,7440,-31912,7440,-31912,
-                                  7231,-31960,7231,-31960,7231,-31960,7231,-31960,
-                                  7022,-32006,7022,-32006,7022,-32006,7022,-32006,
-                                  6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                  6602,-32095,6602,-32095,6602,-32095,6602,-32095,
-                                  6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                  6182,-32179,6182,-32179,6182,-32179,6182,-32179,
-                                  5971,-32219,5971,-32219,5971,-32219,5971,-32219,
-                                  5760,-32257,5760,-32257,5760,-32257,5760,-32257,
-                                  5549,-32294,5549,-32294,5549,-32294,5549,-32294,
-                                  5337,-32330,5337,-32330,5337,-32330,5337,-32330,
-                                  5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                                  4913,-32397,4913,-32397,4913,-32397,4913,-32397,
-                                  4701,-32428,4701,-32428,4701,-32428,4701,-32428,
-                                  4489,-32458,4489,-32458,4489,-32458,4489,-32458,
-                                  4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                  4064,-32514,4064,-32514,4064,-32514,4064,-32514,
-                                  3851,-32540,3851,-32540,3851,-32540,3851,-32540,
-                                  3638,-32565,3638,-32565,3638,-32565,3638,-32565,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  3211,-32610,3211,-32610,3211,-32610,3211,-32610,
-                                  2998,-32630,2998,-32630,2998,-32630,2998,-32630,
-                                  2784,-32649,2784,-32649,2784,-32649,2784,-32649,
-                                  2570,-32666,2570,-32666,2570,-32666,2570,-32666,
-                                  2357,-32683,2357,-32683,2357,-32683,2357,-32683,
-                                  2143,-32697,2143,-32697,2143,-32697,2143,-32697,
-                                  1929,-32711,1929,-32711,1929,-32711,1929,-32711,
-                                  1714,-32723,1714,-32723,1714,-32723,1714,-32723,
-                                  1500,-32733,1500,-32733,1500,-32733,1500,-32733,
-                                  1286,-32742,1286,-32742,1286,-32742,1286,-32742,
-                                  1072,-32750,1072,-32750,1072,-32750,1072,-32750,
-                                  857,-32756,857,-32756,857,-32756,857,-32756,
-                                  643,-32761,643,-32761,643,-32761,643,-32761,
-                                  428,-32765,428,-32765,428,-32765,428,-32765,
-                                  214,-32767,214,-32767,214,-32767,214,-32767
-                                 };
-
-static int16_t twb960[239*2*4] = {32764,-429,32764,-429,32764,-429,32764,-429,
-                                  32755,-858,32755,-858,32755,-858,32755,-858,
-                                  32741,-1287,32741,-1287,32741,-1287,32741,-1287,
-                                  32722,-1715,32722,-1715,32722,-1715,32722,-1715,
-                                  32696,-2144,32696,-2144,32696,-2144,32696,-2144,
-                                  32665,-2571,32665,-2571,32665,-2571,32665,-2571,
-                                  32629,-2999,32629,-2999,32629,-2999,32629,-2999,
-                                  32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                  32539,-3852,32539,-3852,32539,-3852,32539,-3852,
-                                  32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                  32427,-4702,32427,-4702,32427,-4702,32427,-4702,
-                                  32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                                  32293,-5550,32293,-5550,32293,-5550,32293,-5550,
-                                  32218,-5972,32218,-5972,32218,-5972,32218,-5972,
-                                  32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                  32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                  31959,-7232,31959,-7232,31959,-7232,31959,-7232,
-                                  31861,-7650,31861,-7650,31861,-7650,31861,-7650,
-                                  31758,-8066,31758,-8066,31758,-8066,31758,-8066,
-                                  31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                  31536,-8895,31536,-8895,31536,-8895,31536,-8895,
-                                  31417,-9307,31417,-9307,31417,-9307,31417,-9307,
-                                  31293,-9717,31293,-9717,31293,-9717,31293,-9717,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  31028,-10533,31028,-10533,31028,-10533,31028,-10533,
-                                  30887,-10938,30887,-10938,30887,-10938,30887,-10938,
-                                  30741,-11342,30741,-11342,30741,-11342,30741,-11342,
-                                  30590,-11743,30590,-11743,30590,-11743,30590,-11743,
-                                  30434,-12143,30434,-12143,30434,-12143,30434,-12143,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  30106,-12935,30106,-12935,30106,-12935,30106,-12935,
-                                  29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                  29757,-13719,29757,-13719,29757,-13719,29757,-13719,
-                                  29575,-14107,29575,-14107,29575,-14107,29575,-14107,
-                                  29387,-14493,29387,-14493,29387,-14493,29387,-14493,
-                                  29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                                  28998,-15257,28998,-15257,28998,-15257,28998,-15257,
-                                  28796,-15636,28796,-15636,28796,-15636,28796,-15636,
-                                  28589,-16011,28589,-16011,28589,-16011,28589,-16011,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28160,-16754,28160,-16754,28160,-16754,28160,-16754,
-                                  27938,-17121,27938,-17121,27938,-17121,27938,-17121,
-                                  27711,-17485,27711,-17485,27711,-17485,27711,-17485,
-                                  27480,-17847,27480,-17847,27480,-17847,27480,-17847,
-                                  27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                  27004,-18560,27004,-18560,27004,-18560,27004,-18560,
-                                  26758,-18912,26758,-18912,26758,-18912,26758,-18912,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  26254,-19606,26254,-19606,26254,-19606,26254,-19606,
-                                  25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                  25732,-20286,25732,-20286,25732,-20286,25732,-20286,
-                                  25464,-20621,25464,-20621,25464,-20621,25464,-20621,
-                                  25192,-20953,25192,-20953,25192,-20953,25192,-20953,
-                                  24916,-21281,24916,-21281,24916,-21281,24916,-21281,
-                                  24635,-21605,24635,-21605,24635,-21605,24635,-21605,
-                                  24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                  24061,-22243,24061,-22243,24061,-22243,24061,-22243,
-                                  23768,-22556,23768,-22556,23768,-22556,23768,-22556,
-                                  23471,-22865,23471,-22865,23471,-22865,23471,-22865,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22864,-23472,22864,-23472,22864,-23472,22864,-23472,
-                                  22555,-23769,22555,-23769,22555,-23769,22555,-23769,
-                                  22242,-24062,22242,-24062,22242,-24062,22242,-24062,
-                                  21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                  21604,-24636,21604,-24636,21604,-24636,21604,-24636,
-                                  21280,-24917,21280,-24917,21280,-24917,21280,-24917,
-                                  20952,-25193,20952,-25193,20952,-25193,20952,-25193,
-                                  20620,-25465,20620,-25465,20620,-25465,20620,-25465,
-                                  20285,-25733,20285,-25733,20285,-25733,20285,-25733,
-                                  19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                  19605,-26255,19605,-26255,19605,-26255,19605,-26255,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  18911,-26759,18911,-26759,18911,-26759,18911,-26759,
-                                  18559,-27005,18559,-27005,18559,-27005,18559,-27005,
-                                  18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                  17846,-27481,17846,-27481,17846,-27481,17846,-27481,
-                                  17484,-27712,17484,-27712,17484,-27712,17484,-27712,
-                                  17120,-27939,17120,-27939,17120,-27939,17120,-27939,
-                                  16753,-28161,16753,-28161,16753,-28161,16753,-28161,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  16010,-28590,16010,-28590,16010,-28590,16010,-28590,
-                                  15635,-28797,15635,-28797,15635,-28797,15635,-28797,
-                                  15256,-28999,15256,-28999,15256,-28999,15256,-28999,
-                                  14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                                  14492,-29388,14492,-29388,14492,-29388,14492,-29388,
-                                  14106,-29576,14106,-29576,14106,-29576,14106,-29576,
-                                  13718,-29758,13718,-29758,13718,-29758,13718,-29758,
-                                  13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                  12934,-30107,12934,-30107,12934,-30107,12934,-30107,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  12142,-30435,12142,-30435,12142,-30435,12142,-30435,
-                                  11742,-30591,11742,-30591,11742,-30591,11742,-30591,
-                                  11341,-30742,11341,-30742,11341,-30742,11341,-30742,
-                                  10937,-30888,10937,-30888,10937,-30888,10937,-30888,
-                                  10532,-31029,10532,-31029,10532,-31029,10532,-31029,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9716,-31294,9716,-31294,9716,-31294,9716,-31294,
-                                  9306,-31418,9306,-31418,9306,-31418,9306,-31418,
-                                  8894,-31537,8894,-31537,8894,-31537,8894,-31537,
-                                  8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                  8065,-31759,8065,-31759,8065,-31759,8065,-31759,
-                                  7649,-31862,7649,-31862,7649,-31862,7649,-31862,
-                                  7231,-31960,7231,-31960,7231,-31960,7231,-31960,
-                                  6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                  6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                  5971,-32219,5971,-32219,5971,-32219,5971,-32219,
-                                  5549,-32294,5549,-32294,5549,-32294,5549,-32294,
-                                  5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                                  4701,-32428,4701,-32428,4701,-32428,4701,-32428,
-                                  4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                  3851,-32540,3851,-32540,3851,-32540,3851,-32540,
-                                  3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                  2998,-32630,2998,-32630,2998,-32630,2998,-32630,
-                                  2570,-32666,2570,-32666,2570,-32666,2570,-32666,
-                                  2143,-32697,2143,-32697,2143,-32697,2143,-32697,
-                                  1714,-32723,1714,-32723,1714,-32723,1714,-32723,
-                                  1286,-32742,1286,-32742,1286,-32742,1286,-32742,
-                                  857,-32756,857,-32756,857,-32756,857,-32756,
-                                  428,-32765,428,-32765,428,-32765,428,-32765,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -429,-32765,-429,-32765,-429,-32765,-429,-32765,
-                                  -858,-32756,-858,-32756,-858,-32756,-858,-32756,
-                                  -1287,-32742,-1287,-32742,-1287,-32742,-1287,-32742,
-                                  -1715,-32723,-1715,-32723,-1715,-32723,-1715,-32723,
-                                  -2144,-32697,-2144,-32697,-2144,-32697,-2144,-32697,
-                                  -2571,-32666,-2571,-32666,-2571,-32666,-2571,-32666,
-                                  -2999,-32630,-2999,-32630,-2999,-32630,-2999,-32630,
-                                  -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                  -3852,-32540,-3852,-32540,-3852,-32540,-3852,-32540,
-                                  -4277,-32487,-4277,-32487,-4277,-32487,-4277,-32487,
-                                  -4702,-32428,-4702,-32428,-4702,-32428,-4702,-32428,
-                                  -5126,-32364,-5126,-32364,-5126,-32364,-5126,-32364,
-                                  -5550,-32294,-5550,-32294,-5550,-32294,-5550,-32294,
-                                  -5972,-32219,-5972,-32219,-5972,-32219,-5972,-32219,
-                                  -6393,-32138,-6393,-32138,-6393,-32138,-6393,-32138,
-                                  -6813,-32051,-6813,-32051,-6813,-32051,-6813,-32051,
-                                  -7232,-31960,-7232,-31960,-7232,-31960,-7232,-31960,
-                                  -7650,-31862,-7650,-31862,-7650,-31862,-7650,-31862,
-                                  -8066,-31759,-8066,-31759,-8066,-31759,-8066,-31759,
-                                  -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                  -8895,-31537,-8895,-31537,-8895,-31537,-8895,-31537,
-                                  -9307,-31418,-9307,-31418,-9307,-31418,-9307,-31418,
-                                  -9717,-31294,-9717,-31294,-9717,-31294,-9717,-31294,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -10533,-31029,-10533,-31029,-10533,-31029,-10533,-31029,
-                                  -10938,-30888,-10938,-30888,-10938,-30888,-10938,-30888,
-                                  -11342,-30742,-11342,-30742,-11342,-30742,-11342,-30742,
-                                  -11743,-30591,-11743,-30591,-11743,-30591,-11743,-30591,
-                                  -12143,-30435,-12143,-30435,-12143,-30435,-12143,-30435,
-                                  -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                  -12935,-30107,-12935,-30107,-12935,-30107,-12935,-30107,
-                                  -13328,-29935,-13328,-29935,-13328,-29935,-13328,-29935,
-                                  -13719,-29758,-13719,-29758,-13719,-29758,-13719,-29758,
-                                  -14107,-29576,-14107,-29576,-14107,-29576,-14107,-29576,
-                                  -14493,-29388,-14493,-29388,-14493,-29388,-14493,-29388,
-                                  -14876,-29196,-14876,-29196,-14876,-29196,-14876,-29196,
-                                  -15257,-28999,-15257,-28999,-15257,-28999,-15257,-28999,
-                                  -15636,-28797,-15636,-28797,-15636,-28797,-15636,-28797,
-                                  -16011,-28590,-16011,-28590,-16011,-28590,-16011,-28590,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -16754,-28161,-16754,-28161,-16754,-28161,-16754,-28161,
-                                  -17121,-27939,-17121,-27939,-17121,-27939,-17121,-27939,
-                                  -17485,-27712,-17485,-27712,-17485,-27712,-17485,-27712,
-                                  -17847,-27481,-17847,-27481,-17847,-27481,-17847,-27481,
-                                  -18205,-27245,-18205,-27245,-18205,-27245,-18205,-27245,
-                                  -18560,-27005,-18560,-27005,-18560,-27005,-18560,-27005,
-                                  -18912,-26759,-18912,-26759,-18912,-26759,-18912,-26759,
-                                  -19260,-26510,-19260,-26510,-19260,-26510,-19260,-26510,
-                                  -19606,-26255,-19606,-26255,-19606,-26255,-19606,-26255,
-                                  -19948,-25996,-19948,-25996,-19948,-25996,-19948,-25996,
-                                  -20286,-25733,-20286,-25733,-20286,-25733,-20286,-25733,
-                                  -20621,-25465,-20621,-25465,-20621,-25465,-20621,-25465,
-                                  -20953,-25193,-20953,-25193,-20953,-25193,-20953,-25193,
-                                  -21281,-24917,-21281,-24917,-21281,-24917,-21281,-24917,
-                                  -21605,-24636,-21605,-24636,-21605,-24636,-21605,-24636,
-                                  -21926,-24351,-21926,-24351,-21926,-24351,-21926,-24351,
-                                  -22243,-24062,-22243,-24062,-22243,-24062,-22243,-24062,
-                                  -22556,-23769,-22556,-23769,-22556,-23769,-22556,-23769,
-                                  -22865,-23472,-22865,-23472,-22865,-23472,-22865,-23472,
-                                  -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                  -23472,-22865,-23472,-22865,-23472,-22865,-23472,-22865,
-                                  -23769,-22556,-23769,-22556,-23769,-22556,-23769,-22556,
-                                  -24062,-22243,-24062,-22243,-24062,-22243,-24062,-22243,
-                                  -24351,-21926,-24351,-21926,-24351,-21926,-24351,-21926,
-                                  -24636,-21605,-24636,-21605,-24636,-21605,-24636,-21605,
-                                  -24917,-21281,-24917,-21281,-24917,-21281,-24917,-21281,
-                                  -25193,-20953,-25193,-20953,-25193,-20953,-25193,-20953,
-                                  -25465,-20621,-25465,-20621,-25465,-20621,-25465,-20621,
-                                  -25733,-20286,-25733,-20286,-25733,-20286,-25733,-20286,
-                                  -25996,-19948,-25996,-19948,-25996,-19948,-25996,-19948,
-                                  -26255,-19606,-26255,-19606,-26255,-19606,-26255,-19606,
-                                  -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                                  -26759,-18912,-26759,-18912,-26759,-18912,-26759,-18912,
-                                  -27005,-18560,-27005,-18560,-27005,-18560,-27005,-18560,
-                                  -27245,-18205,-27245,-18205,-27245,-18205,-27245,-18205,
-                                  -27481,-17847,-27481,-17847,-27481,-17847,-27481,-17847,
-                                  -27712,-17485,-27712,-17485,-27712,-17485,-27712,-17485,
-                                  -27939,-17121,-27939,-17121,-27939,-17121,-27939,-17121,
-                                  -28161,-16754,-28161,-16754,-28161,-16754,-28161,-16754,
-                                  -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                  -28590,-16011,-28590,-16011,-28590,-16011,-28590,-16011,
-                                  -28797,-15636,-28797,-15636,-28797,-15636,-28797,-15636,
-                                  -28999,-15257,-28999,-15257,-28999,-15257,-28999,-15257,
-                                  -29196,-14876,-29196,-14876,-29196,-14876,-29196,-14876,
-                                  -29388,-14493,-29388,-14493,-29388,-14493,-29388,-14493,
-                                  -29576,-14107,-29576,-14107,-29576,-14107,-29576,-14107,
-                                  -29758,-13719,-29758,-13719,-29758,-13719,-29758,-13719,
-                                  -29935,-13328,-29935,-13328,-29935,-13328,-29935,-13328,
-                                  -30107,-12935,-30107,-12935,-30107,-12935,-30107,-12935,
-                                  -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                                  -30435,-12143,-30435,-12143,-30435,-12143,-30435,-12143,
-                                  -30591,-11743,-30591,-11743,-30591,-11743,-30591,-11743,
-                                  -30742,-11342,-30742,-11342,-30742,-11342,-30742,-11342,
-                                  -30888,-10938,-30888,-10938,-30888,-10938,-30888,-10938,
-                                  -31029,-10533,-31029,-10533,-31029,-10533,-31029,-10533,
-                                  -31164,-10126,-31164,-10126,-31164,-10126,-31164,-10126,
-                                  -31294,-9717,-31294,-9717,-31294,-9717,-31294,-9717,
-                                  -31418,-9307,-31418,-9307,-31418,-9307,-31418,-9307,
-                                  -31537,-8895,-31537,-8895,-31537,-8895,-31537,-8895,
-                                  -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                                  -31759,-8066,-31759,-8066,-31759,-8066,-31759,-8066,
-                                  -31862,-7650,-31862,-7650,-31862,-7650,-31862,-7650,
-                                  -31960,-7232,-31960,-7232,-31960,-7232,-31960,-7232,
-                                  -32051,-6813,-32051,-6813,-32051,-6813,-32051,-6813,
-                                  -32138,-6393,-32138,-6393,-32138,-6393,-32138,-6393,
-                                  -32219,-5972,-32219,-5972,-32219,-5972,-32219,-5972,
-                                  -32294,-5550,-32294,-5550,-32294,-5550,-32294,-5550,
-                                  -32364,-5126,-32364,-5126,-32364,-5126,-32364,-5126,
-                                  -32428,-4702,-32428,-4702,-32428,-4702,-32428,-4702,
-                                  -32487,-4277,-32487,-4277,-32487,-4277,-32487,-4277,
-                                  -32540,-3852,-32540,-3852,-32540,-3852,-32540,-3852,
-                                  -32588,-3426,-32588,-3426,-32588,-3426,-32588,-3426,
-                                  -32630,-2999,-32630,-2999,-32630,-2999,-32630,-2999,
-                                  -32666,-2571,-32666,-2571,-32666,-2571,-32666,-2571,
-                                  -32697,-2144,-32697,-2144,-32697,-2144,-32697,-2144,
-                                  -32723,-1715,-32723,-1715,-32723,-1715,-32723,-1715,
-                                  -32742,-1287,-32742,-1287,-32742,-1287,-32742,-1287,
-                                  -32756,-858,-32756,-858,-32756,-858,-32756,-858,
-                                  -32765,-429,-32765,-429,-32765,-429,-32765,-429
-                                 };
-
-static int16_t twc960[239*2*4] = {32760,-644,32760,-644,32760,-644,32760,-644,
-                                  32741,-1287,32741,-1287,32741,-1287,32741,-1287,
-                                  32710,-1930,32710,-1930,32710,-1930,32710,-1930,
-                                  32665,-2571,32665,-2571,32665,-2571,32665,-2571,
-                                  32609,-3212,32609,-3212,32609,-3212,32609,-3212,
-                                  32539,-3852,32539,-3852,32539,-3852,32539,-3852,
-                                  32457,-4490,32457,-4490,32457,-4490,32457,-4490,
-                                  32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                                  32256,-5761,32256,-5761,32256,-5761,32256,-5761,
-                                  32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                  32005,-7023,32005,-7023,32005,-7023,32005,-7023,
-                                  31861,-7650,31861,-7650,31861,-7650,31861,-7650,
-                                  31705,-8274,31705,-8274,31705,-8274,31705,-8274,
-                                  31536,-8895,31536,-8895,31536,-8895,31536,-8895,
-                                  31356,-9512,31356,-9512,31356,-9512,31356,-9512,
-                                  31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                  30958,-10736,30958,-10736,30958,-10736,30958,-10736,
-                                  30741,-11342,30741,-11342,30741,-11342,30741,-11342,
-                                  30513,-11943,30513,-11943,30513,-11943,30513,-11943,
-                                  30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                  30020,-13132,30020,-13132,30020,-13132,30020,-13132,
-                                  29757,-13719,29757,-13719,29757,-13719,29757,-13719,
-                                  29482,-14300,29482,-14300,29482,-14300,29482,-14300,
-                                  29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                                  28897,-15447,28897,-15447,28897,-15447,28897,-15447,
-                                  28589,-16011,28589,-16011,28589,-16011,28589,-16011,
-                                  28269,-16569,28269,-16569,28269,-16569,28269,-16569,
-                                  27938,-17121,27938,-17121,27938,-17121,27938,-17121,
-                                  27596,-17666,27596,-17666,27596,-17666,27596,-17666,
-                                  27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                  26882,-18736,26882,-18736,26882,-18736,26882,-18736,
-                                  26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                  26125,-19777,26125,-19777,26125,-19777,26125,-19777,
-                                  25732,-20286,25732,-20286,25732,-20286,25732,-20286,
-                                  25329,-20788,25329,-20788,25329,-20788,25329,-20788,
-                                  24916,-21281,24916,-21281,24916,-21281,24916,-21281,
-                                  24493,-21766,24493,-21766,24493,-21766,24493,-21766,
-                                  24061,-22243,24061,-22243,24061,-22243,24061,-22243,
-                                  23620,-22711,23620,-22711,23620,-22711,23620,-22711,
-                                  23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                  22710,-23621,22710,-23621,22710,-23621,22710,-23621,
-                                  22242,-24062,22242,-24062,22242,-24062,22242,-24062,
-                                  21765,-24494,21765,-24494,21765,-24494,21765,-24494,
-                                  21280,-24917,21280,-24917,21280,-24917,21280,-24917,
-                                  20787,-25330,20787,-25330,20787,-25330,20787,-25330,
-                                  20285,-25733,20285,-25733,20285,-25733,20285,-25733,
-                                  19776,-26126,19776,-26126,19776,-26126,19776,-26126,
-                                  19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                  18735,-26883,18735,-26883,18735,-26883,18735,-26883,
-                                  18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                  17665,-27597,17665,-27597,17665,-27597,17665,-27597,
-                                  17120,-27939,17120,-27939,17120,-27939,17120,-27939,
-                                  16568,-28270,16568,-28270,16568,-28270,16568,-28270,
-                                  16010,-28590,16010,-28590,16010,-28590,16010,-28590,
-                                  15446,-28898,15446,-28898,15446,-28898,15446,-28898,
-                                  14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                                  14299,-29483,14299,-29483,14299,-29483,14299,-29483,
-                                  13718,-29758,13718,-29758,13718,-29758,13718,-29758,
-                                  13131,-30021,13131,-30021,13131,-30021,13131,-30021,
-                                  12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                  11942,-30514,11942,-30514,11942,-30514,11942,-30514,
-                                  11341,-30742,11341,-30742,11341,-30742,11341,-30742,
-                                  10735,-30959,10735,-30959,10735,-30959,10735,-30959,
-                                  10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                  9511,-31357,9511,-31357,9511,-31357,9511,-31357,
-                                  8894,-31537,8894,-31537,8894,-31537,8894,-31537,
-                                  8273,-31706,8273,-31706,8273,-31706,8273,-31706,
-                                  7649,-31862,7649,-31862,7649,-31862,7649,-31862,
-                                  7022,-32006,7022,-32006,7022,-32006,7022,-32006,
-                                  6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                  5760,-32257,5760,-32257,5760,-32257,5760,-32257,
-                                  5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                                  4489,-32458,4489,-32458,4489,-32458,4489,-32458,
-                                  3851,-32540,3851,-32540,3851,-32540,3851,-32540,
-                                  3211,-32610,3211,-32610,3211,-32610,3211,-32610,
-                                  2570,-32666,2570,-32666,2570,-32666,2570,-32666,
-                                  1929,-32711,1929,-32711,1929,-32711,1929,-32711,
-                                  1286,-32742,1286,-32742,1286,-32742,1286,-32742,
-                                  643,-32761,643,-32761,643,-32761,643,-32761,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -644,-32761,-644,-32761,-644,-32761,-644,-32761,
-                                  -1287,-32742,-1287,-32742,-1287,-32742,-1287,-32742,
-                                  -1930,-32711,-1930,-32711,-1930,-32711,-1930,-32711,
-                                  -2571,-32666,-2571,-32666,-2571,-32666,-2571,-32666,
-                                  -3212,-32610,-3212,-32610,-3212,-32610,-3212,-32610,
-                                  -3852,-32540,-3852,-32540,-3852,-32540,-3852,-32540,
-                                  -4490,-32458,-4490,-32458,-4490,-32458,-4490,-32458,
-                                  -5126,-32364,-5126,-32364,-5126,-32364,-5126,-32364,
-                                  -5761,-32257,-5761,-32257,-5761,-32257,-5761,-32257,
-                                  -6393,-32138,-6393,-32138,-6393,-32138,-6393,-32138,
-                                  -7023,-32006,-7023,-32006,-7023,-32006,-7023,-32006,
-                                  -7650,-31862,-7650,-31862,-7650,-31862,-7650,-31862,
-                                  -8274,-31706,-8274,-31706,-8274,-31706,-8274,-31706,
-                                  -8895,-31537,-8895,-31537,-8895,-31537,-8895,-31537,
-                                  -9512,-31357,-9512,-31357,-9512,-31357,-9512,-31357,
-                                  -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                  -10736,-30959,-10736,-30959,-10736,-30959,-10736,-30959,
-                                  -11342,-30742,-11342,-30742,-11342,-30742,-11342,-30742,
-                                  -11943,-30514,-11943,-30514,-11943,-30514,-11943,-30514,
-                                  -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                  -13132,-30021,-13132,-30021,-13132,-30021,-13132,-30021,
-                                  -13719,-29758,-13719,-29758,-13719,-29758,-13719,-29758,
-                                  -14300,-29483,-14300,-29483,-14300,-29483,-14300,-29483,
-                                  -14876,-29196,-14876,-29196,-14876,-29196,-14876,-29196,
-                                  -15447,-28898,-15447,-28898,-15447,-28898,-15447,-28898,
-                                  -16011,-28590,-16011,-28590,-16011,-28590,-16011,-28590,
-                                  -16569,-28270,-16569,-28270,-16569,-28270,-16569,-28270,
-                                  -17121,-27939,-17121,-27939,-17121,-27939,-17121,-27939,
-                                  -17666,-27597,-17666,-27597,-17666,-27597,-17666,-27597,
-                                  -18205,-27245,-18205,-27245,-18205,-27245,-18205,-27245,
-                                  -18736,-26883,-18736,-26883,-18736,-26883,-18736,-26883,
-                                  -19260,-26510,-19260,-26510,-19260,-26510,-19260,-26510,
-                                  -19777,-26126,-19777,-26126,-19777,-26126,-19777,-26126,
-                                  -20286,-25733,-20286,-25733,-20286,-25733,-20286,-25733,
-                                  -20788,-25330,-20788,-25330,-20788,-25330,-20788,-25330,
-                                  -21281,-24917,-21281,-24917,-21281,-24917,-21281,-24917,
-                                  -21766,-24494,-21766,-24494,-21766,-24494,-21766,-24494,
-                                  -22243,-24062,-22243,-24062,-22243,-24062,-22243,-24062,
-                                  -22711,-23621,-22711,-23621,-22711,-23621,-22711,-23621,
-                                  -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                  -23621,-22711,-23621,-22711,-23621,-22711,-23621,-22711,
-                                  -24062,-22243,-24062,-22243,-24062,-22243,-24062,-22243,
-                                  -24494,-21766,-24494,-21766,-24494,-21766,-24494,-21766,
-                                  -24917,-21281,-24917,-21281,-24917,-21281,-24917,-21281,
-                                  -25330,-20788,-25330,-20788,-25330,-20788,-25330,-20788,
-                                  -25733,-20286,-25733,-20286,-25733,-20286,-25733,-20286,
-                                  -26126,-19777,-26126,-19777,-26126,-19777,-26126,-19777,
-                                  -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                                  -26883,-18736,-26883,-18736,-26883,-18736,-26883,-18736,
-                                  -27245,-18205,-27245,-18205,-27245,-18205,-27245,-18205,
-                                  -27597,-17666,-27597,-17666,-27597,-17666,-27597,-17666,
-                                  -27939,-17121,-27939,-17121,-27939,-17121,-27939,-17121,
-                                  -28270,-16569,-28270,-16569,-28270,-16569,-28270,-16569,
-                                  -28590,-16011,-28590,-16011,-28590,-16011,-28590,-16011,
-                                  -28898,-15447,-28898,-15447,-28898,-15447,-28898,-15447,
-                                  -29196,-14876,-29196,-14876,-29196,-14876,-29196,-14876,
-                                  -29483,-14300,-29483,-14300,-29483,-14300,-29483,-14300,
-                                  -29758,-13719,-29758,-13719,-29758,-13719,-29758,-13719,
-                                  -30021,-13132,-30021,-13132,-30021,-13132,-30021,-13132,
-                                  -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                                  -30514,-11943,-30514,-11943,-30514,-11943,-30514,-11943,
-                                  -30742,-11342,-30742,-11342,-30742,-11342,-30742,-11342,
-                                  -30959,-10736,-30959,-10736,-30959,-10736,-30959,-10736,
-                                  -31164,-10126,-31164,-10126,-31164,-10126,-31164,-10126,
-                                  -31357,-9512,-31357,-9512,-31357,-9512,-31357,-9512,
-                                  -31537,-8895,-31537,-8895,-31537,-8895,-31537,-8895,
-                                  -31706,-8274,-31706,-8274,-31706,-8274,-31706,-8274,
-                                  -31862,-7650,-31862,-7650,-31862,-7650,-31862,-7650,
-                                  -32006,-7023,-32006,-7023,-32006,-7023,-32006,-7023,
-                                  -32138,-6393,-32138,-6393,-32138,-6393,-32138,-6393,
-                                  -32257,-5761,-32257,-5761,-32257,-5761,-32257,-5761,
-                                  -32364,-5126,-32364,-5126,-32364,-5126,-32364,-5126,
-                                  -32458,-4490,-32458,-4490,-32458,-4490,-32458,-4490,
-                                  -32540,-3852,-32540,-3852,-32540,-3852,-32540,-3852,
-                                  -32610,-3212,-32610,-3212,-32610,-3212,-32610,-3212,
-                                  -32666,-2571,-32666,-2571,-32666,-2571,-32666,-2571,
-                                  -32711,-1930,-32711,-1930,-32711,-1930,-32711,-1930,
-                                  -32742,-1287,-32742,-1287,-32742,-1287,-32742,-1287,
-                                  -32761,-644,-32761,-644,-32761,-644,-32761,-644,
-                                  -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                  -32761,643,-32761,643,-32761,643,-32761,643,
-                                  -32742,1286,-32742,1286,-32742,1286,-32742,1286,
-                                  -32711,1929,-32711,1929,-32711,1929,-32711,1929,
-                                  -32666,2570,-32666,2570,-32666,2570,-32666,2570,
-                                  -32610,3211,-32610,3211,-32610,3211,-32610,3211,
-                                  -32540,3851,-32540,3851,-32540,3851,-32540,3851,
-                                  -32458,4489,-32458,4489,-32458,4489,-32458,4489,
-                                  -32364,5125,-32364,5125,-32364,5125,-32364,5125,
-                                  -32257,5760,-32257,5760,-32257,5760,-32257,5760,
-                                  -32138,6392,-32138,6392,-32138,6392,-32138,6392,
-                                  -32006,7022,-32006,7022,-32006,7022,-32006,7022,
-                                  -31862,7649,-31862,7649,-31862,7649,-31862,7649,
-                                  -31706,8273,-31706,8273,-31706,8273,-31706,8273,
-                                  -31537,8894,-31537,8894,-31537,8894,-31537,8894,
-                                  -31357,9511,-31357,9511,-31357,9511,-31357,9511,
-                                  -31164,10125,-31164,10125,-31164,10125,-31164,10125,
-                                  -30959,10735,-30959,10735,-30959,10735,-30959,10735,
-                                  -30742,11341,-30742,11341,-30742,11341,-30742,11341,
-                                  -30514,11942,-30514,11942,-30514,11942,-30514,11942,
-                                  -30273,12539,-30273,12539,-30273,12539,-30273,12539,
-                                  -30021,13131,-30021,13131,-30021,13131,-30021,13131,
-                                  -29758,13718,-29758,13718,-29758,13718,-29758,13718,
-                                  -29483,14299,-29483,14299,-29483,14299,-29483,14299,
-                                  -29196,14875,-29196,14875,-29196,14875,-29196,14875,
-                                  -28898,15446,-28898,15446,-28898,15446,-28898,15446,
-                                  -28590,16010,-28590,16010,-28590,16010,-28590,16010,
-                                  -28270,16568,-28270,16568,-28270,16568,-28270,16568,
-                                  -27939,17120,-27939,17120,-27939,17120,-27939,17120,
-                                  -27597,17665,-27597,17665,-27597,17665,-27597,17665,
-                                  -27245,18204,-27245,18204,-27245,18204,-27245,18204,
-                                  -26883,18735,-26883,18735,-26883,18735,-26883,18735,
-                                  -26510,19259,-26510,19259,-26510,19259,-26510,19259,
-                                  -26126,19776,-26126,19776,-26126,19776,-26126,19776,
-                                  -25733,20285,-25733,20285,-25733,20285,-25733,20285,
-                                  -25330,20787,-25330,20787,-25330,20787,-25330,20787,
-                                  -24917,21280,-24917,21280,-24917,21280,-24917,21280,
-                                  -24494,21765,-24494,21765,-24494,21765,-24494,21765,
-                                  -24062,22242,-24062,22242,-24062,22242,-24062,22242,
-                                  -23621,22710,-23621,22710,-23621,22710,-23621,22710,
-                                  -23170,23169,-23170,23169,-23170,23169,-23170,23169,
-                                  -22711,23620,-22711,23620,-22711,23620,-22711,23620,
-                                  -22243,24061,-22243,24061,-22243,24061,-22243,24061,
-                                  -21766,24493,-21766,24493,-21766,24493,-21766,24493,
-                                  -21281,24916,-21281,24916,-21281,24916,-21281,24916,
-                                  -20788,25329,-20788,25329,-20788,25329,-20788,25329,
-                                  -20286,25732,-20286,25732,-20286,25732,-20286,25732,
-                                  -19777,26125,-19777,26125,-19777,26125,-19777,26125,
-                                  -19260,26509,-19260,26509,-19260,26509,-19260,26509,
-                                  -18736,26882,-18736,26882,-18736,26882,-18736,26882,
-                                  -18205,27244,-18205,27244,-18205,27244,-18205,27244,
-                                  -17666,27596,-17666,27596,-17666,27596,-17666,27596,
-                                  -17121,27938,-17121,27938,-17121,27938,-17121,27938,
-                                  -16569,28269,-16569,28269,-16569,28269,-16569,28269,
-                                  -16011,28589,-16011,28589,-16011,28589,-16011,28589,
-                                  -15447,28897,-15447,28897,-15447,28897,-15447,28897,
-                                  -14876,29195,-14876,29195,-14876,29195,-14876,29195,
-                                  -14300,29482,-14300,29482,-14300,29482,-14300,29482,
-                                  -13719,29757,-13719,29757,-13719,29757,-13719,29757,
-                                  -13132,30020,-13132,30020,-13132,30020,-13132,30020,
-                                  -12540,30272,-12540,30272,-12540,30272,-12540,30272,
-                                  -11943,30513,-11943,30513,-11943,30513,-11943,30513,
-                                  -11342,30741,-11342,30741,-11342,30741,-11342,30741,
-                                  -10736,30958,-10736,30958,-10736,30958,-10736,30958,
-                                  -10126,31163,-10126,31163,-10126,31163,-10126,31163,
-                                  -9512,31356,-9512,31356,-9512,31356,-9512,31356,
-                                  -8895,31536,-8895,31536,-8895,31536,-8895,31536,
-                                  -8274,31705,-8274,31705,-8274,31705,-8274,31705,
-                                  -7650,31861,-7650,31861,-7650,31861,-7650,31861,
-                                  -7023,32005,-7023,32005,-7023,32005,-7023,32005,
-                                  -6393,32137,-6393,32137,-6393,32137,-6393,32137,
-                                  -5761,32256,-5761,32256,-5761,32256,-5761,32256,
-                                  -5126,32363,-5126,32363,-5126,32363,-5126,32363,
-                                  -4490,32457,-4490,32457,-4490,32457,-4490,32457,
-                                  -3852,32539,-3852,32539,-3852,32539,-3852,32539,
-                                  -3212,32609,-3212,32609,-3212,32609,-3212,32609,
-                                  -2571,32665,-2571,32665,-2571,32665,-2571,32665,
-                                  -1930,32710,-1930,32710,-1930,32710,-1930,32710,
-                                  -1287,32741,-1287,32741,-1287,32741,-1287,32741,
-                                  -644,32760,-644,32760,-644,32760,-644,32760
-                                 };
+static int16_t twa960[239*2*4];
+static int16_t twb960[239*2*4];
+static int16_t twc960[239*2*4];
+
 
 void dft960(int16_t *x,int16_t *y,unsigned char scale_flag)  // 240 x 4
 {
@@ -15077,678 +8307,9 @@ void dft960(int16_t *x,int16_t *y,unsigned char scale_flag)  // 240 x 4
 
 };
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:323)/972));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:323)/972));
-twa2 = zeros(1,2*323);
-twb2 = zeros(1,2*323);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa972[323*2*4] = {");
-for i=1:2:(2*322)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"static int16_t twb972[323*2*4] = {");
-for i=1:2:(2*322)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fclose(fd);
-*/
-static int16_t twa972[323*2*4] = {32766,-212,32766,-212,32766,-212,32766,-212,
-                                  32764,-424,32764,-424,32764,-424,32764,-424,
-                                  32760,-636,32760,-636,32760,-636,32760,-636,
-                                  32756,-848,32756,-848,32756,-848,32756,-848,
-                                  32749,-1059,32749,-1059,32749,-1059,32749,-1059,
-                                  32742,-1271,32742,-1271,32742,-1271,32742,-1271,
-                                  32733,-1483,32733,-1483,32733,-1483,32733,-1483,
-                                  32723,-1694,32723,-1694,32723,-1694,32723,-1694,
-                                  32711,-1906,32711,-1906,32711,-1906,32711,-1906,
-                                  32698,-2117,32698,-2117,32698,-2117,32698,-2117,
-                                  32684,-2328,32684,-2328,32684,-2328,32684,-2328,
-                                  32668,-2540,32668,-2540,32668,-2540,32668,-2540,
-                                  32651,-2751,32651,-2751,32651,-2751,32651,-2751,
-                                  32632,-2962,32632,-2962,32632,-2962,32632,-2962,
-                                  32613,-3173,32613,-3173,32613,-3173,32613,-3173,
-                                  32591,-3383,32591,-3383,32591,-3383,32591,-3383,
-                                  32569,-3594,32569,-3594,32569,-3594,32569,-3594,
-                                  32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                  32520,-4015,32520,-4015,32520,-4015,32520,-4015,
-                                  32493,-4225,32493,-4225,32493,-4225,32493,-4225,
-                                  32465,-4435,32465,-4435,32465,-4435,32465,-4435,
-                                  32436,-4645,32436,-4645,32436,-4645,32436,-4645,
-                                  32405,-4854,32405,-4854,32405,-4854,32405,-4854,
-                                  32373,-5064,32373,-5064,32373,-5064,32373,-5064,
-                                  32340,-5273,32340,-5273,32340,-5273,32340,-5273,
-                                  32305,-5482,32305,-5482,32305,-5482,32305,-5482,
-                                  32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                  32231,-5899,32231,-5899,32231,-5899,32231,-5899,
-                                  32192,-6107,32192,-6107,32192,-6107,32192,-6107,
-                                  32152,-6315,32152,-6315,32152,-6315,32152,-6315,
-                                  32111,-6523,32111,-6523,32111,-6523,32111,-6523,
-                                  32068,-6730,32068,-6730,32068,-6730,32068,-6730,
-                                  32024,-6937,32024,-6937,32024,-6937,32024,-6937,
-                                  31978,-7144,31978,-7144,31978,-7144,31978,-7144,
-                                  31931,-7351,31931,-7351,31931,-7351,31931,-7351,
-                                  31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                  31834,-7763,31834,-7763,31834,-7763,31834,-7763,
-                                  31783,-7969,31783,-7969,31783,-7969,31783,-7969,
-                                  31731,-8174,31731,-8174,31731,-8174,31731,-8174,
-                                  31677,-8379,31677,-8379,31677,-8379,31677,-8379,
-                                  31622,-8583,31622,-8583,31622,-8583,31622,-8583,
-                                  31566,-8788,31566,-8788,31566,-8788,31566,-8788,
-                                  31509,-8992,31509,-8992,31509,-8992,31509,-8992,
-                                  31450,-9195,31450,-9195,31450,-9195,31450,-9195,
-                                  31390,-9398,31390,-9398,31390,-9398,31390,-9398,
-                                  31329,-9601,31329,-9601,31329,-9601,31329,-9601,
-                                  31266,-9803,31266,-9803,31266,-9803,31266,-9803,
-                                  31202,-10005,31202,-10005,31202,-10005,31202,-10005,
-                                  31136,-10207,31136,-10207,31136,-10207,31136,-10207,
-                                  31070,-10408,31070,-10408,31070,-10408,31070,-10408,
-                                  31002,-10608,31002,-10608,31002,-10608,31002,-10608,
-                                  30933,-10808,30933,-10808,30933,-10808,30933,-10808,
-                                  30862,-11008,30862,-11008,30862,-11008,30862,-11008,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30717,-11406,30717,-11406,30717,-11406,30717,-11406,
-                                  30643,-11605,30643,-11605,30643,-11605,30643,-11605,
-                                  30567,-11802,30567,-11802,30567,-11802,30567,-11802,
-                                  30490,-12000,30490,-12000,30490,-12000,30490,-12000,
-                                  30412,-12197,30412,-12197,30412,-12197,30412,-12197,
-                                  30333,-12393,30333,-12393,30333,-12393,30333,-12393,
-                                  30252,-12589,30252,-12589,30252,-12589,30252,-12589,
-                                  30170,-12784,30170,-12784,30170,-12784,30170,-12784,
-                                  30087,-12979,30087,-12979,30087,-12979,30087,-12979,
-                                  30002,-13173,30002,-13173,30002,-13173,30002,-13173,
-                                  29916,-13367,29916,-13367,29916,-13367,29916,-13367,
-                                  29829,-13560,29829,-13560,29829,-13560,29829,-13560,
-                                  29741,-13752,29741,-13752,29741,-13752,29741,-13752,
-                                  29652,-13944,29652,-13944,29652,-13944,29652,-13944,
-                                  29561,-14136,29561,-14136,29561,-14136,29561,-14136,
-                                  29469,-14327,29469,-14327,29469,-14327,29469,-14327,
-                                  29376,-14517,29376,-14517,29376,-14517,29376,-14517,
-                                  29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                  29185,-14895,29185,-14895,29185,-14895,29185,-14895,
-                                  29089,-15084,29089,-15084,29089,-15084,29089,-15084,
-                                  28990,-15271,28990,-15271,28990,-15271,28990,-15271,
-                                  28891,-15458,28891,-15458,28891,-15458,28891,-15458,
-                                  28791,-15645,28791,-15645,28791,-15645,28791,-15645,
-                                  28689,-15831,28689,-15831,28689,-15831,28689,-15831,
-                                  28586,-16016,28586,-16016,28586,-16016,28586,-16016,
-                                  28482,-16200,28482,-16200,28482,-16200,28482,-16200,
-                                  28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                  28270,-16567,28270,-16567,28270,-16567,28270,-16567,
-                                  28162,-16749,28162,-16749,28162,-16749,28162,-16749,
-                                  28054,-16931,28054,-16931,28054,-16931,28054,-16931,
-                                  27943,-17112,27943,-17112,27943,-17112,27943,-17112,
-                                  27832,-17292,27832,-17292,27832,-17292,27832,-17292,
-                                  27720,-17472,27720,-17472,27720,-17472,27720,-17472,
-                                  27606,-17651,27606,-17651,27606,-17651,27606,-17651,
-                                  27492,-17829,27492,-17829,27492,-17829,27492,-17829,
-                                  27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                  27259,-18183,27259,-18183,27259,-18183,27259,-18183,
-                                  27141,-18359,27141,-18359,27141,-18359,27141,-18359,
-                                  27022,-18534,27022,-18534,27022,-18534,27022,-18534,
-                                  26901,-18708,26901,-18708,26901,-18708,26901,-18708,
-                                  26780,-18882,26780,-18882,26780,-18882,26780,-18882,
-                                  26657,-19054,26657,-19054,26657,-19054,26657,-19054,
-                                  26533,-19226,26533,-19226,26533,-19226,26533,-19226,
-                                  26409,-19397,26409,-19397,26409,-19397,26409,-19397,
-                                  26283,-19568,26283,-19568,26283,-19568,26283,-19568,
-                                  26156,-19737,26156,-19737,26156,-19737,26156,-19737,
-                                  26028,-19906,26028,-19906,26028,-19906,26028,-19906,
-                                  25898,-20074,25898,-20074,25898,-20074,25898,-20074,
-                                  25768,-20241,25768,-20241,25768,-20241,25768,-20241,
-                                  25637,-20407,25637,-20407,25637,-20407,25637,-20407,
-                                  25504,-20572,25504,-20572,25504,-20572,25504,-20572,
-                                  25371,-20736,25371,-20736,25371,-20736,25371,-20736,
-                                  25236,-20900,25236,-20900,25236,-20900,25236,-20900,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24964,-21225,24964,-21225,24964,-21225,24964,-21225,
-                                  24826,-21385,24826,-21385,24826,-21385,24826,-21385,
-                                  24687,-21546,24687,-21546,24687,-21546,24687,-21546,
-                                  24548,-21705,24548,-21705,24548,-21705,24548,-21705,
-                                  24407,-21863,24407,-21863,24407,-21863,24407,-21863,
-                                  24265,-22020,24265,-22020,24265,-22020,24265,-22020,
-                                  24122,-22177,24122,-22177,24122,-22177,24122,-22177,
-                                  23978,-22332,23978,-22332,23978,-22332,23978,-22332,
-                                  23833,-22487,23833,-22487,23833,-22487,23833,-22487,
-                                  23688,-22640,23688,-22640,23688,-22640,23688,-22640,
-                                  23541,-22793,23541,-22793,23541,-22793,23541,-22793,
-                                  23393,-22945,23393,-22945,23393,-22945,23393,-22945,
-                                  23244,-23095,23244,-23095,23244,-23095,23244,-23095,
-                                  23094,-23245,23094,-23245,23094,-23245,23094,-23245,
-                                  22944,-23394,22944,-23394,22944,-23394,22944,-23394,
-                                  22792,-23542,22792,-23542,22792,-23542,22792,-23542,
-                                  22639,-23689,22639,-23689,22639,-23689,22639,-23689,
-                                  22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                  22331,-23979,22331,-23979,22331,-23979,22331,-23979,
-                                  22176,-24123,22176,-24123,22176,-24123,22176,-24123,
-                                  22019,-24266,22019,-24266,22019,-24266,22019,-24266,
-                                  21862,-24408,21862,-24408,21862,-24408,21862,-24408,
-                                  21704,-24549,21704,-24549,21704,-24549,21704,-24549,
-                                  21545,-24688,21545,-24688,21545,-24688,21545,-24688,
-                                  21384,-24827,21384,-24827,21384,-24827,21384,-24827,
-                                  21224,-24965,21224,-24965,21224,-24965,21224,-24965,
-                                  21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                  20899,-25237,20899,-25237,20899,-25237,20899,-25237,
-                                  20735,-25372,20735,-25372,20735,-25372,20735,-25372,
-                                  20571,-25505,20571,-25505,20571,-25505,20571,-25505,
-                                  20406,-25638,20406,-25638,20406,-25638,20406,-25638,
-                                  20240,-25769,20240,-25769,20240,-25769,20240,-25769,
-                                  20073,-25899,20073,-25899,20073,-25899,20073,-25899,
-                                  19905,-26029,19905,-26029,19905,-26029,19905,-26029,
-                                  19736,-26157,19736,-26157,19736,-26157,19736,-26157,
-                                  19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                  19396,-26410,19396,-26410,19396,-26410,19396,-26410,
-                                  19225,-26534,19225,-26534,19225,-26534,19225,-26534,
-                                  19053,-26658,19053,-26658,19053,-26658,19053,-26658,
-                                  18881,-26781,18881,-26781,18881,-26781,18881,-26781,
-                                  18707,-26902,18707,-26902,18707,-26902,18707,-26902,
-                                  18533,-27023,18533,-27023,18533,-27023,18533,-27023,
-                                  18358,-27142,18358,-27142,18358,-27142,18358,-27142,
-                                  18182,-27260,18182,-27260,18182,-27260,18182,-27260,
-                                  18005,-27377,18005,-27377,18005,-27377,18005,-27377,
-                                  17828,-27493,17828,-27493,17828,-27493,17828,-27493,
-                                  17650,-27607,17650,-27607,17650,-27607,17650,-27607,
-                                  17471,-27721,17471,-27721,17471,-27721,17471,-27721,
-                                  17291,-27833,17291,-27833,17291,-27833,17291,-27833,
-                                  17111,-27944,17111,-27944,17111,-27944,17111,-27944,
-                                  16930,-28055,16930,-28055,16930,-28055,16930,-28055,
-                                  16748,-28163,16748,-28163,16748,-28163,16748,-28163,
-                                  16566,-28271,16566,-28271,16566,-28271,16566,-28271,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  16199,-28483,16199,-28483,16199,-28483,16199,-28483,
-                                  16015,-28587,16015,-28587,16015,-28587,16015,-28587,
-                                  15830,-28690,15830,-28690,15830,-28690,15830,-28690,
-                                  15644,-28792,15644,-28792,15644,-28792,15644,-28792,
-                                  15457,-28892,15457,-28892,15457,-28892,15457,-28892,
-                                  15270,-28991,15270,-28991,15270,-28991,15270,-28991,
-                                  15083,-29090,15083,-29090,15083,-29090,15083,-29090,
-                                  14894,-29186,14894,-29186,14894,-29186,14894,-29186,
-                                  14705,-29282,14705,-29282,14705,-29282,14705,-29282,
-                                  14516,-29377,14516,-29377,14516,-29377,14516,-29377,
-                                  14326,-29470,14326,-29470,14326,-29470,14326,-29470,
-                                  14135,-29562,14135,-29562,14135,-29562,14135,-29562,
-                                  13943,-29653,13943,-29653,13943,-29653,13943,-29653,
-                                  13751,-29742,13751,-29742,13751,-29742,13751,-29742,
-                                  13559,-29830,13559,-29830,13559,-29830,13559,-29830,
-                                  13366,-29917,13366,-29917,13366,-29917,13366,-29917,
-                                  13172,-30003,13172,-30003,13172,-30003,13172,-30003,
-                                  12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                  12783,-30171,12783,-30171,12783,-30171,12783,-30171,
-                                  12588,-30253,12588,-30253,12588,-30253,12588,-30253,
-                                  12392,-30334,12392,-30334,12392,-30334,12392,-30334,
-                                  12196,-30413,12196,-30413,12196,-30413,12196,-30413,
-                                  11999,-30491,11999,-30491,11999,-30491,11999,-30491,
-                                  11801,-30568,11801,-30568,11801,-30568,11801,-30568,
-                                  11604,-30644,11604,-30644,11604,-30644,11604,-30644,
-                                  11405,-30718,11405,-30718,11405,-30718,11405,-30718,
-                                  11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                  11007,-30863,11007,-30863,11007,-30863,11007,-30863,
-                                  10807,-30934,10807,-30934,10807,-30934,10807,-30934,
-                                  10607,-31003,10607,-31003,10607,-31003,10607,-31003,
-                                  10407,-31071,10407,-31071,10407,-31071,10407,-31071,
-                                  10206,-31137,10206,-31137,10206,-31137,10206,-31137,
-                                  10004,-31203,10004,-31203,10004,-31203,10004,-31203,
-                                  9802,-31267,9802,-31267,9802,-31267,9802,-31267,
-                                  9600,-31330,9600,-31330,9600,-31330,9600,-31330,
-                                  9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                  9194,-31451,9194,-31451,9194,-31451,9194,-31451,
-                                  8991,-31510,8991,-31510,8991,-31510,8991,-31510,
-                                  8787,-31567,8787,-31567,8787,-31567,8787,-31567,
-                                  8582,-31623,8582,-31623,8582,-31623,8582,-31623,
-                                  8378,-31678,8378,-31678,8378,-31678,8378,-31678,
-                                  8173,-31732,8173,-31732,8173,-31732,8173,-31732,
-                                  7968,-31784,7968,-31784,7968,-31784,7968,-31784,
-                                  7762,-31835,7762,-31835,7762,-31835,7762,-31835,
-                                  7556,-31884,7556,-31884,7556,-31884,7556,-31884,
-                                  7350,-31932,7350,-31932,7350,-31932,7350,-31932,
-                                  7143,-31979,7143,-31979,7143,-31979,7143,-31979,
-                                  6936,-32025,6936,-32025,6936,-32025,6936,-32025,
-                                  6729,-32069,6729,-32069,6729,-32069,6729,-32069,
-                                  6522,-32112,6522,-32112,6522,-32112,6522,-32112,
-                                  6314,-32153,6314,-32153,6314,-32153,6314,-32153,
-                                  6106,-32193,6106,-32193,6106,-32193,6106,-32193,
-                                  5898,-32232,5898,-32232,5898,-32232,5898,-32232,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5481,-32306,5481,-32306,5481,-32306,5481,-32306,
-                                  5272,-32341,5272,-32341,5272,-32341,5272,-32341,
-                                  5063,-32374,5063,-32374,5063,-32374,5063,-32374,
-                                  4853,-32406,4853,-32406,4853,-32406,4853,-32406,
-                                  4644,-32437,4644,-32437,4644,-32437,4644,-32437,
-                                  4434,-32466,4434,-32466,4434,-32466,4434,-32466,
-                                  4224,-32494,4224,-32494,4224,-32494,4224,-32494,
-                                  4014,-32521,4014,-32521,4014,-32521,4014,-32521,
-                                  3804,-32546,3804,-32546,3804,-32546,3804,-32546,
-                                  3593,-32570,3593,-32570,3593,-32570,3593,-32570,
-                                  3382,-32592,3382,-32592,3382,-32592,3382,-32592,
-                                  3172,-32614,3172,-32614,3172,-32614,3172,-32614,
-                                  2961,-32633,2961,-32633,2961,-32633,2961,-32633,
-                                  2750,-32652,2750,-32652,2750,-32652,2750,-32652,
-                                  2539,-32669,2539,-32669,2539,-32669,2539,-32669,
-                                  2327,-32685,2327,-32685,2327,-32685,2327,-32685,
-                                  2116,-32699,2116,-32699,2116,-32699,2116,-32699,
-                                  1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                  1693,-32724,1693,-32724,1693,-32724,1693,-32724,
-                                  1482,-32734,1482,-32734,1482,-32734,1482,-32734,
-                                  1270,-32743,1270,-32743,1270,-32743,1270,-32743,
-                                  1058,-32750,1058,-32750,1058,-32750,1058,-32750,
-                                  847,-32757,847,-32757,847,-32757,847,-32757,
-                                  635,-32761,635,-32761,635,-32761,635,-32761,
-                                  423,-32765,423,-32765,423,-32765,423,-32765,
-                                  211,-32767,211,-32767,211,-32767,211,-32767,
-                                  0,-32767,0,-32767,0,-32767,0,-32767,
-                                  -212,-32767,-212,-32767,-212,-32767,-212,-32767,
-                                  -424,-32765,-424,-32765,-424,-32765,-424,-32765,
-                                  -636,-32761,-636,-32761,-636,-32761,-636,-32761,
-                                  -848,-32757,-848,-32757,-848,-32757,-848,-32757,
-                                  -1059,-32750,-1059,-32750,-1059,-32750,-1059,-32750,
-                                  -1271,-32743,-1271,-32743,-1271,-32743,-1271,-32743,
-                                  -1483,-32734,-1483,-32734,-1483,-32734,-1483,-32734,
-                                  -1694,-32724,-1694,-32724,-1694,-32724,-1694,-32724,
-                                  -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                  -2117,-32699,-2117,-32699,-2117,-32699,-2117,-32699,
-                                  -2328,-32685,-2328,-32685,-2328,-32685,-2328,-32685,
-                                  -2540,-32669,-2540,-32669,-2540,-32669,-2540,-32669,
-                                  -2751,-32652,-2751,-32652,-2751,-32652,-2751,-32652,
-                                  -2962,-32633,-2962,-32633,-2962,-32633,-2962,-32633,
-                                  -3173,-32614,-3173,-32614,-3173,-32614,-3173,-32614,
-                                  -3383,-32592,-3383,-32592,-3383,-32592,-3383,-32592,
-                                  -3594,-32570,-3594,-32570,-3594,-32570,-3594,-32570,
-                                  -3805,-32546,-3805,-32546,-3805,-32546,-3805,-32546,
-                                  -4015,-32521,-4015,-32521,-4015,-32521,-4015,-32521,
-                                  -4225,-32494,-4225,-32494,-4225,-32494,-4225,-32494,
-                                  -4435,-32466,-4435,-32466,-4435,-32466,-4435,-32466,
-                                  -4645,-32437,-4645,-32437,-4645,-32437,-4645,-32437,
-                                  -4854,-32406,-4854,-32406,-4854,-32406,-4854,-32406,
-                                  -5064,-32374,-5064,-32374,-5064,-32374,-5064,-32374,
-                                  -5273,-32341,-5273,-32341,-5273,-32341,-5273,-32341,
-                                  -5482,-32306,-5482,-32306,-5482,-32306,-5482,-32306,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -5899,-32232,-5899,-32232,-5899,-32232,-5899,-32232,
-                                  -6107,-32193,-6107,-32193,-6107,-32193,-6107,-32193,
-                                  -6315,-32153,-6315,-32153,-6315,-32153,-6315,-32153,
-                                  -6523,-32112,-6523,-32112,-6523,-32112,-6523,-32112,
-                                  -6730,-32069,-6730,-32069,-6730,-32069,-6730,-32069,
-                                  -6937,-32025,-6937,-32025,-6937,-32025,-6937,-32025,
-                                  -7144,-31979,-7144,-31979,-7144,-31979,-7144,-31979,
-                                  -7351,-31932,-7351,-31932,-7351,-31932,-7351,-31932,
-                                  -7557,-31884,-7557,-31884,-7557,-31884,-7557,-31884,
-                                  -7763,-31835,-7763,-31835,-7763,-31835,-7763,-31835,
-                                  -7969,-31784,-7969,-31784,-7969,-31784,-7969,-31784,
-                                  -8174,-31732,-8174,-31732,-8174,-31732,-8174,-31732,
-                                  -8379,-31678,-8379,-31678,-8379,-31678,-8379,-31678,
-                                  -8583,-31623,-8583,-31623,-8583,-31623,-8583,-31623,
-                                  -8788,-31567,-8788,-31567,-8788,-31567,-8788,-31567,
-                                  -8992,-31510,-8992,-31510,-8992,-31510,-8992,-31510,
-                                  -9195,-31451,-9195,-31451,-9195,-31451,-9195,-31451,
-                                  -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                  -9601,-31330,-9601,-31330,-9601,-31330,-9601,-31330,
-                                  -9803,-31267,-9803,-31267,-9803,-31267,-9803,-31267,
-                                  -10005,-31203,-10005,-31203,-10005,-31203,-10005,-31203,
-                                  -10207,-31137,-10207,-31137,-10207,-31137,-10207,-31137,
-                                  -10408,-31071,-10408,-31071,-10408,-31071,-10408,-31071,
-                                  -10608,-31003,-10608,-31003,-10608,-31003,-10608,-31003,
-                                  -10808,-30934,-10808,-30934,-10808,-30934,-10808,-30934,
-                                  -11008,-30863,-11008,-30863,-11008,-30863,-11008,-30863,
-                                  -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                  -11406,-30718,-11406,-30718,-11406,-30718,-11406,-30718,
-                                  -11605,-30644,-11605,-30644,-11605,-30644,-11605,-30644,
-                                  -11802,-30568,-11802,-30568,-11802,-30568,-11802,-30568,
-                                  -12000,-30491,-12000,-30491,-12000,-30491,-12000,-30491,
-                                  -12197,-30413,-12197,-30413,-12197,-30413,-12197,-30413,
-                                  -12393,-30334,-12393,-30334,-12393,-30334,-12393,-30334,
-                                  -12589,-30253,-12589,-30253,-12589,-30253,-12589,-30253,
-                                  -12784,-30171,-12784,-30171,-12784,-30171,-12784,-30171,
-                                  -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                  -13173,-30003,-13173,-30003,-13173,-30003,-13173,-30003,
-                                  -13367,-29917,-13367,-29917,-13367,-29917,-13367,-29917,
-                                  -13560,-29830,-13560,-29830,-13560,-29830,-13560,-29830,
-                                  -13752,-29742,-13752,-29742,-13752,-29742,-13752,-29742,
-                                  -13944,-29653,-13944,-29653,-13944,-29653,-13944,-29653,
-                                  -14136,-29562,-14136,-29562,-14136,-29562,-14136,-29562,
-                                  -14327,-29470,-14327,-29470,-14327,-29470,-14327,-29470,
-                                  -14517,-29377,-14517,-29377,-14517,-29377,-14517,-29377,
-                                  -14706,-29282,-14706,-29282,-14706,-29282,-14706,-29282,
-                                  -14895,-29186,-14895,-29186,-14895,-29186,-14895,-29186,
-                                  -15084,-29090,-15084,-29090,-15084,-29090,-15084,-29090,
-                                  -15271,-28991,-15271,-28991,-15271,-28991,-15271,-28991,
-                                  -15458,-28892,-15458,-28892,-15458,-28892,-15458,-28892,
-                                  -15645,-28792,-15645,-28792,-15645,-28792,-15645,-28792,
-                                  -15831,-28690,-15831,-28690,-15831,-28690,-15831,-28690,
-                                  -16016,-28587,-16016,-28587,-16016,-28587,-16016,-28587,
-                                  -16200,-28483,-16200,-28483,-16200,-28483,-16200,-28483
-                                 };
-static int16_t twb972[323*2*4] = {32764,-424,32764,-424,32764,-424,32764,-424,
-                                  32756,-848,32756,-848,32756,-848,32756,-848,
-                                  32742,-1271,32742,-1271,32742,-1271,32742,-1271,
-                                  32723,-1694,32723,-1694,32723,-1694,32723,-1694,
-                                  32698,-2117,32698,-2117,32698,-2117,32698,-2117,
-                                  32668,-2540,32668,-2540,32668,-2540,32668,-2540,
-                                  32632,-2962,32632,-2962,32632,-2962,32632,-2962,
-                                  32591,-3383,32591,-3383,32591,-3383,32591,-3383,
-                                  32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                  32493,-4225,32493,-4225,32493,-4225,32493,-4225,
-                                  32436,-4645,32436,-4645,32436,-4645,32436,-4645,
-                                  32373,-5064,32373,-5064,32373,-5064,32373,-5064,
-                                  32305,-5482,32305,-5482,32305,-5482,32305,-5482,
-                                  32231,-5899,32231,-5899,32231,-5899,32231,-5899,
-                                  32152,-6315,32152,-6315,32152,-6315,32152,-6315,
-                                  32068,-6730,32068,-6730,32068,-6730,32068,-6730,
-                                  31978,-7144,31978,-7144,31978,-7144,31978,-7144,
-                                  31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                  31783,-7969,31783,-7969,31783,-7969,31783,-7969,
-                                  31677,-8379,31677,-8379,31677,-8379,31677,-8379,
-                                  31566,-8788,31566,-8788,31566,-8788,31566,-8788,
-                                  31450,-9195,31450,-9195,31450,-9195,31450,-9195,
-                                  31329,-9601,31329,-9601,31329,-9601,31329,-9601,
-                                  31202,-10005,31202,-10005,31202,-10005,31202,-10005,
-                                  31070,-10408,31070,-10408,31070,-10408,31070,-10408,
-                                  30933,-10808,30933,-10808,30933,-10808,30933,-10808,
-                                  30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                  30643,-11605,30643,-11605,30643,-11605,30643,-11605,
-                                  30490,-12000,30490,-12000,30490,-12000,30490,-12000,
-                                  30333,-12393,30333,-12393,30333,-12393,30333,-12393,
-                                  30170,-12784,30170,-12784,30170,-12784,30170,-12784,
-                                  30002,-13173,30002,-13173,30002,-13173,30002,-13173,
-                                  29829,-13560,29829,-13560,29829,-13560,29829,-13560,
-                                  29652,-13944,29652,-13944,29652,-13944,29652,-13944,
-                                  29469,-14327,29469,-14327,29469,-14327,29469,-14327,
-                                  29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                  29089,-15084,29089,-15084,29089,-15084,29089,-15084,
-                                  28891,-15458,28891,-15458,28891,-15458,28891,-15458,
-                                  28689,-15831,28689,-15831,28689,-15831,28689,-15831,
-                                  28482,-16200,28482,-16200,28482,-16200,28482,-16200,
-                                  28270,-16567,28270,-16567,28270,-16567,28270,-16567,
-                                  28054,-16931,28054,-16931,28054,-16931,28054,-16931,
-                                  27832,-17292,27832,-17292,27832,-17292,27832,-17292,
-                                  27606,-17651,27606,-17651,27606,-17651,27606,-17651,
-                                  27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                  27141,-18359,27141,-18359,27141,-18359,27141,-18359,
-                                  26901,-18708,26901,-18708,26901,-18708,26901,-18708,
-                                  26657,-19054,26657,-19054,26657,-19054,26657,-19054,
-                                  26409,-19397,26409,-19397,26409,-19397,26409,-19397,
-                                  26156,-19737,26156,-19737,26156,-19737,26156,-19737,
-                                  25898,-20074,25898,-20074,25898,-20074,25898,-20074,
-                                  25637,-20407,25637,-20407,25637,-20407,25637,-20407,
-                                  25371,-20736,25371,-20736,25371,-20736,25371,-20736,
-                                  25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                  24826,-21385,24826,-21385,24826,-21385,24826,-21385,
-                                  24548,-21705,24548,-21705,24548,-21705,24548,-21705,
-                                  24265,-22020,24265,-22020,24265,-22020,24265,-22020,
-                                  23978,-22332,23978,-22332,23978,-22332,23978,-22332,
-                                  23688,-22640,23688,-22640,23688,-22640,23688,-22640,
-                                  23393,-22945,23393,-22945,23393,-22945,23393,-22945,
-                                  23094,-23245,23094,-23245,23094,-23245,23094,-23245,
-                                  22792,-23542,22792,-23542,22792,-23542,22792,-23542,
-                                  22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                  22176,-24123,22176,-24123,22176,-24123,22176,-24123,
-                                  21862,-24408,21862,-24408,21862,-24408,21862,-24408,
-                                  21545,-24688,21545,-24688,21545,-24688,21545,-24688,
-                                  21224,-24965,21224,-24965,21224,-24965,21224,-24965,
-                                  20899,-25237,20899,-25237,20899,-25237,20899,-25237,
-                                  20571,-25505,20571,-25505,20571,-25505,20571,-25505,
-                                  20240,-25769,20240,-25769,20240,-25769,20240,-25769,
-                                  19905,-26029,19905,-26029,19905,-26029,19905,-26029,
-                                  19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                  19225,-26534,19225,-26534,19225,-26534,19225,-26534,
-                                  18881,-26781,18881,-26781,18881,-26781,18881,-26781,
-                                  18533,-27023,18533,-27023,18533,-27023,18533,-27023,
-                                  18182,-27260,18182,-27260,18182,-27260,18182,-27260,
-                                  17828,-27493,17828,-27493,17828,-27493,17828,-27493,
-                                  17471,-27721,17471,-27721,17471,-27721,17471,-27721,
-                                  17111,-27944,17111,-27944,17111,-27944,17111,-27944,
-                                  16748,-28163,16748,-28163,16748,-28163,16748,-28163,
-                                  16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                  16015,-28587,16015,-28587,16015,-28587,16015,-28587,
-                                  15644,-28792,15644,-28792,15644,-28792,15644,-28792,
-                                  15270,-28991,15270,-28991,15270,-28991,15270,-28991,
-                                  14894,-29186,14894,-29186,14894,-29186,14894,-29186,
-                                  14516,-29377,14516,-29377,14516,-29377,14516,-29377,
-                                  14135,-29562,14135,-29562,14135,-29562,14135,-29562,
-                                  13751,-29742,13751,-29742,13751,-29742,13751,-29742,
-                                  13366,-29917,13366,-29917,13366,-29917,13366,-29917,
-                                  12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                  12588,-30253,12588,-30253,12588,-30253,12588,-30253,
-                                  12196,-30413,12196,-30413,12196,-30413,12196,-30413,
-                                  11801,-30568,11801,-30568,11801,-30568,11801,-30568,
-                                  11405,-30718,11405,-30718,11405,-30718,11405,-30718,
-                                  11007,-30863,11007,-30863,11007,-30863,11007,-30863,
-                                  10607,-31003,10607,-31003,10607,-31003,10607,-31003,
-                                  10206,-31137,10206,-31137,10206,-31137,10206,-31137,
-                                  9802,-31267,9802,-31267,9802,-31267,9802,-31267,
-                                  9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                  8991,-31510,8991,-31510,8991,-31510,8991,-31510,
-                                  8582,-31623,8582,-31623,8582,-31623,8582,-31623,
-                                  8173,-31732,8173,-31732,8173,-31732,8173,-31732,
-                                  7762,-31835,7762,-31835,7762,-31835,7762,-31835,
-                                  7350,-31932,7350,-31932,7350,-31932,7350,-31932,
-                                  6936,-32025,6936,-32025,6936,-32025,6936,-32025,
-                                  6522,-32112,6522,-32112,6522,-32112,6522,-32112,
-                                  6106,-32193,6106,-32193,6106,-32193,6106,-32193,
-                                  5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                  5272,-32341,5272,-32341,5272,-32341,5272,-32341,
-                                  4853,-32406,4853,-32406,4853,-32406,4853,-32406,
-                                  4434,-32466,4434,-32466,4434,-32466,4434,-32466,
-                                  4014,-32521,4014,-32521,4014,-32521,4014,-32521,
-                                  3593,-32570,3593,-32570,3593,-32570,3593,-32570,
-                                  3172,-32614,3172,-32614,3172,-32614,3172,-32614,
-                                  2750,-32652,2750,-32652,2750,-32652,2750,-32652,
-                                  2327,-32685,2327,-32685,2327,-32685,2327,-32685,
-                                  1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                  1482,-32734,1482,-32734,1482,-32734,1482,-32734,
-                                  1058,-32750,1058,-32750,1058,-32750,1058,-32750,
-                                  635,-32761,635,-32761,635,-32761,635,-32761,
-                                  211,-32767,211,-32767,211,-32767,211,-32767,
-                                  -212,-32767,-212,-32767,-212,-32767,-212,-32767,
-                                  -636,-32761,-636,-32761,-636,-32761,-636,-32761,
-                                  -1059,-32750,-1059,-32750,-1059,-32750,-1059,-32750,
-                                  -1483,-32734,-1483,-32734,-1483,-32734,-1483,-32734,
-                                  -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                  -2328,-32685,-2328,-32685,-2328,-32685,-2328,-32685,
-                                  -2751,-32652,-2751,-32652,-2751,-32652,-2751,-32652,
-                                  -3173,-32614,-3173,-32614,-3173,-32614,-3173,-32614,
-                                  -3594,-32570,-3594,-32570,-3594,-32570,-3594,-32570,
-                                  -4015,-32521,-4015,-32521,-4015,-32521,-4015,-32521,
-                                  -4435,-32466,-4435,-32466,-4435,-32466,-4435,-32466,
-                                  -4854,-32406,-4854,-32406,-4854,-32406,-4854,-32406,
-                                  -5273,-32341,-5273,-32341,-5273,-32341,-5273,-32341,
-                                  -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                  -6107,-32193,-6107,-32193,-6107,-32193,-6107,-32193,
-                                  -6523,-32112,-6523,-32112,-6523,-32112,-6523,-32112,
-                                  -6937,-32025,-6937,-32025,-6937,-32025,-6937,-32025,
-                                  -7351,-31932,-7351,-31932,-7351,-31932,-7351,-31932,
-                                  -7763,-31835,-7763,-31835,-7763,-31835,-7763,-31835,
-                                  -8174,-31732,-8174,-31732,-8174,-31732,-8174,-31732,
-                                  -8583,-31623,-8583,-31623,-8583,-31623,-8583,-31623,
-                                  -8992,-31510,-8992,-31510,-8992,-31510,-8992,-31510,
-                                  -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                  -9803,-31267,-9803,-31267,-9803,-31267,-9803,-31267,
-                                  -10207,-31137,-10207,-31137,-10207,-31137,-10207,-31137,
-                                  -10608,-31003,-10608,-31003,-10608,-31003,-10608,-31003,
-                                  -11008,-30863,-11008,-30863,-11008,-30863,-11008,-30863,
-                                  -11406,-30718,-11406,-30718,-11406,-30718,-11406,-30718,
-                                  -11802,-30568,-11802,-30568,-11802,-30568,-11802,-30568,
-                                  -12197,-30413,-12197,-30413,-12197,-30413,-12197,-30413,
-                                  -12589,-30253,-12589,-30253,-12589,-30253,-12589,-30253,
-                                  -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                  -13367,-29917,-13367,-29917,-13367,-29917,-13367,-29917,
-                                  -13752,-29742,-13752,-29742,-13752,-29742,-13752,-29742,
-                                  -14136,-29562,-14136,-29562,-14136,-29562,-14136,-29562,
-                                  -14517,-29377,-14517,-29377,-14517,-29377,-14517,-29377,
-                                  -14895,-29186,-14895,-29186,-14895,-29186,-14895,-29186,
-                                  -15271,-28991,-15271,-28991,-15271,-28991,-15271,-28991,
-                                  -15645,-28792,-15645,-28792,-15645,-28792,-15645,-28792,
-                                  -16016,-28587,-16016,-28587,-16016,-28587,-16016,-28587,
-                                  -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                  -16749,-28163,-16749,-28163,-16749,-28163,-16749,-28163,
-                                  -17112,-27944,-17112,-27944,-17112,-27944,-17112,-27944,
-                                  -17472,-27721,-17472,-27721,-17472,-27721,-17472,-27721,
-                                  -17829,-27493,-17829,-27493,-17829,-27493,-17829,-27493,
-                                  -18183,-27260,-18183,-27260,-18183,-27260,-18183,-27260,
-                                  -18534,-27023,-18534,-27023,-18534,-27023,-18534,-27023,
-                                  -18882,-26781,-18882,-26781,-18882,-26781,-18882,-26781,
-                                  -19226,-26534,-19226,-26534,-19226,-26534,-19226,-26534,
-                                  -19568,-26284,-19568,-26284,-19568,-26284,-19568,-26284,
-                                  -19906,-26029,-19906,-26029,-19906,-26029,-19906,-26029,
-                                  -20241,-25769,-20241,-25769,-20241,-25769,-20241,-25769,
-                                  -20572,-25505,-20572,-25505,-20572,-25505,-20572,-25505,
-                                  -20900,-25237,-20900,-25237,-20900,-25237,-20900,-25237,
-                                  -21225,-24965,-21225,-24965,-21225,-24965,-21225,-24965,
-                                  -21546,-24688,-21546,-24688,-21546,-24688,-21546,-24688,
-                                  -21863,-24408,-21863,-24408,-21863,-24408,-21863,-24408,
-                                  -22177,-24123,-22177,-24123,-22177,-24123,-22177,-24123,
-                                  -22487,-23834,-22487,-23834,-22487,-23834,-22487,-23834,
-                                  -22793,-23542,-22793,-23542,-22793,-23542,-22793,-23542,
-                                  -23095,-23245,-23095,-23245,-23095,-23245,-23095,-23245,
-                                  -23394,-22945,-23394,-22945,-23394,-22945,-23394,-22945,
-                                  -23689,-22640,-23689,-22640,-23689,-22640,-23689,-22640,
-                                  -23979,-22332,-23979,-22332,-23979,-22332,-23979,-22332,
-                                  -24266,-22020,-24266,-22020,-24266,-22020,-24266,-22020,
-                                  -24549,-21705,-24549,-21705,-24549,-21705,-24549,-21705,
-                                  -24827,-21385,-24827,-21385,-24827,-21385,-24827,-21385,
-                                  -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                  -25372,-20736,-25372,-20736,-25372,-20736,-25372,-20736,
-                                  -25638,-20407,-25638,-20407,-25638,-20407,-25638,-20407,
-                                  -25899,-20074,-25899,-20074,-25899,-20074,-25899,-20074,
-                                  -26157,-19737,-26157,-19737,-26157,-19737,-26157,-19737,
-                                  -26410,-19397,-26410,-19397,-26410,-19397,-26410,-19397,
-                                  -26658,-19054,-26658,-19054,-26658,-19054,-26658,-19054,
-                                  -26902,-18708,-26902,-18708,-26902,-18708,-26902,-18708,
-                                  -27142,-18359,-27142,-18359,-27142,-18359,-27142,-18359,
-                                  -27377,-18006,-27377,-18006,-27377,-18006,-27377,-18006,
-                                  -27607,-17651,-27607,-17651,-27607,-17651,-27607,-17651,
-                                  -27833,-17292,-27833,-17292,-27833,-17292,-27833,-17292,
-                                  -28055,-16931,-28055,-16931,-28055,-16931,-28055,-16931,
-                                  -28271,-16567,-28271,-16567,-28271,-16567,-28271,-16567,
-                                  -28483,-16200,-28483,-16200,-28483,-16200,-28483,-16200,
-                                  -28690,-15831,-28690,-15831,-28690,-15831,-28690,-15831,
-                                  -28892,-15458,-28892,-15458,-28892,-15458,-28892,-15458,
-                                  -29090,-15084,-29090,-15084,-29090,-15084,-29090,-15084,
-                                  -29282,-14706,-29282,-14706,-29282,-14706,-29282,-14706,
-                                  -29470,-14327,-29470,-14327,-29470,-14327,-29470,-14327,
-                                  -29653,-13944,-29653,-13944,-29653,-13944,-29653,-13944,
-                                  -29830,-13560,-29830,-13560,-29830,-13560,-29830,-13560,
-                                  -30003,-13173,-30003,-13173,-30003,-13173,-30003,-13173,
-                                  -30171,-12784,-30171,-12784,-30171,-12784,-30171,-12784,
-                                  -30334,-12393,-30334,-12393,-30334,-12393,-30334,-12393,
-                                  -30491,-12000,-30491,-12000,-30491,-12000,-30491,-12000,
-                                  -30644,-11605,-30644,-11605,-30644,-11605,-30644,-11605,
-                                  -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                  -30934,-10808,-30934,-10808,-30934,-10808,-30934,-10808,
-                                  -31071,-10408,-31071,-10408,-31071,-10408,-31071,-10408,
-                                  -31203,-10005,-31203,-10005,-31203,-10005,-31203,-10005,
-                                  -31330,-9601,-31330,-9601,-31330,-9601,-31330,-9601,
-                                  -31451,-9195,-31451,-9195,-31451,-9195,-31451,-9195,
-                                  -31567,-8788,-31567,-8788,-31567,-8788,-31567,-8788,
-                                  -31678,-8379,-31678,-8379,-31678,-8379,-31678,-8379,
-                                  -31784,-7969,-31784,-7969,-31784,-7969,-31784,-7969,
-                                  -31884,-7557,-31884,-7557,-31884,-7557,-31884,-7557,
-                                  -31979,-7144,-31979,-7144,-31979,-7144,-31979,-7144,
-                                  -32069,-6730,-32069,-6730,-32069,-6730,-32069,-6730,
-                                  -32153,-6315,-32153,-6315,-32153,-6315,-32153,-6315,
-                                  -32232,-5899,-32232,-5899,-32232,-5899,-32232,-5899,
-                                  -32306,-5482,-32306,-5482,-32306,-5482,-32306,-5482,
-                                  -32374,-5064,-32374,-5064,-32374,-5064,-32374,-5064,
-                                  -32437,-4645,-32437,-4645,-32437,-4645,-32437,-4645,
-                                  -32494,-4225,-32494,-4225,-32494,-4225,-32494,-4225,
-                                  -32546,-3805,-32546,-3805,-32546,-3805,-32546,-3805,
-                                  -32592,-3383,-32592,-3383,-32592,-3383,-32592,-3383,
-                                  -32633,-2962,-32633,-2962,-32633,-2962,-32633,-2962,
-                                  -32669,-2540,-32669,-2540,-32669,-2540,-32669,-2540,
-                                  -32699,-2117,-32699,-2117,-32699,-2117,-32699,-2117,
-                                  -32724,-1694,-32724,-1694,-32724,-1694,-32724,-1694,
-                                  -32743,-1271,-32743,-1271,-32743,-1271,-32743,-1271,
-                                  -32757,-848,-32757,-848,-32757,-848,-32757,-848,
-                                  -32765,-424,-32765,-424,-32765,-424,-32765,-424,
-                                  -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                  -32765,423,-32765,423,-32765,423,-32765,423,
-                                  -32757,847,-32757,847,-32757,847,-32757,847,
-                                  -32743,1270,-32743,1270,-32743,1270,-32743,1270,
-                                  -32724,1693,-32724,1693,-32724,1693,-32724,1693,
-                                  -32699,2116,-32699,2116,-32699,2116,-32699,2116,
-                                  -32669,2539,-32669,2539,-32669,2539,-32669,2539,
-                                  -32633,2961,-32633,2961,-32633,2961,-32633,2961,
-                                  -32592,3382,-32592,3382,-32592,3382,-32592,3382,
-                                  -32546,3804,-32546,3804,-32546,3804,-32546,3804,
-                                  -32494,4224,-32494,4224,-32494,4224,-32494,4224,
-                                  -32437,4644,-32437,4644,-32437,4644,-32437,4644,
-                                  -32374,5063,-32374,5063,-32374,5063,-32374,5063,
-                                  -32306,5481,-32306,5481,-32306,5481,-32306,5481,
-                                  -32232,5898,-32232,5898,-32232,5898,-32232,5898,
-                                  -32153,6314,-32153,6314,-32153,6314,-32153,6314,
-                                  -32069,6729,-32069,6729,-32069,6729,-32069,6729,
-                                  -31979,7143,-31979,7143,-31979,7143,-31979,7143,
-                                  -31884,7556,-31884,7556,-31884,7556,-31884,7556,
-                                  -31784,7968,-31784,7968,-31784,7968,-31784,7968,
-                                  -31678,8378,-31678,8378,-31678,8378,-31678,8378,
-                                  -31567,8787,-31567,8787,-31567,8787,-31567,8787,
-                                  -31451,9194,-31451,9194,-31451,9194,-31451,9194,
-                                  -31330,9600,-31330,9600,-31330,9600,-31330,9600,
-                                  -31203,10004,-31203,10004,-31203,10004,-31203,10004,
-                                  -31071,10407,-31071,10407,-31071,10407,-31071,10407,
-                                  -30934,10807,-30934,10807,-30934,10807,-30934,10807,
-                                  -30791,11206,-30791,11206,-30791,11206,-30791,11206,
-                                  -30644,11604,-30644,11604,-30644,11604,-30644,11604,
-                                  -30491,11999,-30491,11999,-30491,11999,-30491,11999,
-                                  -30334,12392,-30334,12392,-30334,12392,-30334,12392,
-                                  -30171,12783,-30171,12783,-30171,12783,-30171,12783,
-                                  -30003,13172,-30003,13172,-30003,13172,-30003,13172,
-                                  -29830,13559,-29830,13559,-29830,13559,-29830,13559,
-                                  -29653,13943,-29653,13943,-29653,13943,-29653,13943,
-                                  -29470,14326,-29470,14326,-29470,14326,-29470,14326,
-                                  -29282,14705,-29282,14705,-29282,14705,-29282,14705,
-                                  -29090,15083,-29090,15083,-29090,15083,-29090,15083,
-                                  -28892,15457,-28892,15457,-28892,15457,-28892,15457,
-                                  -28690,15830,-28690,15830,-28690,15830,-28690,15830,
-                                  -28483,16199,-28483,16199,-28483,16199,-28483,16199,
-                                  -28271,16566,-28271,16566,-28271,16566,-28271,16566,
-                                  -28055,16930,-28055,16930,-28055,16930,-28055,16930,
-                                  -27833,17291,-27833,17291,-27833,17291,-27833,17291,
-                                  -27607,17650,-27607,17650,-27607,17650,-27607,17650,
-                                  -27377,18005,-27377,18005,-27377,18005,-27377,18005,
-                                  -27142,18358,-27142,18358,-27142,18358,-27142,18358,
-                                  -26902,18707,-26902,18707,-26902,18707,-26902,18707,
-                                  -26658,19053,-26658,19053,-26658,19053,-26658,19053,
-                                  -26410,19396,-26410,19396,-26410,19396,-26410,19396,
-                                  -26157,19736,-26157,19736,-26157,19736,-26157,19736,
-                                  -25899,20073,-25899,20073,-25899,20073,-25899,20073,
-                                  -25638,20406,-25638,20406,-25638,20406,-25638,20406,
-                                  -25372,20735,-25372,20735,-25372,20735,-25372,20735,
-                                  -25101,21062,-25101,21062,-25101,21062,-25101,21062,
-                                  -24827,21384,-24827,21384,-24827,21384,-24827,21384,
-                                  -24549,21704,-24549,21704,-24549,21704,-24549,21704,
-                                  -24266,22019,-24266,22019,-24266,22019,-24266,22019,
-                                  -23979,22331,-23979,22331,-23979,22331,-23979,22331,
-                                  -23689,22639,-23689,22639,-23689,22639,-23689,22639,
-                                  -23394,22944,-23394,22944,-23394,22944,-23394,22944,
-                                  -23095,23244,-23095,23244,-23095,23244,-23095,23244,
-                                  -22793,23541,-22793,23541,-22793,23541,-22793,23541,
-                                  -22487,23833,-22487,23833,-22487,23833,-22487,23833,
-                                  -22177,24122,-22177,24122,-22177,24122,-22177,24122,
-                                  -21863,24407,-21863,24407,-21863,24407,-21863,24407,
-                                  -21546,24687,-21546,24687,-21546,24687,-21546,24687,
-                                  -21225,24964,-21225,24964,-21225,24964,-21225,24964,
-                                  -20900,25236,-20900,25236,-20900,25236,-20900,25236,
-                                  -20572,25504,-20572,25504,-20572,25504,-20572,25504,
-                                  -20241,25768,-20241,25768,-20241,25768,-20241,25768,
-                                  -19906,26028,-19906,26028,-19906,26028,-19906,26028,
-                                  -19568,26283,-19568,26283,-19568,26283,-19568,26283,
-                                  -19226,26533,-19226,26533,-19226,26533,-19226,26533,
-                                  -18882,26780,-18882,26780,-18882,26780,-18882,26780,
-                                  -18534,27022,-18534,27022,-18534,27022,-18534,27022,
-                                  -18183,27259,-18183,27259,-18183,27259,-18183,27259,
-                                  -17829,27492,-17829,27492,-17829,27492,-17829,27492,
-                                  -17472,27720,-17472,27720,-17472,27720,-17472,27720,
-                                  -17112,27943,-17112,27943,-17112,27943,-17112,27943,
-                                  -16749,28162,-16749,28162,-16749,28162,-16749,28162
-                                 };
+
+static int16_t twa972[323*2*4];
+static int16_t twb972[323*2*4];
 
 void dft972(int16_t *x,int16_t *y,unsigned char scale_flag)  // 324 x 3
 {
@@ -15798,750 +8359,8 @@ void dft972(int16_t *x,int16_t *y,unsigned char scale_flag)  // 324 x 3
 
 };
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:359)/1080));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:359)/1080));
-twa2 = zeros(1,2*359);
-twb2 = zeros(1,2*359);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa1080[359*2*4] = {");
-for i=1:2:(2*358)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"static int16_t twb1080[359*2*4] = {");
-for i=1:2:(2*358)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fclose(fd);
-*/
-static int16_t twa1080[359*2*4] = {32766,-191,32766,-191,32766,-191,32766,-191,
-                                   32764,-382,32764,-382,32764,-382,32764,-382,
-                                   32762,-572,32762,-572,32762,-572,32762,-572,
-                                   32758,-763,32758,-763,32758,-763,32758,-763,
-                                   32753,-954,32753,-954,32753,-954,32753,-954,
-                                   32747,-1144,32747,-1144,32747,-1144,32747,-1144,
-                                   32739,-1335,32739,-1335,32739,-1335,32739,-1335,
-                                   32731,-1525,32731,-1525,32731,-1525,32731,-1525,
-                                   32722,-1715,32722,-1715,32722,-1715,32722,-1715,
-                                   32711,-1906,32711,-1906,32711,-1906,32711,-1906,
-                                   32699,-2096,32699,-2096,32699,-2096,32699,-2096,
-                                   32687,-2286,32687,-2286,32687,-2286,32687,-2286,
-                                   32673,-2476,32673,-2476,32673,-2476,32673,-2476,
-                                   32658,-2666,32658,-2666,32658,-2666,32658,-2666,
-                                   32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                   32625,-3046,32625,-3046,32625,-3046,32625,-3046,
-                                   32606,-3236,32606,-3236,32606,-3236,32606,-3236,
-                                   32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                   32567,-3615,32567,-3615,32567,-3615,32567,-3615,
-                                   32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                   32522,-3994,32522,-3994,32522,-3994,32522,-3994,
-                                   32498,-4183,32498,-4183,32498,-4183,32498,-4183,
-                                   32474,-4372,32474,-4372,32474,-4372,32474,-4372,
-                                   32448,-4561,32448,-4561,32448,-4561,32448,-4561,
-                                   32421,-4749,32421,-4749,32421,-4749,32421,-4749,
-                                   32392,-4938,32392,-4938,32392,-4938,32392,-4938,
-                                   32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                                   32333,-5315,32333,-5315,32333,-5315,32333,-5315,
-                                   32301,-5503,32301,-5503,32301,-5503,32301,-5503,
-                                   32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                   32235,-5878,32235,-5878,32235,-5878,32235,-5878,
-                                   32200,-6066,32200,-6066,32200,-6066,32200,-6066,
-                                   32164,-6253,32164,-6253,32164,-6253,32164,-6253,
-                                   32128,-6440,32128,-6440,32128,-6440,32128,-6440,
-                                   32090,-6627,32090,-6627,32090,-6627,32090,-6627,
-                                   32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                   32010,-6999,32010,-6999,32010,-6999,32010,-6999,
-                                   31969,-7186,31969,-7186,31969,-7186,31969,-7186,
-                                   31927,-7371,31927,-7371,31927,-7371,31927,-7371,
-                                   31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                   31839,-7742,31839,-7742,31839,-7742,31839,-7742,
-                                   31793,-7928,31793,-7928,31793,-7928,31793,-7928,
-                                   31747,-8112,31747,-8112,31747,-8112,31747,-8112,
-                                   31699,-8297,31699,-8297,31699,-8297,31699,-8297,
-                                   31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                   31600,-8665,31600,-8665,31600,-8665,31600,-8665,
-                                   31549,-8849,31549,-8849,31549,-8849,31549,-8849,
-                                   31497,-9032,31497,-9032,31497,-9032,31497,-9032,
-                                   31444,-9215,31444,-9215,31444,-9215,31444,-9215,
-                                   31390,-9398,31390,-9398,31390,-9398,31390,-9398,
-                                   31335,-9581,31335,-9581,31335,-9581,31335,-9581,
-                                   31278,-9763,31278,-9763,31278,-9763,31278,-9763,
-                                   31221,-9945,31221,-9945,31221,-9945,31221,-9945,
-                                   31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                   31103,-10307,31103,-10307,31103,-10307,31103,-10307,
-                                   31043,-10488,31043,-10488,31043,-10488,31043,-10488,
-                                   30981,-10668,30981,-10668,30981,-10668,30981,-10668,
-                                   30919,-10848,30919,-10848,30919,-10848,30919,-10848,
-                                   30855,-11028,30855,-11028,30855,-11028,30855,-11028,
-                                   30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                   30725,-11386,30725,-11386,30725,-11386,30725,-11386,
-                                   30658,-11565,30658,-11565,30658,-11565,30658,-11565,
-                                   30590,-11743,30590,-11743,30590,-11743,30590,-11743,
-                                   30521,-11921,30521,-11921,30521,-11921,30521,-11921,
-                                   30451,-12098,30451,-12098,30451,-12098,30451,-12098,
-                                   30381,-12275,30381,-12275,30381,-12275,30381,-12275,
-                                   30309,-12452,30309,-12452,30309,-12452,30309,-12452,
-                                   30236,-12628,30236,-12628,30236,-12628,30236,-12628,
-                                   30162,-12804,30162,-12804,30162,-12804,30162,-12804,
-                                   30087,-12979,30087,-12979,30087,-12979,30087,-12979,
-                                   30011,-13154,30011,-13154,30011,-13154,30011,-13154,
-                                   29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                   29856,-13502,29856,-13502,29856,-13502,29856,-13502,
-                                   29777,-13675,29777,-13675,29777,-13675,29777,-13675,
-                                   29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                   29615,-14021,29615,-14021,29615,-14021,29615,-14021,
-                                   29533,-14193,29533,-14193,29533,-14193,29533,-14193,
-                                   29450,-14365,29450,-14365,29450,-14365,29450,-14365,
-                                   29366,-14536,29366,-14536,29366,-14536,29366,-14536,
-                                   29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                   29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                                   29108,-15046,29108,-15046,29108,-15046,29108,-15046,
-                                   29020,-15215,29020,-15215,29020,-15215,29020,-15215,
-                                   28931,-15384,28931,-15384,28931,-15384,28931,-15384,
-                                   28841,-15552,28841,-15552,28841,-15552,28841,-15552,
-                                   28750,-15719,28750,-15719,28750,-15719,28750,-15719,
-                                   28658,-15886,28658,-15886,28658,-15886,28658,-15886,
-                                   28565,-16053,28565,-16053,28565,-16053,28565,-16053,
-                                   28471,-16219,28471,-16219,28471,-16219,28471,-16219,
-                                   28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                   28281,-16549,28281,-16549,28281,-16549,28281,-16549,
-                                   28184,-16713,28184,-16713,28184,-16713,28184,-16713,
-                                   28086,-16877,28086,-16877,28086,-16877,28086,-16877,
-                                   27988,-17040,27988,-17040,27988,-17040,27988,-17040,
-                                   27888,-17202,27888,-17202,27888,-17202,27888,-17202,
-                                   27787,-17364,27787,-17364,27787,-17364,27787,-17364,
-                                   27686,-17526,27686,-17526,27686,-17526,27686,-17526,
-                                   27584,-17687,27584,-17687,27584,-17687,27584,-17687,
-                                   27480,-17847,27480,-17847,27480,-17847,27480,-17847,
-                                   27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                   27271,-18165,27271,-18165,27271,-18165,27271,-18165,
-                                   27165,-18324,27165,-18324,27165,-18324,27165,-18324,
-                                   27058,-18481,27058,-18481,27058,-18481,27058,-18481,
-                                   26950,-18638,26950,-18638,26950,-18638,26950,-18638,
-                                   26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                   26731,-18951,26731,-18951,26731,-18951,26731,-18951,
-                                   26620,-19106,26620,-19106,26620,-19106,26620,-19106,
-                                   26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                   26396,-19414,26396,-19414,26396,-19414,26396,-19414,
-                                   26283,-19568,26283,-19568,26283,-19568,26283,-19568,
-                                   26168,-19720,26168,-19720,26168,-19720,26168,-19720,
-                                   26053,-19872,26053,-19872,26053,-19872,26053,-19872,
-                                   25937,-20023,25937,-20023,25937,-20023,25937,-20023,
-                                   25820,-20174,25820,-20174,25820,-20174,25820,-20174,
-                                   25702,-20324,25702,-20324,25702,-20324,25702,-20324,
-                                   25584,-20473,25584,-20473,25584,-20473,25584,-20473,
-                                   25464,-20621,25464,-20621,25464,-20621,25464,-20621,
-                                   25344,-20769,25344,-20769,25344,-20769,25344,-20769,
-                                   25223,-20916,25223,-20916,25223,-20916,25223,-20916,
-                                   25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                   24978,-21208,24978,-21208,24978,-21208,24978,-21208,
-                                   24854,-21353,24854,-21353,24854,-21353,24854,-21353,
-                                   24729,-21498,24729,-21498,24729,-21498,24729,-21498,
-                                   24604,-21641,24604,-21641,24604,-21641,24604,-21641,
-                                   24477,-21784,24477,-21784,24477,-21784,24477,-21784,
-                                   24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                   24222,-22067,24222,-22067,24222,-22067,24222,-22067,
-                                   24093,-22208,24093,-22208,24093,-22208,24093,-22208,
-                                   23964,-22348,23964,-22348,23964,-22348,23964,-22348,
-                                   23833,-22487,23833,-22487,23833,-22487,23833,-22487,
-                                   23702,-22625,23702,-22625,23702,-22625,23702,-22625,
-                                   23570,-22762,23570,-22762,23570,-22762,23570,-22762,
-                                   23437,-22899,23437,-22899,23437,-22899,23437,-22899,
-                                   23304,-23035,23304,-23035,23304,-23035,23304,-23035,
-                                   23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                   23034,-23305,23034,-23305,23034,-23305,23034,-23305,
-                                   22898,-23438,22898,-23438,22898,-23438,22898,-23438,
-                                   22761,-23571,22761,-23571,22761,-23571,22761,-23571,
-                                   22624,-23703,22624,-23703,22624,-23703,22624,-23703,
-                                   22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                   22347,-23965,22347,-23965,22347,-23965,22347,-23965,
-                                   22207,-24094,22207,-24094,22207,-24094,22207,-24094,
-                                   22066,-24223,22066,-24223,22066,-24223,22066,-24223,
-                                   21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                   21783,-24478,21783,-24478,21783,-24478,21783,-24478,
-                                   21640,-24605,21640,-24605,21640,-24605,21640,-24605,
-                                   21497,-24730,21497,-24730,21497,-24730,21497,-24730,
-                                   21352,-24855,21352,-24855,21352,-24855,21352,-24855,
-                                   21207,-24979,21207,-24979,21207,-24979,21207,-24979,
-                                   21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                   20915,-25224,20915,-25224,20915,-25224,20915,-25224,
-                                   20768,-25345,20768,-25345,20768,-25345,20768,-25345,
-                                   20620,-25465,20620,-25465,20620,-25465,20620,-25465,
-                                   20472,-25585,20472,-25585,20472,-25585,20472,-25585,
-                                   20323,-25703,20323,-25703,20323,-25703,20323,-25703,
-                                   20173,-25821,20173,-25821,20173,-25821,20173,-25821,
-                                   20022,-25938,20022,-25938,20022,-25938,20022,-25938,
-                                   19871,-26054,19871,-26054,19871,-26054,19871,-26054,
-                                   19719,-26169,19719,-26169,19719,-26169,19719,-26169,
-                                   19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                   19413,-26397,19413,-26397,19413,-26397,19413,-26397,
-                                   19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                   19105,-26621,19105,-26621,19105,-26621,19105,-26621,
-                                   18950,-26732,18950,-26732,18950,-26732,18950,-26732,
-                                   18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                   18637,-26951,18637,-26951,18637,-26951,18637,-26951,
-                                   18480,-27059,18480,-27059,18480,-27059,18480,-27059,
-                                   18323,-27166,18323,-27166,18323,-27166,18323,-27166,
-                                   18164,-27272,18164,-27272,18164,-27272,18164,-27272,
-                                   18005,-27377,18005,-27377,18005,-27377,18005,-27377,
-                                   17846,-27481,17846,-27481,17846,-27481,17846,-27481,
-                                   17686,-27585,17686,-27585,17686,-27585,17686,-27585,
-                                   17525,-27687,17525,-27687,17525,-27687,17525,-27687,
-                                   17363,-27788,17363,-27788,17363,-27788,17363,-27788,
-                                   17201,-27889,17201,-27889,17201,-27889,17201,-27889,
-                                   17039,-27989,17039,-27989,17039,-27989,17039,-27989,
-                                   16876,-28087,16876,-28087,16876,-28087,16876,-28087,
-                                   16712,-28185,16712,-28185,16712,-28185,16712,-28185,
-                                   16548,-28282,16548,-28282,16548,-28282,16548,-28282,
-                                   16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                   16218,-28472,16218,-28472,16218,-28472,16218,-28472,
-                                   16052,-28566,16052,-28566,16052,-28566,16052,-28566,
-                                   15885,-28659,15885,-28659,15885,-28659,15885,-28659,
-                                   15718,-28751,15718,-28751,15718,-28751,15718,-28751,
-                                   15551,-28842,15551,-28842,15551,-28842,15551,-28842,
-                                   15383,-28932,15383,-28932,15383,-28932,15383,-28932,
-                                   15214,-29021,15214,-29021,15214,-29021,15214,-29021,
-                                   15045,-29109,15045,-29109,15045,-29109,15045,-29109,
-                                   14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                                   14705,-29282,14705,-29282,14705,-29282,14705,-29282,
-                                   14535,-29367,14535,-29367,14535,-29367,14535,-29367,
-                                   14364,-29451,14364,-29451,14364,-29451,14364,-29451,
-                                   14192,-29534,14192,-29534,14192,-29534,14192,-29534,
-                                   14020,-29616,14020,-29616,14020,-29616,14020,-29616,
-                                   13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                   13674,-29778,13674,-29778,13674,-29778,13674,-29778,
-                                   13501,-29857,13501,-29857,13501,-29857,13501,-29857,
-                                   13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                   13153,-30012,13153,-30012,13153,-30012,13153,-30012,
-                                   12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                   12803,-30163,12803,-30163,12803,-30163,12803,-30163,
-                                   12627,-30237,12627,-30237,12627,-30237,12627,-30237,
-                                   12451,-30310,12451,-30310,12451,-30310,12451,-30310,
-                                   12274,-30382,12274,-30382,12274,-30382,12274,-30382,
-                                   12097,-30452,12097,-30452,12097,-30452,12097,-30452,
-                                   11920,-30522,11920,-30522,11920,-30522,11920,-30522,
-                                   11742,-30591,11742,-30591,11742,-30591,11742,-30591,
-                                   11564,-30659,11564,-30659,11564,-30659,11564,-30659,
-                                   11385,-30726,11385,-30726,11385,-30726,11385,-30726,
-                                   11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                   11027,-30856,11027,-30856,11027,-30856,11027,-30856,
-                                   10847,-30920,10847,-30920,10847,-30920,10847,-30920,
-                                   10667,-30982,10667,-30982,10667,-30982,10667,-30982,
-                                   10487,-31044,10487,-31044,10487,-31044,10487,-31044,
-                                   10306,-31104,10306,-31104,10306,-31104,10306,-31104,
-                                   10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                   9944,-31222,9944,-31222,9944,-31222,9944,-31222,
-                                   9762,-31279,9762,-31279,9762,-31279,9762,-31279,
-                                   9580,-31336,9580,-31336,9580,-31336,9580,-31336,
-                                   9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                   9214,-31445,9214,-31445,9214,-31445,9214,-31445,
-                                   9031,-31498,9031,-31498,9031,-31498,9031,-31498,
-                                   8848,-31550,8848,-31550,8848,-31550,8848,-31550,
-                                   8664,-31601,8664,-31601,8664,-31601,8664,-31601,
-                                   8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                   8296,-31700,8296,-31700,8296,-31700,8296,-31700,
-                                   8111,-31748,8111,-31748,8111,-31748,8111,-31748,
-                                   7927,-31794,7927,-31794,7927,-31794,7927,-31794,
-                                   7741,-31840,7741,-31840,7741,-31840,7741,-31840,
-                                   7556,-31884,7556,-31884,7556,-31884,7556,-31884,
-                                   7370,-31928,7370,-31928,7370,-31928,7370,-31928,
-                                   7185,-31970,7185,-31970,7185,-31970,7185,-31970,
-                                   6998,-32011,6998,-32011,6998,-32011,6998,-32011,
-                                   6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                   6626,-32091,6626,-32091,6626,-32091,6626,-32091,
-                                   6439,-32129,6439,-32129,6439,-32129,6439,-32129,
-                                   6252,-32165,6252,-32165,6252,-32165,6252,-32165,
-                                   6065,-32201,6065,-32201,6065,-32201,6065,-32201,
-                                   5877,-32236,5877,-32236,5877,-32236,5877,-32236,
-                                   5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                   5502,-32302,5502,-32302,5502,-32302,5502,-32302,
-                                   5314,-32334,5314,-32334,5314,-32334,5314,-32334,
-                                   5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                                   4937,-32393,4937,-32393,4937,-32393,4937,-32393,
-                                   4748,-32422,4748,-32422,4748,-32422,4748,-32422,
-                                   4560,-32449,4560,-32449,4560,-32449,4560,-32449,
-                                   4371,-32475,4371,-32475,4371,-32475,4371,-32475,
-                                   4182,-32499,4182,-32499,4182,-32499,4182,-32499,
-                                   3993,-32523,3993,-32523,3993,-32523,3993,-32523,
-                                   3804,-32546,3804,-32546,3804,-32546,3804,-32546,
-                                   3614,-32568,3614,-32568,3614,-32568,3614,-32568,
-                                   3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                   3235,-32607,3235,-32607,3235,-32607,3235,-32607,
-                                   3045,-32626,3045,-32626,3045,-32626,3045,-32626,
-                                   2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                   2665,-32659,2665,-32659,2665,-32659,2665,-32659,
-                                   2475,-32674,2475,-32674,2475,-32674,2475,-32674,
-                                   2285,-32688,2285,-32688,2285,-32688,2285,-32688,
-                                   2095,-32700,2095,-32700,2095,-32700,2095,-32700,
-                                   1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                   1714,-32723,1714,-32723,1714,-32723,1714,-32723,
-                                   1524,-32732,1524,-32732,1524,-32732,1524,-32732,
-                                   1334,-32740,1334,-32740,1334,-32740,1334,-32740,
-                                   1143,-32748,1143,-32748,1143,-32748,1143,-32748,
-                                   953,-32754,953,-32754,953,-32754,953,-32754,
-                                   762,-32759,762,-32759,762,-32759,762,-32759,
-                                   571,-32763,571,-32763,571,-32763,571,-32763,
-                                   381,-32765,381,-32765,381,-32765,381,-32765,
-                                   190,-32767,190,-32767,190,-32767,190,-32767,
-                                   0,-32767,0,-32767,0,-32767,0,-32767,
-                                   -191,-32767,-191,-32767,-191,-32767,-191,-32767,
-                                   -382,-32765,-382,-32765,-382,-32765,-382,-32765,
-                                   -572,-32763,-572,-32763,-572,-32763,-572,-32763,
-                                   -763,-32759,-763,-32759,-763,-32759,-763,-32759,
-                                   -954,-32754,-954,-32754,-954,-32754,-954,-32754,
-                                   -1144,-32748,-1144,-32748,-1144,-32748,-1144,-32748,
-                                   -1335,-32740,-1335,-32740,-1335,-32740,-1335,-32740,
-                                   -1525,-32732,-1525,-32732,-1525,-32732,-1525,-32732,
-                                   -1715,-32723,-1715,-32723,-1715,-32723,-1715,-32723,
-                                   -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                   -2096,-32700,-2096,-32700,-2096,-32700,-2096,-32700,
-                                   -2286,-32688,-2286,-32688,-2286,-32688,-2286,-32688,
-                                   -2476,-32674,-2476,-32674,-2476,-32674,-2476,-32674,
-                                   -2666,-32659,-2666,-32659,-2666,-32659,-2666,-32659,
-                                   -2856,-32643,-2856,-32643,-2856,-32643,-2856,-32643,
-                                   -3046,-32626,-3046,-32626,-3046,-32626,-3046,-32626,
-                                   -3236,-32607,-3236,-32607,-3236,-32607,-3236,-32607,
-                                   -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                   -3615,-32568,-3615,-32568,-3615,-32568,-3615,-32568,
-                                   -3805,-32546,-3805,-32546,-3805,-32546,-3805,-32546,
-                                   -3994,-32523,-3994,-32523,-3994,-32523,-3994,-32523,
-                                   -4183,-32499,-4183,-32499,-4183,-32499,-4183,-32499,
-                                   -4372,-32475,-4372,-32475,-4372,-32475,-4372,-32475,
-                                   -4561,-32449,-4561,-32449,-4561,-32449,-4561,-32449,
-                                   -4749,-32422,-4749,-32422,-4749,-32422,-4749,-32422,
-                                   -4938,-32393,-4938,-32393,-4938,-32393,-4938,-32393,
-                                   -5126,-32364,-5126,-32364,-5126,-32364,-5126,-32364,
-                                   -5315,-32334,-5315,-32334,-5315,-32334,-5315,-32334,
-                                   -5503,-32302,-5503,-32302,-5503,-32302,-5503,-32302,
-                                   -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                   -5878,-32236,-5878,-32236,-5878,-32236,-5878,-32236,
-                                   -6066,-32201,-6066,-32201,-6066,-32201,-6066,-32201,
-                                   -6253,-32165,-6253,-32165,-6253,-32165,-6253,-32165,
-                                   -6440,-32129,-6440,-32129,-6440,-32129,-6440,-32129,
-                                   -6627,-32091,-6627,-32091,-6627,-32091,-6627,-32091,
-                                   -6813,-32051,-6813,-32051,-6813,-32051,-6813,-32051,
-                                   -6999,-32011,-6999,-32011,-6999,-32011,-6999,-32011,
-                                   -7186,-31970,-7186,-31970,-7186,-31970,-7186,-31970,
-                                   -7371,-31928,-7371,-31928,-7371,-31928,-7371,-31928,
-                                   -7557,-31884,-7557,-31884,-7557,-31884,-7557,-31884,
-                                   -7742,-31840,-7742,-31840,-7742,-31840,-7742,-31840,
-                                   -7928,-31794,-7928,-31794,-7928,-31794,-7928,-31794,
-                                   -8112,-31748,-8112,-31748,-8112,-31748,-8112,-31748,
-                                   -8297,-31700,-8297,-31700,-8297,-31700,-8297,-31700,
-                                   -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                   -8665,-31601,-8665,-31601,-8665,-31601,-8665,-31601,
-                                   -8849,-31550,-8849,-31550,-8849,-31550,-8849,-31550,
-                                   -9032,-31498,-9032,-31498,-9032,-31498,-9032,-31498,
-                                   -9215,-31445,-9215,-31445,-9215,-31445,-9215,-31445,
-                                   -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                   -9581,-31336,-9581,-31336,-9581,-31336,-9581,-31336,
-                                   -9763,-31279,-9763,-31279,-9763,-31279,-9763,-31279,
-                                   -9945,-31222,-9945,-31222,-9945,-31222,-9945,-31222,
-                                   -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                   -10307,-31104,-10307,-31104,-10307,-31104,-10307,-31104,
-                                   -10488,-31044,-10488,-31044,-10488,-31044,-10488,-31044,
-                                   -10668,-30982,-10668,-30982,-10668,-30982,-10668,-30982,
-                                   -10848,-30920,-10848,-30920,-10848,-30920,-10848,-30920,
-                                   -11028,-30856,-11028,-30856,-11028,-30856,-11028,-30856,
-                                   -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                   -11386,-30726,-11386,-30726,-11386,-30726,-11386,-30726,
-                                   -11565,-30659,-11565,-30659,-11565,-30659,-11565,-30659,
-                                   -11743,-30591,-11743,-30591,-11743,-30591,-11743,-30591,
-                                   -11921,-30522,-11921,-30522,-11921,-30522,-11921,-30522,
-                                   -12098,-30452,-12098,-30452,-12098,-30452,-12098,-30452,
-                                   -12275,-30382,-12275,-30382,-12275,-30382,-12275,-30382,
-                                   -12452,-30310,-12452,-30310,-12452,-30310,-12452,-30310,
-                                   -12628,-30237,-12628,-30237,-12628,-30237,-12628,-30237,
-                                   -12804,-30163,-12804,-30163,-12804,-30163,-12804,-30163,
-                                   -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                   -13154,-30012,-13154,-30012,-13154,-30012,-13154,-30012,
-                                   -13328,-29935,-13328,-29935,-13328,-29935,-13328,-29935,
-                                   -13502,-29857,-13502,-29857,-13502,-29857,-13502,-29857,
-                                   -13675,-29778,-13675,-29778,-13675,-29778,-13675,-29778,
-                                   -13848,-29697,-13848,-29697,-13848,-29697,-13848,-29697,
-                                   -14021,-29616,-14021,-29616,-14021,-29616,-14021,-29616,
-                                   -14193,-29534,-14193,-29534,-14193,-29534,-14193,-29534,
-                                   -14365,-29451,-14365,-29451,-14365,-29451,-14365,-29451,
-                                   -14536,-29367,-14536,-29367,-14536,-29367,-14536,-29367,
-                                   -14706,-29282,-14706,-29282,-14706,-29282,-14706,-29282,
-                                   -14876,-29196,-14876,-29196,-14876,-29196,-14876,-29196,
-                                   -15046,-29109,-15046,-29109,-15046,-29109,-15046,-29109,
-                                   -15215,-29021,-15215,-29021,-15215,-29021,-15215,-29021,
-                                   -15384,-28932,-15384,-28932,-15384,-28932,-15384,-28932,
-                                   -15552,-28842,-15552,-28842,-15552,-28842,-15552,-28842,
-                                   -15719,-28751,-15719,-28751,-15719,-28751,-15719,-28751,
-                                   -15886,-28659,-15886,-28659,-15886,-28659,-15886,-28659,
-                                   -16053,-28566,-16053,-28566,-16053,-28566,-16053,-28566,
-                                   -16219,-28472,-16219,-28472,-16219,-28472,-16219,-28472
-                                  };
-static int16_t twb1080[359*2*4] = {32764,-382,32764,-382,32764,-382,32764,-382,
-                                   32758,-763,32758,-763,32758,-763,32758,-763,
-                                   32747,-1144,32747,-1144,32747,-1144,32747,-1144,
-                                   32731,-1525,32731,-1525,32731,-1525,32731,-1525,
-                                   32711,-1906,32711,-1906,32711,-1906,32711,-1906,
-                                   32687,-2286,32687,-2286,32687,-2286,32687,-2286,
-                                   32658,-2666,32658,-2666,32658,-2666,32658,-2666,
-                                   32625,-3046,32625,-3046,32625,-3046,32625,-3046,
-                                   32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                                   32545,-3805,32545,-3805,32545,-3805,32545,-3805,
-                                   32498,-4183,32498,-4183,32498,-4183,32498,-4183,
-                                   32448,-4561,32448,-4561,32448,-4561,32448,-4561,
-                                   32392,-4938,32392,-4938,32392,-4938,32392,-4938,
-                                   32333,-5315,32333,-5315,32333,-5315,32333,-5315,
-                                   32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                   32200,-6066,32200,-6066,32200,-6066,32200,-6066,
-                                   32128,-6440,32128,-6440,32128,-6440,32128,-6440,
-                                   32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                                   31969,-7186,31969,-7186,31969,-7186,31969,-7186,
-                                   31883,-7557,31883,-7557,31883,-7557,31883,-7557,
-                                   31793,-7928,31793,-7928,31793,-7928,31793,-7928,
-                                   31699,-8297,31699,-8297,31699,-8297,31699,-8297,
-                                   31600,-8665,31600,-8665,31600,-8665,31600,-8665,
-                                   31497,-9032,31497,-9032,31497,-9032,31497,-9032,
-                                   31390,-9398,31390,-9398,31390,-9398,31390,-9398,
-                                   31278,-9763,31278,-9763,31278,-9763,31278,-9763,
-                                   31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                                   31043,-10488,31043,-10488,31043,-10488,31043,-10488,
-                                   30919,-10848,30919,-10848,30919,-10848,30919,-10848,
-                                   30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                   30658,-11565,30658,-11565,30658,-11565,30658,-11565,
-                                   30521,-11921,30521,-11921,30521,-11921,30521,-11921,
-                                   30381,-12275,30381,-12275,30381,-12275,30381,-12275,
-                                   30236,-12628,30236,-12628,30236,-12628,30236,-12628,
-                                   30087,-12979,30087,-12979,30087,-12979,30087,-12979,
-                                   29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                                   29777,-13675,29777,-13675,29777,-13675,29777,-13675,
-                                   29615,-14021,29615,-14021,29615,-14021,29615,-14021,
-                                   29450,-14365,29450,-14365,29450,-14365,29450,-14365,
-                                   29281,-14706,29281,-14706,29281,-14706,29281,-14706,
-                                   29108,-15046,29108,-15046,29108,-15046,29108,-15046,
-                                   28931,-15384,28931,-15384,28931,-15384,28931,-15384,
-                                   28750,-15719,28750,-15719,28750,-15719,28750,-15719,
-                                   28565,-16053,28565,-16053,28565,-16053,28565,-16053,
-                                   28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                   28184,-16713,28184,-16713,28184,-16713,28184,-16713,
-                                   27988,-17040,27988,-17040,27988,-17040,27988,-17040,
-                                   27787,-17364,27787,-17364,27787,-17364,27787,-17364,
-                                   27584,-17687,27584,-17687,27584,-17687,27584,-17687,
-                                   27376,-18006,27376,-18006,27376,-18006,27376,-18006,
-                                   27165,-18324,27165,-18324,27165,-18324,27165,-18324,
-                                   26950,-18638,26950,-18638,26950,-18638,26950,-18638,
-                                   26731,-18951,26731,-18951,26731,-18951,26731,-18951,
-                                   26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                                   26283,-19568,26283,-19568,26283,-19568,26283,-19568,
-                                   26053,-19872,26053,-19872,26053,-19872,26053,-19872,
-                                   25820,-20174,25820,-20174,25820,-20174,25820,-20174,
-                                   25584,-20473,25584,-20473,25584,-20473,25584,-20473,
-                                   25344,-20769,25344,-20769,25344,-20769,25344,-20769,
-                                   25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                   24854,-21353,24854,-21353,24854,-21353,24854,-21353,
-                                   24604,-21641,24604,-21641,24604,-21641,24604,-21641,
-                                   24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                                   24093,-22208,24093,-22208,24093,-22208,24093,-22208,
-                                   23833,-22487,23833,-22487,23833,-22487,23833,-22487,
-                                   23570,-22762,23570,-22762,23570,-22762,23570,-22762,
-                                   23304,-23035,23304,-23035,23304,-23035,23304,-23035,
-                                   23034,-23305,23034,-23305,23034,-23305,23034,-23305,
-                                   22761,-23571,22761,-23571,22761,-23571,22761,-23571,
-                                   22486,-23834,22486,-23834,22486,-23834,22486,-23834,
-                                   22207,-24094,22207,-24094,22207,-24094,22207,-24094,
-                                   21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                                   21640,-24605,21640,-24605,21640,-24605,21640,-24605,
-                                   21352,-24855,21352,-24855,21352,-24855,21352,-24855,
-                                   21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                   20768,-25345,20768,-25345,20768,-25345,20768,-25345,
-                                   20472,-25585,20472,-25585,20472,-25585,20472,-25585,
-                                   20173,-25821,20173,-25821,20173,-25821,20173,-25821,
-                                   19871,-26054,19871,-26054,19871,-26054,19871,-26054,
-                                   19567,-26284,19567,-26284,19567,-26284,19567,-26284,
-                                   19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                                   18950,-26732,18950,-26732,18950,-26732,18950,-26732,
-                                   18637,-26951,18637,-26951,18637,-26951,18637,-26951,
-                                   18323,-27166,18323,-27166,18323,-27166,18323,-27166,
-                                   18005,-27377,18005,-27377,18005,-27377,18005,-27377,
-                                   17686,-27585,17686,-27585,17686,-27585,17686,-27585,
-                                   17363,-27788,17363,-27788,17363,-27788,17363,-27788,
-                                   17039,-27989,17039,-27989,17039,-27989,17039,-27989,
-                                   16712,-28185,16712,-28185,16712,-28185,16712,-28185,
-                                   16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                   16052,-28566,16052,-28566,16052,-28566,16052,-28566,
-                                   15718,-28751,15718,-28751,15718,-28751,15718,-28751,
-                                   15383,-28932,15383,-28932,15383,-28932,15383,-28932,
-                                   15045,-29109,15045,-29109,15045,-29109,15045,-29109,
-                                   14705,-29282,14705,-29282,14705,-29282,14705,-29282,
-                                   14364,-29451,14364,-29451,14364,-29451,14364,-29451,
-                                   14020,-29616,14020,-29616,14020,-29616,14020,-29616,
-                                   13674,-29778,13674,-29778,13674,-29778,13674,-29778,
-                                   13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                                   12978,-30088,12978,-30088,12978,-30088,12978,-30088,
-                                   12627,-30237,12627,-30237,12627,-30237,12627,-30237,
-                                   12274,-30382,12274,-30382,12274,-30382,12274,-30382,
-                                   11920,-30522,11920,-30522,11920,-30522,11920,-30522,
-                                   11564,-30659,11564,-30659,11564,-30659,11564,-30659,
-                                   11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                   10847,-30920,10847,-30920,10847,-30920,10847,-30920,
-                                   10487,-31044,10487,-31044,10487,-31044,10487,-31044,
-                                   10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                                   9762,-31279,9762,-31279,9762,-31279,9762,-31279,
-                                   9397,-31391,9397,-31391,9397,-31391,9397,-31391,
-                                   9031,-31498,9031,-31498,9031,-31498,9031,-31498,
-                                   8664,-31601,8664,-31601,8664,-31601,8664,-31601,
-                                   8296,-31700,8296,-31700,8296,-31700,8296,-31700,
-                                   7927,-31794,7927,-31794,7927,-31794,7927,-31794,
-                                   7556,-31884,7556,-31884,7556,-31884,7556,-31884,
-                                   7185,-31970,7185,-31970,7185,-31970,7185,-31970,
-                                   6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                                   6439,-32129,6439,-32129,6439,-32129,6439,-32129,
-                                   6065,-32201,6065,-32201,6065,-32201,6065,-32201,
-                                   5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                   5314,-32334,5314,-32334,5314,-32334,5314,-32334,
-                                   4937,-32393,4937,-32393,4937,-32393,4937,-32393,
-                                   4560,-32449,4560,-32449,4560,-32449,4560,-32449,
-                                   4182,-32499,4182,-32499,4182,-32499,4182,-32499,
-                                   3804,-32546,3804,-32546,3804,-32546,3804,-32546,
-                                   3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                                   3045,-32626,3045,-32626,3045,-32626,3045,-32626,
-                                   2665,-32659,2665,-32659,2665,-32659,2665,-32659,
-                                   2285,-32688,2285,-32688,2285,-32688,2285,-32688,
-                                   1905,-32712,1905,-32712,1905,-32712,1905,-32712,
-                                   1524,-32732,1524,-32732,1524,-32732,1524,-32732,
-                                   1143,-32748,1143,-32748,1143,-32748,1143,-32748,
-                                   762,-32759,762,-32759,762,-32759,762,-32759,
-                                   381,-32765,381,-32765,381,-32765,381,-32765,
-                                   0,-32767,0,-32767,0,-32767,0,-32767,
-                                   -382,-32765,-382,-32765,-382,-32765,-382,-32765,
-                                   -763,-32759,-763,-32759,-763,-32759,-763,-32759,
-                                   -1144,-32748,-1144,-32748,-1144,-32748,-1144,-32748,
-                                   -1525,-32732,-1525,-32732,-1525,-32732,-1525,-32732,
-                                   -1906,-32712,-1906,-32712,-1906,-32712,-1906,-32712,
-                                   -2286,-32688,-2286,-32688,-2286,-32688,-2286,-32688,
-                                   -2666,-32659,-2666,-32659,-2666,-32659,-2666,-32659,
-                                   -3046,-32626,-3046,-32626,-3046,-32626,-3046,-32626,
-                                   -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                                   -3805,-32546,-3805,-32546,-3805,-32546,-3805,-32546,
-                                   -4183,-32499,-4183,-32499,-4183,-32499,-4183,-32499,
-                                   -4561,-32449,-4561,-32449,-4561,-32449,-4561,-32449,
-                                   -4938,-32393,-4938,-32393,-4938,-32393,-4938,-32393,
-                                   -5315,-32334,-5315,-32334,-5315,-32334,-5315,-32334,
-                                   -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                   -6066,-32201,-6066,-32201,-6066,-32201,-6066,-32201,
-                                   -6440,-32129,-6440,-32129,-6440,-32129,-6440,-32129,
-                                   -6813,-32051,-6813,-32051,-6813,-32051,-6813,-32051,
-                                   -7186,-31970,-7186,-31970,-7186,-31970,-7186,-31970,
-                                   -7557,-31884,-7557,-31884,-7557,-31884,-7557,-31884,
-                                   -7928,-31794,-7928,-31794,-7928,-31794,-7928,-31794,
-                                   -8297,-31700,-8297,-31700,-8297,-31700,-8297,-31700,
-                                   -8665,-31601,-8665,-31601,-8665,-31601,-8665,-31601,
-                                   -9032,-31498,-9032,-31498,-9032,-31498,-9032,-31498,
-                                   -9398,-31391,-9398,-31391,-9398,-31391,-9398,-31391,
-                                   -9763,-31279,-9763,-31279,-9763,-31279,-9763,-31279,
-                                   -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                                   -10488,-31044,-10488,-31044,-10488,-31044,-10488,-31044,
-                                   -10848,-30920,-10848,-30920,-10848,-30920,-10848,-30920,
-                                   -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                   -11565,-30659,-11565,-30659,-11565,-30659,-11565,-30659,
-                                   -11921,-30522,-11921,-30522,-11921,-30522,-11921,-30522,
-                                   -12275,-30382,-12275,-30382,-12275,-30382,-12275,-30382,
-                                   -12628,-30237,-12628,-30237,-12628,-30237,-12628,-30237,
-                                   -12979,-30088,-12979,-30088,-12979,-30088,-12979,-30088,
-                                   -13328,-29935,-13328,-29935,-13328,-29935,-13328,-29935,
-                                   -13675,-29778,-13675,-29778,-13675,-29778,-13675,-29778,
-                                   -14021,-29616,-14021,-29616,-14021,-29616,-14021,-29616,
-                                   -14365,-29451,-14365,-29451,-14365,-29451,-14365,-29451,
-                                   -14706,-29282,-14706,-29282,-14706,-29282,-14706,-29282,
-                                   -15046,-29109,-15046,-29109,-15046,-29109,-15046,-29109,
-                                   -15384,-28932,-15384,-28932,-15384,-28932,-15384,-28932,
-                                   -15719,-28751,-15719,-28751,-15719,-28751,-15719,-28751,
-                                   -16053,-28566,-16053,-28566,-16053,-28566,-16053,-28566,
-                                   -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                   -16713,-28185,-16713,-28185,-16713,-28185,-16713,-28185,
-                                   -17040,-27989,-17040,-27989,-17040,-27989,-17040,-27989,
-                                   -17364,-27788,-17364,-27788,-17364,-27788,-17364,-27788,
-                                   -17687,-27585,-17687,-27585,-17687,-27585,-17687,-27585,
-                                   -18006,-27377,-18006,-27377,-18006,-27377,-18006,-27377,
-                                   -18324,-27166,-18324,-27166,-18324,-27166,-18324,-27166,
-                                   -18638,-26951,-18638,-26951,-18638,-26951,-18638,-26951,
-                                   -18951,-26732,-18951,-26732,-18951,-26732,-18951,-26732,
-                                   -19260,-26510,-19260,-26510,-19260,-26510,-19260,-26510,
-                                   -19568,-26284,-19568,-26284,-19568,-26284,-19568,-26284,
-                                   -19872,-26054,-19872,-26054,-19872,-26054,-19872,-26054,
-                                   -20174,-25821,-20174,-25821,-20174,-25821,-20174,-25821,
-                                   -20473,-25585,-20473,-25585,-20473,-25585,-20473,-25585,
-                                   -20769,-25345,-20769,-25345,-20769,-25345,-20769,-25345,
-                                   -21063,-25101,-21063,-25101,-21063,-25101,-21063,-25101,
-                                   -21353,-24855,-21353,-24855,-21353,-24855,-21353,-24855,
-                                   -21641,-24605,-21641,-24605,-21641,-24605,-21641,-24605,
-                                   -21926,-24351,-21926,-24351,-21926,-24351,-21926,-24351,
-                                   -22208,-24094,-22208,-24094,-22208,-24094,-22208,-24094,
-                                   -22487,-23834,-22487,-23834,-22487,-23834,-22487,-23834,
-                                   -22762,-23571,-22762,-23571,-22762,-23571,-22762,-23571,
-                                   -23035,-23305,-23035,-23305,-23035,-23305,-23035,-23305,
-                                   -23305,-23035,-23305,-23035,-23305,-23035,-23305,-23035,
-                                   -23571,-22762,-23571,-22762,-23571,-22762,-23571,-22762,
-                                   -23834,-22487,-23834,-22487,-23834,-22487,-23834,-22487,
-                                   -24094,-22208,-24094,-22208,-24094,-22208,-24094,-22208,
-                                   -24351,-21926,-24351,-21926,-24351,-21926,-24351,-21926,
-                                   -24605,-21641,-24605,-21641,-24605,-21641,-24605,-21641,
-                                   -24855,-21353,-24855,-21353,-24855,-21353,-24855,-21353,
-                                   -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                   -25345,-20769,-25345,-20769,-25345,-20769,-25345,-20769,
-                                   -25585,-20473,-25585,-20473,-25585,-20473,-25585,-20473,
-                                   -25821,-20174,-25821,-20174,-25821,-20174,-25821,-20174,
-                                   -26054,-19872,-26054,-19872,-26054,-19872,-26054,-19872,
-                                   -26284,-19568,-26284,-19568,-26284,-19568,-26284,-19568,
-                                   -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                                   -26732,-18951,-26732,-18951,-26732,-18951,-26732,-18951,
-                                   -26951,-18638,-26951,-18638,-26951,-18638,-26951,-18638,
-                                   -27166,-18324,-27166,-18324,-27166,-18324,-27166,-18324,
-                                   -27377,-18006,-27377,-18006,-27377,-18006,-27377,-18006,
-                                   -27585,-17687,-27585,-17687,-27585,-17687,-27585,-17687,
-                                   -27788,-17364,-27788,-17364,-27788,-17364,-27788,-17364,
-                                   -27989,-17040,-27989,-17040,-27989,-17040,-27989,-17040,
-                                   -28185,-16713,-28185,-16713,-28185,-16713,-28185,-16713,
-                                   -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                   -28566,-16053,-28566,-16053,-28566,-16053,-28566,-16053,
-                                   -28751,-15719,-28751,-15719,-28751,-15719,-28751,-15719,
-                                   -28932,-15384,-28932,-15384,-28932,-15384,-28932,-15384,
-                                   -29109,-15046,-29109,-15046,-29109,-15046,-29109,-15046,
-                                   -29282,-14706,-29282,-14706,-29282,-14706,-29282,-14706,
-                                   -29451,-14365,-29451,-14365,-29451,-14365,-29451,-14365,
-                                   -29616,-14021,-29616,-14021,-29616,-14021,-29616,-14021,
-                                   -29778,-13675,-29778,-13675,-29778,-13675,-29778,-13675,
-                                   -29935,-13328,-29935,-13328,-29935,-13328,-29935,-13328,
-                                   -30088,-12979,-30088,-12979,-30088,-12979,-30088,-12979,
-                                   -30237,-12628,-30237,-12628,-30237,-12628,-30237,-12628,
-                                   -30382,-12275,-30382,-12275,-30382,-12275,-30382,-12275,
-                                   -30522,-11921,-30522,-11921,-30522,-11921,-30522,-11921,
-                                   -30659,-11565,-30659,-11565,-30659,-11565,-30659,-11565,
-                                   -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                   -30920,-10848,-30920,-10848,-30920,-10848,-30920,-10848,
-                                   -31044,-10488,-31044,-10488,-31044,-10488,-31044,-10488,
-                                   -31164,-10126,-31164,-10126,-31164,-10126,-31164,-10126,
-                                   -31279,-9763,-31279,-9763,-31279,-9763,-31279,-9763,
-                                   -31391,-9398,-31391,-9398,-31391,-9398,-31391,-9398,
-                                   -31498,-9032,-31498,-9032,-31498,-9032,-31498,-9032,
-                                   -31601,-8665,-31601,-8665,-31601,-8665,-31601,-8665,
-                                   -31700,-8297,-31700,-8297,-31700,-8297,-31700,-8297,
-                                   -31794,-7928,-31794,-7928,-31794,-7928,-31794,-7928,
-                                   -31884,-7557,-31884,-7557,-31884,-7557,-31884,-7557,
-                                   -31970,-7186,-31970,-7186,-31970,-7186,-31970,-7186,
-                                   -32051,-6813,-32051,-6813,-32051,-6813,-32051,-6813,
-                                   -32129,-6440,-32129,-6440,-32129,-6440,-32129,-6440,
-                                   -32201,-6066,-32201,-6066,-32201,-6066,-32201,-6066,
-                                   -32270,-5690,-32270,-5690,-32270,-5690,-32270,-5690,
-                                   -32334,-5315,-32334,-5315,-32334,-5315,-32334,-5315,
-                                   -32393,-4938,-32393,-4938,-32393,-4938,-32393,-4938,
-                                   -32449,-4561,-32449,-4561,-32449,-4561,-32449,-4561,
-                                   -32499,-4183,-32499,-4183,-32499,-4183,-32499,-4183,
-                                   -32546,-3805,-32546,-3805,-32546,-3805,-32546,-3805,
-                                   -32588,-3426,-32588,-3426,-32588,-3426,-32588,-3426,
-                                   -32626,-3046,-32626,-3046,-32626,-3046,-32626,-3046,
-                                   -32659,-2666,-32659,-2666,-32659,-2666,-32659,-2666,
-                                   -32688,-2286,-32688,-2286,-32688,-2286,-32688,-2286,
-                                   -32712,-1906,-32712,-1906,-32712,-1906,-32712,-1906,
-                                   -32732,-1525,-32732,-1525,-32732,-1525,-32732,-1525,
-                                   -32748,-1144,-32748,-1144,-32748,-1144,-32748,-1144,
-                                   -32759,-763,-32759,-763,-32759,-763,-32759,-763,
-                                   -32765,-382,-32765,-382,-32765,-382,-32765,-382,
-                                   -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                   -32765,381,-32765,381,-32765,381,-32765,381,
-                                   -32759,762,-32759,762,-32759,762,-32759,762,
-                                   -32748,1143,-32748,1143,-32748,1143,-32748,1143,
-                                   -32732,1524,-32732,1524,-32732,1524,-32732,1524,
-                                   -32712,1905,-32712,1905,-32712,1905,-32712,1905,
-                                   -32688,2285,-32688,2285,-32688,2285,-32688,2285,
-                                   -32659,2665,-32659,2665,-32659,2665,-32659,2665,
-                                   -32626,3045,-32626,3045,-32626,3045,-32626,3045,
-                                   -32588,3425,-32588,3425,-32588,3425,-32588,3425,
-                                   -32546,3804,-32546,3804,-32546,3804,-32546,3804,
-                                   -32499,4182,-32499,4182,-32499,4182,-32499,4182,
-                                   -32449,4560,-32449,4560,-32449,4560,-32449,4560,
-                                   -32393,4937,-32393,4937,-32393,4937,-32393,4937,
-                                   -32334,5314,-32334,5314,-32334,5314,-32334,5314,
-                                   -32270,5689,-32270,5689,-32270,5689,-32270,5689,
-                                   -32201,6065,-32201,6065,-32201,6065,-32201,6065,
-                                   -32129,6439,-32129,6439,-32129,6439,-32129,6439,
-                                   -32051,6812,-32051,6812,-32051,6812,-32051,6812,
-                                   -31970,7185,-31970,7185,-31970,7185,-31970,7185,
-                                   -31884,7556,-31884,7556,-31884,7556,-31884,7556,
-                                   -31794,7927,-31794,7927,-31794,7927,-31794,7927,
-                                   -31700,8296,-31700,8296,-31700,8296,-31700,8296,
-                                   -31601,8664,-31601,8664,-31601,8664,-31601,8664,
-                                   -31498,9031,-31498,9031,-31498,9031,-31498,9031,
-                                   -31391,9397,-31391,9397,-31391,9397,-31391,9397,
-                                   -31279,9762,-31279,9762,-31279,9762,-31279,9762,
-                                   -31164,10125,-31164,10125,-31164,10125,-31164,10125,
-                                   -31044,10487,-31044,10487,-31044,10487,-31044,10487,
-                                   -30920,10847,-30920,10847,-30920,10847,-30920,10847,
-                                   -30791,11206,-30791,11206,-30791,11206,-30791,11206,
-                                   -30659,11564,-30659,11564,-30659,11564,-30659,11564,
-                                   -30522,11920,-30522,11920,-30522,11920,-30522,11920,
-                                   -30382,12274,-30382,12274,-30382,12274,-30382,12274,
-                                   -30237,12627,-30237,12627,-30237,12627,-30237,12627,
-                                   -30088,12978,-30088,12978,-30088,12978,-30088,12978,
-                                   -29935,13327,-29935,13327,-29935,13327,-29935,13327,
-                                   -29778,13674,-29778,13674,-29778,13674,-29778,13674,
-                                   -29616,14020,-29616,14020,-29616,14020,-29616,14020,
-                                   -29451,14364,-29451,14364,-29451,14364,-29451,14364,
-                                   -29282,14705,-29282,14705,-29282,14705,-29282,14705,
-                                   -29109,15045,-29109,15045,-29109,15045,-29109,15045,
-                                   -28932,15383,-28932,15383,-28932,15383,-28932,15383,
-                                   -28751,15718,-28751,15718,-28751,15718,-28751,15718,
-                                   -28566,16052,-28566,16052,-28566,16052,-28566,16052,
-                                   -28378,16383,-28378,16383,-28378,16383,-28378,16383,
-                                   -28185,16712,-28185,16712,-28185,16712,-28185,16712,
-                                   -27989,17039,-27989,17039,-27989,17039,-27989,17039,
-                                   -27788,17363,-27788,17363,-27788,17363,-27788,17363,
-                                   -27585,17686,-27585,17686,-27585,17686,-27585,17686,
-                                   -27377,18005,-27377,18005,-27377,18005,-27377,18005,
-                                   -27166,18323,-27166,18323,-27166,18323,-27166,18323,
-                                   -26951,18637,-26951,18637,-26951,18637,-26951,18637,
-                                   -26732,18950,-26732,18950,-26732,18950,-26732,18950,
-                                   -26510,19259,-26510,19259,-26510,19259,-26510,19259,
-                                   -26284,19567,-26284,19567,-26284,19567,-26284,19567,
-                                   -26054,19871,-26054,19871,-26054,19871,-26054,19871,
-                                   -25821,20173,-25821,20173,-25821,20173,-25821,20173,
-                                   -25585,20472,-25585,20472,-25585,20472,-25585,20472,
-                                   -25345,20768,-25345,20768,-25345,20768,-25345,20768,
-                                   -25101,21062,-25101,21062,-25101,21062,-25101,21062,
-                                   -24855,21352,-24855,21352,-24855,21352,-24855,21352,
-                                   -24605,21640,-24605,21640,-24605,21640,-24605,21640,
-                                   -24351,21925,-24351,21925,-24351,21925,-24351,21925,
-                                   -24094,22207,-24094,22207,-24094,22207,-24094,22207,
-                                   -23834,22486,-23834,22486,-23834,22486,-23834,22486,
-                                   -23571,22761,-23571,22761,-23571,22761,-23571,22761,
-                                   -23305,23034,-23305,23034,-23305,23034,-23305,23034,
-                                   -23035,23304,-23035,23304,-23035,23304,-23035,23304,
-                                   -22762,23570,-22762,23570,-22762,23570,-22762,23570,
-                                   -22487,23833,-22487,23833,-22487,23833,-22487,23833,
-                                   -22208,24093,-22208,24093,-22208,24093,-22208,24093,
-                                   -21926,24350,-21926,24350,-21926,24350,-21926,24350,
-                                   -21641,24604,-21641,24604,-21641,24604,-21641,24604,
-                                   -21353,24854,-21353,24854,-21353,24854,-21353,24854,
-                                   -21063,25100,-21063,25100,-21063,25100,-21063,25100,
-                                   -20769,25344,-20769,25344,-20769,25344,-20769,25344,
-                                   -20473,25584,-20473,25584,-20473,25584,-20473,25584,
-                                   -20174,25820,-20174,25820,-20174,25820,-20174,25820,
-                                   -19872,26053,-19872,26053,-19872,26053,-19872,26053,
-                                   -19568,26283,-19568,26283,-19568,26283,-19568,26283,
-                                   -19260,26509,-19260,26509,-19260,26509,-19260,26509,
-                                   -18951,26731,-18951,26731,-18951,26731,-18951,26731,
-                                   -18638,26950,-18638,26950,-18638,26950,-18638,26950,
-                                   -18324,27165,-18324,27165,-18324,27165,-18324,27165,
-                                   -18006,27376,-18006,27376,-18006,27376,-18006,27376,
-                                   -17687,27584,-17687,27584,-17687,27584,-17687,27584,
-                                   -17364,27787,-17364,27787,-17364,27787,-17364,27787,
-                                   -17040,27988,-17040,27988,-17040,27988,-17040,27988,
-                                   -16713,28184,-16713,28184,-16713,28184,-16713,28184
-                                  };
+static int16_t twa1080[359*2*4];
+static int16_t twb1080[359*2*4];
 
 void dft1080(int16_t *x,int16_t *y,unsigned char scale_flag)  // 360 x 3
 {
@@ -16591,906 +8410,9 @@ void dft1080(int16_t *x,int16_t *y,unsigned char scale_flag)  // 360 x 3
 
 };
 
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(1:287)/1152));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(1:287)/1152));
-twc = floor(32767*exp(-sqrt(-1)*2*pi*3*(1:287)/1152));
-twa2 = zeros(1,2*287);
-twb2 = zeros(1,2*287);
-twc2 = zeros(1,2*287);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-twc2(1:2:end) = real(twc);
-twc2(2:2:end) = imag(twc);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t twa1152[287*2*4] = {");
-for i=1:2:(2*286)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1),twa2(i),twa2(i+1));
-fprintf(fd,"\nstatic int16_t twb1152[287*2*4] = {");
-for i=1:2:(2*286)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1),twb2(i),twb2(i+1));
-fprintf(fd,"\nstatic int16_t twc1152[287*2*4] = {");
-for i=1:2:(2*286)
-  fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d,\n",twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1));
-end
-i=i+2;
-fprintf(fd,"%d,%d,%d,%d,%d,%d,%d,%d};\n",twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1),twc2(i),twc2(i+1));
-fclose(fd);
-*/
-static int16_t twa1152[287*2*4] = {32766,-179,32766,-179,32766,-179,32766,-179,
-                                   32765,-358,32765,-358,32765,-358,32765,-358,
-                                   32762,-537,32762,-537,32762,-537,32762,-537,
-                                   32759,-715,32759,-715,32759,-715,32759,-715,
-                                   32754,-894,32754,-894,32754,-894,32754,-894,
-                                   32749,-1073,32749,-1073,32749,-1073,32749,-1073,
-                                   32743,-1251,32743,-1251,32743,-1251,32743,-1251,
-                                   32735,-1430,32735,-1430,32735,-1430,32735,-1430,
-                                   32727,-1608,32727,-1608,32727,-1608,32727,-1608,
-                                   32718,-1787,32718,-1787,32718,-1787,32718,-1787,
-                                   32708,-1965,32708,-1965,32708,-1965,32708,-1965,
-                                   32696,-2144,32696,-2144,32696,-2144,32696,-2144,
-                                   32684,-2322,32684,-2322,32684,-2322,32684,-2322,
-                                   32671,-2500,32671,-2500,32671,-2500,32671,-2500,
-                                   32657,-2678,32657,-2678,32657,-2678,32657,-2678,
-                                   32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                   32626,-3034,32626,-3034,32626,-3034,32626,-3034,
-                                   32609,-3212,32609,-3212,32609,-3212,32609,-3212,
-                                   32591,-3390,32591,-3390,32591,-3390,32591,-3390,
-                                   32572,-3568,32572,-3568,32572,-3568,32572,-3568,
-                                   32552,-3745,32552,-3745,32552,-3745,32552,-3745,
-                                   32531,-3923,32531,-3923,32531,-3923,32531,-3923,
-                                   32509,-4100,32509,-4100,32509,-4100,32509,-4100,
-                                   32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                   32462,-4455,32462,-4455,32462,-4455,32462,-4455,
-                                   32438,-4632,32438,-4632,32438,-4632,32438,-4632,
-                                   32412,-4808,32412,-4808,32412,-4808,32412,-4808,
-                                   32385,-4985,32385,-4985,32385,-4985,32385,-4985,
-                                   32357,-5162,32357,-5162,32357,-5162,32357,-5162,
-                                   32329,-5338,32329,-5338,32329,-5338,32329,-5338,
-                                   32299,-5514,32299,-5514,32299,-5514,32299,-5514,
-                                   32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                   32237,-5866,32237,-5866,32237,-5866,32237,-5866,
-                                   32205,-6042,32205,-6042,32205,-6042,32205,-6042,
-                                   32171,-6218,32171,-6218,32171,-6218,32171,-6218,
-                                   32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                   32102,-6568,32102,-6568,32102,-6568,32102,-6568,
-                                   32065,-6743,32065,-6743,32065,-6743,32065,-6743,
-                                   32028,-6918,32028,-6918,32028,-6918,32028,-6918,
-                                   31990,-7093,31990,-7093,31990,-7093,31990,-7093,
-                                   31951,-7267,31951,-7267,31951,-7267,31951,-7267,
-                                   31911,-7441,31911,-7441,31911,-7441,31911,-7441,
-                                   31869,-7615,31869,-7615,31869,-7615,31869,-7615,
-                                   31827,-7789,31827,-7789,31827,-7789,31827,-7789,
-                                   31785,-7962,31785,-7962,31785,-7962,31785,-7962,
-                                   31741,-8135,31741,-8135,31741,-8135,31741,-8135,
-                                   31696,-8308,31696,-8308,31696,-8308,31696,-8308,
-                                   31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                   31603,-8654,31603,-8654,31603,-8654,31603,-8654,
-                                   31556,-8826,31556,-8826,31556,-8826,31556,-8826,
-                                   31507,-8998,31507,-8998,31507,-8998,31507,-8998,
-                                   31457,-9170,31457,-9170,31457,-9170,31457,-9170,
-                                   31407,-9341,31407,-9341,31407,-9341,31407,-9341,
-                                   31356,-9512,31356,-9512,31356,-9512,31356,-9512,
-                                   31303,-9683,31303,-9683,31303,-9683,31303,-9683,
-                                   31250,-9854,31250,-9854,31250,-9854,31250,-9854,
-                                   31196,-10024,31196,-10024,31196,-10024,31196,-10024,
-                                   31141,-10194,31141,-10194,31141,-10194,31141,-10194,
-                                   31085,-10364,31085,-10364,31085,-10364,31085,-10364,
-                                   31028,-10533,31028,-10533,31028,-10533,31028,-10533,
-                                   30970,-10702,30970,-10702,30970,-10702,30970,-10702,
-                                   30911,-10871,30911,-10871,30911,-10871,30911,-10871,
-                                   30851,-11039,30851,-11039,30851,-11039,30851,-11039,
-                                   30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                   30729,-11375,30729,-11375,30729,-11375,30729,-11375,
-                                   30666,-11543,30666,-11543,30666,-11543,30666,-11543,
-                                   30603,-11710,30603,-11710,30603,-11710,30603,-11710,
-                                   30539,-11877,30539,-11877,30539,-11877,30539,-11877,
-                                   30473,-12043,30473,-12043,30473,-12043,30473,-12043,
-                                   30407,-12209,30407,-12209,30407,-12209,30407,-12209,
-                                   30340,-12375,30340,-12375,30340,-12375,30340,-12375,
-                                   30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                   30203,-12705,30203,-12705,30203,-12705,30203,-12705,
-                                   30134,-12869,30134,-12869,30134,-12869,30134,-12869,
-                                   30063,-13034,30063,-13034,30063,-13034,30063,-13034,
-                                   29992,-13197,29992,-13197,29992,-13197,29992,-13197,
-                                   29919,-13361,29919,-13361,29919,-13361,29919,-13361,
-                                   29846,-13524,29846,-13524,29846,-13524,29846,-13524,
-                                   29772,-13686,29772,-13686,29772,-13686,29772,-13686,
-                                   29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                   29621,-14010,29621,-14010,29621,-14010,29621,-14010,
-                                   29544,-14172,29544,-14172,29544,-14172,29544,-14172,
-                                   29466,-14332,29466,-14332,29466,-14332,29466,-14332,
-                                   29387,-14493,29387,-14493,29387,-14493,29387,-14493,
-                                   29308,-14653,29308,-14653,29308,-14653,29308,-14653,
-                                   29227,-14813,29227,-14813,29227,-14813,29227,-14813,
-                                   29146,-14972,29146,-14972,29146,-14972,29146,-14972,
-                                   29064,-15131,29064,-15131,29064,-15131,29064,-15131,
-                                   28981,-15289,28981,-15289,28981,-15289,28981,-15289,
-                                   28897,-15447,28897,-15447,28897,-15447,28897,-15447,
-                                   28813,-15604,28813,-15604,28813,-15604,28813,-15604,
-                                   28727,-15761,28727,-15761,28727,-15761,28727,-15761,
-                                   28641,-15918,28641,-15918,28641,-15918,28641,-15918,
-                                   28554,-16073,28554,-16073,28554,-16073,28554,-16073,
-                                   28465,-16229,28465,-16229,28465,-16229,28465,-16229,
-                                   28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                   28287,-16539,28287,-16539,28287,-16539,28287,-16539,
-                                   28196,-16693,28196,-16693,28196,-16693,28196,-16693,
-                                   28105,-16846,28105,-16846,28105,-16846,28105,-16846,
-                                   28012,-16999,28012,-16999,28012,-16999,28012,-16999,
-                                   27919,-17152,27919,-17152,27919,-17152,27919,-17152,
-                                   27825,-17304,27825,-17304,27825,-17304,27825,-17304,
-                                   27731,-17455,27731,-17455,27731,-17455,27731,-17455,
-                                   27635,-17606,27635,-17606,27635,-17606,27635,-17606,
-                                   27538,-17757,27538,-17757,27538,-17757,27538,-17757,
-                                   27441,-17907,27441,-17907,27441,-17907,27441,-17907,
-                                   27343,-18056,27343,-18056,27343,-18056,27343,-18056,
-                                   27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                   27145,-18353,27145,-18353,27145,-18353,27145,-18353,
-                                   27044,-18501,27044,-18501,27044,-18501,27044,-18501,
-                                   26943,-18648,26943,-18648,26943,-18648,26943,-18648,
-                                   26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                   26738,-18941,26738,-18941,26738,-18941,26738,-18941,
-                                   26634,-19087,26634,-19087,26634,-19087,26634,-19087,
-                                   26530,-19232,26530,-19232,26530,-19232,26530,-19232,
-                                   26424,-19376,26424,-19376,26424,-19376,26424,-19376,
-                                   26318,-19520,26318,-19520,26318,-19520,26318,-19520,
-                                   26211,-19663,26211,-19663,26211,-19663,26211,-19663,
-                                   26104,-19806,26104,-19806,26104,-19806,26104,-19806,
-                                   25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                   25886,-20089,25886,-20089,25886,-20089,25886,-20089,
-                                   25776,-20230,25776,-20230,25776,-20230,25776,-20230,
-                                   25665,-20370,25665,-20370,25665,-20370,25665,-20370,
-                                   25554,-20510,25554,-20510,25554,-20510,25554,-20510,
-                                   25442,-20649,25442,-20649,25442,-20649,25442,-20649,
-                                   25329,-20788,25329,-20788,25329,-20788,25329,-20788,
-                                   25215,-20926,25215,-20926,25215,-20926,25215,-20926,
-                                   25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                   24985,-21199,24985,-21199,24985,-21199,24985,-21199,
-                                   24869,-21335,24869,-21335,24869,-21335,24869,-21335,
-                                   24753,-21471,24753,-21471,24753,-21471,24753,-21471,
-                                   24635,-21605,24635,-21605,24635,-21605,24635,-21605,
-                                   24517,-21739,24517,-21739,24517,-21739,24517,-21739,
-                                   24398,-21873,24398,-21873,24398,-21873,24398,-21873,
-                                   24278,-22005,24278,-22005,24278,-22005,24278,-22005,
-                                   24158,-22138,24158,-22138,24158,-22138,24158,-22138,
-                                   24037,-22269,24037,-22269,24037,-22269,24037,-22269,
-                                   23915,-22400,23915,-22400,23915,-22400,23915,-22400,
-                                   23792,-22530,23792,-22530,23792,-22530,23792,-22530,
-                                   23669,-22659,23669,-22659,23669,-22659,23669,-22659,
-                                   23545,-22788,23545,-22788,23545,-22788,23545,-22788,
-                                   23421,-22916,23421,-22916,23421,-22916,23421,-22916,
-                                   23295,-23044,23295,-23044,23295,-23044,23295,-23044,
-                                   23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                   23043,-23296,23043,-23296,23043,-23296,23043,-23296,
-                                   22915,-23422,22915,-23422,22915,-23422,22915,-23422,
-                                   22787,-23546,22787,-23546,22787,-23546,22787,-23546,
-                                   22658,-23670,22658,-23670,22658,-23670,22658,-23670,
-                                   22529,-23793,22529,-23793,22529,-23793,22529,-23793,
-                                   22399,-23916,22399,-23916,22399,-23916,22399,-23916,
-                                   22268,-24038,22268,-24038,22268,-24038,22268,-24038,
-                                   22137,-24159,22137,-24159,22137,-24159,22137,-24159,
-                                   22004,-24279,22004,-24279,22004,-24279,22004,-24279,
-                                   21872,-24399,21872,-24399,21872,-24399,21872,-24399,
-                                   21738,-24518,21738,-24518,21738,-24518,21738,-24518,
-                                   21604,-24636,21604,-24636,21604,-24636,21604,-24636,
-                                   21470,-24754,21470,-24754,21470,-24754,21470,-24754,
-                                   21334,-24870,21334,-24870,21334,-24870,21334,-24870,
-                                   21198,-24986,21198,-24986,21198,-24986,21198,-24986,
-                                   21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                   20925,-25216,20925,-25216,20925,-25216,20925,-25216,
-                                   20787,-25330,20787,-25330,20787,-25330,20787,-25330,
-                                   20648,-25443,20648,-25443,20648,-25443,20648,-25443,
-                                   20509,-25555,20509,-25555,20509,-25555,20509,-25555,
-                                   20369,-25666,20369,-25666,20369,-25666,20369,-25666,
-                                   20229,-25777,20229,-25777,20229,-25777,20229,-25777,
-                                   20088,-25887,20088,-25887,20088,-25887,20088,-25887,
-                                   19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                   19805,-26105,19805,-26105,19805,-26105,19805,-26105,
-                                   19662,-26212,19662,-26212,19662,-26212,19662,-26212,
-                                   19519,-26319,19519,-26319,19519,-26319,19519,-26319,
-                                   19375,-26425,19375,-26425,19375,-26425,19375,-26425,
-                                   19231,-26531,19231,-26531,19231,-26531,19231,-26531,
-                                   19086,-26635,19086,-26635,19086,-26635,19086,-26635,
-                                   18940,-26739,18940,-26739,18940,-26739,18940,-26739,
-                                   18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                   18647,-26944,18647,-26944,18647,-26944,18647,-26944,
-                                   18500,-27045,18500,-27045,18500,-27045,18500,-27045,
-                                   18352,-27146,18352,-27146,18352,-27146,18352,-27146,
-                                   18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                   18055,-27344,18055,-27344,18055,-27344,18055,-27344,
-                                   17906,-27442,17906,-27442,17906,-27442,17906,-27442,
-                                   17756,-27539,17756,-27539,17756,-27539,17756,-27539,
-                                   17605,-27636,17605,-27636,17605,-27636,17605,-27636,
-                                   17454,-27732,17454,-27732,17454,-27732,17454,-27732,
-                                   17303,-27826,17303,-27826,17303,-27826,17303,-27826,
-                                   17151,-27920,17151,-27920,17151,-27920,17151,-27920,
-                                   16998,-28013,16998,-28013,16998,-28013,16998,-28013,
-                                   16845,-28106,16845,-28106,16845,-28106,16845,-28106,
-                                   16692,-28197,16692,-28197,16692,-28197,16692,-28197,
-                                   16538,-28288,16538,-28288,16538,-28288,16538,-28288,
-                                   16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                   16228,-28466,16228,-28466,16228,-28466,16228,-28466,
-                                   16072,-28555,16072,-28555,16072,-28555,16072,-28555,
-                                   15917,-28642,15917,-28642,15917,-28642,15917,-28642,
-                                   15760,-28728,15760,-28728,15760,-28728,15760,-28728,
-                                   15603,-28814,15603,-28814,15603,-28814,15603,-28814,
-                                   15446,-28898,15446,-28898,15446,-28898,15446,-28898,
-                                   15288,-28982,15288,-28982,15288,-28982,15288,-28982,
-                                   15130,-29065,15130,-29065,15130,-29065,15130,-29065,
-                                   14971,-29147,14971,-29147,14971,-29147,14971,-29147,
-                                   14812,-29228,14812,-29228,14812,-29228,14812,-29228,
-                                   14652,-29309,14652,-29309,14652,-29309,14652,-29309,
-                                   14492,-29388,14492,-29388,14492,-29388,14492,-29388,
-                                   14331,-29467,14331,-29467,14331,-29467,14331,-29467,
-                                   14171,-29545,14171,-29545,14171,-29545,14171,-29545,
-                                   14009,-29622,14009,-29622,14009,-29622,14009,-29622,
-                                   13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                   13685,-29773,13685,-29773,13685,-29773,13685,-29773,
-                                   13523,-29847,13523,-29847,13523,-29847,13523,-29847,
-                                   13360,-29920,13360,-29920,13360,-29920,13360,-29920,
-                                   13196,-29993,13196,-29993,13196,-29993,13196,-29993,
-                                   13033,-30064,13033,-30064,13033,-30064,13033,-30064,
-                                   12868,-30135,12868,-30135,12868,-30135,12868,-30135,
-                                   12704,-30204,12704,-30204,12704,-30204,12704,-30204,
-                                   12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                   12374,-30341,12374,-30341,12374,-30341,12374,-30341,
-                                   12208,-30408,12208,-30408,12208,-30408,12208,-30408,
-                                   12042,-30474,12042,-30474,12042,-30474,12042,-30474,
-                                   11876,-30540,11876,-30540,11876,-30540,11876,-30540,
-                                   11709,-30604,11709,-30604,11709,-30604,11709,-30604,
-                                   11542,-30667,11542,-30667,11542,-30667,11542,-30667,
-                                   11374,-30730,11374,-30730,11374,-30730,11374,-30730,
-                                   11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                   11038,-30852,11038,-30852,11038,-30852,11038,-30852,
-                                   10870,-30912,10870,-30912,10870,-30912,10870,-30912,
-                                   10701,-30971,10701,-30971,10701,-30971,10701,-30971,
-                                   10532,-31029,10532,-31029,10532,-31029,10532,-31029,
-                                   10363,-31086,10363,-31086,10363,-31086,10363,-31086,
-                                   10193,-31142,10193,-31142,10193,-31142,10193,-31142,
-                                   10023,-31197,10023,-31197,10023,-31197,10023,-31197,
-                                   9853,-31251,9853,-31251,9853,-31251,9853,-31251,
-                                   9682,-31304,9682,-31304,9682,-31304,9682,-31304,
-                                   9511,-31357,9511,-31357,9511,-31357,9511,-31357,
-                                   9340,-31408,9340,-31408,9340,-31408,9340,-31408,
-                                   9169,-31458,9169,-31458,9169,-31458,9169,-31458,
-                                   8997,-31508,8997,-31508,8997,-31508,8997,-31508,
-                                   8825,-31557,8825,-31557,8825,-31557,8825,-31557,
-                                   8653,-31604,8653,-31604,8653,-31604,8653,-31604,
-                                   8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                   8307,-31697,8307,-31697,8307,-31697,8307,-31697,
-                                   8134,-31742,8134,-31742,8134,-31742,8134,-31742,
-                                   7961,-31786,7961,-31786,7961,-31786,7961,-31786,
-                                   7788,-31828,7788,-31828,7788,-31828,7788,-31828,
-                                   7614,-31870,7614,-31870,7614,-31870,7614,-31870,
-                                   7440,-31912,7440,-31912,7440,-31912,7440,-31912,
-                                   7266,-31952,7266,-31952,7266,-31952,7266,-31952,
-                                   7092,-31991,7092,-31991,7092,-31991,7092,-31991,
-                                   6917,-32029,6917,-32029,6917,-32029,6917,-32029,
-                                   6742,-32066,6742,-32066,6742,-32066,6742,-32066,
-                                   6567,-32103,6567,-32103,6567,-32103,6567,-32103,
-                                   6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                   6217,-32172,6217,-32172,6217,-32172,6217,-32172,
-                                   6041,-32206,6041,-32206,6041,-32206,6041,-32206,
-                                   5865,-32238,5865,-32238,5865,-32238,5865,-32238,
-                                   5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                   5513,-32300,5513,-32300,5513,-32300,5513,-32300,
-                                   5337,-32330,5337,-32330,5337,-32330,5337,-32330,
-                                   5161,-32358,5161,-32358,5161,-32358,5161,-32358,
-                                   4984,-32386,4984,-32386,4984,-32386,4984,-32386,
-                                   4807,-32413,4807,-32413,4807,-32413,4807,-32413,
-                                   4631,-32439,4631,-32439,4631,-32439,4631,-32439,
-                                   4454,-32463,4454,-32463,4454,-32463,4454,-32463,
-                                   4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                   4099,-32510,4099,-32510,4099,-32510,4099,-32510,
-                                   3922,-32532,3922,-32532,3922,-32532,3922,-32532,
-                                   3744,-32553,3744,-32553,3744,-32553,3744,-32553,
-                                   3567,-32573,3567,-32573,3567,-32573,3567,-32573,
-                                   3389,-32592,3389,-32592,3389,-32592,3389,-32592,
-                                   3211,-32610,3211,-32610,3211,-32610,3211,-32610,
-                                   3033,-32627,3033,-32627,3033,-32627,3033,-32627,
-                                   2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                   2677,-32658,2677,-32658,2677,-32658,2677,-32658,
-                                   2499,-32672,2499,-32672,2499,-32672,2499,-32672,
-                                   2321,-32685,2321,-32685,2321,-32685,2321,-32685,
-                                   2143,-32697,2143,-32697,2143,-32697,2143,-32697,
-                                   1964,-32709,1964,-32709,1964,-32709,1964,-32709,
-                                   1786,-32719,1786,-32719,1786,-32719,1786,-32719,
-                                   1607,-32728,1607,-32728,1607,-32728,1607,-32728,
-                                   1429,-32736,1429,-32736,1429,-32736,1429,-32736,
-                                   1250,-32744,1250,-32744,1250,-32744,1250,-32744,
-                                   1072,-32750,1072,-32750,1072,-32750,1072,-32750,
-                                   893,-32755,893,-32755,893,-32755,893,-32755,
-                                   714,-32760,714,-32760,714,-32760,714,-32760,
-                                   536,-32763,536,-32763,536,-32763,536,-32763,
-                                   357,-32766,357,-32766,357,-32766,357,-32766,
-                                   178,-32767,178,-32767,178,-32767,178,-32767
-                                  };
-
-static int16_t twb1152[287*2*4] = {32765,-358,32765,-358,32765,-358,32765,-358,
-                                   32759,-715,32759,-715,32759,-715,32759,-715,
-                                   32749,-1073,32749,-1073,32749,-1073,32749,-1073,
-                                   32735,-1430,32735,-1430,32735,-1430,32735,-1430,
-                                   32718,-1787,32718,-1787,32718,-1787,32718,-1787,
-                                   32696,-2144,32696,-2144,32696,-2144,32696,-2144,
-                                   32671,-2500,32671,-2500,32671,-2500,32671,-2500,
-                                   32642,-2856,32642,-2856,32642,-2856,32642,-2856,
-                                   32609,-3212,32609,-3212,32609,-3212,32609,-3212,
-                                   32572,-3568,32572,-3568,32572,-3568,32572,-3568,
-                                   32531,-3923,32531,-3923,32531,-3923,32531,-3923,
-                                   32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                   32438,-4632,32438,-4632,32438,-4632,32438,-4632,
-                                   32385,-4985,32385,-4985,32385,-4985,32385,-4985,
-                                   32329,-5338,32329,-5338,32329,-5338,32329,-5338,
-                                   32269,-5690,32269,-5690,32269,-5690,32269,-5690,
-                                   32205,-6042,32205,-6042,32205,-6042,32205,-6042,
-                                   32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                   32065,-6743,32065,-6743,32065,-6743,32065,-6743,
-                                   31990,-7093,31990,-7093,31990,-7093,31990,-7093,
-                                   31911,-7441,31911,-7441,31911,-7441,31911,-7441,
-                                   31827,-7789,31827,-7789,31827,-7789,31827,-7789,
-                                   31741,-8135,31741,-8135,31741,-8135,31741,-8135,
-                                   31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                   31556,-8826,31556,-8826,31556,-8826,31556,-8826,
-                                   31457,-9170,31457,-9170,31457,-9170,31457,-9170,
-                                   31356,-9512,31356,-9512,31356,-9512,31356,-9512,
-                                   31250,-9854,31250,-9854,31250,-9854,31250,-9854,
-                                   31141,-10194,31141,-10194,31141,-10194,31141,-10194,
-                                   31028,-10533,31028,-10533,31028,-10533,31028,-10533,
-                                   30911,-10871,30911,-10871,30911,-10871,30911,-10871,
-                                   30790,-11207,30790,-11207,30790,-11207,30790,-11207,
-                                   30666,-11543,30666,-11543,30666,-11543,30666,-11543,
-                                   30539,-11877,30539,-11877,30539,-11877,30539,-11877,
-                                   30407,-12209,30407,-12209,30407,-12209,30407,-12209,
-                                   30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                   30134,-12869,30134,-12869,30134,-12869,30134,-12869,
-                                   29992,-13197,29992,-13197,29992,-13197,29992,-13197,
-                                   29846,-13524,29846,-13524,29846,-13524,29846,-13524,
-                                   29696,-13848,29696,-13848,29696,-13848,29696,-13848,
-                                   29544,-14172,29544,-14172,29544,-14172,29544,-14172,
-                                   29387,-14493,29387,-14493,29387,-14493,29387,-14493,
-                                   29227,-14813,29227,-14813,29227,-14813,29227,-14813,
-                                   29064,-15131,29064,-15131,29064,-15131,29064,-15131,
-                                   28897,-15447,28897,-15447,28897,-15447,28897,-15447,
-                                   28727,-15761,28727,-15761,28727,-15761,28727,-15761,
-                                   28554,-16073,28554,-16073,28554,-16073,28554,-16073,
-                                   28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                   28196,-16693,28196,-16693,28196,-16693,28196,-16693,
-                                   28012,-16999,28012,-16999,28012,-16999,28012,-16999,
-                                   27825,-17304,27825,-17304,27825,-17304,27825,-17304,
-                                   27635,-17606,27635,-17606,27635,-17606,27635,-17606,
-                                   27441,-17907,27441,-17907,27441,-17907,27441,-17907,
-                                   27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                   27044,-18501,27044,-18501,27044,-18501,27044,-18501,
-                                   26841,-18795,26841,-18795,26841,-18795,26841,-18795,
-                                   26634,-19087,26634,-19087,26634,-19087,26634,-19087,
-                                   26424,-19376,26424,-19376,26424,-19376,26424,-19376,
-                                   26211,-19663,26211,-19663,26211,-19663,26211,-19663,
-                                   25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                   25776,-20230,25776,-20230,25776,-20230,25776,-20230,
-                                   25554,-20510,25554,-20510,25554,-20510,25554,-20510,
-                                   25329,-20788,25329,-20788,25329,-20788,25329,-20788,
-                                   25100,-21063,25100,-21063,25100,-21063,25100,-21063,
-                                   24869,-21335,24869,-21335,24869,-21335,24869,-21335,
-                                   24635,-21605,24635,-21605,24635,-21605,24635,-21605,
-                                   24398,-21873,24398,-21873,24398,-21873,24398,-21873,
-                                   24158,-22138,24158,-22138,24158,-22138,24158,-22138,
-                                   23915,-22400,23915,-22400,23915,-22400,23915,-22400,
-                                   23669,-22659,23669,-22659,23669,-22659,23669,-22659,
-                                   23421,-22916,23421,-22916,23421,-22916,23421,-22916,
-                                   23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                   22915,-23422,22915,-23422,22915,-23422,22915,-23422,
-                                   22658,-23670,22658,-23670,22658,-23670,22658,-23670,
-                                   22399,-23916,22399,-23916,22399,-23916,22399,-23916,
-                                   22137,-24159,22137,-24159,22137,-24159,22137,-24159,
-                                   21872,-24399,21872,-24399,21872,-24399,21872,-24399,
-                                   21604,-24636,21604,-24636,21604,-24636,21604,-24636,
-                                   21334,-24870,21334,-24870,21334,-24870,21334,-24870,
-                                   21062,-25101,21062,-25101,21062,-25101,21062,-25101,
-                                   20787,-25330,20787,-25330,20787,-25330,20787,-25330,
-                                   20509,-25555,20509,-25555,20509,-25555,20509,-25555,
-                                   20229,-25777,20229,-25777,20229,-25777,20229,-25777,
-                                   19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                   19662,-26212,19662,-26212,19662,-26212,19662,-26212,
-                                   19375,-26425,19375,-26425,19375,-26425,19375,-26425,
-                                   19086,-26635,19086,-26635,19086,-26635,19086,-26635,
-                                   18794,-26842,18794,-26842,18794,-26842,18794,-26842,
-                                   18500,-27045,18500,-27045,18500,-27045,18500,-27045,
-                                   18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                   17906,-27442,17906,-27442,17906,-27442,17906,-27442,
-                                   17605,-27636,17605,-27636,17605,-27636,17605,-27636,
-                                   17303,-27826,17303,-27826,17303,-27826,17303,-27826,
-                                   16998,-28013,16998,-28013,16998,-28013,16998,-28013,
-                                   16692,-28197,16692,-28197,16692,-28197,16692,-28197,
-                                   16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                   16072,-28555,16072,-28555,16072,-28555,16072,-28555,
-                                   15760,-28728,15760,-28728,15760,-28728,15760,-28728,
-                                   15446,-28898,15446,-28898,15446,-28898,15446,-28898,
-                                   15130,-29065,15130,-29065,15130,-29065,15130,-29065,
-                                   14812,-29228,14812,-29228,14812,-29228,14812,-29228,
-                                   14492,-29388,14492,-29388,14492,-29388,14492,-29388,
-                                   14171,-29545,14171,-29545,14171,-29545,14171,-29545,
-                                   13847,-29697,13847,-29697,13847,-29697,13847,-29697,
-                                   13523,-29847,13523,-29847,13523,-29847,13523,-29847,
-                                   13196,-29993,13196,-29993,13196,-29993,13196,-29993,
-                                   12868,-30135,12868,-30135,12868,-30135,12868,-30135,
-                                   12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                   12208,-30408,12208,-30408,12208,-30408,12208,-30408,
-                                   11876,-30540,11876,-30540,11876,-30540,11876,-30540,
-                                   11542,-30667,11542,-30667,11542,-30667,11542,-30667,
-                                   11206,-30791,11206,-30791,11206,-30791,11206,-30791,
-                                   10870,-30912,10870,-30912,10870,-30912,10870,-30912,
-                                   10532,-31029,10532,-31029,10532,-31029,10532,-31029,
-                                   10193,-31142,10193,-31142,10193,-31142,10193,-31142,
-                                   9853,-31251,9853,-31251,9853,-31251,9853,-31251,
-                                   9511,-31357,9511,-31357,9511,-31357,9511,-31357,
-                                   9169,-31458,9169,-31458,9169,-31458,9169,-31458,
-                                   8825,-31557,8825,-31557,8825,-31557,8825,-31557,
-                                   8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                   8134,-31742,8134,-31742,8134,-31742,8134,-31742,
-                                   7788,-31828,7788,-31828,7788,-31828,7788,-31828,
-                                   7440,-31912,7440,-31912,7440,-31912,7440,-31912,
-                                   7092,-31991,7092,-31991,7092,-31991,7092,-31991,
-                                   6742,-32066,6742,-32066,6742,-32066,6742,-32066,
-                                   6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                   6041,-32206,6041,-32206,6041,-32206,6041,-32206,
-                                   5689,-32270,5689,-32270,5689,-32270,5689,-32270,
-                                   5337,-32330,5337,-32330,5337,-32330,5337,-32330,
-                                   4984,-32386,4984,-32386,4984,-32386,4984,-32386,
-                                   4631,-32439,4631,-32439,4631,-32439,4631,-32439,
-                                   4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                   3922,-32532,3922,-32532,3922,-32532,3922,-32532,
-                                   3567,-32573,3567,-32573,3567,-32573,3567,-32573,
-                                   3211,-32610,3211,-32610,3211,-32610,3211,-32610,
-                                   2855,-32643,2855,-32643,2855,-32643,2855,-32643,
-                                   2499,-32672,2499,-32672,2499,-32672,2499,-32672,
-                                   2143,-32697,2143,-32697,2143,-32697,2143,-32697,
-                                   1786,-32719,1786,-32719,1786,-32719,1786,-32719,
-                                   1429,-32736,1429,-32736,1429,-32736,1429,-32736,
-                                   1072,-32750,1072,-32750,1072,-32750,1072,-32750,
-                                   714,-32760,714,-32760,714,-32760,714,-32760,
-                                   357,-32766,357,-32766,357,-32766,357,-32766,
-                                   0,-32767,0,-32767,0,-32767,0,-32767,
-                                   -358,-32766,-358,-32766,-358,-32766,-358,-32766,
-                                   -715,-32760,-715,-32760,-715,-32760,-715,-32760,
-                                   -1073,-32750,-1073,-32750,-1073,-32750,-1073,-32750,
-                                   -1430,-32736,-1430,-32736,-1430,-32736,-1430,-32736,
-                                   -1787,-32719,-1787,-32719,-1787,-32719,-1787,-32719,
-                                   -2144,-32697,-2144,-32697,-2144,-32697,-2144,-32697,
-                                   -2500,-32672,-2500,-32672,-2500,-32672,-2500,-32672,
-                                   -2856,-32643,-2856,-32643,-2856,-32643,-2856,-32643,
-                                   -3212,-32610,-3212,-32610,-3212,-32610,-3212,-32610,
-                                   -3568,-32573,-3568,-32573,-3568,-32573,-3568,-32573,
-                                   -3923,-32532,-3923,-32532,-3923,-32532,-3923,-32532,
-                                   -4277,-32487,-4277,-32487,-4277,-32487,-4277,-32487,
-                                   -4632,-32439,-4632,-32439,-4632,-32439,-4632,-32439,
-                                   -4985,-32386,-4985,-32386,-4985,-32386,-4985,-32386,
-                                   -5338,-32330,-5338,-32330,-5338,-32330,-5338,-32330,
-                                   -5690,-32270,-5690,-32270,-5690,-32270,-5690,-32270,
-                                   -6042,-32206,-6042,-32206,-6042,-32206,-6042,-32206,
-                                   -6393,-32138,-6393,-32138,-6393,-32138,-6393,-32138,
-                                   -6743,-32066,-6743,-32066,-6743,-32066,-6743,-32066,
-                                   -7093,-31991,-7093,-31991,-7093,-31991,-7093,-31991,
-                                   -7441,-31912,-7441,-31912,-7441,-31912,-7441,-31912,
-                                   -7789,-31828,-7789,-31828,-7789,-31828,-7789,-31828,
-                                   -8135,-31742,-8135,-31742,-8135,-31742,-8135,-31742,
-                                   -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                   -8826,-31557,-8826,-31557,-8826,-31557,-8826,-31557,
-                                   -9170,-31458,-9170,-31458,-9170,-31458,-9170,-31458,
-                                   -9512,-31357,-9512,-31357,-9512,-31357,-9512,-31357,
-                                   -9854,-31251,-9854,-31251,-9854,-31251,-9854,-31251,
-                                   -10194,-31142,-10194,-31142,-10194,-31142,-10194,-31142,
-                                   -10533,-31029,-10533,-31029,-10533,-31029,-10533,-31029,
-                                   -10871,-30912,-10871,-30912,-10871,-30912,-10871,-30912,
-                                   -11207,-30791,-11207,-30791,-11207,-30791,-11207,-30791,
-                                   -11543,-30667,-11543,-30667,-11543,-30667,-11543,-30667,
-                                   -11877,-30540,-11877,-30540,-11877,-30540,-11877,-30540,
-                                   -12209,-30408,-12209,-30408,-12209,-30408,-12209,-30408,
-                                   -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                   -12869,-30135,-12869,-30135,-12869,-30135,-12869,-30135,
-                                   -13197,-29993,-13197,-29993,-13197,-29993,-13197,-29993,
-                                   -13524,-29847,-13524,-29847,-13524,-29847,-13524,-29847,
-                                   -13848,-29697,-13848,-29697,-13848,-29697,-13848,-29697,
-                                   -14172,-29545,-14172,-29545,-14172,-29545,-14172,-29545,
-                                   -14493,-29388,-14493,-29388,-14493,-29388,-14493,-29388,
-                                   -14813,-29228,-14813,-29228,-14813,-29228,-14813,-29228,
-                                   -15131,-29065,-15131,-29065,-15131,-29065,-15131,-29065,
-                                   -15447,-28898,-15447,-28898,-15447,-28898,-15447,-28898,
-                                   -15761,-28728,-15761,-28728,-15761,-28728,-15761,-28728,
-                                   -16073,-28555,-16073,-28555,-16073,-28555,-16073,-28555,
-                                   -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                   -16693,-28197,-16693,-28197,-16693,-28197,-16693,-28197,
-                                   -16999,-28013,-16999,-28013,-16999,-28013,-16999,-28013,
-                                   -17304,-27826,-17304,-27826,-17304,-27826,-17304,-27826,
-                                   -17606,-27636,-17606,-27636,-17606,-27636,-17606,-27636,
-                                   -17907,-27442,-17907,-27442,-17907,-27442,-17907,-27442,
-                                   -18205,-27245,-18205,-27245,-18205,-27245,-18205,-27245,
-                                   -18501,-27045,-18501,-27045,-18501,-27045,-18501,-27045,
-                                   -18795,-26842,-18795,-26842,-18795,-26842,-18795,-26842,
-                                   -19087,-26635,-19087,-26635,-19087,-26635,-19087,-26635,
-                                   -19376,-26425,-19376,-26425,-19376,-26425,-19376,-26425,
-                                   -19663,-26212,-19663,-26212,-19663,-26212,-19663,-26212,
-                                   -19948,-25996,-19948,-25996,-19948,-25996,-19948,-25996,
-                                   -20230,-25777,-20230,-25777,-20230,-25777,-20230,-25777,
-                                   -20510,-25555,-20510,-25555,-20510,-25555,-20510,-25555,
-                                   -20788,-25330,-20788,-25330,-20788,-25330,-20788,-25330,
-                                   -21063,-25101,-21063,-25101,-21063,-25101,-21063,-25101,
-                                   -21335,-24870,-21335,-24870,-21335,-24870,-21335,-24870,
-                                   -21605,-24636,-21605,-24636,-21605,-24636,-21605,-24636,
-                                   -21873,-24399,-21873,-24399,-21873,-24399,-21873,-24399,
-                                   -22138,-24159,-22138,-24159,-22138,-24159,-22138,-24159,
-                                   -22400,-23916,-22400,-23916,-22400,-23916,-22400,-23916,
-                                   -22659,-23670,-22659,-23670,-22659,-23670,-22659,-23670,
-                                   -22916,-23422,-22916,-23422,-22916,-23422,-22916,-23422,
-                                   -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                   -23422,-22916,-23422,-22916,-23422,-22916,-23422,-22916,
-                                   -23670,-22659,-23670,-22659,-23670,-22659,-23670,-22659,
-                                   -23916,-22400,-23916,-22400,-23916,-22400,-23916,-22400,
-                                   -24159,-22138,-24159,-22138,-24159,-22138,-24159,-22138,
-                                   -24399,-21873,-24399,-21873,-24399,-21873,-24399,-21873,
-                                   -24636,-21605,-24636,-21605,-24636,-21605,-24636,-21605,
-                                   -24870,-21335,-24870,-21335,-24870,-21335,-24870,-21335,
-                                   -25101,-21063,-25101,-21063,-25101,-21063,-25101,-21063,
-                                   -25330,-20788,-25330,-20788,-25330,-20788,-25330,-20788,
-                                   -25555,-20510,-25555,-20510,-25555,-20510,-25555,-20510,
-                                   -25777,-20230,-25777,-20230,-25777,-20230,-25777,-20230,
-                                   -25996,-19948,-25996,-19948,-25996,-19948,-25996,-19948,
-                                   -26212,-19663,-26212,-19663,-26212,-19663,-26212,-19663,
-                                   -26425,-19376,-26425,-19376,-26425,-19376,-26425,-19376,
-                                   -26635,-19087,-26635,-19087,-26635,-19087,-26635,-19087,
-                                   -26842,-18795,-26842,-18795,-26842,-18795,-26842,-18795,
-                                   -27045,-18501,-27045,-18501,-27045,-18501,-27045,-18501,
-                                   -27245,-18205,-27245,-18205,-27245,-18205,-27245,-18205,
-                                   -27442,-17907,-27442,-17907,-27442,-17907,-27442,-17907,
-                                   -27636,-17606,-27636,-17606,-27636,-17606,-27636,-17606,
-                                   -27826,-17304,-27826,-17304,-27826,-17304,-27826,-17304,
-                                   -28013,-16999,-28013,-16999,-28013,-16999,-28013,-16999,
-                                   -28197,-16693,-28197,-16693,-28197,-16693,-28197,-16693,
-                                   -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                   -28555,-16073,-28555,-16073,-28555,-16073,-28555,-16073,
-                                   -28728,-15761,-28728,-15761,-28728,-15761,-28728,-15761,
-                                   -28898,-15447,-28898,-15447,-28898,-15447,-28898,-15447,
-                                   -29065,-15131,-29065,-15131,-29065,-15131,-29065,-15131,
-                                   -29228,-14813,-29228,-14813,-29228,-14813,-29228,-14813,
-                                   -29388,-14493,-29388,-14493,-29388,-14493,-29388,-14493,
-                                   -29545,-14172,-29545,-14172,-29545,-14172,-29545,-14172,
-                                   -29697,-13848,-29697,-13848,-29697,-13848,-29697,-13848,
-                                   -29847,-13524,-29847,-13524,-29847,-13524,-29847,-13524,
-                                   -29993,-13197,-29993,-13197,-29993,-13197,-29993,-13197,
-                                   -30135,-12869,-30135,-12869,-30135,-12869,-30135,-12869,
-                                   -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                                   -30408,-12209,-30408,-12209,-30408,-12209,-30408,-12209,
-                                   -30540,-11877,-30540,-11877,-30540,-11877,-30540,-11877,
-                                   -30667,-11543,-30667,-11543,-30667,-11543,-30667,-11543,
-                                   -30791,-11207,-30791,-11207,-30791,-11207,-30791,-11207,
-                                   -30912,-10871,-30912,-10871,-30912,-10871,-30912,-10871,
-                                   -31029,-10533,-31029,-10533,-31029,-10533,-31029,-10533,
-                                   -31142,-10194,-31142,-10194,-31142,-10194,-31142,-10194,
-                                   -31251,-9854,-31251,-9854,-31251,-9854,-31251,-9854,
-                                   -31357,-9512,-31357,-9512,-31357,-9512,-31357,-9512,
-                                   -31458,-9170,-31458,-9170,-31458,-9170,-31458,-9170,
-                                   -31557,-8826,-31557,-8826,-31557,-8826,-31557,-8826,
-                                   -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                                   -31742,-8135,-31742,-8135,-31742,-8135,-31742,-8135,
-                                   -31828,-7789,-31828,-7789,-31828,-7789,-31828,-7789,
-                                   -31912,-7441,-31912,-7441,-31912,-7441,-31912,-7441,
-                                   -31991,-7093,-31991,-7093,-31991,-7093,-31991,-7093,
-                                   -32066,-6743,-32066,-6743,-32066,-6743,-32066,-6743,
-                                   -32138,-6393,-32138,-6393,-32138,-6393,-32138,-6393,
-                                   -32206,-6042,-32206,-6042,-32206,-6042,-32206,-6042,
-                                   -32270,-5690,-32270,-5690,-32270,-5690,-32270,-5690,
-                                   -32330,-5338,-32330,-5338,-32330,-5338,-32330,-5338,
-                                   -32386,-4985,-32386,-4985,-32386,-4985,-32386,-4985,
-                                   -32439,-4632,-32439,-4632,-32439,-4632,-32439,-4632,
-                                   -32487,-4277,-32487,-4277,-32487,-4277,-32487,-4277,
-                                   -32532,-3923,-32532,-3923,-32532,-3923,-32532,-3923,
-                                   -32573,-3568,-32573,-3568,-32573,-3568,-32573,-3568,
-                                   -32610,-3212,-32610,-3212,-32610,-3212,-32610,-3212,
-                                   -32643,-2856,-32643,-2856,-32643,-2856,-32643,-2856,
-                                   -32672,-2500,-32672,-2500,-32672,-2500,-32672,-2500,
-                                   -32697,-2144,-32697,-2144,-32697,-2144,-32697,-2144,
-                                   -32719,-1787,-32719,-1787,-32719,-1787,-32719,-1787,
-                                   -32736,-1430,-32736,-1430,-32736,-1430,-32736,-1430,
-                                   -32750,-1073,-32750,-1073,-32750,-1073,-32750,-1073,
-                                   -32760,-715,-32760,-715,-32760,-715,-32760,-715,
-                                   -32766,-358,-32766,-358,-32766,-358,-32766,-358
-                                  };
-
-static int16_t twc1152[287*2*4] = {32762,-537,32762,-537,32762,-537,32762,-537,
-                                   32749,-1073,32749,-1073,32749,-1073,32749,-1073,
-                                   32727,-1608,32727,-1608,32727,-1608,32727,-1608,
-                                   32696,-2144,32696,-2144,32696,-2144,32696,-2144,
-                                   32657,-2678,32657,-2678,32657,-2678,32657,-2678,
-                                   32609,-3212,32609,-3212,32609,-3212,32609,-3212,
-                                   32552,-3745,32552,-3745,32552,-3745,32552,-3745,
-                                   32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                                   32412,-4808,32412,-4808,32412,-4808,32412,-4808,
-                                   32329,-5338,32329,-5338,32329,-5338,32329,-5338,
-                                   32237,-5866,32237,-5866,32237,-5866,32237,-5866,
-                                   32137,-6393,32137,-6393,32137,-6393,32137,-6393,
-                                   32028,-6918,32028,-6918,32028,-6918,32028,-6918,
-                                   31911,-7441,31911,-7441,31911,-7441,31911,-7441,
-                                   31785,-7962,31785,-7962,31785,-7962,31785,-7962,
-                                   31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                                   31507,-8998,31507,-8998,31507,-8998,31507,-8998,
-                                   31356,-9512,31356,-9512,31356,-9512,31356,-9512,
-                                   31196,-10024,31196,-10024,31196,-10024,31196,-10024,
-                                   31028,-10533,31028,-10533,31028,-10533,31028,-10533,
-                                   30851,-11039,30851,-11039,30851,-11039,30851,-11039,
-                                   30666,-11543,30666,-11543,30666,-11543,30666,-11543,
-                                   30473,-12043,30473,-12043,30473,-12043,30473,-12043,
-                                   30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                                   30063,-13034,30063,-13034,30063,-13034,30063,-13034,
-                                   29846,-13524,29846,-13524,29846,-13524,29846,-13524,
-                                   29621,-14010,29621,-14010,29621,-14010,29621,-14010,
-                                   29387,-14493,29387,-14493,29387,-14493,29387,-14493,
-                                   29146,-14972,29146,-14972,29146,-14972,29146,-14972,
-                                   28897,-15447,28897,-15447,28897,-15447,28897,-15447,
-                                   28641,-15918,28641,-15918,28641,-15918,28641,-15918,
-                                   28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                                   28105,-16846,28105,-16846,28105,-16846,28105,-16846,
-                                   27825,-17304,27825,-17304,27825,-17304,27825,-17304,
-                                   27538,-17757,27538,-17757,27538,-17757,27538,-17757,
-                                   27244,-18205,27244,-18205,27244,-18205,27244,-18205,
-                                   26943,-18648,26943,-18648,26943,-18648,26943,-18648,
-                                   26634,-19087,26634,-19087,26634,-19087,26634,-19087,
-                                   26318,-19520,26318,-19520,26318,-19520,26318,-19520,
-                                   25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                                   25665,-20370,25665,-20370,25665,-20370,25665,-20370,
-                                   25329,-20788,25329,-20788,25329,-20788,25329,-20788,
-                                   24985,-21199,24985,-21199,24985,-21199,24985,-21199,
-                                   24635,-21605,24635,-21605,24635,-21605,24635,-21605,
-                                   24278,-22005,24278,-22005,24278,-22005,24278,-22005,
-                                   23915,-22400,23915,-22400,23915,-22400,23915,-22400,
-                                   23545,-22788,23545,-22788,23545,-22788,23545,-22788,
-                                   23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                                   22787,-23546,22787,-23546,22787,-23546,22787,-23546,
-                                   22399,-23916,22399,-23916,22399,-23916,22399,-23916,
-                                   22004,-24279,22004,-24279,22004,-24279,22004,-24279,
-                                   21604,-24636,21604,-24636,21604,-24636,21604,-24636,
-                                   21198,-24986,21198,-24986,21198,-24986,21198,-24986,
-                                   20787,-25330,20787,-25330,20787,-25330,20787,-25330,
-                                   20369,-25666,20369,-25666,20369,-25666,20369,-25666,
-                                   19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                                   19519,-26319,19519,-26319,19519,-26319,19519,-26319,
-                                   19086,-26635,19086,-26635,19086,-26635,19086,-26635,
-                                   18647,-26944,18647,-26944,18647,-26944,18647,-26944,
-                                   18204,-27245,18204,-27245,18204,-27245,18204,-27245,
-                                   17756,-27539,17756,-27539,17756,-27539,17756,-27539,
-                                   17303,-27826,17303,-27826,17303,-27826,17303,-27826,
-                                   16845,-28106,16845,-28106,16845,-28106,16845,-28106,
-                                   16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                                   15917,-28642,15917,-28642,15917,-28642,15917,-28642,
-                                   15446,-28898,15446,-28898,15446,-28898,15446,-28898,
-                                   14971,-29147,14971,-29147,14971,-29147,14971,-29147,
-                                   14492,-29388,14492,-29388,14492,-29388,14492,-29388,
-                                   14009,-29622,14009,-29622,14009,-29622,14009,-29622,
-                                   13523,-29847,13523,-29847,13523,-29847,13523,-29847,
-                                   13033,-30064,13033,-30064,13033,-30064,13033,-30064,
-                                   12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                                   12042,-30474,12042,-30474,12042,-30474,12042,-30474,
-                                   11542,-30667,11542,-30667,11542,-30667,11542,-30667,
-                                   11038,-30852,11038,-30852,11038,-30852,11038,-30852,
-                                   10532,-31029,10532,-31029,10532,-31029,10532,-31029,
-                                   10023,-31197,10023,-31197,10023,-31197,10023,-31197,
-                                   9511,-31357,9511,-31357,9511,-31357,9511,-31357,
-                                   8997,-31508,8997,-31508,8997,-31508,8997,-31508,
-                                   8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                                   7961,-31786,7961,-31786,7961,-31786,7961,-31786,
-                                   7440,-31912,7440,-31912,7440,-31912,7440,-31912,
-                                   6917,-32029,6917,-32029,6917,-32029,6917,-32029,
-                                   6392,-32138,6392,-32138,6392,-32138,6392,-32138,
-                                   5865,-32238,5865,-32238,5865,-32238,5865,-32238,
-                                   5337,-32330,5337,-32330,5337,-32330,5337,-32330,
-                                   4807,-32413,4807,-32413,4807,-32413,4807,-32413,
-                                   4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                                   3744,-32553,3744,-32553,3744,-32553,3744,-32553,
-                                   3211,-32610,3211,-32610,3211,-32610,3211,-32610,
-                                   2677,-32658,2677,-32658,2677,-32658,2677,-32658,
-                                   2143,-32697,2143,-32697,2143,-32697,2143,-32697,
-                                   1607,-32728,1607,-32728,1607,-32728,1607,-32728,
-                                   1072,-32750,1072,-32750,1072,-32750,1072,-32750,
-                                   536,-32763,536,-32763,536,-32763,536,-32763,
-                                   0,-32767,0,-32767,0,-32767,0,-32767,
-                                   -537,-32763,-537,-32763,-537,-32763,-537,-32763,
-                                   -1073,-32750,-1073,-32750,-1073,-32750,-1073,-32750,
-                                   -1608,-32728,-1608,-32728,-1608,-32728,-1608,-32728,
-                                   -2144,-32697,-2144,-32697,-2144,-32697,-2144,-32697,
-                                   -2678,-32658,-2678,-32658,-2678,-32658,-2678,-32658,
-                                   -3212,-32610,-3212,-32610,-3212,-32610,-3212,-32610,
-                                   -3745,-32553,-3745,-32553,-3745,-32553,-3745,-32553,
-                                   -4277,-32487,-4277,-32487,-4277,-32487,-4277,-32487,
-                                   -4808,-32413,-4808,-32413,-4808,-32413,-4808,-32413,
-                                   -5338,-32330,-5338,-32330,-5338,-32330,-5338,-32330,
-                                   -5866,-32238,-5866,-32238,-5866,-32238,-5866,-32238,
-                                   -6393,-32138,-6393,-32138,-6393,-32138,-6393,-32138,
-                                   -6918,-32029,-6918,-32029,-6918,-32029,-6918,-32029,
-                                   -7441,-31912,-7441,-31912,-7441,-31912,-7441,-31912,
-                                   -7962,-31786,-7962,-31786,-7962,-31786,-7962,-31786,
-                                   -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                                   -8998,-31508,-8998,-31508,-8998,-31508,-8998,-31508,
-                                   -9512,-31357,-9512,-31357,-9512,-31357,-9512,-31357,
-                                   -10024,-31197,-10024,-31197,-10024,-31197,-10024,-31197,
-                                   -10533,-31029,-10533,-31029,-10533,-31029,-10533,-31029,
-                                   -11039,-30852,-11039,-30852,-11039,-30852,-11039,-30852,
-                                   -11543,-30667,-11543,-30667,-11543,-30667,-11543,-30667,
-                                   -12043,-30474,-12043,-30474,-12043,-30474,-12043,-30474,
-                                   -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                                   -13034,-30064,-13034,-30064,-13034,-30064,-13034,-30064,
-                                   -13524,-29847,-13524,-29847,-13524,-29847,-13524,-29847,
-                                   -14010,-29622,-14010,-29622,-14010,-29622,-14010,-29622,
-                                   -14493,-29388,-14493,-29388,-14493,-29388,-14493,-29388,
-                                   -14972,-29147,-14972,-29147,-14972,-29147,-14972,-29147,
-                                   -15447,-28898,-15447,-28898,-15447,-28898,-15447,-28898,
-                                   -15918,-28642,-15918,-28642,-15918,-28642,-15918,-28642,
-                                   -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                                   -16846,-28106,-16846,-28106,-16846,-28106,-16846,-28106,
-                                   -17304,-27826,-17304,-27826,-17304,-27826,-17304,-27826,
-                                   -17757,-27539,-17757,-27539,-17757,-27539,-17757,-27539,
-                                   -18205,-27245,-18205,-27245,-18205,-27245,-18205,-27245,
-                                   -18648,-26944,-18648,-26944,-18648,-26944,-18648,-26944,
-                                   -19087,-26635,-19087,-26635,-19087,-26635,-19087,-26635,
-                                   -19520,-26319,-19520,-26319,-19520,-26319,-19520,-26319,
-                                   -19948,-25996,-19948,-25996,-19948,-25996,-19948,-25996,
-                                   -20370,-25666,-20370,-25666,-20370,-25666,-20370,-25666,
-                                   -20788,-25330,-20788,-25330,-20788,-25330,-20788,-25330,
-                                   -21199,-24986,-21199,-24986,-21199,-24986,-21199,-24986,
-                                   -21605,-24636,-21605,-24636,-21605,-24636,-21605,-24636,
-                                   -22005,-24279,-22005,-24279,-22005,-24279,-22005,-24279,
-                                   -22400,-23916,-22400,-23916,-22400,-23916,-22400,-23916,
-                                   -22788,-23546,-22788,-23546,-22788,-23546,-22788,-23546,
-                                   -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                                   -23546,-22788,-23546,-22788,-23546,-22788,-23546,-22788,
-                                   -23916,-22400,-23916,-22400,-23916,-22400,-23916,-22400,
-                                   -24279,-22005,-24279,-22005,-24279,-22005,-24279,-22005,
-                                   -24636,-21605,-24636,-21605,-24636,-21605,-24636,-21605,
-                                   -24986,-21199,-24986,-21199,-24986,-21199,-24986,-21199,
-                                   -25330,-20788,-25330,-20788,-25330,-20788,-25330,-20788,
-                                   -25666,-20370,-25666,-20370,-25666,-20370,-25666,-20370,
-                                   -25996,-19948,-25996,-19948,-25996,-19948,-25996,-19948,
-                                   -26319,-19520,-26319,-19520,-26319,-19520,-26319,-19520,
-                                   -26635,-19087,-26635,-19087,-26635,-19087,-26635,-19087,
-                                   -26944,-18648,-26944,-18648,-26944,-18648,-26944,-18648,
-                                   -27245,-18205,-27245,-18205,-27245,-18205,-27245,-18205,
-                                   -27539,-17757,-27539,-17757,-27539,-17757,-27539,-17757,
-                                   -27826,-17304,-27826,-17304,-27826,-17304,-27826,-17304,
-                                   -28106,-16846,-28106,-16846,-28106,-16846,-28106,-16846,
-                                   -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                                   -28642,-15918,-28642,-15918,-28642,-15918,-28642,-15918,
-                                   -28898,-15447,-28898,-15447,-28898,-15447,-28898,-15447,
-                                   -29147,-14972,-29147,-14972,-29147,-14972,-29147,-14972,
-                                   -29388,-14493,-29388,-14493,-29388,-14493,-29388,-14493,
-                                   -29622,-14010,-29622,-14010,-29622,-14010,-29622,-14010,
-                                   -29847,-13524,-29847,-13524,-29847,-13524,-29847,-13524,
-                                   -30064,-13034,-30064,-13034,-30064,-13034,-30064,-13034,
-                                   -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                                   -30474,-12043,-30474,-12043,-30474,-12043,-30474,-12043,
-                                   -30667,-11543,-30667,-11543,-30667,-11543,-30667,-11543,
-                                   -30852,-11039,-30852,-11039,-30852,-11039,-30852,-11039,
-                                   -31029,-10533,-31029,-10533,-31029,-10533,-31029,-10533,
-                                   -31197,-10024,-31197,-10024,-31197,-10024,-31197,-10024,
-                                   -31357,-9512,-31357,-9512,-31357,-9512,-31357,-9512,
-                                   -31508,-8998,-31508,-8998,-31508,-8998,-31508,-8998,
-                                   -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                                   -31786,-7962,-31786,-7962,-31786,-7962,-31786,-7962,
-                                   -31912,-7441,-31912,-7441,-31912,-7441,-31912,-7441,
-                                   -32029,-6918,-32029,-6918,-32029,-6918,-32029,-6918,
-                                   -32138,-6393,-32138,-6393,-32138,-6393,-32138,-6393,
-                                   -32238,-5866,-32238,-5866,-32238,-5866,-32238,-5866,
-                                   -32330,-5338,-32330,-5338,-32330,-5338,-32330,-5338,
-                                   -32413,-4808,-32413,-4808,-32413,-4808,-32413,-4808,
-                                   -32487,-4277,-32487,-4277,-32487,-4277,-32487,-4277,
-                                   -32553,-3745,-32553,-3745,-32553,-3745,-32553,-3745,
-                                   -32610,-3212,-32610,-3212,-32610,-3212,-32610,-3212,
-                                   -32658,-2678,-32658,-2678,-32658,-2678,-32658,-2678,
-                                   -32697,-2144,-32697,-2144,-32697,-2144,-32697,-2144,
-                                   -32728,-1608,-32728,-1608,-32728,-1608,-32728,-1608,
-                                   -32750,-1073,-32750,-1073,-32750,-1073,-32750,-1073,
-                                   -32763,-537,-32763,-537,-32763,-537,-32763,-537,
-                                   -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                                   -32763,536,-32763,536,-32763,536,-32763,536,
-                                   -32750,1072,-32750,1072,-32750,1072,-32750,1072,
-                                   -32728,1607,-32728,1607,-32728,1607,-32728,1607,
-                                   -32697,2143,-32697,2143,-32697,2143,-32697,2143,
-                                   -32658,2677,-32658,2677,-32658,2677,-32658,2677,
-                                   -32610,3211,-32610,3211,-32610,3211,-32610,3211,
-                                   -32553,3744,-32553,3744,-32553,3744,-32553,3744,
-                                   -32487,4276,-32487,4276,-32487,4276,-32487,4276,
-                                   -32413,4807,-32413,4807,-32413,4807,-32413,4807,
-                                   -32330,5337,-32330,5337,-32330,5337,-32330,5337,
-                                   -32238,5865,-32238,5865,-32238,5865,-32238,5865,
-                                   -32138,6392,-32138,6392,-32138,6392,-32138,6392,
-                                   -32029,6917,-32029,6917,-32029,6917,-32029,6917,
-                                   -31912,7440,-31912,7440,-31912,7440,-31912,7440,
-                                   -31786,7961,-31786,7961,-31786,7961,-31786,7961,
-                                   -31651,8480,-31651,8480,-31651,8480,-31651,8480,
-                                   -31508,8997,-31508,8997,-31508,8997,-31508,8997,
-                                   -31357,9511,-31357,9511,-31357,9511,-31357,9511,
-                                   -31197,10023,-31197,10023,-31197,10023,-31197,10023,
-                                   -31029,10532,-31029,10532,-31029,10532,-31029,10532,
-                                   -30852,11038,-30852,11038,-30852,11038,-30852,11038,
-                                   -30667,11542,-30667,11542,-30667,11542,-30667,11542,
-                                   -30474,12042,-30474,12042,-30474,12042,-30474,12042,
-                                   -30273,12539,-30273,12539,-30273,12539,-30273,12539,
-                                   -30064,13033,-30064,13033,-30064,13033,-30064,13033,
-                                   -29847,13523,-29847,13523,-29847,13523,-29847,13523,
-                                   -29622,14009,-29622,14009,-29622,14009,-29622,14009,
-                                   -29388,14492,-29388,14492,-29388,14492,-29388,14492,
-                                   -29147,14971,-29147,14971,-29147,14971,-29147,14971,
-                                   -28898,15446,-28898,15446,-28898,15446,-28898,15446,
-                                   -28642,15917,-28642,15917,-28642,15917,-28642,15917,
-                                   -28378,16383,-28378,16383,-28378,16383,-28378,16383,
-                                   -28106,16845,-28106,16845,-28106,16845,-28106,16845,
-                                   -27826,17303,-27826,17303,-27826,17303,-27826,17303,
-                                   -27539,17756,-27539,17756,-27539,17756,-27539,17756,
-                                   -27245,18204,-27245,18204,-27245,18204,-27245,18204,
-                                   -26944,18647,-26944,18647,-26944,18647,-26944,18647,
-                                   -26635,19086,-26635,19086,-26635,19086,-26635,19086,
-                                   -26319,19519,-26319,19519,-26319,19519,-26319,19519,
-                                   -25996,19947,-25996,19947,-25996,19947,-25996,19947,
-                                   -25666,20369,-25666,20369,-25666,20369,-25666,20369,
-                                   -25330,20787,-25330,20787,-25330,20787,-25330,20787,
-                                   -24986,21198,-24986,21198,-24986,21198,-24986,21198,
-                                   -24636,21604,-24636,21604,-24636,21604,-24636,21604,
-                                   -24279,22004,-24279,22004,-24279,22004,-24279,22004,
-                                   -23916,22399,-23916,22399,-23916,22399,-23916,22399,
-                                   -23546,22787,-23546,22787,-23546,22787,-23546,22787,
-                                   -23170,23169,-23170,23169,-23170,23169,-23170,23169,
-                                   -22788,23545,-22788,23545,-22788,23545,-22788,23545,
-                                   -22400,23915,-22400,23915,-22400,23915,-22400,23915,
-                                   -22005,24278,-22005,24278,-22005,24278,-22005,24278,
-                                   -21605,24635,-21605,24635,-21605,24635,-21605,24635,
-                                   -21199,24985,-21199,24985,-21199,24985,-21199,24985,
-                                   -20788,25329,-20788,25329,-20788,25329,-20788,25329,
-                                   -20370,25665,-20370,25665,-20370,25665,-20370,25665,
-                                   -19948,25995,-19948,25995,-19948,25995,-19948,25995,
-                                   -19520,26318,-19520,26318,-19520,26318,-19520,26318,
-                                   -19087,26634,-19087,26634,-19087,26634,-19087,26634,
-                                   -18648,26943,-18648,26943,-18648,26943,-18648,26943,
-                                   -18205,27244,-18205,27244,-18205,27244,-18205,27244,
-                                   -17757,27538,-17757,27538,-17757,27538,-17757,27538,
-                                   -17304,27825,-17304,27825,-17304,27825,-17304,27825,
-                                   -16846,28105,-16846,28105,-16846,28105,-16846,28105,
-                                   -16384,28377,-16384,28377,-16384,28377,-16384,28377,
-                                   -15918,28641,-15918,28641,-15918,28641,-15918,28641,
-                                   -15447,28897,-15447,28897,-15447,28897,-15447,28897,
-                                   -14972,29146,-14972,29146,-14972,29146,-14972,29146,
-                                   -14493,29387,-14493,29387,-14493,29387,-14493,29387,
-                                   -14010,29621,-14010,29621,-14010,29621,-14010,29621,
-                                   -13524,29846,-13524,29846,-13524,29846,-13524,29846,
-                                   -13034,30063,-13034,30063,-13034,30063,-13034,30063,
-                                   -12540,30272,-12540,30272,-12540,30272,-12540,30272,
-                                   -12043,30473,-12043,30473,-12043,30473,-12043,30473,
-                                   -11543,30666,-11543,30666,-11543,30666,-11543,30666,
-                                   -11039,30851,-11039,30851,-11039,30851,-11039,30851,
-                                   -10533,31028,-10533,31028,-10533,31028,-10533,31028,
-                                   -10024,31196,-10024,31196,-10024,31196,-10024,31196,
-                                   -9512,31356,-9512,31356,-9512,31356,-9512,31356,
-                                   -8998,31507,-8998,31507,-8998,31507,-8998,31507,
-                                   -8481,31650,-8481,31650,-8481,31650,-8481,31650,
-                                   -7962,31785,-7962,31785,-7962,31785,-7962,31785,
-                                   -7441,31911,-7441,31911,-7441,31911,-7441,31911,
-                                   -6918,32028,-6918,32028,-6918,32028,-6918,32028,
-                                   -6393,32137,-6393,32137,-6393,32137,-6393,32137,
-                                   -5866,32237,-5866,32237,-5866,32237,-5866,32237,
-                                   -5338,32329,-5338,32329,-5338,32329,-5338,32329,
-                                   -4808,32412,-4808,32412,-4808,32412,-4808,32412,
-                                   -4277,32486,-4277,32486,-4277,32486,-4277,32486,
-                                   -3745,32552,-3745,32552,-3745,32552,-3745,32552,
-                                   -3212,32609,-3212,32609,-3212,32609,-3212,32609,
-                                   -2678,32657,-2678,32657,-2678,32657,-2678,32657,
-                                   -2144,32696,-2144,32696,-2144,32696,-2144,32696,
-                                   -1608,32727,-1608,32727,-1608,32727,-1608,32727,
-                                   -1073,32749,-1073,32749,-1073,32749,-1073,32749,
-                                   -537,32762,-537,32762,-537,32762,-537,32762
-                                  };
+static int16_t twa1152[287*2*4];
+static int16_t twb1152[287*2*4];
+static int16_t twc1152[287*2*4];
 
 void dft1152(int16_t *x,int16_t *y,unsigned char scale_flag)  // 288 x 4
 {
@@ -17546,909 +8468,9 @@ void dft1152(int16_t *x,int16_t *y,unsigned char scale_flag)  // 288 x 4
   _m_empty();
 };
 
-int16_t twa1200[4784] = { 32766,-172,32766,-172,32766,-172,32766,-172,
-                          32765,-344,32765,-344,32765,-344,32765,-344,
-                          32762,-515,32762,-515,32762,-515,32762,-515,
-                          32759,-687,32759,-687,32759,-687,32759,-687,
-                          32755,-858,32755,-858,32755,-858,32755,-858,
-                          32750,-1030,32750,-1030,32750,-1030,32750,-1030,
-                          32744,-1201,32744,-1201,32744,-1201,32744,-1201,
-                          32738,-1373,32738,-1373,32738,-1373,32738,-1373,
-                          32730,-1544,32730,-1544,32730,-1544,32730,-1544,
-                          32722,-1715,32722,-1715,32722,-1715,32722,-1715,
-                          32712,-1887,32712,-1887,32712,-1887,32712,-1887,
-                          32702,-2058,32702,-2058,32702,-2058,32702,-2058,
-                          32691,-2229,32691,-2229,32691,-2229,32691,-2229,
-                          32679,-2400,32679,-2400,32679,-2400,32679,-2400,
-                          32665,-2571,32665,-2571,32665,-2571,32665,-2571,
-                          32652,-2742,32652,-2742,32652,-2742,32652,-2742,
-                          32637,-2913,32637,-2913,32637,-2913,32637,-2913,
-                          32621,-3084,32621,-3084,32621,-3084,32621,-3084,
-                          32604,-3255,32604,-3255,32604,-3255,32604,-3255,
-                          32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                          32569,-3596,32569,-3596,32569,-3596,32569,-3596,
-                          32549,-3767,32549,-3767,32549,-3767,32549,-3767,
-                          32529,-3937,32529,-3937,32529,-3937,32529,-3937,
-                          32508,-4107,32508,-4107,32508,-4107,32508,-4107,
-                          32486,-4277,32486,-4277,32486,-4277,32486,-4277,
-                          32463,-4447,32463,-4447,32463,-4447,32463,-4447,
-                          32440,-4617,32440,-4617,32440,-4617,32440,-4617,
-                          32415,-4787,32415,-4787,32415,-4787,32415,-4787,
-                          32389,-4957,32389,-4957,32389,-4957,32389,-4957,
-                          32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                          32336,-5296,32336,-5296,32336,-5296,32336,-5296,
-                          32308,-5465,32308,-5465,32308,-5465,32308,-5465,
-                          32279,-5634,32279,-5634,32279,-5634,32279,-5634,
-                          32249,-5803,32249,-5803,32249,-5803,32249,-5803,
-                          32218,-5972,32218,-5972,32218,-5972,32218,-5972,
-                          32186,-6140,32186,-6140,32186,-6140,32186,-6140,
-                          32154,-6309,32154,-6309,32154,-6309,32154,-6309,
-                          32120,-6477,32120,-6477,32120,-6477,32120,-6477,
-                          32086,-6645,32086,-6645,32086,-6645,32086,-6645,
-                          32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                          32014,-6981,32014,-6981,32014,-6981,32014,-6981,
-                          31977,-7148,31977,-7148,31977,-7148,31977,-7148,
-                          31940,-7316,31940,-7316,31940,-7316,31940,-7316,
-                          31901,-7483,31901,-7483,31901,-7483,31901,-7483,
-                          31861,-7650,31861,-7650,31861,-7650,31861,-7650,
-                          31821,-7817,31821,-7817,31821,-7817,31821,-7817,
-                          31779,-7983,31779,-7983,31779,-7983,31779,-7983,
-                          31737,-8149,31737,-8149,31737,-8149,31737,-8149,
-                          31694,-8315,31694,-8315,31694,-8315,31694,-8315,
-                          31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                          31605,-8647,31605,-8647,31605,-8647,31605,-8647,
-                          31559,-8812,31559,-8812,31559,-8812,31559,-8812,
-                          31513,-8977,31513,-8977,31513,-8977,31513,-8977,
-                          31465,-9142,31465,-9142,31465,-9142,31465,-9142,
-                          31417,-9307,31417,-9307,31417,-9307,31417,-9307,
-                          31368,-9471,31368,-9471,31368,-9471,31368,-9471,
-                          31318,-9635,31318,-9635,31318,-9635,31318,-9635,
-                          31267,-9799,31267,-9799,31267,-9799,31267,-9799,
-                          31215,-9963,31215,-9963,31215,-9963,31215,-9963,
-                          31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                          31109,-10289,31109,-10289,31109,-10289,31109,-10289,
-                          31055,-10452,31055,-10452,31055,-10452,31055,-10452,
-                          31000,-10614,31000,-10614,31000,-10614,31000,-10614,
-                          30944,-10776,30944,-10776,30944,-10776,30944,-10776,
-                          30887,-10938,30887,-10938,30887,-10938,30887,-10938,
-                          30829,-11100,30829,-11100,30829,-11100,30829,-11100,
-                          30771,-11261,30771,-11261,30771,-11261,30771,-11261,
-                          30711,-11422,30711,-11422,30711,-11422,30711,-11422,
-                          30651,-11583,30651,-11583,30651,-11583,30651,-11583,
-                          30590,-11743,30590,-11743,30590,-11743,30590,-11743,
-                          30528,-11903,30528,-11903,30528,-11903,30528,-11903,
-                          30465,-12063,30465,-12063,30465,-12063,30465,-12063,
-                          30402,-12222,30402,-12222,30402,-12222,30402,-12222,
-                          30338,-12381,30338,-12381,30338,-12381,30338,-12381,
-                          30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                          30206,-12698,30206,-12698,30206,-12698,30206,-12698,
-                          30139,-12856,30139,-12856,30139,-12856,30139,-12856,
-                          30072,-13014,30072,-13014,30072,-13014,30072,-13014,
-                          30003,-13171,30003,-13171,30003,-13171,30003,-13171,
-                          29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                          29863,-13485,29863,-13485,29863,-13485,29863,-13485,
-                          29792,-13641,29792,-13641,29792,-13641,29792,-13641,
-                          29721,-13797,29721,-13797,29721,-13797,29721,-13797,
-                          29648,-13952,29648,-13952,29648,-13952,29648,-13952,
-                          29575,-14107,29575,-14107,29575,-14107,29575,-14107,
-                          29500,-14262,29500,-14262,29500,-14262,29500,-14262,
-                          29425,-14416,29425,-14416,29425,-14416,29425,-14416,
-                          29349,-14570,29349,-14570,29349,-14570,29349,-14570,
-                          29273,-14723,29273,-14723,29273,-14723,29273,-14723,
-                          29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                          29117,-15029,29117,-15029,29117,-15029,29117,-15029,
-                          29038,-15181,29038,-15181,29038,-15181,29038,-15181,
-                          28958,-15333,28958,-15333,28958,-15333,28958,-15333,
-                          28877,-15485,28877,-15485,28877,-15485,28877,-15485,
-                          28796,-15636,28796,-15636,28796,-15636,28796,-15636,
-                          28713,-15786,28713,-15786,28713,-15786,28713,-15786,
-                          28630,-15936,28630,-15936,28630,-15936,28630,-15936,
-                          28547,-16086,28547,-16086,28547,-16086,28547,-16086,
-                          28462,-16235,28462,-16235,28462,-16235,28462,-16235,
-                          28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                          28290,-16532,28290,-16532,28290,-16532,28290,-16532,
-                          28203,-16680,28203,-16680,28203,-16680,28203,-16680,
-                          28116,-16828,28116,-16828,28116,-16828,28116,-16828,
-                          28027,-16975,28027,-16975,28027,-16975,28027,-16975,
-                          27938,-17121,27938,-17121,27938,-17121,27938,-17121,
-                          27848,-17267,27848,-17267,27848,-17267,27848,-17267,
-                          27757,-17413,27757,-17413,27757,-17413,27757,-17413,
-                          27666,-17558,27666,-17558,27666,-17558,27666,-17558,
-                          27573,-17703,27573,-17703,27573,-17703,27573,-17703,
-                          27480,-17847,27480,-17847,27480,-17847,27480,-17847,
-                          27386,-17990,27386,-17990,27386,-17990,27386,-17990,
-                          27292,-18133,27292,-18133,27292,-18133,27292,-18133,
-                          27197,-18276,27197,-18276,27197,-18276,27197,-18276,
-                          27100,-18418,27100,-18418,27100,-18418,27100,-18418,
-                          27004,-18560,27004,-18560,27004,-18560,27004,-18560,
-                          26906,-18701,26906,-18701,26906,-18701,26906,-18701,
-                          26808,-18842,26808,-18842,26808,-18842,26808,-18842,
-                          26709,-18982,26709,-18982,26709,-18982,26709,-18982,
-                          26609,-19121,26609,-19121,26609,-19121,26609,-19121,
-                          26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                          26407,-19399,26407,-19399,26407,-19399,26407,-19399,
-                          26305,-19537,26305,-19537,26305,-19537,26305,-19537,
-                          26203,-19674,26203,-19674,26203,-19674,26203,-19674,
-                          26099,-19811,26099,-19811,26099,-19811,26099,-19811,
-                          25995,-19948,25995,-19948,25995,-19948,25995,-19948,
-                          25891,-20084,25891,-20084,25891,-20084,25891,-20084,
-                          25785,-20219,25785,-20219,25785,-20219,25785,-20219,
-                          25679,-20354,25679,-20354,25679,-20354,25679,-20354,
-                          25572,-20488,25572,-20488,25572,-20488,25572,-20488,
-                          25464,-20621,25464,-20621,25464,-20621,25464,-20621,
-                          25356,-20754,25356,-20754,25356,-20754,25356,-20754,
-                          25247,-20887,25247,-20887,25247,-20887,25247,-20887,
-                          25137,-21019,25137,-21019,25137,-21019,25137,-21019,
-                          25027,-21150,25027,-21150,25027,-21150,25027,-21150,
-                          24916,-21281,24916,-21281,24916,-21281,24916,-21281,
-                          24804,-21411,24804,-21411,24804,-21411,24804,-21411,
-                          24692,-21541,24692,-21541,24692,-21541,24692,-21541,
-                          24578,-21670,24578,-21670,24578,-21670,24578,-21670,
-                          24465,-21798,24465,-21798,24465,-21798,24465,-21798,
-                          24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                          24235,-22053,24235,-22053,24235,-22053,24235,-22053,
-                          24119,-22180,24119,-22180,24119,-22180,24119,-22180,
-                          24003,-22306,24003,-22306,24003,-22306,24003,-22306,
-                          23886,-22431,23886,-22431,23886,-22431,23886,-22431,
-                          23768,-22556,23768,-22556,23768,-22556,23768,-22556,
-                          23649,-22680,23649,-22680,23649,-22680,23649,-22680,
-                          23530,-22803,23530,-22803,23530,-22803,23530,-22803,
-                          23411,-22926,23411,-22926,23411,-22926,23411,-22926,
-                          23290,-23049,23290,-23049,23290,-23049,23290,-23049,
-                          23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                          23048,-23291,23048,-23291,23048,-23291,23048,-23291,
-                          22925,-23412,22925,-23412,22925,-23412,22925,-23412,
-                          22802,-23531,22802,-23531,22802,-23531,22802,-23531,
-                          22679,-23650,22679,-23650,22679,-23650,22679,-23650,
-                          22555,-23769,22555,-23769,22555,-23769,22555,-23769,
-                          22430,-23887,22430,-23887,22430,-23887,22430,-23887,
-                          22305,-24004,22305,-24004,22305,-24004,22305,-24004,
-                          22179,-24120,22179,-24120,22179,-24120,22179,-24120,
-                          22052,-24236,22052,-24236,22052,-24236,22052,-24236,
-                          21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                          21797,-24466,21797,-24466,21797,-24466,21797,-24466,
-                          21669,-24579,21669,-24579,21669,-24579,21669,-24579,
-                          21540,-24693,21540,-24693,21540,-24693,21540,-24693,
-                          21410,-24805,21410,-24805,21410,-24805,21410,-24805,
-                          21280,-24917,21280,-24917,21280,-24917,21280,-24917,
-                          21149,-25028,21149,-25028,21149,-25028,21149,-25028,
-                          21018,-25138,21018,-25138,21018,-25138,21018,-25138,
-                          20886,-25248,20886,-25248,20886,-25248,20886,-25248,
-                          20753,-25357,20753,-25357,20753,-25357,20753,-25357,
-                          20620,-25465,20620,-25465,20620,-25465,20620,-25465,
-                          20487,-25573,20487,-25573,20487,-25573,20487,-25573,
-                          20353,-25680,20353,-25680,20353,-25680,20353,-25680,
-                          20218,-25786,20218,-25786,20218,-25786,20218,-25786,
-                          20083,-25892,20083,-25892,20083,-25892,20083,-25892,
-                          19947,-25996,19947,-25996,19947,-25996,19947,-25996,
-                          19810,-26100,19810,-26100,19810,-26100,19810,-26100,
-                          19673,-26204,19673,-26204,19673,-26204,19673,-26204,
-                          19536,-26306,19536,-26306,19536,-26306,19536,-26306,
-                          19398,-26408,19398,-26408,19398,-26408,19398,-26408,
-                          19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                          19120,-26610,19120,-26610,19120,-26610,19120,-26610,
-                          18981,-26710,18981,-26710,18981,-26710,18981,-26710,
-                          18841,-26809,18841,-26809,18841,-26809,18841,-26809,
-                          18700,-26907,18700,-26907,18700,-26907,18700,-26907,
-                          18559,-27005,18559,-27005,18559,-27005,18559,-27005,
-                          18417,-27101,18417,-27101,18417,-27101,18417,-27101,
-                          18275,-27198,18275,-27198,18275,-27198,18275,-27198,
-                          18132,-27293,18132,-27293,18132,-27293,18132,-27293,
-                          17989,-27387,17989,-27387,17989,-27387,17989,-27387,
-                          17846,-27481,17846,-27481,17846,-27481,17846,-27481,
-                          17702,-27574,17702,-27574,17702,-27574,17702,-27574,
-                          17557,-27667,17557,-27667,17557,-27667,17557,-27667,
-                          17412,-27758,17412,-27758,17412,-27758,17412,-27758,
-                          17266,-27849,17266,-27849,17266,-27849,17266,-27849,
-                          17120,-27939,17120,-27939,17120,-27939,17120,-27939,
-                          16974,-28028,16974,-28028,16974,-28028,16974,-28028,
-                          16827,-28117,16827,-28117,16827,-28117,16827,-28117,
-                          16679,-28204,16679,-28204,16679,-28204,16679,-28204,
-                          16531,-28291,16531,-28291,16531,-28291,16531,-28291,
-                          16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                          16234,-28463,16234,-28463,16234,-28463,16234,-28463,
-                          16085,-28548,16085,-28548,16085,-28548,16085,-28548,
-                          15935,-28631,15935,-28631,15935,-28631,15935,-28631,
-                          15785,-28714,15785,-28714,15785,-28714,15785,-28714,
-                          15635,-28797,15635,-28797,15635,-28797,15635,-28797,
-                          15484,-28878,15484,-28878,15484,-28878,15484,-28878,
-                          15332,-28959,15332,-28959,15332,-28959,15332,-28959,
-                          15180,-29039,15180,-29039,15180,-29039,15180,-29039,
-                          15028,-29118,15028,-29118,15028,-29118,15028,-29118,
-                          14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                          14722,-29274,14722,-29274,14722,-29274,14722,-29274,
-                          14569,-29350,14569,-29350,14569,-29350,14569,-29350,
-                          14415,-29426,14415,-29426,14415,-29426,14415,-29426,
-                          14261,-29501,14261,-29501,14261,-29501,14261,-29501,
-                          14106,-29576,14106,-29576,14106,-29576,14106,-29576,
-                          13951,-29649,13951,-29649,13951,-29649,13951,-29649,
-                          13796,-29722,13796,-29722,13796,-29722,13796,-29722,
-                          13640,-29793,13640,-29793,13640,-29793,13640,-29793,
-                          13484,-29864,13484,-29864,13484,-29864,13484,-29864,
-                          13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                          13170,-30004,13170,-30004,13170,-30004,13170,-30004,
-                          13013,-30073,13013,-30073,13013,-30073,13013,-30073,
-                          12855,-30140,12855,-30140,12855,-30140,12855,-30140,
-                          12697,-30207,12697,-30207,12697,-30207,12697,-30207,
-                          12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                          12380,-30339,12380,-30339,12380,-30339,12380,-30339,
-                          12221,-30403,12221,-30403,12221,-30403,12221,-30403,
-                          12062,-30466,12062,-30466,12062,-30466,12062,-30466,
-                          11902,-30529,11902,-30529,11902,-30529,11902,-30529,
-                          11742,-30591,11742,-30591,11742,-30591,11742,-30591,
-                          11582,-30652,11582,-30652,11582,-30652,11582,-30652,
-                          11421,-30712,11421,-30712,11421,-30712,11421,-30712,
-                          11260,-30772,11260,-30772,11260,-30772,11260,-30772,
-                          11099,-30830,11099,-30830,11099,-30830,11099,-30830,
-                          10937,-30888,10937,-30888,10937,-30888,10937,-30888,
-                          10775,-30945,10775,-30945,10775,-30945,10775,-30945,
-                          10613,-31001,10613,-31001,10613,-31001,10613,-31001,
-                          10451,-31056,10451,-31056,10451,-31056,10451,-31056,
-                          10288,-31110,10288,-31110,10288,-31110,10288,-31110,
-                          10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                          9962,-31216,9962,-31216,9962,-31216,9962,-31216,
-                          9798,-31268,9798,-31268,9798,-31268,9798,-31268,
-                          9634,-31319,9634,-31319,9634,-31319,9634,-31319,
-                          9470,-31369,9470,-31369,9470,-31369,9470,-31369,
-                          9306,-31418,9306,-31418,9306,-31418,9306,-31418,
-                          9141,-31466,9141,-31466,9141,-31466,9141,-31466,
-                          8976,-31514,8976,-31514,8976,-31514,8976,-31514,
-                          8811,-31560,8811,-31560,8811,-31560,8811,-31560,
-                          8646,-31606,8646,-31606,8646,-31606,8646,-31606,
-                          8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                          8314,-31695,8314,-31695,8314,-31695,8314,-31695,
-                          8148,-31738,8148,-31738,8148,-31738,8148,-31738,
-                          7982,-31780,7982,-31780,7982,-31780,7982,-31780,
-                          7816,-31822,7816,-31822,7816,-31822,7816,-31822,
-                          7649,-31862,7649,-31862,7649,-31862,7649,-31862,
-                          7482,-31902,7482,-31902,7482,-31902,7482,-31902,
-                          7315,-31941,7315,-31941,7315,-31941,7315,-31941,
-                          7147,-31978,7147,-31978,7147,-31978,7147,-31978,
-                          6980,-32015,6980,-32015,6980,-32015,6980,-32015,
-                          6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                          6644,-32087,6644,-32087,6644,-32087,6644,-32087,
-                          6476,-32121,6476,-32121,6476,-32121,6476,-32121,
-                          6308,-32155,6308,-32155,6308,-32155,6308,-32155,
-                          6139,-32187,6139,-32187,6139,-32187,6139,-32187,
-                          5971,-32219,5971,-32219,5971,-32219,5971,-32219,
-                          5802,-32250,5802,-32250,5802,-32250,5802,-32250,
-                          5633,-32280,5633,-32280,5633,-32280,5633,-32280,
-                          5464,-32309,5464,-32309,5464,-32309,5464,-32309,
-                          5295,-32337,5295,-32337,5295,-32337,5295,-32337,
-                          5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                          4956,-32390,4956,-32390,4956,-32390,4956,-32390,
-                          4786,-32416,4786,-32416,4786,-32416,4786,-32416,
-                          4616,-32441,4616,-32441,4616,-32441,4616,-32441,
-                          4446,-32464,4446,-32464,4446,-32464,4446,-32464,
-                          4276,-32487,4276,-32487,4276,-32487,4276,-32487,
-                          4106,-32509,4106,-32509,4106,-32509,4106,-32509,
-                          3936,-32530,3936,-32530,3936,-32530,3936,-32530,
-                          3766,-32550,3766,-32550,3766,-32550,3766,-32550,
-                          3595,-32570,3595,-32570,3595,-32570,3595,-32570,
-                          3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                          3254,-32605,3254,-32605,3254,-32605,3254,-32605,
-                          3083,-32622,3083,-32622,3083,-32622,3083,-32622,
-                          2912,-32638,2912,-32638,2912,-32638,2912,-32638,
-                          2741,-32653,2741,-32653,2741,-32653,2741,-32653,
-                          2570,-32666,2570,-32666,2570,-32666,2570,-32666,
-                          2399,-32680,2399,-32680,2399,-32680,2399,-32680,
-                          2228,-32692,2228,-32692,2228,-32692,2228,-32692,
-                          2057,-32703,2057,-32703,2057,-32703,2057,-32703,
-                          1886,-32713,1886,-32713,1886,-32713,1886,-32713,
-                          1714,-32723,1714,-32723,1714,-32723,1714,-32723,
-                          1543,-32731,1543,-32731,1543,-32731,1543,-32731,
-                          1372,-32739,1372,-32739,1372,-32739,1372,-32739,
-                          1200,-32745,1200,-32745,1200,-32745,1200,-32745,
-                          1029,-32751,1029,-32751,1029,-32751,1029,-32751,
-                          857,-32756,857,-32756,857,-32756,857,-32756,
-                          686,-32760,686,-32760,686,-32760,686,-32760,
-                          514,-32763,514,-32763,514,-32763,514,-32763,
-                          343,-32766,343,-32766,343,-32766,343,-32766,
-                          171,-32767,171,-32767,171,-32767,171,-32767
-                        };
-
-int16_t twb1200[4784] = {32765,-344,32765,-344,32765,-344,32765,-344,
-                         32759,-687,32759,-687,32759,-687,32759,-687,
-                         32750,-1030,32750,-1030,32750,-1030,32750,-1030,
-                         32738,-1373,32738,-1373,32738,-1373,32738,-1373,
-                         32722,-1715,32722,-1715,32722,-1715,32722,-1715,
-                         32702,-2058,32702,-2058,32702,-2058,32702,-2058,
-                         32679,-2400,32679,-2400,32679,-2400,32679,-2400,
-                         32652,-2742,32652,-2742,32652,-2742,32652,-2742,
-                         32621,-3084,32621,-3084,32621,-3084,32621,-3084,
-                         32587,-3426,32587,-3426,32587,-3426,32587,-3426,
-                         32549,-3767,32549,-3767,32549,-3767,32549,-3767,
-                         32508,-4107,32508,-4107,32508,-4107,32508,-4107,
-                         32463,-4447,32463,-4447,32463,-4447,32463,-4447,
-                         32415,-4787,32415,-4787,32415,-4787,32415,-4787,
-                         32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                         32308,-5465,32308,-5465,32308,-5465,32308,-5465,
-                         32249,-5803,32249,-5803,32249,-5803,32249,-5803,
-                         32186,-6140,32186,-6140,32186,-6140,32186,-6140,
-                         32120,-6477,32120,-6477,32120,-6477,32120,-6477,
-                         32050,-6813,32050,-6813,32050,-6813,32050,-6813,
-                         31977,-7148,31977,-7148,31977,-7148,31977,-7148,
-                         31901,-7483,31901,-7483,31901,-7483,31901,-7483,
-                         31821,-7817,31821,-7817,31821,-7817,31821,-7817,
-                         31737,-8149,31737,-8149,31737,-8149,31737,-8149,
-                         31650,-8481,31650,-8481,31650,-8481,31650,-8481,
-                         31559,-8812,31559,-8812,31559,-8812,31559,-8812,
-                         31465,-9142,31465,-9142,31465,-9142,31465,-9142,
-                         31368,-9471,31368,-9471,31368,-9471,31368,-9471,
-                         31267,-9799,31267,-9799,31267,-9799,31267,-9799,
-                         31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                         31055,-10452,31055,-10452,31055,-10452,31055,-10452,
-                         30944,-10776,30944,-10776,30944,-10776,30944,-10776,
-                         30829,-11100,30829,-11100,30829,-11100,30829,-11100,
-                         30711,-11422,30711,-11422,30711,-11422,30711,-11422,
-                         30590,-11743,30590,-11743,30590,-11743,30590,-11743,
-                         30465,-12063,30465,-12063,30465,-12063,30465,-12063,
-                         30338,-12381,30338,-12381,30338,-12381,30338,-12381,
-                         30206,-12698,30206,-12698,30206,-12698,30206,-12698,
-                         30072,-13014,30072,-13014,30072,-13014,30072,-13014,
-                         29934,-13328,29934,-13328,29934,-13328,29934,-13328,
-                         29792,-13641,29792,-13641,29792,-13641,29792,-13641,
-                         29648,-13952,29648,-13952,29648,-13952,29648,-13952,
-                         29500,-14262,29500,-14262,29500,-14262,29500,-14262,
-                         29349,-14570,29349,-14570,29349,-14570,29349,-14570,
-                         29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                         29038,-15181,29038,-15181,29038,-15181,29038,-15181,
-                         28877,-15485,28877,-15485,28877,-15485,28877,-15485,
-                         28713,-15786,28713,-15786,28713,-15786,28713,-15786,
-                         28547,-16086,28547,-16086,28547,-16086,28547,-16086,
-                         28377,-16384,28377,-16384,28377,-16384,28377,-16384,
-                         28203,-16680,28203,-16680,28203,-16680,28203,-16680,
-                         28027,-16975,28027,-16975,28027,-16975,28027,-16975,
-                         27848,-17267,27848,-17267,27848,-17267,27848,-17267,
-                         27666,-17558,27666,-17558,27666,-17558,27666,-17558,
-                         27480,-17847,27480,-17847,27480,-17847,27480,-17847,
-                         27292,-18133,27292,-18133,27292,-18133,27292,-18133,
-                         27100,-18418,27100,-18418,27100,-18418,27100,-18418,
-                         26906,-18701,26906,-18701,26906,-18701,26906,-18701,
-                         26709,-18982,26709,-18982,26709,-18982,26709,-18982,
-                         26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                         26305,-19537,26305,-19537,26305,-19537,26305,-19537,
-                         26099,-19811,26099,-19811,26099,-19811,26099,-19811,
-                         25891,-20084,25891,-20084,25891,-20084,25891,-20084,
-                         25679,-20354,25679,-20354,25679,-20354,25679,-20354,
-                         25464,-20621,25464,-20621,25464,-20621,25464,-20621,
-                         25247,-20887,25247,-20887,25247,-20887,25247,-20887,
-                         25027,-21150,25027,-21150,25027,-21150,25027,-21150,
-                         24804,-21411,24804,-21411,24804,-21411,24804,-21411,
-                         24578,-21670,24578,-21670,24578,-21670,24578,-21670,
-                         24350,-21926,24350,-21926,24350,-21926,24350,-21926,
-                         24119,-22180,24119,-22180,24119,-22180,24119,-22180,
-                         23886,-22431,23886,-22431,23886,-22431,23886,-22431,
-                         23649,-22680,23649,-22680,23649,-22680,23649,-22680,
-                         23411,-22926,23411,-22926,23411,-22926,23411,-22926,
-                         23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                         22925,-23412,22925,-23412,22925,-23412,22925,-23412,
-                         22679,-23650,22679,-23650,22679,-23650,22679,-23650,
-                         22430,-23887,22430,-23887,22430,-23887,22430,-23887,
-                         22179,-24120,22179,-24120,22179,-24120,22179,-24120,
-                         21925,-24351,21925,-24351,21925,-24351,21925,-24351,
-                         21669,-24579,21669,-24579,21669,-24579,21669,-24579,
-                         21410,-24805,21410,-24805,21410,-24805,21410,-24805,
-                         21149,-25028,21149,-25028,21149,-25028,21149,-25028,
-                         20886,-25248,20886,-25248,20886,-25248,20886,-25248,
-                         20620,-25465,20620,-25465,20620,-25465,20620,-25465,
-                         20353,-25680,20353,-25680,20353,-25680,20353,-25680,
-                         20083,-25892,20083,-25892,20083,-25892,20083,-25892,
-                         19810,-26100,19810,-26100,19810,-26100,19810,-26100,
-                         19536,-26306,19536,-26306,19536,-26306,19536,-26306,
-                         19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                         18981,-26710,18981,-26710,18981,-26710,18981,-26710,
-                         18700,-26907,18700,-26907,18700,-26907,18700,-26907,
-                         18417,-27101,18417,-27101,18417,-27101,18417,-27101,
-                         18132,-27293,18132,-27293,18132,-27293,18132,-27293,
-                         17846,-27481,17846,-27481,17846,-27481,17846,-27481,
-                         17557,-27667,17557,-27667,17557,-27667,17557,-27667,
-                         17266,-27849,17266,-27849,17266,-27849,17266,-27849,
-                         16974,-28028,16974,-28028,16974,-28028,16974,-28028,
-                         16679,-28204,16679,-28204,16679,-28204,16679,-28204,
-                         16383,-28378,16383,-28378,16383,-28378,16383,-28378,
-                         16085,-28548,16085,-28548,16085,-28548,16085,-28548,
-                         15785,-28714,15785,-28714,15785,-28714,15785,-28714,
-                         15484,-28878,15484,-28878,15484,-28878,15484,-28878,
-                         15180,-29039,15180,-29039,15180,-29039,15180,-29039,
-                         14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                         14569,-29350,14569,-29350,14569,-29350,14569,-29350,
-                         14261,-29501,14261,-29501,14261,-29501,14261,-29501,
-                         13951,-29649,13951,-29649,13951,-29649,13951,-29649,
-                         13640,-29793,13640,-29793,13640,-29793,13640,-29793,
-                         13327,-29935,13327,-29935,13327,-29935,13327,-29935,
-                         13013,-30073,13013,-30073,13013,-30073,13013,-30073,
-                         12697,-30207,12697,-30207,12697,-30207,12697,-30207,
-                         12380,-30339,12380,-30339,12380,-30339,12380,-30339,
-                         12062,-30466,12062,-30466,12062,-30466,12062,-30466,
-                         11742,-30591,11742,-30591,11742,-30591,11742,-30591,
-                         11421,-30712,11421,-30712,11421,-30712,11421,-30712,
-                         11099,-30830,11099,-30830,11099,-30830,11099,-30830,
-                         10775,-30945,10775,-30945,10775,-30945,10775,-30945,
-                         10451,-31056,10451,-31056,10451,-31056,10451,-31056,
-                         10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                         9798,-31268,9798,-31268,9798,-31268,9798,-31268,
-                         9470,-31369,9470,-31369,9470,-31369,9470,-31369,
-                         9141,-31466,9141,-31466,9141,-31466,9141,-31466,
-                         8811,-31560,8811,-31560,8811,-31560,8811,-31560,
-                         8480,-31651,8480,-31651,8480,-31651,8480,-31651,
-                         8148,-31738,8148,-31738,8148,-31738,8148,-31738,
-                         7816,-31822,7816,-31822,7816,-31822,7816,-31822,
-                         7482,-31902,7482,-31902,7482,-31902,7482,-31902,
-                         7147,-31978,7147,-31978,7147,-31978,7147,-31978,
-                         6812,-32051,6812,-32051,6812,-32051,6812,-32051,
-                         6476,-32121,6476,-32121,6476,-32121,6476,-32121,
-                         6139,-32187,6139,-32187,6139,-32187,6139,-32187,
-                         5802,-32250,5802,-32250,5802,-32250,5802,-32250,
-                         5464,-32309,5464,-32309,5464,-32309,5464,-32309,
-                         5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                         4786,-32416,4786,-32416,4786,-32416,4786,-32416,
-                         4446,-32464,4446,-32464,4446,-32464,4446,-32464,
-                         4106,-32509,4106,-32509,4106,-32509,4106,-32509,
-                         3766,-32550,3766,-32550,3766,-32550,3766,-32550,
-                         3425,-32588,3425,-32588,3425,-32588,3425,-32588,
-                         3083,-32622,3083,-32622,3083,-32622,3083,-32622,
-                         2741,-32653,2741,-32653,2741,-32653,2741,-32653,
-                         2399,-32680,2399,-32680,2399,-32680,2399,-32680,
-                         2057,-32703,2057,-32703,2057,-32703,2057,-32703,
-                         1714,-32723,1714,-32723,1714,-32723,1714,-32723,
-                         1372,-32739,1372,-32739,1372,-32739,1372,-32739,
-                         1029,-32751,1029,-32751,1029,-32751,1029,-32751,
-                         686,-32760,686,-32760,686,-32760,686,-32760,
-                         343,-32766,343,-32766,343,-32766,343,-32766,
-                         0,-32767,0,-32767,0,-32767,0,-32767,
-                         -344,-32766,-344,-32766,-344,-32766,-344,-32766,
-                         -687,-32760,-687,-32760,-687,-32760,-687,-32760,
-                         -1030,-32751,-1030,-32751,-1030,-32751,-1030,-32751,
-                         -1373,-32739,-1373,-32739,-1373,-32739,-1373,-32739,
-                         -1715,-32723,-1715,-32723,-1715,-32723,-1715,-32723,
-                         -2058,-32703,-2058,-32703,-2058,-32703,-2058,-32703,
-                         -2400,-32680,-2400,-32680,-2400,-32680,-2400,-32680,
-                         -2742,-32653,-2742,-32653,-2742,-32653,-2742,-32653,
-                         -3084,-32622,-3084,-32622,-3084,-32622,-3084,-32622,
-                         -3426,-32588,-3426,-32588,-3426,-32588,-3426,-32588,
-                         -3767,-32550,-3767,-32550,-3767,-32550,-3767,-32550,
-                         -4107,-32509,-4107,-32509,-4107,-32509,-4107,-32509,
-                         -4447,-32464,-4447,-32464,-4447,-32464,-4447,-32464,
-                         -4787,-32416,-4787,-32416,-4787,-32416,-4787,-32416,
-                         -5126,-32364,-5126,-32364,-5126,-32364,-5126,-32364,
-                         -5465,-32309,-5465,-32309,-5465,-32309,-5465,-32309,
-                         -5803,-32250,-5803,-32250,-5803,-32250,-5803,-32250,
-                         -6140,-32187,-6140,-32187,-6140,-32187,-6140,-32187,
-                         -6477,-32121,-6477,-32121,-6477,-32121,-6477,-32121,
-                         -6813,-32051,-6813,-32051,-6813,-32051,-6813,-32051,
-                         -7148,-31978,-7148,-31978,-7148,-31978,-7148,-31978,
-                         -7483,-31902,-7483,-31902,-7483,-31902,-7483,-31902,
-                         -7817,-31822,-7817,-31822,-7817,-31822,-7817,-31822,
-                         -8149,-31738,-8149,-31738,-8149,-31738,-8149,-31738,
-                         -8481,-31651,-8481,-31651,-8481,-31651,-8481,-31651,
-                         -8812,-31560,-8812,-31560,-8812,-31560,-8812,-31560,
-                         -9142,-31466,-9142,-31466,-9142,-31466,-9142,-31466,
-                         -9471,-31369,-9471,-31369,-9471,-31369,-9471,-31369,
-                         -9799,-31268,-9799,-31268,-9799,-31268,-9799,-31268,
-                         -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                         -10452,-31056,-10452,-31056,-10452,-31056,-10452,-31056,
-                         -10776,-30945,-10776,-30945,-10776,-30945,-10776,-30945,
-                         -11100,-30830,-11100,-30830,-11100,-30830,-11100,-30830,
-                         -11422,-30712,-11422,-30712,-11422,-30712,-11422,-30712,
-                         -11743,-30591,-11743,-30591,-11743,-30591,-11743,-30591,
-                         -12063,-30466,-12063,-30466,-12063,-30466,-12063,-30466,
-                         -12381,-30339,-12381,-30339,-12381,-30339,-12381,-30339,
-                         -12698,-30207,-12698,-30207,-12698,-30207,-12698,-30207,
-                         -13014,-30073,-13014,-30073,-13014,-30073,-13014,-30073,
-                         -13328,-29935,-13328,-29935,-13328,-29935,-13328,-29935,
-                         -13641,-29793,-13641,-29793,-13641,-29793,-13641,-29793,
-                         -13952,-29649,-13952,-29649,-13952,-29649,-13952,-29649,
-                         -14262,-29501,-14262,-29501,-14262,-29501,-14262,-29501,
-                         -14570,-29350,-14570,-29350,-14570,-29350,-14570,-29350,
-                         -14876,-29196,-14876,-29196,-14876,-29196,-14876,-29196,
-                         -15181,-29039,-15181,-29039,-15181,-29039,-15181,-29039,
-                         -15485,-28878,-15485,-28878,-15485,-28878,-15485,-28878,
-                         -15786,-28714,-15786,-28714,-15786,-28714,-15786,-28714,
-                         -16086,-28548,-16086,-28548,-16086,-28548,-16086,-28548,
-                         -16384,-28378,-16384,-28378,-16384,-28378,-16384,-28378,
-                         -16680,-28204,-16680,-28204,-16680,-28204,-16680,-28204,
-                         -16975,-28028,-16975,-28028,-16975,-28028,-16975,-28028,
-                         -17267,-27849,-17267,-27849,-17267,-27849,-17267,-27849,
-                         -17558,-27667,-17558,-27667,-17558,-27667,-17558,-27667,
-                         -17847,-27481,-17847,-27481,-17847,-27481,-17847,-27481,
-                         -18133,-27293,-18133,-27293,-18133,-27293,-18133,-27293,
-                         -18418,-27101,-18418,-27101,-18418,-27101,-18418,-27101,
-                         -18701,-26907,-18701,-26907,-18701,-26907,-18701,-26907,
-                         -18982,-26710,-18982,-26710,-18982,-26710,-18982,-26710,
-                         -19260,-26510,-19260,-26510,-19260,-26510,-19260,-26510,
-                         -19537,-26306,-19537,-26306,-19537,-26306,-19537,-26306,
-                         -19811,-26100,-19811,-26100,-19811,-26100,-19811,-26100,
-                         -20084,-25892,-20084,-25892,-20084,-25892,-20084,-25892,
-                         -20354,-25680,-20354,-25680,-20354,-25680,-20354,-25680,
-                         -20621,-25465,-20621,-25465,-20621,-25465,-20621,-25465,
-                         -20887,-25248,-20887,-25248,-20887,-25248,-20887,-25248,
-                         -21150,-25028,-21150,-25028,-21150,-25028,-21150,-25028,
-                         -21411,-24805,-21411,-24805,-21411,-24805,-21411,-24805,
-                         -21670,-24579,-21670,-24579,-21670,-24579,-21670,-24579,
-                         -21926,-24351,-21926,-24351,-21926,-24351,-21926,-24351,
-                         -22180,-24120,-22180,-24120,-22180,-24120,-22180,-24120,
-                         -22431,-23887,-22431,-23887,-22431,-23887,-22431,-23887,
-                         -22680,-23650,-22680,-23650,-22680,-23650,-22680,-23650,
-                         -22926,-23412,-22926,-23412,-22926,-23412,-22926,-23412,
-                         -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                         -23412,-22926,-23412,-22926,-23412,-22926,-23412,-22926,
-                         -23650,-22680,-23650,-22680,-23650,-22680,-23650,-22680,
-                         -23887,-22431,-23887,-22431,-23887,-22431,-23887,-22431,
-                         -24120,-22180,-24120,-22180,-24120,-22180,-24120,-22180,
-                         -24351,-21926,-24351,-21926,-24351,-21926,-24351,-21926,
-                         -24579,-21670,-24579,-21670,-24579,-21670,-24579,-21670,
-                         -24805,-21411,-24805,-21411,-24805,-21411,-24805,-21411,
-                         -25028,-21150,-25028,-21150,-25028,-21150,-25028,-21150,
-                         -25248,-20887,-25248,-20887,-25248,-20887,-25248,-20887,
-                         -25465,-20621,-25465,-20621,-25465,-20621,-25465,-20621,
-                         -25680,-20354,-25680,-20354,-25680,-20354,-25680,-20354,
-                         -25892,-20084,-25892,-20084,-25892,-20084,-25892,-20084,
-                         -26100,-19811,-26100,-19811,-26100,-19811,-26100,-19811,
-                         -26306,-19537,-26306,-19537,-26306,-19537,-26306,-19537,
-                         -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                         -26710,-18982,-26710,-18982,-26710,-18982,-26710,-18982,
-                         -26907,-18701,-26907,-18701,-26907,-18701,-26907,-18701,
-                         -27101,-18418,-27101,-18418,-27101,-18418,-27101,-18418,
-                         -27293,-18133,-27293,-18133,-27293,-18133,-27293,-18133,
-                         -27481,-17847,-27481,-17847,-27481,-17847,-27481,-17847,
-                         -27667,-17558,-27667,-17558,-27667,-17558,-27667,-17558,
-                         -27849,-17267,-27849,-17267,-27849,-17267,-27849,-17267,
-                         -28028,-16975,-28028,-16975,-28028,-16975,-28028,-16975,
-                         -28204,-16680,-28204,-16680,-28204,-16680,-28204,-16680,
-                         -28378,-16384,-28378,-16384,-28378,-16384,-28378,-16384,
-                         -28548,-16086,-28548,-16086,-28548,-16086,-28548,-16086,
-                         -28714,-15786,-28714,-15786,-28714,-15786,-28714,-15786,
-                         -28878,-15485,-28878,-15485,-28878,-15485,-28878,-15485,
-                         -29039,-15181,-29039,-15181,-29039,-15181,-29039,-15181,
-                         -29196,-14876,-29196,-14876,-29196,-14876,-29196,-14876,
-                         -29350,-14570,-29350,-14570,-29350,-14570,-29350,-14570,
-                         -29501,-14262,-29501,-14262,-29501,-14262,-29501,-14262,
-                         -29649,-13952,-29649,-13952,-29649,-13952,-29649,-13952,
-                         -29793,-13641,-29793,-13641,-29793,-13641,-29793,-13641,
-                         -29935,-13328,-29935,-13328,-29935,-13328,-29935,-13328,
-                         -30073,-13014,-30073,-13014,-30073,-13014,-30073,-13014,
-                         -30207,-12698,-30207,-12698,-30207,-12698,-30207,-12698,
-                         -30339,-12381,-30339,-12381,-30339,-12381,-30339,-12381,
-                         -30466,-12063,-30466,-12063,-30466,-12063,-30466,-12063,
-                         -30591,-11743,-30591,-11743,-30591,-11743,-30591,-11743,
-                         -30712,-11422,-30712,-11422,-30712,-11422,-30712,-11422,
-                         -30830,-11100,-30830,-11100,-30830,-11100,-30830,-11100,
-                         -30945,-10776,-30945,-10776,-30945,-10776,-30945,-10776,
-                         -31056,-10452,-31056,-10452,-31056,-10452,-31056,-10452,
-                         -31164,-10126,-31164,-10126,-31164,-10126,-31164,-10126,
-                         -31268,-9799,-31268,-9799,-31268,-9799,-31268,-9799,
-                         -31369,-9471,-31369,-9471,-31369,-9471,-31369,-9471,
-                         -31466,-9142,-31466,-9142,-31466,-9142,-31466,-9142,
-                         -31560,-8812,-31560,-8812,-31560,-8812,-31560,-8812,
-                         -31651,-8481,-31651,-8481,-31651,-8481,-31651,-8481,
-                         -31738,-8149,-31738,-8149,-31738,-8149,-31738,-8149,
-                         -31822,-7817,-31822,-7817,-31822,-7817,-31822,-7817,
-                         -31902,-7483,-31902,-7483,-31902,-7483,-31902,-7483,
-                         -31978,-7148,-31978,-7148,-31978,-7148,-31978,-7148,
-                         -32051,-6813,-32051,-6813,-32051,-6813,-32051,-6813,
-                         -32121,-6477,-32121,-6477,-32121,-6477,-32121,-6477,
-                         -32187,-6140,-32187,-6140,-32187,-6140,-32187,-6140,
-                         -32250,-5803,-32250,-5803,-32250,-5803,-32250,-5803,
-                         -32309,-5465,-32309,-5465,-32309,-5465,-32309,-5465,
-                         -32364,-5126,-32364,-5126,-32364,-5126,-32364,-5126,
-                         -32416,-4787,-32416,-4787,-32416,-4787,-32416,-4787,
-                         -32464,-4447,-32464,-4447,-32464,-4447,-32464,-4447,
-                         -32509,-4107,-32509,-4107,-32509,-4107,-32509,-4107,
-                         -32550,-3767,-32550,-3767,-32550,-3767,-32550,-3767,
-                         -32588,-3426,-32588,-3426,-32588,-3426,-32588,-3426,
-                         -32622,-3084,-32622,-3084,-32622,-3084,-32622,-3084,
-                         -32653,-2742,-32653,-2742,-32653,-2742,-32653,-2742,
-                         -32680,-2400,-32680,-2400,-32680,-2400,-32680,-2400,
-                         -32703,-2058,-32703,-2058,-32703,-2058,-32703,-2058,
-                         -32723,-1715,-32723,-1715,-32723,-1715,-32723,-1715,
-                         -32739,-1373,-32739,-1373,-32739,-1373,-32739,-1373,
-                         -32751,-1030,-32751,-1030,-32751,-1030,-32751,-1030,
-                         -32760,-687,-32760,-687,-32760,-687,-32760,-687,
-                         -32766,-344,-32766,-344,-32766,-344,-32766,-344
-                        };
-
-int16_t twc1200[4784] = { 32762,-515,32762,-515,32762,-515,32762,-515,
-                          32750,-1030,32750,-1030,32750,-1030,32750,-1030,
-                          32730,-1544,32730,-1544,32730,-1544,32730,-1544,
-                          32702,-2058,32702,-2058,32702,-2058,32702,-2058,
-                          32665,-2571,32665,-2571,32665,-2571,32665,-2571,
-                          32621,-3084,32621,-3084,32621,-3084,32621,-3084,
-                          32569,-3596,32569,-3596,32569,-3596,32569,-3596,
-                          32508,-4107,32508,-4107,32508,-4107,32508,-4107,
-                          32440,-4617,32440,-4617,32440,-4617,32440,-4617,
-                          32363,-5126,32363,-5126,32363,-5126,32363,-5126,
-                          32279,-5634,32279,-5634,32279,-5634,32279,-5634,
-                          32186,-6140,32186,-6140,32186,-6140,32186,-6140,
-                          32086,-6645,32086,-6645,32086,-6645,32086,-6645,
-                          31977,-7148,31977,-7148,31977,-7148,31977,-7148,
-                          31861,-7650,31861,-7650,31861,-7650,31861,-7650,
-                          31737,-8149,31737,-8149,31737,-8149,31737,-8149,
-                          31605,-8647,31605,-8647,31605,-8647,31605,-8647,
-                          31465,-9142,31465,-9142,31465,-9142,31465,-9142,
-                          31318,-9635,31318,-9635,31318,-9635,31318,-9635,
-                          31163,-10126,31163,-10126,31163,-10126,31163,-10126,
-                          31000,-10614,31000,-10614,31000,-10614,31000,-10614,
-                          30829,-11100,30829,-11100,30829,-11100,30829,-11100,
-                          30651,-11583,30651,-11583,30651,-11583,30651,-11583,
-                          30465,-12063,30465,-12063,30465,-12063,30465,-12063,
-                          30272,-12540,30272,-12540,30272,-12540,30272,-12540,
-                          30072,-13014,30072,-13014,30072,-13014,30072,-13014,
-                          29863,-13485,29863,-13485,29863,-13485,29863,-13485,
-                          29648,-13952,29648,-13952,29648,-13952,29648,-13952,
-                          29425,-14416,29425,-14416,29425,-14416,29425,-14416,
-                          29195,-14876,29195,-14876,29195,-14876,29195,-14876,
-                          28958,-15333,28958,-15333,28958,-15333,28958,-15333,
-                          28713,-15786,28713,-15786,28713,-15786,28713,-15786,
-                          28462,-16235,28462,-16235,28462,-16235,28462,-16235,
-                          28203,-16680,28203,-16680,28203,-16680,28203,-16680,
-                          27938,-17121,27938,-17121,27938,-17121,27938,-17121,
-                          27666,-17558,27666,-17558,27666,-17558,27666,-17558,
-                          27386,-17990,27386,-17990,27386,-17990,27386,-17990,
-                          27100,-18418,27100,-18418,27100,-18418,27100,-18418,
-                          26808,-18842,26808,-18842,26808,-18842,26808,-18842,
-                          26509,-19260,26509,-19260,26509,-19260,26509,-19260,
-                          26203,-19674,26203,-19674,26203,-19674,26203,-19674,
-                          25891,-20084,25891,-20084,25891,-20084,25891,-20084,
-                          25572,-20488,25572,-20488,25572,-20488,25572,-20488,
-                          25247,-20887,25247,-20887,25247,-20887,25247,-20887,
-                          24916,-21281,24916,-21281,24916,-21281,24916,-21281,
-                          24578,-21670,24578,-21670,24578,-21670,24578,-21670,
-                          24235,-22053,24235,-22053,24235,-22053,24235,-22053,
-                          23886,-22431,23886,-22431,23886,-22431,23886,-22431,
-                          23530,-22803,23530,-22803,23530,-22803,23530,-22803,
-                          23169,-23170,23169,-23170,23169,-23170,23169,-23170,
-                          22802,-23531,22802,-23531,22802,-23531,22802,-23531,
-                          22430,-23887,22430,-23887,22430,-23887,22430,-23887,
-                          22052,-24236,22052,-24236,22052,-24236,22052,-24236,
-                          21669,-24579,21669,-24579,21669,-24579,21669,-24579,
-                          21280,-24917,21280,-24917,21280,-24917,21280,-24917,
-                          20886,-25248,20886,-25248,20886,-25248,20886,-25248,
-                          20487,-25573,20487,-25573,20487,-25573,20487,-25573,
-                          20083,-25892,20083,-25892,20083,-25892,20083,-25892,
-                          19673,-26204,19673,-26204,19673,-26204,19673,-26204,
-                          19259,-26510,19259,-26510,19259,-26510,19259,-26510,
-                          18841,-26809,18841,-26809,18841,-26809,18841,-26809,
-                          18417,-27101,18417,-27101,18417,-27101,18417,-27101,
-                          17989,-27387,17989,-27387,17989,-27387,17989,-27387,
-                          17557,-27667,17557,-27667,17557,-27667,17557,-27667,
-                          17120,-27939,17120,-27939,17120,-27939,17120,-27939,
-                          16679,-28204,16679,-28204,16679,-28204,16679,-28204,
-                          16234,-28463,16234,-28463,16234,-28463,16234,-28463,
-                          15785,-28714,15785,-28714,15785,-28714,15785,-28714,
-                          15332,-28959,15332,-28959,15332,-28959,15332,-28959,
-                          14875,-29196,14875,-29196,14875,-29196,14875,-29196,
-                          14415,-29426,14415,-29426,14415,-29426,14415,-29426,
-                          13951,-29649,13951,-29649,13951,-29649,13951,-29649,
-                          13484,-29864,13484,-29864,13484,-29864,13484,-29864,
-                          13013,-30073,13013,-30073,13013,-30073,13013,-30073,
-                          12539,-30273,12539,-30273,12539,-30273,12539,-30273,
-                          12062,-30466,12062,-30466,12062,-30466,12062,-30466,
-                          11582,-30652,11582,-30652,11582,-30652,11582,-30652,
-                          11099,-30830,11099,-30830,11099,-30830,11099,-30830,
-                          10613,-31001,10613,-31001,10613,-31001,10613,-31001,
-                          10125,-31164,10125,-31164,10125,-31164,10125,-31164,
-                          9634,-31319,9634,-31319,9634,-31319,9634,-31319,
-                          9141,-31466,9141,-31466,9141,-31466,9141,-31466,
-                          8646,-31606,8646,-31606,8646,-31606,8646,-31606,
-                          8148,-31738,8148,-31738,8148,-31738,8148,-31738,
-                          7649,-31862,7649,-31862,7649,-31862,7649,-31862,
-                          7147,-31978,7147,-31978,7147,-31978,7147,-31978,
-                          6644,-32087,6644,-32087,6644,-32087,6644,-32087,
-                          6139,-32187,6139,-32187,6139,-32187,6139,-32187,
-                          5633,-32280,5633,-32280,5633,-32280,5633,-32280,
-                          5125,-32364,5125,-32364,5125,-32364,5125,-32364,
-                          4616,-32441,4616,-32441,4616,-32441,4616,-32441,
-                          4106,-32509,4106,-32509,4106,-32509,4106,-32509,
-                          3595,-32570,3595,-32570,3595,-32570,3595,-32570,
-                          3083,-32622,3083,-32622,3083,-32622,3083,-32622,
-                          2570,-32666,2570,-32666,2570,-32666,2570,-32666,
-                          2057,-32703,2057,-32703,2057,-32703,2057,-32703,
-                          1543,-32731,1543,-32731,1543,-32731,1543,-32731,
-                          1029,-32751,1029,-32751,1029,-32751,1029,-32751,
-                          514,-32763,514,-32763,514,-32763,514,-32763,
-                          0,-32767,0,-32767,0,-32767,0,-32767,
-                          -515,-32763,-515,-32763,-515,-32763,-515,-32763,
-                          -1030,-32751,-1030,-32751,-1030,-32751,-1030,-32751,
-                          -1544,-32731,-1544,-32731,-1544,-32731,-1544,-32731,
-                          -2058,-32703,-2058,-32703,-2058,-32703,-2058,-32703,
-                          -2571,-32666,-2571,-32666,-2571,-32666,-2571,-32666,
-                          -3084,-32622,-3084,-32622,-3084,-32622,-3084,-32622,
-                          -3596,-32570,-3596,-32570,-3596,-32570,-3596,-32570,
-                          -4107,-32509,-4107,-32509,-4107,-32509,-4107,-32509,
-                          -4617,-32441,-4617,-32441,-4617,-32441,-4617,-32441,
-                          -5126,-32364,-5126,-32364,-5126,-32364,-5126,-32364,
-                          -5634,-32280,-5634,-32280,-5634,-32280,-5634,-32280,
-                          -6140,-32187,-6140,-32187,-6140,-32187,-6140,-32187,
-                          -6645,-32087,-6645,-32087,-6645,-32087,-6645,-32087,
-                          -7148,-31978,-7148,-31978,-7148,-31978,-7148,-31978,
-                          -7650,-31862,-7650,-31862,-7650,-31862,-7650,-31862,
-                          -8149,-31738,-8149,-31738,-8149,-31738,-8149,-31738,
-                          -8647,-31606,-8647,-31606,-8647,-31606,-8647,-31606,
-                          -9142,-31466,-9142,-31466,-9142,-31466,-9142,-31466,
-                          -9635,-31319,-9635,-31319,-9635,-31319,-9635,-31319,
-                          -10126,-31164,-10126,-31164,-10126,-31164,-10126,-31164,
-                          -10614,-31001,-10614,-31001,-10614,-31001,-10614,-31001,
-                          -11100,-30830,-11100,-30830,-11100,-30830,-11100,-30830,
-                          -11583,-30652,-11583,-30652,-11583,-30652,-11583,-30652,
-                          -12063,-30466,-12063,-30466,-12063,-30466,-12063,-30466,
-                          -12540,-30273,-12540,-30273,-12540,-30273,-12540,-30273,
-                          -13014,-30073,-13014,-30073,-13014,-30073,-13014,-30073,
-                          -13485,-29864,-13485,-29864,-13485,-29864,-13485,-29864,
-                          -13952,-29649,-13952,-29649,-13952,-29649,-13952,-29649,
-                          -14416,-29426,-14416,-29426,-14416,-29426,-14416,-29426,
-                          -14876,-29196,-14876,-29196,-14876,-29196,-14876,-29196,
-                          -15333,-28959,-15333,-28959,-15333,-28959,-15333,-28959,
-                          -15786,-28714,-15786,-28714,-15786,-28714,-15786,-28714,
-                          -16235,-28463,-16235,-28463,-16235,-28463,-16235,-28463,
-                          -16680,-28204,-16680,-28204,-16680,-28204,-16680,-28204,
-                          -17121,-27939,-17121,-27939,-17121,-27939,-17121,-27939,
-                          -17558,-27667,-17558,-27667,-17558,-27667,-17558,-27667,
-                          -17990,-27387,-17990,-27387,-17990,-27387,-17990,-27387,
-                          -18418,-27101,-18418,-27101,-18418,-27101,-18418,-27101,
-                          -18842,-26809,-18842,-26809,-18842,-26809,-18842,-26809,
-                          -19260,-26510,-19260,-26510,-19260,-26510,-19260,-26510,
-                          -19674,-26204,-19674,-26204,-19674,-26204,-19674,-26204,
-                          -20084,-25892,-20084,-25892,-20084,-25892,-20084,-25892,
-                          -20488,-25573,-20488,-25573,-20488,-25573,-20488,-25573,
-                          -20887,-25248,-20887,-25248,-20887,-25248,-20887,-25248,
-                          -21281,-24917,-21281,-24917,-21281,-24917,-21281,-24917,
-                          -21670,-24579,-21670,-24579,-21670,-24579,-21670,-24579,
-                          -22053,-24236,-22053,-24236,-22053,-24236,-22053,-24236,
-                          -22431,-23887,-22431,-23887,-22431,-23887,-22431,-23887,
-                          -22803,-23531,-22803,-23531,-22803,-23531,-22803,-23531,
-                          -23170,-23170,-23170,-23170,-23170,-23170,-23170,-23170,
-                          -23531,-22803,-23531,-22803,-23531,-22803,-23531,-22803,
-                          -23887,-22431,-23887,-22431,-23887,-22431,-23887,-22431,
-                          -24236,-22053,-24236,-22053,-24236,-22053,-24236,-22053,
-                          -24579,-21670,-24579,-21670,-24579,-21670,-24579,-21670,
-                          -24917,-21281,-24917,-21281,-24917,-21281,-24917,-21281,
-                          -25248,-20887,-25248,-20887,-25248,-20887,-25248,-20887,
-                          -25573,-20488,-25573,-20488,-25573,-20488,-25573,-20488,
-                          -25892,-20084,-25892,-20084,-25892,-20084,-25892,-20084,
-                          -26204,-19674,-26204,-19674,-26204,-19674,-26204,-19674,
-                          -26510,-19260,-26510,-19260,-26510,-19260,-26510,-19260,
-                          -26809,-18842,-26809,-18842,-26809,-18842,-26809,-18842,
-                          -27101,-18418,-27101,-18418,-27101,-18418,-27101,-18418,
-                          -27387,-17990,-27387,-17990,-27387,-17990,-27387,-17990,
-                          -27667,-17558,-27667,-17558,-27667,-17558,-27667,-17558,
-                          -27939,-17121,-27939,-17121,-27939,-17121,-27939,-17121,
-                          -28204,-16680,-28204,-16680,-28204,-16680,-28204,-16680,
-                          -28463,-16235,-28463,-16235,-28463,-16235,-28463,-16235,
-                          -28714,-15786,-28714,-15786,-28714,-15786,-28714,-15786,
-                          -28959,-15333,-28959,-15333,-28959,-15333,-28959,-15333,
-                          -29196,-14876,-29196,-14876,-29196,-14876,-29196,-14876,
-                          -29426,-14416,-29426,-14416,-29426,-14416,-29426,-14416,
-                          -29649,-13952,-29649,-13952,-29649,-13952,-29649,-13952,
-                          -29864,-13485,-29864,-13485,-29864,-13485,-29864,-13485,
-                          -30073,-13014,-30073,-13014,-30073,-13014,-30073,-13014,
-                          -30273,-12540,-30273,-12540,-30273,-12540,-30273,-12540,
-                          -30466,-12063,-30466,-12063,-30466,-12063,-30466,-12063,
-                          -30652,-11583,-30652,-11583,-30652,-11583,-30652,-11583,
-                          -30830,-11100,-30830,-11100,-30830,-11100,-30830,-11100,
-                          -31001,-10614,-31001,-10614,-31001,-10614,-31001,-10614,
-                          -31164,-10126,-31164,-10126,-31164,-10126,-31164,-10126,
-                          -31319,-9635,-31319,-9635,-31319,-9635,-31319,-9635,
-                          -31466,-9142,-31466,-9142,-31466,-9142,-31466,-9142,
-                          -31606,-8647,-31606,-8647,-31606,-8647,-31606,-8647,
-                          -31738,-8149,-31738,-8149,-31738,-8149,-31738,-8149,
-                          -31862,-7650,-31862,-7650,-31862,-7650,-31862,-7650,
-                          -31978,-7148,-31978,-7148,-31978,-7148,-31978,-7148,
-                          -32087,-6645,-32087,-6645,-32087,-6645,-32087,-6645,
-                          -32187,-6140,-32187,-6140,-32187,-6140,-32187,-6140,
-                          -32280,-5634,-32280,-5634,-32280,-5634,-32280,-5634,
-                          -32364,-5126,-32364,-5126,-32364,-5126,-32364,-5126,
-                          -32441,-4617,-32441,-4617,-32441,-4617,-32441,-4617,
-                          -32509,-4107,-32509,-4107,-32509,-4107,-32509,-4107,
-                          -32570,-3596,-32570,-3596,-32570,-3596,-32570,-3596,
-                          -32622,-3084,-32622,-3084,-32622,-3084,-32622,-3084,
-                          -32666,-2571,-32666,-2571,-32666,-2571,-32666,-2571,
-                          -32703,-2058,-32703,-2058,-32703,-2058,-32703,-2058,
-                          -32731,-1544,-32731,-1544,-32731,-1544,-32731,-1544,
-                          -32751,-1030,-32751,-1030,-32751,-1030,-32751,-1030,
-                          -32763,-515,-32763,-515,-32763,-515,-32763,-515,
-                          -32767,-1,-32767,-1,-32767,-1,-32767,-1,
-                          -32763,514,-32763,514,-32763,514,-32763,514,
-                          -32751,1029,-32751,1029,-32751,1029,-32751,1029,
-                          -32731,1543,-32731,1543,-32731,1543,-32731,1543,
-                          -32703,2057,-32703,2057,-32703,2057,-32703,2057,
-                          -32666,2570,-32666,2570,-32666,2570,-32666,2570,
-                          -32622,3083,-32622,3083,-32622,3083,-32622,3083,
-                          -32570,3595,-32570,3595,-32570,3595,-32570,3595,
-                          -32509,4106,-32509,4106,-32509,4106,-32509,4106,
-                          -32441,4616,-32441,4616,-32441,4616,-32441,4616,
-                          -32364,5125,-32364,5125,-32364,5125,-32364,5125,
-                          -32280,5633,-32280,5633,-32280,5633,-32280,5633,
-                          -32187,6139,-32187,6139,-32187,6139,-32187,6139,
-                          -32087,6644,-32087,6644,-32087,6644,-32087,6644,
-                          -31978,7147,-31978,7147,-31978,7147,-31978,7147,
-                          -31862,7649,-31862,7649,-31862,7649,-31862,7649,
-                          -31738,8148,-31738,8148,-31738,8148,-31738,8148,
-                          -31606,8646,-31606,8646,-31606,8646,-31606,8646,
-                          -31466,9141,-31466,9141,-31466,9141,-31466,9141,
-                          -31319,9634,-31319,9634,-31319,9634,-31319,9634,
-                          -31164,10125,-31164,10125,-31164,10125,-31164,10125,
-                          -31001,10613,-31001,10613,-31001,10613,-31001,10613,
-                          -30830,11099,-30830,11099,-30830,11099,-30830,11099,
-                          -30652,11582,-30652,11582,-30652,11582,-30652,11582,
-                          -30466,12062,-30466,12062,-30466,12062,-30466,12062,
-                          -30273,12539,-30273,12539,-30273,12539,-30273,12539,
-                          -30073,13013,-30073,13013,-30073,13013,-30073,13013,
-                          -29864,13484,-29864,13484,-29864,13484,-29864,13484,
-                          -29649,13951,-29649,13951,-29649,13951,-29649,13951,
-                          -29426,14415,-29426,14415,-29426,14415,-29426,14415,
-                          -29196,14875,-29196,14875,-29196,14875,-29196,14875,
-                          -28959,15332,-28959,15332,-28959,15332,-28959,15332,
-                          -28714,15785,-28714,15785,-28714,15785,-28714,15785,
-                          -28463,16234,-28463,16234,-28463,16234,-28463,16234,
-                          -28204,16679,-28204,16679,-28204,16679,-28204,16679,
-                          -27939,17120,-27939,17120,-27939,17120,-27939,17120,
-                          -27667,17557,-27667,17557,-27667,17557,-27667,17557,
-                          -27387,17989,-27387,17989,-27387,17989,-27387,17989,
-                          -27101,18417,-27101,18417,-27101,18417,-27101,18417,
-                          -26809,18841,-26809,18841,-26809,18841,-26809,18841,
-                          -26510,19259,-26510,19259,-26510,19259,-26510,19259,
-                          -26204,19673,-26204,19673,-26204,19673,-26204,19673,
-                          -25892,20083,-25892,20083,-25892,20083,-25892,20083,
-                          -25573,20487,-25573,20487,-25573,20487,-25573,20487,
-                          -25248,20886,-25248,20886,-25248,20886,-25248,20886,
-                          -24917,21280,-24917,21280,-24917,21280,-24917,21280,
-                          -24579,21669,-24579,21669,-24579,21669,-24579,21669,
-                          -24236,22052,-24236,22052,-24236,22052,-24236,22052,
-                          -23887,22430,-23887,22430,-23887,22430,-23887,22430,
-                          -23531,22802,-23531,22802,-23531,22802,-23531,22802,
-                          -23170,23169,-23170,23169,-23170,23169,-23170,23169,
-                          -22803,23530,-22803,23530,-22803,23530,-22803,23530,
-                          -22431,23886,-22431,23886,-22431,23886,-22431,23886,
-                          -22053,24235,-22053,24235,-22053,24235,-22053,24235,
-                          -21670,24578,-21670,24578,-21670,24578,-21670,24578,
-                          -21281,24916,-21281,24916,-21281,24916,-21281,24916,
-                          -20887,25247,-20887,25247,-20887,25247,-20887,25247,
-                          -20488,25572,-20488,25572,-20488,25572,-20488,25572,
-                          -20084,25891,-20084,25891,-20084,25891,-20084,25891,
-                          -19674,26203,-19674,26203,-19674,26203,-19674,26203,
-                          -19260,26509,-19260,26509,-19260,26509,-19260,26509,
-                          -18842,26808,-18842,26808,-18842,26808,-18842,26808,
-                          -18418,27100,-18418,27100,-18418,27100,-18418,27100,
-                          -17990,27386,-17990,27386,-17990,27386,-17990,27386,
-                          -17558,27666,-17558,27666,-17558,27666,-17558,27666,
-                          -17121,27938,-17121,27938,-17121,27938,-17121,27938,
-                          -16680,28203,-16680,28203,-16680,28203,-16680,28203,
-                          -16235,28462,-16235,28462,-16235,28462,-16235,28462,
-                          -15786,28713,-15786,28713,-15786,28713,-15786,28713,
-                          -15333,28958,-15333,28958,-15333,28958,-15333,28958,
-                          -14876,29195,-14876,29195,-14876,29195,-14876,29195,
-                          -14416,29425,-14416,29425,-14416,29425,-14416,29425,
-                          -13952,29648,-13952,29648,-13952,29648,-13952,29648,
-                          -13485,29863,-13485,29863,-13485,29863,-13485,29863,
-                          -13014,30072,-13014,30072,-13014,30072,-13014,30072,
-                          -12540,30272,-12540,30272,-12540,30272,-12540,30272,
-                          -12063,30465,-12063,30465,-12063,30465,-12063,30465,
-                          -11583,30651,-11583,30651,-11583,30651,-11583,30651,
-                          -11100,30829,-11100,30829,-11100,30829,-11100,30829,
-                          -10614,31000,-10614,31000,-10614,31000,-10614,31000,
-                          -10126,31163,-10126,31163,-10126,31163,-10126,31163,
-                          -9635,31318,-9635,31318,-9635,31318,-9635,31318,
-                          -9142,31465,-9142,31465,-9142,31465,-9142,31465,
-                          -8647,31605,-8647,31605,-8647,31605,-8647,31605,
-                          -8149,31737,-8149,31737,-8149,31737,-8149,31737,
-                          -7650,31861,-7650,31861,-7650,31861,-7650,31861,
-                          -7148,31977,-7148,31977,-7148,31977,-7148,31977,
-                          -6645,32086,-6645,32086,-6645,32086,-6645,32086,
-                          -6140,32186,-6140,32186,-6140,32186,-6140,32186,
-                          -5634,32279,-5634,32279,-5634,32279,-5634,32279,
-                          -5126,32363,-5126,32363,-5126,32363,-5126,32363,
-                          -4617,32440,-4617,32440,-4617,32440,-4617,32440,
-                          -4107,32508,-4107,32508,-4107,32508,-4107,32508,
-                          -3596,32569,-3596,32569,-3596,32569,-3596,32569,
-                          -3084,32621,-3084,32621,-3084,32621,-3084,32621,
-                          -2571,32665,-2571,32665,-2571,32665,-2571,32665,
-                          -2058,32702,-2058,32702,-2058,32702,-2058,32702,
-                          -1544,32730,-1544,32730,-1544,32730,-1544,32730,
-                          -1030,32750,-1030,32750,-1030,32750,-1030,32750,
-                          -515,32762,-515,32762,-515,32762,-515,32762
-                        };
-
+int16_t twa1200[4784];
+int16_t twb1200[4784];
+int16_t twc1200[4784];
 
 void dft1200(int16_t *x,int16_t *y,unsigned char scale_flag)
 {
@@ -18504,11 +8526,335 @@ void dft1200(int16_t *x,int16_t *y,unsigned char scale_flag)
 
 }
 
+void init_rad4(int N,int16_t *tw) {
+
+  int16_t *twa = tw;
+  int16_t *twb = twa+(N/2);
+  int16_t *twc = twb+(N/2);
+  int i;
+
+  for (i=0;i<(N/4);i++) {
+    *twa = (int16_t)round(32767.0*cos(2*M_PI*i/N)); twa++;
+    *twa = -(int16_t)round(32767.0*sin(2*M_PI*i/N)); twa++;
+    *twb = (int16_t)round(32767.0*cos(2*M_PI*2*i/N)); twb++;
+    *twb = -(int16_t)round(32767.0*sin(2*M_PI*2*i/N)); twb++;
+    *twc = (int16_t)round(32767.0*cos(2*M_PI*3*i/N)); twc++;
+    *twc = -(int16_t)round(32767.0*sin(2*M_PI*3*i/N)); twc++;
+  }
+}
+void init_rad4_rep(int N,int16_t *twa,int16_t *twb,int16_t *twc) {
+
+  int i,j;
+
+  for (i=1;i<(N/4);i++) {
+    twa[0] = (int16_t)round(32767.0*cos(2*M_PI*i/N)); 
+    twa[1] = -(int16_t)round(32767.0*sin(2*M_PI*i/N));
+    twb[0] = (int16_t)round(32767.0*cos(2*M_PI*2*i/N));
+    twb[1] = -(int16_t)round(32767.0*sin(2*M_PI*2*i/N));
+    twc[0] = (int16_t)round(32767.0*cos(2*M_PI*3*i/N));
+    twc[1] = -(int16_t)round(32767.0*sin(2*M_PI*3*i/N));
+    for (j=1;j<4;j++) {
+      ((int32_t*)twa)[j]=((int32_t*)twa)[0];
+      ((int32_t*)twb)[j]=((int32_t*)twb)[0];
+      ((int32_t*)twc)[j]=((int32_t*)twc)[0];
+    }
+    twa+=8;
+    twb+=8;
+    twc+=8;
+  }
+}
+
+void init_rad2(int N,int16_t *tw) {
+
+  int16_t *twa = tw;
+  int i;
+
+  for (i=0;i<(N>>1);i++) {
+    *twa = (int16_t)round(32767.0*cos(2*M_PI*i/N)); twa++;
+    *twa = -(int16_t)round(32767.0*sin(2*M_PI*i/N)); twa++;
+  }
+}
+
+void init_rad2_rep(int N,int16_t *twa) {
+
+  int i,j;
+
+  for (i=1;i<(N/2);i++) {
+    twa[0] = (int16_t)round(32767.0*cos(2*M_PI*i/N)); 
+    twa[1] = -(int16_t)round(32767.0*sin(2*M_PI*i/N));
+    for (j=1;j<4;j++) {
+      ((int32_t*)twa)[j]=((int32_t*)twa)[0];
+    }
+    twa+=8;
+  }
+}
+
+void init_rad3(int N,int16_t *twa,int16_t *twb) {
+
+  int i;
+
+  for (i=0;i<(N/3);i++) {
+    *twa = (int16_t)round(32767.0*cos(2*M_PI*i/N)); twa++;
+    *twa = -(int16_t)round(32767.0*sin(2*M_PI*i/N)); twa++;
+    *twb = (int16_t)round(32767.0*cos(2*M_PI*2*i/N)); twb++;
+    *twb = -(int16_t)round(32767.0*sin(2*M_PI*2*i/N)); twb++;
+  }
+}
+
+void init_rad3_rep(int N,int16_t *twa,int16_t *twb) {
+
+  int i,j;
+
+  for (i=1;i<(N/3);i++) {
+    twa[0] = (int16_t)round(32767.0*cos(2*M_PI*i/N)); 
+    twa[1] = -(int16_t)round(32767.0*sin(2*M_PI*i/N));
+    twb[0] = (int16_t)round(32767.0*cos(2*M_PI*2*i/N));
+    twb[1] = -(int16_t)round(32767.0*sin(2*M_PI*2*i/N));
+    for (j=1;j<4;j++) {
+      ((int32_t*)twa)[j]=((int32_t*)twa)[0];
+      ((int32_t*)twb)[j]=((int32_t*)twb)[0];
+    }
+    twa+=8;
+    twb+=8;
+  }
+}
+
+void init_rad5_rep(int N,int16_t *twa,int16_t *twb,int16_t *twc,int16_t *twd) {
+
+  int i,j;
+
+  for (i=1;i<(N/5);i++) {
+    twa[0] = (int16_t)round(32767.0*cos(2*M_PI*i/N)); 
+    twa[1] = -(int16_t)round(32767.0*sin(2*M_PI*i/N));
+    twb[0] = (int16_t)round(32767.0*cos(2*M_PI*2*i/N));
+    twb[1] = -(int16_t)round(32767.0*sin(2*M_PI*2*i/N));
+    twc[0] = (int16_t)round(32767.0*cos(2*M_PI*3*i/N));
+    twc[1] = -(int16_t)round(32767.0*sin(2*M_PI*3*i/N));
+    twd[0] = (int16_t)round(32767.0*cos(2*M_PI*4*i/N));
+    twd[1] = -(int16_t)round(32767.0*sin(2*M_PI*4*i/N));
+    for (j=1;j<4;j++) {
+      ((int32_t*)twa)[j]=((int32_t*)twa)[0];
+      ((int32_t*)twb)[j]=((int32_t*)twb)[0];
+      ((int32_t*)twc)[j]=((int32_t*)twc)[0];
+      ((int32_t*)twd)[j]=((int32_t*)twd)[0];
+    }
+    twa+=8;
+    twb+=8;
+    twc+=8;
+    twd+=8;
+  }
+}
+
+
+void init_dfts(void)
+{
+  init_rad4(1024,tw1024);
+  init_rad2(2048,tw2048);
+  init_rad4(4096,tw4096);
+  init_rad2(8192,tw8192);
+  
+  init_rad3(1536,twa1536,twb1536);
+  init_rad3(3072,twa3072,twb3072);
+  init_rad3(6144,twa6144,twb6144);
+  init_rad3(12288,twa12288,twb12288);
+  init_rad3(18432,twa18432,twb18432);
+  init_rad3(24576,twa24576,twb24576);
+
+  init_rad2_rep(24,tw24);
+  init_rad3_rep(36,twa36,twb36);
+  init_rad4_rep(48,twa48,twb48,twc48);
+  init_rad5_rep(60,twa60,twb60,twc60,twd60);
+  init_rad2_rep(72,tw72);
+  init_rad2_rep(96,tw96);
+  init_rad3_rep(108,twa108,twb108);
+  init_rad2_rep(120,tw120);
+  init_rad3_rep(144,twa144,twb144);
+  init_rad3_rep(180,twa180,twb180);
+  init_rad4_rep(192,twa192,twb192,twc192);
+  init_rad3_rep(216,twa216,twb216);
+  init_rad4_rep(240,twa240,twb240,twc240);
+  init_rad3_rep(288,twa288,twb288);
+  init_rad5_rep(300,twa300,twb300,twc300,twd300);
+  init_rad3_rep(324,twa324,twb324);
+  init_rad3_rep(360,twa360,twb360);
+  init_rad4_rep(384,twa384,twb384,twc384);
+  init_rad4_rep(432,twa432,twb432,twc432);
+  init_rad4_rep(480,twa480,twb480,twc480);
+  init_rad3_rep(540,twa540,twb540);
+  init_rad3_rep(576,twa576,twb576);
+  init_rad2_rep(600,twa600);
+  init_rad3_rep(648,twa648,twb648);
+  init_rad4_rep(720,twa720,twb720,twc720);
+  init_rad4_rep(768,twa768,twb768,twc768);
+  init_rad3_rep(864,twa864,twb864);
+  init_rad3_rep(900,twa900,twb900);
+  init_rad4_rep(960,twa960,twb960,twc960);
+  init_rad3_rep(972,twa972,twb972);
+  init_rad3_rep(1080,twa1080,twb1080);
+  init_rad4_rep(1152,twa1152,twb1152,twc1152);
+  init_rad4_rep(1200,twa1200,twb1200,twc1200);
+}
 
 #ifdef MR_MAIN
 #include <string.h>
 #include <stdio.h>
 
+#define LOG_M write_output
+int write_output(const char *fname,const char *vname,void *data,int length,int dec,char format)
+{
+
+  FILE *fp=NULL;
+  int i;
+
+
+  printf("Writing %d elements of type %d to %s\n",length,format,fname);
+
+
+  if (format == 10 || format ==11 || format == 12 || format == 13 || format == 14) {
+    fp = fopen(fname,"a+");
+  } else if (format != 10 && format !=11  && format != 12 && format != 13 && format != 14) {
+    fp = fopen(fname,"w+");
+  }
+
+
+
+  if (fp== NULL) {
+    printf("[OPENAIR][FILE OUTPUT] Cannot open file %s\n",fname);
+    return(-1);
+  }
+
+  if (format != 10 && format !=11  && format != 12 && format != 13 && format != 14)
+    fprintf(fp,"%s = [",vname);
+
+
+  switch (format) {
+  case 0:   // real 16-bit
+
+    for (i=0; i<length; i+=dec) {
+      fprintf(fp,"%d\n",((short *)data)[i]);
+    }
+
+    break;
+
+  case 1:  // complex 16-bit
+  case 13:
+  case 14:
+  case 15:
+
+    for (i=0; i<length<<1; i+=(2*dec)) {
+      fprintf(fp,"%d + j*(%d)\n",((short *)data)[i],((short *)data)[i+1]);
+
+    }
+
+
+    break;
+
+  case 2:  // real 32-bit
+    for (i=0; i<length; i+=dec) {
+      fprintf(fp,"%d\n",((int *)data)[i]);
+    }
+
+    break;
+
+  case 3: // complex 32-bit
+    for (i=0; i<length<<1; i+=(2*dec)) {
+      fprintf(fp,"%d + j*(%d)\n",((int *)data)[i],((int *)data)[i+1]);
+    }
+
+    break;
+
+  case 4: // real 8-bit
+    for (i=0; i<length; i+=dec) {
+      fprintf(fp,"%d\n",((char *)data)[i]);
+    }
+
+    break;
+
+  case 5: // complex 8-bit
+    for (i=0; i<length<<1; i+=(2*dec)) {
+      fprintf(fp,"%d + j*(%d)\n",((char *)data)[i],((char *)data)[i+1]);
+    }
+
+    break;
+
+  case 6:  // real 64-bit
+    for (i=0; i<length; i+=dec) {
+      fprintf(fp,"%lld\n",((long long*)data)[i]);
+    }
+
+    break;
+
+  case 7: // real double
+    for (i=0; i<length; i+=dec) {
+      fprintf(fp,"%g\n",((double *)data)[i]);
+    }
+
+    break;
+
+  case 8: // complex double
+    for (i=0; i<length<<1; i+=2*dec) {
+      fprintf(fp,"%g + j*(%g)\n",((double *)data)[i], ((double *)data)[i+1]);
+    }
+
+    break;
+
+  case 9: // real unsigned 8-bit
+    for (i=0; i<length; i+=dec) {
+      fprintf(fp,"%d\n",((unsigned char *)data)[i]);
+    }
+
+    break;
+
+
+  case 10 : // case eren 16 bit complex :
+
+    for (i=0; i<length<<1; i+=(2*dec)) {
+
+      if((i < 2*(length-1)) && (i > 0))
+        fprintf(fp,"%d + j*(%d),",((short *)data)[i],((short *)data)[i+1]);
+      else if (i == 2*(length-1))
+        fprintf(fp,"%d + j*(%d);",((short *)data)[i],((short *)data)[i+1]);
+      else if (i == 0)
+        fprintf(fp,"\n%d + j*(%d),",((short *)data)[i],((short *)data)[i+1]);
+
+
+
+    }
+
+    break;
+
+  case 11 : //case eren 16 bit real for channel magnitudes:
+    for (i=0; i<length; i+=dec) {
+
+      if((i <(length-1))&& (i > 0))
+        fprintf(fp,"%d,",((short *)data)[i]);
+      else if (i == (length-1))
+        fprintf(fp,"%d;",((short *)data)[i]);
+      else if (i == 0)
+        fprintf(fp,"\n%d,",((short *)data)[i]);
+    }
+
+    printf("\n erennnnnnnnnnnnnnn: length :%d",length);
+    break;
+
+  case 12 : // case eren for log2_maxh real unsigned 8 bit
+    fprintf(fp,"%d \n",((unsigned char *)&data)[0]);
+    break;
+
+  }
+
+  if (format != 10 && format !=11 && format !=12 && format != 13 && format != 15) {
+    fprintf(fp,"];\n");
+    fclose(fp);
+    return(0);
+  } else if (format == 10 || format ==11 || format == 12 || format == 13 || format == 15) {
+    fclose(fp);
+    return(0);
+  }
+
+  return 0;
+}
+
 
 int main(int argc, char**argv)
 {
@@ -18516,12 +8862,14 @@ int main(int argc, char**argv)
 
   time_stats_t ts;
 #ifdef __AVX2__
-  simd256_q15_t x[2048],y[2048],tw0,tw1,tw2,tw3;
+  simd256_q15_t x[4096],y[4096],tw0,tw1,tw2,tw3;
 #else
-  simd_q15_t x[4096],y[4096],tw0,tw1,tw2,tw3;
+  simd_q15_t x[8192],y[8192],tw0,tw1,tw2,tw3;
 #endif
   int i;
-  simd_q15_t *x128=x,*y128=y;
+  simd_q15_t *x128=(simd_q15_t*)x,*y128=(simd_q15_t*)y;
+
+  init_dfts();
 
   set_taus_seed(0);
   opp_enabled = 1;
@@ -18688,155 +9036,7 @@ int main(int argc, char**argv)
       printf("%d,%d,",((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
     printf("\n");
 
-    dft24((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n24-point\n");
-    printf("X: ");
-    for (i=0;i<24;i++)
-      printf("%d,%d,",((int16_t*)(&x[i]))[0],((int16_t *)(&x[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<24;i++)
-      printf("%d,%d,",((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
-    printf("\n");
-
-    dft36((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n36-point\n");
-    printf("X: ");
-    for (i=0;i<36;i++)
-      printf("%d,%d,",((int16_t*)(&x[i]))[0],((int16_t *)(&x[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<36;i++)
-      printf("%d,%d,",((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
-    printf("\n");
-
-    dft48((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n48-point\n");
-    printf("X: ");
-    for (i=0;i<48;i++)
-      printf("%d,%d,",((int16_t*)(&x[i]))[0],((int16_t *)(&x[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<48;i++)
-      printf("%d,%d,",((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
-    printf("\n");
  */
-    dft60((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n60-point\n");
-    printf("X: ");
-    for (i=0;i<60;i++)
-      printf("%d,%d,",((int16_t*)(&x128[i]))[0],((int16_t *)(&x128[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<60;i++)
-      printf("%d,%d,",((int16_t*)(&y128[i]))[0],((int16_t *)(&y128[i]))[1]);
-    printf("\n");
-    
-    dft72((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n72-point\n");
-    printf("X: ");
-    for (i=0;i<72;i++)
-      printf("%d,%d,",((int16_t*)(&x128[i]))[0],((int16_t *)(&x128[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<72;i++)
-      printf("%d: %d,%d\n",i,((int16_t*)(&y128[i]))[0],((int16_t *)(&y128[i]))[1]);
-    printf("\n");
-    /*
-    dft96((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n96-point\n");
-    printf("X: ");
-    for (i=0;i<96;i++)
-      printf("%d,%d,",((int16_t*)(&x[i]))[0],((int16_t *)(&x[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<96;i++)
-      printf("%d: %d,%d\n",i,((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
-    printf("\n");
-
-    dft108((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n108-point\n");
-    printf("X: ");
-    for (i=0;i<108;i++)
-      printf("%d,%d,",((int16_t*)(&x[i]))[0],((int16_t *)(&x[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<108;i++)
-      printf("%d: %d,%d\n",i,((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
-    printf("\n");
-    */
-    dft120((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n120-point\n");
-    printf("X: ");
-    for (i=0;i<120;i++)
-      printf("%d,%d,",((int16_t*)(&x128[i]))[0],((int16_t *)(&x128[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<120;i++)
-      printf("%d: %d,%d\n",i,((int16_t*)(&y128[i]))[0],((int16_t *)(&y128[i]))[1]);
-    printf("\n");
-    /*
-    dft144((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n144-point\n");
-    printf("X: ");
-    for (i=0;i<144;i++)
-      printf("%d,%d,",((int16_t*)(&x[i]))[0],((int16_t *)(&x[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<144;i++)
-      printf("%d: %d,%d\n",i,((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
-    printf("\n");
-
-    dft180((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n180-point\n");
-    printf("X: ");
-    for (i=0;i<180;i++)
-      printf("%d,%d,",((int16_t*)(&x[i]))[0],((int16_t *)(&x[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<180;i++)
-      printf("%d: %d,%d\n",i,((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
-    printf("\n");
-
-    dft192((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n192-point\n");
-    printf("X: ");
-    for (i=0;i<192;i++)
-      printf("%d,%d,",((int16_t*)(&x[i]))[0],((int16_t *)(&x[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<192;i++)
-      printf("%d: %d,%d\n",i,((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
-    printf("\n");
-
-    dft216((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n216-point\n");
-    printf("X: ");
-    for (i=0;i<216;i++)
-      printf("%d,%d,",((int16_t*)(&x[i]))[0],((int16_t *)(&x[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<216;i++)
-      printf("%d: %d,%d\n",i,((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
-    printf("\n");
-
-    dft240((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n240-point\n");
-    printf("X: ");
-    for (i=0;i<240;i++)
-      printf("%d,%d,",((int16_t*)(&x[i]))[0],((int16_t *)(&x[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<240;i++)
-      printf("%d: %d,%d\n",i,((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
-    printf("\n");
-
-    dft288((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n288-point\n");
-    printf("X: ");
-    for (i=0;i<288;i++)
-      printf("%d,%d,",((int16_t*)(&x[i]))[0],((int16_t *)(&x[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<288;i++)
-      printf("%d: %d,%d\n",i,((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
-    printf("\n");
-
-    dft300((int16_t *)x,(int16_t *)y,1);
-    printf("\n\n300-point\n");
-    printf("X: ");
-    for (i=0;i<300;i++)
-      printf("%d,%d,",((int16_t*)(&x[i]))[0],((int16_t *)(&x[i]))[1]);
-    printf("\nY:");
-    for (i=0;i<300;i++)
-      printf("%d: %d,%d\n",i,((int16_t*)(&y[i]))[0],((int16_t *)(&y[i]))[1]);
-    printf("\n");
 
     for (i=0;i<32;i++) {
       ((int16_t*)x)[i] = (int16_t)((taus()&0xffff))>>5;
@@ -18852,7 +9052,7 @@ int main(int argc, char**argv)
     for (i=0;i<4;i++)
       printf("%d,%d,%d,%d,%d,%d,%d,%d,",((int16_t*)&y[i])[0],((int16_t *)&y[i])[1],((int16_t*)&y[i])[2],((int16_t *)&y[i])[3],((int16_t*)&y[i])[4],((int16_t *)&y[i])[5],((int16_t*)&y[i])[6],((int16_t *)&y[i])[7]);
     printf("\n");
- */
+ 
   memset((void*)&x[0],0,2048*4);
       
   for (i=0; i<2048; i+=4) {
@@ -18918,12 +9118,12 @@ int main(int argc, char**argv)
     stop_meas(&ts);
 
   }
-
+  /*
   printf("\n\n64-point (%f cycles, #trials %d)\n",(double)ts.diff/(double)ts.trials,ts.trials);
   //  LOG_M("x64.m","x64",x,64,1,1);
   LOG_M("y64.m","y64",y,64,1,1);
   LOG_M("x64.m","x64",x,64,1,1);
-
+  */
 /*
   printf("X: ");
   for (i=0;i<16;i++)
@@ -19128,7 +9328,7 @@ int main(int argc, char**argv)
     else
       ((int16_t*)x)[i] = -364;
   }
-  for (i=2*(4096-1200);i<8192;i++) {
+  for (i=2*(8192-2400);i<16384;i++) {
     if ((taus() & 1)==0)
       ((int16_t*)x)[i] = 364;
     else
@@ -19141,10 +9341,192 @@ int main(int argc, char**argv)
     stop_meas(&ts);
   }
 
-  printf("\n\n8192-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
+  printf("\n\n1536-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
+  LOG_M("y8192.m","y8192",y,8192,1,1);
+  LOG_M("x8192.m","x8192",x,8192,1,1);
+
+  memset((void*)x,0,1536*sizeof(int32_t));
+  for (i=2;i<1202;i++) {
+    if ((taus() & 1)==0)
+      ((int16_t*)x)[i] = 364;
+    else
+      ((int16_t*)x)[i] = -364;
+  }
+  for (i=2*(1536-600);i<3072;i++) {
+    if ((taus() & 1)==0)
+      ((int16_t*)x)[i] = 364;
+    else
+      ((int16_t*)x)[i] = -364;
+  }
+  reset_meas(&ts);
+  for (i=0; i<10000; i++) {
+    start_meas(&ts);
+    idft1536((int16_t *)x,(int16_t *)y,1);
+    stop_meas(&ts);
+  }
+
+  printf("\n\n1536-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
+  LOG_M("y1536.m","y1536",y,1536,1,1);
+  LOG_M("x1536.m","x1536",x,1536,1,1);
+
+  printf("\n\n1536-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
   LOG_M("y8192.m","y8192",y,8192,1,1);
   LOG_M("x8192.m","x8192",x,8192,1,1);
 
+  memset((void*)x,0,3072*sizeof(int32_t));
+  for (i=2;i<1202;i++) {
+    if ((taus() & 1)==0)
+      ((int16_t*)x)[i] = 364;
+    else
+      ((int16_t*)x)[i] = -364;
+  }
+  for (i=2*(3072-600);i<3072;i++) {
+    if ((taus() & 1)==0)
+      ((int16_t*)x)[i] = 364;
+    else
+      ((int16_t*)x)[i] = -364;
+  }
+  reset_meas(&ts);
+  for (i=0; i<10000; i++) {
+    start_meas(&ts);
+    idft3072((int16_t *)x,(int16_t *)y,1);
+    stop_meas(&ts);
+  }
+
+  printf("\n\n3072-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
+  LOG_M("y3072.m","y3072",y,3072,1,1);
+  LOG_M("x3072.m","x3072",x,3072,1,1);
+
+  memset((void*)x,0,6144*sizeof(int32_t));
+  for (i=2;i<4802;i++) {
+    if ((taus() & 1)==0)
+      ((int16_t*)x)[i] = 364;
+    else
+      ((int16_t*)x)[i] = -364;
+  }
+  for (i=2*(6144-2400);i<12288;i++) {
+    if ((taus() & 1)==0)
+      ((int16_t*)x)[i] = 364;
+    else
+      ((int16_t*)x)[i] = -364;
+  }
+  reset_meas(&ts);
+  for (i=0; i<10000; i++) {
+    start_meas(&ts);
+    idft6144((int16_t *)x,(int16_t *)y,1);
+    stop_meas(&ts);
+  }
+
+  printf("\n\n6144-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
+  LOG_M("y6144.m","y6144",y,6144,1,1);
+  LOG_M("x6144.m","x6144",x,6144,1,1);
+
+  memset((void*)x,0,12288*sizeof(int32_t));
+  for (i=2;i<9602;i++) {
+    if ((taus() & 1)==0)
+      ((int16_t*)x)[i] = 364;
+    else
+      ((int16_t*)x)[i] = -364;
+  }
+  for (i=2*(12288-4800);i<24576;i++) {
+    if ((taus() & 1)==0)
+      ((int16_t*)x)[i] = 364;
+    else
+      ((int16_t*)x)[i] = -364;
+  }
+  reset_meas(&ts);
+  for (i=0; i<10000; i++) {
+    start_meas(&ts);
+    idft12288((int16_t *)x,(int16_t *)y,1);
+    stop_meas(&ts);
+  }
+
+  printf("\n\n12288-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
+  LOG_M("y12288.m","y12288",y,12288,1,1);
+  LOG_M("x12288.m","x12288",x,12288,1,1);
+
+  memset((void*)x,0,18432*sizeof(int32_t));
+  for (i=2;i<14402;i++) {
+    if ((taus() & 1)==0)
+      ((int16_t*)x)[i] = 364;
+    else
+      ((int16_t*)x)[i] = -364;
+  }
+  for (i=2*(18432-7200);i<36864;i++) {
+    if ((taus() & 1)==0)
+      ((int16_t*)x)[i] = 364;
+    else
+      ((int16_t*)x)[i] = -364;
+  }
+  reset_meas(&ts);
+  for (i=0; i<10000; i++) {
+    start_meas(&ts);
+    idft18432((int16_t *)x,(int16_t *)y,1);
+    stop_meas(&ts);
+  }
+
+  printf("\n\n18432-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
+  LOG_M("y18432.m","y18432",y,18432,1,1);
+  LOG_M("x18432.m","x18432",x,18432,1,1);
+
+  memset((void*)x,0,24576*sizeof(int32_t));
+  for (i=2;i<19202;i++) {
+    if ((taus() & 1)==0)
+      ((int16_t*)x)[i] = 364;
+    else
+      ((int16_t*)x)[i] = -364;
+  }
+  for (i=2*(24576-19200);i<49152;i++) {
+    if ((taus() & 1)==0)
+      ((int16_t*)x)[i] = 364;
+    else
+      ((int16_t*)x)[i] = -364;
+  }
+  reset_meas(&ts);
+  for (i=0; i<10000; i++) {
+    start_meas(&ts);
+    idft24576((int16_t *)x,(int16_t *)y,1);
+    stop_meas(&ts);
+  }
+
+  printf("\n\n24576-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
+  LOG_M("y24576.m","y24576",y,24576,1,1);
+  LOG_M("x24576.m","x24576",x,24576,1,1);
+
+  int dftsizes[33]={24,36,48,60,72,96,108,120,144,180,192,216,240,288,300,324,360,384,432,480,540,576,600,648,720,768,864,900,960,972,1080,1152,1200};
+  void (*dft[33])(int16_t *x,int16_t *y,uint8_t scale) = {dft24,dft36,dft48,dft60,dft72,dft96,dft108,dft120,dft144,dft180,dft192,dft216,dft240,dft288,dft300,dft324,dft360,dft384,dft432,dft480,dft540,dft576,dft600,dft648,dft720,dft768,dft864,dft900,dft960,dft972,dft1080,dft1152,dft1200};
+  for (int n=0;n<33;n++) {
+    // 4xN-point DFT
+    memset((void*)x,0,dftsizes[n]*8*sizeof(int16_t));
+    for (i=0;i<dftsizes[n]*8;i+=8) {
+      if ((taus() & 1)==0)
+	((int16_t*)x)[i]   = 364;
+      else
+	((int16_t*)x)[i]   = -364;
+      if ((taus() & 1)==0)
+	((int16_t*)x)[i+1] = 364;
+      else
+	((int16_t*)x)[i+1] = -364;
+    }
+    
+    reset_meas(&ts);
+    for (i=0; i<10000; i++) {
+      start_meas(&ts);
+      (dft[n])((int16_t *)x,(int16_t *)y,1);
+      stop_meas(&ts);
+    }
+    
+    printf("\n\n4x%d-point(%f cycles)\n",dftsizes[n],(double)ts.diff/(double)ts.trials);
+    char ystr[5],xstr[5],ystr2[5],xstr2[5];
+    sprintf(ystr,"y%d.m",dftsizes[n]);
+    sprintf(xstr,"x%d.m",dftsizes[n]);
+    sprintf(ystr2,"y%d",dftsizes[n]);
+    sprintf(xstr2,"x%d",dftsizes[n]);
+    LOG_M(ystr,ystr2,y,dftsizes[n]*4,1,1);
+    LOG_M(xstr,xstr2,x,dftsizes[n]*4,1,1);
+  }
+
+
   return(0);
 }
 
diff --git a/openair1/PHY/TOOLS/tools_defs.h b/openair1/PHY/TOOLS/tools_defs.h
index e09cfb5ed84ee65a272f9ceb0f1b3bef2cb72215..a5e8d49eb7d95eeeca4120fe5705eeb80fc3df61 100644
--- a/openair1/PHY/TOOLS/tools_defs.h
+++ b/openair1/PHY/TOOLS/tools_defs.h
@@ -174,27 +174,27 @@ This function performs optimized fixed-point radix-2 FFT/IFFT.
 
 void idft1536(int16_t *sigF,int16_t *sig,int scale);
 
-void idft6144(int16_t *sigF,int16_t *sig);
+void idft6144(int16_t *sigF,int16_t *sig,int scale);
 
-void idft12288(int16_t *sigF,int16_t *sig);
+void idft12288(int16_t *sigF,int16_t *sig,int scale);
 
-void idft18432(int16_t *sigF,int16_t *sig);
+void idft18432(int16_t *sigF,int16_t *sig,int scale);
 
-void idft3072(int16_t *sigF,int16_t *sig);
+void idft3072(int16_t *sigF,int16_t *sig,int scale);
 
-void idft24576(int16_t *sigF,int16_t *sig);
+void idft24576(int16_t *sigF,int16_t *sig,int scale);
 
 void dft1536(int16_t *sigF,int16_t *sig,int scale);
 
-void dft6144(int16_t *sigF,int16_t *sig);
+void dft6144(int16_t *sigF,int16_t *sig,int scale);
 
-void dft12288(int16_t *sigF,int16_t *sig);
+void dft12288(int16_t *sigF,int16_t *sig,int scale);
 
-void dft18432(int16_t *sigF,int16_t *sig);
+void dft18432(int16_t *sigF,int16_t *sig,int scale);
 
-void dft3072(int16_t *sigF,int16_t *sig);
+void dft3072(int16_t *sigF,int16_t *sig,int scale);
 
-void dft24576(int16_t *sigF,int16_t *sig);
+void dft24576(int16_t *sigF,int16_t *sig,int scale);
 
 
 /*!\fn int32_t rotate_cpx_vector(int16_t *x,int16_t *alpha,int16_t *y,uint32_t N,uint16_t output_shift)
diff --git a/openair1/PHY/TOOLS/twiddle12288.h b/openair1/PHY/TOOLS/twiddle12288.h
deleted file mode 100644
index 17fa92f4e9b341ccb0dd05cc44e83817ed6a2475..0000000000000000000000000000000000000000
--- a/openair1/PHY/TOOLS/twiddle12288.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(0:4095)/12288));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*(0:2:8190)/12288));
-twa2 = zeros(1,8192);
-twb2 = zeros(1,8192);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-
-
- */
-
-int16_t twa12288[8192] __attribute__((aligned(32))) = {32767,0,32766,-17,32766,-34,32766,-51,32766,-68,32766,-84,32766,-101,32766,-118,32766,-135,32766,-151,32766,-168,32766,-185,32766,-202,32766,-218,32766,-235,32766,-252,32765,-269,32765,-285,32765,-302,32765,-319,32765,-336,32765,-352,32764,-369,32764,-386,32764,-403,32764,-419,32764,-436,32763,-453,32763,-470,32763,-486,32763,-503,32762,-520,32762,-537,32762,-553,32762,-570,32761,-587,32761,-604,32761,-620,32760,-637,32760,-654,32760,-671,32759,-687,32759,-704,32759,-721,32758,-738,32758,-754,32757,-771,32757,-788,32757,-805,32756,-821,32756,-838,32755,-855,32755,-872,32754,-888,32754,-905,32754,-922,32753,-939,32753,-955,32752,-972,32752,-989,32751,-1006,32751,-1022,32750,-1039,32750,-1056,32749,-1073,32748,-1089,32748,-1106,32747,-1123,32747,-1140,32746,-1156,32746,-1173,32745,-1190,32744,-1207,32744,-1223,32743,-1240,32742,-1257,32742,-1274,32741,-1290,32740,-1307,32740,-1324,32739,-1340,32738,-1357,32738,-1374,32737,-1391,32736,-1407,32736,-1424,32735,-1441,32734,-1458,32733,-1474,32733,-1491,32732,-1508,32731,-1525,32730,-1541,32729,-1558,32729,-1575,32728,-1592,32727,-1608,32726,-1625,32725,-1642,32725,-1659,32724,-1675,32723,-1692,32722,-1709,32721,-1725,32720,-1742,32719,-1759,32718,-1776,32717,-1792,32717,-1809,32716,-1826,32715,-1843,32714,-1859,32713,-1876,32712,-1893,32711,-1909,32710,-1926,32709,-1943,32708,-1960,32707,-1976,32706,-1993,32705,-2010,32704,-2027,32703,-2043,32702,-2060,32701,-2077,32700,-2093,32699,-2110,32697,-2127,32696,-2144,32695,-2160,32694,-2177,32693,-2194,32692,-2210,32691,-2227,32690,-2244,32688,-2261,32687,-2277,32686,-2294,32685,-2311,32684,-2327,32683,-2344,32681,-2361,32680,-2378,32679,-2394,32678,-2411,32676,-2428,32675,-2444,32674,-2461,32673,-2478,32671,-2495,32670,-2511,32669,-2528,32668,-2545,32666,-2561,32665,-2578,32664,-2595,32662,-2611,32661,-2628,32660,-2645,32658,-2662,32657,-2678,32656,-2695,32654,-2712,32653,-2728,32651,-2745,32650,-2762,32649,-2778,32647,-2795,32646,-2812,32644,-2829,32643,-2845,32641,-2862,32640,-2879,32638,-2895,32637,-2912,32635,-2929,32634,-2945,32632,-2962,32631,-2979,32629,-2995,32628,-3012,32626,-3029,32625,-3045,32623,-3062,32622,-3079,32620,-3095,32618,-3112,32617,-3129,32615,-3146,32614,-3162,32612,-3179,32610,-3196,32609,-3212,32607,-3229,32605,-3246,32604,-3262,32602,-3279,32600,-3296,32599,-3312,32597,-3329,32595,-3346,32594,-3362,32592,-3379,32590,-3396,32588,-3412,32587,-3429,32585,-3446,32583,-3462,32581,-3479,32580,-3496,32578,-3512,32576,-3529,32574,-3546,32572,-3562,32571,-3579,32569,-3595,32567,-3612,32565,-3629,32563,-3645,32561,-3662,32559,-3679,32558,-3695,32556,-3712,32554,-3729,32552,-3745,32550,-3762,32548,-3779,32546,-3795,32544,-3812,32542,-3829,32540,-3845,32538,-3862,32536,-3878,32534,-3895,32532,-3912,32530,-3928,32528,-3945,32526,-3962,32524,-3978,32522,-3995,32520,-4012,32518,-4028,32516,-4045,32514,-4061,32512,-4078,32510,-4095,32508,-4111,32506,-4128,32503,-4145,32501,-4161,32499,-4178,32497,-4194,32495,-4211,32493,-4228,32491,-4244,32488,-4261,32486,-4277,32484,-4294,32482,-4311,32480,-4327,32477,-4344,32475,-4360,32473,-4377,32471,-4394,32468,-4410,32466,-4427,32464,-4444,32462,-4460,32459,-4477,32457,-4493,32455,-4510,32452,-4526,32450,-4543,32448,-4560,32445,-4576,32443,-4593,32441,-4609,32438,-4626,32436,-4643,32434,-4659,32431,-4676,32429,-4692,32426,-4709,32424,-4726,32422,-4742,32419,-4759,32417,-4775,32414,-4792,32412,-4808,32409,-4825,32407,-4842,32404,-4858,32402,-4875,32399,-4891,32397,-4908,32394,-4924,32392,-4941,32389,-4958,32387,-4974,32384,-4991,32382,-5007,32379,-5024,32377,-5040,32374,-5057,32371,-5073,32369,-5090,32366,-5107,32364,-5123,32361,-5140,32358,-5156,32356,-5173,32353,-5189,32350,-5206,32348,-5222,32345,-5239,32342,-5255,32340,-5272,32337,-5288,32334,-5305,32332,-5322,32329,-5338,32326,-5355,32323,-5371,32321,-5388,32318,-5404,32315,-5421,32312,-5437,32310,-5454,32307,-5470,32304,-5487,32301,-5503,32298,-5520,32295,-5536,32293,-5553,32290,-5569,32287,-5586,32284,-5602,32281,-5619,32278,-5635,32275,-5652,32273,-5668,32270,-5685,32267,-5701,32264,-5718,32261,-5734,32258,-5751,32255,-5767,32252,-5784,32249,-5800,32246,-5817,32243,-5833,32240,-5850,32237,-5866,32234,-5883,32231,-5899,32228,-5916,32225,-5932,32222,-5949,32219,-5965,32216,-5982,32213,-5998,32210,-6015,32207,-6031,32204,-6048,32201,-6064,32197,-6081,32194,-6097,32191,-6113,32188,-6130,32185,-6146,32182,-6163,32179,-6179,32176,-6196,32172,-6212,32169,-6229,32166,-6245,32163,-6262,32160,-6278,32156,-6294,32153,-6311,32150,-6327,32147,-6344,32143,-6360,32140,-6377,32137,-6393,32134,-6409,32130,-6426,32127,-6442,32124,-6459,32120,-6475,32117,-6492,32114,-6508,32110,-6524,32107,-6541,32104,-6557,32100,-6574,32097,-6590,32094,-6607,32090,-6623,32087,-6639,32084,-6656,32080,-6672,32077,-6689,32073,-6705,32070,-6721,32066,-6738,32063,-6754,32059,-6771,32056,-6787,32053,-6803,32049,-6820,32046,-6836,32042,-6852,32039,-6869,32035,-6885,32032,-6902,32028,-6918,32024,-6934,32021,-6951,32017,-6967,32014,-6983,32010,-7000,32007,-7016,32003,-7033,31999,-7049,31996,-7065,31992,-7082,31989,-7098,31985,-7114,31981,-7131,31978,-7147,31974,-7163,31970,-7180,31967,-7196,31963,-7212,31959,-7229,31956,-7245,31952,-7262,31948,-7278,31944,-7294,31941,-7311,31937,-7327,31933,-7343,31929,-7359,31926,-7376,31922,-7392,31918,-7408,31914,-7425,31911,-7441,31907,-7457,31903,-7474,31899,-7490,31895,-7506,31891,-7523,31888,-7539,31884,-7555,31880,-7572,31876,-7588,31872,-7604,31868,-7620,31864,-7637,31860,-7653,31856,-7669,31853,-7686,31849,-7702,31845,-7718,31841,-7734,31837,-7751,31833,-7767,31829,-7783,31825,-7800,31821,-7816,31817,-7832,31813,-7848,31809,-7865,31805,-7881,31801,-7897,31797,-7913,31793,-7930,31789,-7946,31785,-7962,31780,-7978,31776,-7995,31772,-8011,31768,-8027,31764,-8043,31760,-8060,31756,-8076,31752,-8092,31748,-8108,31743,-8125,31739,-8141,31735,-8157,31731,-8173,31727,-8190,31723,-8206,31718,-8222,31714,-8238,31710,-8254,31706,-8271,31701,-8287,31697,-8303,31693,-8319,31689,-8335,31684,-8352,31680,-8368,31676,-8384,31672,-8400,31667,-8416,31663,-8433,31659,-8449,31654,-8465,31650,-8481,31646,-8497,31641,-8514,31637,-8530,31633,-8546,31628,-8562,31624,-8578,31619,-8594,31615,-8611,31611,-8627,31606,-8643,31602,-8659,31597,-8675,31593,-8691,31588,-8708,31584,-8724,31580,-8740,31575,-8756,31571,-8772,31566,-8788,31562,-8804,31557,-8821,31553,-8837,31548,-8853,31544,-8869,31539,-8885,31534,-8901,31530,-8917,31525,-8933,31521,-8950,31516,-8966,31512,-8982,31507,-8998,31502,-9014,31498,-9030,31493,-9046,31489,-9062,31484,-9078,31479,-9095,31475,-9111,31470,-9127,31465,-9143,31461,-9159,31456,-9175,31451,-9191,31446,-9207,31442,-9223,31437,-9239,31432,-9255,31428,-9271,31423,-9288,31418,-9304,31413,-9320,31409,-9336,31404,-9352,31399,-9368,31394,-9384,31389,-9400,31385,-9416,31380,-9432,31375,-9448,31370,-9464,31365,-9480,31360,-9496,31356,-9512,31351,-9528,31346,-9544,31341,-9560,31336,-9576,31331,-9592,31326,-9608,31321,-9624,31316,-9640,31311,-9656,31307,-9672,31302,-9688,31297,-9704,31292,-9720,31287,-9736,31282,-9752,31277,-9768,31272,-9784,31267,-9800,31262,-9816,31257,-9832,31252,-9848,31247,-9864,31242,-9880,31236,-9896,31231,-9912,31226,-9928,31221,-9944,31216,-9960,31211,-9976,31206,-9992,31201,-10008,31196,-10024,31191,-10040,31185,-10056,31180,-10072,31175,-10088,31170,-10104,31165,-10120,31160,-10136,31154,-10152,31149,-10167,31144,-10183,31139,-10199,31134,-10215,31128,-10231,31123,-10247,31118,-10263,31113,-10279,31107,-10295,31102,-10311,31097,-10327,31092,-10343,31086,-10358,31081,-10374,31076,-10390,31070,-10406,31065,-10422,31060,-10438,31054,-10454,31049,-10470,31044,-10485,31038,-10501,31033,-10517,31028,-10533,31022,-10549,31017,-10565,31011,-10581,31006,-10597,31001,-10612,30995,-10628,30990,-10644,30984,-10660,30979,-10676,30973,-10692,30968,-10707,30962,-10723,30957,-10739,30951,-10755,30946,-10771,30940,-10787,30935,-10802,30929,-10818,30924,-10834,30918,-10850,30913,-10866,30907,-10881,30902,-10897,30896,-10913,30890,-10929,30885,-10945,30879,-10960,30874,-10976,30868,-10992,30862,-11008,30857,-11024,30851,-11039,30845,-11055,30840,-11071,30834,-11087,30828,-11102,30823,-11118,30817,-11134,30811,-11150,30806,-11165,30800,-11181,30794,-11197,30788,-11213,30783,-11228,30777,-11244,30771,-11260,30766,-11276,30760,-11291,30754,-11307,30748,-11323,30742,-11339,30737,-11354,30731,-11370,30725,-11386,30719,-11401,30713,-11417,30707,-11433,30702,-11449,30696,-11464,30690,-11480,30684,-11496,30678,-11511,30672,-11527,30666,-11543,30660,-11558,30655,-11574,30649,-11590,30643,-11605,30637,-11621,30631,-11637,30625,-11652,30619,-11668,30613,-11684,30607,-11699,30601,-11715,30595,-11731,30589,-11746,30583,-11762,30577,-11778,30571,-11793,30565,-11809,30559,-11824,30553,-11840,30547,-11856,30541,-11871,30535,-11887,30528,-11903,30522,-11918,30516,-11934,30510,-11949,30504,-11965,30498,-11981,30492,-11996,30486,-12012,30480,-12027,30473,-12043,30467,-12058,30461,-12074,30455,-12090,30449,-12105,30442,-12121,30436,-12136,30430,-12152,30424,-12167,30418,-12183,30411,-12199,30405,-12214,30399,-12230,30393,-12245,30386,-12261,30380,-12276,30374,-12292,30368,-12307,30361,-12323,30355,-12338,30349,-12354,30342,-12369,30336,-12385,30330,-12400,30323,-12416,30317,-12431,30311,-12447,30304,-12462,30298,-12478,30291,-12493,30285,-12509,30279,-12524,30272,-12540,30266,-12555,30259,-12571,30253,-12586,30247,-12602,30240,-12617,30234,-12633,30227,-12648,30221,-12664,30214,-12679,30208,-12695,30201,-12710,30195,-12725,30188,-12741,30182,-12756,30175,-12772,30169,-12787,30162,-12803,30156,-12818,30149,-12833,30142,-12849,30136,-12864,30129,-12880,30123,-12895,30116,-12910,30109,-12926,30103,-12941,30096,-12957,30090,-12972,30083,-12987,30076,-13003,30070,-13018,30063,-13034,30056,-13049,30050,-13064,30043,-13080,30036,-13095,30030,-13110,30023,-13126,30016,-13141,30009,-13156,30003,-13172,29996,-13187,29989,-13202,29983,-13218,29976,-13233,29969,-13248,29962,-13264,29955,-13279,29949,-13294,29942,-13310,29935,-13325,29928,-13340,29921,-13356,29915,-13371,29908,-13386,29901,-13401,29894,-13417,29887,-13432,29880,-13447,29873,-13463,29866,-13478,29860,-13493,29853,-13508,29846,-13524,29839,-13539,29832,-13554,29825,-13569,29818,-13585,29811,-13600,29804,-13615,29797,-13630,29790,-13646,29783,-13661,29776,-13676,29769,-13691,29762,-13707,29755,-13722,29748,-13737,29741,-13752,29734,-13767,29727,-13783,29720,-13798,29713,-13813,29706,-13828,29699,-13843,29692,-13859,29685,-13874,29678,-13889,29670,-13904,29663,-13919,29656,-13934,29649,-13950,29642,-13965,29635,-13980,29628,-13995,29621,-14010,29613,-14025,29606,-14040,29599,-14056,29592,-14071,29585,-14086,29577,-14101,29570,-14116,29563,-14131,29556,-14146,29548,-14161,29541,-14177,29534,-14192,29527,-14207,29519,-14222,29512,-14237,29505,-14252,29498,-14267,29490,-14282,29483,-14297,29476,-14312,29468,-14327,29461,-14343,29454,-14358,29446,-14373,29439,-14388,29432,-14403,29424,-14418,29417,-14433,29410,-14448,29402,-14463,29395,-14478,29387,-14493,29380,-14508,29372,-14523,29365,-14538,29358,-14553,29350,-14568,29343,-14583,29335,-14598,29328,-14613,29320,-14628,29313,-14643,29305,-14658,29298,-14673,29290,-14688,29283,-14703,29275,-14718,29268,-14733,29260,-14748,29253,-14763,29245,-14778,29238,-14793,29230,-14808,29222,-14823,29215,-14838,29207,-14853,29200,-14867,29192,-14882,29184,-14897,29177,-14912,29169,-14927,29162,-14942,29154,-14957,29146,-14972,29139,-14987,29131,-15002,29123,-15017,29116,-15031,29108,-15046,29100,-15061,29092,-15076,29085,-15091,29077,-15106,29069,-15121,29062,-15136,29054,-15150,29046,-15165,29038,-15180,29031,-15195,29023,-15210,29015,-15225,29007,-15239,28999,-15254,28992,-15269,28984,-15284,28976,-15299,28968,-15314,28960,-15328,28953,-15343,28945,-15358,28937,-15373,28929,-15388,28921,-15402,28913,-15417,28905,-15432,28897,-15447,28890,-15462,28882,-15476,28874,-15491,28866,-15506,28858,-15521,28850,-15535,28842,-15550,28834,-15565,28826,-15580,28818,-15594,28810,-15609,28802,-15624,28794,-15639,28786,-15653,28778,-15668,28770,-15683,28762,-15697,28754,-15712,28746,-15727,28738,-15741,28730,-15756,28722,-15771,28714,-15786,28706,-15800,28698,-15815,28690,-15830,28681,-15844,28673,-15859,28665,-15874,28657,-15888,28649,-15903,28641,-15918,28633,-15932,28625,-15947,28616,-15961,28608,-15976,28600,-15991,28592,-16005,28584,-16020,28575,-16035,28567,-16049,28559,-16064,28551,-16078,28543,-16093,28534,-16108,28526,-16122,28518,-16137,28510,-16151,28501,-16166,28493,-16180,28485,-16195,28477,-16210,28468,-16224,28460,-16239,28452,-16253,28443,-16268,28435,-16282,28427,-16297,28418,-16311,28410,-16326,28402,-16340,28393,-16355,28385,-16369,28377,-16384,28368,-16399,28360,-16413,28351,-16428,28343,-16442,28335,-16456,28326,-16471,28318,-16485,28309,-16500,28301,-16514,28292,-16529,28284,-16543,28275,-16558,28267,-16572,28259,-16587,28250,-16601,28242,-16616,28233,-16630,28225,-16644,28216,-16659,28208,-16673,28199,-16688,28190,-16702,28182,-16717,28173,-16731,28165,-16745,28156,-16760,28148,-16774,28139,-16789,28131,-16803,28122,-16817,28113,-16832,28105,-16846,28096,-16860,28087,-16875,28079,-16889,28070,-16904,28062,-16918,28053,-16932,28044,-16947,28036,-16961,28027,-16975,28018,-16990,28009,-17004,28001,-17018,27992,-17033,27983,-17047,27975,-17061,27966,-17075,27957,-17090,27948,-17104,27940,-17118,27931,-17133,27922,-17147,27913,-17161,27905,-17175,27896,-17190,27887,-17204,27878,-17218,27869,-17233,27861,-17247,27852,-17261,27843,-17275,27834,-17289,27825,-17304,27816,-17318,27808,-17332,27799,-17346,27790,-17361,27781,-17375,27772,-17389,27763,-17403,27754,-17417,27745,-17432,27736,-17446,27728,-17460,27719,-17474,27710,-17488,27701,-17502,27692,-17517,27683,-17531,27674,-17545,27665,-17559,27656,-17573,27647,-17587,27638,-17601,27629,-17616,27620,-17630,27611,-17644,27602,-17658,27593,-17672,27584,-17686,27575,-17700,27566,-17714,27557,-17728,27548,-17743,27538,-17757,27529,-17771,27520,-17785,27511,-17799,27502,-17813,27493,-17827,27484,-17841,27475,-17855,27466,-17869,27456,-17883,27447,-17897,27438,-17911,27429,-17925,27420,-17939,27411,-17953,27401,-17967,27392,-17981,27383,-17995,27374,-18009,27365,-18023,27355,-18037,27346,-18051,27337,-18065,27328,-18079,27319,-18093,27309,-18107,27300,-18121,27291,-18135,27281,-18149,27272,-18163,27263,-18177,27254,-18191,27244,-18205,27235,-18219,27226,-18233,27216,-18247,27207,-18261,27198,-18274,27188,-18288,27179,-18302,27170,-18316,27160,-18330,27151,-18344,27141,-18358,27132,-18372,27123,-18386,27113,-18399,27104,-18413,27094,-18427,27085,-18441,27076,-18455,27066,-18469,27057,-18483,27047,-18496,27038,-18510,27028,-18524,27019,-18538,27009,-18552,27000,-18565,26990,-18579,26981,-18593,26971,-18607,26962,-18621,26952,-18634,26943,-18648,26933,-18662,26924,-18676,26914,-18690,26905,-18703,26895,-18717,26885,-18731,26876,-18745,26866,-18758,26857,-18772,26847,-18786,26837,-18799,26828,-18813,26818,-18827,26809,-18841,26799,-18854,26789,-18868,26780,-18882,26770,-18895,26760,-18909,26751,-18923,26741,-18936,26731,-18950,26722,-18964,26712,-18977,26702,-18991,26692,-19005,26683,-19018,26673,-19032,26663,-19046,26654,-19059,26644,-19073,26634,-19087,26624,-19100,26615,-19114,26605,-19127,26595,-19141,26585,-19155,26575,-19168,26566,-19182,26556,-19195,26546,-19209,26536,-19222,26526,-19236,26516,-19250,26507,-19263,26497,-19277,26487,-19290,26477,-19304,26467,-19317,26457,-19331,26447,-19344,26437,-19358,26428,-19371,26418,-19385,26408,-19398,26398,-19412,26388,-19425,26378,-19439,26368,-19452,26358,-19466,26348,-19479,26338,-19493,26328,-19506,26318,-19520,26308,-19533,26298,-19547,26288,-19560,26278,-19574,26268,-19587,26258,-19600,26248,-19614,26238,-19627,26228,-19641,26218,-19654,26208,-19668,26198,-19681,26188,-19694,26178,-19708,26168,-19721,26158,-19734,26148,-19748,26137,-19761,26127,-19775,26117,-19788,26107,-19801,26097,-19815,26087,-19828,26077,-19841,26067,-19855,26056,-19868,26046,-19881,26036,-19895,26026,-19908,26016,-19921,26006,-19934,25995,-19948,25985,-19961,25975,-19974,25965,-19988,25954,-20001,25944,-20014,25934,-20027,25924,-20041,25913,-20054,25903,-20067,25893,-20080,25883,-20094,25872,-20107,25862,-20120,25852,-20133,25842,-20147,25831,-20160,25821,-20173,25811,-20186,25800,-20199,25790,-20213,25780,-20226,25769,-20239,25759,-20252,25749,-20265,25738,-20278,25728,-20292,25717,-20305,25707,-20318,25697,-20331,25686,-20344,25676,-20357,25665,-20370,25655,-20384,25645,-20397,25634,-20410,25624,-20423,25613,-20436,25603,-20449,25592,-20462,25582,-20475,25571,-20488,25561,-20501,25550,-20514,25540,-20528,25529,-20541,25519,-20554,25508,-20567,25498,-20580,25487,-20593,25477,-20606,25466,-20619,25456,-20632,25445,-20645,25435,-20658,25424,-20671,25414,-20684,25403,-20697,25392,-20710,25382,-20723,25371,-20736,25361,-20749,25350,-20762,25339,-20775,25329,-20788,25318,-20801,25307,-20814,25297,-20826,25286,-20839,25276,-20852,25265,-20865,25254,-20878,25243,-20891,25233,-20904,25222,-20917,25211,-20930,25201,-20943,25190,-20956,25179,-20968,25169,-20981,25158,-20994,25147,-21007,25136,-21020,25126,-21033,25115,-21046,25104,-21058,25093,-21071,25083,-21084,25072,-21097,25061,-21110,25050,-21123,25039,-21135,25029,-21148,25018,-21161,25007,-21174,24996,-21187,24985,-21199,24974,-21212,24964,-21225,24953,-21238,24942,-21250,24931,-21263,24920,-21276,24909,-21289,24898,-21301,24887,-21314,24877,-21327,24866,-21340,24855,-21352,24844,-21365,24833,-21378,24822,-21390,24811,-21403,24800,-21416,24789,-21428,24778,-21441,24767,-21454,24756,-21466,24745,-21479,24734,-21492,24723,-21504,24712,-21517,24701,-21530,24690,-21542,24679,-21555,24668,-21567,24657,-21580,24646,-21593,24635,-21605,24624,-21618,24613,-21630,24602,-21643,24591,-21656,24580,-21668,24569,-21681,24558,-21693,24546,-21706,24535,-21718,24524,-21731,24513,-21744,24502,-21756,24491,-21769,24480,-21781,24469,-21794,24457,-21806,24446,-21819,24435,-21831,24424,-21844,24413,-21856,24402,-21869,24390,-21881,24379,-21894,24368,-21906,24357,-21918,24346,-21931,24334,-21943,24323,-21956,24312,-21968,24301,-21981,24289,-21993,24278,-22005,24267,-22018,24256,-22030,24244,-22043,24233,-22055,24222,-22067,24211,-22080,24199,-22092,24188,-22105,24177,-22117,24165,-22129,24154,-22142,24143,-22154,24131,-22166,24120,-22179,24109,-22191,24097,-22203,24086,-22216,24075,-22228,24063,-22240,24052,-22253,24041,-22265,24029,-22277,24018,-22289,24006,-22302,23995,-22314,23984,-22326,23972,-22339,23961,-22351,23949,-22363,23938,-22375,23926,-22388,23915,-22400,23903,-22412,23892,-22424,23881,-22436,23869,-22449,23858,-22461,23846,-22473,23835,-22485,23823,-22497,23812,-22510,23800,-22522,23789,-22534,23777,-22546,23766,-22558,23754,-22570,23742,-22583,23731,-22595,23719,-22607,23708,-22619,23696,-22631,23685,-22643,23673,-22655,23661,-22667,23650,-22679,23638,-22692,23627,-22704,23615,-22716,23603,-22728,23592,-22740,23580,-22752,23569,-22764,23557,-22776,23545,-22788,23534,-22800,23522,-22812,23510,-22824,23499,-22836,23487,-22848,23475,-22860,23464,-22872,23452,-22884,23440,-22896,23428,-22908,23417,-22920,23405,-22932,23393,-22944,23382,-22956,23370,-22968,23358,-22980,23346,-22992,23335,-23004,23323,-23016,23311,-23028,23299,-23040,23287,-23051,23276,-23063,23264,-23075,23252,-23087,23240,-23099,23228,-23111,23217,-23123,23205,-23135,23193,-23147,23181,-23158,23169,-23170,23157,-23182,23146,-23194,23134,-23206,23122,-23218,23110,-23229,23098,-23241,23086,-23253,23074,-23265,23062,-23277,23050,-23288,23039,-23300,23027,-23312,23015,-23324,23003,-23336,22991,-23347,22979,-23359,22967,-23371,22955,-23383,22943,-23394,22931,-23406,22919,-23418,22907,-23429,22895,-23441,22883,-23453,22871,-23465,22859,-23476,22847,-23488,22835,-23500,22823,-23511,22811,-23523,22799,-23535,22787,-23546,22775,-23558,22763,-23570,22751,-23581,22739,-23593,22727,-23604,22715,-23616,22703,-23628,22691,-23639,22678,-23651,22666,-23662,22654,-23674,22642,-23686,22630,-23697,22618,-23709,22606,-23720,22594,-23732,22582,-23743,22569,-23755,22557,-23767,22545,-23778,22533,-23790,22521,-23801,22509,-23813,22496,-23824,22484,-23836,22472,-23847,22460,-23859,22448,-23870,22435,-23882,22423,-23893,22411,-23904,22399,-23916,22387,-23927,22374,-23939,22362,-23950,22350,-23962,22338,-23973,22325,-23985,22313,-23996,22301,-24007,22288,-24019,22276,-24030,22264,-24042,22252,-24053,22239,-24064,22227,-24076,22215,-24087,22202,-24098,22190,-24110,22178,-24121,22165,-24132,22153,-24144,22141,-24155,22128,-24166,22116,-24178,22104,-24189,22091,-24200,22079,-24212,22066,-24223,22054,-24234,22042,-24245,22029,-24257,22017,-24268,22004,-24279,21992,-24290,21980,-24302,21967,-24313,21955,-24324,21942,-24335,21930,-24347,21917,-24358,21905,-24369,21893,-24380,21880,-24391,21868,-24403,21855,-24414,21843,-24425,21830,-24436,21818,-24447,21805,-24458,21793,-24470,21780,-24481,21768,-24492,21755,-24503,21743,-24514,21730,-24525,21717,-24536,21705,-24547,21692,-24559,21680,-24570,21667,-24581,21655,-24592,21642,-24603,21629,-24614,21617,-24625,21604,-24636,21592,-24647,21579,-24658,21566,-24669,21554,-24680,21541,-24691,21529,-24702,21516,-24713,21503,-24724,21491,-24735,21478,-24746,21465,-24757,21453,-24768,21440,-24779,21427,-24790,21415,-24801,21402,-24812,21389,-24823,21377,-24834,21364,-24845,21351,-24856,21339,-24867,21326,-24878,21313,-24888,21300,-24899,21288,-24910,21275,-24921,21262,-24932,21249,-24943,21237,-24954,21224,-24965,21211,-24975,21198,-24986,21186,-24997,21173,-25008,21160,-25019,21147,-25030,21134,-25040,21122,-25051,21109,-25062,21096,-25073,21083,-25084,21070,-25094,21057,-25105,21045,-25116,21032,-25127,21019,-25137,21006,-25148,20993,-25159,20980,-25170,20967,-25180,20955,-25191,20942,-25202,20929,-25212,20916,-25223,20903,-25234,20890,-25244,20877,-25255,20864,-25266,20851,-25277,20838,-25287,20825,-25298,20813,-25308,20800,-25319,20787,-25330,20774,-25340,20761,-25351,20748,-25362,20735,-25372,20722,-25383,20709,-25393,20696,-25404,20683,-25415,20670,-25425,20657,-25436,20644,-25446,20631,-25457,20618,-25467,20605,-25478,20592,-25488,20579,-25499,20566,-25509,20553,-25520,20540,-25530,20527,-25541,20513,-25551,20500,-25562,20487,-25572,20474,-25583,20461,-25593,20448,-25604,20435,-25614,20422,-25625,20409,-25635,20396,-25646,20383,-25656,20369,-25666,20356,-25677,20343,-25687,20330,-25698,20317,-25708,20304,-25718,20291,-25729,20277,-25739,20264,-25750,20251,-25760,20238,-25770,20225,-25781,20212,-25791,20198,-25801,20185,-25812,20172,-25822,20159,-25832,20146,-25843,20132,-25853,20119,-25863,20106,-25873,20093,-25884,20079,-25894,20066,-25904,20053,-25914,20040,-25925,20026,-25935,20013,-25945,20000,-25955,19987,-25966,19973,-25976,19960,-25986,19947,-25996,19933,-26007,19920,-26017,19907,-26027,19894,-26037,19880,-26047,19867,-26057,19854,-26068,19840,-26078,19827,-26088,19814,-26098,19800,-26108,19787,-26118,19774,-26128,19760,-26138,19747,-26149,19733,-26159,19720,-26169,19707,-26179,19693,-26189,19680,-26199,19667,-26209,19653,-26219,19640,-26229,19626,-26239,19613,-26249,19599,-26259,19586,-26269,19573,-26279,19559,-26289,19546,-26299,19532,-26309,19519,-26319,19505,-26329,19492,-26339,19478,-26349,19465,-26359,19451,-26369,19438,-26379,19424,-26389,19411,-26399,19397,-26409,19384,-26419,19370,-26429,19357,-26438,19343,-26448,19330,-26458,19316,-26468,19303,-26478,19289,-26488,19276,-26498,19262,-26508,19249,-26517,19235,-26527,19221,-26537,19208,-26547,19194,-26557,19181,-26567,19167,-26576,19154,-26586,19140,-26596,19126,-26606,19113,-26616,19099,-26625,19086,-26635,19072,-26645,19058,-26655,19045,-26664,19031,-26674,19017,-26684,19004,-26693,18990,-26703,18976,-26713,18963,-26723,18949,-26732,18935,-26742,18922,-26752,18908,-26761,18894,-26771,18881,-26781,18867,-26790,18853,-26800,18840,-26810,18826,-26819,18812,-26829,18798,-26838,18785,-26848,18771,-26858,18757,-26867,18744,-26877,18730,-26886,18716,-26896,18702,-26906,18689,-26915,18675,-26925,18661,-26934,18647,-26944,18633,-26953,18620,-26963,18606,-26972,18592,-26982,18578,-26991,18564,-27001,18551,-27010,18537,-27020,18523,-27029,18509,-27039,18495,-27048,18482,-27058,18468,-27067,18454,-27077,18440,-27086,18426,-27095,18412,-27105,18398,-27114,18385,-27124,18371,-27133,18357,-27142,18343,-27152,18329,-27161,18315,-27171,18301,-27180,18287,-27189,18273,-27199,18260,-27208,18246,-27217,18232,-27227,18218,-27236,18204,-27245,18190,-27255,18176,-27264,18162,-27273,18148,-27282,18134,-27292,18120,-27301,18106,-27310,18092,-27320,18078,-27329,18064,-27338,18050,-27347,18036,-27356,18022,-27366,18008,-27375,17994,-27384,17980,-27393,17966,-27402,17952,-27412,17938,-27421,17924,-27430,17910,-27439,17896,-27448,17882,-27457,17868,-27467,17854,-27476,17840,-27485,17826,-27494,17812,-27503,17798,-27512,17784,-27521,17770,-27530,17756,-27539,17742,-27549,17727,-27558,17713,-27567,17699,-27576,17685,-27585,17671,-27594,17657,-27603,17643,-27612,17629,-27621,17615,-27630,17600,-27639,17586,-27648,17572,-27657,17558,-27666,17544,-27675,17530,-27684,17516,-27693,17501,-27702,17487,-27711,17473,-27720,17459,-27729,17445,-27737,17431,-27746,17416,-27755,17402,-27764,17388,-27773,17374,-27782,17360,-27791,17345,-27800,17331,-27809,17317,-27817,17303,-27826,17288,-27835,17274,-27844,17260,-27853,17246,-27862,17232,-27870,17217,-27879,17203,-27888,17189,-27897,17174,-27906,17160,-27914,17146,-27923,17132,-27932,17117,-27941,17103,-27949,17089,-27958,17074,-27967,17060,-27976,17046,-27984,17032,-27993,17017,-28002,17003,-28010,16989,-28019,16974,-28028,16960,-28037,16946,-28045,16931,-28054,16917,-28063,16903,-28071,16888,-28080,16874,-28088,16859,-28097,16845,-28106,16831,-28114,16816,-28123,16802,-28132,16788,-28140,16773,-28149,16759,-28157,16744,-28166,16730,-28174,16716,-28183,16701,-28191,16687,-28200,16672,-28209,16658,-28217,16643,-28226,16629,-28234,16615,-28243,16600,-28251,16586,-28260,16571,-28268,16557,-28276,16542,-28285,16528,-28293,16513,-28302,16499,-28310,16484,-28319,16470,-28327,16455,-28336,16441,-28344,16427,-28352,16412,-28361,16398,-28369,16383,-28378,16368,-28386,16354,-28394,16339,-28403,16325,-28411,16310,-28419,16296,-28428,16281,-28436,16267,-28444,16252,-28453,16238,-28461,16223,-28469,16209,-28478,16194,-28486,16179,-28494,16165,-28502,16150,-28511,16136,-28519,16121,-28527,16107,-28535,16092,-28544,16077,-28552,16063,-28560,16048,-28568,16034,-28576,16019,-28585,16004,-28593,15990,-28601,15975,-28609,15960,-28617,15946,-28626,15931,-28634,15917,-28642,15902,-28650,15887,-28658,15873,-28666,15858,-28674,15843,-28682,15829,-28691,15814,-28699,15799,-28707,15785,-28715,15770,-28723,15755,-28731,15740,-28739,15726,-28747,15711,-28755,15696,-28763,15682,-28771,15667,-28779,15652,-28787,15638,-28795,15623,-28803,15608,-28811,15593,-28819,15579,-28827,15564,-28835,15549,-28843,15534,-28851,15520,-28859,15505,-28867,15490,-28875,15475,-28883,15461,-28891,15446,-28898,15431,-28906,15416,-28914,15401,-28922,15387,-28930,15372,-28938,15357,-28946,15342,-28954,15327,-28961,15313,-28969,15298,-28977,15283,-28985,15268,-28993,15253,-29000,15238,-29008,15224,-29016,15209,-29024,15194,-29032,15179,-29039,15164,-29047,15149,-29055,15135,-29063,15120,-29070,15105,-29078,15090,-29086,15075,-29093,15060,-29101,15045,-29109,15030,-29117,15016,-29124,15001,-29132,14986,-29140,14971,-29147,14956,-29155,14941,-29163,14926,-29170,14911,-29178,14896,-29185,14881,-29193,14866,-29201,14852,-29208,14837,-29216,14822,-29223,14807,-29231,14792,-29239,14777,-29246,14762,-29254,14747,-29261,14732,-29269,14717,-29276,14702,-29284,14687,-29291,14672,-29299,14657,-29306,14642,-29314,14627,-29321,14612,-29329,14597,-29336,14582,-29344,14567,-29351,14552,-29359,14537,-29366,14522,-29373,14507,-29381,14492,-29388,14477,-29396,14462,-29403,14447,-29411,14432,-29418,14417,-29425,14402,-29433,14387,-29440,14372,-29447,14357,-29455,14342,-29462,14326,-29469,14311,-29477,14296,-29484,14281,-29491,14266,-29499,14251,-29506,14236,-29513,14221,-29520,14206,-29528,14191,-29535,14176,-29542,14160,-29549,14145,-29557,14130,-29564,14115,-29571,14100,-29578,14085,-29586,14070,-29593,14055,-29600,14039,-29607,14024,-29614,14009,-29622,13994,-29629,13979,-29636,13964,-29643,13949,-29650,13933,-29657,13918,-29664,13903,-29671,13888,-29679,13873,-29686,13858,-29693,13842,-29700,13827,-29707,13812,-29714,13797,-29721,13782,-29728,13766,-29735,13751,-29742,13736,-29749,13721,-29756,13706,-29763,13690,-29770,13675,-29777,13660,-29784,13645,-29791,13629,-29798,13614,-29805,13599,-29812,13584,-29819,13568,-29826,13553,-29833,13538,-29840,13523,-29847,13507,-29854,13492,-29861,13477,-29867,13462,-29874,13446,-29881,13431,-29888,13416,-29895,13400,-29902,13385,-29909,13370,-29916,13355,-29922,13339,-29929,13324,-29936,13309,-29943,13293,-29950,13278,-29956,13263,-29963,13247,-29970,13232,-29977,13217,-29984,13201,-29990,13186,-29997,13171,-30004,13155,-30010,13140,-30017,13125,-30024,13109,-30031,13094,-30037,13079,-30044,13063,-30051,13048,-30057,13033,-30064,13017,-30071,13002,-30077,12986,-30084,12971,-30091,12956,-30097,12940,-30104,12925,-30110,12909,-30117,12894,-30124,12879,-30130,12863,-30137,12848,-30143,12832,-30150,12817,-30157,12802,-30163,12786,-30170,12771,-30176,12755,-30183,12740,-30189,12724,-30196,12709,-30202,12694,-30209,12678,-30215,12663,-30222,12647,-30228,12632,-30235,12616,-30241,12601,-30248,12585,-30254,12570,-30260,12554,-30267,12539,-30273,12523,-30280,12508,-30286,12492,-30292,12477,-30299,12461,-30305,12446,-30312,12430,-30318,12415,-30324,12399,-30331,12384,-30337,12368,-30343,12353,-30350,12337,-30356,12322,-30362,12306,-30369,12291,-30375,12275,-30381,12260,-30387,12244,-30394,12229,-30400,12213,-30406,12198,-30412,12182,-30419,12166,-30425,12151,-30431,12135,-30437,12120,-30443,12104,-30450,12089,-30456,12073,-30462,12057,-30468,12042,-30474,12026,-30481,12011,-30487,11995,-30493,11980,-30499,11964,-30505,11948,-30511,11933,-30517,11917,-30523,11902,-30529,11886,-30536,11870,-30542,11855,-30548,11839,-30554,11823,-30560,11808,-30566,11792,-30572,11777,-30578,11761,-30584,11745,-30590,11730,-30596,11714,-30602,11698,-30608,11683,-30614,11667,-30620,11651,-30626,11636,-30632,11620,-30638,11604,-30644,11589,-30650,11573,-30656,11557,-30661,11542,-30667,11526,-30673,11510,-30679,11495,-30685,11479,-30691,11463,-30697,11448,-30703,11432,-30708,11416,-30714,11400,-30720,11385,-30726,11369,-30732,11353,-30738,11338,-30743,11322,-30749,11306,-30755,11290,-30761,11275,-30767,11259,-30772,11243,-30778,11227,-30784,11212,-30789,11196,-30795,11180,-30801,11164,-30807,11149,-30812,11133,-30818,11117,-30824,11101,-30829,11086,-30835,11070,-30841,11054,-30846,11038,-30852,11023,-30858,11007,-30863,10991,-30869,10975,-30875,10959,-30880,10944,-30886,10928,-30891,10912,-30897,10896,-30903,10880,-30908,10865,-30914,10849,-30919,10833,-30925,10817,-30930,10801,-30936,10786,-30941,10770,-30947,10754,-30952,10738,-30958,10722,-30963,10706,-30969,10691,-30974,10675,-30980,10659,-30985,10643,-30991,10627,-30996,10611,-31002,10596,-31007,10580,-31012,10564,-31018,10548,-31023,10532,-31029,10516,-31034,10500,-31039,10484,-31045,10469,-31050,10453,-31055,10437,-31061,10421,-31066,10405,-31071,10389,-31077,10373,-31082,10357,-31087,10342,-31093,10326,-31098,10310,-31103,10294,-31108,10278,-31114,10262,-31119,10246,-31124,10230,-31129,10214,-31135,10198,-31140,10182,-31145,10166,-31150,10151,-31155,10135,-31161,10119,-31166,10103,-31171,10087,-31176,10071,-31181,10055,-31186,10039,-31192,10023,-31197,10007,-31202,9991,-31207,9975,-31212,9959,-31217,9943,-31222,9927,-31227,9911,-31232,9895,-31237,9879,-31243,9863,-31248,9847,-31253,9831,-31258,9815,-31263,9799,-31268,9783,-31273,9767,-31278,9751,-31283,9735,-31288,9719,-31293,9703,-31298,9687,-31303,9671,-31308,9655,-31312,9639,-31317,9623,-31322,9607,-31327,9591,-31332,9575,-31337,9559,-31342,9543,-31347,9527,-31352,9511,-31357,9495,-31361,9479,-31366,9463,-31371,9447,-31376,9431,-31381,9415,-31386,9399,-31390,9383,-31395,9367,-31400,9351,-31405,9335,-31410,9319,-31414,9303,-31419,9287,-31424,9270,-31429,9254,-31433,9238,-31438,9222,-31443,9206,-31447,9190,-31452,9174,-31457,9158,-31462,9142,-31466,9126,-31471,9110,-31476,9094,-31480,9077,-31485,9061,-31490,9045,-31494,9029,-31499,9013,-31503,8997,-31508,8981,-31513,8965,-31517,8949,-31522,8932,-31526,8916,-31531,8900,-31535,8884,-31540,8868,-31545,8852,-31549,8836,-31554,8820,-31558,8803,-31563,8787,-31567,8771,-31572,8755,-31576,8739,-31581,8723,-31585,8707,-31589,8690,-31594,8674,-31598,8658,-31603,8642,-31607,8626,-31612,8610,-31616,8593,-31620,8577,-31625,8561,-31629,8545,-31634,8529,-31638,8513,-31642,8496,-31647,8480,-31651,8464,-31655,8448,-31660,8432,-31664,8415,-31668,8399,-31673,8383,-31677,8367,-31681,8351,-31685,8334,-31690,8318,-31694,8302,-31698,8286,-31702,8270,-31707,8253,-31711,8237,-31715,8221,-31719,8205,-31724,8189,-31728,8172,-31732,8156,-31736,8140,-31740,8124,-31744,8107,-31749,8091,-31753,8075,-31757,8059,-31761,8042,-31765,8026,-31769,8010,-31773,7994,-31777,7977,-31781,7961,-31786,7945,-31790,7929,-31794,7912,-31798,7896,-31802,7880,-31806,7864,-31810,7847,-31814,7831,-31818,7815,-31822,7799,-31826,7782,-31830,7766,-31834,7750,-31838,7733,-31842,7717,-31846,7701,-31850,7685,-31854,7668,-31857,7652,-31861,7636,-31865,7619,-31869,7603,-31873,7587,-31877,7571,-31881,7554,-31885,7538,-31889,7522,-31892,7505,-31896,7489,-31900,7473,-31904,7456,-31908,7440,-31912,7424,-31915,7407,-31919,7391,-31923,7375,-31927,7358,-31930,7342,-31934,7326,-31938,7310,-31942,7293,-31945,7277,-31949,7261,-31953,7244,-31957,7228,-31960,7211,-31964,7195,-31968,7179,-31971,7162,-31975,7146,-31979,7130,-31982,7113,-31986,7097,-31990,7081,-31993,7064,-31997,7048,-32000,7032,-32004,7015,-32008,6999,-32011,6982,-32015,6966,-32018,6950,-32022,6933,-32025,6917,-32029,6901,-32033,6884,-32036,6868,-32040,6851,-32043,6835,-32047,6819,-32050,6802,-32054,6786,-32057,6770,-32060,6753,-32064,6737,-32067,6720,-32071,6704,-32074,6688,-32078,6671,-32081,6655,-32085,6638,-32088,6622,-32091,6606,-32095,6589,-32098,6573,-32101,6556,-32105,6540,-32108,6523,-32111,6507,-32115,6491,-32118,6474,-32121,6458,-32125,6441,-32128,6425,-32131,6408,-32135,6392,-32138,6376,-32141,6359,-32144,6343,-32148,6326,-32151,6310,-32154,6293,-32157,6277,-32161,6261,-32164,6244,-32167,6228,-32170,6211,-32173,6195,-32177,6178,-32180,6162,-32183,6145,-32186,6129,-32189,6112,-32192,6096,-32195,6080,-32198,6063,-32202,6047,-32205,6030,-32208,6014,-32211,5997,-32214,5981,-32217,5964,-32220,5948,-32223,5931,-32226,5915,-32229,5898,-32232,5882,-32235,5865,-32238,5849,-32241,5832,-32244,5816,-32247,5799,-32250,5783,-32253,5766,-32256,5750,-32259,5733,-32262,5717,-32265,5700,-32268,5684,-32271,5667,-32274,5651,-32276,5634,-32279,5618,-32282,5601,-32285,5585,-32288,5568,-32291,5552,-32294,5535,-32296,5519,-32299,5502,-32302,5486,-32305,5469,-32308,5453,-32311,5436,-32313,5420,-32316,5403,-32319,5387,-32322,5370,-32324,5354,-32327,5337,-32330,5321,-32333,5304,-32335,5287,-32338,5271,-32341,5254,-32343,5238,-32346,5221,-32349,5205,-32351,5188,-32354,5172,-32357,5155,-32359,5139,-32362,5122,-32365,5106,-32367,5089,-32370,5072,-32372,5056,-32375,5039,-32378,5023,-32380,5006,-32383,4990,-32385,4973,-32388,4957,-32390,4940,-32393,4923,-32395,4907,-32398,4890,-32400,4874,-32403,4857,-32405,4841,-32408,4824,-32410,4807,-32413,4791,-32415,4774,-32418,4758,-32420,4741,-32423,4725,-32425,4708,-32427,4691,-32430,4675,-32432,4658,-32435,4642,-32437,4625,-32439,4608,-32442,4592,-32444,4575,-32446,4559,-32449,4542,-32451,4525,-32453,4509,-32456,4492,-32458,4476,-32460,4459,-32463,4443,-32465,4426,-32467,4409,-32469,4393,-32472,4376,-32474,4359,-32476,4343,-32478,4326,-32481,4310,-32483,4293,-32485,4276,-32487,4260,-32489,4243,-32492,4227,-32494,4210,-32496,4193,-32498,4177,-32500,4160,-32502,4144,-32504,4127,-32507,4110,-32509,4094,-32511,4077,-32513,4060,-32515,4044,-32517,4027,-32519,4011,-32521,3994,-32523,3977,-32525,3961,-32527,3944,-32529,3927,-32531,3911,-32533,3894,-32535,3877,-32537,3861,-32539,3844,-32541,3828,-32543,3811,-32545,3794,-32547,3778,-32549,3761,-32551,3744,-32553,3728,-32555,3711,-32557,3694,-32559,3678,-32560,3661,-32562,3644,-32564,3628,-32566,3611,-32568,3594,-32570,3578,-32572,3561,-32573,3545,-32575,3528,-32577,3511,-32579,3495,-32581,3478,-32582,3461,-32584,3445,-32586,3428,-32588,3411,-32589,3395,-32591,3378,-32593,3361,-32595,3345,-32596,3328,-32598,3311,-32600,3295,-32601,3278,-32603,3261,-32605,3245,-32606,3228,-32608,3211,-32610,3195,-32611,3178,-32613,3161,-32615,3145,-32616,3128,-32618,3111,-32619,3094,-32621,3078,-32623,3061,-32624,3044,-32626,3028,-32627,3011,-32629,2994,-32630,2978,-32632,2961,-32633,2944,-32635,2928,-32636,2911,-32638,2894,-32639,2878,-32641,2861,-32642,2844,-32644,2828,-32645,2811,-32647,2794,-32648,2777,-32650,2761,-32651,2744,-32652,2727,-32654,2711,-32655,2694,-32657,2677,-32658,2661,-32659,2644,-32661,2627,-32662,2610,-32663,2594,-32665,2577,-32666,2560,-32667,2544,-32669,2527,-32670,2510,-32671,2494,-32672,2477,-32674,2460,-32675,2443,-32676,2427,-32677,2410,-32679,2393,-32680,2377,-32681,2360,-32682,2343,-32684,2326,-32685,2310,-32686,2293,-32687,2276,-32688,2260,-32689,2243,-32691,2226,-32692,2209,-32693,2193,-32694,2176,-32695,2159,-32696,2143,-32697,2126,-32698,2109,-32700,2092,-32701,2076,-32702,2059,-32703,2042,-32704,2026,-32705,2009,-32706,1992,-32707,1975,-32708,1959,-32709,1942,-32710,1925,-32711,1908,-32712,1892,-32713,1875,-32714,1858,-32715,1842,-32716,1825,-32717,1808,-32718,1791,-32718,1775,-32719,1758,-32720,1741,-32721,1724,-32722,1708,-32723,1691,-32724,1674,-32725,1658,-32726,1641,-32726,1624,-32727,1607,-32728,1591,-32729,1574,-32730,1557,-32730,1540,-32731,1524,-32732,1507,-32733,1490,-32734,1473,-32734,1457,-32735,1440,-32736,1423,-32737,1406,-32737,1390,-32738,1373,-32739,1356,-32739,1339,-32740,1323,-32741,1306,-32741,1289,-32742,1273,-32743,1256,-32743,1239,-32744,1222,-32745,1206,-32745,1189,-32746,1172,-32747,1155,-32747,1139,-32748,1122,-32748,1105,-32749,1088,-32749,1072,-32750,1055,-32751,1038,-32751,1021,-32752,1005,-32752,988,-32753,971,-32753,954,-32754,938,-32754,921,-32755,904,-32755,887,-32755,871,-32756,854,-32756,837,-32757,820,-32757,804,-32758,787,-32758,770,-32758,753,-32759,737,-32759,720,-32760,703,-32760,686,-32760,670,-32761,653,-32761,636,-32761,619,-32762,603,-32762,586,-32762,569,-32763,552,-32763,536,-32763,519,-32763,502,-32764,485,-32764,469,-32764,452,-32764,435,-32765,418,-32765,402,-32765,385,-32765,368,-32765,351,-32766,335,-32766,318,-32766,301,-32766,284,-32766,268,-32766,251,-32767,234,-32767,217,-32767,201,-32767,184,-32767,167,-32767,150,-32767,134,-32767,117,-32767,100,-32767,83,-32767,67,-32767,50,-32767,33,-32767,16,-32767,0,-32767,-17,-32767,-34,-32767,-51,-32767,-68,-32767,-84,-32767,-101,-32767,-118,-32767,-135,-32767,-151,-32767,-168,-32767,-185,-32767,-202,-32767,-218,-32767,-235,-32767,-252,-32767,-269,-32766,-285,-32766,-302,-32766,-319,-32766,-336,-32766,-352,-32766,-369,-32765,-386,-32765,-403,-32765,-419,-32765,-436,-32765,-453,-32764,-470,-32764,-486,-32764,-503,-32764,-520,-32763,-537,-32763,-553,-32763,-570,-32763,-587,-32762,-604,-32762,-620,-32762,-637,-32761,-654,-32761,-671,-32761,-687,-32760,-704,-32760,-721,-32760,-738,-32759,-754,-32759,-771,-32758,-788,-32758,-805,-32758,-821,-32757,-838,-32757,-855,-32756,-872,-32756,-888,-32755,-905,-32755,-922,-32755,-939,-32754,-955,-32754,-972,-32753,-989,-32753,-1006,-32752,-1022,-32752,-1039,-32751,-1056,-32751,-1073,-32750,-1089,-32749,-1106,-32749,-1123,-32748,-1140,-32748,-1156,-32747,-1173,-32747,-1190,-32746,-1207,-32745,-1223,-32745,-1240,-32744,-1257,-32743,-1274,-32743,-1290,-32742,-1307,-32741,-1324,-32741,-1340,-32740,-1357,-32739,-1374,-32739,-1391,-32738,-1407,-32737,-1424,-32737,-1441,-32736,-1458,-32735,-1474,-32734,-1491,-32734,-1508,-32733,-1525,-32732,-1541,-32731,-1558,-32730,-1575,-32730,-1592,-32729,-1608,-32728,-1625,-32727,-1642,-32726,-1659,-32726,-1675,-32725,-1692,-32724,-1709,-32723,-1725,-32722,-1742,-32721,-1759,-32720,-1776,-32719,-1792,-32718,-1809,-32718,-1826,-32717,-1843,-32716,-1859,-32715,-1876,-32714,-1893,-32713,-1909,-32712,-1926,-32711,-1943,-32710,-1960,-32709,-1976,-32708,-1993,-32707,-2010,-32706,-2027,-32705,-2043,-32704,-2060,-32703,-2077,-32702,-2093,-32701,-2110,-32700,-2127,-32698,-2144,-32697,-2160,-32696,-2177,-32695,-2194,-32694,-2210,-32693,-2227,-32692,-2244,-32691,-2261,-32689,-2277,-32688,-2294,-32687,-2311,-32686,-2327,-32685,-2344,-32684,-2361,-32682,-2378,-32681,-2394,-32680,-2411,-32679,-2428,-32677,-2444,-32676,-2461,-32675,-2478,-32674,-2495,-32672,-2511,-32671,-2528,-32670,-2545,-32669,-2561,-32667,-2578,-32666,-2595,-32665,-2611,-32663,-2628,-32662,-2645,-32661,-2662,-32659,-2678,-32658,-2695,-32657,-2712,-32655,-2728,-32654,-2745,-32652,-2762,-32651,-2778,-32650,-2795,-32648,-2812,-32647,-2829,-32645,-2845,-32644,-2862,-32642,-2879,-32641,-2895,-32639,-2912,-32638,-2929,-32636,-2945,-32635,-2962,-32633,-2979,-32632,-2995,-32630,-3012,-32629,-3029,-32627,-3045,-32626,-3062,-32624,-3079,-32623,-3095,-32621,-3112,-32619,-3129,-32618,-3146,-32616,-3162,-32615,-3179,-32613,-3196,-32611,-3212,-32610,-3229,-32608,-3246,-32606,-3262,-32605,-3279,-32603,-3296,-32601,-3312,-32600,-3329,-32598,-3346,-32596,-3362,-32595,-3379,-32593,-3396,-32591,-3412,-32589,-3429,-32588,-3446,-32586,-3462,-32584,-3479,-32582,-3496,-32581,-3512,-32579,-3529,-32577,-3546,-32575,-3562,-32573,-3579,-32572,-3595,-32570,-3612,-32568,-3629,-32566,-3645,-32564,-3662,-32562,-3679,-32560,-3695,-32559,-3712,-32557,-3729,-32555,-3745,-32553,-3762,-32551,-3779,-32549,-3795,-32547,-3812,-32545,-3829,-32543,-3845,-32541,-3862,-32539,-3878,-32537,-3895,-32535,-3912,-32533,-3928,-32531,-3945,-32529,-3962,-32527,-3978,-32525,-3995,-32523,-4012,-32521,-4028,-32519,-4045,-32517,-4061,-32515,-4078,-32513,-4095,-32511,-4111,-32509,-4128,-32507,-4145,-32504,-4161,-32502,-4178,-32500,-4194,-32498,-4211,-32496,-4228,-32494,-4244,-32492,-4261,-32489,-4277,-32487,-4294,-32485,-4311,-32483,-4327,-32481,-4344,-32478,-4360,-32476,-4377,-32474,-4394,-32472,-4410,-32469,-4427,-32467,-4444,-32465,-4460,-32463,-4477,-32460,-4493,-32458,-4510,-32456,-4526,-32453,-4543,-32451,-4560,-32449,-4576,-32446,-4593,-32444,-4609,-32442,-4626,-32439,-4643,-32437,-4659,-32435,-4676,-32432,-4692,-32430,-4709,-32427,-4726,-32425,-4742,-32423,-4759,-32420,-4775,-32418,-4792,-32415,-4808,-32413,-4825,-32410,-4842,-32408,-4858,-32405,-4875,-32403,-4891,-32400,-4908,-32398,-4924,-32395,-4941,-32393,-4958,-32390,-4974,-32388,-4991,-32385,-5007,-32383,-5024,-32380,-5040,-32378,-5057,-32375,-5073,-32372,-5090,-32370,-5107,-32367,-5123,-32365,-5140,-32362,-5156,-32359,-5173,-32357,-5189,-32354,-5206,-32351,-5222,-32349,-5239,-32346,-5255,-32343,-5272,-32341,-5288,-32338,-5305,-32335,-5322,-32333,-5338,-32330,-5355,-32327,-5371,-32324,-5388,-32322,-5404,-32319,-5421,-32316,-5437,-32313,-5454,-32311,-5470,-32308,-5487,-32305,-5503,-32302,-5520,-32299,-5536,-32296,-5553,-32294,-5569,-32291,-5586,-32288,-5602,-32285,-5619,-32282,-5635,-32279,-5652,-32276,-5668,-32274,-5685,-32271,-5701,-32268,-5718,-32265,-5734,-32262,-5751,-32259,-5767,-32256,-5784,-32253,-5800,-32250,-5817,-32247,-5833,-32244,-5850,-32241,-5866,-32238,-5883,-32235,-5899,-32232,-5916,-32229,-5932,-32226,-5949,-32223,-5965,-32220,-5982,-32217,-5998,-32214,-6015,-32211,-6031,-32208,-6048,-32205,-6064,-32202,-6081,-32198,-6097,-32195,-6113,-32192,-6130,-32189,-6146,-32186,-6163,-32183,-6179,-32180,-6196,-32177,-6212,-32173,-6229,-32170,-6245,-32167,-6262,-32164,-6278,-32161,-6294,-32157,-6311,-32154,-6327,-32151,-6344,-32148,-6360,-32144,-6377,-32141,-6393,-32138,-6409,-32135,-6426,-32131,-6442,-32128,-6459,-32125,-6475,-32121,-6492,-32118,-6508,-32115,-6524,-32111,-6541,-32108,-6557,-32105,-6574,-32101,-6590,-32098,-6607,-32095,-6623,-32091,-6639,-32088,-6656,-32085,-6672,-32081,-6689,-32078,-6705,-32074,-6721,-32071,-6738,-32067,-6754,-32064,-6771,-32060,-6787,-32057,-6803,-32054,-6820,-32050,-6836,-32047,-6852,-32043,-6869,-32040,-6885,-32036,-6902,-32033,-6918,-32029,-6934,-32025,-6951,-32022,-6967,-32018,-6983,-32015,-7000,-32011,-7016,-32008,-7033,-32004,-7049,-32000,-7065,-31997,-7082,-31993,-7098,-31990,-7114,-31986,-7131,-31982,-7147,-31979,-7163,-31975,-7180,-31971,-7196,-31968,-7212,-31964,-7229,-31960,-7245,-31957,-7262,-31953,-7278,-31949,-7294,-31945,-7311,-31942,-7327,-31938,-7343,-31934,-7359,-31930,-7376,-31927,-7392,-31923,-7408,-31919,-7425,-31915,-7441,-31912,-7457,-31908,-7474,-31904,-7490,-31900,-7506,-31896,-7523,-31892,-7539,-31889,-7555,-31885,-7572,-31881,-7588,-31877,-7604,-31873,-7620,-31869,-7637,-31865,-7653,-31861,-7669,-31857,-7686,-31854,-7702,-31850,-7718,-31846,-7734,-31842,-7751,-31838,-7767,-31834,-7783,-31830,-7800,-31826,-7816,-31822,-7832,-31818,-7848,-31814,-7865,-31810,-7881,-31806,-7897,-31802,-7913,-31798,-7930,-31794,-7946,-31790,-7962,-31786,-7978,-31781,-7995,-31777,-8011,-31773,-8027,-31769,-8043,-31765,-8060,-31761,-8076,-31757,-8092,-31753,-8108,-31749,-8125,-31744,-8141,-31740,-8157,-31736,-8173,-31732,-8190,-31728,-8206,-31724,-8222,-31719,-8238,-31715,-8254,-31711,-8271,-31707,-8287,-31702,-8303,-31698,-8319,-31694,-8335,-31690,-8352,-31685,-8368,-31681,-8384,-31677,-8400,-31673,-8416,-31668,-8433,-31664,-8449,-31660,-8465,-31655,-8481,-31651,-8497,-31647,-8514,-31642,-8530,-31638,-8546,-31634,-8562,-31629,-8578,-31625,-8594,-31620,-8611,-31616,-8627,-31612,-8643,-31607,-8659,-31603,-8675,-31598,-8691,-31594,-8708,-31589,-8724,-31585,-8740,-31581,-8756,-31576,-8772,-31572,-8788,-31567,-8804,-31563,-8821,-31558,-8837,-31554,-8853,-31549,-8869,-31545,-8885,-31540,-8901,-31535,-8917,-31531,-8933,-31526,-8950,-31522,-8966,-31517,-8982,-31513,-8998,-31508,-9014,-31503,-9030,-31499,-9046,-31494,-9062,-31490,-9078,-31485,-9095,-31480,-9111,-31476,-9127,-31471,-9143,-31466,-9159,-31462,-9175,-31457,-9191,-31452,-9207,-31447,-9223,-31443,-9239,-31438,-9255,-31433,-9271,-31429,-9288,-31424,-9304,-31419,-9320,-31414,-9336,-31410,-9352,-31405,-9368,-31400,-9384,-31395,-9400,-31390,-9416,-31386,-9432,-31381,-9448,-31376,-9464,-31371,-9480,-31366,-9496,-31361,-9512,-31357,-9528,-31352,-9544,-31347,-9560,-31342,-9576,-31337,-9592,-31332,-9608,-31327,-9624,-31322,-9640,-31317,-9656,-31312,-9672,-31308,-9688,-31303,-9704,-31298,-9720,-31293,-9736,-31288,-9752,-31283,-9768,-31278,-9784,-31273,-9800,-31268,-9816,-31263,-9832,-31258,-9848,-31253,-9864,-31248,-9880,-31243,-9896,-31237,-9912,-31232,-9928,-31227,-9944,-31222,-9960,-31217,-9976,-31212,-9992,-31207,-10008,-31202,-10024,-31197,-10040,-31192,-10056,-31186,-10072,-31181,-10088,-31176,-10104,-31171,-10120,-31166,-10136,-31161,-10152,-31155,-10167,-31150,-10183,-31145,-10199,-31140,-10215,-31135,-10231,-31129,-10247,-31124,-10263,-31119,-10279,-31114,-10295,-31108,-10311,-31103,-10327,-31098,-10343,-31093,-10358,-31087,-10374,-31082,-10390,-31077,-10406,-31071,-10422,-31066,-10438,-31061,-10454,-31055,-10470,-31050,-10485,-31045,-10501,-31039,-10517,-31034,-10533,-31029,-10549,-31023,-10565,-31018,-10581,-31012,-10597,-31007,-10612,-31002,-10628,-30996,-10644,-30991,-10660,-30985,-10676,-30980,-10692,-30974,-10707,-30969,-10723,-30963,-10739,-30958,-10755,-30952,-10771,-30947,-10787,-30941,-10802,-30936,-10818,-30930,-10834,-30925,-10850,-30919,-10866,-30914,-10881,-30908,-10897,-30903,-10913,-30897,-10929,-30891,-10945,-30886,-10960,-30880,-10976,-30875,-10992,-30869,-11008,-30863,-11024,-30858,-11039,-30852,-11055,-30846,-11071,-30841,-11087,-30835,-11102,-30829,-11118,-30824,-11134,-30818,-11150,-30812,-11165,-30807,-11181,-30801,-11197,-30795,-11213,-30789,-11228,-30784,-11244,-30778,-11260,-30772,-11276,-30767,-11291,-30761,-11307,-30755,-11323,-30749,-11339,-30743,-11354,-30738,-11370,-30732,-11386,-30726,-11401,-30720,-11417,-30714,-11433,-30708,-11449,-30703,-11464,-30697,-11480,-30691,-11496,-30685,-11511,-30679,-11527,-30673,-11543,-30667,-11558,-30661,-11574,-30656,-11590,-30650,-11605,-30644,-11621,-30638,-11637,-30632,-11652,-30626,-11668,-30620,-11684,-30614,-11699,-30608,-11715,-30602,-11731,-30596,-11746,-30590,-11762,-30584,-11778,-30578,-11793,-30572,-11809,-30566,-11824,-30560,-11840,-30554,-11856,-30548,-11871,-30542,-11887,-30536,-11903,-30529,-11918,-30523,-11934,-30517,-11949,-30511,-11965,-30505,-11981,-30499,-11996,-30493,-12012,-30487,-12027,-30481,-12043,-30474,-12058,-30468,-12074,-30462,-12090,-30456,-12105,-30450,-12121,-30443,-12136,-30437,-12152,-30431,-12167,-30425,-12183,-30419,-12199,-30412,-12214,-30406,-12230,-30400,-12245,-30394,-12261,-30387,-12276,-30381,-12292,-30375,-12307,-30369,-12323,-30362,-12338,-30356,-12354,-30350,-12369,-30343,-12385,-30337,-12400,-30331,-12416,-30324,-12431,-30318,-12447,-30312,-12462,-30305,-12478,-30299,-12493,-30292,-12509,-30286,-12524,-30280,-12540,-30273,-12555,-30267,-12571,-30260,-12586,-30254,-12602,-30248,-12617,-30241,-12633,-30235,-12648,-30228,-12664,-30222,-12679,-30215,-12695,-30209,-12710,-30202,-12725,-30196,-12741,-30189,-12756,-30183,-12772,-30176,-12787,-30170,-12803,-30163,-12818,-30157,-12833,-30150,-12849,-30143,-12864,-30137,-12880,-30130,-12895,-30124,-12910,-30117,-12926,-30110,-12941,-30104,-12957,-30097,-12972,-30091,-12987,-30084,-13003,-30077,-13018,-30071,-13034,-30064,-13049,-30057,-13064,-30051,-13080,-30044,-13095,-30037,-13110,-30031,-13126,-30024,-13141,-30017,-13156,-30010,-13172,-30004,-13187,-29997,-13202,-29990,-13218,-29984,-13233,-29977,-13248,-29970,-13264,-29963,-13279,-29956,-13294,-29950,-13310,-29943,-13325,-29936,-13340,-29929,-13356,-29922,-13371,-29916,-13386,-29909,-13401,-29902,-13417,-29895,-13432,-29888,-13447,-29881,-13463,-29874,-13478,-29867,-13493,-29861,-13508,-29854,-13524,-29847,-13539,-29840,-13554,-29833,-13569,-29826,-13585,-29819,-13600,-29812,-13615,-29805,-13630,-29798,-13646,-29791,-13661,-29784,-13676,-29777,-13691,-29770,-13707,-29763,-13722,-29756,-13737,-29749,-13752,-29742,-13767,-29735,-13783,-29728,-13798,-29721,-13813,-29714,-13828,-29707,-13843,-29700,-13859,-29693,-13874,-29686,-13889,-29679,-13904,-29671,-13919,-29664,-13934,-29657,-13950,-29650,-13965,-29643,-13980,-29636,-13995,-29629,-14010,-29622,-14025,-29614,-14040,-29607,-14056,-29600,-14071,-29593,-14086,-29586,-14101,-29578,-14116,-29571,-14131,-29564,-14146,-29557,-14161,-29549,-14177,-29542,-14192,-29535,-14207,-29528,-14222,-29520,-14237,-29513,-14252,-29506,-14267,-29499,-14282,-29491,-14297,-29484,-14312,-29477,-14327,-29469,-14343,-29462,-14358,-29455,-14373,-29447,-14388,-29440,-14403,-29433,-14418,-29425,-14433,-29418,-14448,-29411,-14463,-29403,-14478,-29396,-14493,-29388,-14508,-29381,-14523,-29373,-14538,-29366,-14553,-29359,-14568,-29351,-14583,-29344,-14598,-29336,-14613,-29329,-14628,-29321,-14643,-29314,-14658,-29306,-14673,-29299,-14688,-29291,-14703,-29284,-14718,-29276,-14733,-29269,-14748,-29261,-14763,-29254,-14778,-29246,-14793,-29239,-14808,-29231,-14823,-29223,-14838,-29216,-14853,-29208,-14867,-29201,-14882,-29193,-14897,-29185,-14912,-29178,-14927,-29170,-14942,-29163,-14957,-29155,-14972,-29147,-14987,-29140,-15002,-29132,-15017,-29124,-15031,-29117,-15046,-29109,-15061,-29101,-15076,-29093,-15091,-29086,-15106,-29078,-15121,-29070,-15136,-29063,-15150,-29055,-15165,-29047,-15180,-29039,-15195,-29032,-15210,-29024,-15225,-29016,-15239,-29008,-15254,-29000,-15269,-28993,-15284,-28985,-15299,-28977,-15314,-28969,-15328,-28961,-15343,-28954,-15358,-28946,-15373,-28938,-15388,-28930,-15402,-28922,-15417,-28914,-15432,-28906,-15447,-28898,-15462,-28891,-15476,-28883,-15491,-28875,-15506,-28867,-15521,-28859,-15535,-28851,-15550,-28843,-15565,-28835,-15580,-28827,-15594,-28819,-15609,-28811,-15624,-28803,-15639,-28795,-15653,-28787,-15668,-28779,-15683,-28771,-15697,-28763,-15712,-28755,-15727,-28747,-15741,-28739,-15756,-28731,-15771,-28723,-15786,-28715,-15800,-28707,-15815,-28699,-15830,-28691,-15844,-28682,-15859,-28674,-15874,-28666,-15888,-28658,-15903,-28650,-15918,-28642,-15932,-28634,-15947,-28626,-15961,-28617,-15976,-28609,-15991,-28601,-16005,-28593,-16020,-28585,-16035,-28576,-16049,-28568,-16064,-28560,-16078,-28552,-16093,-28544,-16108,-28535,-16122,-28527,-16137,-28519,-16151,-28511,-16166,-28502,-16180,-28494,-16195,-28486,-16210,-28478,-16224,-28469,-16239,-28461,-16253,-28453,-16268,-28444,-16282,-28436,-16297,-28428,-16311,-28419,-16326,-28411,-16340,-28403,-16355,-28394,-16369,-28386};
-
-int16_t twb12288[8192] __attribute__((aligned(32))) = {32767,0,32766,-34,32766,-68,32766,-101,32766,-135,32766,-168,32766,-202,32766,-235,32765,-269,32765,-302,32765,-336,32764,-369,32764,-403,32764,-436,32763,-470,32763,-503,32762,-537,32762,-570,32761,-604,32760,-637,32760,-671,32759,-704,32758,-738,32757,-771,32757,-805,32756,-838,32755,-872,32754,-905,32753,-939,32752,-972,32751,-1006,32750,-1039,32749,-1073,32748,-1106,32747,-1140,32746,-1173,32744,-1207,32743,-1240,32742,-1274,32740,-1307,32739,-1340,32738,-1374,32736,-1407,32735,-1441,32733,-1474,32732,-1508,32730,-1541,32729,-1575,32727,-1608,32725,-1642,32724,-1675,32722,-1709,32720,-1742,32718,-1776,32717,-1809,32715,-1843,32713,-1876,32711,-1909,32709,-1943,32707,-1976,32705,-2010,32703,-2043,32701,-2077,32699,-2110,32696,-2144,32694,-2177,32692,-2210,32690,-2244,32687,-2277,32685,-2311,32683,-2344,32680,-2378,32678,-2411,32675,-2444,32673,-2478,32670,-2511,32668,-2545,32665,-2578,32662,-2611,32660,-2645,32657,-2678,32654,-2712,32651,-2745,32649,-2778,32646,-2812,32643,-2845,32640,-2879,32637,-2912,32634,-2945,32631,-2979,32628,-3012,32625,-3045,32622,-3079,32618,-3112,32615,-3146,32612,-3179,32609,-3212,32605,-3246,32602,-3279,32599,-3312,32595,-3346,32592,-3379,32588,-3412,32585,-3446,32581,-3479,32578,-3512,32574,-3546,32571,-3579,32567,-3612,32563,-3645,32559,-3679,32556,-3712,32552,-3745,32548,-3779,32544,-3812,32540,-3845,32536,-3878,32532,-3912,32528,-3945,32524,-3978,32520,-4012,32516,-4045,32512,-4078,32508,-4111,32503,-4145,32499,-4178,32495,-4211,32491,-4244,32486,-4277,32482,-4311,32477,-4344,32473,-4377,32468,-4410,32464,-4444,32459,-4477,32455,-4510,32450,-4543,32445,-4576,32441,-4609,32436,-4643,32431,-4676,32426,-4709,32422,-4742,32417,-4775,32412,-4808,32407,-4842,32402,-4875,32397,-4908,32392,-4941,32387,-4974,32382,-5007,32377,-5040,32371,-5073,32366,-5107,32361,-5140,32356,-5173,32350,-5206,32345,-5239,32340,-5272,32334,-5305,32329,-5338,32323,-5371,32318,-5404,32312,-5437,32307,-5470,32301,-5503,32295,-5536,32290,-5569,32284,-5602,32278,-5635,32273,-5668,32267,-5701,32261,-5734,32255,-5767,32249,-5800,32243,-5833,32237,-5866,32231,-5899,32225,-5932,32219,-5965,32213,-5998,32207,-6031,32201,-6064,32194,-6097,32188,-6130,32182,-6163,32176,-6196,32169,-6229,32163,-6262,32156,-6294,32150,-6327,32143,-6360,32137,-6393,32130,-6426,32124,-6459,32117,-6492,32110,-6524,32104,-6557,32097,-6590,32090,-6623,32084,-6656,32077,-6689,32070,-6721,32063,-6754,32056,-6787,32049,-6820,32042,-6852,32035,-6885,32028,-6918,32021,-6951,32014,-6983,32007,-7016,31999,-7049,31992,-7082,31985,-7114,31978,-7147,31970,-7180,31963,-7212,31956,-7245,31948,-7278,31941,-7311,31933,-7343,31926,-7376,31918,-7408,31911,-7441,31903,-7474,31895,-7506,31888,-7539,31880,-7572,31872,-7604,31864,-7637,31856,-7669,31849,-7702,31841,-7734,31833,-7767,31825,-7800,31817,-7832,31809,-7865,31801,-7897,31793,-7930,31785,-7962,31776,-7995,31768,-8027,31760,-8060,31752,-8092,31743,-8125,31735,-8157,31727,-8190,31718,-8222,31710,-8254,31701,-8287,31693,-8319,31684,-8352,31676,-8384,31667,-8416,31659,-8449,31650,-8481,31641,-8514,31633,-8546,31624,-8578,31615,-8611,31606,-8643,31597,-8675,31588,-8708,31580,-8740,31571,-8772,31562,-8804,31553,-8837,31544,-8869,31534,-8901,31525,-8933,31516,-8966,31507,-8998,31498,-9030,31489,-9062,31479,-9095,31470,-9127,31461,-9159,31451,-9191,31442,-9223,31432,-9255,31423,-9288,31413,-9320,31404,-9352,31394,-9384,31385,-9416,31375,-9448,31365,-9480,31356,-9512,31346,-9544,31336,-9576,31326,-9608,31316,-9640,31307,-9672,31297,-9704,31287,-9736,31277,-9768,31267,-9800,31257,-9832,31247,-9864,31236,-9896,31226,-9928,31216,-9960,31206,-9992,31196,-10024,31185,-10056,31175,-10088,31165,-10120,31154,-10152,31144,-10183,31134,-10215,31123,-10247,31113,-10279,31102,-10311,31092,-10343,31081,-10374,31070,-10406,31060,-10438,31049,-10470,31038,-10501,31028,-10533,31017,-10565,31006,-10597,30995,-10628,30984,-10660,30973,-10692,30962,-10723,30951,-10755,30940,-10787,30929,-10818,30918,-10850,30907,-10881,30896,-10913,30885,-10945,30874,-10976,30862,-11008,30851,-11039,30840,-11071,30828,-11102,30817,-11134,30806,-11165,30794,-11197,30783,-11228,30771,-11260,30760,-11291,30748,-11323,30737,-11354,30725,-11386,30713,-11417,30702,-11449,30690,-11480,30678,-11511,30666,-11543,30655,-11574,30643,-11605,30631,-11637,30619,-11668,30607,-11699,30595,-11731,30583,-11762,30571,-11793,30559,-11824,30547,-11856,30535,-11887,30522,-11918,30510,-11949,30498,-11981,30486,-12012,30473,-12043,30461,-12074,30449,-12105,30436,-12136,30424,-12167,30411,-12199,30399,-12230,30386,-12261,30374,-12292,30361,-12323,30349,-12354,30336,-12385,30323,-12416,30311,-12447,30298,-12478,30285,-12509,30272,-12540,30259,-12571,30247,-12602,30234,-12633,30221,-12664,30208,-12695,30195,-12725,30182,-12756,30169,-12787,30156,-12818,30142,-12849,30129,-12880,30116,-12910,30103,-12941,30090,-12972,30076,-13003,30063,-13034,30050,-13064,30036,-13095,30023,-13126,30009,-13156,29996,-13187,29983,-13218,29969,-13248,29955,-13279,29942,-13310,29928,-13340,29915,-13371,29901,-13401,29887,-13432,29873,-13463,29860,-13493,29846,-13524,29832,-13554,29818,-13585,29804,-13615,29790,-13646,29776,-13676,29762,-13707,29748,-13737,29734,-13767,29720,-13798,29706,-13828,29692,-13859,29678,-13889,29663,-13919,29649,-13950,29635,-13980,29621,-14010,29606,-14040,29592,-14071,29577,-14101,29563,-14131,29548,-14161,29534,-14192,29519,-14222,29505,-14252,29490,-14282,29476,-14312,29461,-14343,29446,-14373,29432,-14403,29417,-14433,29402,-14463,29387,-14493,29372,-14523,29358,-14553,29343,-14583,29328,-14613,29313,-14643,29298,-14673,29283,-14703,29268,-14733,29253,-14763,29238,-14793,29222,-14823,29207,-14853,29192,-14882,29177,-14912,29162,-14942,29146,-14972,29131,-15002,29116,-15031,29100,-15061,29085,-15091,29069,-15121,29054,-15150,29038,-15180,29023,-15210,29007,-15239,28992,-15269,28976,-15299,28960,-15328,28945,-15358,28929,-15388,28913,-15417,28897,-15447,28882,-15476,28866,-15506,28850,-15535,28834,-15565,28818,-15594,28802,-15624,28786,-15653,28770,-15683,28754,-15712,28738,-15741,28722,-15771,28706,-15800,28690,-15830,28673,-15859,28657,-15888,28641,-15918,28625,-15947,28608,-15976,28592,-16005,28575,-16035,28559,-16064,28543,-16093,28526,-16122,28510,-16151,28493,-16180,28477,-16210,28460,-16239,28443,-16268,28427,-16297,28410,-16326,28393,-16355,28377,-16384,28360,-16413,28343,-16442,28326,-16471,28309,-16500,28292,-16529,28275,-16558,28259,-16587,28242,-16616,28225,-16644,28208,-16673,28190,-16702,28173,-16731,28156,-16760,28139,-16789,28122,-16817,28105,-16846,28087,-16875,28070,-16904,28053,-16932,28036,-16961,28018,-16990,28001,-17018,27983,-17047,27966,-17075,27948,-17104,27931,-17133,27913,-17161,27896,-17190,27878,-17218,27861,-17247,27843,-17275,27825,-17304,27808,-17332,27790,-17361,27772,-17389,27754,-17417,27736,-17446,27719,-17474,27701,-17502,27683,-17531,27665,-17559,27647,-17587,27629,-17616,27611,-17644,27593,-17672,27575,-17700,27557,-17728,27538,-17757,27520,-17785,27502,-17813,27484,-17841,27466,-17869,27447,-17897,27429,-17925,27411,-17953,27392,-17981,27374,-18009,27355,-18037,27337,-18065,27319,-18093,27300,-18121,27281,-18149,27263,-18177,27244,-18205,27226,-18233,27207,-18261,27188,-18288,27170,-18316,27151,-18344,27132,-18372,27113,-18399,27094,-18427,27076,-18455,27057,-18483,27038,-18510,27019,-18538,27000,-18565,26981,-18593,26962,-18621,26943,-18648,26924,-18676,26905,-18703,26885,-18731,26866,-18758,26847,-18786,26828,-18813,26809,-18841,26789,-18868,26770,-18895,26751,-18923,26731,-18950,26712,-18977,26692,-19005,26673,-19032,26654,-19059,26634,-19087,26615,-19114,26595,-19141,26575,-19168,26556,-19195,26536,-19222,26516,-19250,26497,-19277,26477,-19304,26457,-19331,26437,-19358,26418,-19385,26398,-19412,26378,-19439,26358,-19466,26338,-19493,26318,-19520,26298,-19547,26278,-19574,26258,-19600,26238,-19627,26218,-19654,26198,-19681,26178,-19708,26158,-19734,26137,-19761,26117,-19788,26097,-19815,26077,-19841,26056,-19868,26036,-19895,26016,-19921,25995,-19948,25975,-19974,25954,-20001,25934,-20027,25913,-20054,25893,-20080,25872,-20107,25852,-20133,25831,-20160,25811,-20186,25790,-20213,25769,-20239,25749,-20265,25728,-20292,25707,-20318,25686,-20344,25665,-20370,25645,-20397,25624,-20423,25603,-20449,25582,-20475,25561,-20501,25540,-20528,25519,-20554,25498,-20580,25477,-20606,25456,-20632,25435,-20658,25414,-20684,25392,-20710,25371,-20736,25350,-20762,25329,-20788,25307,-20814,25286,-20839,25265,-20865,25243,-20891,25222,-20917,25201,-20943,25179,-20968,25158,-20994,25136,-21020,25115,-21046,25093,-21071,25072,-21097,25050,-21123,25029,-21148,25007,-21174,24985,-21199,24964,-21225,24942,-21250,24920,-21276,24898,-21301,24877,-21327,24855,-21352,24833,-21378,24811,-21403,24789,-21428,24767,-21454,24745,-21479,24723,-21504,24701,-21530,24679,-21555,24657,-21580,24635,-21605,24613,-21630,24591,-21656,24569,-21681,24546,-21706,24524,-21731,24502,-21756,24480,-21781,24457,-21806,24435,-21831,24413,-21856,24390,-21881,24368,-21906,24346,-21931,24323,-21956,24301,-21981,24278,-22005,24256,-22030,24233,-22055,24211,-22080,24188,-22105,24165,-22129,24143,-22154,24120,-22179,24097,-22203,24075,-22228,24052,-22253,24029,-22277,24006,-22302,23984,-22326,23961,-22351,23938,-22375,23915,-22400,23892,-22424,23869,-22449,23846,-22473,23823,-22497,23800,-22522,23777,-22546,23754,-22570,23731,-22595,23708,-22619,23685,-22643,23661,-22667,23638,-22692,23615,-22716,23592,-22740,23569,-22764,23545,-22788,23522,-22812,23499,-22836,23475,-22860,23452,-22884,23428,-22908,23405,-22932,23382,-22956,23358,-22980,23335,-23004,23311,-23028,23287,-23051,23264,-23075,23240,-23099,23217,-23123,23193,-23147,23169,-23170,23146,-23194,23122,-23218,23098,-23241,23074,-23265,23050,-23288,23027,-23312,23003,-23336,22979,-23359,22955,-23383,22931,-23406,22907,-23429,22883,-23453,22859,-23476,22835,-23500,22811,-23523,22787,-23546,22763,-23570,22739,-23593,22715,-23616,22691,-23639,22666,-23662,22642,-23686,22618,-23709,22594,-23732,22569,-23755,22545,-23778,22521,-23801,22496,-23824,22472,-23847,22448,-23870,22423,-23893,22399,-23916,22374,-23939,22350,-23962,22325,-23985,22301,-24007,22276,-24030,22252,-24053,22227,-24076,22202,-24098,22178,-24121,22153,-24144,22128,-24166,22104,-24189,22079,-24212,22054,-24234,22029,-24257,22004,-24279,21980,-24302,21955,-24324,21930,-24347,21905,-24369,21880,-24391,21855,-24414,21830,-24436,21805,-24458,21780,-24481,21755,-24503,21730,-24525,21705,-24547,21680,-24570,21655,-24592,21629,-24614,21604,-24636,21579,-24658,21554,-24680,21529,-24702,21503,-24724,21478,-24746,21453,-24768,21427,-24790,21402,-24812,21377,-24834,21351,-24856,21326,-24878,21300,-24899,21275,-24921,21249,-24943,21224,-24965,21198,-24986,21173,-25008,21147,-25030,21122,-25051,21096,-25073,21070,-25094,21045,-25116,21019,-25137,20993,-25159,20967,-25180,20942,-25202,20916,-25223,20890,-25244,20864,-25266,20838,-25287,20813,-25308,20787,-25330,20761,-25351,20735,-25372,20709,-25393,20683,-25415,20657,-25436,20631,-25457,20605,-25478,20579,-25499,20553,-25520,20527,-25541,20500,-25562,20474,-25583,20448,-25604,20422,-25625,20396,-25646,20369,-25666,20343,-25687,20317,-25708,20291,-25729,20264,-25750,20238,-25770,20212,-25791,20185,-25812,20159,-25832,20132,-25853,20106,-25873,20079,-25894,20053,-25914,20026,-25935,20000,-25955,19973,-25976,19947,-25996,19920,-26017,19894,-26037,19867,-26057,19840,-26078,19814,-26098,19787,-26118,19760,-26138,19733,-26159,19707,-26179,19680,-26199,19653,-26219,19626,-26239,19599,-26259,19573,-26279,19546,-26299,19519,-26319,19492,-26339,19465,-26359,19438,-26379,19411,-26399,19384,-26419,19357,-26438,19330,-26458,19303,-26478,19276,-26498,19249,-26517,19221,-26537,19194,-26557,19167,-26576,19140,-26596,19113,-26616,19086,-26635,19058,-26655,19031,-26674,19004,-26693,18976,-26713,18949,-26732,18922,-26752,18894,-26771,18867,-26790,18840,-26810,18812,-26829,18785,-26848,18757,-26867,18730,-26886,18702,-26906,18675,-26925,18647,-26944,18620,-26963,18592,-26982,18564,-27001,18537,-27020,18509,-27039,18482,-27058,18454,-27077,18426,-27095,18398,-27114,18371,-27133,18343,-27152,18315,-27171,18287,-27189,18260,-27208,18232,-27227,18204,-27245,18176,-27264,18148,-27282,18120,-27301,18092,-27320,18064,-27338,18036,-27356,18008,-27375,17980,-27393,17952,-27412,17924,-27430,17896,-27448,17868,-27467,17840,-27485,17812,-27503,17784,-27521,17756,-27539,17727,-27558,17699,-27576,17671,-27594,17643,-27612,17615,-27630,17586,-27648,17558,-27666,17530,-27684,17501,-27702,17473,-27720,17445,-27737,17416,-27755,17388,-27773,17360,-27791,17331,-27809,17303,-27826,17274,-27844,17246,-27862,17217,-27879,17189,-27897,17160,-27914,17132,-27932,17103,-27949,17074,-27967,17046,-27984,17017,-28002,16989,-28019,16960,-28037,16931,-28054,16903,-28071,16874,-28088,16845,-28106,16816,-28123,16788,-28140,16759,-28157,16730,-28174,16701,-28191,16672,-28209,16643,-28226,16615,-28243,16586,-28260,16557,-28276,16528,-28293,16499,-28310,16470,-28327,16441,-28344,16412,-28361,16383,-28378,16354,-28394,16325,-28411,16296,-28428,16267,-28444,16238,-28461,16209,-28478,16179,-28494,16150,-28511,16121,-28527,16092,-28544,16063,-28560,16034,-28576,16004,-28593,15975,-28609,15946,-28626,15917,-28642,15887,-28658,15858,-28674,15829,-28691,15799,-28707,15770,-28723,15740,-28739,15711,-28755,15682,-28771,15652,-28787,15623,-28803,15593,-28819,15564,-28835,15534,-28851,15505,-28867,15475,-28883,15446,-28898,15416,-28914,15387,-28930,15357,-28946,15327,-28961,15298,-28977,15268,-28993,15238,-29008,15209,-29024,15179,-29039,15149,-29055,15120,-29070,15090,-29086,15060,-29101,15030,-29117,15001,-29132,14971,-29147,14941,-29163,14911,-29178,14881,-29193,14852,-29208,14822,-29223,14792,-29239,14762,-29254,14732,-29269,14702,-29284,14672,-29299,14642,-29314,14612,-29329,14582,-29344,14552,-29359,14522,-29373,14492,-29388,14462,-29403,14432,-29418,14402,-29433,14372,-29447,14342,-29462,14311,-29477,14281,-29491,14251,-29506,14221,-29520,14191,-29535,14160,-29549,14130,-29564,14100,-29578,14070,-29593,14039,-29607,14009,-29622,13979,-29636,13949,-29650,13918,-29664,13888,-29679,13858,-29693,13827,-29707,13797,-29721,13766,-29735,13736,-29749,13706,-29763,13675,-29777,13645,-29791,13614,-29805,13584,-29819,13553,-29833,13523,-29847,13492,-29861,13462,-29874,13431,-29888,13400,-29902,13370,-29916,13339,-29929,13309,-29943,13278,-29956,13247,-29970,13217,-29984,13186,-29997,13155,-30010,13125,-30024,13094,-30037,13063,-30051,13033,-30064,13002,-30077,12971,-30091,12940,-30104,12909,-30117,12879,-30130,12848,-30143,12817,-30157,12786,-30170,12755,-30183,12724,-30196,12694,-30209,12663,-30222,12632,-30235,12601,-30248,12570,-30260,12539,-30273,12508,-30286,12477,-30299,12446,-30312,12415,-30324,12384,-30337,12353,-30350,12322,-30362,12291,-30375,12260,-30387,12229,-30400,12198,-30412,12166,-30425,12135,-30437,12104,-30450,12073,-30462,12042,-30474,12011,-30487,11980,-30499,11948,-30511,11917,-30523,11886,-30536,11855,-30548,11823,-30560,11792,-30572,11761,-30584,11730,-30596,11698,-30608,11667,-30620,11636,-30632,11604,-30644,11573,-30656,11542,-30667,11510,-30679,11479,-30691,11448,-30703,11416,-30714,11385,-30726,11353,-30738,11322,-30749,11290,-30761,11259,-30772,11227,-30784,11196,-30795,11164,-30807,11133,-30818,11101,-30829,11070,-30841,11038,-30852,11007,-30863,10975,-30875,10944,-30886,10912,-30897,10880,-30908,10849,-30919,10817,-30930,10786,-30941,10754,-30952,10722,-30963,10691,-30974,10659,-30985,10627,-30996,10596,-31007,10564,-31018,10532,-31029,10500,-31039,10469,-31050,10437,-31061,10405,-31071,10373,-31082,10342,-31093,10310,-31103,10278,-31114,10246,-31124,10214,-31135,10182,-31145,10151,-31155,10119,-31166,10087,-31176,10055,-31186,10023,-31197,9991,-31207,9959,-31217,9927,-31227,9895,-31237,9863,-31248,9831,-31258,9799,-31268,9767,-31278,9735,-31288,9703,-31298,9671,-31308,9639,-31317,9607,-31327,9575,-31337,9543,-31347,9511,-31357,9479,-31366,9447,-31376,9415,-31386,9383,-31395,9351,-31405,9319,-31414,9287,-31424,9254,-31433,9222,-31443,9190,-31452,9158,-31462,9126,-31471,9094,-31480,9061,-31490,9029,-31499,8997,-31508,8965,-31517,8932,-31526,8900,-31535,8868,-31545,8836,-31554,8803,-31563,8771,-31572,8739,-31581,8707,-31589,8674,-31598,8642,-31607,8610,-31616,8577,-31625,8545,-31634,8513,-31642,8480,-31651,8448,-31660,8415,-31668,8383,-31677,8351,-31685,8318,-31694,8286,-31702,8253,-31711,8221,-31719,8189,-31728,8156,-31736,8124,-31744,8091,-31753,8059,-31761,8026,-31769,7994,-31777,7961,-31786,7929,-31794,7896,-31802,7864,-31810,7831,-31818,7799,-31826,7766,-31834,7733,-31842,7701,-31850,7668,-31857,7636,-31865,7603,-31873,7571,-31881,7538,-31889,7505,-31896,7473,-31904,7440,-31912,7407,-31919,7375,-31927,7342,-31934,7310,-31942,7277,-31949,7244,-31957,7211,-31964,7179,-31971,7146,-31979,7113,-31986,7081,-31993,7048,-32000,7015,-32008,6982,-32015,6950,-32022,6917,-32029,6884,-32036,6851,-32043,6819,-32050,6786,-32057,6753,-32064,6720,-32071,6688,-32078,6655,-32085,6622,-32091,6589,-32098,6556,-32105,6523,-32111,6491,-32118,6458,-32125,6425,-32131,6392,-32138,6359,-32144,6326,-32151,6293,-32157,6261,-32164,6228,-32170,6195,-32177,6162,-32183,6129,-32189,6096,-32195,6063,-32202,6030,-32208,5997,-32214,5964,-32220,5931,-32226,5898,-32232,5865,-32238,5832,-32244,5799,-32250,5766,-32256,5733,-32262,5700,-32268,5667,-32274,5634,-32279,5601,-32285,5568,-32291,5535,-32296,5502,-32302,5469,-32308,5436,-32313,5403,-32319,5370,-32324,5337,-32330,5304,-32335,5271,-32341,5238,-32346,5205,-32351,5172,-32357,5139,-32362,5106,-32367,5072,-32372,5039,-32378,5006,-32383,4973,-32388,4940,-32393,4907,-32398,4874,-32403,4841,-32408,4807,-32413,4774,-32418,4741,-32423,4708,-32427,4675,-32432,4642,-32437,4608,-32442,4575,-32446,4542,-32451,4509,-32456,4476,-32460,4443,-32465,4409,-32469,4376,-32474,4343,-32478,4310,-32483,4276,-32487,4243,-32492,4210,-32496,4177,-32500,4144,-32504,4110,-32509,4077,-32513,4044,-32517,4011,-32521,3977,-32525,3944,-32529,3911,-32533,3877,-32537,3844,-32541,3811,-32545,3778,-32549,3744,-32553,3711,-32557,3678,-32560,3644,-32564,3611,-32568,3578,-32572,3545,-32575,3511,-32579,3478,-32582,3445,-32586,3411,-32589,3378,-32593,3345,-32596,3311,-32600,3278,-32603,3245,-32606,3211,-32610,3178,-32613,3145,-32616,3111,-32619,3078,-32623,3044,-32626,3011,-32629,2978,-32632,2944,-32635,2911,-32638,2878,-32641,2844,-32644,2811,-32647,2777,-32650,2744,-32652,2711,-32655,2677,-32658,2644,-32661,2610,-32663,2577,-32666,2544,-32669,2510,-32671,2477,-32674,2443,-32676,2410,-32679,2377,-32681,2343,-32684,2310,-32686,2276,-32688,2243,-32691,2209,-32693,2176,-32695,2143,-32697,2109,-32700,2076,-32702,2042,-32704,2009,-32706,1975,-32708,1942,-32710,1908,-32712,1875,-32714,1842,-32716,1808,-32718,1775,-32719,1741,-32721,1708,-32723,1674,-32725,1641,-32726,1607,-32728,1574,-32730,1540,-32731,1507,-32733,1473,-32734,1440,-32736,1406,-32737,1373,-32739,1339,-32740,1306,-32741,1273,-32743,1239,-32744,1206,-32745,1172,-32747,1139,-32748,1105,-32749,1072,-32750,1038,-32751,1005,-32752,971,-32753,938,-32754,904,-32755,871,-32756,837,-32757,804,-32758,770,-32758,737,-32759,703,-32760,670,-32761,636,-32761,603,-32762,569,-32763,536,-32763,502,-32764,469,-32764,435,-32765,402,-32765,368,-32765,335,-32766,301,-32766,268,-32766,234,-32767,201,-32767,167,-32767,134,-32767,100,-32767,67,-32767,33,-32767,0,-32767,-34,-32767,-68,-32767,-101,-32767,-135,-32767,-168,-32767,-202,-32767,-235,-32767,-269,-32766,-302,-32766,-336,-32766,-369,-32765,-403,-32765,-436,-32765,-470,-32764,-503,-32764,-537,-32763,-570,-32763,-604,-32762,-637,-32761,-671,-32761,-704,-32760,-738,-32759,-771,-32758,-805,-32758,-838,-32757,-872,-32756,-905,-32755,-939,-32754,-972,-32753,-1006,-32752,-1039,-32751,-1073,-32750,-1106,-32749,-1140,-32748,-1173,-32747,-1207,-32745,-1240,-32744,-1274,-32743,-1307,-32741,-1340,-32740,-1374,-32739,-1407,-32737,-1441,-32736,-1474,-32734,-1508,-32733,-1541,-32731,-1575,-32730,-1608,-32728,-1642,-32726,-1675,-32725,-1709,-32723,-1742,-32721,-1776,-32719,-1809,-32718,-1843,-32716,-1876,-32714,-1909,-32712,-1943,-32710,-1976,-32708,-2010,-32706,-2043,-32704,-2077,-32702,-2110,-32700,-2144,-32697,-2177,-32695,-2210,-32693,-2244,-32691,-2277,-32688,-2311,-32686,-2344,-32684,-2378,-32681,-2411,-32679,-2444,-32676,-2478,-32674,-2511,-32671,-2545,-32669,-2578,-32666,-2611,-32663,-2645,-32661,-2678,-32658,-2712,-32655,-2745,-32652,-2778,-32650,-2812,-32647,-2845,-32644,-2879,-32641,-2912,-32638,-2945,-32635,-2979,-32632,-3012,-32629,-3045,-32626,-3079,-32623,-3112,-32619,-3146,-32616,-3179,-32613,-3212,-32610,-3246,-32606,-3279,-32603,-3312,-32600,-3346,-32596,-3379,-32593,-3412,-32589,-3446,-32586,-3479,-32582,-3512,-32579,-3546,-32575,-3579,-32572,-3612,-32568,-3645,-32564,-3679,-32560,-3712,-32557,-3745,-32553,-3779,-32549,-3812,-32545,-3845,-32541,-3878,-32537,-3912,-32533,-3945,-32529,-3978,-32525,-4012,-32521,-4045,-32517,-4078,-32513,-4111,-32509,-4145,-32504,-4178,-32500,-4211,-32496,-4244,-32492,-4277,-32487,-4311,-32483,-4344,-32478,-4377,-32474,-4410,-32469,-4444,-32465,-4477,-32460,-4510,-32456,-4543,-32451,-4576,-32446,-4609,-32442,-4643,-32437,-4676,-32432,-4709,-32427,-4742,-32423,-4775,-32418,-4808,-32413,-4842,-32408,-4875,-32403,-4908,-32398,-4941,-32393,-4974,-32388,-5007,-32383,-5040,-32378,-5073,-32372,-5107,-32367,-5140,-32362,-5173,-32357,-5206,-32351,-5239,-32346,-5272,-32341,-5305,-32335,-5338,-32330,-5371,-32324,-5404,-32319,-5437,-32313,-5470,-32308,-5503,-32302,-5536,-32296,-5569,-32291,-5602,-32285,-5635,-32279,-5668,-32274,-5701,-32268,-5734,-32262,-5767,-32256,-5800,-32250,-5833,-32244,-5866,-32238,-5899,-32232,-5932,-32226,-5965,-32220,-5998,-32214,-6031,-32208,-6064,-32202,-6097,-32195,-6130,-32189,-6163,-32183,-6196,-32177,-6229,-32170,-6262,-32164,-6294,-32157,-6327,-32151,-6360,-32144,-6393,-32138,-6426,-32131,-6459,-32125,-6492,-32118,-6524,-32111,-6557,-32105,-6590,-32098,-6623,-32091,-6656,-32085,-6689,-32078,-6721,-32071,-6754,-32064,-6787,-32057,-6820,-32050,-6852,-32043,-6885,-32036,-6918,-32029,-6951,-32022,-6983,-32015,-7016,-32008,-7049,-32000,-7082,-31993,-7114,-31986,-7147,-31979,-7180,-31971,-7212,-31964,-7245,-31957,-7278,-31949,-7311,-31942,-7343,-31934,-7376,-31927,-7408,-31919,-7441,-31912,-7474,-31904,-7506,-31896,-7539,-31889,-7572,-31881,-7604,-31873,-7637,-31865,-7669,-31857,-7702,-31850,-7734,-31842,-7767,-31834,-7800,-31826,-7832,-31818,-7865,-31810,-7897,-31802,-7930,-31794,-7962,-31786,-7995,-31777,-8027,-31769,-8060,-31761,-8092,-31753,-8125,-31744,-8157,-31736,-8190,-31728,-8222,-31719,-8254,-31711,-8287,-31702,-8319,-31694,-8352,-31685,-8384,-31677,-8416,-31668,-8449,-31660,-8481,-31651,-8514,-31642,-8546,-31634,-8578,-31625,-8611,-31616,-8643,-31607,-8675,-31598,-8708,-31589,-8740,-31581,-8772,-31572,-8804,-31563,-8837,-31554,-8869,-31545,-8901,-31535,-8933,-31526,-8966,-31517,-8998,-31508,-9030,-31499,-9062,-31490,-9095,-31480,-9127,-31471,-9159,-31462,-9191,-31452,-9223,-31443,-9255,-31433,-9288,-31424,-9320,-31414,-9352,-31405,-9384,-31395,-9416,-31386,-9448,-31376,-9480,-31366,-9512,-31357,-9544,-31347,-9576,-31337,-9608,-31327,-9640,-31317,-9672,-31308,-9704,-31298,-9736,-31288,-9768,-31278,-9800,-31268,-9832,-31258,-9864,-31248,-9896,-31237,-9928,-31227,-9960,-31217,-9992,-31207,-10024,-31197,-10056,-31186,-10088,-31176,-10120,-31166,-10152,-31155,-10183,-31145,-10215,-31135,-10247,-31124,-10279,-31114,-10311,-31103,-10343,-31093,-10374,-31082,-10406,-31071,-10438,-31061,-10470,-31050,-10501,-31039,-10533,-31029,-10565,-31018,-10597,-31007,-10628,-30996,-10660,-30985,-10692,-30974,-10723,-30963,-10755,-30952,-10787,-30941,-10818,-30930,-10850,-30919,-10881,-30908,-10913,-30897,-10945,-30886,-10976,-30875,-11008,-30863,-11039,-30852,-11071,-30841,-11102,-30829,-11134,-30818,-11165,-30807,-11197,-30795,-11228,-30784,-11260,-30772,-11291,-30761,-11323,-30749,-11354,-30738,-11386,-30726,-11417,-30714,-11449,-30703,-11480,-30691,-11511,-30679,-11543,-30667,-11574,-30656,-11605,-30644,-11637,-30632,-11668,-30620,-11699,-30608,-11731,-30596,-11762,-30584,-11793,-30572,-11824,-30560,-11856,-30548,-11887,-30536,-11918,-30523,-11949,-30511,-11981,-30499,-12012,-30487,-12043,-30474,-12074,-30462,-12105,-30450,-12136,-30437,-12167,-30425,-12199,-30412,-12230,-30400,-12261,-30387,-12292,-30375,-12323,-30362,-12354,-30350,-12385,-30337,-12416,-30324,-12447,-30312,-12478,-30299,-12509,-30286,-12540,-30273,-12571,-30260,-12602,-30248,-12633,-30235,-12664,-30222,-12695,-30209,-12725,-30196,-12756,-30183,-12787,-30170,-12818,-30157,-12849,-30143,-12880,-30130,-12910,-30117,-12941,-30104,-12972,-30091,-13003,-30077,-13034,-30064,-13064,-30051,-13095,-30037,-13126,-30024,-13156,-30010,-13187,-29997,-13218,-29984,-13248,-29970,-13279,-29956,-13310,-29943,-13340,-29929,-13371,-29916,-13401,-29902,-13432,-29888,-13463,-29874,-13493,-29861,-13524,-29847,-13554,-29833,-13585,-29819,-13615,-29805,-13646,-29791,-13676,-29777,-13707,-29763,-13737,-29749,-13767,-29735,-13798,-29721,-13828,-29707,-13859,-29693,-13889,-29679,-13919,-29664,-13950,-29650,-13980,-29636,-14010,-29622,-14040,-29607,-14071,-29593,-14101,-29578,-14131,-29564,-14161,-29549,-14192,-29535,-14222,-29520,-14252,-29506,-14282,-29491,-14312,-29477,-14343,-29462,-14373,-29447,-14403,-29433,-14433,-29418,-14463,-29403,-14493,-29388,-14523,-29373,-14553,-29359,-14583,-29344,-14613,-29329,-14643,-29314,-14673,-29299,-14703,-29284,-14733,-29269,-14763,-29254,-14793,-29239,-14823,-29223,-14853,-29208,-14882,-29193,-14912,-29178,-14942,-29163,-14972,-29147,-15002,-29132,-15031,-29117,-15061,-29101,-15091,-29086,-15121,-29070,-15150,-29055,-15180,-29039,-15210,-29024,-15239,-29008,-15269,-28993,-15299,-28977,-15328,-28961,-15358,-28946,-15388,-28930,-15417,-28914,-15447,-28898,-15476,-28883,-15506,-28867,-15535,-28851,-15565,-28835,-15594,-28819,-15624,-28803,-15653,-28787,-15683,-28771,-15712,-28755,-15741,-28739,-15771,-28723,-15800,-28707,-15830,-28691,-15859,-28674,-15888,-28658,-15918,-28642,-15947,-28626,-15976,-28609,-16005,-28593,-16035,-28576,-16064,-28560,-16093,-28544,-16122,-28527,-16151,-28511,-16180,-28494,-16210,-28478,-16239,-28461,-16268,-28444,-16297,-28428,-16326,-28411,-16355,-28394,-16384,-28378,-16413,-28361,-16442,-28344,-16471,-28327,-16500,-28310,-16529,-28293,-16558,-28276,-16587,-28260,-16616,-28243,-16644,-28226,-16673,-28209,-16702,-28191,-16731,-28174,-16760,-28157,-16789,-28140,-16817,-28123,-16846,-28106,-16875,-28088,-16904,-28071,-16932,-28054,-16961,-28037,-16990,-28019,-17018,-28002,-17047,-27984,-17075,-27967,-17104,-27949,-17133,-27932,-17161,-27914,-17190,-27897,-17218,-27879,-17247,-27862,-17275,-27844,-17304,-27826,-17332,-27809,-17361,-27791,-17389,-27773,-17417,-27755,-17446,-27737,-17474,-27720,-17502,-27702,-17531,-27684,-17559,-27666,-17587,-27648,-17616,-27630,-17644,-27612,-17672,-27594,-17700,-27576,-17728,-27558,-17757,-27539,-17785,-27521,-17813,-27503,-17841,-27485,-17869,-27467,-17897,-27448,-17925,-27430,-17953,-27412,-17981,-27393,-18009,-27375,-18037,-27356,-18065,-27338,-18093,-27320,-18121,-27301,-18149,-27282,-18177,-27264,-18205,-27245,-18233,-27227,-18261,-27208,-18288,-27189,-18316,-27171,-18344,-27152,-18372,-27133,-18399,-27114,-18427,-27095,-18455,-27077,-18483,-27058,-18510,-27039,-18538,-27020,-18565,-27001,-18593,-26982,-18621,-26963,-18648,-26944,-18676,-26925,-18703,-26906,-18731,-26886,-18758,-26867,-18786,-26848,-18813,-26829,-18841,-26810,-18868,-26790,-18895,-26771,-18923,-26752,-18950,-26732,-18977,-26713,-19005,-26693,-19032,-26674,-19059,-26655,-19087,-26635,-19114,-26616,-19141,-26596,-19168,-26576,-19195,-26557,-19222,-26537,-19250,-26517,-19277,-26498,-19304,-26478,-19331,-26458,-19358,-26438,-19385,-26419,-19412,-26399,-19439,-26379,-19466,-26359,-19493,-26339,-19520,-26319,-19547,-26299,-19574,-26279,-19600,-26259,-19627,-26239,-19654,-26219,-19681,-26199,-19708,-26179,-19734,-26159,-19761,-26138,-19788,-26118,-19815,-26098,-19841,-26078,-19868,-26057,-19895,-26037,-19921,-26017,-19948,-25996,-19974,-25976,-20001,-25955,-20027,-25935,-20054,-25914,-20080,-25894,-20107,-25873,-20133,-25853,-20160,-25832,-20186,-25812,-20213,-25791,-20239,-25770,-20265,-25750,-20292,-25729,-20318,-25708,-20344,-25687,-20370,-25666,-20397,-25646,-20423,-25625,-20449,-25604,-20475,-25583,-20501,-25562,-20528,-25541,-20554,-25520,-20580,-25499,-20606,-25478,-20632,-25457,-20658,-25436,-20684,-25415,-20710,-25393,-20736,-25372,-20762,-25351,-20788,-25330,-20814,-25308,-20839,-25287,-20865,-25266,-20891,-25244,-20917,-25223,-20943,-25202,-20968,-25180,-20994,-25159,-21020,-25137,-21046,-25116,-21071,-25094,-21097,-25073,-21123,-25051,-21148,-25030,-21174,-25008,-21199,-24986,-21225,-24965,-21250,-24943,-21276,-24921,-21301,-24899,-21327,-24878,-21352,-24856,-21378,-24834,-21403,-24812,-21428,-24790,-21454,-24768,-21479,-24746,-21504,-24724,-21530,-24702,-21555,-24680,-21580,-24658,-21605,-24636,-21630,-24614,-21656,-24592,-21681,-24570,-21706,-24547,-21731,-24525,-21756,-24503,-21781,-24481,-21806,-24458,-21831,-24436,-21856,-24414,-21881,-24391,-21906,-24369,-21931,-24347,-21956,-24324,-21981,-24302,-22005,-24279,-22030,-24257,-22055,-24234,-22080,-24212,-22105,-24189,-22129,-24166,-22154,-24144,-22179,-24121,-22203,-24098,-22228,-24076,-22253,-24053,-22277,-24030,-22302,-24007,-22326,-23985,-22351,-23962,-22375,-23939,-22400,-23916,-22424,-23893,-22449,-23870,-22473,-23847,-22497,-23824,-22522,-23801,-22546,-23778,-22570,-23755,-22595,-23732,-22619,-23709,-22643,-23686,-22667,-23662,-22692,-23639,-22716,-23616,-22740,-23593,-22764,-23570,-22788,-23546,-22812,-23523,-22836,-23500,-22860,-23476,-22884,-23453,-22908,-23429,-22932,-23406,-22956,-23383,-22980,-23359,-23004,-23336,-23028,-23312,-23051,-23288,-23075,-23265,-23099,-23241,-23123,-23218,-23147,-23194,-23170,-23170,-23194,-23147,-23218,-23123,-23241,-23099,-23265,-23075,-23288,-23051,-23312,-23028,-23336,-23004,-23359,-22980,-23383,-22956,-23406,-22932,-23429,-22908,-23453,-22884,-23476,-22860,-23500,-22836,-23523,-22812,-23546,-22788,-23570,-22764,-23593,-22740,-23616,-22716,-23639,-22692,-23662,-22667,-23686,-22643,-23709,-22619,-23732,-22595,-23755,-22570,-23778,-22546,-23801,-22522,-23824,-22497,-23847,-22473,-23870,-22449,-23893,-22424,-23916,-22400,-23939,-22375,-23962,-22351,-23985,-22326,-24007,-22302,-24030,-22277,-24053,-22253,-24076,-22228,-24098,-22203,-24121,-22179,-24144,-22154,-24166,-22129,-24189,-22105,-24212,-22080,-24234,-22055,-24257,-22030,-24279,-22005,-24302,-21981,-24324,-21956,-24347,-21931,-24369,-21906,-24391,-21881,-24414,-21856,-24436,-21831,-24458,-21806,-24481,-21781,-24503,-21756,-24525,-21731,-24547,-21706,-24570,-21681,-24592,-21656,-24614,-21630,-24636,-21605,-24658,-21580,-24680,-21555,-24702,-21530,-24724,-21504,-24746,-21479,-24768,-21454,-24790,-21428,-24812,-21403,-24834,-21378,-24856,-21352,-24878,-21327,-24899,-21301,-24921,-21276,-24943,-21250,-24965,-21225,-24986,-21199,-25008,-21174,-25030,-21148,-25051,-21123,-25073,-21097,-25094,-21071,-25116,-21046,-25137,-21020,-25159,-20994,-25180,-20968,-25202,-20943,-25223,-20917,-25244,-20891,-25266,-20865,-25287,-20839,-25308,-20814,-25330,-20788,-25351,-20762,-25372,-20736,-25393,-20710,-25415,-20684,-25436,-20658,-25457,-20632,-25478,-20606,-25499,-20580,-25520,-20554,-25541,-20528,-25562,-20501,-25583,-20475,-25604,-20449,-25625,-20423,-25646,-20397,-25666,-20370,-25687,-20344,-25708,-20318,-25729,-20292,-25750,-20265,-25770,-20239,-25791,-20213,-25812,-20186,-25832,-20160,-25853,-20133,-25873,-20107,-25894,-20080,-25914,-20054,-25935,-20027,-25955,-20001,-25976,-19974,-25996,-19948,-26017,-19921,-26037,-19895,-26057,-19868,-26078,-19841,-26098,-19815,-26118,-19788,-26138,-19761,-26159,-19734,-26179,-19708,-26199,-19681,-26219,-19654,-26239,-19627,-26259,-19600,-26279,-19574,-26299,-19547,-26319,-19520,-26339,-19493,-26359,-19466,-26379,-19439,-26399,-19412,-26419,-19385,-26438,-19358,-26458,-19331,-26478,-19304,-26498,-19277,-26517,-19250,-26537,-19222,-26557,-19195,-26576,-19168,-26596,-19141,-26616,-19114,-26635,-19087,-26655,-19059,-26674,-19032,-26693,-19005,-26713,-18977,-26732,-18950,-26752,-18923,-26771,-18895,-26790,-18868,-26810,-18841,-26829,-18813,-26848,-18786,-26867,-18758,-26886,-18731,-26906,-18703,-26925,-18676,-26944,-18648,-26963,-18621,-26982,-18593,-27001,-18565,-27020,-18538,-27039,-18510,-27058,-18483,-27077,-18455,-27095,-18427,-27114,-18399,-27133,-18372,-27152,-18344,-27171,-18316,-27189,-18288,-27208,-18261,-27227,-18233,-27245,-18205,-27264,-18177,-27282,-18149,-27301,-18121,-27320,-18093,-27338,-18065,-27356,-18037,-27375,-18009,-27393,-17981,-27412,-17953,-27430,-17925,-27448,-17897,-27467,-17869,-27485,-17841,-27503,-17813,-27521,-17785,-27539,-17757,-27558,-17728,-27576,-17700,-27594,-17672,-27612,-17644,-27630,-17616,-27648,-17587,-27666,-17559,-27684,-17531,-27702,-17502,-27720,-17474,-27737,-17446,-27755,-17417,-27773,-17389,-27791,-17361,-27809,-17332,-27826,-17304,-27844,-17275,-27862,-17247,-27879,-17218,-27897,-17190,-27914,-17161,-27932,-17133,-27949,-17104,-27967,-17075,-27984,-17047,-28002,-17018,-28019,-16990,-28037,-16961,-28054,-16932,-28071,-16904,-28088,-16875,-28106,-16846,-28123,-16817,-28140,-16789,-28157,-16760,-28174,-16731,-28191,-16702,-28209,-16673,-28226,-16644,-28243,-16616,-28260,-16587,-28276,-16558,-28293,-16529,-28310,-16500,-28327,-16471,-28344,-16442,-28361,-16413,-28378,-16384,-28394,-16355,-28411,-16326,-28428,-16297,-28444,-16268,-28461,-16239,-28478,-16210,-28494,-16180,-28511,-16151,-28527,-16122,-28544,-16093,-28560,-16064,-28576,-16035,-28593,-16005,-28609,-15976,-28626,-15947,-28642,-15918,-28658,-15888,-28674,-15859,-28691,-15830,-28707,-15800,-28723,-15771,-28739,-15741,-28755,-15712,-28771,-15683,-28787,-15653,-28803,-15624,-28819,-15594,-28835,-15565,-28851,-15535,-28867,-15506,-28883,-15476,-28898,-15447,-28914,-15417,-28930,-15388,-28946,-15358,-28961,-15328,-28977,-15299,-28993,-15269,-29008,-15239,-29024,-15210,-29039,-15180,-29055,-15150,-29070,-15121,-29086,-15091,-29101,-15061,-29117,-15031,-29132,-15002,-29147,-14972,-29163,-14942,-29178,-14912,-29193,-14882,-29208,-14853,-29223,-14823,-29239,-14793,-29254,-14763,-29269,-14733,-29284,-14703,-29299,-14673,-29314,-14643,-29329,-14613,-29344,-14583,-29359,-14553,-29373,-14523,-29388,-14493,-29403,-14463,-29418,-14433,-29433,-14403,-29447,-14373,-29462,-14343,-29477,-14312,-29491,-14282,-29506,-14252,-29520,-14222,-29535,-14192,-29549,-14161,-29564,-14131,-29578,-14101,-29593,-14071,-29607,-14040,-29622,-14010,-29636,-13980,-29650,-13950,-29664,-13919,-29679,-13889,-29693,-13859,-29707,-13828,-29721,-13798,-29735,-13767,-29749,-13737,-29763,-13707,-29777,-13676,-29791,-13646,-29805,-13615,-29819,-13585,-29833,-13554,-29847,-13524,-29861,-13493,-29874,-13463,-29888,-13432,-29902,-13401,-29916,-13371,-29929,-13340,-29943,-13310,-29956,-13279,-29970,-13248,-29984,-13218,-29997,-13187,-30010,-13156,-30024,-13126,-30037,-13095,-30051,-13064,-30064,-13034,-30077,-13003,-30091,-12972,-30104,-12941,-30117,-12910,-30130,-12880,-30143,-12849,-30157,-12818,-30170,-12787,-30183,-12756,-30196,-12725,-30209,-12695,-30222,-12664,-30235,-12633,-30248,-12602,-30260,-12571,-30273,-12540,-30286,-12509,-30299,-12478,-30312,-12447,-30324,-12416,-30337,-12385,-30350,-12354,-30362,-12323,-30375,-12292,-30387,-12261,-30400,-12230,-30412,-12199,-30425,-12167,-30437,-12136,-30450,-12105,-30462,-12074,-30474,-12043,-30487,-12012,-30499,-11981,-30511,-11949,-30523,-11918,-30536,-11887,-30548,-11856,-30560,-11824,-30572,-11793,-30584,-11762,-30596,-11731,-30608,-11699,-30620,-11668,-30632,-11637,-30644,-11605,-30656,-11574,-30667,-11543,-30679,-11511,-30691,-11480,-30703,-11449,-30714,-11417,-30726,-11386,-30738,-11354,-30749,-11323,-30761,-11291,-30772,-11260,-30784,-11228,-30795,-11197,-30807,-11165,-30818,-11134,-30829,-11102,-30841,-11071,-30852,-11039,-30863,-11008,-30875,-10976,-30886,-10945,-30897,-10913,-30908,-10881,-30919,-10850,-30930,-10818,-30941,-10787,-30952,-10755,-30963,-10723,-30974,-10692,-30985,-10660,-30996,-10628,-31007,-10597,-31018,-10565,-31029,-10533,-31039,-10501,-31050,-10470,-31061,-10438,-31071,-10406,-31082,-10374,-31093,-10343,-31103,-10311,-31114,-10279,-31124,-10247,-31135,-10215,-31145,-10183,-31155,-10152,-31166,-10120,-31176,-10088,-31186,-10056,-31197,-10024,-31207,-9992,-31217,-9960,-31227,-9928,-31237,-9896,-31248,-9864,-31258,-9832,-31268,-9800,-31278,-9768,-31288,-9736,-31298,-9704,-31308,-9672,-31317,-9640,-31327,-9608,-31337,-9576,-31347,-9544,-31357,-9512,-31366,-9480,-31376,-9448,-31386,-9416,-31395,-9384,-31405,-9352,-31414,-9320,-31424,-9288,-31433,-9255,-31443,-9223,-31452,-9191,-31462,-9159,-31471,-9127,-31480,-9095,-31490,-9062,-31499,-9030,-31508,-8998,-31517,-8966,-31526,-8933,-31535,-8901,-31545,-8869,-31554,-8837,-31563,-8804,-31572,-8772,-31581,-8740,-31589,-8708,-31598,-8675,-31607,-8643,-31616,-8611,-31625,-8578,-31634,-8546,-31642,-8514,-31651,-8481,-31660,-8449,-31668,-8416,-31677,-8384,-31685,-8352,-31694,-8319,-31702,-8287,-31711,-8254,-31719,-8222,-31728,-8190,-31736,-8157,-31744,-8125,-31753,-8092,-31761,-8060,-31769,-8027,-31777,-7995,-31786,-7962,-31794,-7930,-31802,-7897,-31810,-7865,-31818,-7832,-31826,-7800,-31834,-7767,-31842,-7734,-31850,-7702,-31857,-7669,-31865,-7637,-31873,-7604,-31881,-7572,-31889,-7539,-31896,-7506,-31904,-7474,-31912,-7441,-31919,-7408,-31927,-7376,-31934,-7343,-31942,-7311,-31949,-7278,-31957,-7245,-31964,-7212,-31971,-7180,-31979,-7147,-31986,-7114,-31993,-7082,-32000,-7049,-32008,-7016,-32015,-6983,-32022,-6951,-32029,-6918,-32036,-6885,-32043,-6852,-32050,-6820,-32057,-6787,-32064,-6754,-32071,-6721,-32078,-6689,-32085,-6656,-32091,-6623,-32098,-6590,-32105,-6557,-32111,-6524,-32118,-6492,-32125,-6459,-32131,-6426,-32138,-6393,-32144,-6360,-32151,-6327,-32157,-6294,-32164,-6262,-32170,-6229,-32177,-6196,-32183,-6163,-32189,-6130,-32195,-6097,-32202,-6064,-32208,-6031,-32214,-5998,-32220,-5965,-32226,-5932,-32232,-5899,-32238,-5866,-32244,-5833,-32250,-5800,-32256,-5767,-32262,-5734,-32268,-5701,-32274,-5668,-32279,-5635,-32285,-5602,-32291,-5569,-32296,-5536,-32302,-5503,-32308,-5470,-32313,-5437,-32319,-5404,-32324,-5371,-32330,-5338,-32335,-5305,-32341,-5272,-32346,-5239,-32351,-5206,-32357,-5173,-32362,-5140,-32367,-5107,-32372,-5073,-32378,-5040,-32383,-5007,-32388,-4974,-32393,-4941,-32398,-4908,-32403,-4875,-32408,-4842,-32413,-4808,-32418,-4775,-32423,-4742,-32427,-4709,-32432,-4676,-32437,-4643,-32442,-4609,-32446,-4576,-32451,-4543,-32456,-4510,-32460,-4477,-32465,-4444,-32469,-4410,-32474,-4377,-32478,-4344,-32483,-4311,-32487,-4277,-32492,-4244,-32496,-4211,-32500,-4178,-32504,-4145,-32509,-4111,-32513,-4078,-32517,-4045,-32521,-4012,-32525,-3978,-32529,-3945,-32533,-3912,-32537,-3878,-32541,-3845,-32545,-3812,-32549,-3779,-32553,-3745,-32557,-3712,-32560,-3679,-32564,-3645,-32568,-3612,-32572,-3579,-32575,-3546,-32579,-3512,-32582,-3479,-32586,-3446,-32589,-3412,-32593,-3379,-32596,-3346,-32600,-3312,-32603,-3279,-32606,-3246,-32610,-3212,-32613,-3179,-32616,-3146,-32619,-3112,-32623,-3079,-32626,-3045,-32629,-3012,-32632,-2979,-32635,-2945,-32638,-2912,-32641,-2879,-32644,-2845,-32647,-2812,-32650,-2778,-32652,-2745,-32655,-2712,-32658,-2678,-32661,-2645,-32663,-2611,-32666,-2578,-32669,-2545,-32671,-2511,-32674,-2478,-32676,-2444,-32679,-2411,-32681,-2378,-32684,-2344,-32686,-2311,-32688,-2277,-32691,-2244,-32693,-2210,-32695,-2177,-32697,-2144,-32700,-2110,-32702,-2077,-32704,-2043,-32706,-2010,-32708,-1976,-32710,-1943,-32712,-1909,-32714,-1876,-32716,-1843,-32718,-1809,-32719,-1776,-32721,-1742,-32723,-1709,-32725,-1675,-32726,-1642,-32728,-1608,-32730,-1575,-32731,-1541,-32733,-1508,-32734,-1474,-32736,-1441,-32737,-1407,-32739,-1374,-32740,-1340,-32741,-1307,-32743,-1274,-32744,-1240,-32745,-1207,-32747,-1173,-32748,-1140,-32749,-1106,-32750,-1073,-32751,-1039,-32752,-1006,-32753,-972,-32754,-939,-32755,-905,-32756,-872,-32757,-838,-32758,-805,-32758,-771,-32759,-738,-32760,-704,-32761,-671,-32761,-637,-32762,-604,-32763,-570,-32763,-537,-32764,-503,-32764,-470,-32765,-436,-32765,-403,-32765,-369,-32766,-336,-32766,-302,-32766,-269,-32767,-235,-32767,-202,-32767,-168,-32767,-135,-32767,-101,-32767,-68,-32767,-34,-32767,-1,-32767,33,-32767,67,-32767,100,-32767,134,-32767,167,-32767,201,-32767,234,-32766,268,-32766,301,-32766,335,-32765,368,-32765,402,-32765,435,-32764,469,-32764,502,-32763,536,-32763,569,-32762,603,-32761,636,-32761,670,-32760,703,-32759,737,-32758,770,-32758,804,-32757,837,-32756,871,-32755,904,-32754,938,-32753,971,-32752,1005,-32751,1038,-32750,1072,-32749,1105,-32748,1139,-32747,1172,-32745,1206,-32744,1239,-32743,1273,-32741,1306,-32740,1339,-32739,1373,-32737,1406,-32736,1440,-32734,1473,-32733,1507,-32731,1540,-32730,1574,-32728,1607,-32726,1641,-32725,1674,-32723,1708,-32721,1741,-32719,1775,-32718,1808,-32716,1842,-32714,1875,-32712,1908,-32710,1942,-32708,1975,-32706,2009,-32704,2042,-32702,2076,-32700,2109,-32697,2143,-32695,2176,-32693,2209,-32691,2243,-32688,2276,-32686,2310,-32684,2343,-32681,2377,-32679,2410,-32676,2443,-32674,2477,-32671,2510,-32669,2544,-32666,2577,-32663,2610,-32661,2644,-32658,2677,-32655,2711,-32652,2744,-32650,2777,-32647,2811,-32644,2844,-32641,2878,-32638,2911,-32635,2944,-32632,2978,-32629,3011,-32626,3044,-32623,3078,-32619,3111,-32616,3145,-32613,3178,-32610,3211,-32606,3245,-32603,3278,-32600,3311,-32596,3345,-32593,3378,-32589,3411,-32586,3445,-32582,3478,-32579,3511,-32575,3545,-32572,3578,-32568,3611,-32564,3644,-32560,3678,-32557,3711,-32553,3744,-32549,3778,-32545,3811,-32541,3844,-32537,3877,-32533,3911,-32529,3944,-32525,3977,-32521,4011,-32517,4044,-32513,4077,-32509,4110,-32504,4144,-32500,4177,-32496,4210,-32492,4243,-32487,4276,-32483,4310,-32478,4343,-32474,4376,-32469,4409,-32465,4443,-32460,4476,-32456,4509,-32451,4542,-32446,4575,-32442,4608,-32437,4642,-32432,4675,-32427,4708,-32423,4741,-32418,4774,-32413,4807,-32408,4841,-32403,4874,-32398,4907,-32393,4940,-32388,4973,-32383,5006,-32378,5039,-32372,5072,-32367,5106,-32362,5139,-32357,5172,-32351,5205,-32346,5238,-32341,5271,-32335,5304,-32330,5337,-32324,5370,-32319,5403,-32313,5436,-32308,5469,-32302,5502,-32296,5535,-32291,5568,-32285,5601,-32279,5634,-32274,5667,-32268,5700,-32262,5733,-32256,5766,-32250,5799,-32244,5832,-32238,5865,-32232,5898,-32226,5931,-32220,5964,-32214,5997,-32208,6030,-32202,6063,-32195,6096,-32189,6129,-32183,6162,-32177,6195,-32170,6228,-32164,6261,-32157,6293,-32151,6326,-32144,6359,-32138,6392,-32131,6425,-32125,6458,-32118,6491,-32111,6523,-32105,6556,-32098,6589,-32091,6622,-32085,6655,-32078,6688,-32071,6720,-32064,6753,-32057,6786,-32050,6819,-32043,6851,-32036,6884,-32029,6917,-32022,6950,-32015,6982,-32008,7015,-32000,7048,-31993,7081,-31986,7113,-31979,7146,-31971,7179,-31964,7211,-31957,7244,-31949,7277,-31942,7310,-31934,7342,-31927,7375,-31919,7407,-31912,7440,-31904,7473,-31896,7505,-31889,7538,-31881,7571,-31873,7603,-31865,7636,-31857,7668,-31850,7701,-31842,7733,-31834,7766,-31826,7799,-31818,7831,-31810,7864,-31802,7896,-31794,7929,-31786,7961,-31777,7994,-31769,8026,-31761,8059,-31753,8091,-31744,8124,-31736,8156,-31728,8189,-31719,8221,-31711,8253,-31702,8286,-31694,8318,-31685,8351,-31677,8383,-31668,8415,-31660,8448,-31651,8480,-31642,8513,-31634,8545,-31625,8577,-31616,8610,-31607,8642,-31598,8674,-31589,8707,-31581,8739,-31572,8771,-31563,8803,-31554,8836,-31545,8868,-31535,8900,-31526,8932,-31517,8965,-31508,8997,-31499,9029,-31490,9061,-31480,9094,-31471,9126,-31462,9158,-31452,9190,-31443,9222,-31433,9254,-31424,9287,-31414,9319,-31405,9351,-31395,9383,-31386,9415,-31376,9447,-31366,9479,-31357,9511,-31347,9543,-31337,9575,-31327,9607,-31317,9639,-31308,9671,-31298,9703,-31288,9735,-31278,9767,-31268,9799,-31258,9831,-31248,9863,-31237,9895,-31227,9927,-31217,9959,-31207,9991,-31197,10023,-31186,10055,-31176,10087,-31166,10119,-31155,10151,-31145,10182,-31135,10214,-31124,10246,-31114,10278,-31103,10310,-31093,10342,-31082,10373,-31071,10405,-31061,10437,-31050,10469,-31039,10500,-31029,10532,-31018,10564,-31007,10596,-30996,10627,-30985,10659,-30974,10691,-30963,10722,-30952,10754,-30941,10786,-30930,10817,-30919,10849,-30908,10880,-30897,10912,-30886,10944,-30875,10975,-30863,11007,-30852,11038,-30841,11070,-30829,11101,-30818,11133,-30807,11164,-30795,11196,-30784,11227,-30772,11259,-30761,11290,-30749,11322,-30738,11353,-30726,11385,-30714,11416,-30703,11448,-30691,11479,-30679,11510,-30667,11542,-30656,11573,-30644,11604,-30632,11636,-30620,11667,-30608,11698,-30596,11730,-30584,11761,-30572,11792,-30560,11823,-30548,11855,-30536,11886,-30523,11917,-30511,11948,-30499,11980,-30487,12011,-30474,12042,-30462,12073,-30450,12104,-30437,12135,-30425,12166,-30412,12198,-30400,12229,-30387,12260,-30375,12291,-30362,12322,-30350,12353,-30337,12384,-30324,12415,-30312,12446,-30299,12477,-30286,12508,-30273,12539,-30260,12570,-30248,12601,-30235,12632,-30222,12663,-30209,12694,-30196,12724,-30183,12755,-30170,12786,-30157,12817,-30143,12848,-30130,12879,-30117,12909,-30104,12940,-30091,12971,-30077,13002,-30064,13033,-30051,13063,-30037,13094,-30024,13125,-30010,13155,-29997,13186,-29984,13217,-29970,13247,-29956,13278,-29943,13309,-29929,13339,-29916,13370,-29902,13400,-29888,13431,-29874,13462,-29861,13492,-29847,13523,-29833,13553,-29819,13584,-29805,13614,-29791,13645,-29777,13675,-29763,13706,-29749,13736,-29735,13766,-29721,13797,-29707,13827,-29693,13858,-29679,13888,-29664,13918,-29650,13949,-29636,13979,-29622,14009,-29607,14039,-29593,14070,-29578,14100,-29564,14130,-29549,14160,-29535,14191,-29520,14221,-29506,14251,-29491,14281,-29477,14311,-29462,14342,-29447,14372,-29433,14402,-29418,14432,-29403,14462,-29388,14492,-29373,14522,-29359,14552,-29344,14582,-29329,14612,-29314,14642,-29299,14672,-29284,14702,-29269,14732,-29254,14762,-29239,14792,-29223,14822,-29208,14852,-29193,14881,-29178,14911,-29163,14941,-29147,14971,-29132,15001,-29117,15030,-29101,15060,-29086,15090,-29070,15120,-29055,15149,-29039,15179,-29024,15209,-29008,15238,-28993,15268,-28977,15298,-28961,15327,-28946,15357,-28930,15387,-28914,15416,-28898,15446,-28883,15475,-28867,15505,-28851,15534,-28835,15564,-28819,15593,-28803,15623,-28787,15652,-28771,15682,-28755,15711,-28739,15740,-28723,15770,-28707,15799,-28691,15829,-28674,15858,-28658,15887,-28642,15917,-28626,15946,-28609,15975,-28593,16004,-28576,16034,-28560,16063,-28544,16092,-28527,16121,-28511,16150,-28494,16179,-28478,16209,-28461,16238,-28444,16267,-28428,16296,-28411,16325,-28394,16354,-28378,16383,-28361,16412,-28344,16441,-28327,16470,-28310,16499,-28293,16528,-28276,16557,-28260,16586,-28243,16615,-28226,16643,-28209,16672,-28191,16701,-28174,16730,-28157,16759,-28140,16788,-28123,16816,-28106,16845,-28088,16874,-28071,16903,-28054,16931,-28037,16960,-28019,16989,-28002,17017,-27984,17046,-27967,17074,-27949,17103,-27932,17132,-27914,17160,-27897,17189,-27879,17217,-27862,17246,-27844,17274,-27826,17303,-27809,17331,-27791,17360,-27773,17388,-27755,17416,-27737,17445,-27720,17473,-27702,17501,-27684,17530,-27666,17558,-27648,17586,-27630,17615,-27612,17643,-27594,17671,-27576,17699,-27558,17727,-27539,17756,-27521,17784,-27503,17812,-27485,17840,-27467,17868,-27448,17896,-27430,17924,-27412,17952,-27393,17980,-27375,18008,-27356,18036,-27338,18064,-27320,18092,-27301,18120,-27282,18148,-27264,18176,-27245,18204,-27227,18232,-27208,18260,-27189,18287,-27171,18315,-27152,18343,-27133,18371,-27114,18398,-27095,18426,-27077,18454,-27058,18482,-27039,18509,-27020,18537,-27001,18564,-26982,18592,-26963,18620,-26944,18647,-26925,18675,-26906,18702,-26886,18730,-26867,18757,-26848,18785,-26829,18812,-26810,18840,-26790,18867,-26771,18894,-26752,18922,-26732,18949,-26713,18976,-26693,19004,-26674,19031,-26655,19058,-26635,19086,-26616,19113,-26596,19140,-26576,19167,-26557,19194,-26537,19221,-26517,19249,-26498,19276,-26478,19303,-26458,19330,-26438,19357,-26419,19384,-26399,19411,-26379,19438,-26359,19465,-26339,19492,-26319,19519,-26299,19546,-26279,19573,-26259,19599,-26239,19626,-26219,19653,-26199,19680,-26179,19707,-26159,19733,-26138,19760,-26118,19787,-26098,19814,-26078,19840,-26057,19867,-26037,19894,-26017,19920,-25996,19947,-25976,19973,-25955,20000,-25935,20026,-25914,20053,-25894,20079,-25873,20106,-25853,20132,-25832,20159,-25812,20185,-25791,20212,-25770,20238,-25750,20264,-25729,20291,-25708,20317,-25687,20343,-25666,20369,-25646,20396,-25625,20422,-25604,20448,-25583,20474,-25562,20500,-25541,20527,-25520,20553,-25499,20579,-25478,20605,-25457,20631,-25436,20657,-25415,20683,-25393,20709,-25372,20735,-25351,20761,-25330,20787,-25308,20813,-25287,20838,-25266,20864,-25244,20890,-25223,20916,-25202,20942,-25180,20967,-25159,20993,-25137,21019,-25116,21045,-25094,21070,-25073,21096,-25051,21122,-25030,21147,-25008,21173,-24986,21198,-24965,21224,-24943,21249,-24921,21275,-24899,21300,-24878,21326,-24856,21351,-24834,21377,-24812,21402,-24790,21427,-24768,21453,-24746,21478,-24724,21503,-24702,21529,-24680,21554,-24658,21579,-24636,21604,-24614,21629,-24592,21655,-24570,21680,-24547,21705,-24525,21730,-24503,21755,-24481,21780,-24458,21805,-24436,21830,-24414,21855,-24391,21880,-24369,21905,-24347,21930,-24324,21955,-24302,21980,-24279,22004,-24257,22029,-24234,22054,-24212,22079,-24189,22104,-24166,22128,-24144,22153,-24121,22178,-24098,22202,-24076,22227,-24053,22252,-24030,22276,-24007,22301,-23985,22325,-23962,22350,-23939,22374,-23916,22399,-23893,22423,-23870,22448,-23847,22472,-23824,22496,-23801,22521,-23778,22545,-23755,22569,-23732,22594,-23709,22618,-23686,22642,-23662,22666,-23639,22691,-23616,22715,-23593,22739,-23570,22763,-23546,22787,-23523,22811,-23500,22835,-23476,22859,-23453,22883,-23429,22907,-23406,22931,-23383,22955,-23359,22979,-23336,23003,-23312,23027,-23288,23050,-23265,23074,-23241,23098,-23218,23122,-23194,23146,-23170,23169,-23147,23193,-23123,23217,-23099,23240,-23075,23264,-23051,23287,-23028,23311,-23004,23335,-22980,23358,-22956,23382,-22932,23405,-22908,23428,-22884,23452,-22860,23475,-22836,23499,-22812,23522,-22788,23545,-22764,23569,-22740,23592,-22716,23615,-22692,23638,-22667,23661,-22643,23685,-22619,23708,-22595,23731,-22570,23754,-22546,23777,-22522,23800,-22497,23823,-22473,23846,-22449,23869,-22424,23892,-22400,23915,-22375,23938,-22351,23961,-22326,23984,-22302,24006,-22277,24029,-22253,24052,-22228,24075,-22203,24097,-22179,24120,-22154,24143,-22129,24165,-22105,24188,-22080,24211,-22055,24233,-22030,24256,-22005,24278,-21981,24301,-21956,24323,-21931,24346,-21906,24368,-21881,24390,-21856,24413,-21831,24435,-21806,24457,-21781,24480,-21756,24502,-21731,24524,-21706,24546,-21681,24569,-21656,24591,-21630,24613,-21605,24635,-21580,24657,-21555,24679,-21530,24701,-21504,24723,-21479,24745,-21454,24767,-21428,24789,-21403,24811,-21378,24833,-21352,24855,-21327,24877,-21301,24898,-21276,24920,-21250,24942,-21225,24964,-21199,24985,-21174,25007,-21148,25029,-21123,25050,-21097,25072,-21071,25093,-21046,25115,-21020,25136,-20994,25158,-20968,25179,-20943,25201,-20917,25222,-20891,25243,-20865,25265,-20839,25286,-20814,25307,-20788,25329,-20762,25350,-20736,25371,-20710,25392,-20684,25414,-20658,25435,-20632,25456,-20606,25477,-20580,25498,-20554,25519,-20528,25540,-20501,25561,-20475,25582,-20449,25603,-20423,25624,-20397,25645,-20370,25665,-20344,25686,-20318,25707,-20292,25728,-20265,25749,-20239,25769,-20213,25790,-20186,25811,-20160,25831,-20133,25852,-20107,25872,-20080,25893,-20054,25913,-20027,25934,-20001,25954,-19974,25975,-19948,25995,-19921,26016,-19895,26036,-19868,26056,-19841,26077,-19815,26097,-19788,26117,-19761,26137,-19734,26158,-19708,26178,-19681,26198,-19654,26218,-19627,26238,-19600,26258,-19574,26278,-19547,26298,-19520,26318,-19493,26338,-19466,26358,-19439,26378,-19412,26398,-19385,26418,-19358,26437,-19331,26457,-19304,26477,-19277,26497,-19250,26516,-19222,26536,-19195,26556,-19168,26575,-19141,26595,-19114,26615,-19087,26634,-19059,26654,-19032,26673,-19005,26692,-18977,26712,-18950,26731,-18923,26751,-18895,26770,-18868,26789,-18841,26809,-18813,26828,-18786,26847,-18758,26866,-18731,26885,-18703,26905,-18676,26924,-18648,26943,-18621,26962,-18593,26981,-18565,27000,-18538,27019,-18510,27038,-18483,27057,-18455,27076,-18427,27094,-18399,27113,-18372,27132,-18344,27151,-18316,27170,-18288,27188,-18261,27207,-18233,27226,-18205,27244,-18177,27263,-18149,27281,-18121,27300,-18093,27319,-18065,27337,-18037,27355,-18009,27374,-17981,27392,-17953,27411,-17925,27429,-17897,27447,-17869,27466,-17841,27484,-17813,27502,-17785,27520,-17757,27538,-17728,27557,-17700,27575,-17672,27593,-17644,27611,-17616,27629,-17587,27647,-17559,27665,-17531,27683,-17502,27701,-17474,27719,-17446,27736,-17417,27754,-17389,27772,-17361,27790,-17332,27808,-17304,27825,-17275,27843,-17247,27861,-17218,27878,-17190,27896,-17161,27913,-17133,27931,-17104,27948,-17075,27966,-17047,27983,-17018,28001,-16990,28018,-16961,28036,-16932,28053,-16904,28070,-16875,28087,-16846,28105,-16817,28122,-16789,28139,-16760,28156,-16731,28173,-16702,28190,-16673,28208,-16644,28225,-16616,28242,-16587,28259,-16558,28275,-16529,28292,-16500,28309,-16471,28326,-16442,28343,-16413,28360};
-
diff --git a/openair1/PHY/TOOLS/twiddle1536.h b/openair1/PHY/TOOLS/twiddle1536.h
deleted file mode 100644
index 304766caaf13fc507afa08a357b82c5562f50dae..0000000000000000000000000000000000000000
--- a/openair1/PHY/TOOLS/twiddle1536.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#include <stdint.h>
-
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(0:511)/1536));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*(0:2:1022)/1536));
-twa2 = zeros(1,1024);
-twb2 = zeros(1,1024);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-
-
- */
-
-int16_t twa1536[1024] __attribute__((aligned(16))) = {32767,0,32766,-135,32765,-269,32764,-403,32762,-537,32760,-671,32757,-805,32753,-939,32749,-1073,32744,-1207,32739,-1340,32733,-1474,32727,-1608,32720,-1742,32713,-1876,32705,-2010,32696,-2144,32687,-2277,32678,-2411,32668,-2545,32657,-2678,32646,-2812,32634,-2945,32622,-3079,32609,-3212,32595,-3346,32581,-3479,32567,-3612,32552,-3745,32536,-3878,32520,-4012,32503,-4145,32486,-4277,32468,-4410,32450,-4543,32431,-4676,32412,-4808,32392,-4941,32371,-5073,32350,-5206,32329,-5338,32307,-5470,32284,-5602,32261,-5734,32237,-5866,32213,-5998,32188,-6130,32163,-6262,32137,-6393,32110,-6524,32084,-6656,32056,-6787,32028,-6918,31999,-7049,31970,-7180,31941,-7311,31911,-7441,31880,-7572,31849,-7702,31817,-7832,31785,-7962,31752,-8092,31718,-8222,31684,-8352,31650,-8481,31615,-8611,31580,-8740,31544,-8869,31507,-8998,31470,-9127,31432,-9255,31394,-9384,31356,-9512,31316,-9640,31277,-9768,31236,-9896,31196,-10024,31154,-10152,31113,-10279,31070,-10406,31028,-10533,30984,-10660,30940,-10787,30896,-10913,30851,-11039,30806,-11165,30760,-11291,30713,-11417,30666,-11543,30619,-11668,30571,-11793,30522,-11918,30473,-12043,30424,-12167,30374,-12292,30323,-12416,30272,-12540,30221,-12664,30169,-12787,30116,-12910,30063,-13034,30009,-13156,29955,-13279,29901,-13401,29846,-13524,29790,-13646,29734,-13767,29678,-13889,29621,-14010,29563,-14131,29505,-14252,29446,-14373,29387,-14493,29328,-14613,29268,-14733,29207,-14853,29146,-14972,29085,-15091,29023,-15210,28960,-15328,28897,-15447,28834,-15565,28770,-15683,28706,-15800,28641,-15918,28575,-16035,28510,-16151,28443,-16268,28377,-16384,28309,-16500,28242,-16616,28173,-16731,28105,-16846,28036,-16961,27966,-17075,27896,-17190,27825,-17304,27754,-17417,27683,-17531,27611,-17644,27538,-17757,27466,-17869,27392,-17981,27319,-18093,27244,-18205,27170,-18316,27094,-18427,27019,-18538,26943,-18648,26866,-18758,26789,-18868,26712,-18977,26634,-19087,26556,-19195,26477,-19304,26398,-19412,26318,-19520,26238,-19627,26158,-19734,26077,-19841,25995,-19948,25913,-20054,25831,-20160,25749,-20265,25665,-20370,25582,-20475,25498,-20580,25414,-20684,25329,-20788,25243,-20891,25158,-20994,25072,-21097,24985,-21199,24898,-21301,24811,-21403,24723,-21504,24635,-21605,24546,-21706,24457,-21806,24368,-21906,24278,-22005,24188,-22105,24097,-22203,24006,-22302,23915,-22400,23823,-22497,23731,-22595,23638,-22692,23545,-22788,23452,-22884,23358,-22980,23264,-23075,23169,-23170,23074,-23265,22979,-23359,22883,-23453,22787,-23546,22691,-23639,22594,-23732,22496,-23824,22399,-23916,22301,-24007,22202,-24098,22104,-24189,22004,-24279,21905,-24369,21805,-24458,21705,-24547,21604,-24636,21503,-24724,21402,-24812,21300,-24899,21198,-24986,21096,-25073,20993,-25159,20890,-25244,20787,-25330,20683,-25415,20579,-25499,20474,-25583,20369,-25666,20264,-25750,20159,-25832,20053,-25914,19947,-25996,19840,-26078,19733,-26159,19626,-26239,19519,-26319,19411,-26399,19303,-26478,19194,-26557,19086,-26635,18976,-26713,18867,-26790,18757,-26867,18647,-26944,18537,-27020,18426,-27095,18315,-27171,18204,-27245,18092,-27320,17980,-27393,17868,-27467,17756,-27539,17643,-27612,17530,-27684,17416,-27755,17303,-27826,17189,-27897,17074,-27967,16960,-28037,16845,-28106,16730,-28174,16615,-28243,16499,-28310,16383,-28378,16267,-28444,16150,-28511,16034,-28576,15917,-28642,15799,-28707,15682,-28771,15564,-28835,15446,-28898,15327,-28961,15209,-29024,15090,-29086,14971,-29147,14852,-29208,14732,-29269,14612,-29329,14492,-29388,14372,-29447,14251,-29506,14130,-29564,14009,-29622,13888,-29679,13766,-29735,13645,-29791,13523,-29847,13400,-29902,13278,-29956,13155,-30010,13033,-30064,12909,-30117,12786,-30170,12663,-30222,12539,-30273,12415,-30324,12291,-30375,12166,-30425,12042,-30474,11917,-30523,11792,-30572,11667,-30620,11542,-30667,11416,-30714,11290,-30761,11164,-30807,11038,-30852,10912,-30897,10786,-30941,10659,-30985,10532,-31029,10405,-31071,10278,-31114,10151,-31155,10023,-31197,9895,-31237,9767,-31278,9639,-31317,9511,-31357,9383,-31395,9254,-31433,9126,-31471,8997,-31508,8868,-31545,8739,-31581,8610,-31616,8480,-31651,8351,-31685,8221,-31719,8091,-31753,7961,-31786,7831,-31818,7701,-31850,7571,-31881,7440,-31912,7310,-31942,7179,-31971,7048,-32000,6917,-32029,6786,-32057,6655,-32085,6523,-32111,6392,-32138,6261,-32164,6129,-32189,5997,-32214,5865,-32238,5733,-32262,5601,-32285,5469,-32308,5337,-32330,5205,-32351,5072,-32372,4940,-32393,4807,-32413,4675,-32432,4542,-32451,4409,-32469,4276,-32487,4144,-32504,4011,-32521,3877,-32537,3744,-32553,3611,-32568,3478,-32582,3345,-32596,3211,-32610,3078,-32623,2944,-32635,2811,-32647,2677,-32658,2544,-32669,2410,-32679,2276,-32688,2143,-32697,2009,-32706,1875,-32714,1741,-32721,1607,-32728,1473,-32734,1339,-32740,1206,-32745,1072,-32750,938,-32754,804,-32758,670,-32761,536,-32763,402,-32765,268,-32766,134,-32767,0,-32767,-135,-32767,-269,-32766,-403,-32765,-537,-32763,-671,-32761,-805,-32758,-939,-32754,-1073,-32750,-1207,-32745,-1340,-32740,-1474,-32734,-1608,-32728,-1742,-32721,-1876,-32714,-2010,-32706,-2144,-32697,-2277,-32688,-2411,-32679,-2545,-32669,-2678,-32658,-2812,-32647,-2945,-32635,-3079,-32623,-3212,-32610,-3346,-32596,-3479,-32582,-3612,-32568,-3745,-32553,-3878,-32537,-4012,-32521,-4145,-32504,-4277,-32487,-4410,-32469,-4543,-32451,-4676,-32432,-4808,-32413,-4941,-32393,-5073,-32372,-5206,-32351,-5338,-32330,-5470,-32308,-5602,-32285,-5734,-32262,-5866,-32238,-5998,-32214,-6130,-32189,-6262,-32164,-6393,-32138,-6524,-32111,-6656,-32085,-6787,-32057,-6918,-32029,-7049,-32000,-7180,-31971,-7311,-31942,-7441,-31912,-7572,-31881,-7702,-31850,-7832,-31818,-7962,-31786,-8092,-31753,-8222,-31719,-8352,-31685,-8481,-31651,-8611,-31616,-8740,-31581,-8869,-31545,-8998,-31508,-9127,-31471,-9255,-31433,-9384,-31395,-9512,-31357,-9640,-31317,-9768,-31278,-9896,-31237,-10024,-31197,-10152,-31155,-10279,-31114,-10406,-31071,-10533,-31029,-10660,-30985,-10787,-30941,-10913,-30897,-11039,-30852,-11165,-30807,-11291,-30761,-11417,-30714,-11543,-30667,-11668,-30620,-11793,-30572,-11918,-30523,-12043,-30474,-12167,-30425,-12292,-30375,-12416,-30324,-12540,-30273,-12664,-30222,-12787,-30170,-12910,-30117,-13034,-30064,-13156,-30010,-13279,-29956,-13401,-29902,-13524,-29847,-13646,-29791,-13767,-29735,-13889,-29679,-14010,-29622,-14131,-29564,-14252,-29506,-14373,-29447,-14493,-29388,-14613,-29329,-14733,-29269,-14853,-29208,-14972,-29147,-15091,-29086,-15210,-29024,-15328,-28961,-15447,-28898,-15565,-28835,-15683,-28771,-15800,-28707,-15918,-28642,-16035,-28576,-16151,-28511,-16268,-28444};
-
-int16_t twb1536[1024] __attribute__((aligned(16))) = {32767,0,32765,-269,32762,-537,32757,-805,32749,-1073,32739,-1340,32727,-1608,32713,-1876,32696,-2144,32678,-2411,32657,-2678,32634,-2945,32609,-3212,32581,-3479,32552,-3745,32520,-4012,32486,-4277,32450,-4543,32412,-4808,32371,-5073,32329,-5338,32284,-5602,32237,-5866,32188,-6130,32137,-6393,32084,-6656,32028,-6918,31970,-7180,31911,-7441,31849,-7702,31785,-7962,31718,-8222,31650,-8481,31580,-8740,31507,-8998,31432,-9255,31356,-9512,31277,-9768,31196,-10024,31113,-10279,31028,-10533,30940,-10787,30851,-11039,30760,-11291,30666,-11543,30571,-11793,30473,-12043,30374,-12292,30272,-12540,30169,-12787,30063,-13034,29955,-13279,29846,-13524,29734,-13767,29621,-14010,29505,-14252,29387,-14493,29268,-14733,29146,-14972,29023,-15210,28897,-15447,28770,-15683,28641,-15918,28510,-16151,28377,-16384,28242,-16616,28105,-16846,27966,-17075,27825,-17304,27683,-17531,27538,-17757,27392,-17981,27244,-18205,27094,-18427,26943,-18648,26789,-18868,26634,-19087,26477,-19304,26318,-19520,26158,-19734,25995,-19948,25831,-20160,25665,-20370,25498,-20580,25329,-20788,25158,-20994,24985,-21199,24811,-21403,24635,-21605,24457,-21806,24278,-22005,24097,-22203,23915,-22400,23731,-22595,23545,-22788,23358,-22980,23169,-23170,22979,-23359,22787,-23546,22594,-23732,22399,-23916,22202,-24098,22004,-24279,21805,-24458,21604,-24636,21402,-24812,21198,-24986,20993,-25159,20787,-25330,20579,-25499,20369,-25666,20159,-25832,19947,-25996,19733,-26159,19519,-26319,19303,-26478,19086,-26635,18867,-26790,18647,-26944,18426,-27095,18204,-27245,17980,-27393,17756,-27539,17530,-27684,17303,-27826,17074,-27967,16845,-28106,16615,-28243,16383,-28378,16150,-28511,15917,-28642,15682,-28771,15446,-28898,15209,-29024,14971,-29147,14732,-29269,14492,-29388,14251,-29506,14009,-29622,13766,-29735,13523,-29847,13278,-29956,13033,-30064,12786,-30170,12539,-30273,12291,-30375,12042,-30474,11792,-30572,11542,-30667,11290,-30761,11038,-30852,10786,-30941,10532,-31029,10278,-31114,10023,-31197,9767,-31278,9511,-31357,9254,-31433,8997,-31508,8739,-31581,8480,-31651,8221,-31719,7961,-31786,7701,-31850,7440,-31912,7179,-31971,6917,-32029,6655,-32085,6392,-32138,6129,-32189,5865,-32238,5601,-32285,5337,-32330,5072,-32372,4807,-32413,4542,-32451,4276,-32487,4011,-32521,3744,-32553,3478,-32582,3211,-32610,2944,-32635,2677,-32658,2410,-32679,2143,-32697,1875,-32714,1607,-32728,1339,-32740,1072,-32750,804,-32758,536,-32763,268,-32766,0,-32767,-269,-32766,-537,-32763,-805,-32758,-1073,-32750,-1340,-32740,-1608,-32728,-1876,-32714,-2144,-32697,-2411,-32679,-2678,-32658,-2945,-32635,-3212,-32610,-3479,-32582,-3745,-32553,-4012,-32521,-4277,-32487,-4543,-32451,-4808,-32413,-5073,-32372,-5338,-32330,-5602,-32285,-5866,-32238,-6130,-32189,-6393,-32138,-6656,-32085,-6918,-32029,-7180,-31971,-7441,-31912,-7702,-31850,-7962,-31786,-8222,-31719,-8481,-31651,-8740,-31581,-8998,-31508,-9255,-31433,-9512,-31357,-9768,-31278,-10024,-31197,-10279,-31114,-10533,-31029,-10787,-30941,-11039,-30852,-11291,-30761,-11543,-30667,-11793,-30572,-12043,-30474,-12292,-30375,-12540,-30273,-12787,-30170,-13034,-30064,-13279,-29956,-13524,-29847,-13767,-29735,-14010,-29622,-14252,-29506,-14493,-29388,-14733,-29269,-14972,-29147,-15210,-29024,-15447,-28898,-15683,-28771,-15918,-28642,-16151,-28511,-16384,-28378,-16616,-28243,-16846,-28106,-17075,-27967,-17304,-27826,-17531,-27684,-17757,-27539,-17981,-27393,-18205,-27245,-18427,-27095,-18648,-26944,-18868,-26790,-19087,-26635,-19304,-26478,-19520,-26319,-19734,-26159,-19948,-25996,-20160,-25832,-20370,-25666,-20580,-25499,-20788,-25330,-20994,-25159,-21199,-24986,-21403,-24812,-21605,-24636,-21806,-24458,-22005,-24279,-22203,-24098,-22400,-23916,-22595,-23732,-22788,-23546,-22980,-23359,-23170,-23170,-23359,-22980,-23546,-22788,-23732,-22595,-23916,-22400,-24098,-22203,-24279,-22005,-24458,-21806,-24636,-21605,-24812,-21403,-24986,-21199,-25159,-20994,-25330,-20788,-25499,-20580,-25666,-20370,-25832,-20160,-25996,-19948,-26159,-19734,-26319,-19520,-26478,-19304,-26635,-19087,-26790,-18868,-26944,-18648,-27095,-18427,-27245,-18205,-27393,-17981,-27539,-17757,-27684,-17531,-27826,-17304,-27967,-17075,-28106,-16846,-28243,-16616,-28378,-16384,-28511,-16151,-28642,-15918,-28771,-15683,-28898,-15447,-29024,-15210,-29147,-14972,-29269,-14733,-29388,-14493,-29506,-14252,-29622,-14010,-29735,-13767,-29847,-13524,-29956,-13279,-30064,-13034,-30170,-12787,-30273,-12540,-30375,-12292,-30474,-12043,-30572,-11793,-30667,-11543,-30761,-11291,-30852,-11039,-30941,-10787,-31029,-10533,-31114,-10279,-31197,-10024,-31278,-9768,-31357,-9512,-31433,-9255,-31508,-8998,-31581,-8740,-31651,-8481,-31719,-8222,-31786,-7962,-31850,-7702,-31912,-7441,-31971,-7180,-32029,-6918,-32085,-6656,-32138,-6393,-32189,-6130,-32238,-5866,-32285,-5602,-32330,-5338,-32372,-5073,-32413,-4808,-32451,-4543,-32487,-4277,-32521,-4012,-32553,-3745,-32582,-3479,-32610,-3212,-32635,-2945,-32658,-2678,-32679,-2411,-32697,-2144,-32714,-1876,-32728,-1608,-32740,-1340,-32750,-1073,-32758,-805,-32763,-537,-32766,-269,-32767,-1,-32766,268,-32763,536,-32758,804,-32750,1072,-32740,1339,-32728,1607,-32714,1875,-32697,2143,-32679,2410,-32658,2677,-32635,2944,-32610,3211,-32582,3478,-32553,3744,-32521,4011,-32487,4276,-32451,4542,-32413,4807,-32372,5072,-32330,5337,-32285,5601,-32238,5865,-32189,6129,-32138,6392,-32085,6655,-32029,6917,-31971,7179,-31912,7440,-31850,7701,-31786,7961,-31719,8221,-31651,8480,-31581,8739,-31508,8997,-31433,9254,-31357,9511,-31278,9767,-31197,10023,-31114,10278,-31029,10532,-30941,10786,-30852,11038,-30761,11290,-30667,11542,-30572,11792,-30474,12042,-30375,12291,-30273,12539,-30170,12786,-30064,13033,-29956,13278,-29847,13523,-29735,13766,-29622,14009,-29506,14251,-29388,14492,-29269,14732,-29147,14971,-29024,15209,-28898,15446,-28771,15682,-28642,15917,-28511,16150,-28378,16383,-28243,16615,-28106,16845,-27967,17074,-27826,17303,-27684,17530,-27539,17756,-27393,17980,-27245,18204,-27095,18426,-26944,18647,-26790,18867,-26635,19086,-26478,19303,-26319,19519,-26159,19733,-25996,19947,-25832,20159,-25666,20369,-25499,20579,-25330,20787,-25159,20993,-24986,21198,-24812,21402,-24636,21604,-24458,21805,-24279,22004,-24098,22202,-23916,22399,-23732,22594,-23546,22787,-23359,22979,-23170,23169,-22980,23358,-22788,23545,-22595,23731,-22400,23915,-22203,24097,-22005,24278,-21806,24457,-21605,24635,-21403,24811,-21199,24985,-20994,25158,-20788,25329,-20580,25498,-20370,25665,-20160,25831,-19948,25995,-19734,26158,-19520,26318,-19304,26477,-19087,26634,-18868,26789,-18648,26943,-18427,27094,-18205,27244,-17981,27392,-17757,27538,-17531,27683,-17304,27825,-17075,27966,-16846,28105,-16616,28242};
diff --git a/openair1/PHY/TOOLS/twiddle18432.h b/openair1/PHY/TOOLS/twiddle18432.h
deleted file mode 100644
index 696c7f37aeb2fe25dbc4edabc6bccaef1d53fdc7..0000000000000000000000000000000000000000
--- a/openair1/PHY/TOOLS/twiddle18432.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(0:6143)/18432));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*(0:2:12286)/18432));
-twa2 = zeros(1,12288);
-twb2 = zeros(1,12288);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-*/
-
-int16_t twa18432[12288] = {32767,0,32766,-12,32766,-23,32766,-34,32766,-45,32766,-56,32766,-68,32766,-79,32766,-90,32766,-101,32766,-112,32766,-123,32766,-135,32766,-146,32766,-157,32766,-168,32766,-179,32766,-190,32766,-202,32766,-213,32766,-224,32766,-235,32766,-246,32765,-257,32765,-269,32765,-280,32765,-291,32765,-302,32765,-313,32765,-324,32765,-336,32765,-347,32765,-358,32764,-369,32764,-380,32764,-391,32764,-403,32764,-414,32764,-425,32764,-436,32763,-447,32763,-458,32763,-470,32763,-481,32763,-492,32763,-503,32762,-514,32762,-525,32762,-537,32762,-548,32762,-559,32762,-570,32761,-581,32761,-592,32761,-604,32761,-615,32761,-626,32760,-637,32760,-648,32760,-659,32760,-671,32759,-682,32759,-693,32759,-704,32759,-715,32758,-726,32758,-738,32758,-749,32758,-760,32757,-771,32757,-782,32757,-793,32757,-805,32756,-816,32756,-827,32756,-838,32756,-849,32755,-860,32755,-872,32755,-883,32754,-894,32754,-905,32754,-916,32753,-927,32753,-939,32753,-950,32752,-961,32752,-972,32752,-983,32751,-994,32751,-1006,32751,-1017,32750,-1028,32750,-1039,32750,-1050,32749,-1061,32749,-1073,32749,-1084,32748,-1095,32748,-1106,32747,-1117,32747,-1128,32747,-1140,32746,-1151,32746,-1162,32746,-1173,32745,-1184,32745,-1195,32744,-1207,32744,-1218,32743,-1229,32743,-1240,32743,-1251,32742,-1262,32742,-1274,32741,-1285,32741,-1296,32740,-1307,32740,-1318,32740,-1329,32739,-1340,32739,-1352,32738,-1363,32738,-1374,32737,-1385,32737,-1396,32736,-1407,32736,-1419,32735,-1430,32735,-1441,32734,-1452,32734,-1463,32733,-1474,32733,-1486,32732,-1497,32732,-1508,32731,-1519,32731,-1530,32730,-1541,32730,-1553,32729,-1564,32729,-1575,32728,-1586,32728,-1597,32727,-1608,32726,-1619,32726,-1631,32725,-1642,32725,-1653,32724,-1664,32724,-1675,32723,-1686,32723,-1698,32722,-1709,32721,-1720,32721,-1731,32720,-1742,32720,-1753,32719,-1764,32718,-1776,32718,-1787,32717,-1798,32717,-1809,32716,-1820,32715,-1831,32715,-1843,32714,-1854,32713,-1865,32713,-1876,32712,-1887,32711,-1898,32711,-1909,32710,-1921,32710,-1932,32709,-1943,32708,-1954,32708,-1965,32707,-1976,32706,-1987,32706,-1999,32705,-2010,32704,-2021,32703,-2032,32703,-2043,32702,-2054,32701,-2066,32701,-2077,32700,-2088,32699,-2099,32699,-2110,32698,-2121,32697,-2132,32696,-2144,32696,-2155,32695,-2166,32694,-2177,32693,-2188,32693,-2199,32692,-2210,32691,-2222,32690,-2233,32690,-2244,32689,-2255,32688,-2266,32687,-2277,32687,-2288,32686,-2300,32685,-2311,32684,-2322,32683,-2333,32683,-2344,32682,-2355,32681,-2366,32680,-2378,32679,-2389,32679,-2400,32678,-2411,32677,-2422,32676,-2433,32675,-2444,32674,-2456,32674,-2467,32673,-2478,32672,-2489,32671,-2500,32670,-2511,32669,-2522,32668,-2534,32668,-2545,32667,-2556,32666,-2567,32665,-2578,32664,-2589,32663,-2600,32662,-2611,32661,-2623,32661,-2634,32660,-2645,32659,-2656,32658,-2667,32657,-2678,32656,-2689,32655,-2701,32654,-2712,32653,-2723,32652,-2734,32651,-2745,32650,-2756,32649,-2767,32649,-2778,32648,-2790,32647,-2801,32646,-2812,32645,-2823,32644,-2834,32643,-2845,32642,-2856,32641,-2867,32640,-2879,32639,-2890,32638,-2901,32637,-2912,32636,-2923,32635,-2934,32634,-2945,32633,-2956,32632,-2968,32631,-2979,32630,-2990,32629,-3001,32628,-3012,32627,-3023,32626,-3034,32625,-3045,32624,-3057,32623,-3068,32622,-3079,32621,-3090,32619,-3101,32618,-3112,32617,-3123,32616,-3134,32615,-3146,32614,-3157,32613,-3168,32612,-3179,32611,-3190,32610,-3201,32609,-3212,32608,-3223,32607,-3234,32605,-3246,32604,-3257,32603,-3268,32602,-3279,32601,-3290,32600,-3301,32599,-3312,32598,-3323,32596,-3334,32595,-3346,32594,-3357,32593,-3368,32592,-3379,32591,-3390,32590,-3401,32588,-3412,32587,-3423,32586,-3434,32585,-3446,32584,-3457,32583,-3468,32581,-3479,32580,-3490,32579,-3501,32578,-3512,32577,-3523,32575,-3534,32574,-3546,32573,-3557,32572,-3568,32571,-3579,32569,-3590,32568,-3601,32567,-3612,32566,-3623,32564,-3634,32563,-3645,32562,-3657,32561,-3668,32559,-3679,32558,-3690,32557,-3701,32556,-3712,32554,-3723,32553,-3734,32552,-3745,32551,-3756,32549,-3768,32548,-3779,32547,-3790,32545,-3801,32544,-3812,32543,-3823,32541,-3834,32540,-3845,32539,-3856,32538,-3867,32536,-3878,32535,-3890,32534,-3901,32532,-3912,32531,-3923,32530,-3934,32528,-3945,32527,-3956,32526,-3967,32524,-3978,32523,-3989,32521,-4000,32520,-4012,32519,-4023,32517,-4034,32516,-4045,32515,-4056,32513,-4067,32512,-4078,32510,-4089,32509,-4100,32508,-4111,32506,-4122,32505,-4133,32503,-4145,32502,-4156,32501,-4167,32499,-4178,32498,-4189,32496,-4200,32495,-4211,32493,-4222,32492,-4233,32491,-4244,32489,-4255,32488,-4266,32486,-4277,32485,-4289,32483,-4300,32482,-4311,32480,-4322,32479,-4333,32477,-4344,32476,-4355,32474,-4366,32473,-4377,32471,-4388,32470,-4399,32468,-4410,32467,-4421,32465,-4432,32464,-4444,32462,-4455,32461,-4466,32459,-4477,32458,-4488,32456,-4499,32455,-4510,32453,-4521,32452,-4532,32450,-4543,32449,-4554,32447,-4565,32445,-4576,32444,-4587,32442,-4598,32441,-4609,32439,-4621,32438,-4632,32436,-4643,32434,-4654,32433,-4665,32431,-4676,32430,-4687,32428,-4698,32426,-4709,32425,-4720,32423,-4731,32422,-4742,32420,-4753,32418,-4764,32417,-4775,32415,-4786,32413,-4797,32412,-4808,32410,-4819,32409,-4831,32407,-4842,32405,-4853,32404,-4864,32402,-4875,32400,-4886,32399,-4897,32397,-4908,32395,-4919,32394,-4930,32392,-4941,32390,-4952,32389,-4963,32387,-4974,32385,-4985,32383,-4996,32382,-5007,32380,-5018,32378,-5029,32377,-5040,32375,-5051,32373,-5062,32371,-5073,32370,-5084,32368,-5095,32366,-5107,32364,-5118,32363,-5129,32361,-5140,32359,-5151,32357,-5162,32356,-5173,32354,-5184,32352,-5195,32350,-5206,32349,-5217,32347,-5228,32345,-5239,32343,-5250,32341,-5261,32340,-5272,32338,-5283,32336,-5294,32334,-5305,32332,-5316,32331,-5327,32329,-5338,32327,-5349,32325,-5360,32323,-5371,32322,-5382,32320,-5393,32318,-5404,32316,-5415,32314,-5426,32312,-5437,32310,-5448,32309,-5459,32307,-5470,32305,-5481,32303,-5492,32301,-5503,32299,-5514,32297,-5525,32295,-5536,32294,-5547,32292,-5558,32290,-5569,32288,-5580,32286,-5591,32284,-5602,32282,-5613,32280,-5624,32278,-5635,32276,-5646,32274,-5657,32273,-5668,32271,-5679,32269,-5690,32267,-5701,32265,-5712,32263,-5723,32261,-5734,32259,-5745,32257,-5756,32255,-5767,32253,-5778,32251,-5789,32249,-5800,32247,-5811,32245,-5822,32243,-5833,32241,-5844,32239,-5855,32237,-5866,32235,-5877,32233,-5888,32231,-5899,32229,-5910,32227,-5921,32225,-5932,32223,-5943,32221,-5954,32219,-5965,32217,-5976,32215,-5987,32213,-5998,32211,-6009,32209,-6020,32207,-6031,32205,-6042,32203,-6053,32201,-6064,32199,-6075,32196,-6086,32194,-6097,32192,-6108,32190,-6119,32188,-6130,32186,-6141,32184,-6152,32182,-6163,32180,-6174,32178,-6185,32176,-6196,32173,-6207,32171,-6218,32169,-6229,32167,-6240,32165,-6251,32163,-6262,32161,-6272,32158,-6283,32156,-6294,32154,-6305,32152,-6316,32150,-6327,32148,-6338,32146,-6349,32143,-6360,32141,-6371,32139,-6382,32137,-6393,32135,-6404,32133,-6415,32130,-6426,32128,-6437,32126,-6448,32124,-6459,32122,-6470,32119,-6481,32117,-6492,32115,-6503,32113,-6513,32110,-6524,32108,-6535,32106,-6546,32104,-6557,32102,-6568,32099,-6579,32097,-6590,32095,-6601,32093,-6612,32090,-6623,32088,-6634,32086,-6645,32084,-6656,32081,-6667,32079,-6678,32077,-6689,32074,-6699,32072,-6710,32070,-6721,32068,-6732,32065,-6743,32063,-6754,32061,-6765,32058,-6776,32056,-6787,32054,-6798,32051,-6809,32049,-6820,32047,-6831,32044,-6842,32042,-6852,32040,-6863,32037,-6874,32035,-6885,32033,-6896,32030,-6907,32028,-6918,32026,-6929,32023,-6940,32021,-6951,32019,-6962,32016,-6973,32014,-6983,32011,-6994,32009,-7005,32007,-7016,32004,-7027,32002,-7038,31999,-7049,31997,-7060,31995,-7071,31992,-7082,31990,-7093,31987,-7103,31985,-7114,31983,-7125,31980,-7136,31978,-7147,31975,-7158,31973,-7169,31970,-7180,31968,-7191,31965,-7202,31963,-7212,31961,-7223,31958,-7234,31956,-7245,31953,-7256,31951,-7267,31948,-7278,31946,-7289,31943,-7300,31941,-7311,31938,-7321,31936,-7332,31933,-7343,31931,-7354,31928,-7365,31926,-7376,31923,-7387,31921,-7398,31918,-7408,31916,-7419,31913,-7430,31911,-7441,31908,-7452,31905,-7463,31903,-7474,31900,-7485,31898,-7495,31895,-7506,31893,-7517,31890,-7528,31888,-7539,31885,-7550,31882,-7561,31880,-7572,31877,-7582,31875,-7593,31872,-7604,31869,-7615,31867,-7626,31864,-7637,31862,-7648,31859,-7658,31856,-7669,31854,-7680,31851,-7691,31849,-7702,31846,-7713,31843,-7724,31841,-7734,31838,-7745,31835,-7756,31833,-7767,31830,-7778,31827,-7789,31825,-7800,31822,-7810,31819,-7821,31817,-7832,31814,-7843,31811,-7854,31809,-7865,31806,-7876,31803,-7886,31801,-7897,31798,-7908,31795,-7919,31793,-7930,31790,-7941,31787,-7951,31785,-7962,31782,-7973,31779,-7984,31776,-7995,31774,-8006,31771,-8016,31768,-8027,31765,-8038,31763,-8049,31760,-8060,31757,-8071,31754,-8081,31752,-8092,31749,-8103,31746,-8114,31743,-8125,31741,-8135,31738,-8146,31735,-8157,31732,-8168,31729,-8179,31727,-8190,31724,-8200,31721,-8211,31718,-8222,31716,-8233,31713,-8244,31710,-8254,31707,-8265,31704,-8276,31701,-8287,31699,-8298,31696,-8308,31693,-8319,31690,-8330,31687,-8341,31684,-8352,31682,-8362,31679,-8373,31676,-8384,31673,-8395,31670,-8406,31667,-8416,31664,-8427,31662,-8438,31659,-8449,31656,-8460,31653,-8470,31650,-8481,31647,-8492,31644,-8503,31641,-8514,31638,-8524,31635,-8535,31633,-8546,31630,-8557,31627,-8568,31624,-8578,31621,-8589,31618,-8600,31615,-8611,31612,-8621,31609,-8632,31606,-8643,31603,-8654,31600,-8664,31597,-8675,31594,-8686,31591,-8697,31588,-8708,31586,-8718,31583,-8729,31580,-8740,31577,-8751,31574,-8761,31571,-8772,31568,-8783,31565,-8794,31562,-8804,31559,-8815,31556,-8826,31553,-8837,31550,-8847,31547,-8858,31544,-8869,31541,-8880,31537,-8890,31534,-8901,31531,-8912,31528,-8923,31525,-8933,31522,-8944,31519,-8955,31516,-8966,31513,-8976,31510,-8987,31507,-8998,31504,-9009,31501,-9019,31498,-9030,31495,-9041,31492,-9052,31489,-9062,31485,-9073,31482,-9084,31479,-9095,31476,-9105,31473,-9116,31470,-9127,31467,-9137,31464,-9148,31461,-9159,31457,-9170,31454,-9180,31451,-9191,31448,-9202,31445,-9213,31442,-9223,31439,-9234,31435,-9245,31432,-9255,31429,-9266,31426,-9277,31423,-9288,31420,-9298,31417,-9309,31413,-9320,31410,-9330,31407,-9341,31404,-9352,31401,-9363,31397,-9373,31394,-9384,31391,-9395,31388,-9405,31385,-9416,31381,-9427,31378,-9437,31375,-9448,31372,-9459,31369,-9469,31365,-9480,31362,-9491,31359,-9502,31356,-9512,31352,-9523,31349,-9534,31346,-9544,31343,-9555,31339,-9566,31336,-9576,31333,-9587,31330,-9598,31326,-9608,31323,-9619,31320,-9630,31316,-9640,31313,-9651,31310,-9662,31307,-9672,31303,-9683,31300,-9694,31297,-9704,31293,-9715,31290,-9726,31287,-9736,31283,-9747,31280,-9758,31277,-9768,31273,-9779,31270,-9790,31267,-9800,31263,-9811,31260,-9822,31257,-9832,31253,-9843,31250,-9854,31247,-9864,31243,-9875,31240,-9886,31236,-9896,31233,-9907,31230,-9918,31226,-9928,31223,-9939,31220,-9950,31216,-9960,31213,-9971,31209,-9981,31206,-9992,31203,-10003,31199,-10013,31196,-10024,31192,-10035,31189,-10045,31185,-10056,31182,-10067,31179,-10077,31175,-10088,31172,-10098,31168,-10109,31165,-10120,31161,-10130,31158,-10141,31154,-10152,31151,-10162,31148,-10173,31144,-10183,31141,-10194,31137,-10205,31134,-10215,31130,-10226,31127,-10236,31123,-10247,31120,-10258,31116,-10268,31113,-10279,31109,-10290,31106,-10300,31102,-10311,31099,-10321,31095,-10332,31092,-10343,31088,-10353,31085,-10364,31081,-10374,31077,-10385,31074,-10396,31070,-10406,31067,-10417,31063,-10427,31060,-10438,31056,-10448,31053,-10459,31049,-10470,31045,-10480,31042,-10491,31038,-10501,31035,-10512,31031,-10523,31028,-10533,31024,-10544,31020,-10554,31017,-10565,31013,-10575,31010,-10586,31006,-10597,31002,-10607,30999,-10618,30995,-10628,30991,-10639,30988,-10649,30984,-10660,30981,-10671,30977,-10681,30973,-10692,30970,-10702,30966,-10713,30962,-10723,30959,-10734,30955,-10744,30951,-10755,30948,-10766,30944,-10776,30940,-10787,30937,-10797,30933,-10808,30929,-10818,30926,-10829,30922,-10839,30918,-10850,30915,-10860,30911,-10871,30907,-10881,30903,-10892,30900,-10903,30896,-10913,30892,-10924,30889,-10934,30885,-10945,30881,-10955,30877,-10966,30874,-10976,30870,-10987,30866,-10997,30862,-11008,30859,-11018,30855,-11029,30851,-11039,30847,-11050,30844,-11060,30840,-11071,30836,-11081,30832,-11092,30828,-11102,30825,-11113,30821,-11123,30817,-11134,30813,-11144,30809,-11155,30806,-11165,30802,-11176,30798,-11186,30794,-11197,30790,-11207,30787,-11218,30783,-11228,30779,-11239,30775,-11249,30771,-11260,30767,-11270,30764,-11281,30760,-11291,30756,-11302,30752,-11312,30748,-11323,30744,-11333,30740,-11344,30737,-11354,30733,-11365,30729,-11375,30725,-11386,30721,-11396,30717,-11407,30713,-11417,30709,-11428,30705,-11438,30702,-11449,30698,-11459,30694,-11469,30690,-11480,30686,-11490,30682,-11501,30678,-11511,30674,-11522,30670,-11532,30666,-11543,30662,-11553,30658,-11564,30655,-11574,30651,-11584,30647,-11595,30643,-11605,30639,-11616,30635,-11626,30631,-11637,30627,-11647,30623,-11658,30619,-11668,30615,-11678,30611,-11689,30607,-11699,30603,-11710,30599,-11720,30595,-11731,30591,-11741,30587,-11751,30583,-11762,30579,-11772,30575,-11783,30571,-11793,30567,-11804,30563,-11814,30559,-11824,30555,-11835,30551,-11845,30547,-11856,30543,-11866,30539,-11877,30535,-11887,30530,-11897,30526,-11908,30522,-11918,30518,-11929,30514,-11939,30510,-11949,30506,-11960,30502,-11970,30498,-11981,30494,-11991,30490,-12001,30486,-12012,30482,-12022,30477,-12033,30473,-12043,30469,-12053,30465,-12064,30461,-12074,30457,-12084,30453,-12095,30449,-12105,30445,-12116,30440,-12126,30436,-12136,30432,-12147,30428,-12157,30424,-12167,30420,-12178,30416,-12188,30411,-12199,30407,-12209,30403,-12219,30399,-12230,30395,-12240,30391,-12250,30386,-12261,30382,-12271,30378,-12281,30374,-12292,30370,-12302,30365,-12313,30361,-12323,30357,-12333,30353,-12344,30349,-12354,30344,-12364,30340,-12375,30336,-12385,30332,-12395,30328,-12406,30323,-12416,30319,-12426,30315,-12437,30311,-12447,30306,-12457,30302,-12468,30298,-12478,30294,-12488,30289,-12499,30285,-12509,30281,-12519,30277,-12530,30272,-12540,30268,-12550,30264,-12561,30259,-12571,30255,-12581,30251,-12591,30247,-12602,30242,-12612,30238,-12622,30234,-12633,30229,-12643,30225,-12653,30221,-12664,30216,-12674,30212,-12684,30208,-12695,30203,-12705,30199,-12715,30195,-12725,30190,-12736,30186,-12746,30182,-12756,30177,-12767,30173,-12777,30169,-12787,30164,-12797,30160,-12808,30156,-12818,30151,-12828,30147,-12839,30142,-12849,30138,-12859,30134,-12869,30129,-12880,30125,-12890,30121,-12900,30116,-12910,30112,-12921,30107,-12931,30103,-12941,30098,-12951,30094,-12962,30090,-12972,30085,-12982,30081,-12993,30076,-13003,30072,-13013,30067,-13023,30063,-13034,30059,-13044,30054,-13054,30050,-13064,30045,-13075,30041,-13085,30036,-13095,30032,-13105,30027,-13115,30023,-13126,30018,-13136,30014,-13146,30009,-13156,30005,-13167,30001,-13177,29996,-13187,29992,-13197,29987,-13208,29983,-13218,29978,-13228,29973,-13238,29969,-13248,29964,-13259,29960,-13269,29955,-13279,29951,-13289,29946,-13299,29942,-13310,29937,-13320,29933,-13330,29928,-13340,29924,-13350,29919,-13361,29915,-13371,29910,-13381,29905,-13391,29901,-13401,29896,-13412,29892,-13422,29887,-13432,29883,-13442,29878,-13452,29873,-13463,29869,-13473,29864,-13483,29860,-13493,29855,-13503,29850,-13513,29846,-13524,29841,-13534,29837,-13544,29832,-13554,29827,-13564,29823,-13575,29818,-13585,29813,-13595,29809,-13605,29804,-13615,29800,-13625,29795,-13635,29790,-13646,29786,-13656,29781,-13666,29776,-13676,29772,-13686,29767,-13696,29762,-13707,29758,-13717,29753,-13727,29748,-13737,29744,-13747,29739,-13757,29734,-13767,29729,-13778,29725,-13788,29720,-13798,29715,-13808,29711,-13818,29706,-13828,29701,-13838,29696,-13848,29692,-13859,29687,-13869,29682,-13879,29678,-13889,29673,-13899,29668,-13909,29663,-13919,29659,-13929,29654,-13939,29649,-13950,29644,-13960,29640,-13970,29635,-13980,29630,-13990,29625,-14000,29621,-14010,29616,-14020,29611,-14030,29606,-14040,29601,-14051,29597,-14061,29592,-14071,29587,-14081,29582,-14091,29577,-14101,29573,-14111,29568,-14121,29563,-14131,29558,-14141,29553,-14151,29548,-14161,29544,-14172,29539,-14182,29534,-14192,29529,-14202,29524,-14212,29519,-14222,29515,-14232,29510,-14242,29505,-14252,29500,-14262,29495,-14272,29490,-14282,29485,-14292,29481,-14302,29476,-14312,29471,-14322,29466,-14332,29461,-14343,29456,-14353,29451,-14363,29446,-14373,29441,-14383,29437,-14393,29432,-14403,29427,-14413,29422,-14423,29417,-14433,29412,-14443,29407,-14453,29402,-14463,29397,-14473,29392,-14483,29387,-14493,29382,-14503,29377,-14513,29372,-14523,29368,-14533,29363,-14543,29358,-14553,29353,-14563,29348,-14573,29343,-14583,29338,-14593,29333,-14603,29328,-14613,29323,-14623,29318,-14633,29313,-14643,29308,-14653,29303,-14663,29298,-14673,29293,-14683,29288,-14693,29283,-14703,29278,-14713,29273,-14723,29268,-14733,29263,-14743,29258,-14753,29253,-14763,29248,-14773,29243,-14783,29238,-14793,29233,-14803,29227,-14813,29222,-14823,29217,-14833,29212,-14843,29207,-14853,29202,-14862,29197,-14872,29192,-14882,29187,-14892,29182,-14902,29177,-14912,29172,-14922,29167,-14932,29162,-14942,29156,-14952,29151,-14962,29146,-14972,29141,-14982,29136,-14992,29131,-15002,29126,-15012,29121,-15022,29116,-15031,29110,-15041,29105,-15051,29100,-15061,29095,-15071,29090,-15081,29085,-15091,29080,-15101,29074,-15111,29069,-15121,29064,-15131,29059,-15141,29054,-15150,29049,-15160,29044,-15170,29038,-15180,29033,-15190,29028,-15200,29023,-15210,29018,-15220,29012,-15230,29007,-15239,29002,-15249,28997,-15259,28992,-15269,28986,-15279,28981,-15289,28976,-15299,28971,-15309,28966,-15319,28960,-15328,28955,-15338,28950,-15348,28945,-15358,28939,-15368,28934,-15378,28929,-15388,28924,-15397,28918,-15407,28913,-15417,28908,-15427,28903,-15437,28897,-15447,28892,-15457,28887,-15466,28882,-15476,28876,-15486,28871,-15496,28866,-15506,28860,-15516,28855,-15526,28850,-15535,28845,-15545,28839,-15555,28834,-15565,28829,-15575,28823,-15584,28818,-15594,28813,-15604,28807,-15614,28802,-15624,28797,-15634,28791,-15643,28786,-15653,28781,-15663,28775,-15673,28770,-15683,28765,-15692,28759,-15702,28754,-15712,28749,-15722,28743,-15732,28738,-15741,28733,-15751,28727,-15761,28722,-15771,28716,-15781,28711,-15790,28706,-15800,28700,-15810,28695,-15820,28690,-15830,28684,-15839,28679,-15849,28673,-15859,28668,-15869,28662,-15878,28657,-15888,28652,-15898,28646,-15908,28641,-15918,28635,-15927,28630,-15937,28625,-15947,28619,-15957,28614,-15966,28608,-15976,28603,-15986,28597,-15996,28592,-16005,28586,-16015,28581,-16025,28575,-16035,28570,-16044,28565,-16054,28559,-16064,28554,-16073,28548,-16083,28543,-16093,28537,-16103,28532,-16112,28526,-16122,28521,-16132,28515,-16142,28510,-16151,28504,-16161,28499,-16171,28493,-16180,28488,-16190,28482,-16200,28477,-16210,28471,-16219,28465,-16229,28460,-16239,28454,-16248,28449,-16258,28443,-16268,28438,-16277,28432,-16287,28427,-16297,28421,-16307,28416,-16316,28410,-16326,28404,-16336,28399,-16345,28393,-16355,28388,-16365,28382,-16374,28377,-16384,28371,-16394,28365,-16403,28360,-16413,28354,-16423,28349,-16432,28343,-16442,28337,-16452,28332,-16461,28326,-16471,28321,-16481,28315,-16490,28309,-16500,28304,-16510,28298,-16519,28292,-16529,28287,-16539,28281,-16548,28275,-16558,28270,-16567,28264,-16577,28259,-16587,28253,-16596,28247,-16606,28242,-16616,28236,-16625,28230,-16635,28225,-16644,28219,-16654,28213,-16664,28208,-16673,28202,-16683,28196,-16693,28190,-16702,28185,-16712,28179,-16721,28173,-16731,28168,-16741,28162,-16750,28156,-16760,28151,-16769,28145,-16779,28139,-16789,28133,-16798,28128,-16808,28122,-16817,28116,-16827,28110,-16837,28105,-16846,28099,-16856,28093,-16865,28087,-16875,28082,-16884,28076,-16894,28070,-16904,28064,-16913,28059,-16923,28053,-16932,28047,-16942,28041,-16951,28036,-16961,28030,-16970,28024,-16980,28018,-16990,28012,-16999,28007,-17009,28001,-17018,27995,-17028,27989,-17037,27983,-17047,27978,-17056,27972,-17066,27966,-17075,27960,-17085,27954,-17095,27948,-17104,27943,-17114,27937,-17123,27931,-17133,27925,-17142,27919,-17152,27913,-17161,27908,-17171,27902,-17180,27896,-17190,27890,-17199,27884,-17209,27878,-17218,27872,-17228,27867,-17237,27861,-17247,27855,-17256,27849,-17266,27843,-17275,27837,-17285,27831,-17294,27825,-17304,27819,-17313,27814,-17323,27808,-17332,27802,-17342,27796,-17351,27790,-17361,27784,-17370,27778,-17380,27772,-17389,27766,-17398,27760,-17408,27754,-17417,27748,-17427,27742,-17436,27736,-17446,27731,-17455,27725,-17465,27719,-17474,27713,-17484,27707,-17493,27701,-17502,27695,-17512,27689,-17521,27683,-17531,27677,-17540,27671,-17550,27665,-17559,27659,-17568,27653,-17578,27647,-17587,27641,-17597,27635,-17606,27629,-17616,27623,-17625,27617,-17634,27611,-17644,27605,-17653,27599,-17663,27593,-17672,27587,-17681,27581,-17691,27575,-17700,27569,-17710,27563,-17719,27557,-17728,27551,-17738,27545,-17747,27538,-17757,27532,-17766,27526,-17775,27520,-17785,27514,-17794,27508,-17804,27502,-17813,27496,-17822,27490,-17832,27484,-17841,27478,-17850,27472,-17860,27466,-17869,27460,-17879,27453,-17888,27447,-17897,27441,-17907,27435,-17916,27429,-17925,27423,-17935,27417,-17944,27411,-17953,27405,-17963,27398,-17972,27392,-17981,27386,-17991,27380,-18000,27374,-18009,27368,-18019,27362,-18028,27355,-18037,27349,-18047,27343,-18056,27337,-18065,27331,-18075,27325,-18084,27319,-18093,27312,-18103,27306,-18112,27300,-18121,27294,-18131,27288,-18140,27281,-18149,27275,-18158,27269,-18168,27263,-18177,27257,-18186,27250,-18196,27244,-18205,27238,-18214,27232,-18223,27226,-18233,27219,-18242,27213,-18251,27207,-18261,27201,-18270,27195,-18279,27188,-18288,27182,-18298,27176,-18307,27170,-18316,27163,-18325,27157,-18335,27151,-18344,27145,-18353,27138,-18362,27132,-18372,27126,-18381,27120,-18390,27113,-18399,27107,-18409,27101,-18418,27094,-18427,27088,-18436,27082,-18446,27076,-18455,27069,-18464,27063,-18473,27057,-18483,27050,-18492,27044,-18501,27038,-18510,27031,-18519,27025,-18529,27019,-18538,27012,-18547,27006,-18556,27000,-18565,26994,-18575,26987,-18584,26981,-18593,26975,-18602,26968,-18611,26962,-18621,26955,-18630,26949,-18639,26943,-18648,26936,-18657,26930,-18667,26924,-18676,26917,-18685,26911,-18694,26905,-18703,26898,-18712,26892,-18722,26885,-18731,26879,-18740,26873,-18749,26866,-18758,26860,-18767,26853,-18777,26847,-18786,26841,-18795,26834,-18804,26828,-18813,26821,-18822,26815,-18831,26809,-18841,26802,-18850,26796,-18859,26789,-18868,26783,-18877,26776,-18886,26770,-18895,26764,-18905,26757,-18914,26751,-18923,26744,-18932,26738,-18941,26731,-18950,26725,-18959,26718,-18968,26712,-18977,26705,-18987,26699,-18996,26692,-19005,26686,-19014,26680,-19023,26673,-19032,26667,-19041,26660,-19050,26654,-19059,26647,-19068,26641,-19077,26634,-19087,26628,-19096,26621,-19105,26615,-19114,26608,-19123,26601,-19132,26595,-19141,26588,-19150,26582,-19159,26575,-19168,26569,-19177,26562,-19186,26556,-19195,26549,-19204,26543,-19213,26536,-19222,26530,-19232,26523,-19241,26516,-19250,26510,-19259,26503,-19268,26497,-19277,26490,-19286,26484,-19295,26477,-19304,26470,-19313,26464,-19322,26457,-19331,26451,-19340,26444,-19349,26437,-19358,26431,-19367,26424,-19376,26418,-19385,26411,-19394,26404,-19403,26398,-19412,26391,-19421,26385,-19430,26378,-19439,26371,-19448,26365,-19457,26358,-19466,26351,-19475,26345,-19484,26338,-19493,26332,-19502,26325,-19511,26318,-19520,26312,-19529,26305,-19538,26298,-19547,26292,-19556,26285,-19565,26278,-19574,26272,-19583,26265,-19591,26258,-19600,26252,-19609,26245,-19618,26238,-19627,26231,-19636,26225,-19645,26218,-19654,26211,-19663,26205,-19672,26198,-19681,26191,-19690,26185,-19699,26178,-19708,26171,-19717,26164,-19726,26158,-19734,26151,-19743,26144,-19752,26137,-19761,26131,-19770,26124,-19779,26117,-19788,26110,-19797,26104,-19806,26097,-19815,26090,-19823,26083,-19832,26077,-19841,26070,-19850,26063,-19859,26056,-19868,26050,-19877,26043,-19886,26036,-19895,26029,-19903,26022,-19912,26016,-19921,26009,-19930,26002,-19939,25995,-19948,25989,-19957,25982,-19966,25975,-19974,25968,-19983,25961,-19992,25954,-20001,25948,-20010,25941,-20019,25934,-20027,25927,-20036,25920,-20045,25913,-20054,25907,-20063,25900,-20072,25893,-20080,25886,-20089,25879,-20098,25872,-20107,25866,-20116,25859,-20125,25852,-20133,25845,-20142,25838,-20151,25831,-20160,25824,-20169,25817,-20177,25811,-20186,25804,-20195,25797,-20204,25790,-20213,25783,-20221,25776,-20230,25769,-20239,25762,-20248,25755,-20257,25749,-20265,25742,-20274,25735,-20283,25728,-20292,25721,-20300,25714,-20309,25707,-20318,25700,-20327,25693,-20335,25686,-20344,25679,-20353,25672,-20362,25665,-20370,25659,-20379,25652,-20388,25645,-20397,25638,-20405,25631,-20414,25624,-20423,25617,-20432,25610,-20440,25603,-20449,25596,-20458,25589,-20467,25582,-20475,25575,-20484,25568,-20493,25561,-20501,25554,-20510,25547,-20519,25540,-20528,25533,-20536,25526,-20545,25519,-20554,25512,-20562,25505,-20571,25498,-20580,25491,-20588,25484,-20597,25477,-20606,25470,-20614,25463,-20623,25456,-20632,25449,-20641,25442,-20649,25435,-20658,25428,-20667,25421,-20675,25414,-20684,25407,-20693,25399,-20701,25392,-20710,25385,-20719,25378,-20727,25371,-20736,25364,-20744,25357,-20753,25350,-20762,25343,-20770,25336,-20779,25329,-20788,25322,-20796,25315,-20805,25307,-20814,25300,-20822,25293,-20831,25286,-20839,25279,-20848,25272,-20857,25265,-20865,25258,-20874,25251,-20882,25243,-20891,25236,-20900,25229,-20908,25222,-20917,25215,-20926,25208,-20934,25201,-20943,25194,-20951,25186,-20960,25179,-20968,25172,-20977,25165,-20986,25158,-20994,25151,-21003,25144,-21011,25136,-21020,25129,-21028,25122,-21037,25115,-21046,25108,-21054,25100,-21063,25093,-21071,25086,-21080,25079,-21088,25072,-21097,25065,-21105,25057,-21114,25050,-21123,25043,-21131,25036,-21140,25029,-21148,25021,-21157,25014,-21165,25007,-21174,25000,-21182,24992,-21191,24985,-21199,24978,-21208,24971,-21216,24964,-21225,24956,-21233,24949,-21242,24942,-21250,24935,-21259,24927,-21267,24920,-21276,24913,-21284,24906,-21293,24898,-21301,24891,-21310,24884,-21318,24877,-21327,24869,-21335,24862,-21344,24855,-21352,24847,-21361,24840,-21369,24833,-21378,24826,-21386,24818,-21395,24811,-21403,24804,-21411,24796,-21420,24789,-21428,24782,-21437,24774,-21445,24767,-21454,24760,-21462,24753,-21471,24745,-21479,24738,-21487,24731,-21496,24723,-21504,24716,-21513,24709,-21521,24701,-21530,24694,-21538,24687,-21546,24679,-21555,24672,-21563,24664,-21572,24657,-21580,24650,-21588,24642,-21597,24635,-21605,24628,-21614,24620,-21622,24613,-21630,24606,-21639,24598,-21647,24591,-21656,24583,-21664,24576,-21672,24569,-21681,24561,-21689,24554,-21698,24546,-21706,24539,-21714,24532,-21723,24524,-21731,24517,-21739,24509,-21748,24502,-21756,24495,-21764,24487,-21773,24480,-21781,24472,-21789,24465,-21798,24457,-21806,24450,-21814,24443,-21823,24435,-21831,24428,-21839,24420,-21848,24413,-21856,24405,-21864,24398,-21873,24390,-21881,24383,-21889,24376,-21898,24368,-21906,24361,-21914,24353,-21923,24346,-21931,24338,-21939,24331,-21947,24323,-21956,24316,-21964,24308,-21972,24301,-21981,24293,-21989,24286,-21997,24278,-22005,24271,-22014,24263,-22022,24256,-22030,24248,-22039,24241,-22047,24233,-22055,24226,-22063,24218,-22072,24211,-22080,24203,-22088,24196,-22096,24188,-22105,24180,-22113,24173,-22121,24165,-22129,24158,-22138,24150,-22146,24143,-22154,24135,-22162,24128,-22170,24120,-22179,24113,-22187,24105,-22195,24097,-22203,24090,-22212,24082,-22220,24075,-22228,24067,-22236,24060,-22244,24052,-22253,24044,-22261,24037,-22269,24029,-22277,24022,-22285,24014,-22294,24006,-22302,23999,-22310,23991,-22318,23984,-22326,23976,-22334,23968,-22343,23961,-22351,23953,-22359,23945,-22367,23938,-22375,23930,-22383,23923,-22392,23915,-22400,23907,-22408,23900,-22416,23892,-22424,23884,-22432,23877,-22440,23869,-22449,23861,-22457,23854,-22465,23846,-22473,23838,-22481,23831,-22489,23823,-22497,23815,-22506,23808,-22514,23800,-22522,23792,-22530,23785,-22538,23777,-22546,23769,-22554,23762,-22562,23754,-22570,23746,-22578,23739,-22587,23731,-22595,23723,-22603,23715,-22611,23708,-22619,23700,-22627,23692,-22635,23685,-22643,23677,-22651,23669,-22659,23661,-22667,23654,-22675,23646,-22684,23638,-22692,23631,-22700,23623,-22708,23615,-22716,23607,-22724,23600,-22732,23592,-22740,23584,-22748,23576,-22756,23569,-22764,23561,-22772,23553,-22780,23545,-22788,23537,-22796,23530,-22804,23522,-22812,23514,-22820,23506,-22828,23499,-22836,23491,-22844,23483,-22852,23475,-22860,23467,-22868,23460,-22876,23452,-22884,23444,-22892,23436,-22900,23428,-22908,23421,-22916,23413,-22924,23405,-22932,23397,-22940,23389,-22948,23382,-22956,23374,-22964,23366,-22972,23358,-22980,23350,-22988,23342,-22996,23335,-23004,23327,-23012,23319,-23020,23311,-23028,23303,-23036,23295,-23044,23287,-23051,23280,-23059,23272,-23067,23264,-23075,23256,-23083,23248,-23091,23240,-23099,23232,-23107,23224,-23115,23217,-23123,23209,-23131,23201,-23139,23193,-23147,23185,-23154,23177,-23162,23169,-23170,23161,-23178,23153,-23186,23146,-23194,23138,-23202,23130,-23210,23122,-23218,23114,-23225,23106,-23233,23098,-23241,23090,-23249,23082,-23257,23074,-23265,23066,-23273,23058,-23281,23050,-23288,23043,-23296,23035,-23304,23027,-23312,23019,-23320,23011,-23328,23003,-23336,22995,-23343,22987,-23351,22979,-23359,22971,-23367,22963,-23375,22955,-23383,22947,-23390,22939,-23398,22931,-23406,22923,-23414,22915,-23422,22907,-23429,22899,-23437,22891,-23445,22883,-23453,22875,-23461,22867,-23468,22859,-23476,22851,-23484,22843,-23492,22835,-23500,22827,-23507,22819,-23515,22811,-23523,22803,-23531,22795,-23538,22787,-23546,22779,-23554,22771,-23562,22763,-23570,22755,-23577,22747,-23585,22739,-23593,22731,-23601,22723,-23608,22715,-23616,22707,-23624,22699,-23632,22691,-23639,22683,-23647,22674,-23655,22666,-23662,22658,-23670,22650,-23678,22642,-23686,22634,-23693,22626,-23701,22618,-23709,22610,-23716,22602,-23724,22594,-23732,22586,-23740,22577,-23747,22569,-23755,22561,-23763,22553,-23770,22545,-23778,22537,-23786,22529,-23793,22521,-23801,22513,-23809,22505,-23816,22496,-23824,22488,-23832,22480,-23839,22472,-23847,22464,-23855,22456,-23862,22448,-23870,22439,-23878,22431,-23885,22423,-23893,22415,-23901,22407,-23908,22399,-23916,22391,-23924,22382,-23931,22374,-23939,22366,-23946,22358,-23954,22350,-23962,22342,-23969,22333,-23977,22325,-23985,22317,-23992,22309,-24000,22301,-24007,22293,-24015,22284,-24023,22276,-24030,22268,-24038,22260,-24045,22252,-24053,22243,-24061,22235,-24068,22227,-24076,22219,-24083,22211,-24091,22202,-24098,22194,-24106,22186,-24114,22178,-24121,22169,-24129,22161,-24136,22153,-24144,22145,-24151,22137,-24159,22128,-24166,22120,-24174,22112,-24181,22104,-24189,22095,-24197,22087,-24204,22079,-24212,22071,-24219,22062,-24227,22054,-24234,22046,-24242,22038,-24249,22029,-24257,22021,-24264,22013,-24272,22004,-24279,21996,-24287,21988,-24294,21980,-24302,21971,-24309,21963,-24317,21955,-24324,21946,-24332,21938,-24339,21930,-24347,21922,-24354,21913,-24362,21905,-24369,21897,-24377,21888,-24384,21880,-24391,21872,-24399,21863,-24406,21855,-24414,21847,-24421,21838,-24429,21830,-24436,21822,-24444,21813,-24451,21805,-24458,21797,-24466,21788,-24473,21780,-24481,21772,-24488,21763,-24496,21755,-24503,21747,-24510,21738,-24518,21730,-24525,21722,-24533,21713,-24540,21705,-24547,21697,-24555,21688,-24562,21680,-24570,21671,-24577,21663,-24584,21655,-24592,21646,-24599,21638,-24607,21629,-24614,21621,-24621,21613,-24629,21604,-24636,21596,-24643,21587,-24651,21579,-24658,21571,-24665,21562,-24673,21554,-24680,21545,-24688,21537,-24695,21529,-24702,21520,-24710,21512,-24717,21503,-24724,21495,-24732,21486,-24739,21478,-24746,21470,-24754,21461,-24761,21453,-24768,21444,-24775,21436,-24783,21427,-24790,21419,-24797,21410,-24805,21402,-24812,21394,-24819,21385,-24827,21377,-24834,21368,-24841,21360,-24848,21351,-24856,21343,-24863,21334,-24870,21326,-24878,21317,-24885,21309,-24892,21300,-24899,21292,-24907,21283,-24914,21275,-24921,21266,-24928,21258,-24936,21249,-24943,21241,-24950,21232,-24957,21224,-24965,21215,-24972,21207,-24979,21198,-24986,21190,-24993,21181,-25001,21173,-25008,21164,-25015,21156,-25022,21147,-25030,21139,-25037,21130,-25044,21122,-25051,21113,-25058,21104,-25066,21096,-25073,21087,-25080,21079,-25087,21070,-25094,21062,-25101,21053,-25109,21045,-25116,21036,-25123,21027,-25130,21019,-25137,21010,-25145,21002,-25152,20993,-25159,20985,-25166,20976,-25173,20967,-25180,20959,-25187,20950,-25195,20942,-25202,20933,-25209,20925,-25216,20916,-25223,20907,-25230,20899,-25237,20890,-25244,20881,-25252,20873,-25259,20864,-25266,20856,-25273,20847,-25280,20838,-25287,20830,-25294,20821,-25301,20813,-25308,20804,-25316,20795,-25323,20787,-25330,20778,-25337,20769,-25344,20761,-25351,20752,-25358,20743,-25365,20735,-25372,20726,-25379,20718,-25386,20709,-25393,20700,-25400,20692,-25408,20683,-25415,20674,-25422,20666,-25429,20657,-25436,20648,-25443,20640,-25450,20631,-25457,20622,-25464,20613,-25471,20605,-25478,20596,-25485,20587,-25492,20579,-25499,20570,-25506,20561,-25513,20553,-25520,20544,-25527,20535,-25534,20527,-25541,20518,-25548,20509,-25555,20500,-25562,20492,-25569,20483,-25576,20474,-25583,20466,-25590,20457,-25597,20448,-25604,20439,-25611,20431,-25618,20422,-25625,20413,-25632,20404,-25639,20396,-25646,20387,-25653,20378,-25660,20369,-25666,20361,-25673,20352,-25680,20343,-25687,20334,-25694,20326,-25701,20317,-25708,20308,-25715,20299,-25722,20291,-25729,20282,-25736,20273,-25743,20264,-25750,20256,-25756,20247,-25763,20238,-25770,20229,-25777,20220,-25784,20212,-25791,20203,-25798,20194,-25805,20185,-25812,20176,-25818,20168,-25825,20159,-25832,20150,-25839,20141,-25846,20132,-25853,20124,-25860,20115,-25867,20106,-25873,20097,-25880,20088,-25887,20079,-25894,20071,-25901,20062,-25908,20053,-25914,20044,-25921,20035,-25928,20026,-25935,20018,-25942,20009,-25949,20000,-25955,19991,-25962,19982,-25969,19973,-25976,19965,-25983,19956,-25990,19947,-25996,19938,-26003,19929,-26010,19920,-26017,19911,-26023,19902,-26030,19894,-26037,19885,-26044,19876,-26051,19867,-26057,19858,-26064,19849,-26071,19840,-26078,19831,-26084,19822,-26091,19814,-26098,19805,-26105,19796,-26111,19787,-26118,19778,-26125,19769,-26132,19760,-26138,19751,-26145,19742,-26152,19733,-26159,19725,-26165,19716,-26172,19707,-26179,19698,-26186,19689,-26192,19680,-26199,19671,-26206,19662,-26212,19653,-26219,19644,-26226,19635,-26232,19626,-26239,19617,-26246,19608,-26253,19599,-26259,19590,-26266,19582,-26273,19573,-26279,19564,-26286,19555,-26293,19546,-26299,19537,-26306,19528,-26313,19519,-26319,19510,-26326,19501,-26333,19492,-26339,19483,-26346,19474,-26352,19465,-26359,19456,-26366,19447,-26372,19438,-26379,19429,-26386,19420,-26392,19411,-26399,19402,-26405,19393,-26412,19384,-26419,19375,-26425,19366,-26432,19357,-26438,19348,-26445,19339,-26452,19330,-26458,19321,-26465,19312,-26471,19303,-26478,19294,-26485,19285,-26491,19276,-26498,19267,-26504,19258,-26511,19249,-26517,19240,-26524,19231,-26531,19221,-26537,19212,-26544,19203,-26550,19194,-26557,19185,-26563,19176,-26570,19167,-26576,19158,-26583,19149,-26589,19140,-26596,19131,-26602,19122,-26609,19113,-26616,19104,-26622,19095,-26629,19086,-26635,19076,-26642,19067,-26648,19058,-26655,19049,-26661,19040,-26668,19031,-26674,19022,-26681,19013,-26687,19004,-26693,18995,-26700,18986,-26706,18976,-26713,18967,-26719,18958,-26726,18949,-26732,18940,-26739,18931,-26745,18922,-26752,18913,-26758,18904,-26765,18894,-26771,18885,-26777,18876,-26784,18867,-26790,18858,-26797,18849,-26803,18840,-26810,18830,-26816,18821,-26822,18812,-26829,18803,-26835,18794,-26842,18785,-26848,18776,-26854,18766,-26861,18757,-26867,18748,-26874,18739,-26880,18730,-26886,18721,-26893,18711,-26899,18702,-26906,18693,-26912,18684,-26918,18675,-26925,18666,-26931,18656,-26937,18647,-26944,18638,-26950,18629,-26956,18620,-26963,18610,-26969,18601,-26976,18592,-26982,18583,-26988,18574,-26995,18564,-27001,18555,-27007,18546,-27013,18537,-27020,18528,-27026,18518,-27032,18509,-27039,18500,-27045,18491,-27051,18482,-27058,18472,-27064,18463,-27070,18454,-27077,18445,-27083,18435,-27089,18426,-27095,18417,-27102,18408,-27108,18398,-27114,18389,-27121,18380,-27127,18371,-27133,18361,-27139,18352,-27146,18343,-27152,18334,-27158,18324,-27164,18315,-27171,18306,-27177,18297,-27183,18287,-27189,18278,-27196,18269,-27202,18260,-27208,18250,-27214,18241,-27220,18232,-27227,18222,-27233,18213,-27239,18204,-27245,18195,-27251,18185,-27258,18176,-27264,18167,-27270,18157,-27276,18148,-27282,18139,-27289,18130,-27295,18120,-27301,18111,-27307,18102,-27313,18092,-27320,18083,-27326,18074,-27332,18064,-27338,18055,-27344,18046,-27350,18036,-27356,18027,-27363,18018,-27369,18008,-27375,17999,-27381,17990,-27387,17980,-27393,17971,-27399,17962,-27406,17952,-27412,17943,-27418,17934,-27424,17924,-27430,17915,-27436,17906,-27442,17896,-27448,17887,-27454,17878,-27461,17868,-27467,17859,-27473,17849,-27479,17840,-27485,17831,-27491,17821,-27497,17812,-27503,17803,-27509,17793,-27515,17784,-27521,17774,-27527,17765,-27533,17756,-27539,17746,-27546,17737,-27552,17727,-27558,17718,-27564,17709,-27570,17699,-27576,17690,-27582,17680,-27588,17671,-27594,17662,-27600,17652,-27606,17643,-27612,17633,-27618,17624,-27624,17615,-27630,17605,-27636,17596,-27642,17586,-27648,17577,-27654,17567,-27660,17558,-27666,17549,-27672,17539,-27678,17530,-27684,17520,-27690,17511,-27696,17501,-27702,17492,-27708,17483,-27714,17473,-27720,17464,-27726,17454,-27732,17445,-27737,17435,-27743,17426,-27749,17416,-27755,17407,-27761,17397,-27767,17388,-27773,17379,-27779,17369,-27785,17360,-27791,17350,-27797,17341,-27803,17331,-27809,17322,-27815,17312,-27820,17303,-27826,17293,-27832,17284,-27838,17274,-27844,17265,-27850,17255,-27856,17246,-27862,17236,-27868,17227,-27873,17217,-27879,17208,-27885,17198,-27891,17189,-27897,17179,-27903,17170,-27909,17160,-27914,17151,-27920,17141,-27926,17132,-27932,17122,-27938,17113,-27944,17103,-27949,17094,-27955,17084,-27961,17074,-27967,17065,-27973,17055,-27979,17046,-27984,17036,-27990,17027,-27996,17017,-28002,17008,-28008,16998,-28013,16989,-28019,16979,-28025,16969,-28031,16960,-28037,16950,-28042,16941,-28048,16931,-28054,16922,-28060,16912,-28065,16903,-28071,16893,-28077,16883,-28083,16874,-28088,16864,-28094,16855,-28100,16845,-28106,16836,-28111,16826,-28117,16816,-28123,16807,-28129,16797,-28134,16788,-28140,16778,-28146,16768,-28152,16759,-28157,16749,-28163,16740,-28169,16730,-28174,16720,-28180,16711,-28186,16701,-28191,16692,-28197,16682,-28203,16672,-28209,16663,-28214,16653,-28220,16643,-28226,16634,-28231,16624,-28237,16615,-28243,16605,-28248,16595,-28254,16586,-28260,16576,-28265,16566,-28271,16557,-28276,16547,-28282,16538,-28288,16528,-28293,16518,-28299,16509,-28305,16499,-28310,16489,-28316,16480,-28322,16470,-28327,16460,-28333,16451,-28338,16441,-28344,16431,-28350,16422,-28355,16412,-28361,16402,-28366,16393,-28372,16383,-28378,16373,-28383,16364,-28389,16354,-28394,16344,-28400,16335,-28405,16325,-28411,16315,-28417,16306,-28422,16296,-28428,16286,-28433,16276,-28439,16267,-28444,16257,-28450,16247,-28455,16238,-28461,16228,-28466,16218,-28472,16209,-28478,16199,-28483,16189,-28489,16179,-28494,16170,-28500,16160,-28505,16150,-28511,16141,-28516,16131,-28522,16121,-28527,16111,-28533,16102,-28538,16092,-28544,16082,-28549,16072,-28555,16063,-28560,16053,-28566,16043,-28571,16034,-28576,16024,-28582,16014,-28587,16004,-28593,15995,-28598,15985,-28604,15975,-28609,15965,-28615,15956,-28620,15946,-28626,15936,-28631,15926,-28636,15917,-28642,15907,-28647,15897,-28653,15887,-28658,15877,-28663,15868,-28669,15858,-28674,15848,-28680,15838,-28685,15829,-28691,15819,-28696,15809,-28701,15799,-28707,15789,-28712,15780,-28717,15770,-28723,15760,-28728,15750,-28734,15740,-28739,15731,-28744,15721,-28750,15711,-28755,15701,-28760,15691,-28766,15682,-28771,15672,-28776,15662,-28782,15652,-28787,15642,-28792,15633,-28798,15623,-28803,15613,-28808,15603,-28814,15593,-28819,15583,-28824,15574,-28830,15564,-28835,15554,-28840,15544,-28846,15534,-28851,15525,-28856,15515,-28861,15505,-28867,15495,-28872,15485,-28877,15475,-28883,15465,-28888,15456,-28893,15446,-28898,15436,-28904,15426,-28909,15416,-28914,15406,-28919,15396,-28925,15387,-28930,15377,-28935,15367,-28940,15357,-28946,15347,-28951,15337,-28956,15327,-28961,15318,-28967,15308,-28972,15298,-28977,15288,-28982,15278,-28987,15268,-28993,15258,-28998,15248,-29003,15238,-29008,15229,-29013,15219,-29019,15209,-29024,15199,-29029,15189,-29034,15179,-29039,15169,-29045,15159,-29050,15149,-29055,15140,-29060,15130,-29065,15120,-29070,15110,-29075,15100,-29081,15090,-29086,15080,-29091,15070,-29096,15060,-29101,15050,-29106,15040,-29111,15030,-29117,15021,-29122,15011,-29127,15001,-29132,14991,-29137,14981,-29142,14971,-29147,14961,-29152,14951,-29157,14941,-29163,14931,-29168,14921,-29173,14911,-29178,14901,-29183,14891,-29188,14881,-29193,14871,-29198,14861,-29203,14852,-29208,14842,-29213,14832,-29218,14822,-29223,14812,-29228,14802,-29234,14792,-29239,14782,-29244,14772,-29249,14762,-29254,14752,-29259,14742,-29264,14732,-29269,14722,-29274,14712,-29279,14702,-29284,14692,-29289,14682,-29294,14672,-29299,14662,-29304,14652,-29309,14642,-29314,14632,-29319,14622,-29324,14612,-29329,14602,-29334,14592,-29339,14582,-29344,14572,-29349,14562,-29354,14552,-29359,14542,-29364,14532,-29369,14522,-29373,14512,-29378,14502,-29383,14492,-29388,14482,-29393,14472,-29398,14462,-29403,14452,-29408,14442,-29413,14432,-29418,14422,-29423,14412,-29428,14402,-29433,14392,-29438,14382,-29442,14372,-29447,14362,-29452,14352,-29457,14342,-29462,14331,-29467,14321,-29472,14311,-29477,14301,-29482,14291,-29486,14281,-29491,14271,-29496,14261,-29501,14251,-29506,14241,-29511,14231,-29516,14221,-29520,14211,-29525,14201,-29530,14191,-29535,14181,-29540,14171,-29545,14160,-29549,14150,-29554,14140,-29559,14130,-29564,14120,-29569,14110,-29574,14100,-29578,14090,-29583,14080,-29588,14070,-29593,14060,-29598,14050,-29602,14039,-29607,14029,-29612,14019,-29617,14009,-29622,13999,-29626,13989,-29631,13979,-29636,13969,-29641,13959,-29645,13949,-29650,13938,-29655,13928,-29660,13918,-29664,13908,-29669,13898,-29674,13888,-29679,13878,-29683,13868,-29688,13858,-29693,13847,-29697,13837,-29702,13827,-29707,13817,-29712,13807,-29716,13797,-29721,13787,-29726,13777,-29730,13766,-29735,13756,-29740,13746,-29745,13736,-29749,13726,-29754,13716,-29759,13706,-29763,13695,-29768,13685,-29773,13675,-29777,13665,-29782,13655,-29787,13645,-29791,13634,-29796,13624,-29801,13614,-29805,13604,-29810,13594,-29814,13584,-29819,13574,-29824,13563,-29828,13553,-29833,13543,-29838,13533,-29842,13523,-29847,13512,-29851,13502,-29856,13492,-29861,13482,-29865,13472,-29870,13462,-29874,13451,-29879,13441,-29884,13431,-29888,13421,-29893,13411,-29897,13400,-29902,13390,-29906,13380,-29911,13370,-29916,13360,-29920,13349,-29925,13339,-29929,13329,-29934,13319,-29938,13309,-29943,13298,-29947,13288,-29952,13278,-29956,13268,-29961,13258,-29965,13247,-29970,13237,-29974,13227,-29979,13217,-29984,13207,-29988,13196,-29993,13186,-29997,13176,-30002,13166,-30006,13155,-30010,13145,-30015,13135,-30019,13125,-30024,13114,-30028,13104,-30033,13094,-30037,13084,-30042,13074,-30046,13063,-30051,13053,-30055,13043,-30060,13033,-30064,13022,-30068,13012,-30073,13002,-30077,12992,-30082,12981,-30086,12971,-30091,12961,-30095,12950,-30099,12940,-30104,12930,-30108,12920,-30113,12909,-30117,12899,-30122,12889,-30126,12879,-30130,12868,-30135,12858,-30139,12848,-30143,12838,-30148,12827,-30152,12817,-30157,12807,-30161,12796,-30165,12786,-30170,12776,-30174,12766,-30178,12755,-30183,12745,-30187,12735,-30191,12724,-30196,12714,-30200,12704,-30204,12694,-30209,12683,-30213,12673,-30217,12663,-30222,12652,-30226,12642,-30230,12632,-30235,12621,-30239,12611,-30243,12601,-30248,12590,-30252,12580,-30256,12570,-30260,12560,-30265,12549,-30269,12539,-30273,12529,-30278,12518,-30282,12508,-30286,12498,-30290,12487,-30295,12477,-30299,12467,-30303,12456,-30307,12446,-30312,12436,-30316,12425,-30320,12415,-30324,12405,-30329,12394,-30333,12384,-30337,12374,-30341,12363,-30345,12353,-30350,12343,-30354,12332,-30358,12322,-30362,12312,-30366,12301,-30371,12291,-30375,12280,-30379,12270,-30383,12260,-30387,12249,-30392,12239,-30396,12229,-30400,12218,-30404,12208,-30408,12198,-30412,12187,-30417,12177,-30421,12166,-30425,12156,-30429,12146,-30433,12135,-30437,12125,-30441,12115,-30446,12104,-30450,12094,-30454,12083,-30458,12073,-30462,12063,-30466,12052,-30470,12042,-30474,12032,-30478,12021,-30483,12011,-30487,12000,-30491,11990,-30495,11980,-30499,11969,-30503,11959,-30507,11948,-30511,11938,-30515,11928,-30519,11917,-30523,11907,-30527,11896,-30531,11886,-30536,11876,-30540,11865,-30544,11855,-30548,11844,-30552,11834,-30556,11823,-30560,11813,-30564,11803,-30568,11792,-30572,11782,-30576,11771,-30580,11761,-30584,11750,-30588,11740,-30592,11730,-30596,11719,-30600,11709,-30604,11698,-30608,11688,-30612,11677,-30616,11667,-30620,11657,-30624,11646,-30628,11636,-30632,11625,-30636,11615,-30640,11604,-30644,11594,-30648,11583,-30652,11573,-30656,11563,-30659,11552,-30663,11542,-30667,11531,-30671,11521,-30675,11510,-30679,11500,-30683,11489,-30687,11479,-30691,11468,-30695,11458,-30699,11448,-30703,11437,-30706,11427,-30710,11416,-30714,11406,-30718,11395,-30722,11385,-30726,11374,-30730,11364,-30734,11353,-30738,11343,-30741,11332,-30745,11322,-30749,11311,-30753,11301,-30757,11290,-30761,11280,-30765,11269,-30768,11259,-30772,11248,-30776,11238,-30780,11227,-30784,11217,-30788,11206,-30791,11196,-30795,11185,-30799,11175,-30803,11164,-30807,11154,-30810,11143,-30814,11133,-30818,11122,-30822,11112,-30826,11101,-30829,11091,-30833,11080,-30837,11070,-30841,11059,-30845,11049,-30848,11038,-30852,11028,-30856,11017,-30860,11007,-30863,10996,-30867,10986,-30871,10975,-30875,10965,-30878,10954,-30882,10944,-30886,10933,-30890,10923,-30893,10912,-30897,10902,-30901,10891,-30904,10880,-30908,10870,-30912,10859,-30916,10849,-30919,10838,-30923,10828,-30927,10817,-30930,10807,-30934,10796,-30938,10786,-30941,10775,-30945,10765,-30949,10754,-30952,10743,-30956,10733,-30960,10722,-30963,10712,-30967,10701,-30971,10691,-30974,10680,-30978,10670,-30982,10659,-30985,10648,-30989,10638,-30992,10627,-30996,10617,-31000,10606,-31003,10596,-31007,10585,-31011,10574,-31014,10564,-31018,10553,-31021,10543,-31025,10532,-31029,10522,-31032,10511,-31036,10500,-31039,10490,-31043,10479,-31046,10469,-31050,10458,-31054,10447,-31057,10437,-31061,10426,-31064,10416,-31068,10405,-31071,10395,-31075,10384,-31078,10373,-31082,10363,-31086,10352,-31089,10342,-31093,10331,-31096,10320,-31100,10310,-31103,10299,-31107,10289,-31110,10278,-31114,10267,-31117,10257,-31121,10246,-31124,10235,-31128,10225,-31131,10214,-31135,10204,-31138,10193,-31142,10182,-31145,10172,-31149,10161,-31152,10151,-31155,10140,-31159,10129,-31162,10119,-31166,10108,-31169,10097,-31173,10087,-31176,10076,-31180,10066,-31183,10055,-31186,10044,-31190,10034,-31193,10023,-31197,10012,-31200,10002,-31204,9991,-31207,9980,-31210,9970,-31214,9959,-31217,9949,-31221,9938,-31224,9927,-31227,9917,-31231,9906,-31234,9895,-31237,9885,-31241,9874,-31244,9863,-31248,9853,-31251,9842,-31254,9831,-31258,9821,-31261,9810,-31264,9799,-31268,9789,-31271,9778,-31274,9767,-31278,9757,-31281,9746,-31284,9735,-31288,9725,-31291,9714,-31294,9703,-31298,9693,-31301,9682,-31304,9671,-31308,9661,-31311,9650,-31314,9639,-31317,9629,-31321,9618,-31324,9607,-31327,9597,-31331,9586,-31334,9575,-31337,9565,-31340,9554,-31344,9543,-31347,9533,-31350,9522,-31353,9511,-31357,9501,-31360,9490,-31363,9479,-31366,9468,-31370,9458,-31373,9447,-31376,9436,-31379,9426,-31382,9415,-31386,9404,-31389,9394,-31392,9383,-31395,9372,-31398,9362,-31402,9351,-31405,9340,-31408,9329,-31411,9319,-31414,9308,-31418,9297,-31421,9287,-31424,9276,-31427,9265,-31430,9254,-31433,9244,-31436,9233,-31440,9222,-31443,9212,-31446,9201,-31449,9190,-31452,9179,-31455,9169,-31458,9158,-31462,9147,-31465,9136,-31468,9126,-31471,9115,-31474,9104,-31477,9094,-31480,9083,-31483,9072,-31486,9061,-31490,9051,-31493,9040,-31496,9029,-31499,9018,-31502,9008,-31505,8997,-31508,8986,-31511,8975,-31514,8965,-31517,8954,-31520,8943,-31523,8932,-31526,8922,-31529,8911,-31532,8900,-31535,8889,-31538,8879,-31542,8868,-31545,8857,-31548,8846,-31551,8836,-31554,8825,-31557,8814,-31560,8803,-31563,8793,-31566,8782,-31569,8771,-31572,8760,-31575,8750,-31578,8739,-31581,8728,-31584,8717,-31587,8707,-31589,8696,-31592,8685,-31595,8674,-31598,8663,-31601,8653,-31604,8642,-31607,8631,-31610,8620,-31613,8610,-31616,8599,-31619,8588,-31622,8577,-31625,8567,-31628,8556,-31631,8545,-31634,8534,-31636,8523,-31639,8513,-31642,8502,-31645,8491,-31648,8480,-31651,8469,-31654,8459,-31657,8448,-31660,8437,-31663,8426,-31665,8415,-31668,8405,-31671,8394,-31674,8383,-31677,8372,-31680,8361,-31683,8351,-31685,8340,-31688,8329,-31691,8318,-31694,8307,-31697,8297,-31700,8286,-31702,8275,-31705,8264,-31708,8253,-31711,8243,-31714,8232,-31717,8221,-31719,8210,-31722,8199,-31725,8189,-31728,8178,-31730,8167,-31733,8156,-31736,8145,-31739,8134,-31742,8124,-31744,8113,-31747,8102,-31750,8091,-31753,8080,-31755,8070,-31758,8059,-31761,8048,-31764,8037,-31766,8026,-31769,8015,-31772,8005,-31775,7994,-31777,7983,-31780,7972,-31783,7961,-31786,7950,-31788,7940,-31791,7929,-31794,7918,-31796,7907,-31799,7896,-31802,7885,-31804,7875,-31807,7864,-31810,7853,-31812,7842,-31815,7831,-31818,7820,-31820,7809,-31823,7799,-31826,7788,-31828,7777,-31831,7766,-31834,7755,-31836,7744,-31839,7733,-31842,7723,-31844,7712,-31847,7701,-31850,7690,-31852,7679,-31855,7668,-31857,7657,-31860,7647,-31863,7636,-31865,7625,-31868,7614,-31870,7603,-31873,7592,-31876,7581,-31878,7571,-31881,7560,-31883,7549,-31886,7538,-31889,7527,-31891,7516,-31894,7505,-31896,7494,-31899,7484,-31901,7473,-31904,7462,-31906,7451,-31909,7440,-31912,7429,-31914,7418,-31917,7407,-31919,7397,-31922,7386,-31924,7375,-31927,7364,-31929,7353,-31932,7342,-31934,7331,-31937,7320,-31939,7310,-31942,7299,-31944,7288,-31947,7277,-31949,7266,-31952,7255,-31954,7244,-31957,7233,-31959,7222,-31962,7211,-31964,7201,-31966,7190,-31969,7179,-31971,7168,-31974,7157,-31976,7146,-31979,7135,-31981,7124,-31984,7113,-31986,7102,-31988,7092,-31991,7081,-31993,7070,-31996,7059,-31998,7048,-32000,7037,-32003,7026,-32005,7015,-32008,7004,-32010,6993,-32012,6982,-32015,6972,-32017,6961,-32020,6950,-32022,6939,-32024,6928,-32027,6917,-32029,6906,-32031,6895,-32034,6884,-32036,6873,-32038,6862,-32041,6851,-32043,6841,-32045,6830,-32048,6819,-32050,6808,-32052,6797,-32055,6786,-32057,6775,-32059,6764,-32062,6753,-32064,6742,-32066,6731,-32069,6720,-32071,6709,-32073,6698,-32075,6688,-32078,6677,-32080,6666,-32082,6655,-32085,6644,-32087,6633,-32089,6622,-32091,6611,-32094,6600,-32096,6589,-32098,6578,-32100,6567,-32103,6556,-32105,6545,-32107,6534,-32109,6523,-32111,6512,-32114,6502,-32116,6491,-32118,6480,-32120,6469,-32123,6458,-32125,6447,-32127,6436,-32129,6425,-32131,6414,-32134,6403,-32136,6392,-32138,6381,-32140,6370,-32142,6359,-32144,6348,-32147,6337,-32149,6326,-32151,6315,-32153,6304,-32155,6293,-32157,6282,-32159,6271,-32162,6261,-32164,6250,-32166,6239,-32168,6228,-32170,6217,-32172,6206,-32174,6195,-32177,6184,-32179,6173,-32181,6162,-32183,6151,-32185,6140,-32187,6129,-32189,6118,-32191,6107,-32193,6096,-32195,6085,-32197,6074,-32200,6063,-32202,6052,-32204,6041,-32206,6030,-32208,6019,-32210,6008,-32212,5997,-32214,5986,-32216,5975,-32218,5964,-32220,5953,-32222,5942,-32224,5931,-32226,5920,-32228,5909,-32230,5898,-32232,5887,-32234,5876,-32236,5865,-32238,5854,-32240,5843,-32242,5832,-32244,5821,-32246,5810,-32248,5799,-32250,5788,-32252,5777,-32254,5766,-32256,5755,-32258,5744,-32260,5733,-32262,5722,-32264,5711,-32266,5700,-32268,5689,-32270,5678,-32272,5667,-32274,5656,-32275,5645,-32277,5634,-32279,5623,-32281,5612,-32283,5601,-32285,5590,-32287,5579,-32289,5568,-32291,5557,-32293,5546,-32295,5535,-32296,5524,-32298,5513,-32300,5502,-32302,5491,-32304,5480,-32306,5469,-32308,5458,-32310,5447,-32311,5436,-32313,5425,-32315,5414,-32317,5403,-32319,5392,-32321,5381,-32323,5370,-32324,5359,-32326,5348,-32328,5337,-32330,5326,-32332,5315,-32333,5304,-32335,5293,-32337,5282,-32339,5271,-32341,5260,-32342,5249,-32344,5238,-32346,5227,-32348,5216,-32350,5205,-32351,5194,-32353,5183,-32355,5172,-32357,5161,-32358,5150,-32360,5139,-32362,5128,-32364,5117,-32365,5106,-32367,5094,-32369,5083,-32371,5072,-32372,5061,-32374,5050,-32376,5039,-32378,5028,-32379,5017,-32381,5006,-32383,4995,-32384,4984,-32386,4973,-32388,4962,-32390,4951,-32391,4940,-32393,4929,-32395,4918,-32396,4907,-32398,4896,-32400,4885,-32401,4874,-32403,4863,-32405,4852,-32406,4841,-32408,4830,-32410,4818,-32411,4807,-32413,4796,-32414,4785,-32416,4774,-32418,4763,-32419,4752,-32421,4741,-32423,4730,-32424,4719,-32426,4708,-32427,4697,-32429,4686,-32431,4675,-32432,4664,-32434,4653,-32435,4642,-32437,4631,-32439,4620,-32440,4608,-32442,4597,-32443,4586,-32445,4575,-32446,4564,-32448,4553,-32450,4542,-32451,4531,-32453,4520,-32454,4509,-32456,4498,-32457,4487,-32459,4476,-32460,4465,-32462,4454,-32463,4443,-32465,4431,-32466,4420,-32468,4409,-32469,4398,-32471,4387,-32472,4376,-32474,4365,-32475,4354,-32477,4343,-32478,4332,-32480,4321,-32481,4310,-32483,4299,-32484,4288,-32486,4276,-32487,4265,-32489,4254,-32490,4243,-32492,4232,-32493,4221,-32494,4210,-32496,4199,-32497,4188,-32499,4177,-32500,4166,-32502,4155,-32503,4144,-32504,4132,-32506,4121,-32507,4110,-32509,4099,-32510,4088,-32511,4077,-32513,4066,-32514,4055,-32516,4044,-32517,4033,-32518,4022,-32520,4011,-32521,3999,-32522,3988,-32524,3977,-32525,3966,-32527,3955,-32528,3944,-32529,3933,-32531,3922,-32532,3911,-32533,3900,-32535,3889,-32536,3877,-32537,3866,-32539,3855,-32540,3844,-32541,3833,-32542,3822,-32544,3811,-32545,3800,-32546,3789,-32548,3778,-32549,3767,-32550,3755,-32552,3744,-32553,3733,-32554,3722,-32555,3711,-32557,3700,-32558,3689,-32559,3678,-32560,3667,-32562,3656,-32563,3644,-32564,3633,-32565,3622,-32567,3611,-32568,3600,-32569,3589,-32570,3578,-32572,3567,-32573,3556,-32574,3545,-32575,3533,-32576,3522,-32578,3511,-32579,3500,-32580,3489,-32581,3478,-32582,3467,-32584,3456,-32585,3445,-32586,3433,-32587,3422,-32588,3411,-32589,3400,-32591,3389,-32592,3378,-32593,3367,-32594,3356,-32595,3345,-32596,3333,-32597,3322,-32599,3311,-32600,3300,-32601,3289,-32602,3278,-32603,3267,-32604,3256,-32605,3245,-32606,3233,-32608,3222,-32609,3211,-32610,3200,-32611,3189,-32612,3178,-32613,3167,-32614,3156,-32615,3145,-32616,3133,-32617,3122,-32618,3111,-32619,3100,-32620,3089,-32622,3078,-32623,3067,-32624,3056,-32625,3044,-32626,3033,-32627,3022,-32628,3011,-32629,3000,-32630,2989,-32631,2978,-32632,2967,-32633,2955,-32634,2944,-32635,2933,-32636,2922,-32637,2911,-32638,2900,-32639,2889,-32640,2878,-32641,2866,-32642,2855,-32643,2844,-32644,2833,-32645,2822,-32646,2811,-32647,2800,-32648,2789,-32649,2777,-32650,2766,-32650,2755,-32651,2744,-32652,2733,-32653,2722,-32654,2711,-32655,2700,-32656,2688,-32657,2677,-32658,2666,-32659,2655,-32660,2644,-32661,2633,-32662,2622,-32662,2610,-32663,2599,-32664,2588,-32665,2577,-32666,2566,-32667,2555,-32668,2544,-32669,2533,-32669,2521,-32670,2510,-32671,2499,-32672,2488,-32673,2477,-32674,2466,-32675,2455,-32675,2443,-32676,2432,-32677,2421,-32678,2410,-32679,2399,-32680,2388,-32680,2377,-32681,2365,-32682,2354,-32683,2343,-32684,2332,-32684,2321,-32685,2310,-32686,2299,-32687,2287,-32688,2276,-32688,2265,-32689,2254,-32690,2243,-32691,2232,-32691,2221,-32692,2209,-32693,2198,-32694,2187,-32694,2176,-32695,2165,-32696,2154,-32697,2143,-32697,2131,-32698,2120,-32699,2109,-32700,2098,-32700,2087,-32701,2076,-32702,2065,-32702,2053,-32703,2042,-32704,2031,-32704,2020,-32705,2009,-32706,1998,-32707,1986,-32707,1975,-32708,1964,-32709,1953,-32709,1942,-32710,1931,-32711,1920,-32711,1908,-32712,1897,-32712,1886,-32713,1875,-32714,1864,-32714,1853,-32715,1842,-32716,1830,-32716,1819,-32717,1808,-32718,1797,-32718,1786,-32719,1775,-32719,1763,-32720,1752,-32721,1741,-32721,1730,-32722,1719,-32722,1708,-32723,1697,-32724,1685,-32724,1674,-32725,1663,-32725,1652,-32726,1641,-32726,1630,-32727,1618,-32727,1607,-32728,1596,-32729,1585,-32729,1574,-32730,1563,-32730,1552,-32731,1540,-32731,1529,-32732,1518,-32732,1507,-32733,1496,-32733,1485,-32734,1473,-32734,1462,-32735,1451,-32735,1440,-32736,1429,-32736,1418,-32737,1406,-32737,1395,-32738,1384,-32738,1373,-32739,1362,-32739,1351,-32740,1339,-32740,1328,-32741,1317,-32741,1306,-32741,1295,-32742,1284,-32742,1273,-32743,1261,-32743,1250,-32744,1239,-32744,1228,-32744,1217,-32745,1206,-32745,1194,-32746,1183,-32746,1172,-32747,1161,-32747,1150,-32747,1139,-32748,1127,-32748,1116,-32748,1105,-32749,1094,-32749,1083,-32750,1072,-32750,1060,-32750,1049,-32751,1038,-32751,1027,-32751,1016,-32752,1005,-32752,993,-32752,982,-32753,971,-32753,960,-32753,949,-32754,938,-32754,926,-32754,915,-32755,904,-32755,893,-32755,882,-32756,871,-32756,859,-32756,848,-32757,837,-32757,826,-32757,815,-32757,804,-32758,792,-32758,781,-32758,770,-32758,759,-32759,748,-32759,737,-32759,725,-32759,714,-32760,703,-32760,692,-32760,681,-32760,670,-32761,658,-32761,647,-32761,636,-32761,625,-32762,614,-32762,603,-32762,591,-32762,580,-32762,569,-32763,558,-32763,547,-32763,536,-32763,524,-32763,513,-32763,502,-32764,491,-32764,480,-32764,469,-32764,457,-32764,446,-32764,435,-32765,424,-32765,413,-32765,402,-32765,390,-32765,379,-32765,368,-32765,357,-32766,346,-32766,335,-32766,323,-32766,312,-32766,301,-32766,290,-32766,279,-32766,268,-32766,256,-32766,245,-32767,234,-32767,223,-32767,212,-32767,201,-32767,189,-32767,178,-32767,167,-32767,156,-32767,145,-32767,134,-32767,122,-32767,111,-32767,100,-32767,89,-32767,78,-32767,67,-32767,55,-32767,44,-32767,33,-32767,22,-32767,11,-32767,0,-32767,-12,-32767,-23,-32767,-34,-32767,-45,-32767,-56,-32767,-68,-32767,-79,-32767,-90,-32767,-101,-32767,-112,-32767,-123,-32767,-135,-32767,-146,-32767,-157,-32767,-168,-32767,-179,-32767,-190,-32767,-202,-32767,-213,-32767,-224,-32767,-235,-32767,-246,-32767,-257,-32766,-269,-32766,-280,-32766,-291,-32766,-302,-32766,-313,-32766,-324,-32766,-336,-32766,-347,-32766,-358,-32766,-369,-32765,-380,-32765,-391,-32765,-403,-32765,-414,-32765,-425,-32765,-436,-32765,-447,-32764,-458,-32764,-470,-32764,-481,-32764,-492,-32764,-503,-32764,-514,-32763,-525,-32763,-537,-32763,-548,-32763,-559,-32763,-570,-32763,-581,-32762,-592,-32762,-604,-32762,-615,-32762,-626,-32762,-637,-32761,-648,-32761,-659,-32761,-671,-32761,-682,-32760,-693,-32760,-704,-32760,-715,-32760,-726,-32759,-738,-32759,-749,-32759,-760,-32759,-771,-32758,-782,-32758,-793,-32758,-805,-32758,-816,-32757,-827,-32757,-838,-32757,-849,-32757,-860,-32756,-872,-32756,-883,-32756,-894,-32755,-905,-32755,-916,-32755,-927,-32754,-939,-32754,-950,-32754,-961,-32753,-972,-32753,-983,-32753,-994,-32752,-1006,-32752,-1017,-32752,-1028,-32751,-1039,-32751,-1050,-32751,-1061,-32750,-1073,-32750,-1084,-32750,-1095,-32749,-1106,-32749,-1117,-32748,-1128,-32748,-1140,-32748,-1151,-32747,-1162,-32747,-1173,-32747,-1184,-32746,-1195,-32746,-1207,-32745,-1218,-32745,-1229,-32744,-1240,-32744,-1251,-32744,-1262,-32743,-1274,-32743,-1285,-32742,-1296,-32742,-1307,-32741,-1318,-32741,-1329,-32741,-1340,-32740,-1352,-32740,-1363,-32739,-1374,-32739,-1385,-32738,-1396,-32738,-1407,-32737,-1419,-32737,-1430,-32736,-1441,-32736,-1452,-32735,-1463,-32735,-1474,-32734,-1486,-32734,-1497,-32733,-1508,-32733,-1519,-32732,-1530,-32732,-1541,-32731,-1553,-32731,-1564,-32730,-1575,-32730,-1586,-32729,-1597,-32729,-1608,-32728,-1619,-32727,-1631,-32727,-1642,-32726,-1653,-32726,-1664,-32725,-1675,-32725,-1686,-32724,-1698,-32724,-1709,-32723,-1720,-32722,-1731,-32722,-1742,-32721,-1753,-32721,-1764,-32720,-1776,-32719,-1787,-32719,-1798,-32718,-1809,-32718,-1820,-32717,-1831,-32716,-1843,-32716,-1854,-32715,-1865,-32714,-1876,-32714,-1887,-32713,-1898,-32712,-1909,-32712,-1921,-32711,-1932,-32711,-1943,-32710,-1954,-32709,-1965,-32709,-1976,-32708,-1987,-32707,-1999,-32707,-2010,-32706,-2021,-32705,-2032,-32704,-2043,-32704,-2054,-32703,-2066,-32702,-2077,-32702,-2088,-32701,-2099,-32700,-2110,-32700,-2121,-32699,-2132,-32698,-2144,-32697,-2155,-32697,-2166,-32696,-2177,-32695,-2188,-32694,-2199,-32694,-2210,-32693,-2222,-32692,-2233,-32691,-2244,-32691,-2255,-32690,-2266,-32689,-2277,-32688,-2288,-32688,-2300,-32687,-2311,-32686,-2322,-32685,-2333,-32684,-2344,-32684,-2355,-32683,-2366,-32682,-2378,-32681,-2389,-32680,-2400,-32680,-2411,-32679,-2422,-32678,-2433,-32677,-2444,-32676,-2456,-32675,-2467,-32675,-2478,-32674,-2489,-32673,-2500,-32672,-2511,-32671,-2522,-32670,-2534,-32669,-2545,-32669,-2556,-32668,-2567,-32667,-2578,-32666,-2589,-32665,-2600,-32664,-2611,-32663,-2623,-32662,-2634,-32662,-2645,-32661,-2656,-32660,-2667,-32659,-2678,-32658,-2689,-32657,-2701,-32656,-2712,-32655,-2723,-32654,-2734,-32653,-2745,-32652,-2756,-32651,-2767,-32650,-2778,-32650,-2790,-32649,-2801,-32648,-2812,-32647,-2823,-32646,-2834,-32645,-2845,-32644,-2856,-32643,-2867,-32642,-2879,-32641,-2890,-32640,-2901,-32639,-2912,-32638,-2923,-32637,-2934,-32636,-2945,-32635,-2956,-32634,-2968,-32633,-2979,-32632,-2990,-32631,-3001,-32630,-3012,-32629,-3023,-32628,-3034,-32627,-3045,-32626,-3057,-32625,-3068,-32624,-3079,-32623,-3090,-32622,-3101,-32620,-3112,-32619,-3123,-32618,-3134,-32617,-3146,-32616,-3157,-32615,-3168,-32614,-3179,-32613,-3190,-32612,-3201,-32611,-3212,-32610,-3223,-32609,-3234,-32608,-3246,-32606,-3257,-32605,-3268,-32604,-3279,-32603,-3290,-32602,-3301,-32601,-3312,-32600,-3323,-32599,-3334,-32597,-3346,-32596,-3357,-32595,-3368,-32594,-3379,-32593,-3390,-32592,-3401,-32591,-3412,-32589,-3423,-32588,-3434,-32587,-3446,-32586,-3457,-32585,-3468,-32584,-3479,-32582,-3490,-32581,-3501,-32580,-3512,-32579,-3523,-32578,-3534,-32576,-3546,-32575,-3557,-32574,-3568,-32573,-3579,-32572,-3590,-32570,-3601,-32569,-3612,-32568,-3623,-32567,-3634,-32565,-3645,-32564,-3657,-32563,-3668,-32562,-3679,-32560,-3690,-32559,-3701,-32558,-3712,-32557,-3723,-32555,-3734,-32554,-3745,-32553,-3756,-32552,-3768,-32550,-3779,-32549,-3790,-32548,-3801,-32546,-3812,-32545,-3823,-32544,-3834,-32542,-3845,-32541,-3856,-32540,-3867,-32539,-3878,-32537,-3890,-32536,-3901,-32535,-3912,-32533,-3923,-32532,-3934,-32531,-3945,-32529,-3956,-32528,-3967,-32527,-3978,-32525,-3989,-32524,-4000,-32522,-4012,-32521,-4023,-32520,-4034,-32518,-4045,-32517,-4056,-32516,-4067,-32514,-4078,-32513,-4089,-32511,-4100,-32510,-4111,-32509,-4122,-32507,-4133,-32506,-4145,-32504,-4156,-32503,-4167,-32502,-4178,-32500,-4189,-32499,-4200,-32497,-4211,-32496,-4222,-32494,-4233,-32493,-4244,-32492,-4255,-32490,-4266,-32489,-4277,-32487,-4289,-32486,-4300,-32484,-4311,-32483,-4322,-32481,-4333,-32480,-4344,-32478,-4355,-32477,-4366,-32475,-4377,-32474,-4388,-32472,-4399,-32471,-4410,-32469,-4421,-32468,-4432,-32466,-4444,-32465,-4455,-32463,-4466,-32462,-4477,-32460,-4488,-32459,-4499,-32457,-4510,-32456,-4521,-32454,-4532,-32453,-4543,-32451,-4554,-32450,-4565,-32448,-4576,-32446,-4587,-32445,-4598,-32443,-4609,-32442,-4621,-32440,-4632,-32439,-4643,-32437,-4654,-32435,-4665,-32434,-4676,-32432,-4687,-32431,-4698,-32429,-4709,-32427,-4720,-32426,-4731,-32424,-4742,-32423,-4753,-32421,-4764,-32419,-4775,-32418,-4786,-32416,-4797,-32414,-4808,-32413,-4819,-32411,-4831,-32410,-4842,-32408,-4853,-32406,-4864,-32405,-4875,-32403,-4886,-32401,-4897,-32400,-4908,-32398,-4919,-32396,-4930,-32395,-4941,-32393,-4952,-32391,-4963,-32390,-4974,-32388,-4985,-32386,-4996,-32384,-5007,-32383,-5018,-32381,-5029,-32379,-5040,-32378,-5051,-32376,-5062,-32374,-5073,-32372,-5084,-32371,-5095,-32369,-5107,-32367,-5118,-32365,-5129,-32364,-5140,-32362,-5151,-32360,-5162,-32358,-5173,-32357,-5184,-32355,-5195,-32353,-5206,-32351,-5217,-32350,-5228,-32348,-5239,-32346,-5250,-32344,-5261,-32342,-5272,-32341,-5283,-32339,-5294,-32337,-5305,-32335,-5316,-32333,-5327,-32332,-5338,-32330,-5349,-32328,-5360,-32326,-5371,-32324,-5382,-32323,-5393,-32321,-5404,-32319,-5415,-32317,-5426,-32315,-5437,-32313,-5448,-32311,-5459,-32310,-5470,-32308,-5481,-32306,-5492,-32304,-5503,-32302,-5514,-32300,-5525,-32298,-5536,-32296,-5547,-32295,-5558,-32293,-5569,-32291,-5580,-32289,-5591,-32287,-5602,-32285,-5613,-32283,-5624,-32281,-5635,-32279,-5646,-32277,-5657,-32275,-5668,-32274,-5679,-32272,-5690,-32270,-5701,-32268,-5712,-32266,-5723,-32264,-5734,-32262,-5745,-32260,-5756,-32258,-5767,-32256,-5778,-32254,-5789,-32252,-5800,-32250,-5811,-32248,-5822,-32246,-5833,-32244,-5844,-32242,-5855,-32240,-5866,-32238,-5877,-32236,-5888,-32234,-5899,-32232,-5910,-32230,-5921,-32228,-5932,-32226,-5943,-32224,-5954,-32222,-5965,-32220,-5976,-32218,-5987,-32216,-5998,-32214,-6009,-32212,-6020,-32210,-6031,-32208,-6042,-32206,-6053,-32204,-6064,-32202,-6075,-32200,-6086,-32197,-6097,-32195,-6108,-32193,-6119,-32191,-6130,-32189,-6141,-32187,-6152,-32185,-6163,-32183,-6174,-32181,-6185,-32179,-6196,-32177,-6207,-32174,-6218,-32172,-6229,-32170,-6240,-32168,-6251,-32166,-6262,-32164,-6272,-32162,-6283,-32159,-6294,-32157,-6305,-32155,-6316,-32153,-6327,-32151,-6338,-32149,-6349,-32147,-6360,-32144,-6371,-32142,-6382,-32140,-6393,-32138,-6404,-32136,-6415,-32134,-6426,-32131,-6437,-32129,-6448,-32127,-6459,-32125,-6470,-32123,-6481,-32120,-6492,-32118,-6503,-32116,-6513,-32114,-6524,-32111,-6535,-32109,-6546,-32107,-6557,-32105,-6568,-32103,-6579,-32100,-6590,-32098,-6601,-32096,-6612,-32094,-6623,-32091,-6634,-32089,-6645,-32087,-6656,-32085,-6667,-32082,-6678,-32080,-6689,-32078,-6699,-32075,-6710,-32073,-6721,-32071,-6732,-32069,-6743,-32066,-6754,-32064,-6765,-32062,-6776,-32059,-6787,-32057,-6798,-32055,-6809,-32052,-6820,-32050,-6831,-32048,-6842,-32045,-6852,-32043,-6863,-32041,-6874,-32038,-6885,-32036,-6896,-32034,-6907,-32031,-6918,-32029,-6929,-32027,-6940,-32024,-6951,-32022,-6962,-32020,-6973,-32017,-6983,-32015,-6994,-32012,-7005,-32010,-7016,-32008,-7027,-32005,-7038,-32003,-7049,-32000,-7060,-31998,-7071,-31996,-7082,-31993,-7093,-31991,-7103,-31988,-7114,-31986,-7125,-31984,-7136,-31981,-7147,-31979,-7158,-31976,-7169,-31974,-7180,-31971,-7191,-31969,-7202,-31966,-7212,-31964,-7223,-31962,-7234,-31959,-7245,-31957,-7256,-31954,-7267,-31952,-7278,-31949,-7289,-31947,-7300,-31944,-7311,-31942,-7321,-31939,-7332,-31937,-7343,-31934,-7354,-31932,-7365,-31929,-7376,-31927,-7387,-31924,-7398,-31922,-7408,-31919,-7419,-31917,-7430,-31914,-7441,-31912,-7452,-31909,-7463,-31906,-7474,-31904,-7485,-31901,-7495,-31899,-7506,-31896,-7517,-31894,-7528,-31891,-7539,-31889,-7550,-31886,-7561,-31883,-7572,-31881,-7582,-31878,-7593,-31876,-7604,-31873,-7615,-31870,-7626,-31868,-7637,-31865,-7648,-31863,-7658,-31860,-7669,-31857,-7680,-31855,-7691,-31852,-7702,-31850,-7713,-31847,-7724,-31844,-7734,-31842,-7745,-31839,-7756,-31836,-7767,-31834,-7778,-31831,-7789,-31828,-7800,-31826,-7810,-31823,-7821,-31820,-7832,-31818,-7843,-31815,-7854,-31812,-7865,-31810,-7876,-31807,-7886,-31804,-7897,-31802,-7908,-31799,-7919,-31796,-7930,-31794,-7941,-31791,-7951,-31788,-7962,-31786,-7973,-31783,-7984,-31780,-7995,-31777,-8006,-31775,-8016,-31772,-8027,-31769,-8038,-31766,-8049,-31764,-8060,-31761,-8071,-31758,-8081,-31755,-8092,-31753,-8103,-31750,-8114,-31747,-8125,-31744,-8135,-31742,-8146,-31739,-8157,-31736,-8168,-31733,-8179,-31730,-8190,-31728,-8200,-31725,-8211,-31722,-8222,-31719,-8233,-31717,-8244,-31714,-8254,-31711,-8265,-31708,-8276,-31705,-8287,-31702,-8298,-31700,-8308,-31697,-8319,-31694,-8330,-31691,-8341,-31688,-8352,-31685,-8362,-31683,-8373,-31680,-8384,-31677,-8395,-31674,-8406,-31671,-8416,-31668,-8427,-31665,-8438,-31663,-8449,-31660,-8460,-31657,-8470,-31654,-8481,-31651,-8492,-31648,-8503,-31645,-8514,-31642,-8524,-31639,-8535,-31636,-8546,-31634,-8557,-31631,-8568,-31628,-8578,-31625,-8589,-31622,-8600,-31619,-8611,-31616,-8621,-31613,-8632,-31610,-8643,-31607,-8654,-31604,-8664,-31601,-8675,-31598,-8686,-31595,-8697,-31592,-8708,-31589,-8718,-31587,-8729,-31584,-8740,-31581,-8751,-31578,-8761,-31575,-8772,-31572,-8783,-31569,-8794,-31566,-8804,-31563,-8815,-31560,-8826,-31557,-8837,-31554,-8847,-31551,-8858,-31548,-8869,-31545,-8880,-31542,-8890,-31538,-8901,-31535,-8912,-31532,-8923,-31529,-8933,-31526,-8944,-31523,-8955,-31520,-8966,-31517,-8976,-31514,-8987,-31511,-8998,-31508,-9009,-31505,-9019,-31502,-9030,-31499,-9041,-31496,-9052,-31493,-9062,-31490,-9073,-31486,-9084,-31483,-9095,-31480,-9105,-31477,-9116,-31474,-9127,-31471,-9137,-31468,-9148,-31465,-9159,-31462,-9170,-31458,-9180,-31455,-9191,-31452,-9202,-31449,-9213,-31446,-9223,-31443,-9234,-31440,-9245,-31436,-9255,-31433,-9266,-31430,-9277,-31427,-9288,-31424,-9298,-31421,-9309,-31418,-9320,-31414,-9330,-31411,-9341,-31408,-9352,-31405,-9363,-31402,-9373,-31398,-9384,-31395,-9395,-31392,-9405,-31389,-9416,-31386,-9427,-31382,-9437,-31379,-9448,-31376,-9459,-31373,-9469,-31370,-9480,-31366,-9491,-31363,-9502,-31360,-9512,-31357,-9523,-31353,-9534,-31350,-9544,-31347,-9555,-31344,-9566,-31340,-9576,-31337,-9587,-31334,-9598,-31331,-9608,-31327,-9619,-31324,-9630,-31321,-9640,-31317,-9651,-31314,-9662,-31311,-9672,-31308,-9683,-31304,-9694,-31301,-9704,-31298,-9715,-31294,-9726,-31291,-9736,-31288,-9747,-31284,-9758,-31281,-9768,-31278,-9779,-31274,-9790,-31271,-9800,-31268,-9811,-31264,-9822,-31261,-9832,-31258,-9843,-31254,-9854,-31251,-9864,-31248,-9875,-31244,-9886,-31241,-9896,-31237,-9907,-31234,-9918,-31231,-9928,-31227,-9939,-31224,-9950,-31221,-9960,-31217,-9971,-31214,-9981,-31210,-9992,-31207,-10003,-31204,-10013,-31200,-10024,-31197,-10035,-31193,-10045,-31190,-10056,-31186,-10067,-31183,-10077,-31180,-10088,-31176,-10098,-31173,-10109,-31169,-10120,-31166,-10130,-31162,-10141,-31159,-10152,-31155,-10162,-31152,-10173,-31149,-10183,-31145,-10194,-31142,-10205,-31138,-10215,-31135,-10226,-31131,-10236,-31128,-10247,-31124,-10258,-31121,-10268,-31117,-10279,-31114,-10290,-31110,-10300,-31107,-10311,-31103,-10321,-31100,-10332,-31096,-10343,-31093,-10353,-31089,-10364,-31086,-10374,-31082,-10385,-31078,-10396,-31075,-10406,-31071,-10417,-31068,-10427,-31064,-10438,-31061,-10448,-31057,-10459,-31054,-10470,-31050,-10480,-31046,-10491,-31043,-10501,-31039,-10512,-31036,-10523,-31032,-10533,-31029,-10544,-31025,-10554,-31021,-10565,-31018,-10575,-31014,-10586,-31011,-10597,-31007,-10607,-31003,-10618,-31000,-10628,-30996,-10639,-30992,-10649,-30989,-10660,-30985,-10671,-30982,-10681,-30978,-10692,-30974,-10702,-30971,-10713,-30967,-10723,-30963,-10734,-30960,-10744,-30956,-10755,-30952,-10766,-30949,-10776,-30945,-10787,-30941,-10797,-30938,-10808,-30934,-10818,-30930,-10829,-30927,-10839,-30923,-10850,-30919,-10860,-30916,-10871,-30912,-10881,-30908,-10892,-30904,-10903,-30901,-10913,-30897,-10924,-30893,-10934,-30890,-10945,-30886,-10955,-30882,-10966,-30878,-10976,-30875,-10987,-30871,-10997,-30867,-11008,-30863,-11018,-30860,-11029,-30856,-11039,-30852,-11050,-30848,-11060,-30845,-11071,-30841,-11081,-30837,-11092,-30833,-11102,-30829,-11113,-30826,-11123,-30822,-11134,-30818,-11144,-30814,-11155,-30810,-11165,-30807,-11176,-30803,-11186,-30799,-11197,-30795,-11207,-30791,-11218,-30788,-11228,-30784,-11239,-30780,-11249,-30776,-11260,-30772,-11270,-30768,-11281,-30765,-11291,-30761,-11302,-30757,-11312,-30753,-11323,-30749,-11333,-30745,-11344,-30741,-11354,-30738,-11365,-30734,-11375,-30730,-11386,-30726,-11396,-30722,-11407,-30718,-11417,-30714,-11428,-30710,-11438,-30706,-11449,-30703,-11459,-30699,-11469,-30695,-11480,-30691,-11490,-30687,-11501,-30683,-11511,-30679,-11522,-30675,-11532,-30671,-11543,-30667,-11553,-30663,-11564,-30659,-11574,-30656,-11584,-30652,-11595,-30648,-11605,-30644,-11616,-30640,-11626,-30636,-11637,-30632,-11647,-30628,-11658,-30624,-11668,-30620,-11678,-30616,-11689,-30612,-11699,-30608,-11710,-30604,-11720,-30600,-11731,-30596,-11741,-30592,-11751,-30588,-11762,-30584,-11772,-30580,-11783,-30576,-11793,-30572,-11804,-30568,-11814,-30564,-11824,-30560,-11835,-30556,-11845,-30552,-11856,-30548,-11866,-30544,-11877,-30540,-11887,-30536,-11897,-30531,-11908,-30527,-11918,-30523,-11929,-30519,-11939,-30515,-11949,-30511,-11960,-30507,-11970,-30503,-11981,-30499,-11991,-30495,-12001,-30491,-12012,-30487,-12022,-30483,-12033,-30478,-12043,-30474,-12053,-30470,-12064,-30466,-12074,-30462,-12084,-30458,-12095,-30454,-12105,-30450,-12116,-30446,-12126,-30441,-12136,-30437,-12147,-30433,-12157,-30429,-12167,-30425,-12178,-30421,-12188,-30417,-12199,-30412,-12209,-30408,-12219,-30404,-12230,-30400,-12240,-30396,-12250,-30392,-12261,-30387,-12271,-30383,-12281,-30379,-12292,-30375,-12302,-30371,-12313,-30366,-12323,-30362,-12333,-30358,-12344,-30354,-12354,-30350,-12364,-30345,-12375,-30341,-12385,-30337,-12395,-30333,-12406,-30329,-12416,-30324,-12426,-30320,-12437,-30316,-12447,-30312,-12457,-30307,-12468,-30303,-12478,-30299,-12488,-30295,-12499,-30290,-12509,-30286,-12519,-30282,-12530,-30278,-12540,-30273,-12550,-30269,-12561,-30265,-12571,-30260,-12581,-30256,-12591,-30252,-12602,-30248,-12612,-30243,-12622,-30239,-12633,-30235,-12643,-30230,-12653,-30226,-12664,-30222,-12674,-30217,-12684,-30213,-12695,-30209,-12705,-30204,-12715,-30200,-12725,-30196,-12736,-30191,-12746,-30187,-12756,-30183,-12767,-30178,-12777,-30174,-12787,-30170,-12797,-30165,-12808,-30161,-12818,-30157,-12828,-30152,-12839,-30148,-12849,-30143,-12859,-30139,-12869,-30135,-12880,-30130,-12890,-30126,-12900,-30122,-12910,-30117,-12921,-30113,-12931,-30108,-12941,-30104,-12951,-30099,-12962,-30095,-12972,-30091,-12982,-30086,-12993,-30082,-13003,-30077,-13013,-30073,-13023,-30068,-13034,-30064,-13044,-30060,-13054,-30055,-13064,-30051,-13075,-30046,-13085,-30042,-13095,-30037,-13105,-30033,-13115,-30028,-13126,-30024,-13136,-30019,-13146,-30015,-13156,-30010,-13167,-30006,-13177,-30002,-13187,-29997,-13197,-29993,-13208,-29988,-13218,-29984,-13228,-29979,-13238,-29974,-13248,-29970,-13259,-29965,-13269,-29961,-13279,-29956,-13289,-29952,-13299,-29947,-13310,-29943,-13320,-29938,-13330,-29934,-13340,-29929,-13350,-29925,-13361,-29920,-13371,-29916,-13381,-29911,-13391,-29906,-13401,-29902,-13412,-29897,-13422,-29893,-13432,-29888,-13442,-29884,-13452,-29879,-13463,-29874,-13473,-29870,-13483,-29865,-13493,-29861,-13503,-29856,-13513,-29851,-13524,-29847,-13534,-29842,-13544,-29838,-13554,-29833,-13564,-29828,-13575,-29824,-13585,-29819,-13595,-29814,-13605,-29810,-13615,-29805,-13625,-29801,-13635,-29796,-13646,-29791,-13656,-29787,-13666,-29782,-13676,-29777,-13686,-29773,-13696,-29768,-13707,-29763,-13717,-29759,-13727,-29754,-13737,-29749,-13747,-29745,-13757,-29740,-13767,-29735,-13778,-29730,-13788,-29726,-13798,-29721,-13808,-29716,-13818,-29712,-13828,-29707,-13838,-29702,-13848,-29697,-13859,-29693,-13869,-29688,-13879,-29683,-13889,-29679,-13899,-29674,-13909,-29669,-13919,-29664,-13929,-29660,-13939,-29655,-13950,-29650,-13960,-29645,-13970,-29641,-13980,-29636,-13990,-29631,-14000,-29626,-14010,-29622,-14020,-29617,-14030,-29612,-14040,-29607,-14051,-29602,-14061,-29598,-14071,-29593,-14081,-29588,-14091,-29583,-14101,-29578,-14111,-29574,-14121,-29569,-14131,-29564,-14141,-29559,-14151,-29554,-14161,-29549,-14172,-29545,-14182,-29540,-14192,-29535,-14202,-29530,-14212,-29525,-14222,-29520,-14232,-29516,-14242,-29511,-14252,-29506,-14262,-29501,-14272,-29496,-14282,-29491,-14292,-29486,-14302,-29482,-14312,-29477,-14322,-29472,-14332,-29467,-14343,-29462,-14353,-29457,-14363,-29452,-14373,-29447,-14383,-29442,-14393,-29438,-14403,-29433,-14413,-29428,-14423,-29423,-14433,-29418,-14443,-29413,-14453,-29408,-14463,-29403,-14473,-29398,-14483,-29393,-14493,-29388,-14503,-29383,-14513,-29378,-14523,-29373,-14533,-29369,-14543,-29364,-14553,-29359,-14563,-29354,-14573,-29349,-14583,-29344,-14593,-29339,-14603,-29334,-14613,-29329,-14623,-29324,-14633,-29319,-14643,-29314,-14653,-29309,-14663,-29304,-14673,-29299,-14683,-29294,-14693,-29289,-14703,-29284,-14713,-29279,-14723,-29274,-14733,-29269,-14743,-29264,-14753,-29259,-14763,-29254,-14773,-29249,-14783,-29244,-14793,-29239,-14803,-29234,-14813,-29228,-14823,-29223,-14833,-29218,-14843,-29213,-14853,-29208,-14862,-29203,-14872,-29198,-14882,-29193,-14892,-29188,-14902,-29183,-14912,-29178,-14922,-29173,-14932,-29168,-14942,-29163,-14952,-29157,-14962,-29152,-14972,-29147,-14982,-29142,-14992,-29137,-15002,-29132,-15012,-29127,-15022,-29122,-15031,-29117,-15041,-29111,-15051,-29106,-15061,-29101,-15071,-29096,-15081,-29091,-15091,-29086,-15101,-29081,-15111,-29075,-15121,-29070,-15131,-29065,-15141,-29060,-15150,-29055,-15160,-29050,-15170,-29045,-15180,-29039,-15190,-29034,-15200,-29029,-15210,-29024,-15220,-29019,-15230,-29013,-15239,-29008,-15249,-29003,-15259,-28998,-15269,-28993,-15279,-28987,-15289,-28982,-15299,-28977,-15309,-28972,-15319,-28967,-15328,-28961,-15338,-28956,-15348,-28951,-15358,-28946,-15368,-28940,-15378,-28935,-15388,-28930,-15397,-28925,-15407,-28919,-15417,-28914,-15427,-28909,-15437,-28904,-15447,-28898,-15457,-28893,-15466,-28888,-15476,-28883,-15486,-28877,-15496,-28872,-15506,-28867,-15516,-28861,-15526,-28856,-15535,-28851,-15545,-28846,-15555,-28840,-15565,-28835,-15575,-28830,-15584,-28824,-15594,-28819,-15604,-28814,-15614,-28808,-15624,-28803,-15634,-28798,-15643,-28792,-15653,-28787,-15663,-28782,-15673,-28776,-15683,-28771,-15692,-28766,-15702,-28760,-15712,-28755,-15722,-28750,-15732,-28744,-15741,-28739,-15751,-28734,-15761,-28728,-15771,-28723,-15781,-28717,-15790,-28712,-15800,-28707,-15810,-28701,-15820,-28696,-15830,-28691,-15839,-28685,-15849,-28680,-15859,-28674,-15869,-28669,-15878,-28663,-15888,-28658,-15898,-28653,-15908,-28647,-15918,-28642,-15927,-28636,-15937,-28631,-15947,-28626,-15957,-28620,-15966,-28615,-15976,-28609,-15986,-28604,-15996,-28598,-16005,-28593,-16015,-28587,-16025,-28582,-16035,-28576,-16044,-28571,-16054,-28566,-16064,-28560,-16073,-28555,-16083,-28549,-16093,-28544,-16103,-28538,-16112,-28533,-16122,-28527,-16132,-28522,-16142,-28516,-16151,-28511,-16161,-28505,-16171,-28500,-16180,-28494,-16190,-28489,-16200,-28483,-16210,-28478,-16219,-28472,-16229,-28466,-16239,-28461,-16248,-28455,-16258,-28450,-16268,-28444,-16277,-28439,-16287,-28433,-16297,-28428,-16307,-28422,-16316,-28417,-16326,-28411,-16336,-28405,-16345,-28400,-16355,-28394,-16365,-28389,-16374,-28383};
-
-int16_t twb18432[12288] = { 32767,0,32766,-23,32766,-45,32766,-68,32766,-90,32766,-112,32766,-135,32766,-157,32766,-179,32766,-202,32766,-224,32766,-246,32765,-269,32765,-291,32765,-313,32765,-336,32765,-358,32764,-380,32764,-403,32764,-425,32763,-447,32763,-470,32763,-492,32762,-514,32762,-537,32762,-559,32761,-581,32761,-604,32761,-626,32760,-648,32760,-671,32759,-693,32759,-715,32758,-738,32758,-760,32757,-782,32757,-805,32756,-827,32756,-849,32755,-872,32754,-894,32754,-916,32753,-939,32752,-961,32752,-983,32751,-1006,32750,-1028,32750,-1050,32749,-1073,32748,-1095,32747,-1117,32747,-1140,32746,-1162,32745,-1184,32744,-1207,32743,-1229,32743,-1251,32742,-1274,32741,-1296,32740,-1318,32739,-1340,32738,-1363,32737,-1385,32736,-1407,32735,-1430,32734,-1452,32733,-1474,32732,-1497,32731,-1519,32730,-1541,32729,-1564,32728,-1586,32727,-1608,32726,-1631,32725,-1653,32724,-1675,32723,-1698,32721,-1720,32720,-1742,32719,-1764,32718,-1787,32717,-1809,32715,-1831,32714,-1854,32713,-1876,32711,-1898,32710,-1921,32709,-1943,32708,-1965,32706,-1987,32705,-2010,32703,-2032,32702,-2054,32701,-2077,32699,-2099,32698,-2121,32696,-2144,32695,-2166,32693,-2188,32692,-2210,32690,-2233,32689,-2255,32687,-2277,32686,-2300,32684,-2322,32683,-2344,32681,-2366,32679,-2389,32678,-2411,32676,-2433,32674,-2456,32673,-2478,32671,-2500,32669,-2522,32668,-2545,32666,-2567,32664,-2589,32662,-2611,32661,-2634,32659,-2656,32657,-2678,32655,-2701,32653,-2723,32651,-2745,32649,-2767,32648,-2790,32646,-2812,32644,-2834,32642,-2856,32640,-2879,32638,-2901,32636,-2923,32634,-2945,32632,-2968,32630,-2990,32628,-3012,32626,-3034,32624,-3057,32622,-3079,32619,-3101,32617,-3123,32615,-3146,32613,-3168,32611,-3190,32609,-3212,32607,-3234,32604,-3257,32602,-3279,32600,-3301,32598,-3323,32595,-3346,32593,-3368,32591,-3390,32588,-3412,32586,-3434,32584,-3457,32581,-3479,32579,-3501,32577,-3523,32574,-3546,32572,-3568,32569,-3590,32567,-3612,32564,-3634,32562,-3657,32559,-3679,32557,-3701,32554,-3723,32552,-3745,32549,-3768,32547,-3790,32544,-3812,32541,-3834,32539,-3856,32536,-3878,32534,-3901,32531,-3923,32528,-3945,32526,-3967,32523,-3989,32520,-4012,32517,-4034,32515,-4056,32512,-4078,32509,-4100,32506,-4122,32503,-4145,32501,-4167,32498,-4189,32495,-4211,32492,-4233,32489,-4255,32486,-4277,32483,-4300,32480,-4322,32477,-4344,32474,-4366,32471,-4388,32468,-4410,32465,-4432,32462,-4455,32459,-4477,32456,-4499,32453,-4521,32450,-4543,32447,-4565,32444,-4587,32441,-4609,32438,-4632,32434,-4654,32431,-4676,32428,-4698,32425,-4720,32422,-4742,32418,-4764,32415,-4786,32412,-4808,32409,-4831,32405,-4853,32402,-4875,32399,-4897,32395,-4919,32392,-4941,32389,-4963,32385,-4985,32382,-5007,32378,-5029,32375,-5051,32371,-5073,32368,-5095,32364,-5118,32361,-5140,32357,-5162,32354,-5184,32350,-5206,32347,-5228,32343,-5250,32340,-5272,32336,-5294,32332,-5316,32329,-5338,32325,-5360,32322,-5382,32318,-5404,32314,-5426,32310,-5448,32307,-5470,32303,-5492,32299,-5514,32295,-5536,32292,-5558,32288,-5580,32284,-5602,32280,-5624,32276,-5646,32273,-5668,32269,-5690,32265,-5712,32261,-5734,32257,-5756,32253,-5778,32249,-5800,32245,-5822,32241,-5844,32237,-5866,32233,-5888,32229,-5910,32225,-5932,32221,-5954,32217,-5976,32213,-5998,32209,-6020,32205,-6042,32201,-6064,32196,-6086,32192,-6108,32188,-6130,32184,-6152,32180,-6174,32176,-6196,32171,-6218,32167,-6240,32163,-6262,32158,-6283,32154,-6305,32150,-6327,32146,-6349,32141,-6371,32137,-6393,32133,-6415,32128,-6437,32124,-6459,32119,-6481,32115,-6503,32110,-6524,32106,-6546,32102,-6568,32097,-6590,32093,-6612,32088,-6634,32084,-6656,32079,-6678,32074,-6699,32070,-6721,32065,-6743,32061,-6765,32056,-6787,32051,-6809,32047,-6831,32042,-6852,32037,-6874,32033,-6896,32028,-6918,32023,-6940,32019,-6962,32014,-6983,32009,-7005,32004,-7027,31999,-7049,31995,-7071,31990,-7093,31985,-7114,31980,-7136,31975,-7158,31970,-7180,31965,-7202,31961,-7223,31956,-7245,31951,-7267,31946,-7289,31941,-7311,31936,-7332,31931,-7354,31926,-7376,31921,-7398,31916,-7419,31911,-7441,31905,-7463,31900,-7485,31895,-7506,31890,-7528,31885,-7550,31880,-7572,31875,-7593,31869,-7615,31864,-7637,31859,-7658,31854,-7680,31849,-7702,31843,-7724,31838,-7745,31833,-7767,31827,-7789,31822,-7810,31817,-7832,31811,-7854,31806,-7876,31801,-7897,31795,-7919,31790,-7941,31785,-7962,31779,-7984,31774,-8006,31768,-8027,31763,-8049,31757,-8071,31752,-8092,31746,-8114,31741,-8135,31735,-8157,31729,-8179,31724,-8200,31718,-8222,31713,-8244,31707,-8265,31701,-8287,31696,-8308,31690,-8330,31684,-8352,31679,-8373,31673,-8395,31667,-8416,31662,-8438,31656,-8460,31650,-8481,31644,-8503,31638,-8524,31633,-8546,31627,-8568,31621,-8589,31615,-8611,31609,-8632,31603,-8654,31597,-8675,31591,-8697,31586,-8718,31580,-8740,31574,-8761,31568,-8783,31562,-8804,31556,-8826,31550,-8847,31544,-8869,31537,-8890,31531,-8912,31525,-8933,31519,-8955,31513,-8976,31507,-8998,31501,-9019,31495,-9041,31489,-9062,31482,-9084,31476,-9105,31470,-9127,31464,-9148,31457,-9170,31451,-9191,31445,-9213,31439,-9234,31432,-9255,31426,-9277,31420,-9298,31413,-9320,31407,-9341,31401,-9363,31394,-9384,31388,-9405,31381,-9427,31375,-9448,31369,-9469,31362,-9491,31356,-9512,31349,-9534,31343,-9555,31336,-9576,31330,-9598,31323,-9619,31316,-9640,31310,-9662,31303,-9683,31297,-9704,31290,-9726,31283,-9747,31277,-9768,31270,-9790,31263,-9811,31257,-9832,31250,-9854,31243,-9875,31236,-9896,31230,-9918,31223,-9939,31216,-9960,31209,-9981,31203,-10003,31196,-10024,31189,-10045,31182,-10067,31175,-10088,31168,-10109,31161,-10130,31154,-10152,31148,-10173,31141,-10194,31134,-10215,31127,-10236,31120,-10258,31113,-10279,31106,-10300,31099,-10321,31092,-10343,31085,-10364,31077,-10385,31070,-10406,31063,-10427,31056,-10448,31049,-10470,31042,-10491,31035,-10512,31028,-10533,31020,-10554,31013,-10575,31006,-10597,30999,-10618,30991,-10639,30984,-10660,30977,-10681,30970,-10702,30962,-10723,30955,-10744,30948,-10766,30940,-10787,30933,-10808,30926,-10829,30918,-10850,30911,-10871,30903,-10892,30896,-10913,30889,-10934,30881,-10955,30874,-10976,30866,-10997,30859,-11018,30851,-11039,30844,-11060,30836,-11081,30828,-11102,30821,-11123,30813,-11144,30806,-11165,30798,-11186,30790,-11207,30783,-11228,30775,-11249,30767,-11270,30760,-11291,30752,-11312,30744,-11333,30737,-11354,30729,-11375,30721,-11396,30713,-11417,30705,-11438,30698,-11459,30690,-11480,30682,-11501,30674,-11522,30666,-11543,30658,-11564,30651,-11584,30643,-11605,30635,-11626,30627,-11647,30619,-11668,30611,-11689,30603,-11710,30595,-11731,30587,-11751,30579,-11772,30571,-11793,30563,-11814,30555,-11835,30547,-11856,30539,-11877,30530,-11897,30522,-11918,30514,-11939,30506,-11960,30498,-11981,30490,-12001,30482,-12022,30473,-12043,30465,-12064,30457,-12084,30449,-12105,30440,-12126,30432,-12147,30424,-12167,30416,-12188,30407,-12209,30399,-12230,30391,-12250,30382,-12271,30374,-12292,30365,-12313,30357,-12333,30349,-12354,30340,-12375,30332,-12395,30323,-12416,30315,-12437,30306,-12457,30298,-12478,30289,-12499,30281,-12519,30272,-12540,30264,-12561,30255,-12581,30247,-12602,30238,-12622,30229,-12643,30221,-12664,30212,-12684,30203,-12705,30195,-12725,30186,-12746,30177,-12767,30169,-12787,30160,-12808,30151,-12828,30142,-12849,30134,-12869,30125,-12890,30116,-12910,30107,-12931,30098,-12951,30090,-12972,30081,-12993,30072,-13013,30063,-13034,30054,-13054,30045,-13075,30036,-13095,30027,-13115,30018,-13136,30009,-13156,30001,-13177,29992,-13197,29983,-13218,29973,-13238,29964,-13259,29955,-13279,29946,-13299,29937,-13320,29928,-13340,29919,-13361,29910,-13381,29901,-13401,29892,-13422,29883,-13442,29873,-13463,29864,-13483,29855,-13503,29846,-13524,29837,-13544,29827,-13564,29818,-13585,29809,-13605,29800,-13625,29790,-13646,29781,-13666,29772,-13686,29762,-13707,29753,-13727,29744,-13747,29734,-13767,29725,-13788,29715,-13808,29706,-13828,29696,-13848,29687,-13869,29678,-13889,29668,-13909,29659,-13929,29649,-13950,29640,-13970,29630,-13990,29621,-14010,29611,-14030,29601,-14051,29592,-14071,29582,-14091,29573,-14111,29563,-14131,29553,-14151,29544,-14172,29534,-14192,29524,-14212,29515,-14232,29505,-14252,29495,-14272,29485,-14292,29476,-14312,29466,-14332,29456,-14353,29446,-14373,29437,-14393,29427,-14413,29417,-14433,29407,-14453,29397,-14473,29387,-14493,29377,-14513,29368,-14533,29358,-14553,29348,-14573,29338,-14593,29328,-14613,29318,-14633,29308,-14653,29298,-14673,29288,-14693,29278,-14713,29268,-14733,29258,-14753,29248,-14773,29238,-14793,29227,-14813,29217,-14833,29207,-14853,29197,-14872,29187,-14892,29177,-14912,29167,-14932,29156,-14952,29146,-14972,29136,-14992,29126,-15012,29116,-15031,29105,-15051,29095,-15071,29085,-15091,29074,-15111,29064,-15131,29054,-15150,29044,-15170,29033,-15190,29023,-15210,29012,-15230,29002,-15249,28992,-15269,28981,-15289,28971,-15309,28960,-15328,28950,-15348,28939,-15368,28929,-15388,28918,-15407,28908,-15427,28897,-15447,28887,-15466,28876,-15486,28866,-15506,28855,-15526,28845,-15545,28834,-15565,28823,-15584,28813,-15604,28802,-15624,28791,-15643,28781,-15663,28770,-15683,28759,-15702,28749,-15722,28738,-15741,28727,-15761,28716,-15781,28706,-15800,28695,-15820,28684,-15839,28673,-15859,28662,-15878,28652,-15898,28641,-15918,28630,-15937,28619,-15957,28608,-15976,28597,-15996,28586,-16015,28575,-16035,28565,-16054,28554,-16073,28543,-16093,28532,-16112,28521,-16132,28510,-16151,28499,-16171,28488,-16190,28477,-16210,28465,-16229,28454,-16248,28443,-16268,28432,-16287,28421,-16307,28410,-16326,28399,-16345,28388,-16365,28377,-16384,28365,-16403,28354,-16423,28343,-16442,28332,-16461,28321,-16481,28309,-16500,28298,-16519,28287,-16539,28275,-16558,28264,-16577,28253,-16596,28242,-16616,28230,-16635,28219,-16654,28208,-16673,28196,-16693,28185,-16712,28173,-16731,28162,-16750,28151,-16769,28139,-16789,28128,-16808,28116,-16827,28105,-16846,28093,-16865,28082,-16884,28070,-16904,28059,-16923,28047,-16942,28036,-16961,28024,-16980,28012,-16999,28001,-17018,27989,-17037,27978,-17056,27966,-17075,27954,-17095,27943,-17114,27931,-17133,27919,-17152,27908,-17171,27896,-17190,27884,-17209,27872,-17228,27861,-17247,27849,-17266,27837,-17285,27825,-17304,27814,-17323,27802,-17342,27790,-17361,27778,-17380,27766,-17398,27754,-17417,27742,-17436,27731,-17455,27719,-17474,27707,-17493,27695,-17512,27683,-17531,27671,-17550,27659,-17568,27647,-17587,27635,-17606,27623,-17625,27611,-17644,27599,-17663,27587,-17681,27575,-17700,27563,-17719,27551,-17738,27538,-17757,27526,-17775,27514,-17794,27502,-17813,27490,-17832,27478,-17850,27466,-17869,27453,-17888,27441,-17907,27429,-17925,27417,-17944,27405,-17963,27392,-17981,27380,-18000,27368,-18019,27355,-18037,27343,-18056,27331,-18075,27319,-18093,27306,-18112,27294,-18131,27281,-18149,27269,-18168,27257,-18186,27244,-18205,27232,-18223,27219,-18242,27207,-18261,27195,-18279,27182,-18298,27170,-18316,27157,-18335,27145,-18353,27132,-18372,27120,-18390,27107,-18409,27094,-18427,27082,-18446,27069,-18464,27057,-18483,27044,-18501,27031,-18519,27019,-18538,27006,-18556,26994,-18575,26981,-18593,26968,-18611,26955,-18630,26943,-18648,26930,-18667,26917,-18685,26905,-18703,26892,-18722,26879,-18740,26866,-18758,26853,-18777,26841,-18795,26828,-18813,26815,-18831,26802,-18850,26789,-18868,26776,-18886,26764,-18905,26751,-18923,26738,-18941,26725,-18959,26712,-18977,26699,-18996,26686,-19014,26673,-19032,26660,-19050,26647,-19068,26634,-19087,26621,-19105,26608,-19123,26595,-19141,26582,-19159,26569,-19177,26556,-19195,26543,-19213,26530,-19232,26516,-19250,26503,-19268,26490,-19286,26477,-19304,26464,-19322,26451,-19340,26437,-19358,26424,-19376,26411,-19394,26398,-19412,26385,-19430,26371,-19448,26358,-19466,26345,-19484,26332,-19502,26318,-19520,26305,-19538,26292,-19556,26278,-19574,26265,-19591,26252,-19609,26238,-19627,26225,-19645,26211,-19663,26198,-19681,26185,-19699,26171,-19717,26158,-19734,26144,-19752,26131,-19770,26117,-19788,26104,-19806,26090,-19823,26077,-19841,26063,-19859,26050,-19877,26036,-19895,26022,-19912,26009,-19930,25995,-19948,25982,-19966,25968,-19983,25954,-20001,25941,-20019,25927,-20036,25913,-20054,25900,-20072,25886,-20089,25872,-20107,25859,-20125,25845,-20142,25831,-20160,25817,-20177,25804,-20195,25790,-20213,25776,-20230,25762,-20248,25749,-20265,25735,-20283,25721,-20300,25707,-20318,25693,-20335,25679,-20353,25665,-20370,25652,-20388,25638,-20405,25624,-20423,25610,-20440,25596,-20458,25582,-20475,25568,-20493,25554,-20510,25540,-20528,25526,-20545,25512,-20562,25498,-20580,25484,-20597,25470,-20614,25456,-20632,25442,-20649,25428,-20667,25414,-20684,25399,-20701,25385,-20719,25371,-20736,25357,-20753,25343,-20770,25329,-20788,25315,-20805,25300,-20822,25286,-20839,25272,-20857,25258,-20874,25243,-20891,25229,-20908,25215,-20926,25201,-20943,25186,-20960,25172,-20977,25158,-20994,25144,-21011,25129,-21028,25115,-21046,25100,-21063,25086,-21080,25072,-21097,25057,-21114,25043,-21131,25029,-21148,25014,-21165,25000,-21182,24985,-21199,24971,-21216,24956,-21233,24942,-21250,24927,-21267,24913,-21284,24898,-21301,24884,-21318,24869,-21335,24855,-21352,24840,-21369,24826,-21386,24811,-21403,24796,-21420,24782,-21437,24767,-21454,24753,-21471,24738,-21487,24723,-21504,24709,-21521,24694,-21538,24679,-21555,24664,-21572,24650,-21588,24635,-21605,24620,-21622,24606,-21639,24591,-21656,24576,-21672,24561,-21689,24546,-21706,24532,-21723,24517,-21739,24502,-21756,24487,-21773,24472,-21789,24457,-21806,24443,-21823,24428,-21839,24413,-21856,24398,-21873,24383,-21889,24368,-21906,24353,-21923,24338,-21939,24323,-21956,24308,-21972,24293,-21989,24278,-22005,24263,-22022,24248,-22039,24233,-22055,24218,-22072,24203,-22088,24188,-22105,24173,-22121,24158,-22138,24143,-22154,24128,-22170,24113,-22187,24097,-22203,24082,-22220,24067,-22236,24052,-22253,24037,-22269,24022,-22285,24006,-22302,23991,-22318,23976,-22334,23961,-22351,23945,-22367,23930,-22383,23915,-22400,23900,-22416,23884,-22432,23869,-22449,23854,-22465,23838,-22481,23823,-22497,23808,-22514,23792,-22530,23777,-22546,23762,-22562,23746,-22578,23731,-22595,23715,-22611,23700,-22627,23685,-22643,23669,-22659,23654,-22675,23638,-22692,23623,-22708,23607,-22724,23592,-22740,23576,-22756,23561,-22772,23545,-22788,23530,-22804,23514,-22820,23499,-22836,23483,-22852,23467,-22868,23452,-22884,23436,-22900,23421,-22916,23405,-22932,23389,-22948,23374,-22964,23358,-22980,23342,-22996,23327,-23012,23311,-23028,23295,-23044,23280,-23059,23264,-23075,23248,-23091,23232,-23107,23217,-23123,23201,-23139,23185,-23154,23169,-23170,23153,-23186,23138,-23202,23122,-23218,23106,-23233,23090,-23249,23074,-23265,23058,-23281,23043,-23296,23027,-23312,23011,-23328,22995,-23343,22979,-23359,22963,-23375,22947,-23390,22931,-23406,22915,-23422,22899,-23437,22883,-23453,22867,-23468,22851,-23484,22835,-23500,22819,-23515,22803,-23531,22787,-23546,22771,-23562,22755,-23577,22739,-23593,22723,-23608,22707,-23624,22691,-23639,22674,-23655,22658,-23670,22642,-23686,22626,-23701,22610,-23716,22594,-23732,22577,-23747,22561,-23763,22545,-23778,22529,-23793,22513,-23809,22496,-23824,22480,-23839,22464,-23855,22448,-23870,22431,-23885,22415,-23901,22399,-23916,22382,-23931,22366,-23946,22350,-23962,22333,-23977,22317,-23992,22301,-24007,22284,-24023,22268,-24038,22252,-24053,22235,-24068,22219,-24083,22202,-24098,22186,-24114,22169,-24129,22153,-24144,22137,-24159,22120,-24174,22104,-24189,22087,-24204,22071,-24219,22054,-24234,22038,-24249,22021,-24264,22004,-24279,21988,-24294,21971,-24309,21955,-24324,21938,-24339,21922,-24354,21905,-24369,21888,-24384,21872,-24399,21855,-24414,21838,-24429,21822,-24444,21805,-24458,21788,-24473,21772,-24488,21755,-24503,21738,-24518,21722,-24533,21705,-24547,21688,-24562,21671,-24577,21655,-24592,21638,-24607,21621,-24621,21604,-24636,21587,-24651,21571,-24665,21554,-24680,21537,-24695,21520,-24710,21503,-24724,21486,-24739,21470,-24754,21453,-24768,21436,-24783,21419,-24797,21402,-24812,21385,-24827,21368,-24841,21351,-24856,21334,-24870,21317,-24885,21300,-24899,21283,-24914,21266,-24928,21249,-24943,21232,-24957,21215,-24972,21198,-24986,21181,-25001,21164,-25015,21147,-25030,21130,-25044,21113,-25058,21096,-25073,21079,-25087,21062,-25101,21045,-25116,21027,-25130,21010,-25145,20993,-25159,20976,-25173,20959,-25187,20942,-25202,20925,-25216,20907,-25230,20890,-25244,20873,-25259,20856,-25273,20838,-25287,20821,-25301,20804,-25316,20787,-25330,20769,-25344,20752,-25358,20735,-25372,20718,-25386,20700,-25400,20683,-25415,20666,-25429,20648,-25443,20631,-25457,20613,-25471,20596,-25485,20579,-25499,20561,-25513,20544,-25527,20527,-25541,20509,-25555,20492,-25569,20474,-25583,20457,-25597,20439,-25611,20422,-25625,20404,-25639,20387,-25653,20369,-25666,20352,-25680,20334,-25694,20317,-25708,20299,-25722,20282,-25736,20264,-25750,20247,-25763,20229,-25777,20212,-25791,20194,-25805,20176,-25818,20159,-25832,20141,-25846,20124,-25860,20106,-25873,20088,-25887,20071,-25901,20053,-25914,20035,-25928,20018,-25942,20000,-25955,19982,-25969,19965,-25983,19947,-25996,19929,-26010,19911,-26023,19894,-26037,19876,-26051,19858,-26064,19840,-26078,19822,-26091,19805,-26105,19787,-26118,19769,-26132,19751,-26145,19733,-26159,19716,-26172,19698,-26186,19680,-26199,19662,-26212,19644,-26226,19626,-26239,19608,-26253,19590,-26266,19573,-26279,19555,-26293,19537,-26306,19519,-26319,19501,-26333,19483,-26346,19465,-26359,19447,-26372,19429,-26386,19411,-26399,19393,-26412,19375,-26425,19357,-26438,19339,-26452,19321,-26465,19303,-26478,19285,-26491,19267,-26504,19249,-26517,19231,-26531,19212,-26544,19194,-26557,19176,-26570,19158,-26583,19140,-26596,19122,-26609,19104,-26622,19086,-26635,19067,-26648,19049,-26661,19031,-26674,19013,-26687,18995,-26700,18976,-26713,18958,-26726,18940,-26739,18922,-26752,18904,-26765,18885,-26777,18867,-26790,18849,-26803,18830,-26816,18812,-26829,18794,-26842,18776,-26854,18757,-26867,18739,-26880,18721,-26893,18702,-26906,18684,-26918,18666,-26931,18647,-26944,18629,-26956,18610,-26969,18592,-26982,18574,-26995,18555,-27007,18537,-27020,18518,-27032,18500,-27045,18482,-27058,18463,-27070,18445,-27083,18426,-27095,18408,-27108,18389,-27121,18371,-27133,18352,-27146,18334,-27158,18315,-27171,18297,-27183,18278,-27196,18260,-27208,18241,-27220,18222,-27233,18204,-27245,18185,-27258,18167,-27270,18148,-27282,18130,-27295,18111,-27307,18092,-27320,18074,-27332,18055,-27344,18036,-27356,18018,-27369,17999,-27381,17980,-27393,17962,-27406,17943,-27418,17924,-27430,17906,-27442,17887,-27454,17868,-27467,17849,-27479,17831,-27491,17812,-27503,17793,-27515,17774,-27527,17756,-27539,17737,-27552,17718,-27564,17699,-27576,17680,-27588,17662,-27600,17643,-27612,17624,-27624,17605,-27636,17586,-27648,17567,-27660,17549,-27672,17530,-27684,17511,-27696,17492,-27708,17473,-27720,17454,-27732,17435,-27743,17416,-27755,17397,-27767,17379,-27779,17360,-27791,17341,-27803,17322,-27815,17303,-27826,17284,-27838,17265,-27850,17246,-27862,17227,-27873,17208,-27885,17189,-27897,17170,-27909,17151,-27920,17132,-27932,17113,-27944,17094,-27955,17074,-27967,17055,-27979,17036,-27990,17017,-28002,16998,-28013,16979,-28025,16960,-28037,16941,-28048,16922,-28060,16903,-28071,16883,-28083,16864,-28094,16845,-28106,16826,-28117,16807,-28129,16788,-28140,16768,-28152,16749,-28163,16730,-28174,16711,-28186,16692,-28197,16672,-28209,16653,-28220,16634,-28231,16615,-28243,16595,-28254,16576,-28265,16557,-28276,16538,-28288,16518,-28299,16499,-28310,16480,-28322,16460,-28333,16441,-28344,16422,-28355,16402,-28366,16383,-28378,16364,-28389,16344,-28400,16325,-28411,16306,-28422,16286,-28433,16267,-28444,16247,-28455,16228,-28466,16209,-28478,16189,-28489,16170,-28500,16150,-28511,16131,-28522,16111,-28533,16092,-28544,16072,-28555,16053,-28566,16034,-28576,16014,-28587,15995,-28598,15975,-28609,15956,-28620,15936,-28631,15917,-28642,15897,-28653,15877,-28663,15858,-28674,15838,-28685,15819,-28696,15799,-28707,15780,-28717,15760,-28728,15740,-28739,15721,-28750,15701,-28760,15682,-28771,15662,-28782,15642,-28792,15623,-28803,15603,-28814,15583,-28824,15564,-28835,15544,-28846,15525,-28856,15505,-28867,15485,-28877,15465,-28888,15446,-28898,15426,-28909,15406,-28919,15387,-28930,15367,-28940,15347,-28951,15327,-28961,15308,-28972,15288,-28982,15268,-28993,15248,-29003,15229,-29013,15209,-29024,15189,-29034,15169,-29045,15149,-29055,15130,-29065,15110,-29075,15090,-29086,15070,-29096,15050,-29106,15030,-29117,15011,-29127,14991,-29137,14971,-29147,14951,-29157,14931,-29168,14911,-29178,14891,-29188,14871,-29198,14852,-29208,14832,-29218,14812,-29228,14792,-29239,14772,-29249,14752,-29259,14732,-29269,14712,-29279,14692,-29289,14672,-29299,14652,-29309,14632,-29319,14612,-29329,14592,-29339,14572,-29349,14552,-29359,14532,-29369,14512,-29378,14492,-29388,14472,-29398,14452,-29408,14432,-29418,14412,-29428,14392,-29438,14372,-29447,14352,-29457,14331,-29467,14311,-29477,14291,-29486,14271,-29496,14251,-29506,14231,-29516,14211,-29525,14191,-29535,14171,-29545,14150,-29554,14130,-29564,14110,-29574,14090,-29583,14070,-29593,14050,-29602,14029,-29612,14009,-29622,13989,-29631,13969,-29641,13949,-29650,13928,-29660,13908,-29669,13888,-29679,13868,-29688,13847,-29697,13827,-29707,13807,-29716,13787,-29726,13766,-29735,13746,-29745,13726,-29754,13706,-29763,13685,-29773,13665,-29782,13645,-29791,13624,-29801,13604,-29810,13584,-29819,13563,-29828,13543,-29838,13523,-29847,13502,-29856,13482,-29865,13462,-29874,13441,-29884,13421,-29893,13400,-29902,13380,-29911,13360,-29920,13339,-29929,13319,-29938,13298,-29947,13278,-29956,13258,-29965,13237,-29974,13217,-29984,13196,-29993,13176,-30002,13155,-30010,13135,-30019,13114,-30028,13094,-30037,13074,-30046,13053,-30055,13033,-30064,13012,-30073,12992,-30082,12971,-30091,12950,-30099,12930,-30108,12909,-30117,12889,-30126,12868,-30135,12848,-30143,12827,-30152,12807,-30161,12786,-30170,12766,-30178,12745,-30187,12724,-30196,12704,-30204,12683,-30213,12663,-30222,12642,-30230,12621,-30239,12601,-30248,12580,-30256,12560,-30265,12539,-30273,12518,-30282,12498,-30290,12477,-30299,12456,-30307,12436,-30316,12415,-30324,12394,-30333,12374,-30341,12353,-30350,12332,-30358,12312,-30366,12291,-30375,12270,-30383,12249,-30392,12229,-30400,12208,-30408,12187,-30417,12166,-30425,12146,-30433,12125,-30441,12104,-30450,12083,-30458,12063,-30466,12042,-30474,12021,-30483,12000,-30491,11980,-30499,11959,-30507,11938,-30515,11917,-30523,11896,-30531,11876,-30540,11855,-30548,11834,-30556,11813,-30564,11792,-30572,11771,-30580,11750,-30588,11730,-30596,11709,-30604,11688,-30612,11667,-30620,11646,-30628,11625,-30636,11604,-30644,11583,-30652,11563,-30659,11542,-30667,11521,-30675,11500,-30683,11479,-30691,11458,-30699,11437,-30706,11416,-30714,11395,-30722,11374,-30730,11353,-30738,11332,-30745,11311,-30753,11290,-30761,11269,-30768,11248,-30776,11227,-30784,11206,-30791,11185,-30799,11164,-30807,11143,-30814,11122,-30822,11101,-30829,11080,-30837,11059,-30845,11038,-30852,11017,-30860,10996,-30867,10975,-30875,10954,-30882,10933,-30890,10912,-30897,10891,-30904,10870,-30912,10849,-30919,10828,-30927,10807,-30934,10786,-30941,10765,-30949,10743,-30956,10722,-30963,10701,-30971,10680,-30978,10659,-30985,10638,-30992,10617,-31000,10596,-31007,10574,-31014,10553,-31021,10532,-31029,10511,-31036,10490,-31043,10469,-31050,10447,-31057,10426,-31064,10405,-31071,10384,-31078,10363,-31086,10342,-31093,10320,-31100,10299,-31107,10278,-31114,10257,-31121,10235,-31128,10214,-31135,10193,-31142,10172,-31149,10151,-31155,10129,-31162,10108,-31169,10087,-31176,10066,-31183,10044,-31190,10023,-31197,10002,-31204,9980,-31210,9959,-31217,9938,-31224,9917,-31231,9895,-31237,9874,-31244,9853,-31251,9831,-31258,9810,-31264,9789,-31271,9767,-31278,9746,-31284,9725,-31291,9703,-31298,9682,-31304,9661,-31311,9639,-31317,9618,-31324,9597,-31331,9575,-31337,9554,-31344,9533,-31350,9511,-31357,9490,-31363,9468,-31370,9447,-31376,9426,-31382,9404,-31389,9383,-31395,9362,-31402,9340,-31408,9319,-31414,9297,-31421,9276,-31427,9254,-31433,9233,-31440,9212,-31446,9190,-31452,9169,-31458,9147,-31465,9126,-31471,9104,-31477,9083,-31483,9061,-31490,9040,-31496,9018,-31502,8997,-31508,8975,-31514,8954,-31520,8932,-31526,8911,-31532,8889,-31538,8868,-31545,8846,-31551,8825,-31557,8803,-31563,8782,-31569,8760,-31575,8739,-31581,8717,-31587,8696,-31592,8674,-31598,8653,-31604,8631,-31610,8610,-31616,8588,-31622,8567,-31628,8545,-31634,8523,-31639,8502,-31645,8480,-31651,8459,-31657,8437,-31663,8415,-31668,8394,-31674,8372,-31680,8351,-31685,8329,-31691,8307,-31697,8286,-31702,8264,-31708,8243,-31714,8221,-31719,8199,-31725,8178,-31730,8156,-31736,8134,-31742,8113,-31747,8091,-31753,8070,-31758,8048,-31764,8026,-31769,8005,-31775,7983,-31780,7961,-31786,7940,-31791,7918,-31796,7896,-31802,7875,-31807,7853,-31812,7831,-31818,7809,-31823,7788,-31828,7766,-31834,7744,-31839,7723,-31844,7701,-31850,7679,-31855,7657,-31860,7636,-31865,7614,-31870,7592,-31876,7571,-31881,7549,-31886,7527,-31891,7505,-31896,7484,-31901,7462,-31906,7440,-31912,7418,-31917,7397,-31922,7375,-31927,7353,-31932,7331,-31937,7310,-31942,7288,-31947,7266,-31952,7244,-31957,7222,-31962,7201,-31966,7179,-31971,7157,-31976,7135,-31981,7113,-31986,7092,-31991,7070,-31996,7048,-32000,7026,-32005,7004,-32010,6982,-32015,6961,-32020,6939,-32024,6917,-32029,6895,-32034,6873,-32038,6851,-32043,6830,-32048,6808,-32052,6786,-32057,6764,-32062,6742,-32066,6720,-32071,6698,-32075,6677,-32080,6655,-32085,6633,-32089,6611,-32094,6589,-32098,6567,-32103,6545,-32107,6523,-32111,6502,-32116,6480,-32120,6458,-32125,6436,-32129,6414,-32134,6392,-32138,6370,-32142,6348,-32147,6326,-32151,6304,-32155,6282,-32159,6261,-32164,6239,-32168,6217,-32172,6195,-32177,6173,-32181,6151,-32185,6129,-32189,6107,-32193,6085,-32197,6063,-32202,6041,-32206,6019,-32210,5997,-32214,5975,-32218,5953,-32222,5931,-32226,5909,-32230,5887,-32234,5865,-32238,5843,-32242,5821,-32246,5799,-32250,5777,-32254,5755,-32258,5733,-32262,5711,-32266,5689,-32270,5667,-32274,5645,-32277,5623,-32281,5601,-32285,5579,-32289,5557,-32293,5535,-32296,5513,-32300,5491,-32304,5469,-32308,5447,-32311,5425,-32315,5403,-32319,5381,-32323,5359,-32326,5337,-32330,5315,-32333,5293,-32337,5271,-32341,5249,-32344,5227,-32348,5205,-32351,5183,-32355,5161,-32358,5139,-32362,5117,-32365,5094,-32369,5072,-32372,5050,-32376,5028,-32379,5006,-32383,4984,-32386,4962,-32390,4940,-32393,4918,-32396,4896,-32400,4874,-32403,4852,-32406,4830,-32410,4807,-32413,4785,-32416,4763,-32419,4741,-32423,4719,-32426,4697,-32429,4675,-32432,4653,-32435,4631,-32439,4608,-32442,4586,-32445,4564,-32448,4542,-32451,4520,-32454,4498,-32457,4476,-32460,4454,-32463,4431,-32466,4409,-32469,4387,-32472,4365,-32475,4343,-32478,4321,-32481,4299,-32484,4276,-32487,4254,-32490,4232,-32493,4210,-32496,4188,-32499,4166,-32502,4144,-32504,4121,-32507,4099,-32510,4077,-32513,4055,-32516,4033,-32518,4011,-32521,3988,-32524,3966,-32527,3944,-32529,3922,-32532,3900,-32535,3877,-32537,3855,-32540,3833,-32542,3811,-32545,3789,-32548,3767,-32550,3744,-32553,3722,-32555,3700,-32558,3678,-32560,3656,-32563,3633,-32565,3611,-32568,3589,-32570,3567,-32573,3545,-32575,3522,-32578,3500,-32580,3478,-32582,3456,-32585,3433,-32587,3411,-32589,3389,-32592,3367,-32594,3345,-32596,3322,-32599,3300,-32601,3278,-32603,3256,-32605,3233,-32608,3211,-32610,3189,-32612,3167,-32614,3145,-32616,3122,-32618,3100,-32620,3078,-32623,3056,-32625,3033,-32627,3011,-32629,2989,-32631,2967,-32633,2944,-32635,2922,-32637,2900,-32639,2878,-32641,2855,-32643,2833,-32645,2811,-32647,2789,-32649,2766,-32650,2744,-32652,2722,-32654,2700,-32656,2677,-32658,2655,-32660,2633,-32662,2610,-32663,2588,-32665,2566,-32667,2544,-32669,2521,-32670,2499,-32672,2477,-32674,2455,-32675,2432,-32677,2410,-32679,2388,-32680,2365,-32682,2343,-32684,2321,-32685,2299,-32687,2276,-32688,2254,-32690,2232,-32691,2209,-32693,2187,-32694,2165,-32696,2143,-32697,2120,-32699,2098,-32700,2076,-32702,2053,-32703,2031,-32704,2009,-32706,1986,-32707,1964,-32709,1942,-32710,1920,-32711,1897,-32712,1875,-32714,1853,-32715,1830,-32716,1808,-32718,1786,-32719,1763,-32720,1741,-32721,1719,-32722,1697,-32724,1674,-32725,1652,-32726,1630,-32727,1607,-32728,1585,-32729,1563,-32730,1540,-32731,1518,-32732,1496,-32733,1473,-32734,1451,-32735,1429,-32736,1406,-32737,1384,-32738,1362,-32739,1339,-32740,1317,-32741,1295,-32742,1273,-32743,1250,-32744,1228,-32744,1206,-32745,1183,-32746,1161,-32747,1139,-32748,1116,-32748,1094,-32749,1072,-32750,1049,-32751,1027,-32751,1005,-32752,982,-32753,960,-32753,938,-32754,915,-32755,893,-32755,871,-32756,848,-32757,826,-32757,804,-32758,781,-32758,759,-32759,737,-32759,714,-32760,692,-32760,670,-32761,647,-32761,625,-32762,603,-32762,580,-32762,558,-32763,536,-32763,513,-32763,491,-32764,469,-32764,446,-32764,424,-32765,402,-32765,379,-32765,357,-32766,335,-32766,312,-32766,290,-32766,268,-32766,245,-32767,223,-32767,201,-32767,178,-32767,156,-32767,134,-32767,111,-32767,89,-32767,67,-32767,44,-32767,22,-32767,0,-32767,-23,-32767,-45,-32767,-68,-32767,-90,-32767,-112,-32767,-135,-32767,-157,-32767,-179,-32767,-202,-32767,-224,-32767,-246,-32767,-269,-32766,-291,-32766,-313,-32766,-336,-32766,-358,-32766,-380,-32765,-403,-32765,-425,-32765,-447,-32764,-470,-32764,-492,-32764,-514,-32763,-537,-32763,-559,-32763,-581,-32762,-604,-32762,-626,-32762,-648,-32761,-671,-32761,-693,-32760,-715,-32760,-738,-32759,-760,-32759,-782,-32758,-805,-32758,-827,-32757,-849,-32757,-872,-32756,-894,-32755,-916,-32755,-939,-32754,-961,-32753,-983,-32753,-1006,-32752,-1028,-32751,-1050,-32751,-1073,-32750,-1095,-32749,-1117,-32748,-1140,-32748,-1162,-32747,-1184,-32746,-1207,-32745,-1229,-32744,-1251,-32744,-1274,-32743,-1296,-32742,-1318,-32741,-1340,-32740,-1363,-32739,-1385,-32738,-1407,-32737,-1430,-32736,-1452,-32735,-1474,-32734,-1497,-32733,-1519,-32732,-1541,-32731,-1564,-32730,-1586,-32729,-1608,-32728,-1631,-32727,-1653,-32726,-1675,-32725,-1698,-32724,-1720,-32722,-1742,-32721,-1764,-32720,-1787,-32719,-1809,-32718,-1831,-32716,-1854,-32715,-1876,-32714,-1898,-32712,-1921,-32711,-1943,-32710,-1965,-32709,-1987,-32707,-2010,-32706,-2032,-32704,-2054,-32703,-2077,-32702,-2099,-32700,-2121,-32699,-2144,-32697,-2166,-32696,-2188,-32694,-2210,-32693,-2233,-32691,-2255,-32690,-2277,-32688,-2300,-32687,-2322,-32685,-2344,-32684,-2366,-32682,-2389,-32680,-2411,-32679,-2433,-32677,-2456,-32675,-2478,-32674,-2500,-32672,-2522,-32670,-2545,-32669,-2567,-32667,-2589,-32665,-2611,-32663,-2634,-32662,-2656,-32660,-2678,-32658,-2701,-32656,-2723,-32654,-2745,-32652,-2767,-32650,-2790,-32649,-2812,-32647,-2834,-32645,-2856,-32643,-2879,-32641,-2901,-32639,-2923,-32637,-2945,-32635,-2968,-32633,-2990,-32631,-3012,-32629,-3034,-32627,-3057,-32625,-3079,-32623,-3101,-32620,-3123,-32618,-3146,-32616,-3168,-32614,-3190,-32612,-3212,-32610,-3234,-32608,-3257,-32605,-3279,-32603,-3301,-32601,-3323,-32599,-3346,-32596,-3368,-32594,-3390,-32592,-3412,-32589,-3434,-32587,-3457,-32585,-3479,-32582,-3501,-32580,-3523,-32578,-3546,-32575,-3568,-32573,-3590,-32570,-3612,-32568,-3634,-32565,-3657,-32563,-3679,-32560,-3701,-32558,-3723,-32555,-3745,-32553,-3768,-32550,-3790,-32548,-3812,-32545,-3834,-32542,-3856,-32540,-3878,-32537,-3901,-32535,-3923,-32532,-3945,-32529,-3967,-32527,-3989,-32524,-4012,-32521,-4034,-32518,-4056,-32516,-4078,-32513,-4100,-32510,-4122,-32507,-4145,-32504,-4167,-32502,-4189,-32499,-4211,-32496,-4233,-32493,-4255,-32490,-4277,-32487,-4300,-32484,-4322,-32481,-4344,-32478,-4366,-32475,-4388,-32472,-4410,-32469,-4432,-32466,-4455,-32463,-4477,-32460,-4499,-32457,-4521,-32454,-4543,-32451,-4565,-32448,-4587,-32445,-4609,-32442,-4632,-32439,-4654,-32435,-4676,-32432,-4698,-32429,-4720,-32426,-4742,-32423,-4764,-32419,-4786,-32416,-4808,-32413,-4831,-32410,-4853,-32406,-4875,-32403,-4897,-32400,-4919,-32396,-4941,-32393,-4963,-32390,-4985,-32386,-5007,-32383,-5029,-32379,-5051,-32376,-5073,-32372,-5095,-32369,-5118,-32365,-5140,-32362,-5162,-32358,-5184,-32355,-5206,-32351,-5228,-32348,-5250,-32344,-5272,-32341,-5294,-32337,-5316,-32333,-5338,-32330,-5360,-32326,-5382,-32323,-5404,-32319,-5426,-32315,-5448,-32311,-5470,-32308,-5492,-32304,-5514,-32300,-5536,-32296,-5558,-32293,-5580,-32289,-5602,-32285,-5624,-32281,-5646,-32277,-5668,-32274,-5690,-32270,-5712,-32266,-5734,-32262,-5756,-32258,-5778,-32254,-5800,-32250,-5822,-32246,-5844,-32242,-5866,-32238,-5888,-32234,-5910,-32230,-5932,-32226,-5954,-32222,-5976,-32218,-5998,-32214,-6020,-32210,-6042,-32206,-6064,-32202,-6086,-32197,-6108,-32193,-6130,-32189,-6152,-32185,-6174,-32181,-6196,-32177,-6218,-32172,-6240,-32168,-6262,-32164,-6283,-32159,-6305,-32155,-6327,-32151,-6349,-32147,-6371,-32142,-6393,-32138,-6415,-32134,-6437,-32129,-6459,-32125,-6481,-32120,-6503,-32116,-6524,-32111,-6546,-32107,-6568,-32103,-6590,-32098,-6612,-32094,-6634,-32089,-6656,-32085,-6678,-32080,-6699,-32075,-6721,-32071,-6743,-32066,-6765,-32062,-6787,-32057,-6809,-32052,-6831,-32048,-6852,-32043,-6874,-32038,-6896,-32034,-6918,-32029,-6940,-32024,-6962,-32020,-6983,-32015,-7005,-32010,-7027,-32005,-7049,-32000,-7071,-31996,-7093,-31991,-7114,-31986,-7136,-31981,-7158,-31976,-7180,-31971,-7202,-31966,-7223,-31962,-7245,-31957,-7267,-31952,-7289,-31947,-7311,-31942,-7332,-31937,-7354,-31932,-7376,-31927,-7398,-31922,-7419,-31917,-7441,-31912,-7463,-31906,-7485,-31901,-7506,-31896,-7528,-31891,-7550,-31886,-7572,-31881,-7593,-31876,-7615,-31870,-7637,-31865,-7658,-31860,-7680,-31855,-7702,-31850,-7724,-31844,-7745,-31839,-7767,-31834,-7789,-31828,-7810,-31823,-7832,-31818,-7854,-31812,-7876,-31807,-7897,-31802,-7919,-31796,-7941,-31791,-7962,-31786,-7984,-31780,-8006,-31775,-8027,-31769,-8049,-31764,-8071,-31758,-8092,-31753,-8114,-31747,-8135,-31742,-8157,-31736,-8179,-31730,-8200,-31725,-8222,-31719,-8244,-31714,-8265,-31708,-8287,-31702,-8308,-31697,-8330,-31691,-8352,-31685,-8373,-31680,-8395,-31674,-8416,-31668,-8438,-31663,-8460,-31657,-8481,-31651,-8503,-31645,-8524,-31639,-8546,-31634,-8568,-31628,-8589,-31622,-8611,-31616,-8632,-31610,-8654,-31604,-8675,-31598,-8697,-31592,-8718,-31587,-8740,-31581,-8761,-31575,-8783,-31569,-8804,-31563,-8826,-31557,-8847,-31551,-8869,-31545,-8890,-31538,-8912,-31532,-8933,-31526,-8955,-31520,-8976,-31514,-8998,-31508,-9019,-31502,-9041,-31496,-9062,-31490,-9084,-31483,-9105,-31477,-9127,-31471,-9148,-31465,-9170,-31458,-9191,-31452,-9213,-31446,-9234,-31440,-9255,-31433,-9277,-31427,-9298,-31421,-9320,-31414,-9341,-31408,-9363,-31402,-9384,-31395,-9405,-31389,-9427,-31382,-9448,-31376,-9469,-31370,-9491,-31363,-9512,-31357,-9534,-31350,-9555,-31344,-9576,-31337,-9598,-31331,-9619,-31324,-9640,-31317,-9662,-31311,-9683,-31304,-9704,-31298,-9726,-31291,-9747,-31284,-9768,-31278,-9790,-31271,-9811,-31264,-9832,-31258,-9854,-31251,-9875,-31244,-9896,-31237,-9918,-31231,-9939,-31224,-9960,-31217,-9981,-31210,-10003,-31204,-10024,-31197,-10045,-31190,-10067,-31183,-10088,-31176,-10109,-31169,-10130,-31162,-10152,-31155,-10173,-31149,-10194,-31142,-10215,-31135,-10236,-31128,-10258,-31121,-10279,-31114,-10300,-31107,-10321,-31100,-10343,-31093,-10364,-31086,-10385,-31078,-10406,-31071,-10427,-31064,-10448,-31057,-10470,-31050,-10491,-31043,-10512,-31036,-10533,-31029,-10554,-31021,-10575,-31014,-10597,-31007,-10618,-31000,-10639,-30992,-10660,-30985,-10681,-30978,-10702,-30971,-10723,-30963,-10744,-30956,-10766,-30949,-10787,-30941,-10808,-30934,-10829,-30927,-10850,-30919,-10871,-30912,-10892,-30904,-10913,-30897,-10934,-30890,-10955,-30882,-10976,-30875,-10997,-30867,-11018,-30860,-11039,-30852,-11060,-30845,-11081,-30837,-11102,-30829,-11123,-30822,-11144,-30814,-11165,-30807,-11186,-30799,-11207,-30791,-11228,-30784,-11249,-30776,-11270,-30768,-11291,-30761,-11312,-30753,-11333,-30745,-11354,-30738,-11375,-30730,-11396,-30722,-11417,-30714,-11438,-30706,-11459,-30699,-11480,-30691,-11501,-30683,-11522,-30675,-11543,-30667,-11564,-30659,-11584,-30652,-11605,-30644,-11626,-30636,-11647,-30628,-11668,-30620,-11689,-30612,-11710,-30604,-11731,-30596,-11751,-30588,-11772,-30580,-11793,-30572,-11814,-30564,-11835,-30556,-11856,-30548,-11877,-30540,-11897,-30531,-11918,-30523,-11939,-30515,-11960,-30507,-11981,-30499,-12001,-30491,-12022,-30483,-12043,-30474,-12064,-30466,-12084,-30458,-12105,-30450,-12126,-30441,-12147,-30433,-12167,-30425,-12188,-30417,-12209,-30408,-12230,-30400,-12250,-30392,-12271,-30383,-12292,-30375,-12313,-30366,-12333,-30358,-12354,-30350,-12375,-30341,-12395,-30333,-12416,-30324,-12437,-30316,-12457,-30307,-12478,-30299,-12499,-30290,-12519,-30282,-12540,-30273,-12561,-30265,-12581,-30256,-12602,-30248,-12622,-30239,-12643,-30230,-12664,-30222,-12684,-30213,-12705,-30204,-12725,-30196,-12746,-30187,-12767,-30178,-12787,-30170,-12808,-30161,-12828,-30152,-12849,-30143,-12869,-30135,-12890,-30126,-12910,-30117,-12931,-30108,-12951,-30099,-12972,-30091,-12993,-30082,-13013,-30073,-13034,-30064,-13054,-30055,-13075,-30046,-13095,-30037,-13115,-30028,-13136,-30019,-13156,-30010,-13177,-30002,-13197,-29993,-13218,-29984,-13238,-29974,-13259,-29965,-13279,-29956,-13299,-29947,-13320,-29938,-13340,-29929,-13361,-29920,-13381,-29911,-13401,-29902,-13422,-29893,-13442,-29884,-13463,-29874,-13483,-29865,-13503,-29856,-13524,-29847,-13544,-29838,-13564,-29828,-13585,-29819,-13605,-29810,-13625,-29801,-13646,-29791,-13666,-29782,-13686,-29773,-13707,-29763,-13727,-29754,-13747,-29745,-13767,-29735,-13788,-29726,-13808,-29716,-13828,-29707,-13848,-29697,-13869,-29688,-13889,-29679,-13909,-29669,-13929,-29660,-13950,-29650,-13970,-29641,-13990,-29631,-14010,-29622,-14030,-29612,-14051,-29602,-14071,-29593,-14091,-29583,-14111,-29574,-14131,-29564,-14151,-29554,-14172,-29545,-14192,-29535,-14212,-29525,-14232,-29516,-14252,-29506,-14272,-29496,-14292,-29486,-14312,-29477,-14332,-29467,-14353,-29457,-14373,-29447,-14393,-29438,-14413,-29428,-14433,-29418,-14453,-29408,-14473,-29398,-14493,-29388,-14513,-29378,-14533,-29369,-14553,-29359,-14573,-29349,-14593,-29339,-14613,-29329,-14633,-29319,-14653,-29309,-14673,-29299,-14693,-29289,-14713,-29279,-14733,-29269,-14753,-29259,-14773,-29249,-14793,-29239,-14813,-29228,-14833,-29218,-14853,-29208,-14872,-29198,-14892,-29188,-14912,-29178,-14932,-29168,-14952,-29157,-14972,-29147,-14992,-29137,-15012,-29127,-15031,-29117,-15051,-29106,-15071,-29096,-15091,-29086,-15111,-29075,-15131,-29065,-15150,-29055,-15170,-29045,-15190,-29034,-15210,-29024,-15230,-29013,-15249,-29003,-15269,-28993,-15289,-28982,-15309,-28972,-15328,-28961,-15348,-28951,-15368,-28940,-15388,-28930,-15407,-28919,-15427,-28909,-15447,-28898,-15466,-28888,-15486,-28877,-15506,-28867,-15526,-28856,-15545,-28846,-15565,-28835,-15584,-28824,-15604,-28814,-15624,-28803,-15643,-28792,-15663,-28782,-15683,-28771,-15702,-28760,-15722,-28750,-15741,-28739,-15761,-28728,-15781,-28717,-15800,-28707,-15820,-28696,-15839,-28685,-15859,-28674,-15878,-28663,-15898,-28653,-15918,-28642,-15937,-28631,-15957,-28620,-15976,-28609,-15996,-28598,-16015,-28587,-16035,-28576,-16054,-28566,-16073,-28555,-16093,-28544,-16112,-28533,-16132,-28522,-16151,-28511,-16171,-28500,-16190,-28489,-16210,-28478,-16229,-28466,-16248,-28455,-16268,-28444,-16287,-28433,-16307,-28422,-16326,-28411,-16345,-28400,-16365,-28389,-16384,-28378,-16403,-28366,-16423,-28355,-16442,-28344,-16461,-28333,-16481,-28322,-16500,-28310,-16519,-28299,-16539,-28288,-16558,-28276,-16577,-28265,-16596,-28254,-16616,-28243,-16635,-28231,-16654,-28220,-16673,-28209,-16693,-28197,-16712,-28186,-16731,-28174,-16750,-28163,-16769,-28152,-16789,-28140,-16808,-28129,-16827,-28117,-16846,-28106,-16865,-28094,-16884,-28083,-16904,-28071,-16923,-28060,-16942,-28048,-16961,-28037,-16980,-28025,-16999,-28013,-17018,-28002,-17037,-27990,-17056,-27979,-17075,-27967,-17095,-27955,-17114,-27944,-17133,-27932,-17152,-27920,-17171,-27909,-17190,-27897,-17209,-27885,-17228,-27873,-17247,-27862,-17266,-27850,-17285,-27838,-17304,-27826,-17323,-27815,-17342,-27803,-17361,-27791,-17380,-27779,-17398,-27767,-17417,-27755,-17436,-27743,-17455,-27732,-17474,-27720,-17493,-27708,-17512,-27696,-17531,-27684,-17550,-27672,-17568,-27660,-17587,-27648,-17606,-27636,-17625,-27624,-17644,-27612,-17663,-27600,-17681,-27588,-17700,-27576,-17719,-27564,-17738,-27552,-17757,-27539,-17775,-27527,-17794,-27515,-17813,-27503,-17832,-27491,-17850,-27479,-17869,-27467,-17888,-27454,-17907,-27442,-17925,-27430,-17944,-27418,-17963,-27406,-17981,-27393,-18000,-27381,-18019,-27369,-18037,-27356,-18056,-27344,-18075,-27332,-18093,-27320,-18112,-27307,-18131,-27295,-18149,-27282,-18168,-27270,-18186,-27258,-18205,-27245,-18223,-27233,-18242,-27220,-18261,-27208,-18279,-27196,-18298,-27183,-18316,-27171,-18335,-27158,-18353,-27146,-18372,-27133,-18390,-27121,-18409,-27108,-18427,-27095,-18446,-27083,-18464,-27070,-18483,-27058,-18501,-27045,-18519,-27032,-18538,-27020,-18556,-27007,-18575,-26995,-18593,-26982,-18611,-26969,-18630,-26956,-18648,-26944,-18667,-26931,-18685,-26918,-18703,-26906,-18722,-26893,-18740,-26880,-18758,-26867,-18777,-26854,-18795,-26842,-18813,-26829,-18831,-26816,-18850,-26803,-18868,-26790,-18886,-26777,-18905,-26765,-18923,-26752,-18941,-26739,-18959,-26726,-18977,-26713,-18996,-26700,-19014,-26687,-19032,-26674,-19050,-26661,-19068,-26648,-19087,-26635,-19105,-26622,-19123,-26609,-19141,-26596,-19159,-26583,-19177,-26570,-19195,-26557,-19213,-26544,-19232,-26531,-19250,-26517,-19268,-26504,-19286,-26491,-19304,-26478,-19322,-26465,-19340,-26452,-19358,-26438,-19376,-26425,-19394,-26412,-19412,-26399,-19430,-26386,-19448,-26372,-19466,-26359,-19484,-26346,-19502,-26333,-19520,-26319,-19538,-26306,-19556,-26293,-19574,-26279,-19591,-26266,-19609,-26253,-19627,-26239,-19645,-26226,-19663,-26212,-19681,-26199,-19699,-26186,-19717,-26172,-19734,-26159,-19752,-26145,-19770,-26132,-19788,-26118,-19806,-26105,-19823,-26091,-19841,-26078,-19859,-26064,-19877,-26051,-19895,-26037,-19912,-26023,-19930,-26010,-19948,-25996,-19966,-25983,-19983,-25969,-20001,-25955,-20019,-25942,-20036,-25928,-20054,-25914,-20072,-25901,-20089,-25887,-20107,-25873,-20125,-25860,-20142,-25846,-20160,-25832,-20177,-25818,-20195,-25805,-20213,-25791,-20230,-25777,-20248,-25763,-20265,-25750,-20283,-25736,-20300,-25722,-20318,-25708,-20335,-25694,-20353,-25680,-20370,-25666,-20388,-25653,-20405,-25639,-20423,-25625,-20440,-25611,-20458,-25597,-20475,-25583,-20493,-25569,-20510,-25555,-20528,-25541,-20545,-25527,-20562,-25513,-20580,-25499,-20597,-25485,-20614,-25471,-20632,-25457,-20649,-25443,-20667,-25429,-20684,-25415,-20701,-25400,-20719,-25386,-20736,-25372,-20753,-25358,-20770,-25344,-20788,-25330,-20805,-25316,-20822,-25301,-20839,-25287,-20857,-25273,-20874,-25259,-20891,-25244,-20908,-25230,-20926,-25216,-20943,-25202,-20960,-25187,-20977,-25173,-20994,-25159,-21011,-25145,-21028,-25130,-21046,-25116,-21063,-25101,-21080,-25087,-21097,-25073,-21114,-25058,-21131,-25044,-21148,-25030,-21165,-25015,-21182,-25001,-21199,-24986,-21216,-24972,-21233,-24957,-21250,-24943,-21267,-24928,-21284,-24914,-21301,-24899,-21318,-24885,-21335,-24870,-21352,-24856,-21369,-24841,-21386,-24827,-21403,-24812,-21420,-24797,-21437,-24783,-21454,-24768,-21471,-24754,-21487,-24739,-21504,-24724,-21521,-24710,-21538,-24695,-21555,-24680,-21572,-24665,-21588,-24651,-21605,-24636,-21622,-24621,-21639,-24607,-21656,-24592,-21672,-24577,-21689,-24562,-21706,-24547,-21723,-24533,-21739,-24518,-21756,-24503,-21773,-24488,-21789,-24473,-21806,-24458,-21823,-24444,-21839,-24429,-21856,-24414,-21873,-24399,-21889,-24384,-21906,-24369,-21923,-24354,-21939,-24339,-21956,-24324,-21972,-24309,-21989,-24294,-22005,-24279,-22022,-24264,-22039,-24249,-22055,-24234,-22072,-24219,-22088,-24204,-22105,-24189,-22121,-24174,-22138,-24159,-22154,-24144,-22170,-24129,-22187,-24114,-22203,-24098,-22220,-24083,-22236,-24068,-22253,-24053,-22269,-24038,-22285,-24023,-22302,-24007,-22318,-23992,-22334,-23977,-22351,-23962,-22367,-23946,-22383,-23931,-22400,-23916,-22416,-23901,-22432,-23885,-22449,-23870,-22465,-23855,-22481,-23839,-22497,-23824,-22514,-23809,-22530,-23793,-22546,-23778,-22562,-23763,-22578,-23747,-22595,-23732,-22611,-23716,-22627,-23701,-22643,-23686,-22659,-23670,-22675,-23655,-22692,-23639,-22708,-23624,-22724,-23608,-22740,-23593,-22756,-23577,-22772,-23562,-22788,-23546,-22804,-23531,-22820,-23515,-22836,-23500,-22852,-23484,-22868,-23468,-22884,-23453,-22900,-23437,-22916,-23422,-22932,-23406,-22948,-23390,-22964,-23375,-22980,-23359,-22996,-23343,-23012,-23328,-23028,-23312,-23044,-23296,-23059,-23281,-23075,-23265,-23091,-23249,-23107,-23233,-23123,-23218,-23139,-23202,-23154,-23186,-23170,-23170,-23186,-23154,-23202,-23139,-23218,-23123,-23233,-23107,-23249,-23091,-23265,-23075,-23281,-23059,-23296,-23044,-23312,-23028,-23328,-23012,-23343,-22996,-23359,-22980,-23375,-22964,-23390,-22948,-23406,-22932,-23422,-22916,-23437,-22900,-23453,-22884,-23468,-22868,-23484,-22852,-23500,-22836,-23515,-22820,-23531,-22804,-23546,-22788,-23562,-22772,-23577,-22756,-23593,-22740,-23608,-22724,-23624,-22708,-23639,-22692,-23655,-22675,-23670,-22659,-23686,-22643,-23701,-22627,-23716,-22611,-23732,-22595,-23747,-22578,-23763,-22562,-23778,-22546,-23793,-22530,-23809,-22514,-23824,-22497,-23839,-22481,-23855,-22465,-23870,-22449,-23885,-22432,-23901,-22416,-23916,-22400,-23931,-22383,-23946,-22367,-23962,-22351,-23977,-22334,-23992,-22318,-24007,-22302,-24023,-22285,-24038,-22269,-24053,-22253,-24068,-22236,-24083,-22220,-24098,-22203,-24114,-22187,-24129,-22170,-24144,-22154,-24159,-22138,-24174,-22121,-24189,-22105,-24204,-22088,-24219,-22072,-24234,-22055,-24249,-22039,-24264,-22022,-24279,-22005,-24294,-21989,-24309,-21972,-24324,-21956,-24339,-21939,-24354,-21923,-24369,-21906,-24384,-21889,-24399,-21873,-24414,-21856,-24429,-21839,-24444,-21823,-24458,-21806,-24473,-21789,-24488,-21773,-24503,-21756,-24518,-21739,-24533,-21723,-24547,-21706,-24562,-21689,-24577,-21672,-24592,-21656,-24607,-21639,-24621,-21622,-24636,-21605,-24651,-21588,-24665,-21572,-24680,-21555,-24695,-21538,-24710,-21521,-24724,-21504,-24739,-21487,-24754,-21471,-24768,-21454,-24783,-21437,-24797,-21420,-24812,-21403,-24827,-21386,-24841,-21369,-24856,-21352,-24870,-21335,-24885,-21318,-24899,-21301,-24914,-21284,-24928,-21267,-24943,-21250,-24957,-21233,-24972,-21216,-24986,-21199,-25001,-21182,-25015,-21165,-25030,-21148,-25044,-21131,-25058,-21114,-25073,-21097,-25087,-21080,-25101,-21063,-25116,-21046,-25130,-21028,-25145,-21011,-25159,-20994,-25173,-20977,-25187,-20960,-25202,-20943,-25216,-20926,-25230,-20908,-25244,-20891,-25259,-20874,-25273,-20857,-25287,-20839,-25301,-20822,-25316,-20805,-25330,-20788,-25344,-20770,-25358,-20753,-25372,-20736,-25386,-20719,-25400,-20701,-25415,-20684,-25429,-20667,-25443,-20649,-25457,-20632,-25471,-20614,-25485,-20597,-25499,-20580,-25513,-20562,-25527,-20545,-25541,-20528,-25555,-20510,-25569,-20493,-25583,-20475,-25597,-20458,-25611,-20440,-25625,-20423,-25639,-20405,-25653,-20388,-25666,-20370,-25680,-20353,-25694,-20335,-25708,-20318,-25722,-20300,-25736,-20283,-25750,-20265,-25763,-20248,-25777,-20230,-25791,-20213,-25805,-20195,-25818,-20177,-25832,-20160,-25846,-20142,-25860,-20125,-25873,-20107,-25887,-20089,-25901,-20072,-25914,-20054,-25928,-20036,-25942,-20019,-25955,-20001,-25969,-19983,-25983,-19966,-25996,-19948,-26010,-19930,-26023,-19912,-26037,-19895,-26051,-19877,-26064,-19859,-26078,-19841,-26091,-19823,-26105,-19806,-26118,-19788,-26132,-19770,-26145,-19752,-26159,-19734,-26172,-19717,-26186,-19699,-26199,-19681,-26212,-19663,-26226,-19645,-26239,-19627,-26253,-19609,-26266,-19591,-26279,-19574,-26293,-19556,-26306,-19538,-26319,-19520,-26333,-19502,-26346,-19484,-26359,-19466,-26372,-19448,-26386,-19430,-26399,-19412,-26412,-19394,-26425,-19376,-26438,-19358,-26452,-19340,-26465,-19322,-26478,-19304,-26491,-19286,-26504,-19268,-26517,-19250,-26531,-19232,-26544,-19213,-26557,-19195,-26570,-19177,-26583,-19159,-26596,-19141,-26609,-19123,-26622,-19105,-26635,-19087,-26648,-19068,-26661,-19050,-26674,-19032,-26687,-19014,-26700,-18996,-26713,-18977,-26726,-18959,-26739,-18941,-26752,-18923,-26765,-18905,-26777,-18886,-26790,-18868,-26803,-18850,-26816,-18831,-26829,-18813,-26842,-18795,-26854,-18777,-26867,-18758,-26880,-18740,-26893,-18722,-26906,-18703,-26918,-18685,-26931,-18667,-26944,-18648,-26956,-18630,-26969,-18611,-26982,-18593,-26995,-18575,-27007,-18556,-27020,-18538,-27032,-18519,-27045,-18501,-27058,-18483,-27070,-18464,-27083,-18446,-27095,-18427,-27108,-18409,-27121,-18390,-27133,-18372,-27146,-18353,-27158,-18335,-27171,-18316,-27183,-18298,-27196,-18279,-27208,-18261,-27220,-18242,-27233,-18223,-27245,-18205,-27258,-18186,-27270,-18168,-27282,-18149,-27295,-18131,-27307,-18112,-27320,-18093,-27332,-18075,-27344,-18056,-27356,-18037,-27369,-18019,-27381,-18000,-27393,-17981,-27406,-17963,-27418,-17944,-27430,-17925,-27442,-17907,-27454,-17888,-27467,-17869,-27479,-17850,-27491,-17832,-27503,-17813,-27515,-17794,-27527,-17775,-27539,-17757,-27552,-17738,-27564,-17719,-27576,-17700,-27588,-17681,-27600,-17663,-27612,-17644,-27624,-17625,-27636,-17606,-27648,-17587,-27660,-17568,-27672,-17550,-27684,-17531,-27696,-17512,-27708,-17493,-27720,-17474,-27732,-17455,-27743,-17436,-27755,-17417,-27767,-17398,-27779,-17380,-27791,-17361,-27803,-17342,-27815,-17323,-27826,-17304,-27838,-17285,-27850,-17266,-27862,-17247,-27873,-17228,-27885,-17209,-27897,-17190,-27909,-17171,-27920,-17152,-27932,-17133,-27944,-17114,-27955,-17095,-27967,-17075,-27979,-17056,-27990,-17037,-28002,-17018,-28013,-16999,-28025,-16980,-28037,-16961,-28048,-16942,-28060,-16923,-28071,-16904,-28083,-16884,-28094,-16865,-28106,-16846,-28117,-16827,-28129,-16808,-28140,-16789,-28152,-16769,-28163,-16750,-28174,-16731,-28186,-16712,-28197,-16693,-28209,-16673,-28220,-16654,-28231,-16635,-28243,-16616,-28254,-16596,-28265,-16577,-28276,-16558,-28288,-16539,-28299,-16519,-28310,-16500,-28322,-16481,-28333,-16461,-28344,-16442,-28355,-16423,-28366,-16403,-28378,-16384,-28389,-16365,-28400,-16345,-28411,-16326,-28422,-16307,-28433,-16287,-28444,-16268,-28455,-16248,-28466,-16229,-28478,-16210,-28489,-16190,-28500,-16171,-28511,-16151,-28522,-16132,-28533,-16112,-28544,-16093,-28555,-16073,-28566,-16054,-28576,-16035,-28587,-16015,-28598,-15996,-28609,-15976,-28620,-15957,-28631,-15937,-28642,-15918,-28653,-15898,-28663,-15878,-28674,-15859,-28685,-15839,-28696,-15820,-28707,-15800,-28717,-15781,-28728,-15761,-28739,-15741,-28750,-15722,-28760,-15702,-28771,-15683,-28782,-15663,-28792,-15643,-28803,-15624,-28814,-15604,-28824,-15584,-28835,-15565,-28846,-15545,-28856,-15526,-28867,-15506,-28877,-15486,-28888,-15466,-28898,-15447,-28909,-15427,-28919,-15407,-28930,-15388,-28940,-15368,-28951,-15348,-28961,-15328,-28972,-15309,-28982,-15289,-28993,-15269,-29003,-15249,-29013,-15230,-29024,-15210,-29034,-15190,-29045,-15170,-29055,-15150,-29065,-15131,-29075,-15111,-29086,-15091,-29096,-15071,-29106,-15051,-29117,-15031,-29127,-15012,-29137,-14992,-29147,-14972,-29157,-14952,-29168,-14932,-29178,-14912,-29188,-14892,-29198,-14872,-29208,-14853,-29218,-14833,-29228,-14813,-29239,-14793,-29249,-14773,-29259,-14753,-29269,-14733,-29279,-14713,-29289,-14693,-29299,-14673,-29309,-14653,-29319,-14633,-29329,-14613,-29339,-14593,-29349,-14573,-29359,-14553,-29369,-14533,-29378,-14513,-29388,-14493,-29398,-14473,-29408,-14453,-29418,-14433,-29428,-14413,-29438,-14393,-29447,-14373,-29457,-14353,-29467,-14332,-29477,-14312,-29486,-14292,-29496,-14272,-29506,-14252,-29516,-14232,-29525,-14212,-29535,-14192,-29545,-14172,-29554,-14151,-29564,-14131,-29574,-14111,-29583,-14091,-29593,-14071,-29602,-14051,-29612,-14030,-29622,-14010,-29631,-13990,-29641,-13970,-29650,-13950,-29660,-13929,-29669,-13909,-29679,-13889,-29688,-13869,-29697,-13848,-29707,-13828,-29716,-13808,-29726,-13788,-29735,-13767,-29745,-13747,-29754,-13727,-29763,-13707,-29773,-13686,-29782,-13666,-29791,-13646,-29801,-13625,-29810,-13605,-29819,-13585,-29828,-13564,-29838,-13544,-29847,-13524,-29856,-13503,-29865,-13483,-29874,-13463,-29884,-13442,-29893,-13422,-29902,-13401,-29911,-13381,-29920,-13361,-29929,-13340,-29938,-13320,-29947,-13299,-29956,-13279,-29965,-13259,-29974,-13238,-29984,-13218,-29993,-13197,-30002,-13177,-30010,-13156,-30019,-13136,-30028,-13115,-30037,-13095,-30046,-13075,-30055,-13054,-30064,-13034,-30073,-13013,-30082,-12993,-30091,-12972,-30099,-12951,-30108,-12931,-30117,-12910,-30126,-12890,-30135,-12869,-30143,-12849,-30152,-12828,-30161,-12808,-30170,-12787,-30178,-12767,-30187,-12746,-30196,-12725,-30204,-12705,-30213,-12684,-30222,-12664,-30230,-12643,-30239,-12622,-30248,-12602,-30256,-12581,-30265,-12561,-30273,-12540,-30282,-12519,-30290,-12499,-30299,-12478,-30307,-12457,-30316,-12437,-30324,-12416,-30333,-12395,-30341,-12375,-30350,-12354,-30358,-12333,-30366,-12313,-30375,-12292,-30383,-12271,-30392,-12250,-30400,-12230,-30408,-12209,-30417,-12188,-30425,-12167,-30433,-12147,-30441,-12126,-30450,-12105,-30458,-12084,-30466,-12064,-30474,-12043,-30483,-12022,-30491,-12001,-30499,-11981,-30507,-11960,-30515,-11939,-30523,-11918,-30531,-11897,-30540,-11877,-30548,-11856,-30556,-11835,-30564,-11814,-30572,-11793,-30580,-11772,-30588,-11751,-30596,-11731,-30604,-11710,-30612,-11689,-30620,-11668,-30628,-11647,-30636,-11626,-30644,-11605,-30652,-11584,-30659,-11564,-30667,-11543,-30675,-11522,-30683,-11501,-30691,-11480,-30699,-11459,-30706,-11438,-30714,-11417,-30722,-11396,-30730,-11375,-30738,-11354,-30745,-11333,-30753,-11312,-30761,-11291,-30768,-11270,-30776,-11249,-30784,-11228,-30791,-11207,-30799,-11186,-30807,-11165,-30814,-11144,-30822,-11123,-30829,-11102,-30837,-11081,-30845,-11060,-30852,-11039,-30860,-11018,-30867,-10997,-30875,-10976,-30882,-10955,-30890,-10934,-30897,-10913,-30904,-10892,-30912,-10871,-30919,-10850,-30927,-10829,-30934,-10808,-30941,-10787,-30949,-10766,-30956,-10744,-30963,-10723,-30971,-10702,-30978,-10681,-30985,-10660,-30992,-10639,-31000,-10618,-31007,-10597,-31014,-10575,-31021,-10554,-31029,-10533,-31036,-10512,-31043,-10491,-31050,-10470,-31057,-10448,-31064,-10427,-31071,-10406,-31078,-10385,-31086,-10364,-31093,-10343,-31100,-10321,-31107,-10300,-31114,-10279,-31121,-10258,-31128,-10236,-31135,-10215,-31142,-10194,-31149,-10173,-31155,-10152,-31162,-10130,-31169,-10109,-31176,-10088,-31183,-10067,-31190,-10045,-31197,-10024,-31204,-10003,-31210,-9981,-31217,-9960,-31224,-9939,-31231,-9918,-31237,-9896,-31244,-9875,-31251,-9854,-31258,-9832,-31264,-9811,-31271,-9790,-31278,-9768,-31284,-9747,-31291,-9726,-31298,-9704,-31304,-9683,-31311,-9662,-31317,-9640,-31324,-9619,-31331,-9598,-31337,-9576,-31344,-9555,-31350,-9534,-31357,-9512,-31363,-9491,-31370,-9469,-31376,-9448,-31382,-9427,-31389,-9405,-31395,-9384,-31402,-9363,-31408,-9341,-31414,-9320,-31421,-9298,-31427,-9277,-31433,-9255,-31440,-9234,-31446,-9213,-31452,-9191,-31458,-9170,-31465,-9148,-31471,-9127,-31477,-9105,-31483,-9084,-31490,-9062,-31496,-9041,-31502,-9019,-31508,-8998,-31514,-8976,-31520,-8955,-31526,-8933,-31532,-8912,-31538,-8890,-31545,-8869,-31551,-8847,-31557,-8826,-31563,-8804,-31569,-8783,-31575,-8761,-31581,-8740,-31587,-8718,-31592,-8697,-31598,-8675,-31604,-8654,-31610,-8632,-31616,-8611,-31622,-8589,-31628,-8568,-31634,-8546,-31639,-8524,-31645,-8503,-31651,-8481,-31657,-8460,-31663,-8438,-31668,-8416,-31674,-8395,-31680,-8373,-31685,-8352,-31691,-8330,-31697,-8308,-31702,-8287,-31708,-8265,-31714,-8244,-31719,-8222,-31725,-8200,-31730,-8179,-31736,-8157,-31742,-8135,-31747,-8114,-31753,-8092,-31758,-8071,-31764,-8049,-31769,-8027,-31775,-8006,-31780,-7984,-31786,-7962,-31791,-7941,-31796,-7919,-31802,-7897,-31807,-7876,-31812,-7854,-31818,-7832,-31823,-7810,-31828,-7789,-31834,-7767,-31839,-7745,-31844,-7724,-31850,-7702,-31855,-7680,-31860,-7658,-31865,-7637,-31870,-7615,-31876,-7593,-31881,-7572,-31886,-7550,-31891,-7528,-31896,-7506,-31901,-7485,-31906,-7463,-31912,-7441,-31917,-7419,-31922,-7398,-31927,-7376,-31932,-7354,-31937,-7332,-31942,-7311,-31947,-7289,-31952,-7267,-31957,-7245,-31962,-7223,-31966,-7202,-31971,-7180,-31976,-7158,-31981,-7136,-31986,-7114,-31991,-7093,-31996,-7071,-32000,-7049,-32005,-7027,-32010,-7005,-32015,-6983,-32020,-6962,-32024,-6940,-32029,-6918,-32034,-6896,-32038,-6874,-32043,-6852,-32048,-6831,-32052,-6809,-32057,-6787,-32062,-6765,-32066,-6743,-32071,-6721,-32075,-6699,-32080,-6678,-32085,-6656,-32089,-6634,-32094,-6612,-32098,-6590,-32103,-6568,-32107,-6546,-32111,-6524,-32116,-6503,-32120,-6481,-32125,-6459,-32129,-6437,-32134,-6415,-32138,-6393,-32142,-6371,-32147,-6349,-32151,-6327,-32155,-6305,-32159,-6283,-32164,-6262,-32168,-6240,-32172,-6218,-32177,-6196,-32181,-6174,-32185,-6152,-32189,-6130,-32193,-6108,-32197,-6086,-32202,-6064,-32206,-6042,-32210,-6020,-32214,-5998,-32218,-5976,-32222,-5954,-32226,-5932,-32230,-5910,-32234,-5888,-32238,-5866,-32242,-5844,-32246,-5822,-32250,-5800,-32254,-5778,-32258,-5756,-32262,-5734,-32266,-5712,-32270,-5690,-32274,-5668,-32277,-5646,-32281,-5624,-32285,-5602,-32289,-5580,-32293,-5558,-32296,-5536,-32300,-5514,-32304,-5492,-32308,-5470,-32311,-5448,-32315,-5426,-32319,-5404,-32323,-5382,-32326,-5360,-32330,-5338,-32333,-5316,-32337,-5294,-32341,-5272,-32344,-5250,-32348,-5228,-32351,-5206,-32355,-5184,-32358,-5162,-32362,-5140,-32365,-5118,-32369,-5095,-32372,-5073,-32376,-5051,-32379,-5029,-32383,-5007,-32386,-4985,-32390,-4963,-32393,-4941,-32396,-4919,-32400,-4897,-32403,-4875,-32406,-4853,-32410,-4831,-32413,-4808,-32416,-4786,-32419,-4764,-32423,-4742,-32426,-4720,-32429,-4698,-32432,-4676,-32435,-4654,-32439,-4632,-32442,-4609,-32445,-4587,-32448,-4565,-32451,-4543,-32454,-4521,-32457,-4499,-32460,-4477,-32463,-4455,-32466,-4432,-32469,-4410,-32472,-4388,-32475,-4366,-32478,-4344,-32481,-4322,-32484,-4300,-32487,-4277,-32490,-4255,-32493,-4233,-32496,-4211,-32499,-4189,-32502,-4167,-32504,-4145,-32507,-4122,-32510,-4100,-32513,-4078,-32516,-4056,-32518,-4034,-32521,-4012,-32524,-3989,-32527,-3967,-32529,-3945,-32532,-3923,-32535,-3901,-32537,-3878,-32540,-3856,-32542,-3834,-32545,-3812,-32548,-3790,-32550,-3768,-32553,-3745,-32555,-3723,-32558,-3701,-32560,-3679,-32563,-3657,-32565,-3634,-32568,-3612,-32570,-3590,-32573,-3568,-32575,-3546,-32578,-3523,-32580,-3501,-32582,-3479,-32585,-3457,-32587,-3434,-32589,-3412,-32592,-3390,-32594,-3368,-32596,-3346,-32599,-3323,-32601,-3301,-32603,-3279,-32605,-3257,-32608,-3234,-32610,-3212,-32612,-3190,-32614,-3168,-32616,-3146,-32618,-3123,-32620,-3101,-32623,-3079,-32625,-3057,-32627,-3034,-32629,-3012,-32631,-2990,-32633,-2968,-32635,-2945,-32637,-2923,-32639,-2901,-32641,-2879,-32643,-2856,-32645,-2834,-32647,-2812,-32649,-2790,-32650,-2767,-32652,-2745,-32654,-2723,-32656,-2701,-32658,-2678,-32660,-2656,-32662,-2634,-32663,-2611,-32665,-2589,-32667,-2567,-32669,-2545,-32670,-2522,-32672,-2500,-32674,-2478,-32675,-2456,-32677,-2433,-32679,-2411,-32680,-2389,-32682,-2366,-32684,-2344,-32685,-2322,-32687,-2300,-32688,-2277,-32690,-2255,-32691,-2233,-32693,-2210,-32694,-2188,-32696,-2166,-32697,-2144,-32699,-2121,-32700,-2099,-32702,-2077,-32703,-2054,-32704,-2032,-32706,-2010,-32707,-1987,-32709,-1965,-32710,-1943,-32711,-1921,-32712,-1898,-32714,-1876,-32715,-1854,-32716,-1831,-32718,-1809,-32719,-1787,-32720,-1764,-32721,-1742,-32722,-1720,-32724,-1698,-32725,-1675,-32726,-1653,-32727,-1631,-32728,-1608,-32729,-1586,-32730,-1564,-32731,-1541,-32732,-1519,-32733,-1497,-32734,-1474,-32735,-1452,-32736,-1430,-32737,-1407,-32738,-1385,-32739,-1363,-32740,-1340,-32741,-1318,-32742,-1296,-32743,-1274,-32744,-1251,-32744,-1229,-32745,-1207,-32746,-1184,-32747,-1162,-32748,-1140,-32748,-1117,-32749,-1095,-32750,-1073,-32751,-1050,-32751,-1028,-32752,-1006,-32753,-983,-32753,-961,-32754,-939,-32755,-916,-32755,-894,-32756,-872,-32757,-849,-32757,-827,-32758,-805,-32758,-782,-32759,-760,-32759,-738,-32760,-715,-32760,-693,-32761,-671,-32761,-648,-32762,-626,-32762,-604,-32762,-581,-32763,-559,-32763,-537,-32763,-514,-32764,-492,-32764,-470,-32764,-447,-32765,-425,-32765,-403,-32765,-380,-32766,-358,-32766,-336,-32766,-313,-32766,-291,-32766,-269,-32767,-246,-32767,-224,-32767,-202,-32767,-179,-32767,-157,-32767,-135,-32767,-112,-32767,-90,-32767,-68,-32767,-45,-32767,-23,-32767,-1,-32767,22,-32767,44,-32767,67,-32767,89,-32767,111,-32767,134,-32767,156,-32767,178,-32767,201,-32767,223,-32767,245,-32766,268,-32766,290,-32766,312,-32766,335,-32766,357,-32765,379,-32765,402,-32765,424,-32764,446,-32764,469,-32764,491,-32763,513,-32763,536,-32763,558,-32762,580,-32762,603,-32762,625,-32761,647,-32761,670,-32760,692,-32760,714,-32759,737,-32759,759,-32758,781,-32758,804,-32757,826,-32757,848,-32756,871,-32755,893,-32755,915,-32754,938,-32753,960,-32753,982,-32752,1005,-32751,1027,-32751,1049,-32750,1072,-32749,1094,-32748,1116,-32748,1139,-32747,1161,-32746,1183,-32745,1206,-32744,1228,-32744,1250,-32743,1273,-32742,1295,-32741,1317,-32740,1339,-32739,1362,-32738,1384,-32737,1406,-32736,1429,-32735,1451,-32734,1473,-32733,1496,-32732,1518,-32731,1540,-32730,1563,-32729,1585,-32728,1607,-32727,1630,-32726,1652,-32725,1674,-32724,1697,-32722,1719,-32721,1741,-32720,1763,-32719,1786,-32718,1808,-32716,1830,-32715,1853,-32714,1875,-32712,1897,-32711,1920,-32710,1942,-32709,1964,-32707,1986,-32706,2009,-32704,2031,-32703,2053,-32702,2076,-32700,2098,-32699,2120,-32697,2143,-32696,2165,-32694,2187,-32693,2209,-32691,2232,-32690,2254,-32688,2276,-32687,2299,-32685,2321,-32684,2343,-32682,2365,-32680,2388,-32679,2410,-32677,2432,-32675,2455,-32674,2477,-32672,2499,-32670,2521,-32669,2544,-32667,2566,-32665,2588,-32663,2610,-32662,2633,-32660,2655,-32658,2677,-32656,2700,-32654,2722,-32652,2744,-32650,2766,-32649,2789,-32647,2811,-32645,2833,-32643,2855,-32641,2878,-32639,2900,-32637,2922,-32635,2944,-32633,2967,-32631,2989,-32629,3011,-32627,3033,-32625,3056,-32623,3078,-32620,3100,-32618,3122,-32616,3145,-32614,3167,-32612,3189,-32610,3211,-32608,3233,-32605,3256,-32603,3278,-32601,3300,-32599,3322,-32596,3345,-32594,3367,-32592,3389,-32589,3411,-32587,3433,-32585,3456,-32582,3478,-32580,3500,-32578,3522,-32575,3545,-32573,3567,-32570,3589,-32568,3611,-32565,3633,-32563,3656,-32560,3678,-32558,3700,-32555,3722,-32553,3744,-32550,3767,-32548,3789,-32545,3811,-32542,3833,-32540,3855,-32537,3877,-32535,3900,-32532,3922,-32529,3944,-32527,3966,-32524,3988,-32521,4011,-32518,4033,-32516,4055,-32513,4077,-32510,4099,-32507,4121,-32504,4144,-32502,4166,-32499,4188,-32496,4210,-32493,4232,-32490,4254,-32487,4276,-32484,4299,-32481,4321,-32478,4343,-32475,4365,-32472,4387,-32469,4409,-32466,4431,-32463,4454,-32460,4476,-32457,4498,-32454,4520,-32451,4542,-32448,4564,-32445,4586,-32442,4608,-32439,4631,-32435,4653,-32432,4675,-32429,4697,-32426,4719,-32423,4741,-32419,4763,-32416,4785,-32413,4807,-32410,4830,-32406,4852,-32403,4874,-32400,4896,-32396,4918,-32393,4940,-32390,4962,-32386,4984,-32383,5006,-32379,5028,-32376,5050,-32372,5072,-32369,5094,-32365,5117,-32362,5139,-32358,5161,-32355,5183,-32351,5205,-32348,5227,-32344,5249,-32341,5271,-32337,5293,-32333,5315,-32330,5337,-32326,5359,-32323,5381,-32319,5403,-32315,5425,-32311,5447,-32308,5469,-32304,5491,-32300,5513,-32296,5535,-32293,5557,-32289,5579,-32285,5601,-32281,5623,-32277,5645,-32274,5667,-32270,5689,-32266,5711,-32262,5733,-32258,5755,-32254,5777,-32250,5799,-32246,5821,-32242,5843,-32238,5865,-32234,5887,-32230,5909,-32226,5931,-32222,5953,-32218,5975,-32214,5997,-32210,6019,-32206,6041,-32202,6063,-32197,6085,-32193,6107,-32189,6129,-32185,6151,-32181,6173,-32177,6195,-32172,6217,-32168,6239,-32164,6261,-32159,6282,-32155,6304,-32151,6326,-32147,6348,-32142,6370,-32138,6392,-32134,6414,-32129,6436,-32125,6458,-32120,6480,-32116,6502,-32111,6523,-32107,6545,-32103,6567,-32098,6589,-32094,6611,-32089,6633,-32085,6655,-32080,6677,-32075,6698,-32071,6720,-32066,6742,-32062,6764,-32057,6786,-32052,6808,-32048,6830,-32043,6851,-32038,6873,-32034,6895,-32029,6917,-32024,6939,-32020,6961,-32015,6982,-32010,7004,-32005,7026,-32000,7048,-31996,7070,-31991,7092,-31986,7113,-31981,7135,-31976,7157,-31971,7179,-31966,7201,-31962,7222,-31957,7244,-31952,7266,-31947,7288,-31942,7310,-31937,7331,-31932,7353,-31927,7375,-31922,7397,-31917,7418,-31912,7440,-31906,7462,-31901,7484,-31896,7505,-31891,7527,-31886,7549,-31881,7571,-31876,7592,-31870,7614,-31865,7636,-31860,7657,-31855,7679,-31850,7701,-31844,7723,-31839,7744,-31834,7766,-31828,7788,-31823,7809,-31818,7831,-31812,7853,-31807,7875,-31802,7896,-31796,7918,-31791,7940,-31786,7961,-31780,7983,-31775,8005,-31769,8026,-31764,8048,-31758,8070,-31753,8091,-31747,8113,-31742,8134,-31736,8156,-31730,8178,-31725,8199,-31719,8221,-31714,8243,-31708,8264,-31702,8286,-31697,8307,-31691,8329,-31685,8351,-31680,8372,-31674,8394,-31668,8415,-31663,8437,-31657,8459,-31651,8480,-31645,8502,-31639,8523,-31634,8545,-31628,8567,-31622,8588,-31616,8610,-31610,8631,-31604,8653,-31598,8674,-31592,8696,-31587,8717,-31581,8739,-31575,8760,-31569,8782,-31563,8803,-31557,8825,-31551,8846,-31545,8868,-31538,8889,-31532,8911,-31526,8932,-31520,8954,-31514,8975,-31508,8997,-31502,9018,-31496,9040,-31490,9061,-31483,9083,-31477,9104,-31471,9126,-31465,9147,-31458,9169,-31452,9190,-31446,9212,-31440,9233,-31433,9254,-31427,9276,-31421,9297,-31414,9319,-31408,9340,-31402,9362,-31395,9383,-31389,9404,-31382,9426,-31376,9447,-31370,9468,-31363,9490,-31357,9511,-31350,9533,-31344,9554,-31337,9575,-31331,9597,-31324,9618,-31317,9639,-31311,9661,-31304,9682,-31298,9703,-31291,9725,-31284,9746,-31278,9767,-31271,9789,-31264,9810,-31258,9831,-31251,9853,-31244,9874,-31237,9895,-31231,9917,-31224,9938,-31217,9959,-31210,9980,-31204,10002,-31197,10023,-31190,10044,-31183,10066,-31176,10087,-31169,10108,-31162,10129,-31155,10151,-31149,10172,-31142,10193,-31135,10214,-31128,10235,-31121,10257,-31114,10278,-31107,10299,-31100,10320,-31093,10342,-31086,10363,-31078,10384,-31071,10405,-31064,10426,-31057,10447,-31050,10469,-31043,10490,-31036,10511,-31029,10532,-31021,10553,-31014,10574,-31007,10596,-31000,10617,-30992,10638,-30985,10659,-30978,10680,-30971,10701,-30963,10722,-30956,10743,-30949,10765,-30941,10786,-30934,10807,-30927,10828,-30919,10849,-30912,10870,-30904,10891,-30897,10912,-30890,10933,-30882,10954,-30875,10975,-30867,10996,-30860,11017,-30852,11038,-30845,11059,-30837,11080,-30829,11101,-30822,11122,-30814,11143,-30807,11164,-30799,11185,-30791,11206,-30784,11227,-30776,11248,-30768,11269,-30761,11290,-30753,11311,-30745,11332,-30738,11353,-30730,11374,-30722,11395,-30714,11416,-30706,11437,-30699,11458,-30691,11479,-30683,11500,-30675,11521,-30667,11542,-30659,11563,-30652,11583,-30644,11604,-30636,11625,-30628,11646,-30620,11667,-30612,11688,-30604,11709,-30596,11730,-30588,11750,-30580,11771,-30572,11792,-30564,11813,-30556,11834,-30548,11855,-30540,11876,-30531,11896,-30523,11917,-30515,11938,-30507,11959,-30499,11980,-30491,12000,-30483,12021,-30474,12042,-30466,12063,-30458,12083,-30450,12104,-30441,12125,-30433,12146,-30425,12166,-30417,12187,-30408,12208,-30400,12229,-30392,12249,-30383,12270,-30375,12291,-30366,12312,-30358,12332,-30350,12353,-30341,12374,-30333,12394,-30324,12415,-30316,12436,-30307,12456,-30299,12477,-30290,12498,-30282,12518,-30273,12539,-30265,12560,-30256,12580,-30248,12601,-30239,12621,-30230,12642,-30222,12663,-30213,12683,-30204,12704,-30196,12724,-30187,12745,-30178,12766,-30170,12786,-30161,12807,-30152,12827,-30143,12848,-30135,12868,-30126,12889,-30117,12909,-30108,12930,-30099,12950,-30091,12971,-30082,12992,-30073,13012,-30064,13033,-30055,13053,-30046,13074,-30037,13094,-30028,13114,-30019,13135,-30010,13155,-30002,13176,-29993,13196,-29984,13217,-29974,13237,-29965,13258,-29956,13278,-29947,13298,-29938,13319,-29929,13339,-29920,13360,-29911,13380,-29902,13400,-29893,13421,-29884,13441,-29874,13462,-29865,13482,-29856,13502,-29847,13523,-29838,13543,-29828,13563,-29819,13584,-29810,13604,-29801,13624,-29791,13645,-29782,13665,-29773,13685,-29763,13706,-29754,13726,-29745,13746,-29735,13766,-29726,13787,-29716,13807,-29707,13827,-29697,13847,-29688,13868,-29679,13888,-29669,13908,-29660,13928,-29650,13949,-29641,13969,-29631,13989,-29622,14009,-29612,14029,-29602,14050,-29593,14070,-29583,14090,-29574,14110,-29564,14130,-29554,14150,-29545,14171,-29535,14191,-29525,14211,-29516,14231,-29506,14251,-29496,14271,-29486,14291,-29477,14311,-29467,14331,-29457,14352,-29447,14372,-29438,14392,-29428,14412,-29418,14432,-29408,14452,-29398,14472,-29388,14492,-29378,14512,-29369,14532,-29359,14552,-29349,14572,-29339,14592,-29329,14612,-29319,14632,-29309,14652,-29299,14672,-29289,14692,-29279,14712,-29269,14732,-29259,14752,-29249,14772,-29239,14792,-29228,14812,-29218,14832,-29208,14852,-29198,14871,-29188,14891,-29178,14911,-29168,14931,-29157,14951,-29147,14971,-29137,14991,-29127,15011,-29117,15030,-29106,15050,-29096,15070,-29086,15090,-29075,15110,-29065,15130,-29055,15149,-29045,15169,-29034,15189,-29024,15209,-29013,15229,-29003,15248,-28993,15268,-28982,15288,-28972,15308,-28961,15327,-28951,15347,-28940,15367,-28930,15387,-28919,15406,-28909,15426,-28898,15446,-28888,15465,-28877,15485,-28867,15505,-28856,15525,-28846,15544,-28835,15564,-28824,15583,-28814,15603,-28803,15623,-28792,15642,-28782,15662,-28771,15682,-28760,15701,-28750,15721,-28739,15740,-28728,15760,-28717,15780,-28707,15799,-28696,15819,-28685,15838,-28674,15858,-28663,15877,-28653,15897,-28642,15917,-28631,15936,-28620,15956,-28609,15975,-28598,15995,-28587,16014,-28576,16034,-28566,16053,-28555,16072,-28544,16092,-28533,16111,-28522,16131,-28511,16150,-28500,16170,-28489,16189,-28478,16209,-28466,16228,-28455,16247,-28444,16267,-28433,16286,-28422,16306,-28411,16325,-28400,16344,-28389,16364,-28378,16383,-28366,16402,-28355,16422,-28344,16441,-28333,16460,-28322,16480,-28310,16499,-28299,16518,-28288,16538,-28276,16557,-28265,16576,-28254,16595,-28243,16615,-28231,16634,-28220,16653,-28209,16672,-28197,16692,-28186,16711,-28174,16730,-28163,16749,-28152,16768,-28140,16788,-28129,16807,-28117,16826,-28106,16845,-28094,16864,-28083,16883,-28071,16903,-28060,16922,-28048,16941,-28037,16960,-28025,16979,-28013,16998,-28002,17017,-27990,17036,-27979,17055,-27967,17074,-27955,17094,-27944,17113,-27932,17132,-27920,17151,-27909,17170,-27897,17189,-27885,17208,-27873,17227,-27862,17246,-27850,17265,-27838,17284,-27826,17303,-27815,17322,-27803,17341,-27791,17360,-27779,17379,-27767,17397,-27755,17416,-27743,17435,-27732,17454,-27720,17473,-27708,17492,-27696,17511,-27684,17530,-27672,17549,-27660,17567,-27648,17586,-27636,17605,-27624,17624,-27612,17643,-27600,17662,-27588,17680,-27576,17699,-27564,17718,-27552,17737,-27539,17756,-27527,17774,-27515,17793,-27503,17812,-27491,17831,-27479,17849,-27467,17868,-27454,17887,-27442,17906,-27430,17924,-27418,17943,-27406,17962,-27393,17980,-27381,17999,-27369,18018,-27356,18036,-27344,18055,-27332,18074,-27320,18092,-27307,18111,-27295,18130,-27282,18148,-27270,18167,-27258,18185,-27245,18204,-27233,18222,-27220,18241,-27208,18260,-27196,18278,-27183,18297,-27171,18315,-27158,18334,-27146,18352,-27133,18371,-27121,18389,-27108,18408,-27095,18426,-27083,18445,-27070,18463,-27058,18482,-27045,18500,-27032,18518,-27020,18537,-27007,18555,-26995,18574,-26982,18592,-26969,18610,-26956,18629,-26944,18647,-26931,18666,-26918,18684,-26906,18702,-26893,18721,-26880,18739,-26867,18757,-26854,18776,-26842,18794,-26829,18812,-26816,18830,-26803,18849,-26790,18867,-26777,18885,-26765,18904,-26752,18922,-26739,18940,-26726,18958,-26713,18976,-26700,18995,-26687,19013,-26674,19031,-26661,19049,-26648,19067,-26635,19086,-26622,19104,-26609,19122,-26596,19140,-26583,19158,-26570,19176,-26557,19194,-26544,19212,-26531,19231,-26517,19249,-26504,19267,-26491,19285,-26478,19303,-26465,19321,-26452,19339,-26438,19357,-26425,19375,-26412,19393,-26399,19411,-26386,19429,-26372,19447,-26359,19465,-26346,19483,-26333,19501,-26319,19519,-26306,19537,-26293,19555,-26279,19573,-26266,19590,-26253,19608,-26239,19626,-26226,19644,-26212,19662,-26199,19680,-26186,19698,-26172,19716,-26159,19733,-26145,19751,-26132,19769,-26118,19787,-26105,19805,-26091,19822,-26078,19840,-26064,19858,-26051,19876,-26037,19894,-26023,19911,-26010,19929,-25996,19947,-25983,19965,-25969,19982,-25955,20000,-25942,20018,-25928,20035,-25914,20053,-25901,20071,-25887,20088,-25873,20106,-25860,20124,-25846,20141,-25832,20159,-25818,20176,-25805,20194,-25791,20212,-25777,20229,-25763,20247,-25750,20264,-25736,20282,-25722,20299,-25708,20317,-25694,20334,-25680,20352,-25666,20369,-25653,20387,-25639,20404,-25625,20422,-25611,20439,-25597,20457,-25583,20474,-25569,20492,-25555,20509,-25541,20527,-25527,20544,-25513,20561,-25499,20579,-25485,20596,-25471,20613,-25457,20631,-25443,20648,-25429,20666,-25415,20683,-25400,20700,-25386,20718,-25372,20735,-25358,20752,-25344,20769,-25330,20787,-25316,20804,-25301,20821,-25287,20838,-25273,20856,-25259,20873,-25244,20890,-25230,20907,-25216,20925,-25202,20942,-25187,20959,-25173,20976,-25159,20993,-25145,21010,-25130,21027,-25116,21045,-25101,21062,-25087,21079,-25073,21096,-25058,21113,-25044,21130,-25030,21147,-25015,21164,-25001,21181,-24986,21198,-24972,21215,-24957,21232,-24943,21249,-24928,21266,-24914,21283,-24899,21300,-24885,21317,-24870,21334,-24856,21351,-24841,21368,-24827,21385,-24812,21402,-24797,21419,-24783,21436,-24768,21453,-24754,21470,-24739,21486,-24724,21503,-24710,21520,-24695,21537,-24680,21554,-24665,21571,-24651,21587,-24636,21604,-24621,21621,-24607,21638,-24592,21655,-24577,21671,-24562,21688,-24547,21705,-24533,21722,-24518,21738,-24503,21755,-24488,21772,-24473,21788,-24458,21805,-24444,21822,-24429,21838,-24414,21855,-24399,21872,-24384,21888,-24369,21905,-24354,21922,-24339,21938,-24324,21955,-24309,21971,-24294,21988,-24279,22004,-24264,22021,-24249,22038,-24234,22054,-24219,22071,-24204,22087,-24189,22104,-24174,22120,-24159,22137,-24144,22153,-24129,22169,-24114,22186,-24098,22202,-24083,22219,-24068,22235,-24053,22252,-24038,22268,-24023,22284,-24007,22301,-23992,22317,-23977,22333,-23962,22350,-23946,22366,-23931,22382,-23916,22399,-23901,22415,-23885,22431,-23870,22448,-23855,22464,-23839,22480,-23824,22496,-23809,22513,-23793,22529,-23778,22545,-23763,22561,-23747,22577,-23732,22594,-23716,22610,-23701,22626,-23686,22642,-23670,22658,-23655,22674,-23639,22691,-23624,22707,-23608,22723,-23593,22739,-23577,22755,-23562,22771,-23546,22787,-23531,22803,-23515,22819,-23500,22835,-23484,22851,-23468,22867,-23453,22883,-23437,22899,-23422,22915,-23406,22931,-23390,22947,-23375,22963,-23359,22979,-23343,22995,-23328,23011,-23312,23027,-23296,23043,-23281,23058,-23265,23074,-23249,23090,-23233,23106,-23218,23122,-23202,23138,-23186,23153,-23170,23169,-23154,23185,-23139,23201,-23123,23217,-23107,23232,-23091,23248,-23075,23264,-23059,23280,-23044,23295,-23028,23311,-23012,23327,-22996,23342,-22980,23358,-22964,23374,-22948,23389,-22932,23405,-22916,23421,-22900,23436,-22884,23452,-22868,23467,-22852,23483,-22836,23499,-22820,23514,-22804,23530,-22788,23545,-22772,23561,-22756,23576,-22740,23592,-22724,23607,-22708,23623,-22692,23638,-22675,23654,-22659,23669,-22643,23685,-22627,23700,-22611,23715,-22595,23731,-22578,23746,-22562,23762,-22546,23777,-22530,23792,-22514,23808,-22497,23823,-22481,23838,-22465,23854,-22449,23869,-22432,23884,-22416,23900,-22400,23915,-22383,23930,-22367,23945,-22351,23961,-22334,23976,-22318,23991,-22302,24006,-22285,24022,-22269,24037,-22253,24052,-22236,24067,-22220,24082,-22203,24097,-22187,24113,-22170,24128,-22154,24143,-22138,24158,-22121,24173,-22105,24188,-22088,24203,-22072,24218,-22055,24233,-22039,24248,-22022,24263,-22005,24278,-21989,24293,-21972,24308,-21956,24323,-21939,24338,-21923,24353,-21906,24368,-21889,24383,-21873,24398,-21856,24413,-21839,24428,-21823,24443,-21806,24457,-21789,24472,-21773,24487,-21756,24502,-21739,24517,-21723,24532,-21706,24546,-21689,24561,-21672,24576,-21656,24591,-21639,24606,-21622,24620,-21605,24635,-21588,24650,-21572,24664,-21555,24679,-21538,24694,-21521,24709,-21504,24723,-21487,24738,-21471,24753,-21454,24767,-21437,24782,-21420,24796,-21403,24811,-21386,24826,-21369,24840,-21352,24855,-21335,24869,-21318,24884,-21301,24898,-21284,24913,-21267,24927,-21250,24942,-21233,24956,-21216,24971,-21199,24985,-21182,25000,-21165,25014,-21148,25029,-21131,25043,-21114,25057,-21097,25072,-21080,25086,-21063,25100,-21046,25115,-21028,25129,-21011,25144,-20994,25158,-20977,25172,-20960,25186,-20943,25201,-20926,25215,-20908,25229,-20891,25243,-20874,25258,-20857,25272,-20839,25286,-20822,25300,-20805,25315,-20788,25329,-20770,25343,-20753,25357,-20736,25371,-20719,25385,-20701,25399,-20684,25414,-20667,25428,-20649,25442,-20632,25456,-20614,25470,-20597,25484,-20580,25498,-20562,25512,-20545,25526,-20528,25540,-20510,25554,-20493,25568,-20475,25582,-20458,25596,-20440,25610,-20423,25624,-20405,25638,-20388,25652,-20370,25665,-20353,25679,-20335,25693,-20318,25707,-20300,25721,-20283,25735,-20265,25749,-20248,25762,-20230,25776,-20213,25790,-20195,25804,-20177,25817,-20160,25831,-20142,25845,-20125,25859,-20107,25872,-20089,25886,-20072,25900,-20054,25913,-20036,25927,-20019,25941,-20001,25954,-19983,25968,-19966,25982,-19948,25995,-19930,26009,-19912,26022,-19895,26036,-19877,26050,-19859,26063,-19841,26077,-19823,26090,-19806,26104,-19788,26117,-19770,26131,-19752,26144,-19734,26158,-19717,26171,-19699,26185,-19681,26198,-19663,26211,-19645,26225,-19627,26238,-19609,26252,-19591,26265,-19574,26278,-19556,26292,-19538,26305,-19520,26318,-19502,26332,-19484,26345,-19466,26358,-19448,26371,-19430,26385,-19412,26398,-19394,26411,-19376,26424,-19358,26437,-19340,26451,-19322,26464,-19304,26477,-19286,26490,-19268,26503,-19250,26516,-19232,26530,-19213,26543,-19195,26556,-19177,26569,-19159,26582,-19141,26595,-19123,26608,-19105,26621,-19087,26634,-19068,26647,-19050,26660,-19032,26673,-19014,26686,-18996,26699,-18977,26712,-18959,26725,-18941,26738,-18923,26751,-18905,26764,-18886,26776,-18868,26789,-18850,26802,-18831,26815,-18813,26828,-18795,26841,-18777,26853,-18758,26866,-18740,26879,-18722,26892,-18703,26905,-18685,26917,-18667,26930,-18648,26943,-18630,26955,-18611,26968,-18593,26981,-18575,26994,-18556,27006,-18538,27019,-18519,27031,-18501,27044,-18483,27057,-18464,27069,-18446,27082,-18427,27094,-18409,27107,-18390,27120,-18372,27132,-18353,27145,-18335,27157,-18316,27170,-18298,27182,-18279,27195,-18261,27207,-18242,27219,-18223,27232,-18205,27244,-18186,27257,-18168,27269,-18149,27281,-18131,27294,-18112,27306,-18093,27319,-18075,27331,-18056,27343,-18037,27355,-18019,27368,-18000,27380,-17981,27392,-17963,27405,-17944,27417,-17925,27429,-17907,27441,-17888,27453,-17869,27466,-17850,27478,-17832,27490,-17813,27502,-17794,27514,-17775,27526,-17757,27538,-17738,27551,-17719,27563,-17700,27575,-17681,27587,-17663,27599,-17644,27611,-17625,27623,-17606,27635,-17587,27647,-17568,27659,-17550,27671,-17531,27683,-17512,27695,-17493,27707,-17474,27719,-17455,27731,-17436,27742,-17417,27754,-17398,27766,-17380,27778,-17361,27790,-17342,27802,-17323,27814,-17304,27825,-17285,27837,-17266,27849,-17247,27861,-17228,27872,-17209,27884,-17190,27896,-17171,27908,-17152,27919,-17133,27931,-17114,27943,-17095,27954,-17075,27966,-17056,27978,-17037,27989,-17018,28001,-16999,28012,-16980,28024,-16961,28036,-16942,28047,-16923,28059,-16904,28070,-16884,28082,-16865,28093,-16846,28105,-16827,28116,-16808,28128,-16789,28139,-16769,28151,-16750,28162,-16731,28173,-16712,28185,-16693,28196,-16673,28208,-16654,28219,-16635,28230,-16616,28242,-16596,28253,-16577,28264,-16558,28275,-16539,28287,-16519,28298,-16500,28309,-16481,28321,-16461,28332,-16442,28343,-16423,28354,-16403,28365};
diff --git a/openair1/PHY/TOOLS/twiddle24576.h b/openair1/PHY/TOOLS/twiddle24576.h
deleted file mode 100644
index 34fc59d7796a54a9aafb230ddcfa7c02dd0057c9..0000000000000000000000000000000000000000
--- a/openair1/PHY/TOOLS/twiddle24576.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(0:8191)/24576));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*(0:2:16382)/24576));
-twa2 = zeros(1,16384);
-twb2 = zeros(1,16384);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-
-
-*/
-
-int16_t twa24576[16384] __attribute__((aligned(32))) = {32767,0,32766,-9,32766,-17,32766,-26,32766,-34,32766,-42,32766,-51,32766,-59,32766,-68,32766,-76,32766,-84,32766,-93,32766,-101,32766,-109,32766,-118,32766,-126,32766,-135,32766,-143,32766,-151,32766,-160,32766,-168,32766,-176,32766,-185,32766,-193,32766,-202,32766,-210,32766,-218,32766,-227,32766,-235,32766,-243,32766,-252,32765,-260,32765,-269,32765,-277,32765,-285,32765,-294,32765,-302,32765,-310,32765,-319,32765,-327,32765,-336,32765,-344,32765,-352,32765,-361,32764,-369,32764,-377,32764,-386,32764,-394,32764,-403,32764,-411,32764,-419,32764,-428,32764,-436,32763,-444,32763,-453,32763,-461,32763,-470,32763,-478,32763,-486,32763,-495,32763,-503,32763,-511,32762,-520,32762,-528,32762,-537,32762,-545,32762,-553,32762,-562,32762,-570,32761,-579,32761,-587,32761,-595,32761,-604,32761,-612,32761,-620,32760,-629,32760,-637,32760,-646,32760,-654,32760,-662,32760,-671,32759,-679,32759,-687,32759,-696,32759,-704,32759,-713,32759,-721,32758,-729,32758,-738,32758,-746,32758,-754,32758,-763,32757,-771,32757,-780,32757,-788,32757,-796,32757,-805,32756,-813,32756,-821,32756,-830,32756,-838,32756,-847,32755,-855,32755,-863,32755,-872,32755,-880,32754,-888,32754,-897,32754,-905,32754,-914,32754,-922,32753,-930,32753,-939,32753,-947,32753,-955,32752,-964,32752,-972,32752,-981,32752,-989,32751,-997,32751,-1006,32751,-1014,32751,-1022,32750,-1031,32750,-1039,32750,-1047,32750,-1056,32749,-1064,32749,-1073,32749,-1081,32748,-1089,32748,-1098,32748,-1106,32748,-1114,32747,-1123,32747,-1131,32747,-1140,32746,-1148,32746,-1156,32746,-1165,32746,-1173,32745,-1181,32745,-1190,32745,-1198,32744,-1207,32744,-1215,32744,-1223,32743,-1232,32743,-1240,32743,-1248,32742,-1257,32742,-1265,32742,-1274,32741,-1282,32741,-1290,32741,-1299,32740,-1307,32740,-1315,32740,-1324,32739,-1332,32739,-1340,32739,-1349,32738,-1357,32738,-1366,32738,-1374,32737,-1382,32737,-1391,32737,-1399,32736,-1407,32736,-1416,32736,-1424,32735,-1433,32735,-1441,32734,-1449,32734,-1458,32734,-1466,32733,-1474,32733,-1483,32733,-1491,32732,-1500,32732,-1508,32731,-1516,32731,-1525,32731,-1533,32730,-1541,32730,-1550,32729,-1558,32729,-1566,32729,-1575,32728,-1583,32728,-1592,32727,-1600,32727,-1608,32727,-1617,32726,-1625,32726,-1633,32725,-1642,32725,-1650,32725,-1659,32724,-1667,32724,-1675,32723,-1684,32723,-1692,32722,-1700,32722,-1709,32722,-1717,32721,-1725,32721,-1734,32720,-1742,32720,-1751,32719,-1759,32719,-1767,32718,-1776,32718,-1784,32717,-1792,32717,-1801,32717,-1809,32716,-1817,32716,-1826,32715,-1834,32715,-1843,32714,-1851,32714,-1859,32713,-1868,32713,-1876,32712,-1884,32712,-1893,32711,-1901,32711,-1909,32710,-1918,32710,-1926,32709,-1935,32709,-1943,32708,-1951,32708,-1960,32707,-1968,32707,-1976,32706,-1985,32706,-1993,32705,-2001,32705,-2010,32704,-2018,32704,-2027,32703,-2035,32703,-2043,32702,-2052,32702,-2060,32701,-2068,32701,-2077,32700,-2085,32700,-2093,32699,-2102,32699,-2110,32698,-2118,32697,-2127,32697,-2135,32696,-2144,32696,-2152,32695,-2160,32695,-2169,32694,-2177,32694,-2185,32693,-2194,32692,-2202,32692,-2210,32691,-2219,32691,-2227,32690,-2236,32690,-2244,32689,-2252,32688,-2261,32688,-2269,32687,-2277,32687,-2286,32686,-2294,32686,-2302,32685,-2311,32684,-2319,32684,-2327,32683,-2336,32683,-2344,32682,-2353,32681,-2361,32681,-2369,32680,-2378,32680,-2386,32679,-2394,32678,-2403,32678,-2411,32677,-2419,32676,-2428,32676,-2436,32675,-2444,32675,-2453,32674,-2461,32673,-2469,32673,-2478,32672,-2486,32671,-2495,32671,-2503,32670,-2511,32670,-2520,32669,-2528,32668,-2536,32668,-2545,32667,-2553,32666,-2561,32666,-2570,32665,-2578,32664,-2586,32664,-2595,32663,-2603,32662,-2611,32662,-2620,32661,-2628,32660,-2637,32660,-2645,32659,-2653,32658,-2662,32658,-2670,32657,-2678,32656,-2687,32656,-2695,32655,-2703,32654,-2712,32653,-2720,32653,-2728,32652,-2737,32651,-2745,32651,-2753,32650,-2762,32649,-2770,32649,-2778,32648,-2787,32647,-2795,32646,-2803,32646,-2812,32645,-2820,32644,-2829,32644,-2837,32643,-2845,32642,-2854,32641,-2862,32641,-2870,32640,-2879,32639,-2887,32638,-2895,32638,-2904,32637,-2912,32636,-2920,32635,-2929,32635,-2937,32634,-2945,32633,-2954,32632,-2962,32632,-2970,32631,-2979,32630,-2987,32629,-2995,32629,-3004,32628,-3012,32627,-3020,32626,-3029,32625,-3037,32625,-3045,32624,-3054,32623,-3062,32622,-3070,32622,-3079,32621,-3087,32620,-3095,32619,-3104,32618,-3112,32618,-3121,32617,-3129,32616,-3137,32615,-3146,32614,-3154,32614,-3162,32613,-3171,32612,-3179,32611,-3187,32610,-3196,32610,-3204,32609,-3212,32608,-3221,32607,-3229,32606,-3237,32605,-3246,32605,-3254,32604,-3262,32603,-3271,32602,-3279,32601,-3287,32600,-3296,32600,-3304,32599,-3312,32598,-3321,32597,-3329,32596,-3337,32595,-3346,32594,-3354,32594,-3362,32593,-3371,32592,-3379,32591,-3387,32590,-3396,32589,-3404,32588,-3412,32588,-3421,32587,-3429,32586,-3437,32585,-3446,32584,-3454,32583,-3462,32582,-3471,32581,-3479,32580,-3487,32580,-3496,32579,-3504,32578,-3512,32577,-3521,32576,-3529,32575,-3537,32574,-3546,32573,-3554,32572,-3562,32571,-3571,32571,-3579,32570,-3587,32569,-3595,32568,-3604,32567,-3612,32566,-3620,32565,-3629,32564,-3637,32563,-3645,32562,-3654,32561,-3662,32560,-3670,32559,-3679,32558,-3687,32558,-3695,32557,-3704,32556,-3712,32555,-3720,32554,-3729,32553,-3737,32552,-3745,32551,-3754,32550,-3762,32549,-3770,32548,-3779,32547,-3787,32546,-3795,32545,-3804,32544,-3812,32543,-3820,32542,-3829,32541,-3837,32540,-3845,32539,-3854,32538,-3862,32537,-3870,32536,-3878,32535,-3887,32534,-3895,32533,-3903,32532,-3912,32531,-3920,32530,-3928,32529,-3937,32528,-3945,32527,-3953,32526,-3962,32525,-3970,32524,-3978,32523,-3987,32522,-3995,32521,-4003,32520,-4012,32519,-4020,32518,-4028,32517,-4036,32516,-4045,32515,-4053,32514,-4061,32513,-4070,32512,-4078,32511,-4086,32510,-4095,32509,-4103,32508,-4111,32507,-4120,32506,-4128,32504,-4136,32503,-4145,32502,-4153,32501,-4161,32500,-4169,32499,-4178,32498,-4186,32497,-4194,32496,-4203,32495,-4211,32494,-4219,32493,-4228,32492,-4236,32491,-4244,32489,-4253,32488,-4261,32487,-4269,32486,-4277,32485,-4286,32484,-4294,32483,-4302,32482,-4311,32481,-4319,32480,-4327,32478,-4336,32477,-4344,32476,-4352,32475,-4360,32474,-4369,32473,-4377,32472,-4385,32471,-4394,32470,-4402,32468,-4410,32467,-4419,32466,-4427,32465,-4435,32464,-4444,32463,-4452,32462,-4460,32460,-4468,32459,-4477,32458,-4485,32457,-4493,32456,-4502,32455,-4510,32454,-4518,32452,-4526,32451,-4535,32450,-4543,32449,-4551,32448,-4560,32447,-4568,32445,-4576,32444,-4585,32443,-4593,32442,-4601,32441,-4609,32440,-4618,32438,-4626,32437,-4634,32436,-4643,32435,-4651,32434,-4659,32432,-4667,32431,-4676,32430,-4684,32429,-4692,32428,-4701,32426,-4709,32425,-4717,32424,-4726,32423,-4734,32422,-4742,32420,-4750,32419,-4759,32418,-4767,32417,-4775,32416,-4784,32414,-4792,32413,-4800,32412,-4808,32411,-4817,32409,-4825,32408,-4833,32407,-4842,32406,-4850,32404,-4858,32403,-4866,32402,-4875,32401,-4883,32399,-4891,32398,-4900,32397,-4908,32396,-4916,32394,-4924,32393,-4933,32392,-4941,32391,-4949,32389,-4958,32388,-4966,32387,-4974,32386,-4982,32384,-4991,32383,-4999,32382,-5007,32380,-5015,32379,-5024,32378,-5032,32377,-5040,32375,-5049,32374,-5057,32373,-5065,32371,-5073,32370,-5082,32369,-5090,32368,-5098,32366,-5107,32365,-5115,32364,-5123,32362,-5131,32361,-5140,32360,-5148,32358,-5156,32357,-5164,32356,-5173,32354,-5181,32353,-5189,32352,-5198,32350,-5206,32349,-5214,32348,-5222,32346,-5231,32345,-5239,32344,-5247,32342,-5255,32341,-5264,32340,-5272,32338,-5280,32337,-5288,32336,-5297,32334,-5305,32333,-5313,32332,-5322,32330,-5330,32329,-5338,32327,-5346,32326,-5355,32325,-5363,32323,-5371,32322,-5379,32321,-5388,32319,-5396,32318,-5404,32316,-5412,32315,-5421,32314,-5429,32312,-5437,32311,-5446,32310,-5454,32308,-5462,32307,-5470,32305,-5479,32304,-5487,32303,-5495,32301,-5503,32300,-5512,32298,-5520,32297,-5528,32295,-5536,32294,-5545,32293,-5553,32291,-5561,32290,-5569,32288,-5578,32287,-5586,32286,-5594,32284,-5602,32283,-5611,32281,-5619,32280,-5627,32278,-5635,32277,-5644,32275,-5652,32274,-5660,32273,-5668,32271,-5677,32270,-5685,32268,-5693,32267,-5701,32265,-5710,32264,-5718,32262,-5726,32261,-5734,32259,-5743,32258,-5751,32256,-5759,32255,-5767,32254,-5776,32252,-5784,32251,-5792,32249,-5800,32248,-5809,32246,-5817,32245,-5825,32243,-5833,32242,-5842,32240,-5850,32239,-5858,32237,-5866,32236,-5875,32234,-5883,32233,-5891,32231,-5899,32230,-5908,32228,-5916,32227,-5924,32225,-5932,32224,-5941,32222,-5949,32221,-5957,32219,-5965,32218,-5973,32216,-5982,32214,-5990,32213,-5998,32211,-6006,32210,-6015,32208,-6023,32207,-6031,32205,-6039,32204,-6048,32202,-6056,32201,-6064,32199,-6072,32197,-6081,32196,-6089,32194,-6097,32193,-6105,32191,-6113,32190,-6122,32188,-6130,32187,-6138,32185,-6146,32183,-6155,32182,-6163,32180,-6171,32179,-6179,32177,-6187,32176,-6196,32174,-6204,32172,-6212,32171,-6220,32169,-6229,32168,-6237,32166,-6245,32164,-6253,32163,-6262,32161,-6270,32160,-6278,32158,-6286,32156,-6294,32155,-6303,32153,-6311,32152,-6319,32150,-6327,32148,-6335,32147,-6344,32145,-6352,32143,-6360,32142,-6368,32140,-6377,32139,-6385,32137,-6393,32135,-6401,32134,-6409,32132,-6418,32130,-6426,32129,-6434,32127,-6442,32125,-6451,32124,-6459,32122,-6467,32120,-6475,32119,-6483,32117,-6492,32115,-6500,32114,-6508,32112,-6516,32110,-6524,32109,-6533,32107,-6541,32105,-6549,32104,-6557,32102,-6565,32100,-6574,32099,-6582,32097,-6590,32095,-6598,32094,-6607,32092,-6615,32090,-6623,32089,-6631,32087,-6639,32085,-6648,32084,-6656,32082,-6664,32080,-6672,32078,-6680,32077,-6689,32075,-6697,32073,-6705,32072,-6713,32070,-6721,32068,-6730,32066,-6738,32065,-6746,32063,-6754,32061,-6762,32059,-6771,32058,-6779,32056,-6787,32054,-6795,32053,-6803,32051,-6812,32049,-6820,32047,-6828,32046,-6836,32044,-6844,32042,-6852,32040,-6861,32039,-6869,32037,-6877,32035,-6885,32033,-6893,32032,-6902,32030,-6910,32028,-6918,32026,-6926,32024,-6934,32023,-6943,32021,-6951,32019,-6959,32017,-6967,32016,-6975,32014,-6983,32012,-6992,32010,-7000,32008,-7008,32007,-7016,32005,-7024,32003,-7033,32001,-7041,31999,-7049,31998,-7057,31996,-7065,31994,-7073,31992,-7082,31990,-7090,31989,-7098,31987,-7106,31985,-7114,31983,-7123,31981,-7131,31979,-7139,31978,-7147,31976,-7155,31974,-7163,31972,-7172,31970,-7180,31968,-7188,31967,-7196,31965,-7204,31963,-7212,31961,-7221,31959,-7229,31957,-7237,31956,-7245,31954,-7253,31952,-7262,31950,-7270,31948,-7278,31946,-7286,31944,-7294,31943,-7302,31941,-7311,31939,-7319,31937,-7327,31935,-7335,31933,-7343,31931,-7351,31929,-7359,31928,-7368,31926,-7376,31924,-7384,31922,-7392,31920,-7400,31918,-7408,31916,-7417,31914,-7425,31912,-7433,31911,-7441,31909,-7449,31907,-7457,31905,-7466,31903,-7474,31901,-7482,31899,-7490,31897,-7498,31895,-7506,31893,-7515,31891,-7523,31889,-7531,31888,-7539,31886,-7547,31884,-7555,31882,-7563,31880,-7572,31878,-7580,31876,-7588,31874,-7596,31872,-7604,31870,-7612,31868,-7620,31866,-7629,31864,-7637,31862,-7645,31860,-7653,31858,-7661,31856,-7669,31854,-7677,31853,-7686,31851,-7694,31849,-7702,31847,-7710,31845,-7718,31843,-7726,31841,-7734,31839,-7743,31837,-7751,31835,-7759,31833,-7767,31831,-7775,31829,-7783,31827,-7791,31825,-7800,31823,-7808,31821,-7816,31819,-7824,31817,-7832,31815,-7840,31813,-7848,31811,-7857,31809,-7865,31807,-7873,31805,-7881,31803,-7889,31801,-7897,31799,-7905,31797,-7913,31795,-7922,31793,-7930,31791,-7938,31789,-7946,31787,-7954,31785,-7962,31782,-7970,31780,-7978,31778,-7987,31776,-7995,31774,-8003,31772,-8011,31770,-8019,31768,-8027,31766,-8035,31764,-8043,31762,-8052,31760,-8060,31758,-8068,31756,-8076,31754,-8084,31752,-8092,31750,-8100,31748,-8108,31745,-8117,31743,-8125,31741,-8133,31739,-8141,31737,-8149,31735,-8157,31733,-8165,31731,-8173,31729,-8181,31727,-8190,31725,-8198,31723,-8206,31720,-8214,31718,-8222,31716,-8230,31714,-8238,31712,-8246,31710,-8254,31708,-8263,31706,-8271,31704,-8279,31701,-8287,31699,-8295,31697,-8303,31695,-8311,31693,-8319,31691,-8327,31689,-8335,31687,-8344,31684,-8352,31682,-8360,31680,-8368,31678,-8376,31676,-8384,31674,-8392,31672,-8400,31669,-8408,31667,-8416,31665,-8425,31663,-8433,31661,-8441,31659,-8449,31656,-8457,31654,-8465,31652,-8473,31650,-8481,31648,-8489,31646,-8497,31643,-8505,31641,-8514,31639,-8522,31637,-8530,31635,-8538,31633,-8546,31630,-8554,31628,-8562,31626,-8570,31624,-8578,31622,-8586,31619,-8594,31617,-8603,31615,-8611,31613,-8619,31611,-8627,31608,-8635,31606,-8643,31604,-8651,31602,-8659,31600,-8667,31597,-8675,31595,-8683,31593,-8691,31591,-8700,31588,-8708,31586,-8716,31584,-8724,31582,-8732,31580,-8740,31577,-8748,31575,-8756,31573,-8764,31571,-8772,31568,-8780,31566,-8788,31564,-8796,31562,-8804,31559,-8813,31557,-8821,31555,-8829,31553,-8837,31550,-8845,31548,-8853,31546,-8861,31544,-8869,31541,-8877,31539,-8885,31537,-8893,31534,-8901,31532,-8909,31530,-8917,31528,-8925,31525,-8933,31523,-8942,31521,-8950,31518,-8958,31516,-8966,31514,-8974,31512,-8982,31509,-8990,31507,-8998,31505,-9006,31502,-9014,31500,-9022,31498,-9030,31495,-9038,31493,-9046,31491,-9054,31489,-9062,31486,-9070,31484,-9078,31482,-9087,31479,-9095,31477,-9103,31475,-9111,31472,-9119,31470,-9127,31468,-9135,31465,-9143,31463,-9151,31461,-9159,31458,-9167,31456,-9175,31454,-9183,31451,-9191,31449,-9199,31446,-9207,31444,-9215,31442,-9223,31439,-9231,31437,-9239,31435,-9247,31432,-9255,31430,-9263,31428,-9271,31425,-9280,31423,-9288,31420,-9296,31418,-9304,31416,-9312,31413,-9320,31411,-9328,31409,-9336,31406,-9344,31404,-9352,31401,-9360,31399,-9368,31397,-9376,31394,-9384,31392,-9392,31389,-9400,31387,-9408,31385,-9416,31382,-9424,31380,-9432,31377,-9440,31375,-9448,31373,-9456,31370,-9464,31368,-9472,31365,-9480,31363,-9488,31360,-9496,31358,-9504,31356,-9512,31353,-9520,31351,-9528,31348,-9536,31346,-9544,31343,-9552,31341,-9560,31338,-9568,31336,-9576,31334,-9584,31331,-9592,31329,-9600,31326,-9608,31324,-9616,31321,-9624,31319,-9632,31316,-9640,31314,-9648,31311,-9656,31309,-9664,31307,-9672,31304,-9680,31302,-9688,31299,-9696,31297,-9704,31294,-9712,31292,-9720,31289,-9728,31287,-9736,31284,-9744,31282,-9752,31279,-9760,31277,-9768,31274,-9776,31272,-9784,31269,-9792,31267,-9800,31264,-9808,31262,-9816,31259,-9824,31257,-9832,31254,-9840,31252,-9848,31249,-9856,31247,-9864,31244,-9872,31242,-9880,31239,-9888,31236,-9896,31234,-9904,31231,-9912,31229,-9920,31226,-9928,31224,-9936,31221,-9944,31219,-9952,31216,-9960,31214,-9968,31211,-9976,31209,-9984,31206,-9992,31203,-10000,31201,-10008,31198,-10016,31196,-10024,31193,-10032,31191,-10040,31188,-10048,31185,-10056,31183,-10064,31180,-10072,31178,-10080,31175,-10088,31173,-10096,31170,-10104,31167,-10112,31165,-10120,31162,-10128,31160,-10136,31157,-10144,31154,-10152,31152,-10160,31149,-10167,31147,-10175,31144,-10183,31141,-10191,31139,-10199,31136,-10207,31134,-10215,31131,-10223,31128,-10231,31126,-10239,31123,-10247,31121,-10255,31118,-10263,31115,-10271,31113,-10279,31110,-10287,31107,-10295,31105,-10303,31102,-10311,31100,-10319,31097,-10327,31094,-10335,31092,-10343,31089,-10350,31086,-10358,31084,-10366,31081,-10374,31078,-10382,31076,-10390,31073,-10398,31070,-10406,31068,-10414,31065,-10422,31062,-10430,31060,-10438,31057,-10446,31054,-10454,31052,-10462,31049,-10470,31046,-10478,31044,-10485,31041,-10493,31038,-10501,31036,-10509,31033,-10517,31030,-10525,31028,-10533,31025,-10541,31022,-10549,31019,-10557,31017,-10565,31014,-10573,31011,-10581,31009,-10589,31006,-10597,31003,-10604,31001,-10612,30998,-10620,30995,-10628,30992,-10636,30990,-10644,30987,-10652,30984,-10660,30981,-10668,30979,-10676,30976,-10684,30973,-10692,30971,-10700,30968,-10707,30965,-10715,30962,-10723,30960,-10731,30957,-10739,30954,-10747,30951,-10755,30949,-10763,30946,-10771,30943,-10779,30940,-10787,30938,-10795,30935,-10802,30932,-10810,30929,-10818,30927,-10826,30924,-10834,30921,-10842,30918,-10850,30915,-10858,30913,-10866,30910,-10874,30907,-10881,30904,-10889,30902,-10897,30899,-10905,30896,-10913,30893,-10921,30890,-10929,30888,-10937,30885,-10945,30882,-10953,30879,-10960,30876,-10968,30874,-10976,30871,-10984,30868,-10992,30865,-11000,30862,-11008,30860,-11016,30857,-11024,30854,-11031,30851,-11039,30848,-11047,30845,-11055,30843,-11063,30840,-11071,30837,-11079,30834,-11087,30831,-11095,30828,-11102,30826,-11110,30823,-11118,30820,-11126,30817,-11134,30814,-11142,30811,-11150,30809,-11158,30806,-11165,30803,-11173,30800,-11181,30797,-11189,30794,-11197,30791,-11205,30788,-11213,30786,-11221,30783,-11228,30780,-11236,30777,-11244,30774,-11252,30771,-11260,30768,-11268,30766,-11276,30763,-11284,30760,-11291,30757,-11299,30754,-11307,30751,-11315,30748,-11323,30745,-11331,30742,-11339,30739,-11346,30737,-11354,30734,-11362,30731,-11370,30728,-11378,30725,-11386,30722,-11394,30719,-11401,30716,-11409,30713,-11417,30710,-11425,30707,-11433,30705,-11441,30702,-11449,30699,-11456,30696,-11464,30693,-11472,30690,-11480,30687,-11488,30684,-11496,30681,-11503,30678,-11511,30675,-11519,30672,-11527,30669,-11535,30666,-11543,30663,-11551,30660,-11558,30657,-11566,30655,-11574,30652,-11582,30649,-11590,30646,-11598,30643,-11605,30640,-11613,30637,-11621,30634,-11629,30631,-11637,30628,-11645,30625,-11652,30622,-11660,30619,-11668,30616,-11676,30613,-11684,30610,-11692,30607,-11699,30604,-11707,30601,-11715,30598,-11723,30595,-11731,30592,-11738,30589,-11746,30586,-11754,30583,-11762,30580,-11770,30577,-11778,30574,-11785,30571,-11793,30568,-11801,30565,-11809,30562,-11817,30559,-11824,30556,-11832,30553,-11840,30550,-11848,30547,-11856,30544,-11863,30541,-11871,30538,-11879,30535,-11887,30532,-11895,30528,-11903,30525,-11910,30522,-11918,30519,-11926,30516,-11934,30513,-11942,30510,-11949,30507,-11957,30504,-11965,30501,-11973,30498,-11981,30495,-11988,30492,-11996,30489,-12004,30486,-12012,30483,-12020,30480,-12027,30476,-12035,30473,-12043,30470,-12051,30467,-12058,30464,-12066,30461,-12074,30458,-12082,30455,-12090,30452,-12097,30449,-12105,30446,-12113,30442,-12121,30439,-12129,30436,-12136,30433,-12144,30430,-12152,30427,-12160,30424,-12167,30421,-12175,30418,-12183,30415,-12191,30411,-12199,30408,-12206,30405,-12214,30402,-12222,30399,-12230,30396,-12237,30393,-12245,30390,-12253,30386,-12261,30383,-12269,30380,-12276,30377,-12284,30374,-12292,30371,-12300,30368,-12307,30364,-12315,30361,-12323,30358,-12331,30355,-12338,30352,-12346,30349,-12354,30345,-12362,30342,-12369,30339,-12377,30336,-12385,30333,-12393,30330,-12400,30326,-12408,30323,-12416,30320,-12424,30317,-12431,30314,-12439,30311,-12447,30307,-12455,30304,-12462,30301,-12470,30298,-12478,30295,-12486,30291,-12493,30288,-12501,30285,-12509,30282,-12517,30279,-12524,30275,-12532,30272,-12540,30269,-12548,30266,-12555,30263,-12563,30259,-12571,30256,-12579,30253,-12586,30250,-12594,30247,-12602,30243,-12610,30240,-12617,30237,-12625,30234,-12633,30230,-12640,30227,-12648,30224,-12656,30221,-12664,30217,-12671,30214,-12679,30211,-12687,30208,-12695,30205,-12702,30201,-12710,30198,-12718,30195,-12725,30191,-12733,30188,-12741,30185,-12749,30182,-12756,30178,-12764,30175,-12772,30172,-12779,30169,-12787,30165,-12795,30162,-12803,30159,-12810,30156,-12818,30152,-12826,30149,-12833,30146,-12841,30142,-12849,30139,-12857,30136,-12864,30133,-12872,30129,-12880,30126,-12887,30123,-12895,30119,-12903,30116,-12910,30113,-12918,30109,-12926,30106,-12934,30103,-12941,30100,-12949,30096,-12957,30093,-12964,30090,-12972,30086,-12980,30083,-12987,30080,-12995,30076,-13003,30073,-13010,30070,-13018,30066,-13026,30063,-13034,30060,-13041,30056,-13049,30053,-13057,30050,-13064,30046,-13072,30043,-13080,30040,-13087,30036,-13095,30033,-13103,30030,-13110,30026,-13118,30023,-13126,30020,-13133,30016,-13141,30013,-13149,30009,-13156,30006,-13164,30003,-13172,29999,-13179,29996,-13187,29993,-13195,29989,-13202,29986,-13210,29983,-13218,29979,-13225,29976,-13233,29972,-13241,29969,-13248,29966,-13256,29962,-13264,29959,-13271,29955,-13279,29952,-13287,29949,-13294,29945,-13302,29942,-13310,29938,-13317,29935,-13325,29932,-13333,29928,-13340,29925,-13348,29921,-13356,29918,-13363,29915,-13371,29911,-13379,29908,-13386,29904,-13394,29901,-13401,29897,-13409,29894,-13417,29891,-13424,29887,-13432,29884,-13440,29880,-13447,29877,-13455,29873,-13463,29870,-13470,29866,-13478,29863,-13486,29860,-13493,29856,-13501,29853,-13508,29849,-13516,29846,-13524,29842,-13531,29839,-13539,29835,-13547,29832,-13554,29828,-13562,29825,-13569,29822,-13577,29818,-13585,29815,-13592,29811,-13600,29808,-13608,29804,-13615,29801,-13623,29797,-13630,29794,-13638,29790,-13646,29787,-13653,29783,-13661,29780,-13668,29776,-13676,29773,-13684,29769,-13691,29766,-13699,29762,-13707,29759,-13714,29755,-13722,29752,-13729,29748,-13737,29745,-13745,29741,-13752,29738,-13760,29734,-13767,29731,-13775,29727,-13783,29724,-13790,29720,-13798,29717,-13805,29713,-13813,29709,-13821,29706,-13828,29702,-13836,29699,-13843,29695,-13851,29692,-13859,29688,-13866,29685,-13874,29681,-13881,29678,-13889,29674,-13896,29670,-13904,29667,-13912,29663,-13919,29660,-13927,29656,-13934,29653,-13942,29649,-13950,29646,-13957,29642,-13965,29638,-13972,29635,-13980,29631,-13987,29628,-13995,29624,-14003,29621,-14010,29617,-14018,29613,-14025,29610,-14033,29606,-14040,29603,-14048,29599,-14056,29595,-14063,29592,-14071,29588,-14078,29585,-14086,29581,-14093,29577,-14101,29574,-14109,29570,-14116,29567,-14124,29563,-14131,29559,-14139,29556,-14146,29552,-14154,29548,-14161,29545,-14169,29541,-14177,29538,-14184,29534,-14192,29530,-14199,29527,-14207,29523,-14214,29519,-14222,29516,-14229,29512,-14237,29509,-14245,29505,-14252,29501,-14260,29498,-14267,29494,-14275,29490,-14282,29487,-14290,29483,-14297,29479,-14305,29476,-14312,29472,-14320,29468,-14327,29465,-14335,29461,-14343,29457,-14350,29454,-14358,29450,-14365,29446,-14373,29443,-14380,29439,-14388,29435,-14395,29432,-14403,29428,-14410,29424,-14418,29421,-14425,29417,-14433,29413,-14440,29410,-14448,29406,-14455,29402,-14463,29398,-14470,29395,-14478,29391,-14485,29387,-14493,29384,-14500,29380,-14508,29376,-14516,29372,-14523,29369,-14531,29365,-14538,29361,-14546,29358,-14553,29354,-14561,29350,-14568,29346,-14576,29343,-14583,29339,-14591,29335,-14598,29332,-14606,29328,-14613,29324,-14621,29320,-14628,29317,-14636,29313,-14643,29309,-14651,29305,-14658,29302,-14666,29298,-14673,29294,-14681,29290,-14688,29287,-14695,29283,-14703,29279,-14710,29275,-14718,29272,-14725,29268,-14733,29264,-14740,29260,-14748,29256,-14755,29253,-14763,29249,-14770,29245,-14778,29241,-14785,29238,-14793,29234,-14800,29230,-14808,29226,-14815,29222,-14823,29219,-14830,29215,-14838,29211,-14845,29207,-14853,29203,-14860,29200,-14867,29196,-14875,29192,-14882,29188,-14890,29184,-14897,29181,-14905,29177,-14912,29173,-14920,29169,-14927,29165,-14935,29162,-14942,29158,-14950,29154,-14957,29150,-14964,29146,-14972,29142,-14979,29139,-14987,29135,-14994,29131,-15002,29127,-15009,29123,-15017,29119,-15024,29116,-15031,29112,-15039,29108,-15046,29104,-15054,29100,-15061,29096,-15069,29092,-15076,29089,-15084,29085,-15091,29081,-15098,29077,-15106,29073,-15113,29069,-15121,29065,-15128,29062,-15136,29058,-15143,29054,-15150,29050,-15158,29046,-15165,29042,-15173,29038,-15180,29034,-15188,29031,-15195,29027,-15202,29023,-15210,29019,-15217,29015,-15225,29011,-15232,29007,-15239,29003,-15247,28999,-15254,28996,-15262,28992,-15269,28988,-15277,28984,-15284,28980,-15291,28976,-15299,28972,-15306,28968,-15314,28964,-15321,28960,-15328,28956,-15336,28953,-15343,28949,-15351,28945,-15358,28941,-15365,28937,-15373,28933,-15380,28929,-15388,28925,-15395,28921,-15402,28917,-15410,28913,-15417,28909,-15425,28905,-15432,28901,-15439,28897,-15447,28893,-15454,28890,-15462,28886,-15469,28882,-15476,28878,-15484,28874,-15491,28870,-15498,28866,-15506,28862,-15513,28858,-15521,28854,-15528,28850,-15535,28846,-15543,28842,-15550,28838,-15557,28834,-15565,28830,-15572,28826,-15580,28822,-15587,28818,-15594,28814,-15602,28810,-15609,28806,-15616,28802,-15624,28798,-15631,28794,-15639,28790,-15646,28786,-15653,28782,-15661,28778,-15668,28774,-15675,28770,-15683,28766,-15690,28762,-15697,28758,-15705,28754,-15712,28750,-15719,28746,-15727,28742,-15734,28738,-15741,28734,-15749,28730,-15756,28726,-15764,28722,-15771,28718,-15778,28714,-15786,28710,-15793,28706,-15800,28702,-15808,28698,-15815,28694,-15822,28690,-15830,28685,-15837,28681,-15844,28677,-15852,28673,-15859,28669,-15866,28665,-15874,28661,-15881,28657,-15888,28653,-15896,28649,-15903,28645,-15910,28641,-15918,28637,-15925,28633,-15932,28629,-15939,28625,-15947,28620,-15954,28616,-15961,28612,-15969,28608,-15976,28604,-15983,28600,-15991,28596,-15998,28592,-16005,28588,-16013,28584,-16020,28580,-16027,28575,-16035,28571,-16042,28567,-16049,28563,-16056,28559,-16064,28555,-16071,28551,-16078,28547,-16086,28543,-16093,28538,-16100,28534,-16108,28530,-16115,28526,-16122,28522,-16129,28518,-16137,28514,-16144,28510,-16151,28506,-16159,28501,-16166,28497,-16173,28493,-16180,28489,-16188,28485,-16195,28481,-16202,28477,-16210,28472,-16217,28468,-16224,28464,-16231,28460,-16239,28456,-16246,28452,-16253,28447,-16261,28443,-16268,28439,-16275,28435,-16282,28431,-16290,28427,-16297,28423,-16304,28418,-16311,28414,-16319,28410,-16326,28406,-16333,28402,-16340,28397,-16348,28393,-16355,28389,-16362,28385,-16369,28381,-16377,28377,-16384,28372,-16391,28368,-16399,28364,-16406,28360,-16413,28356,-16420,28351,-16428,28347,-16435,28343,-16442,28339,-16449,28335,-16456,28330,-16464,28326,-16471,28322,-16478,28318,-16485,28314,-16493,28309,-16500,28305,-16507,28301,-16514,28297,-16522,28292,-16529,28288,-16536,28284,-16543,28280,-16551,28275,-16558,28271,-16565,28267,-16572,28263,-16579,28259,-16587,28254,-16594,28250,-16601,28246,-16608,28242,-16616,28237,-16623,28233,-16630,28229,-16637,28225,-16644,28220,-16652,28216,-16659,28212,-16666,28208,-16673,28203,-16681,28199,-16688,28195,-16695,28190,-16702,28186,-16709,28182,-16717,28178,-16724,28173,-16731,28169,-16738,28165,-16745,28161,-16753,28156,-16760,28152,-16767,28148,-16774,28143,-16781,28139,-16789,28135,-16796,28131,-16803,28126,-16810,28122,-16817,28118,-16825,28113,-16832,28109,-16839,28105,-16846,28100,-16853,28096,-16860,28092,-16868,28087,-16875,28083,-16882,28079,-16889,28075,-16896,28070,-16904,28066,-16911,28062,-16918,28057,-16925,28053,-16932,28049,-16939,28044,-16947,28040,-16954,28036,-16961,28031,-16968,28027,-16975,28023,-16982,28018,-16990,28014,-16997,28009,-17004,28005,-17011,28001,-17018,27996,-17025,27992,-17033,27988,-17040,27983,-17047,27979,-17054,27975,-17061,27970,-17068,27966,-17075,27962,-17083,27957,-17090,27953,-17097,27948,-17104,27944,-17111,27940,-17118,27935,-17125,27931,-17133,27927,-17140,27922,-17147,27918,-17154,27913,-17161,27909,-17168,27905,-17175,27900,-17183,27896,-17190,27891,-17197,27887,-17204,27883,-17211,27878,-17218,27874,-17225,27869,-17233,27865,-17240,27861,-17247,27856,-17254,27852,-17261,27847,-17268,27843,-17275,27839,-17282,27834,-17289,27830,-17297,27825,-17304,27821,-17311,27816,-17318,27812,-17325,27808,-17332,27803,-17339,27799,-17346,27794,-17353,27790,-17361,27785,-17368,27781,-17375,27777,-17382,27772,-17389,27768,-17396,27763,-17403,27759,-17410,27754,-17417,27750,-17424,27745,-17432,27741,-17439,27736,-17446,27732,-17453,27728,-17460,27723,-17467,27719,-17474,27714,-17481,27710,-17488,27705,-17495,27701,-17502,27696,-17510,27692,-17517,27687,-17524,27683,-17531,27678,-17538,27674,-17545,27669,-17552,27665,-17559,27660,-17566,27656,-17573,27651,-17580,27647,-17587,27642,-17594,27638,-17601,27633,-17609,27629,-17616,27624,-17623,27620,-17630,27615,-17637,27611,-17644,27606,-17651,27602,-17658,27597,-17665,27593,-17672,27588,-17679,27584,-17686,27579,-17693,27575,-17700,27570,-17707,27566,-17714,27561,-17721,27557,-17728,27552,-17736,27548,-17743,27543,-17750,27538,-17757,27534,-17764,27529,-17771,27525,-17778,27520,-17785,27516,-17792,27511,-17799,27507,-17806,27502,-17813,27498,-17820,27493,-17827,27488,-17834,27484,-17841,27479,-17848,27475,-17855,27470,-17862,27466,-17869,27461,-17876,27456,-17883,27452,-17890,27447,-17897,27443,-17904,27438,-17911,27434,-17918,27429,-17925,27424,-17932,27420,-17939,27415,-17946,27411,-17953,27406,-17960,27401,-17967,27397,-17974,27392,-17981,27388,-17988,27383,-17995,27378,-18002,27374,-18009,27369,-18016,27365,-18023,27360,-18030,27355,-18037,27351,-18044,27346,-18051,27342,-18058,27337,-18065,27332,-18072,27328,-18079,27323,-18086,27319,-18093,27314,-18100,27309,-18107,27305,-18114,27300,-18121,27295,-18128,27291,-18135,27286,-18142,27281,-18149,27277,-18156,27272,-18163,27268,-18170,27263,-18177,27258,-18184,27254,-18191,27249,-18198,27244,-18205,27240,-18212,27235,-18219,27230,-18226,27226,-18233,27221,-18240,27216,-18247,27212,-18254,27207,-18261,27202,-18268,27198,-18274,27193,-18281,27188,-18288,27184,-18295,27179,-18302,27174,-18309,27170,-18316,27165,-18323,27160,-18330,27156,-18337,27151,-18344,27146,-18351,27141,-18358,27137,-18365,27132,-18372,27127,-18379,27123,-18386,27118,-18393,27113,-18399,27109,-18406,27104,-18413,27099,-18420,27094,-18427,27090,-18434,27085,-18441,27080,-18448,27076,-18455,27071,-18462,27066,-18469,27061,-18476,27057,-18483,27052,-18489,27047,-18496,27042,-18503,27038,-18510,27033,-18517,27028,-18524,27024,-18531,27019,-18538,27014,-18545,27009,-18552,27005,-18559,27000,-18565,26995,-18572,26990,-18579,26986,-18586,26981,-18593,26976,-18600,26971,-18607,26967,-18614,26962,-18621,26957,-18628,26952,-18634,26948,-18641,26943,-18648,26938,-18655,26933,-18662,26928,-18669,26924,-18676,26919,-18683,26914,-18690,26909,-18696,26905,-18703,26900,-18710,26895,-18717,26890,-18724,26885,-18731,26881,-18738,26876,-18745,26871,-18751,26866,-18758,26861,-18765,26857,-18772,26852,-18779,26847,-18786,26842,-18793,26837,-18799,26833,-18806,26828,-18813,26823,-18820,26818,-18827,26813,-18834,26809,-18841,26804,-18847,26799,-18854,26794,-18861,26789,-18868,26784,-18875,26780,-18882,26775,-18889,26770,-18895,26765,-18902,26760,-18909,26755,-18916,26751,-18923,26746,-18930,26741,-18936,26736,-18943,26731,-18950,26726,-18957,26722,-18964,26717,-18971,26712,-18977,26707,-18984,26702,-18991,26697,-18998,26692,-19005,26688,-19012,26683,-19018,26678,-19025,26673,-19032,26668,-19039,26663,-19046,26658,-19052,26654,-19059,26649,-19066,26644,-19073,26639,-19080,26634,-19087,26629,-19093,26624,-19100,26619,-19107,26615,-19114,26610,-19121,26605,-19127,26600,-19134,26595,-19141,26590,-19148,26585,-19155,26580,-19161,26575,-19168,26570,-19175,26566,-19182,26561,-19189,26556,-19195,26551,-19202,26546,-19209,26541,-19216,26536,-19222,26531,-19229,26526,-19236,26521,-19243,26516,-19250,26512,-19256,26507,-19263,26502,-19270,26497,-19277,26492,-19283,26487,-19290,26482,-19297,26477,-19304,26472,-19311,26467,-19317,26462,-19324,26457,-19331,26452,-19338,26447,-19344,26442,-19351,26437,-19358,26433,-19365,26428,-19371,26423,-19378,26418,-19385,26413,-19392,26408,-19398,26403,-19405,26398,-19412,26393,-19419,26388,-19425,26383,-19432,26378,-19439,26373,-19446,26368,-19452,26363,-19459,26358,-19466,26353,-19473,26348,-19479,26343,-19486,26338,-19493,26333,-19500,26328,-19506,26323,-19513,26318,-19520,26313,-19527,26308,-19533,26303,-19540,26298,-19547,26293,-19553,26288,-19560,26283,-19567,26278,-19574,26273,-19580,26268,-19587,26263,-19594,26258,-19600,26253,-19607,26248,-19614,26243,-19621,26238,-19627,26233,-19634,26228,-19641,26223,-19647,26218,-19654,26213,-19661,26208,-19668,26203,-19674,26198,-19681,26193,-19688,26188,-19694,26183,-19701,26178,-19708,26173,-19714,26168,-19721,26163,-19728,26158,-19734,26153,-19741,26148,-19748,26142,-19755,26137,-19761,26132,-19768,26127,-19775,26122,-19781,26117,-19788,26112,-19795,26107,-19801,26102,-19808,26097,-19815,26092,-19821,26087,-19828,26082,-19835,26077,-19841,26072,-19848,26067,-19855,26061,-19861,26056,-19868,26051,-19875,26046,-19881,26041,-19888,26036,-19895,26031,-19901,26026,-19908,26021,-19915,26016,-19921,26011,-19928,26006,-19934,26000,-19941,25995,-19948,25990,-19954,25985,-19961,25980,-19968,25975,-19974,25970,-19981,25965,-19988,25960,-19994,25954,-20001,25949,-20008,25944,-20014,25939,-20021,25934,-20027,25929,-20034,25924,-20041,25919,-20047,25913,-20054,25908,-20061,25903,-20067,25898,-20074,25893,-20080,25888,-20087,25883,-20094,25878,-20100,25872,-20107,25867,-20114,25862,-20120,25857,-20127,25852,-20133,25847,-20140,25842,-20147,25836,-20153,25831,-20160,25826,-20166,25821,-20173,25816,-20180,25811,-20186,25805,-20193,25800,-20199,25795,-20206,25790,-20213,25785,-20219,25780,-20226,25774,-20232,25769,-20239,25764,-20246,25759,-20252,25754,-20259,25749,-20265,25743,-20272,25738,-20278,25733,-20285,25728,-20292,25723,-20298,25717,-20305,25712,-20311,25707,-20318,25702,-20324,25697,-20331,25691,-20338,25686,-20344,25681,-20351,25676,-20357,25671,-20364,25665,-20370,25660,-20377,25655,-20384,25650,-20390,25645,-20397,25639,-20403,25634,-20410,25629,-20416,25624,-20423,25619,-20429,25613,-20436,25608,-20443,25603,-20449,25598,-20456,25592,-20462,25587,-20469,25582,-20475,25577,-20482,25571,-20488,25566,-20495,25561,-20501,25556,-20508,25550,-20514,25545,-20521,25540,-20528,25535,-20534,25529,-20541,25524,-20547,25519,-20554,25514,-20560,25508,-20567,25503,-20573,25498,-20580,25493,-20586,25487,-20593,25482,-20599,25477,-20606,25472,-20612,25466,-20619,25461,-20625,25456,-20632,25451,-20638,25445,-20645,25440,-20651,25435,-20658,25429,-20664,25424,-20671,25419,-20677,25414,-20684,25408,-20690,25403,-20697,25398,-20703,25392,-20710,25387,-20716,25382,-20723,25376,-20729,25371,-20736,25366,-20742,25361,-20749,25355,-20755,25350,-20762,25345,-20768,25339,-20775,25334,-20781,25329,-20788,25323,-20794,25318,-20801,25313,-20807,25307,-20814,25302,-20820,25297,-20826,25291,-20833,25286,-20839,25281,-20846,25276,-20852,25270,-20859,25265,-20865,25260,-20872,25254,-20878,25249,-20885,25243,-20891,25238,-20898,25233,-20904,25227,-20910,25222,-20917,25217,-20923,25211,-20930,25206,-20936,25201,-20943,25195,-20949,25190,-20956,25185,-20962,25179,-20968,25174,-20975,25169,-20981,25163,-20988,25158,-20994,25152,-21001,25147,-21007,25142,-21013,25136,-21020,25131,-21026,25126,-21033,25120,-21039,25115,-21046,25109,-21052,25104,-21058,25099,-21065,25093,-21071,25088,-21078,25083,-21084,25077,-21091,25072,-21097,25066,-21103,25061,-21110,25056,-21116,25050,-21123,25045,-21129,25039,-21135,25034,-21142,25029,-21148,25023,-21155,25018,-21161,25012,-21167,25007,-21174,25001,-21180,24996,-21187,24991,-21193,24985,-21199,24980,-21206,24974,-21212,24969,-21218,24964,-21225,24958,-21231,24953,-21238,24947,-21244,24942,-21250,24936,-21257,24931,-21263,24926,-21269,24920,-21276,24915,-21282,24909,-21289,24904,-21295,24898,-21301,24893,-21308,24887,-21314,24882,-21320,24877,-21327,24871,-21333,24866,-21340,24860,-21346,24855,-21352,24849,-21359,24844,-21365,24838,-21371,24833,-21378,24827,-21384,24822,-21390,24816,-21397,24811,-21403,24805,-21409,24800,-21416,24795,-21422,24789,-21428,24784,-21435,24778,-21441,24773,-21447,24767,-21454,24762,-21460,24756,-21466,24751,-21473,24745,-21479,24740,-21485,24734,-21492,24729,-21498,24723,-21504,24718,-21511,24712,-21517,24707,-21523,24701,-21530,24696,-21536,24690,-21542,24685,-21549,24679,-21555,24674,-21561,24668,-21567,24663,-21574,24657,-21580,24652,-21586,24646,-21593,24641,-21599,24635,-21605,24630,-21612,24624,-21618,24618,-21624,24613,-21630,24607,-21637,24602,-21643,24596,-21649,24591,-21656,24585,-21662,24580,-21668,24574,-21674,24569,-21681,24563,-21687,24558,-21693,24552,-21700,24546,-21706,24541,-21712,24535,-21718,24530,-21725,24524,-21731,24519,-21737,24513,-21744,24508,-21750,24502,-21756,24496,-21762,24491,-21769,24485,-21775,24480,-21781,24474,-21787,24469,-21794,24463,-21800,24457,-21806,24452,-21812,24446,-21819,24441,-21825,24435,-21831,24430,-21837,24424,-21844,24418,-21850,24413,-21856,24407,-21862,24402,-21869,24396,-21875,24390,-21881,24385,-21887,24379,-21894,24374,-21900,24368,-21906,24362,-21912,24357,-21918,24351,-21925,24346,-21931,24340,-21937,24334,-21943,24329,-21950,24323,-21956,24318,-21962,24312,-21968,24306,-21974,24301,-21981,24295,-21987,24289,-21993,24284,-21999,24278,-22005,24273,-22012,24267,-22018,24261,-22024,24256,-22030,24250,-22036,24244,-22043,24239,-22049,24233,-22055,24228,-22061,24222,-22067,24216,-22074,24211,-22080,24205,-22086,24199,-22092,24194,-22098,24188,-22105,24182,-22111,24177,-22117,24171,-22123,24165,-22129,24160,-22136,24154,-22142,24148,-22148,24143,-22154,24137,-22160,24131,-22166,24126,-22173,24120,-22179,24114,-22185,24109,-22191,24103,-22197,24097,-22203,24092,-22210,24086,-22216,24080,-22222,24075,-22228,24069,-22234,24063,-22240,24058,-22246,24052,-22253,24046,-22259,24041,-22265,24035,-22271,24029,-22277,24023,-22283,24018,-22289,24012,-22296,24006,-22302,24001,-22308,23995,-22314,23989,-22320,23984,-22326,23978,-22332,23972,-22339,23966,-22345,23961,-22351,23955,-22357,23949,-22363,23944,-22369,23938,-22375,23932,-22381,23926,-22388,23921,-22394,23915,-22400,23909,-22406,23903,-22412,23898,-22418,23892,-22424,23886,-22430,23881,-22436,23875,-22443,23869,-22449,23863,-22455,23858,-22461,23852,-22467,23846,-22473,23840,-22479,23835,-22485,23829,-22491,23823,-22497,23817,-22504,23812,-22510,23806,-22516,23800,-22522,23794,-22528,23789,-22534,23783,-22540,23777,-22546,23771,-22552,23766,-22558,23760,-22564,23754,-22570,23748,-22576,23742,-22583,23737,-22589,23731,-22595,23725,-22601,23719,-22607,23714,-22613,23708,-22619,23702,-22625,23696,-22631,23690,-22637,23685,-22643,23679,-22649,23673,-22655,23667,-22661,23661,-22667,23656,-22673,23650,-22679,23644,-22686,23638,-22692,23632,-22698,23627,-22704,23621,-22710,23615,-22716,23609,-22722,23603,-22728,23598,-22734,23592,-22740,23586,-22746,23580,-22752,23574,-22758,23569,-22764,23563,-22770,23557,-22776,23551,-22782,23545,-22788,23539,-22794,23534,-22800,23528,-22806,23522,-22812,23516,-22818,23510,-22824,23504,-22830,23499,-22836,23493,-22842,23487,-22848,23481,-22854,23475,-22860,23469,-22866,23464,-22872,23458,-22878,23452,-22884,23446,-22890,23440,-22896,23434,-22902,23428,-22908,23423,-22914,23417,-22920,23411,-22926,23405,-22932,23399,-22938,23393,-22944,23387,-22950,23382,-22956,23376,-22962,23370,-22968,23364,-22974,23358,-22980,23352,-22986,23346,-22992,23340,-22998,23335,-23004,23329,-23010,23323,-23016,23317,-23022,23311,-23028,23305,-23034,23299,-23040,23293,-23046,23287,-23051,23282,-23057,23276,-23063,23270,-23069,23264,-23075,23258,-23081,23252,-23087,23246,-23093,23240,-23099,23234,-23105,23228,-23111,23223,-23117,23217,-23123,23211,-23129,23205,-23135,23199,-23141,23193,-23147,23187,-23152,23181,-23158,23175,-23164,23169,-23170,23163,-23176,23157,-23182,23151,-23188,23146,-23194,23140,-23200,23134,-23206,23128,-23212,23122,-23218,23116,-23224,23110,-23229,23104,-23235,23098,-23241,23092,-23247,23086,-23253,23080,-23259,23074,-23265,23068,-23271,23062,-23277,23056,-23283,23050,-23288,23045,-23294,23039,-23300,23033,-23306,23027,-23312,23021,-23318,23015,-23324,23009,-23330,23003,-23336,22997,-23341,22991,-23347,22985,-23353,22979,-23359,22973,-23365,22967,-23371,22961,-23377,22955,-23383,22949,-23388,22943,-23394,22937,-23400,22931,-23406,22925,-23412,22919,-23418,22913,-23424,22907,-23429,22901,-23435,22895,-23441,22889,-23447,22883,-23453,22877,-23459,22871,-23465,22865,-23470,22859,-23476,22853,-23482,22847,-23488,22841,-23494,22835,-23500,22829,-23505,22823,-23511,22817,-23517,22811,-23523,22805,-23529,22799,-23535,22793,-23540,22787,-23546,22781,-23552,22775,-23558,22769,-23564,22763,-23570,22757,-23575,22751,-23581,22745,-23587,22739,-23593,22733,-23599,22727,-23604,22721,-23610,22715,-23616,22709,-23622,22703,-23628,22697,-23633,22691,-23639,22685,-23645,22678,-23651,22672,-23657,22666,-23662,22660,-23668,22654,-23674,22648,-23680,22642,-23686,22636,-23691,22630,-23697,22624,-23703,22618,-23709,22612,-23715,22606,-23720,22600,-23726,22594,-23732,22588,-23738,22582,-23743,22575,-23749,22569,-23755,22563,-23761,22557,-23767,22551,-23772,22545,-23778,22539,-23784,22533,-23790,22527,-23795,22521,-23801,22515,-23807,22509,-23813,22503,-23818,22496,-23824,22490,-23830,22484,-23836,22478,-23841,22472,-23847,22466,-23853,22460,-23859,22454,-23864,22448,-23870,22442,-23876,22435,-23882,22429,-23887,22423,-23893,22417,-23899,22411,-23904,22405,-23910,22399,-23916,22393,-23922,22387,-23927,22380,-23933,22374,-23939,22368,-23945,22362,-23950,22356,-23956,22350,-23962,22344,-23967,22338,-23973,22331,-23979,22325,-23985,22319,-23990,22313,-23996,22307,-24002,22301,-24007,22295,-24013,22288,-24019,22282,-24024,22276,-24030,22270,-24036,22264,-24042,22258,-24047,22252,-24053,22245,-24059,22239,-24064,22233,-24070,22227,-24076,22221,-24081,22215,-24087,22209,-24093,22202,-24098,22196,-24104,22190,-24110,22184,-24115,22178,-24121,22172,-24127,22165,-24132,22159,-24138,22153,-24144,22147,-24149,22141,-24155,22135,-24161,22128,-24166,22122,-24172,22116,-24178,22110,-24183,22104,-24189,22097,-24195,22091,-24200,22085,-24206,22079,-24212,22073,-24217,22066,-24223,22060,-24229,22054,-24234,22048,-24240,22042,-24245,22035,-24251,22029,-24257,22023,-24262,22017,-24268,22011,-24274,22004,-24279,21998,-24285,21992,-24290,21986,-24296,21980,-24302,21973,-24307,21967,-24313,21961,-24319,21955,-24324,21949,-24330,21942,-24335,21936,-24341,21930,-24347,21924,-24352,21917,-24358,21911,-24363,21905,-24369,21899,-24375,21893,-24380,21886,-24386,21880,-24391,21874,-24397,21868,-24403,21861,-24408,21855,-24414,21849,-24419,21843,-24425,21836,-24431,21830,-24436,21824,-24442,21818,-24447,21811,-24453,21805,-24458,21799,-24464,21793,-24470,21786,-24475,21780,-24481,21774,-24486,21768,-24492,21761,-24497,21755,-24503,21749,-24509,21743,-24514,21736,-24520,21730,-24525,21724,-24531,21717,-24536,21711,-24542,21705,-24547,21699,-24553,21692,-24559,21686,-24564,21680,-24570,21673,-24575,21667,-24581,21661,-24586,21655,-24592,21648,-24597,21642,-24603,21636,-24608,21629,-24614,21623,-24619,21617,-24625,21611,-24631,21604,-24636,21598,-24642,21592,-24647,21585,-24653,21579,-24658,21573,-24664,21566,-24669,21560,-24675,21554,-24680,21548,-24686,21541,-24691,21535,-24697,21529,-24702,21522,-24708,21516,-24713,21510,-24719,21503,-24724,21497,-24730,21491,-24735,21484,-24741,21478,-24746,21472,-24752,21465,-24757,21459,-24763,21453,-24768,21446,-24774,21440,-24779,21434,-24785,21427,-24790,21421,-24796,21415,-24801,21408,-24806,21402,-24812,21396,-24817,21389,-24823,21383,-24828,21377,-24834,21370,-24839,21364,-24845,21358,-24850,21351,-24856,21345,-24861,21339,-24867,21332,-24872,21326,-24878,21319,-24883,21313,-24888,21307,-24894,21300,-24899,21294,-24905,21288,-24910,21281,-24916,21275,-24921,21268,-24927,21262,-24932,21256,-24937,21249,-24943,21243,-24948,21237,-24954,21230,-24959,21224,-24965,21217,-24970,21211,-24975,21205,-24981,21198,-24986,21192,-24992,21186,-24997,21179,-25002,21173,-25008,21166,-25013,21160,-25019,21154,-25024,21147,-25030,21141,-25035,21134,-25040,21128,-25046,21122,-25051,21115,-25057,21109,-25062,21102,-25067,21096,-25073,21090,-25078,21083,-25084,21077,-25089,21070,-25094,21064,-25100,21057,-25105,21051,-25110,21045,-25116,21038,-25121,21032,-25127,21025,-25132,21019,-25137,21012,-25143,21006,-25148,21000,-25153,20993,-25159,20987,-25164,20980,-25170,20974,-25175,20967,-25180,20961,-25186,20955,-25191,20948,-25196,20942,-25202,20935,-25207,20929,-25212,20922,-25218,20916,-25223,20909,-25228,20903,-25234,20897,-25239,20890,-25244,20884,-25250,20877,-25255,20871,-25261,20864,-25266,20858,-25271,20851,-25277,20845,-25282,20838,-25287,20832,-25292,20825,-25298,20819,-25303,20813,-25308,20806,-25314,20800,-25319,20793,-25324,20787,-25330,20780,-25335,20774,-25340,20767,-25346,20761,-25351,20754,-25356,20748,-25362,20741,-25367,20735,-25372,20728,-25377,20722,-25383,20715,-25388,20709,-25393,20702,-25399,20696,-25404,20689,-25409,20683,-25415,20676,-25420,20670,-25425,20663,-25430,20657,-25436,20650,-25441,20644,-25446,20637,-25452,20631,-25457,20624,-25462,20618,-25467,20611,-25473,20605,-25478,20598,-25483,20592,-25488,20585,-25494,20579,-25499,20572,-25504,20566,-25509,20559,-25515,20553,-25520,20546,-25525,20540,-25530,20533,-25536,20527,-25541,20520,-25546,20513,-25551,20507,-25557,20500,-25562,20494,-25567,20487,-25572,20481,-25578,20474,-25583,20468,-25588,20461,-25593,20455,-25599,20448,-25604,20442,-25609,20435,-25614,20428,-25620,20422,-25625,20415,-25630,20409,-25635,20402,-25640,20396,-25646,20389,-25651,20383,-25656,20376,-25661,20369,-25666,20363,-25672,20356,-25677,20350,-25682,20343,-25687,20337,-25692,20330,-25698,20323,-25703,20317,-25708,20310,-25713,20304,-25718,20297,-25724,20291,-25729,20284,-25734,20277,-25739,20271,-25744,20264,-25750,20258,-25755,20251,-25760,20245,-25765,20238,-25770,20231,-25775,20225,-25781,20218,-25786,20212,-25791,20205,-25796,20198,-25801,20192,-25806,20185,-25812,20179,-25817,20172,-25822,20165,-25827,20159,-25832,20152,-25837,20146,-25843,20139,-25848,20132,-25853,20126,-25858,20119,-25863,20113,-25868,20106,-25873,20099,-25879,20093,-25884,20086,-25889,20079,-25894,20073,-25899,20066,-25904,20060,-25909,20053,-25914,20046,-25920,20040,-25925,20033,-25930,20026,-25935,20020,-25940,20013,-25945,20007,-25950,20000,-25955,19993,-25961,19987,-25966,19980,-25971,19973,-25976,19967,-25981,19960,-25986,19953,-25991,19947,-25996,19940,-26001,19933,-26007,19927,-26012,19920,-26017,19914,-26022,19907,-26027,19900,-26032,19894,-26037,19887,-26042,19880,-26047,19874,-26052,19867,-26057,19860,-26062,19854,-26068,19847,-26073,19840,-26078,19834,-26083,19827,-26088,19820,-26093,19814,-26098,19807,-26103,19800,-26108,19794,-26113,19787,-26118,19780,-26123,19774,-26128,19767,-26133,19760,-26138,19754,-26143,19747,-26149,19740,-26154,19733,-26159,19727,-26164,19720,-26169,19713,-26174,19707,-26179,19700,-26184,19693,-26189,19687,-26194,19680,-26199,19673,-26204,19667,-26209,19660,-26214,19653,-26219,19646,-26224,19640,-26229,19633,-26234,19626,-26239,19620,-26244,19613,-26249,19606,-26254,19599,-26259,19593,-26264,19586,-26269,19579,-26274,19573,-26279,19566,-26284,19559,-26289,19552,-26294,19546,-26299,19539,-26304,19532,-26309,19526,-26314,19519,-26319,19512,-26324,19505,-26329,19499,-26334,19492,-26339,19485,-26344,19478,-26349,19472,-26354,19465,-26359,19458,-26364,19451,-26369,19445,-26374,19438,-26379,19431,-26384,19424,-26389,19418,-26394,19411,-26399,19404,-26404,19397,-26409,19391,-26414,19384,-26419,19377,-26424,19370,-26429,19364,-26434,19357,-26438,19350,-26443,19343,-26448,19337,-26453,19330,-26458,19323,-26463,19316,-26468,19310,-26473,19303,-26478,19296,-26483,19289,-26488,19282,-26493,19276,-26498,19269,-26503,19262,-26508,19255,-26513,19249,-26517,19242,-26522,19235,-26527,19228,-26532,19221,-26537,19215,-26542,19208,-26547,19201,-26552,19194,-26557,19188,-26562,19181,-26567,19174,-26571,19167,-26576,19160,-26581,19154,-26586,19147,-26591,19140,-26596,19133,-26601,19126,-26606,19120,-26611,19113,-26616,19106,-26620,19099,-26625,19092,-26630,19086,-26635,19079,-26640,19072,-26645,19065,-26650,19058,-26655,19051,-26659,19045,-26664,19038,-26669,19031,-26674,19024,-26679,19017,-26684,19011,-26689,19004,-26693,18997,-26698,18990,-26703,18983,-26708,18976,-26713,18970,-26718,18963,-26723,18956,-26727,18949,-26732,18942,-26737,18935,-26742,18929,-26747,18922,-26752,18915,-26756,18908,-26761,18901,-26766,18894,-26771,18888,-26776,18881,-26781,18874,-26785,18867,-26790,18860,-26795,18853,-26800,18846,-26805,18840,-26810,18833,-26814,18826,-26819,18819,-26824,18812,-26829,18805,-26834,18798,-26838,18792,-26843,18785,-26848,18778,-26853,18771,-26858,18764,-26862,18757,-26867,18750,-26872,18744,-26877,18737,-26882,18730,-26886,18723,-26891,18716,-26896,18709,-26901,18702,-26906,18695,-26910,18689,-26915,18682,-26920,18675,-26925,18668,-26929,18661,-26934,18654,-26939,18647,-26944,18640,-26949,18633,-26953,18627,-26958,18620,-26963,18613,-26968,18606,-26972,18599,-26977,18592,-26982,18585,-26987,18578,-26991,18571,-26996,18564,-27001,18558,-27006,18551,-27010,18544,-27015,18537,-27020,18530,-27025,18523,-27029,18516,-27034,18509,-27039,18502,-27043,18495,-27048,18488,-27053,18482,-27058,18475,-27062,18468,-27067,18461,-27072,18454,-27077,18447,-27081,18440,-27086,18433,-27091,18426,-27095,18419,-27100,18412,-27105,18405,-27110,18398,-27114,18392,-27119,18385,-27124,18378,-27128,18371,-27133,18364,-27138,18357,-27142,18350,-27147,18343,-27152,18336,-27157,18329,-27161,18322,-27166,18315,-27171,18308,-27175,18301,-27180,18294,-27185,18287,-27189,18280,-27194,18273,-27199,18267,-27203,18260,-27208,18253,-27213,18246,-27217,18239,-27222,18232,-27227,18225,-27231,18218,-27236,18211,-27241,18204,-27245,18197,-27250,18190,-27255,18183,-27259,18176,-27264,18169,-27269,18162,-27273,18155,-27278,18148,-27282,18141,-27287,18134,-27292,18127,-27296,18120,-27301,18113,-27306,18106,-27310,18099,-27315,18092,-27320,18085,-27324,18078,-27329,18071,-27333,18064,-27338,18057,-27343,18050,-27347,18043,-27352,18036,-27356,18029,-27361,18022,-27366,18015,-27370,18008,-27375,18001,-27379,17994,-27384,17987,-27389,17980,-27393,17973,-27398,17966,-27402,17959,-27407,17952,-27412,17945,-27416,17938,-27421,17931,-27425,17924,-27430,17917,-27435,17910,-27439,17903,-27444,17896,-27448,17889,-27453,17882,-27457,17875,-27462,17868,-27467,17861,-27471,17854,-27476,17847,-27480,17840,-27485,17833,-27489,17826,-27494,17819,-27499,17812,-27503,17805,-27508,17798,-27512,17791,-27517,17784,-27521,17777,-27526,17770,-27530,17763,-27535,17756,-27539,17749,-27544,17742,-27549,17735,-27553,17727,-27558,17720,-27562,17713,-27567,17706,-27571,17699,-27576,17692,-27580,17685,-27585,17678,-27589,17671,-27594,17664,-27598,17657,-27603,17650,-27607,17643,-27612,17636,-27616,17629,-27621,17622,-27625,17615,-27630,17608,-27634,17600,-27639,17593,-27643,17586,-27648,17579,-27652,17572,-27657,17565,-27661,17558,-27666,17551,-27670,17544,-27675,17537,-27679,17530,-27684,17523,-27688,17516,-27693,17509,-27697,17501,-27702,17494,-27706,17487,-27711,17480,-27715,17473,-27720,17466,-27724,17459,-27729,17452,-27733,17445,-27737,17438,-27742,17431,-27746,17423,-27751,17416,-27755,17409,-27760,17402,-27764,17395,-27769,17388,-27773,17381,-27778,17374,-27782,17367,-27786,17360,-27791,17352,-27795,17345,-27800,17338,-27804,17331,-27809,17324,-27813,17317,-27817,17310,-27822,17303,-27826,17296,-27831,17288,-27835,17281,-27840,17274,-27844,17267,-27848,17260,-27853,17253,-27857,17246,-27862,17239,-27866,17232,-27870,17224,-27875,17217,-27879,17210,-27884,17203,-27888,17196,-27892,17189,-27897,17182,-27901,17174,-27906,17167,-27910,17160,-27914,17153,-27919,17146,-27923,17139,-27928,17132,-27932,17124,-27936,17117,-27941,17110,-27945,17103,-27949,17096,-27954,17089,-27958,17082,-27963,17074,-27967,17067,-27971,17060,-27976,17053,-27980,17046,-27984,17039,-27989,17032,-27993,17024,-27997,17017,-28002,17010,-28006,17003,-28010,16996,-28015,16989,-28019,16981,-28024,16974,-28028,16967,-28032,16960,-28037,16953,-28041,16946,-28045,16938,-28050,16931,-28054,16924,-28058,16917,-28063,16910,-28067,16903,-28071,16895,-28076,16888,-28080,16881,-28084,16874,-28088,16867,-28093,16859,-28097,16852,-28101,16845,-28106,16838,-28110,16831,-28114,16824,-28119,16816,-28123,16809,-28127,16802,-28132,16795,-28136,16788,-28140,16780,-28144,16773,-28149,16766,-28153,16759,-28157,16752,-28162,16744,-28166,16737,-28170,16730,-28174,16723,-28179,16716,-28183,16708,-28187,16701,-28191,16694,-28196,16687,-28200,16680,-28204,16672,-28209,16665,-28213,16658,-28217,16651,-28221,16643,-28226,16636,-28230,16629,-28234,16622,-28238,16615,-28243,16607,-28247,16600,-28251,16593,-28255,16586,-28260,16578,-28264,16571,-28268,16564,-28272,16557,-28276,16550,-28281,16542,-28285,16535,-28289,16528,-28293,16521,-28298,16513,-28302,16506,-28306,16499,-28310,16492,-28315,16484,-28319,16477,-28323,16470,-28327,16463,-28331,16455,-28336,16448,-28340,16441,-28344,16434,-28348,16427,-28352,16419,-28357,16412,-28361,16405,-28365,16398,-28369,16390,-28373,16383,-28378,16376,-28382,16368,-28386,16361,-28390,16354,-28394,16347,-28398,16339,-28403,16332,-28407,16325,-28411,16318,-28415,16310,-28419,16303,-28424,16296,-28428,16289,-28432,16281,-28436,16274,-28440,16267,-28444,16260,-28448,16252,-28453,16245,-28457,16238,-28461,16230,-28465,16223,-28469,16216,-28473,16209,-28478,16201,-28482,16194,-28486,16187,-28490,16179,-28494,16172,-28498,16165,-28502,16158,-28507,16150,-28511,16143,-28515,16136,-28519,16128,-28523,16121,-28527,16114,-28531,16107,-28535,16099,-28539,16092,-28544,16085,-28548,16077,-28552,16070,-28556,16063,-28560,16055,-28564,16048,-28568,16041,-28572,16034,-28576,16026,-28581,16019,-28585,16012,-28589,16004,-28593,15997,-28597,15990,-28601,15982,-28605,15975,-28609,15968,-28613,15960,-28617,15953,-28621,15946,-28626,15938,-28630,15931,-28634,15924,-28638,15917,-28642,15909,-28646,15902,-28650,15895,-28654,15887,-28658,15880,-28662,15873,-28666,15865,-28670,15858,-28674,15851,-28678,15843,-28682,15836,-28686,15829,-28691,15821,-28695,15814,-28699,15807,-28703,15799,-28707,15792,-28711,15785,-28715,15777,-28719,15770,-28723,15763,-28727,15755,-28731,15748,-28735,15740,-28739,15733,-28743,15726,-28747,15718,-28751,15711,-28755,15704,-28759,15696,-28763,15689,-28767,15682,-28771,15674,-28775,15667,-28779,15660,-28783,15652,-28787,15645,-28791,15638,-28795,15630,-28799,15623,-28803,15615,-28807,15608,-28811,15601,-28815,15593,-28819,15586,-28823,15579,-28827,15571,-28831,15564,-28835,15556,-28839,15549,-28843,15542,-28847,15534,-28851,15527,-28855,15520,-28859,15512,-28863,15505,-28867,15497,-28871,15490,-28875,15483,-28879,15475,-28883,15468,-28887,15461,-28891,15453,-28894,15446,-28898,15438,-28902,15431,-28906,15424,-28910,15416,-28914,15409,-28918,15401,-28922,15394,-28926,15387,-28930,15379,-28934,15372,-28938,15364,-28942,15357,-28946,15350,-28950,15342,-28954,15335,-28957,15327,-28961,15320,-28965,15313,-28969,15305,-28973,15298,-28977,15290,-28981,15283,-28985,15276,-28989,15268,-28993,15261,-28997,15253,-29000,15246,-29004,15238,-29008,15231,-29012,15224,-29016,15216,-29020,15209,-29024,15201,-29028,15194,-29032,15187,-29035,15179,-29039,15172,-29043,15164,-29047,15157,-29051,15149,-29055,15142,-29059,15135,-29063,15127,-29066,15120,-29070,15112,-29074,15105,-29078,15097,-29082,15090,-29086,15083,-29090,15075,-29093,15068,-29097,15060,-29101,15053,-29105,15045,-29109,15038,-29113,15030,-29117,15023,-29120,15016,-29124,15008,-29128,15001,-29132,14993,-29136,14986,-29140,14978,-29143,14971,-29147,14963,-29151,14956,-29155,14949,-29159,14941,-29163,14934,-29166,14926,-29170,14919,-29174,14911,-29178,14904,-29182,14896,-29185,14889,-29189,14881,-29193,14874,-29197,14866,-29201,14859,-29204,14852,-29208,14844,-29212,14837,-29216,14829,-29220,14822,-29223,14814,-29227,14807,-29231,14799,-29235,14792,-29239,14784,-29242,14777,-29246,14769,-29250,14762,-29254,14754,-29257,14747,-29261,14739,-29265,14732,-29269,14724,-29273,14717,-29276,14709,-29280,14702,-29284,14694,-29288,14687,-29291,14680,-29295,14672,-29299,14665,-29303,14657,-29306,14650,-29310,14642,-29314,14635,-29318,14627,-29321,14620,-29325,14612,-29329,14605,-29333,14597,-29336,14590,-29340,14582,-29344,14575,-29347,14567,-29351,14560,-29355,14552,-29359,14545,-29362,14537,-29366,14530,-29370,14522,-29373,14515,-29377,14507,-29381,14499,-29385,14492,-29388,14484,-29392,14477,-29396,14469,-29399,14462,-29403,14454,-29407,14447,-29411,14439,-29414,14432,-29418,14424,-29422,14417,-29425,14409,-29429,14402,-29433,14394,-29436,14387,-29440,14379,-29444,14372,-29447,14364,-29451,14357,-29455,14349,-29458,14342,-29462,14334,-29466,14326,-29469,14319,-29473,14311,-29477,14304,-29480,14296,-29484,14289,-29488,14281,-29491,14274,-29495,14266,-29499,14259,-29502,14251,-29506,14244,-29510,14236,-29513,14228,-29517,14221,-29520,14213,-29524,14206,-29528,14198,-29531,14191,-29535,14183,-29539,14176,-29542,14168,-29546,14160,-29549,14153,-29553,14145,-29557,14138,-29560,14130,-29564,14123,-29568,14115,-29571,14108,-29575,14100,-29578,14092,-29582,14085,-29586,14077,-29589,14070,-29593,14062,-29596,14055,-29600,14047,-29604,14039,-29607,14032,-29611,14024,-29614,14017,-29618,14009,-29622,14002,-29625,13994,-29629,13986,-29632,13979,-29636,13971,-29639,13964,-29643,13956,-29647,13949,-29650,13941,-29654,13933,-29657,13926,-29661,13918,-29664,13911,-29668,13903,-29671,13895,-29675,13888,-29679,13880,-29682,13873,-29686,13865,-29689,13858,-29693,13850,-29696,13842,-29700,13835,-29703,13827,-29707,13820,-29710,13812,-29714,13804,-29718,13797,-29721,13789,-29725,13782,-29728,13774,-29732,13766,-29735,13759,-29739,13751,-29742,13744,-29746,13736,-29749,13728,-29753,13721,-29756,13713,-29760,13706,-29763,13698,-29767,13690,-29770,13683,-29774,13675,-29777,13667,-29781,13660,-29784,13652,-29788,13645,-29791,13637,-29795,13629,-29798,13622,-29802,13614,-29805,13607,-29809,13599,-29812,13591,-29816,13584,-29819,13576,-29823,13568,-29826,13561,-29829,13553,-29833,13546,-29836,13538,-29840,13530,-29843,13523,-29847,13515,-29850,13507,-29854,13500,-29857,13492,-29861,13485,-29864,13477,-29867,13469,-29871,13462,-29874,13454,-29878,13446,-29881,13439,-29885,13431,-29888,13423,-29892,13416,-29895,13408,-29898,13400,-29902,13393,-29905,13385,-29909,13378,-29912,13370,-29916,13362,-29919,13355,-29922,13347,-29926,13339,-29929,13332,-29933,13324,-29936,13316,-29939,13309,-29943,13301,-29946,13293,-29950,13286,-29953,13278,-29956,13270,-29960,13263,-29963,13255,-29967,13247,-29970,13240,-29973,13232,-29977,13224,-29980,13217,-29984,13209,-29987,13201,-29990,13194,-29994,13186,-29997,13178,-30000,13171,-30004,13163,-30007,13155,-30010,13148,-30014,13140,-30017,13132,-30021,13125,-30024,13117,-30027,13109,-30031,13102,-30034,13094,-30037,13086,-30041,13079,-30044,13071,-30047,13063,-30051,13056,-30054,13048,-30057,13040,-30061,13033,-30064,13025,-30067,13017,-30071,13009,-30074,13002,-30077,12994,-30081,12986,-30084,12979,-30087,12971,-30091,12963,-30094,12956,-30097,12948,-30101,12940,-30104,12933,-30107,12925,-30110,12917,-30114,12909,-30117,12902,-30120,12894,-30124,12886,-30127,12879,-30130,12871,-30134,12863,-30137,12856,-30140,12848,-30143,12840,-30147,12832,-30150,12825,-30153,12817,-30157,12809,-30160,12802,-30163,12794,-30166,12786,-30170,12778,-30173,12771,-30176,12763,-30179,12755,-30183,12748,-30186,12740,-30189,12732,-30192,12724,-30196,12717,-30199,12709,-30202,12701,-30206,12694,-30209,12686,-30212,12678,-30215,12670,-30218,12663,-30222,12655,-30225,12647,-30228,12639,-30231,12632,-30235,12624,-30238,12616,-30241,12609,-30244,12601,-30248,12593,-30251,12585,-30254,12578,-30257,12570,-30260,12562,-30264,12554,-30267,12547,-30270,12539,-30273,12531,-30276,12523,-30280,12516,-30283,12508,-30286,12500,-30289,12492,-30292,12485,-30296,12477,-30299,12469,-30302,12461,-30305,12454,-30308,12446,-30312,12438,-30315,12430,-30318,12423,-30321,12415,-30324,12407,-30327,12399,-30331,12392,-30334,12384,-30337,12376,-30340,12368,-30343,12361,-30346,12353,-30350,12345,-30353,12337,-30356,12330,-30359,12322,-30362,12314,-30365,12306,-30369,12299,-30372,12291,-30375,12283,-30378,12275,-30381,12268,-30384,12260,-30387,12252,-30391,12244,-30394,12236,-30397,12229,-30400,12221,-30403,12213,-30406,12205,-30409,12198,-30412,12190,-30416,12182,-30419,12174,-30422,12166,-30425,12159,-30428,12151,-30431,12143,-30434,12135,-30437,12128,-30440,12120,-30443,12112,-30447,12104,-30450,12096,-30453,12089,-30456,12081,-30459,12073,-30462,12065,-30465,12057,-30468,12050,-30471,12042,-30474,12034,-30477,12026,-30481,12019,-30484,12011,-30487,12003,-30490,11995,-30493,11987,-30496,11980,-30499,11972,-30502,11964,-30505,11956,-30508,11948,-30511,11941,-30514,11933,-30517,11925,-30520,11917,-30523,11909,-30526,11902,-30529,11894,-30533,11886,-30536,11878,-30539,11870,-30542,11862,-30545,11855,-30548,11847,-30551,11839,-30554,11831,-30557,11823,-30560,11816,-30563,11808,-30566,11800,-30569,11792,-30572,11784,-30575,11777,-30578,11769,-30581,11761,-30584,11753,-30587,11745,-30590,11737,-30593,11730,-30596,11722,-30599,11714,-30602,11706,-30605,11698,-30608,11691,-30611,11683,-30614,11675,-30617,11667,-30620,11659,-30623,11651,-30626,11644,-30629,11636,-30632,11628,-30635,11620,-30638,11612,-30641,11604,-30644,11597,-30647,11589,-30650,11581,-30653,11573,-30656,11565,-30658,11557,-30661,11550,-30664,11542,-30667,11534,-30670,11526,-30673,11518,-30676,11510,-30679,11502,-30682,11495,-30685,11487,-30688,11479,-30691,11471,-30694,11463,-30697,11455,-30700,11448,-30703,11440,-30706,11432,-30708,11424,-30711,11416,-30714,11408,-30717,11400,-30720,11393,-30723,11385,-30726,11377,-30729,11369,-30732,11361,-30735,11353,-30738,11345,-30740,11338,-30743,11330,-30746,11322,-30749,11314,-30752,11306,-30755,11298,-30758,11290,-30761,11283,-30764,11275,-30767,11267,-30769,11259,-30772,11251,-30775,11243,-30778,11235,-30781,11227,-30784,11220,-30787,11212,-30789,11204,-30792,11196,-30795,11188,-30798,11180,-30801,11172,-30804,11164,-30807,11157,-30810,11149,-30812,11141,-30815,11133,-30818,11125,-30821,11117,-30824,11109,-30827,11101,-30829,11094,-30832,11086,-30835,11078,-30838,11070,-30841,11062,-30844,11054,-30846,11046,-30849,11038,-30852,11030,-30855,11023,-30858,11015,-30861,11007,-30863,10999,-30866,10991,-30869,10983,-30872,10975,-30875,10967,-30877,10959,-30880,10952,-30883,10944,-30886,10936,-30889,10928,-30891,10920,-30894,10912,-30897,10904,-30900,10896,-30903,10888,-30905,10880,-30908,10873,-30911,10865,-30914,10857,-30916,10849,-30919,10841,-30922,10833,-30925,10825,-30928,10817,-30930,10809,-30933,10801,-30936,10794,-30939,10786,-30941,10778,-30944,10770,-30947,10762,-30950,10754,-30952,10746,-30955,10738,-30958,10730,-30961,10722,-30963,10714,-30966,10706,-30969,10699,-30972,10691,-30974,10683,-30977,10675,-30980,10667,-30982,10659,-30985,10651,-30988,10643,-30991,10635,-30993,10627,-30996,10619,-30999,10611,-31002,10603,-31004,10596,-31007,10588,-31010,10580,-31012,10572,-31015,10564,-31018,10556,-31020,10548,-31023,10540,-31026,10532,-31029,10524,-31031,10516,-31034,10508,-31037,10500,-31039,10492,-31042,10484,-31045,10477,-31047,10469,-31050,10461,-31053,10453,-31055,10445,-31058,10437,-31061,10429,-31063,10421,-31066,10413,-31069,10405,-31071,10397,-31074,10389,-31077,10381,-31079,10373,-31082,10365,-31085,10357,-31087,10349,-31090,10342,-31093,10334,-31095,10326,-31098,10318,-31101,10310,-31103,10302,-31106,10294,-31108,10286,-31111,10278,-31114,10270,-31116,10262,-31119,10254,-31122,10246,-31124,10238,-31127,10230,-31129,10222,-31132,10214,-31135,10206,-31137,10198,-31140,10190,-31142,10182,-31145,10174,-31148,10166,-31150,10159,-31153,10151,-31155,10143,-31158,10135,-31161,10127,-31163,10119,-31166,10111,-31168,10103,-31171,10095,-31174,10087,-31176,10079,-31179,10071,-31181,10063,-31184,10055,-31186,10047,-31189,10039,-31192,10031,-31194,10023,-31197,10015,-31199,10007,-31202,9999,-31204,9991,-31207,9983,-31210,9975,-31212,9967,-31215,9959,-31217,9951,-31220,9943,-31222,9935,-31225,9927,-31227,9919,-31230,9911,-31232,9903,-31235,9895,-31237,9887,-31240,9879,-31243,9871,-31245,9863,-31248,9855,-31250,9847,-31253,9839,-31255,9831,-31258,9823,-31260,9815,-31263,9807,-31265,9799,-31268,9791,-31270,9783,-31273,9775,-31275,9767,-31278,9759,-31280,9751,-31283,9743,-31285,9735,-31288,9727,-31290,9719,-31293,9711,-31295,9703,-31298,9695,-31300,9687,-31303,9679,-31305,9671,-31308,9663,-31310,9655,-31312,9647,-31315,9639,-31317,9631,-31320,9623,-31322,9615,-31325,9607,-31327,9599,-31330,9591,-31332,9583,-31335,9575,-31337,9567,-31339,9559,-31342,9551,-31344,9543,-31347,9535,-31349,9527,-31352,9519,-31354,9511,-31357,9503,-31359,9495,-31361,9487,-31364,9479,-31366,9471,-31369,9463,-31371,9455,-31374,9447,-31376,9439,-31378,9431,-31381,9423,-31383,9415,-31386,9407,-31388,9399,-31390,9391,-31393,9383,-31395,9375,-31398,9367,-31400,9359,-31402,9351,-31405,9343,-31407,9335,-31410,9327,-31412,9319,-31414,9311,-31417,9303,-31419,9295,-31421,9287,-31424,9279,-31426,9270,-31429,9262,-31431,9254,-31433,9246,-31436,9238,-31438,9230,-31440,9222,-31443,9214,-31445,9206,-31447,9198,-31450,9190,-31452,9182,-31455,9174,-31457,9166,-31459,9158,-31462,9150,-31464,9142,-31466,9134,-31469,9126,-31471,9118,-31473,9110,-31476,9102,-31478,9094,-31480,9086,-31483,9077,-31485,9069,-31487,9061,-31490,9053,-31492,9045,-31494,9037,-31496,9029,-31499,9021,-31501,9013,-31503,9005,-31506,8997,-31508,8989,-31510,8981,-31513,8973,-31515,8965,-31517,8957,-31519,8949,-31522,8941,-31524,8932,-31526,8924,-31529,8916,-31531,8908,-31533,8900,-31535,8892,-31538,8884,-31540,8876,-31542,8868,-31545,8860,-31547,8852,-31549,8844,-31551,8836,-31554,8828,-31556,8820,-31558,8812,-31560,8803,-31563,8795,-31565,8787,-31567,8779,-31569,8771,-31572,8763,-31574,8755,-31576,8747,-31578,8739,-31581,8731,-31583,8723,-31585,8715,-31587,8707,-31589,8699,-31592,8690,-31594,8682,-31596,8674,-31598,8666,-31601,8658,-31603,8650,-31605,8642,-31607,8634,-31609,8626,-31612,8618,-31614,8610,-31616,8602,-31618,8593,-31620,8585,-31623,8577,-31625,8569,-31627,8561,-31629,8553,-31631,8545,-31634,8537,-31636,8529,-31638,8521,-31640,8513,-31642,8504,-31644,8496,-31647,8488,-31649,8480,-31651,8472,-31653,8464,-31655,8456,-31657,8448,-31660,8440,-31662,8432,-31664,8424,-31666,8415,-31668,8407,-31670,8399,-31673,8391,-31675,8383,-31677,8375,-31679,8367,-31681,8359,-31683,8351,-31685,8343,-31688,8334,-31690,8326,-31692,8318,-31694,8310,-31696,8302,-31698,8294,-31700,8286,-31702,8278,-31705,8270,-31707,8262,-31709,8253,-31711,8245,-31713,8237,-31715,8229,-31717,8221,-31719,8213,-31721,8205,-31724,8197,-31726,8189,-31728,8180,-31730,8172,-31732,8164,-31734,8156,-31736,8148,-31738,8140,-31740,8132,-31742,8124,-31744,8116,-31746,8107,-31749,8099,-31751,8091,-31753,8083,-31755,8075,-31757,8067,-31759,8059,-31761,8051,-31763,8042,-31765,8034,-31767,8026,-31769,8018,-31771,8010,-31773,8002,-31775,7994,-31777,7986,-31779,7977,-31781,7969,-31783,7961,-31786,7953,-31788,7945,-31790,7937,-31792,7929,-31794,7921,-31796,7912,-31798,7904,-31800,7896,-31802,7888,-31804,7880,-31806,7872,-31808,7864,-31810,7856,-31812,7847,-31814,7839,-31816,7831,-31818,7823,-31820,7815,-31822,7807,-31824,7799,-31826,7790,-31828,7782,-31830,7774,-31832,7766,-31834,7758,-31836,7750,-31838,7742,-31840,7733,-31842,7725,-31844,7717,-31846,7709,-31848,7701,-31850,7693,-31852,7685,-31854,7676,-31855,7668,-31857,7660,-31859,7652,-31861,7644,-31863,7636,-31865,7628,-31867,7619,-31869,7611,-31871,7603,-31873,7595,-31875,7587,-31877,7579,-31879,7571,-31881,7562,-31883,7554,-31885,7546,-31887,7538,-31889,7530,-31890,7522,-31892,7514,-31894,7505,-31896,7497,-31898,7489,-31900,7481,-31902,7473,-31904,7465,-31906,7456,-31908,7448,-31910,7440,-31912,7432,-31913,7424,-31915,7416,-31917,7407,-31919,7399,-31921,7391,-31923,7383,-31925,7375,-31927,7367,-31929,7358,-31930,7350,-31932,7342,-31934,7334,-31936,7326,-31938,7318,-31940,7310,-31942,7301,-31944,7293,-31945,7285,-31947,7277,-31949,7269,-31951,7261,-31953,7252,-31955,7244,-31957,7236,-31958,7228,-31960,7220,-31962,7211,-31964,7203,-31966,7195,-31968,7187,-31969,7179,-31971,7171,-31973,7162,-31975,7154,-31977,7146,-31979,7138,-31980,7130,-31982,7122,-31984,7113,-31986,7105,-31988,7097,-31990,7089,-31991,7081,-31993,7072,-31995,7064,-31997,7056,-31999,7048,-32000,7040,-32002,7032,-32004,7023,-32006,7015,-32008,7007,-32009,6999,-32011,6991,-32013,6982,-32015,6974,-32017,6966,-32018,6958,-32020,6950,-32022,6942,-32024,6933,-32025,6925,-32027,6917,-32029,6909,-32031,6901,-32033,6892,-32034,6884,-32036,6876,-32038,6868,-32040,6860,-32041,6851,-32043,6843,-32045,6835,-32047,6827,-32048,6819,-32050,6811,-32052,6802,-32054,6794,-32055,6786,-32057,6778,-32059,6770,-32060,6761,-32062,6753,-32064,6745,-32066,6737,-32067,6729,-32069,6720,-32071,6712,-32073,6704,-32074,6696,-32076,6688,-32078,6679,-32079,6671,-32081,6663,-32083,6655,-32085,6647,-32086,6638,-32088,6630,-32090,6622,-32091,6614,-32093,6606,-32095,6597,-32096,6589,-32098,6581,-32100,6573,-32101,6564,-32103,6556,-32105,6548,-32106,6540,-32108,6532,-32110,6523,-32111,6515,-32113,6507,-32115,6499,-32116,6491,-32118,6482,-32120,6474,-32121,6466,-32123,6458,-32125,6450,-32126,6441,-32128,6433,-32130,6425,-32131,6417,-32133,6408,-32135,6400,-32136,6392,-32138,6384,-32140,6376,-32141,6367,-32143,6359,-32144,6351,-32146,6343,-32148,6334,-32149,6326,-32151,6318,-32153,6310,-32154,6302,-32156,6293,-32157,6285,-32159,6277,-32161,6269,-32162,6261,-32164,6252,-32165,6244,-32167,6236,-32169,6228,-32170,6219,-32172,6211,-32173,6203,-32175,6195,-32177,6186,-32178,6178,-32180,6170,-32181,6162,-32183,6154,-32184,6145,-32186,6137,-32188,6129,-32189,6121,-32191,6112,-32192,6104,-32194,6096,-32195,6088,-32197,6080,-32198,6071,-32200,6063,-32202,6055,-32203,6047,-32205,6038,-32206,6030,-32208,6022,-32209,6014,-32211,6005,-32212,5997,-32214,5989,-32215,5981,-32217,5972,-32219,5964,-32220,5956,-32222,5948,-32223,5940,-32225,5931,-32226,5923,-32228,5915,-32229,5907,-32231,5898,-32232,5890,-32234,5882,-32235,5874,-32237,5865,-32238,5857,-32240,5849,-32241,5841,-32243,5832,-32244,5824,-32246,5816,-32247,5808,-32249,5799,-32250,5791,-32252,5783,-32253,5775,-32255,5766,-32256,5758,-32257,5750,-32259,5742,-32260,5733,-32262,5725,-32263,5717,-32265,5709,-32266,5700,-32268,5692,-32269,5684,-32271,5676,-32272,5667,-32274,5659,-32275,5651,-32276,5643,-32278,5634,-32279,5626,-32281,5618,-32282,5610,-32284,5601,-32285,5593,-32287,5585,-32288,5577,-32289,5568,-32291,5560,-32292,5552,-32294,5544,-32295,5535,-32296,5527,-32298,5519,-32299,5511,-32301,5502,-32302,5494,-32304,5486,-32305,5478,-32306,5469,-32308,5461,-32309,5453,-32311,5445,-32312,5436,-32313,5428,-32315,5420,-32316,5411,-32317,5403,-32319,5395,-32320,5387,-32322,5378,-32323,5370,-32324,5362,-32326,5354,-32327,5345,-32328,5337,-32330,5329,-32331,5321,-32333,5312,-32334,5304,-32335,5296,-32337,5287,-32338,5279,-32339,5271,-32341,5263,-32342,5254,-32343,5246,-32345,5238,-32346,5230,-32347,5221,-32349,5213,-32350,5205,-32351,5197,-32353,5188,-32354,5180,-32355,5172,-32357,5163,-32358,5155,-32359,5147,-32361,5139,-32362,5130,-32363,5122,-32365,5114,-32366,5106,-32367,5097,-32369,5089,-32370,5081,-32371,5072,-32372,5064,-32374,5056,-32375,5048,-32376,5039,-32378,5031,-32379,5023,-32380,5014,-32381,5006,-32383,4998,-32384,4990,-32385,4981,-32387,4973,-32388,4965,-32389,4957,-32390,4948,-32392,4940,-32393,4932,-32394,4923,-32395,4915,-32397,4907,-32398,4899,-32399,4890,-32400,4882,-32402,4874,-32403,4865,-32404,4857,-32405,4849,-32407,4841,-32408,4832,-32409,4824,-32410,4816,-32412,4807,-32413,4799,-32414,4791,-32415,4783,-32417,4774,-32418,4766,-32419,4758,-32420,4749,-32421,4741,-32423,4733,-32424,4725,-32425,4716,-32426,4708,-32427,4700,-32429,4691,-32430,4683,-32431,4675,-32432,4666,-32433,4658,-32435,4650,-32436,4642,-32437,4633,-32438,4625,-32439,4617,-32441,4608,-32442,4600,-32443,4592,-32444,4584,-32445,4575,-32446,4567,-32448,4559,-32449,4550,-32450,4542,-32451,4534,-32452,4525,-32453,4517,-32455,4509,-32456,4501,-32457,4492,-32458,4484,-32459,4476,-32460,4467,-32461,4459,-32463,4451,-32464,4443,-32465,4434,-32466,4426,-32467,4418,-32468,4409,-32469,4401,-32471,4393,-32472,4384,-32473,4376,-32474,4368,-32475,4359,-32476,4351,-32477,4343,-32478,4335,-32479,4326,-32481,4318,-32482,4310,-32483,4301,-32484,4293,-32485,4285,-32486,4276,-32487,4268,-32488,4260,-32489,4252,-32490,4243,-32492,4235,-32493,4227,-32494,4218,-32495,4210,-32496,4202,-32497,4193,-32498,4185,-32499,4177,-32500,4168,-32501,4160,-32502,4152,-32503,4144,-32504,4135,-32505,4127,-32507,4119,-32508,4110,-32509,4102,-32510,4094,-32511,4085,-32512,4077,-32513,4069,-32514,4060,-32515,4052,-32516,4044,-32517,4035,-32518,4027,-32519,4019,-32520,4011,-32521,4002,-32522,3994,-32523,3986,-32524,3977,-32525,3969,-32526,3961,-32527,3952,-32528,3944,-32529,3936,-32530,3927,-32531,3919,-32532,3911,-32533,3902,-32534,3894,-32535,3886,-32536,3877,-32537,3869,-32538,3861,-32539,3853,-32540,3844,-32541,3836,-32542,3828,-32543,3819,-32544,3811,-32545,3803,-32546,3794,-32547,3786,-32548,3778,-32549,3769,-32550,3761,-32551,3753,-32552,3744,-32553,3736,-32554,3728,-32555,3719,-32556,3711,-32557,3703,-32558,3694,-32559,3686,-32559,3678,-32560,3669,-32561,3661,-32562,3653,-32563,3644,-32564,3636,-32565,3628,-32566,3619,-32567,3611,-32568,3603,-32569,3594,-32570,3586,-32571,3578,-32572,3570,-32572,3561,-32573,3553,-32574,3545,-32575,3536,-32576,3528,-32577,3520,-32578,3511,-32579,3503,-32580,3495,-32581,3486,-32581,3478,-32582,3470,-32583,3461,-32584,3453,-32585,3445,-32586,3436,-32587,3428,-32588,3420,-32589,3411,-32589,3403,-32590,3395,-32591,3386,-32592,3378,-32593,3370,-32594,3361,-32595,3353,-32595,3345,-32596,3336,-32597,3328,-32598,3320,-32599,3311,-32600,3303,-32601,3295,-32601,3286,-32602,3278,-32603,3270,-32604,3261,-32605,3253,-32606,3245,-32606,3236,-32607,3228,-32608,3220,-32609,3211,-32610,3203,-32611,3195,-32611,3186,-32612,3178,-32613,3170,-32614,3161,-32615,3153,-32615,3145,-32616,3136,-32617,3128,-32618,3120,-32619,3111,-32619,3103,-32620,3094,-32621,3086,-32622,3078,-32623,3069,-32623,3061,-32624,3053,-32625,3044,-32626,3036,-32626,3028,-32627,3019,-32628,3011,-32629,3003,-32630,2994,-32630,2986,-32631,2978,-32632,2969,-32633,2961,-32633,2953,-32634,2944,-32635,2936,-32636,2928,-32636,2919,-32637,2911,-32638,2903,-32639,2894,-32639,2886,-32640,2878,-32641,2869,-32642,2861,-32642,2853,-32643,2844,-32644,2836,-32645,2828,-32645,2819,-32646,2811,-32647,2802,-32647,2794,-32648,2786,-32649,2777,-32650,2769,-32650,2761,-32651,2752,-32652,2744,-32652,2736,-32653,2727,-32654,2719,-32654,2711,-32655,2702,-32656,2694,-32657,2686,-32657,2677,-32658,2669,-32659,2661,-32659,2652,-32660,2644,-32661,2636,-32661,2627,-32662,2619,-32663,2610,-32663,2602,-32664,2594,-32665,2585,-32665,2577,-32666,2569,-32667,2560,-32667,2552,-32668,2544,-32669,2535,-32669,2527,-32670,2519,-32671,2510,-32671,2502,-32672,2494,-32672,2485,-32673,2477,-32674,2468,-32674,2460,-32675,2452,-32676,2443,-32676,2435,-32677,2427,-32677,2418,-32678,2410,-32679,2402,-32679,2393,-32680,2385,-32681,2377,-32681,2368,-32682,2360,-32682,2352,-32683,2343,-32684,2335,-32684,2326,-32685,2318,-32685,2310,-32686,2301,-32687,2293,-32687,2285,-32688,2276,-32688,2268,-32689,2260,-32689,2251,-32690,2243,-32691,2235,-32691,2226,-32692,2218,-32692,2209,-32693,2201,-32693,2193,-32694,2184,-32695,2176,-32695,2168,-32696,2159,-32696,2151,-32697,2143,-32697,2134,-32698,2126,-32698,2117,-32699,2109,-32700,2101,-32700,2092,-32701,2084,-32701,2076,-32702,2067,-32702,2059,-32703,2051,-32703,2042,-32704,2034,-32704,2026,-32705,2017,-32705,2009,-32706,2000,-32706,1992,-32707,1984,-32707,1975,-32708,1967,-32708,1959,-32709,1950,-32709,1942,-32710,1934,-32710,1925,-32711,1917,-32711,1908,-32712,1900,-32712,1892,-32713,1883,-32713,1875,-32714,1867,-32714,1858,-32715,1850,-32715,1842,-32716,1833,-32716,1825,-32717,1816,-32717,1808,-32718,1800,-32718,1791,-32718,1783,-32719,1775,-32719,1766,-32720,1758,-32720,1750,-32721,1741,-32721,1733,-32722,1724,-32722,1716,-32723,1708,-32723,1699,-32723,1691,-32724,1683,-32724,1674,-32725,1666,-32725,1658,-32726,1649,-32726,1641,-32726,1632,-32727,1624,-32727,1616,-32728,1607,-32728,1599,-32728,1591,-32729,1582,-32729,1574,-32730,1565,-32730,1557,-32730,1549,-32731,1540,-32731,1532,-32732,1524,-32732,1515,-32732,1507,-32733,1499,-32733,1490,-32734,1482,-32734,1473,-32734,1465,-32735,1457,-32735,1448,-32735,1440,-32736,1432,-32736,1423,-32737,1415,-32737,1406,-32737,1398,-32738,1390,-32738,1381,-32738,1373,-32739,1365,-32739,1356,-32739,1348,-32740,1339,-32740,1331,-32740,1323,-32741,1314,-32741,1306,-32741,1298,-32742,1289,-32742,1281,-32742,1273,-32743,1264,-32743,1256,-32743,1247,-32744,1239,-32744,1231,-32744,1222,-32745,1214,-32745,1206,-32745,1197,-32746,1189,-32746,1180,-32746,1172,-32747,1164,-32747,1155,-32747,1147,-32747,1139,-32748,1130,-32748,1122,-32748,1113,-32749,1105,-32749,1097,-32749,1088,-32749,1080,-32750,1072,-32750,1063,-32750,1055,-32751,1046,-32751,1038,-32751,1030,-32751,1021,-32752,1013,-32752,1005,-32752,996,-32752,988,-32753,980,-32753,971,-32753,963,-32753,954,-32754,946,-32754,938,-32754,929,-32754,921,-32755,913,-32755,904,-32755,896,-32755,887,-32755,879,-32756,871,-32756,862,-32756,854,-32756,846,-32757,837,-32757,829,-32757,820,-32757,812,-32757,804,-32758,795,-32758,787,-32758,779,-32758,770,-32758,762,-32759,753,-32759,745,-32759,737,-32759,728,-32759,720,-32760,712,-32760,703,-32760,695,-32760,686,-32760,678,-32760,670,-32761,661,-32761,653,-32761,645,-32761,636,-32761,628,-32761,619,-32762,611,-32762,603,-32762,594,-32762,586,-32762,578,-32762,569,-32763,561,-32763,552,-32763,544,-32763,536,-32763,527,-32763,519,-32763,510,-32764,502,-32764,494,-32764,485,-32764,477,-32764,469,-32764,460,-32764,452,-32764,443,-32764,435,-32765,427,-32765,418,-32765,410,-32765,402,-32765,393,-32765,385,-32765,376,-32765,368,-32765,360,-32766,351,-32766,343,-32766,335,-32766,326,-32766,318,-32766,309,-32766,301,-32766,293,-32766,284,-32766,276,-32766,268,-32766,259,-32766,251,-32767,242,-32767,234,-32767,226,-32767,217,-32767,209,-32767,201,-32767,192,-32767,184,-32767,175,-32767,167,-32767,159,-32767,150,-32767,142,-32767,134,-32767,125,-32767,117,-32767,108,-32767,100,-32767,92,-32767,83,-32767,75,-32767,67,-32767,58,-32767,50,-32767,41,-32767,33,-32767,25,-32767,16,-32767,8,-32767,0,-32767,-9,-32767,-17,-32767,-26,-32767,-34,-32767,-42,-32767,-51,-32767,-59,-32767,-68,-32767,-76,-32767,-84,-32767,-93,-32767,-101,-32767,-109,-32767,-118,-32767,-126,-32767,-135,-32767,-143,-32767,-151,-32767,-160,-32767,-168,-32767,-176,-32767,-185,-32767,-193,-32767,-202,-32767,-210,-32767,-218,-32767,-227,-32767,-235,-32767,-243,-32767,-252,-32767,-260,-32766,-269,-32766,-277,-32766,-285,-32766,-294,-32766,-302,-32766,-310,-32766,-319,-32766,-327,-32766,-336,-32766,-344,-32766,-352,-32766,-361,-32766,-369,-32765,-377,-32765,-386,-32765,-394,-32765,-403,-32765,-411,-32765,-419,-32765,-428,-32765,-436,-32765,-444,-32764,-453,-32764,-461,-32764,-470,-32764,-478,-32764,-486,-32764,-495,-32764,-503,-32764,-511,-32764,-520,-32763,-528,-32763,-537,-32763,-545,-32763,-553,-32763,-562,-32763,-570,-32763,-579,-32762,-587,-32762,-595,-32762,-604,-32762,-612,-32762,-620,-32762,-629,-32761,-637,-32761,-646,-32761,-654,-32761,-662,-32761,-671,-32761,-679,-32760,-687,-32760,-696,-32760,-704,-32760,-713,-32760,-721,-32760,-729,-32759,-738,-32759,-746,-32759,-754,-32759,-763,-32759,-771,-32758,-780,-32758,-788,-32758,-796,-32758,-805,-32758,-813,-32757,-821,-32757,-830,-32757,-838,-32757,-847,-32757,-855,-32756,-863,-32756,-872,-32756,-880,-32756,-888,-32755,-897,-32755,-905,-32755,-914,-32755,-922,-32755,-930,-32754,-939,-32754,-947,-32754,-955,-32754,-964,-32753,-972,-32753,-981,-32753,-989,-32753,-997,-32752,-1006,-32752,-1014,-32752,-1022,-32752,-1031,-32751,-1039,-32751,-1047,-32751,-1056,-32751,-1064,-32750,-1073,-32750,-1081,-32750,-1089,-32749,-1098,-32749,-1106,-32749,-1114,-32749,-1123,-32748,-1131,-32748,-1140,-32748,-1148,-32747,-1156,-32747,-1165,-32747,-1173,-32747,-1181,-32746,-1190,-32746,-1198,-32746,-1207,-32745,-1215,-32745,-1223,-32745,-1232,-32744,-1240,-32744,-1248,-32744,-1257,-32743,-1265,-32743,-1274,-32743,-1282,-32742,-1290,-32742,-1299,-32742,-1307,-32741,-1315,-32741,-1324,-32741,-1332,-32740,-1340,-32740,-1349,-32740,-1357,-32739,-1366,-32739,-1374,-32739,-1382,-32738,-1391,-32738,-1399,-32738,-1407,-32737,-1416,-32737,-1424,-32737,-1433,-32736,-1441,-32736,-1449,-32735,-1458,-32735,-1466,-32735,-1474,-32734,-1483,-32734,-1491,-32734,-1500,-32733,-1508,-32733,-1516,-32732,-1525,-32732,-1533,-32732,-1541,-32731,-1550,-32731,-1558,-32730,-1566,-32730,-1575,-32730,-1583,-32729,-1592,-32729,-1600,-32728,-1608,-32728,-1617,-32728,-1625,-32727,-1633,-32727,-1642,-32726,-1650,-32726,-1659,-32726,-1667,-32725,-1675,-32725,-1684,-32724,-1692,-32724,-1700,-32723,-1709,-32723,-1717,-32723,-1725,-32722,-1734,-32722,-1742,-32721,-1751,-32721,-1759,-32720,-1767,-32720,-1776,-32719,-1784,-32719,-1792,-32718,-1801,-32718,-1809,-32718,-1817,-32717,-1826,-32717,-1834,-32716,-1843,-32716,-1851,-32715,-1859,-32715,-1868,-32714,-1876,-32714,-1884,-32713,-1893,-32713,-1901,-32712,-1909,-32712,-1918,-32711,-1926,-32711,-1935,-32710,-1943,-32710,-1951,-32709,-1960,-32709,-1968,-32708,-1976,-32708,-1985,-32707,-1993,-32707,-2001,-32706,-2010,-32706,-2018,-32705,-2027,-32705,-2035,-32704,-2043,-32704,-2052,-32703,-2060,-32703,-2068,-32702,-2077,-32702,-2085,-32701,-2093,-32701,-2102,-32700,-2110,-32700,-2118,-32699,-2127,-32698,-2135,-32698,-2144,-32697,-2152,-32697,-2160,-32696,-2169,-32696,-2177,-32695,-2185,-32695,-2194,-32694,-2202,-32693,-2210,-32693,-2219,-32692,-2227,-32692,-2236,-32691,-2244,-32691,-2252,-32690,-2261,-32689,-2269,-32689,-2277,-32688,-2286,-32688,-2294,-32687,-2302,-32687,-2311,-32686,-2319,-32685,-2327,-32685,-2336,-32684,-2344,-32684,-2353,-32683,-2361,-32682,-2369,-32682,-2378,-32681,-2386,-32681,-2394,-32680,-2403,-32679,-2411,-32679,-2419,-32678,-2428,-32677,-2436,-32677,-2444,-32676,-2453,-32676,-2461,-32675,-2469,-32674,-2478,-32674,-2486,-32673,-2495,-32672,-2503,-32672,-2511,-32671,-2520,-32671,-2528,-32670,-2536,-32669,-2545,-32669,-2553,-32668,-2561,-32667,-2570,-32667,-2578,-32666,-2586,-32665,-2595,-32665,-2603,-32664,-2611,-32663,-2620,-32663,-2628,-32662,-2637,-32661,-2645,-32661,-2653,-32660,-2662,-32659,-2670,-32659,-2678,-32658,-2687,-32657,-2695,-32657,-2703,-32656,-2712,-32655,-2720,-32654,-2728,-32654,-2737,-32653,-2745,-32652,-2753,-32652,-2762,-32651,-2770,-32650,-2778,-32650,-2787,-32649,-2795,-32648,-2803,-32647,-2812,-32647,-2820,-32646,-2829,-32645,-2837,-32645,-2845,-32644,-2854,-32643,-2862,-32642,-2870,-32642,-2879,-32641,-2887,-32640,-2895,-32639,-2904,-32639,-2912,-32638,-2920,-32637,-2929,-32636,-2937,-32636,-2945,-32635,-2954,-32634,-2962,-32633,-2970,-32633,-2979,-32632,-2987,-32631,-2995,-32630,-3004,-32630,-3012,-32629,-3020,-32628,-3029,-32627,-3037,-32626,-3045,-32626,-3054,-32625,-3062,-32624,-3070,-32623,-3079,-32623,-3087,-32622,-3095,-32621,-3104,-32620,-3112,-32619,-3121,-32619,-3129,-32618,-3137,-32617,-3146,-32616,-3154,-32615,-3162,-32615,-3171,-32614,-3179,-32613,-3187,-32612,-3196,-32611,-3204,-32611,-3212,-32610,-3221,-32609,-3229,-32608,-3237,-32607,-3246,-32606,-3254,-32606,-3262,-32605,-3271,-32604,-3279,-32603,-3287,-32602,-3296,-32601,-3304,-32601,-3312,-32600,-3321,-32599,-3329,-32598,-3337,-32597,-3346,-32596,-3354,-32595,-3362,-32595,-3371,-32594,-3379,-32593,-3387,-32592,-3396,-32591,-3404,-32590,-3412,-32589,-3421,-32589,-3429,-32588,-3437,-32587,-3446,-32586,-3454,-32585,-3462,-32584,-3471,-32583,-3479,-32582,-3487,-32581,-3496,-32581,-3504,-32580,-3512,-32579,-3521,-32578,-3529,-32577,-3537,-32576,-3546,-32575,-3554,-32574,-3562,-32573,-3571,-32572,-3579,-32572,-3587,-32571,-3595,-32570,-3604,-32569,-3612,-32568,-3620,-32567,-3629,-32566,-3637,-32565,-3645,-32564,-3654,-32563,-3662,-32562,-3670,-32561,-3679,-32560,-3687,-32559,-3695,-32559,-3704,-32558,-3712,-32557,-3720,-32556,-3729,-32555,-3737,-32554,-3745,-32553,-3754,-32552,-3762,-32551,-3770,-32550,-3779,-32549,-3787,-32548,-3795,-32547,-3804,-32546,-3812,-32545,-3820,-32544,-3829,-32543,-3837,-32542,-3845,-32541,-3854,-32540,-3862,-32539,-3870,-32538,-3878,-32537,-3887,-32536,-3895,-32535,-3903,-32534,-3912,-32533,-3920,-32532,-3928,-32531,-3937,-32530,-3945,-32529,-3953,-32528,-3962,-32527,-3970,-32526,-3978,-32525,-3987,-32524,-3995,-32523,-4003,-32522,-4012,-32521,-4020,-32520,-4028,-32519,-4036,-32518,-4045,-32517,-4053,-32516,-4061,-32515,-4070,-32514,-4078,-32513,-4086,-32512,-4095,-32511,-4103,-32510,-4111,-32509,-4120,-32508,-4128,-32507,-4136,-32505,-4145,-32504,-4153,-32503,-4161,-32502,-4169,-32501,-4178,-32500,-4186,-32499,-4194,-32498,-4203,-32497,-4211,-32496,-4219,-32495,-4228,-32494,-4236,-32493,-4244,-32492,-4253,-32490,-4261,-32489,-4269,-32488,-4277,-32487,-4286,-32486,-4294,-32485,-4302,-32484,-4311,-32483,-4319,-32482,-4327,-32481,-4336,-32479,-4344,-32478,-4352,-32477,-4360,-32476,-4369,-32475,-4377,-32474,-4385,-32473,-4394,-32472,-4402,-32471,-4410,-32469,-4419,-32468,-4427,-32467,-4435,-32466,-4444,-32465,-4452,-32464,-4460,-32463,-4468,-32461,-4477,-32460,-4485,-32459,-4493,-32458,-4502,-32457,-4510,-32456,-4518,-32455,-4526,-32453,-4535,-32452,-4543,-32451,-4551,-32450,-4560,-32449,-4568,-32448,-4576,-32446,-4585,-32445,-4593,-32444,-4601,-32443,-4609,-32442,-4618,-32441,-4626,-32439,-4634,-32438,-4643,-32437,-4651,-32436,-4659,-32435,-4667,-32433,-4676,-32432,-4684,-32431,-4692,-32430,-4701,-32429,-4709,-32427,-4717,-32426,-4726,-32425,-4734,-32424,-4742,-32423,-4750,-32421,-4759,-32420,-4767,-32419,-4775,-32418,-4784,-32417,-4792,-32415,-4800,-32414,-4808,-32413,-4817,-32412,-4825,-32410,-4833,-32409,-4842,-32408,-4850,-32407,-4858,-32405,-4866,-32404,-4875,-32403,-4883,-32402,-4891,-32400,-4900,-32399,-4908,-32398,-4916,-32397,-4924,-32395,-4933,-32394,-4941,-32393,-4949,-32392,-4958,-32390,-4966,-32389,-4974,-32388,-4982,-32387,-4991,-32385,-4999,-32384,-5007,-32383,-5015,-32381,-5024,-32380,-5032,-32379,-5040,-32378,-5049,-32376,-5057,-32375,-5065,-32374,-5073,-32372,-5082,-32371,-5090,-32370,-5098,-32369,-5107,-32367,-5115,-32366,-5123,-32365,-5131,-32363,-5140,-32362,-5148,-32361,-5156,-32359,-5164,-32358,-5173,-32357,-5181,-32355,-5189,-32354,-5198,-32353,-5206,-32351,-5214,-32350,-5222,-32349,-5231,-32347,-5239,-32346,-5247,-32345,-5255,-32343,-5264,-32342,-5272,-32341,-5280,-32339,-5288,-32338,-5297,-32337,-5305,-32335,-5313,-32334,-5322,-32333,-5330,-32331,-5338,-32330,-5346,-32328,-5355,-32327,-5363,-32326,-5371,-32324,-5379,-32323,-5388,-32322,-5396,-32320,-5404,-32319,-5412,-32317,-5421,-32316,-5429,-32315,-5437,-32313,-5446,-32312,-5454,-32311,-5462,-32309,-5470,-32308,-5479,-32306,-5487,-32305,-5495,-32304,-5503,-32302,-5512,-32301,-5520,-32299,-5528,-32298,-5536,-32296,-5545,-32295,-5553,-32294,-5561,-32292,-5569,-32291,-5578,-32289,-5586,-32288,-5594,-32287,-5602,-32285,-5611,-32284,-5619,-32282,-5627,-32281,-5635,-32279,-5644,-32278,-5652,-32276,-5660,-32275,-5668,-32274,-5677,-32272,-5685,-32271,-5693,-32269,-5701,-32268,-5710,-32266,-5718,-32265,-5726,-32263,-5734,-32262,-5743,-32260,-5751,-32259,-5759,-32257,-5767,-32256,-5776,-32255,-5784,-32253,-5792,-32252,-5800,-32250,-5809,-32249,-5817,-32247,-5825,-32246,-5833,-32244,-5842,-32243,-5850,-32241,-5858,-32240,-5866,-32238,-5875,-32237,-5883,-32235,-5891,-32234,-5899,-32232,-5908,-32231,-5916,-32229,-5924,-32228,-5932,-32226,-5941,-32225,-5949,-32223,-5957,-32222,-5965,-32220,-5973,-32219,-5982,-32217,-5990,-32215,-5998,-32214,-6006,-32212,-6015,-32211,-6023,-32209,-6031,-32208,-6039,-32206,-6048,-32205,-6056,-32203,-6064,-32202,-6072,-32200,-6081,-32198,-6089,-32197,-6097,-32195,-6105,-32194,-6113,-32192,-6122,-32191,-6130,-32189,-6138,-32188,-6146,-32186,-6155,-32184,-6163,-32183,-6171,-32181,-6179,-32180,-6187,-32178,-6196,-32177,-6204,-32175,-6212,-32173,-6220,-32172,-6229,-32170,-6237,-32169,-6245,-32167,-6253,-32165,-6262,-32164,-6270,-32162,-6278,-32161,-6286,-32159,-6294,-32157,-6303,-32156,-6311,-32154,-6319,-32153,-6327,-32151,-6335,-32149,-6344,-32148,-6352,-32146,-6360,-32144,-6368,-32143,-6377,-32141,-6385,-32140,-6393,-32138,-6401,-32136,-6409,-32135,-6418,-32133,-6426,-32131,-6434,-32130,-6442,-32128,-6451,-32126,-6459,-32125,-6467,-32123,-6475,-32121,-6483,-32120,-6492,-32118,-6500,-32116,-6508,-32115,-6516,-32113,-6524,-32111,-6533,-32110,-6541,-32108,-6549,-32106,-6557,-32105,-6565,-32103,-6574,-32101,-6582,-32100,-6590,-32098,-6598,-32096,-6607,-32095,-6615,-32093,-6623,-32091,-6631,-32090,-6639,-32088,-6648,-32086,-6656,-32085,-6664,-32083,-6672,-32081,-6680,-32079,-6689,-32078,-6697,-32076,-6705,-32074,-6713,-32073,-6721,-32071,-6730,-32069,-6738,-32067,-6746,-32066,-6754,-32064,-6762,-32062,-6771,-32060,-6779,-32059,-6787,-32057,-6795,-32055,-6803,-32054,-6812,-32052,-6820,-32050,-6828,-32048,-6836,-32047,-6844,-32045,-6852,-32043,-6861,-32041,-6869,-32040,-6877,-32038,-6885,-32036,-6893,-32034,-6902,-32033,-6910,-32031,-6918,-32029,-6926,-32027,-6934,-32025,-6943,-32024,-6951,-32022,-6959,-32020,-6967,-32018,-6975,-32017,-6983,-32015,-6992,-32013,-7000,-32011,-7008,-32009,-7016,-32008,-7024,-32006,-7033,-32004,-7041,-32002,-7049,-32000,-7057,-31999,-7065,-31997,-7073,-31995,-7082,-31993,-7090,-31991,-7098,-31990,-7106,-31988,-7114,-31986,-7123,-31984,-7131,-31982,-7139,-31980,-7147,-31979,-7155,-31977,-7163,-31975,-7172,-31973,-7180,-31971,-7188,-31969,-7196,-31968,-7204,-31966,-7212,-31964,-7221,-31962,-7229,-31960,-7237,-31958,-7245,-31957,-7253,-31955,-7262,-31953,-7270,-31951,-7278,-31949,-7286,-31947,-7294,-31945,-7302,-31944,-7311,-31942,-7319,-31940,-7327,-31938,-7335,-31936,-7343,-31934,-7351,-31932,-7359,-31930,-7368,-31929,-7376,-31927,-7384,-31925,-7392,-31923,-7400,-31921,-7408,-31919,-7417,-31917,-7425,-31915,-7433,-31913,-7441,-31912,-7449,-31910,-7457,-31908,-7466,-31906,-7474,-31904,-7482,-31902,-7490,-31900,-7498,-31898,-7506,-31896,-7515,-31894,-7523,-31892,-7531,-31890,-7539,-31889,-7547,-31887,-7555,-31885,-7563,-31883,-7572,-31881,-7580,-31879,-7588,-31877,-7596,-31875,-7604,-31873,-7612,-31871,-7620,-31869,-7629,-31867,-7637,-31865,-7645,-31863,-7653,-31861,-7661,-31859,-7669,-31857,-7677,-31855,-7686,-31854,-7694,-31852,-7702,-31850,-7710,-31848,-7718,-31846,-7726,-31844,-7734,-31842,-7743,-31840,-7751,-31838,-7759,-31836,-7767,-31834,-7775,-31832,-7783,-31830,-7791,-31828,-7800,-31826,-7808,-31824,-7816,-31822,-7824,-31820,-7832,-31818,-7840,-31816,-7848,-31814,-7857,-31812,-7865,-31810,-7873,-31808,-7881,-31806,-7889,-31804,-7897,-31802,-7905,-31800,-7913,-31798,-7922,-31796,-7930,-31794,-7938,-31792,-7946,-31790,-7954,-31788,-7962,-31786,-7970,-31783,-7978,-31781,-7987,-31779,-7995,-31777,-8003,-31775,-8011,-31773,-8019,-31771,-8027,-31769,-8035,-31767,-8043,-31765,-8052,-31763,-8060,-31761,-8068,-31759,-8076,-31757,-8084,-31755,-8092,-31753,-8100,-31751,-8108,-31749,-8117,-31746,-8125,-31744,-8133,-31742,-8141,-31740,-8149,-31738,-8157,-31736,-8165,-31734,-8173,-31732,-8181,-31730,-8190,-31728,-8198,-31726,-8206,-31724,-8214,-31721,-8222,-31719,-8230,-31717,-8238,-31715,-8246,-31713,-8254,-31711,-8263,-31709,-8271,-31707,-8279,-31705,-8287,-31702,-8295,-31700,-8303,-31698,-8311,-31696,-8319,-31694,-8327,-31692,-8335,-31690,-8344,-31688,-8352,-31685,-8360,-31683,-8368,-31681,-8376,-31679,-8384,-31677,-8392,-31675,-8400,-31673,-8408,-31670,-8416,-31668,-8425,-31666,-8433,-31664,-8441,-31662,-8449,-31660,-8457,-31657,-8465,-31655,-8473,-31653,-8481,-31651,-8489,-31649,-8497,-31647,-8505,-31644,-8514,-31642,-8522,-31640,-8530,-31638,-8538,-31636,-8546,-31634,-8554,-31631,-8562,-31629,-8570,-31627,-8578,-31625,-8586,-31623,-8594,-31620,-8603,-31618,-8611,-31616,-8619,-31614,-8627,-31612,-8635,-31609,-8643,-31607,-8651,-31605,-8659,-31603,-8667,-31601,-8675,-31598,-8683,-31596,-8691,-31594,-8700,-31592,-8708,-31589,-8716,-31587,-8724,-31585,-8732,-31583,-8740,-31581,-8748,-31578,-8756,-31576,-8764,-31574,-8772,-31572,-8780,-31569,-8788,-31567,-8796,-31565,-8804,-31563,-8813,-31560,-8821,-31558,-8829,-31556,-8837,-31554,-8845,-31551,-8853,-31549,-8861,-31547,-8869,-31545,-8877,-31542,-8885,-31540,-8893,-31538,-8901,-31535,-8909,-31533,-8917,-31531,-8925,-31529,-8933,-31526,-8942,-31524,-8950,-31522,-8958,-31519,-8966,-31517,-8974,-31515,-8982,-31513,-8990,-31510,-8998,-31508,-9006,-31506,-9014,-31503,-9022,-31501,-9030,-31499,-9038,-31496,-9046,-31494,-9054,-31492,-9062,-31490,-9070,-31487,-9078,-31485,-9087,-31483,-9095,-31480,-9103,-31478,-9111,-31476,-9119,-31473,-9127,-31471,-9135,-31469,-9143,-31466,-9151,-31464,-9159,-31462,-9167,-31459,-9175,-31457,-9183,-31455,-9191,-31452,-9199,-31450,-9207,-31447,-9215,-31445,-9223,-31443,-9231,-31440,-9239,-31438,-9247,-31436,-9255,-31433,-9263,-31431,-9271,-31429,-9280,-31426,-9288,-31424,-9296,-31421,-9304,-31419,-9312,-31417,-9320,-31414,-9328,-31412,-9336,-31410,-9344,-31407,-9352,-31405,-9360,-31402,-9368,-31400,-9376,-31398,-9384,-31395,-9392,-31393,-9400,-31390,-9408,-31388,-9416,-31386,-9424,-31383,-9432,-31381,-9440,-31378,-9448,-31376,-9456,-31374,-9464,-31371,-9472,-31369,-9480,-31366,-9488,-31364,-9496,-31361,-9504,-31359,-9512,-31357,-9520,-31354,-9528,-31352,-9536,-31349,-9544,-31347,-9552,-31344,-9560,-31342,-9568,-31339,-9576,-31337,-9584,-31335,-9592,-31332,-9600,-31330,-9608,-31327,-9616,-31325,-9624,-31322,-9632,-31320,-9640,-31317,-9648,-31315,-9656,-31312,-9664,-31310,-9672,-31308,-9680,-31305,-9688,-31303,-9696,-31300,-9704,-31298,-9712,-31295,-9720,-31293,-9728,-31290,-9736,-31288,-9744,-31285,-9752,-31283,-9760,-31280,-9768,-31278,-9776,-31275,-9784,-31273,-9792,-31270,-9800,-31268,-9808,-31265,-9816,-31263,-9824,-31260,-9832,-31258,-9840,-31255,-9848,-31253,-9856,-31250,-9864,-31248,-9872,-31245,-9880,-31243,-9888,-31240,-9896,-31237,-9904,-31235,-9912,-31232,-9920,-31230,-9928,-31227,-9936,-31225,-9944,-31222,-9952,-31220,-9960,-31217,-9968,-31215,-9976,-31212,-9984,-31210,-9992,-31207,-10000,-31204,-10008,-31202,-10016,-31199,-10024,-31197,-10032,-31194,-10040,-31192,-10048,-31189,-10056,-31186,-10064,-31184,-10072,-31181,-10080,-31179,-10088,-31176,-10096,-31174,-10104,-31171,-10112,-31168,-10120,-31166,-10128,-31163,-10136,-31161,-10144,-31158,-10152,-31155,-10160,-31153,-10167,-31150,-10175,-31148,-10183,-31145,-10191,-31142,-10199,-31140,-10207,-31137,-10215,-31135,-10223,-31132,-10231,-31129,-10239,-31127,-10247,-31124,-10255,-31122,-10263,-31119,-10271,-31116,-10279,-31114,-10287,-31111,-10295,-31108,-10303,-31106,-10311,-31103,-10319,-31101,-10327,-31098,-10335,-31095,-10343,-31093,-10350,-31090,-10358,-31087,-10366,-31085,-10374,-31082,-10382,-31079,-10390,-31077,-10398,-31074,-10406,-31071,-10414,-31069,-10422,-31066,-10430,-31063,-10438,-31061,-10446,-31058,-10454,-31055,-10462,-31053,-10470,-31050,-10478,-31047,-10485,-31045,-10493,-31042,-10501,-31039,-10509,-31037,-10517,-31034,-10525,-31031,-10533,-31029,-10541,-31026,-10549,-31023,-10557,-31020,-10565,-31018,-10573,-31015,-10581,-31012,-10589,-31010,-10597,-31007,-10604,-31004,-10612,-31002,-10620,-30999,-10628,-30996,-10636,-30993,-10644,-30991,-10652,-30988,-10660,-30985,-10668,-30982,-10676,-30980,-10684,-30977,-10692,-30974,-10700,-30972,-10707,-30969,-10715,-30966,-10723,-30963,-10731,-30961,-10739,-30958,-10747,-30955,-10755,-30952,-10763,-30950,-10771,-30947,-10779,-30944,-10787,-30941,-10795,-30939,-10802,-30936,-10810,-30933,-10818,-30930,-10826,-30928,-10834,-30925,-10842,-30922,-10850,-30919,-10858,-30916,-10866,-30914,-10874,-30911,-10881,-30908,-10889,-30905,-10897,-30903,-10905,-30900,-10913,-30897,-10921,-30894,-10929,-30891,-10937,-30889,-10945,-30886,-10953,-30883,-10960,-30880,-10968,-30877,-10976,-30875,-10984,-30872,-10992,-30869,-11000,-30866,-11008,-30863,-11016,-30861,-11024,-30858,-11031,-30855,-11039,-30852,-11047,-30849,-11055,-30846,-11063,-30844,-11071,-30841,-11079,-30838,-11087,-30835,-11095,-30832,-11102,-30829,-11110,-30827,-11118,-30824,-11126,-30821,-11134,-30818,-11142,-30815,-11150,-30812,-11158,-30810,-11165,-30807,-11173,-30804,-11181,-30801,-11189,-30798,-11197,-30795,-11205,-30792,-11213,-30789,-11221,-30787,-11228,-30784,-11236,-30781,-11244,-30778,-11252,-30775,-11260,-30772,-11268,-30769,-11276,-30767,-11284,-30764,-11291,-30761,-11299,-30758,-11307,-30755,-11315,-30752,-11323,-30749,-11331,-30746,-11339,-30743,-11346,-30740,-11354,-30738,-11362,-30735,-11370,-30732,-11378,-30729,-11386,-30726,-11394,-30723,-11401,-30720,-11409,-30717,-11417,-30714,-11425,-30711,-11433,-30708,-11441,-30706,-11449,-30703,-11456,-30700,-11464,-30697,-11472,-30694,-11480,-30691,-11488,-30688,-11496,-30685,-11503,-30682,-11511,-30679,-11519,-30676,-11527,-30673,-11535,-30670,-11543,-30667,-11551,-30664,-11558,-30661,-11566,-30658,-11574,-30656,-11582,-30653,-11590,-30650,-11598,-30647,-11605,-30644,-11613,-30641,-11621,-30638,-11629,-30635,-11637,-30632,-11645,-30629,-11652,-30626,-11660,-30623,-11668,-30620,-11676,-30617,-11684,-30614,-11692,-30611,-11699,-30608,-11707,-30605,-11715,-30602,-11723,-30599,-11731,-30596,-11738,-30593,-11746,-30590,-11754,-30587,-11762,-30584,-11770,-30581,-11778,-30578,-11785,-30575,-11793,-30572,-11801,-30569,-11809,-30566,-11817,-30563,-11824,-30560,-11832,-30557,-11840,-30554,-11848,-30551,-11856,-30548,-11863,-30545,-11871,-30542,-11879,-30539,-11887,-30536,-11895,-30533,-11903,-30529,-11910,-30526,-11918,-30523,-11926,-30520,-11934,-30517,-11942,-30514,-11949,-30511,-11957,-30508,-11965,-30505,-11973,-30502,-11981,-30499,-11988,-30496,-11996,-30493,-12004,-30490,-12012,-30487,-12020,-30484,-12027,-30481,-12035,-30477,-12043,-30474,-12051,-30471,-12058,-30468,-12066,-30465,-12074,-30462,-12082,-30459,-12090,-30456,-12097,-30453,-12105,-30450,-12113,-30447,-12121,-30443,-12129,-30440,-12136,-30437,-12144,-30434,-12152,-30431,-12160,-30428,-12167,-30425,-12175,-30422,-12183,-30419,-12191,-30416,-12199,-30412,-12206,-30409,-12214,-30406,-12222,-30403,-12230,-30400,-12237,-30397,-12245,-30394,-12253,-30391,-12261,-30387,-12269,-30384,-12276,-30381,-12284,-30378,-12292,-30375,-12300,-30372,-12307,-30369,-12315,-30365,-12323,-30362,-12331,-30359,-12338,-30356,-12346,-30353,-12354,-30350,-12362,-30346,-12369,-30343,-12377,-30340,-12385,-30337,-12393,-30334,-12400,-30331,-12408,-30327,-12416,-30324,-12424,-30321,-12431,-30318,-12439,-30315,-12447,-30312,-12455,-30308,-12462,-30305,-12470,-30302,-12478,-30299,-12486,-30296,-12493,-30292,-12501,-30289,-12509,-30286,-12517,-30283,-12524,-30280,-12532,-30276,-12540,-30273,-12548,-30270,-12555,-30267,-12563,-30264,-12571,-30260,-12579,-30257,-12586,-30254,-12594,-30251,-12602,-30248,-12610,-30244,-12617,-30241,-12625,-30238,-12633,-30235,-12640,-30231,-12648,-30228,-12656,-30225,-12664,-30222,-12671,-30218,-12679,-30215,-12687,-30212,-12695,-30209,-12702,-30206,-12710,-30202,-12718,-30199,-12725,-30196,-12733,-30192,-12741,-30189,-12749,-30186,-12756,-30183,-12764,-30179,-12772,-30176,-12779,-30173,-12787,-30170,-12795,-30166,-12803,-30163,-12810,-30160,-12818,-30157,-12826,-30153,-12833,-30150,-12841,-30147,-12849,-30143,-12857,-30140,-12864,-30137,-12872,-30134,-12880,-30130,-12887,-30127,-12895,-30124,-12903,-30120,-12910,-30117,-12918,-30114,-12926,-30110,-12934,-30107,-12941,-30104,-12949,-30101,-12957,-30097,-12964,-30094,-12972,-30091,-12980,-30087,-12987,-30084,-12995,-30081,-13003,-30077,-13010,-30074,-13018,-30071,-13026,-30067,-13034,-30064,-13041,-30061,-13049,-30057,-13057,-30054,-13064,-30051,-13072,-30047,-13080,-30044,-13087,-30041,-13095,-30037,-13103,-30034,-13110,-30031,-13118,-30027,-13126,-30024,-13133,-30021,-13141,-30017,-13149,-30014,-13156,-30010,-13164,-30007,-13172,-30004,-13179,-30000,-13187,-29997,-13195,-29994,-13202,-29990,-13210,-29987,-13218,-29984,-13225,-29980,-13233,-29977,-13241,-29973,-13248,-29970,-13256,-29967,-13264,-29963,-13271,-29960,-13279,-29956,-13287,-29953,-13294,-29950,-13302,-29946,-13310,-29943,-13317,-29939,-13325,-29936,-13333,-29933,-13340,-29929,-13348,-29926,-13356,-29922,-13363,-29919,-13371,-29916,-13379,-29912,-13386,-29909,-13394,-29905,-13401,-29902,-13409,-29898,-13417,-29895,-13424,-29892,-13432,-29888,-13440,-29885,-13447,-29881,-13455,-29878,-13463,-29874,-13470,-29871,-13478,-29867,-13486,-29864,-13493,-29861,-13501,-29857,-13508,-29854,-13516,-29850,-13524,-29847,-13531,-29843,-13539,-29840,-13547,-29836,-13554,-29833,-13562,-29829,-13569,-29826,-13577,-29823,-13585,-29819,-13592,-29816,-13600,-29812,-13608,-29809,-13615,-29805,-13623,-29802,-13630,-29798,-13638,-29795,-13646,-29791,-13653,-29788,-13661,-29784,-13668,-29781,-13676,-29777,-13684,-29774,-13691,-29770,-13699,-29767,-13707,-29763,-13714,-29760,-13722,-29756,-13729,-29753,-13737,-29749,-13745,-29746,-13752,-29742,-13760,-29739,-13767,-29735,-13775,-29732,-13783,-29728,-13790,-29725,-13798,-29721,-13805,-29718,-13813,-29714,-13821,-29710,-13828,-29707,-13836,-29703,-13843,-29700,-13851,-29696,-13859,-29693,-13866,-29689,-13874,-29686,-13881,-29682,-13889,-29679,-13896,-29675,-13904,-29671,-13912,-29668,-13919,-29664,-13927,-29661,-13934,-29657,-13942,-29654,-13950,-29650,-13957,-29647,-13965,-29643,-13972,-29639,-13980,-29636,-13987,-29632,-13995,-29629,-14003,-29625,-14010,-29622,-14018,-29618,-14025,-29614,-14033,-29611,-14040,-29607,-14048,-29604,-14056,-29600,-14063,-29596,-14071,-29593,-14078,-29589,-14086,-29586,-14093,-29582,-14101,-29578,-14109,-29575,-14116,-29571,-14124,-29568,-14131,-29564,-14139,-29560,-14146,-29557,-14154,-29553,-14161,-29549,-14169,-29546,-14177,-29542,-14184,-29539,-14192,-29535,-14199,-29531,-14207,-29528,-14214,-29524,-14222,-29520,-14229,-29517,-14237,-29513,-14245,-29510,-14252,-29506,-14260,-29502,-14267,-29499,-14275,-29495,-14282,-29491,-14290,-29488,-14297,-29484,-14305,-29480,-14312,-29477,-14320,-29473,-14327,-29469,-14335,-29466,-14343,-29462,-14350,-29458,-14358,-29455,-14365,-29451,-14373,-29447,-14380,-29444,-14388,-29440,-14395,-29436,-14403,-29433,-14410,-29429,-14418,-29425,-14425,-29422,-14433,-29418,-14440,-29414,-14448,-29411,-14455,-29407,-14463,-29403,-14470,-29399,-14478,-29396,-14485,-29392,-14493,-29388,-14500,-29385,-14508,-29381,-14516,-29377,-14523,-29373,-14531,-29370,-14538,-29366,-14546,-29362,-14553,-29359,-14561,-29355,-14568,-29351,-14576,-29347,-14583,-29344,-14591,-29340,-14598,-29336,-14606,-29333,-14613,-29329,-14621,-29325,-14628,-29321,-14636,-29318,-14643,-29314,-14651,-29310,-14658,-29306,-14666,-29303,-14673,-29299,-14681,-29295,-14688,-29291,-14695,-29288,-14703,-29284,-14710,-29280,-14718,-29276,-14725,-29273,-14733,-29269,-14740,-29265,-14748,-29261,-14755,-29257,-14763,-29254,-14770,-29250,-14778,-29246,-14785,-29242,-14793,-29239,-14800,-29235,-14808,-29231,-14815,-29227,-14823,-29223,-14830,-29220,-14838,-29216,-14845,-29212,-14853,-29208,-14860,-29204,-14867,-29201,-14875,-29197,-14882,-29193,-14890,-29189,-14897,-29185,-14905,-29182,-14912,-29178,-14920,-29174,-14927,-29170,-14935,-29166,-14942,-29163,-14950,-29159,-14957,-29155,-14964,-29151,-14972,-29147,-14979,-29143,-14987,-29140,-14994,-29136,-15002,-29132,-15009,-29128,-15017,-29124,-15024,-29120,-15031,-29117,-15039,-29113,-15046,-29109,-15054,-29105,-15061,-29101,-15069,-29097,-15076,-29093,-15084,-29090,-15091,-29086,-15098,-29082,-15106,-29078,-15113,-29074,-15121,-29070,-15128,-29066,-15136,-29063,-15143,-29059,-15150,-29055,-15158,-29051,-15165,-29047,-15173,-29043,-15180,-29039,-15188,-29035,-15195,-29032,-15202,-29028,-15210,-29024,-15217,-29020,-15225,-29016,-15232,-29012,-15239,-29008,-15247,-29004,-15254,-29000,-15262,-28997,-15269,-28993,-15277,-28989,-15284,-28985,-15291,-28981,-15299,-28977,-15306,-28973,-15314,-28969,-15321,-28965,-15328,-28961,-15336,-28957,-15343,-28954,-15351,-28950,-15358,-28946,-15365,-28942,-15373,-28938,-15380,-28934,-15388,-28930,-15395,-28926,-15402,-28922,-15410,-28918,-15417,-28914,-15425,-28910,-15432,-28906,-15439,-28902,-15447,-28898,-15454,-28894,-15462,-28891,-15469,-28887,-15476,-28883,-15484,-28879,-15491,-28875,-15498,-28871,-15506,-28867,-15513,-28863,-15521,-28859,-15528,-28855,-15535,-28851,-15543,-28847,-15550,-28843,-15557,-28839,-15565,-28835,-15572,-28831,-15580,-28827,-15587,-28823,-15594,-28819,-15602,-28815,-15609,-28811,-15616,-28807,-15624,-28803,-15631,-28799,-15639,-28795,-15646,-28791,-15653,-28787,-15661,-28783,-15668,-28779,-15675,-28775,-15683,-28771,-15690,-28767,-15697,-28763,-15705,-28759,-15712,-28755,-15719,-28751,-15727,-28747,-15734,-28743,-15741,-28739,-15749,-28735,-15756,-28731,-15764,-28727,-15771,-28723,-15778,-28719,-15786,-28715,-15793,-28711,-15800,-28707,-15808,-28703,-15815,-28699,-15822,-28695,-15830,-28691,-15837,-28686,-15844,-28682,-15852,-28678,-15859,-28674,-15866,-28670,-15874,-28666,-15881,-28662,-15888,-28658,-15896,-28654,-15903,-28650,-15910,-28646,-15918,-28642,-15925,-28638,-15932,-28634,-15939,-28630,-15947,-28626,-15954,-28621,-15961,-28617,-15969,-28613,-15976,-28609,-15983,-28605,-15991,-28601,-15998,-28597,-16005,-28593,-16013,-28589,-16020,-28585,-16027,-28581,-16035,-28576,-16042,-28572,-16049,-28568,-16056,-28564,-16064,-28560,-16071,-28556,-16078,-28552,-16086,-28548,-16093,-28544,-16100,-28539,-16108,-28535,-16115,-28531,-16122,-28527,-16129,-28523,-16137,-28519,-16144,-28515,-16151,-28511,-16159,-28507,-16166,-28502,-16173,-28498,-16180,-28494,-16188,-28490,-16195,-28486,-16202,-28482,-16210,-28478,-16217,-28473,-16224,-28469,-16231,-28465,-16239,-28461,-16246,-28457,-16253,-28453,-16261,-28448,-16268,-28444,-16275,-28440,-16282,-28436,-16290,-28432,-16297,-28428,-16304,-28424,-16311,-28419,-16319,-28415,-16326,-28411,-16333,-28407,-16340,-28403,-16348,-28398,-16355,-28394,-16362,-28390,-16369,-28386,-16377,-28382};
-
-int16_t twb24576[16384] __attribute__((aligned(32))) = {32767,0,32766,-17,32766,-34,32766,-51,32766,-68,32766,-84,32766,-101,32766,-118,32766,-135,32766,-151,32766,-168,32766,-185,32766,-202,32766,-218,32766,-235,32766,-252,32765,-269,32765,-285,32765,-302,32765,-319,32765,-336,32765,-352,32764,-369,32764,-386,32764,-403,32764,-419,32764,-436,32763,-453,32763,-470,32763,-486,32763,-503,32762,-520,32762,-537,32762,-553,32762,-570,32761,-587,32761,-604,32761,-620,32760,-637,32760,-654,32760,-671,32759,-687,32759,-704,32759,-721,32758,-738,32758,-754,32757,-771,32757,-788,32757,-805,32756,-821,32756,-838,32755,-855,32755,-872,32754,-888,32754,-905,32754,-922,32753,-939,32753,-955,32752,-972,32752,-989,32751,-1006,32751,-1022,32750,-1039,32750,-1056,32749,-1073,32748,-1089,32748,-1106,32747,-1123,32747,-1140,32746,-1156,32746,-1173,32745,-1190,32744,-1207,32744,-1223,32743,-1240,32742,-1257,32742,-1274,32741,-1290,32740,-1307,32740,-1324,32739,-1340,32738,-1357,32738,-1374,32737,-1391,32736,-1407,32736,-1424,32735,-1441,32734,-1458,32733,-1474,32733,-1491,32732,-1508,32731,-1525,32730,-1541,32729,-1558,32729,-1575,32728,-1592,32727,-1608,32726,-1625,32725,-1642,32725,-1659,32724,-1675,32723,-1692,32722,-1709,32721,-1725,32720,-1742,32719,-1759,32718,-1776,32717,-1792,32717,-1809,32716,-1826,32715,-1843,32714,-1859,32713,-1876,32712,-1893,32711,-1909,32710,-1926,32709,-1943,32708,-1960,32707,-1976,32706,-1993,32705,-2010,32704,-2027,32703,-2043,32702,-2060,32701,-2077,32700,-2093,32699,-2110,32697,-2127,32696,-2144,32695,-2160,32694,-2177,32693,-2194,32692,-2210,32691,-2227,32690,-2244,32688,-2261,32687,-2277,32686,-2294,32685,-2311,32684,-2327,32683,-2344,32681,-2361,32680,-2378,32679,-2394,32678,-2411,32676,-2428,32675,-2444,32674,-2461,32673,-2478,32671,-2495,32670,-2511,32669,-2528,32668,-2545,32666,-2561,32665,-2578,32664,-2595,32662,-2611,32661,-2628,32660,-2645,32658,-2662,32657,-2678,32656,-2695,32654,-2712,32653,-2728,32651,-2745,32650,-2762,32649,-2778,32647,-2795,32646,-2812,32644,-2829,32643,-2845,32641,-2862,32640,-2879,32638,-2895,32637,-2912,32635,-2929,32634,-2945,32632,-2962,32631,-2979,32629,-2995,32628,-3012,32626,-3029,32625,-3045,32623,-3062,32622,-3079,32620,-3095,32618,-3112,32617,-3129,32615,-3146,32614,-3162,32612,-3179,32610,-3196,32609,-3212,32607,-3229,32605,-3246,32604,-3262,32602,-3279,32600,-3296,32599,-3312,32597,-3329,32595,-3346,32594,-3362,32592,-3379,32590,-3396,32588,-3412,32587,-3429,32585,-3446,32583,-3462,32581,-3479,32580,-3496,32578,-3512,32576,-3529,32574,-3546,32572,-3562,32571,-3579,32569,-3595,32567,-3612,32565,-3629,32563,-3645,32561,-3662,32559,-3679,32558,-3695,32556,-3712,32554,-3729,32552,-3745,32550,-3762,32548,-3779,32546,-3795,32544,-3812,32542,-3829,32540,-3845,32538,-3862,32536,-3878,32534,-3895,32532,-3912,32530,-3928,32528,-3945,32526,-3962,32524,-3978,32522,-3995,32520,-4012,32518,-4028,32516,-4045,32514,-4061,32512,-4078,32510,-4095,32508,-4111,32506,-4128,32503,-4145,32501,-4161,32499,-4178,32497,-4194,32495,-4211,32493,-4228,32491,-4244,32488,-4261,32486,-4277,32484,-4294,32482,-4311,32480,-4327,32477,-4344,32475,-4360,32473,-4377,32471,-4394,32468,-4410,32466,-4427,32464,-4444,32462,-4460,32459,-4477,32457,-4493,32455,-4510,32452,-4526,32450,-4543,32448,-4560,32445,-4576,32443,-4593,32441,-4609,32438,-4626,32436,-4643,32434,-4659,32431,-4676,32429,-4692,32426,-4709,32424,-4726,32422,-4742,32419,-4759,32417,-4775,32414,-4792,32412,-4808,32409,-4825,32407,-4842,32404,-4858,32402,-4875,32399,-4891,32397,-4908,32394,-4924,32392,-4941,32389,-4958,32387,-4974,32384,-4991,32382,-5007,32379,-5024,32377,-5040,32374,-5057,32371,-5073,32369,-5090,32366,-5107,32364,-5123,32361,-5140,32358,-5156,32356,-5173,32353,-5189,32350,-5206,32348,-5222,32345,-5239,32342,-5255,32340,-5272,32337,-5288,32334,-5305,32332,-5322,32329,-5338,32326,-5355,32323,-5371,32321,-5388,32318,-5404,32315,-5421,32312,-5437,32310,-5454,32307,-5470,32304,-5487,32301,-5503,32298,-5520,32295,-5536,32293,-5553,32290,-5569,32287,-5586,32284,-5602,32281,-5619,32278,-5635,32275,-5652,32273,-5668,32270,-5685,32267,-5701,32264,-5718,32261,-5734,32258,-5751,32255,-5767,32252,-5784,32249,-5800,32246,-5817,32243,-5833,32240,-5850,32237,-5866,32234,-5883,32231,-5899,32228,-5916,32225,-5932,32222,-5949,32219,-5965,32216,-5982,32213,-5998,32210,-6015,32207,-6031,32204,-6048,32201,-6064,32197,-6081,32194,-6097,32191,-6113,32188,-6130,32185,-6146,32182,-6163,32179,-6179,32176,-6196,32172,-6212,32169,-6229,32166,-6245,32163,-6262,32160,-6278,32156,-6294,32153,-6311,32150,-6327,32147,-6344,32143,-6360,32140,-6377,32137,-6393,32134,-6409,32130,-6426,32127,-6442,32124,-6459,32120,-6475,32117,-6492,32114,-6508,32110,-6524,32107,-6541,32104,-6557,32100,-6574,32097,-6590,32094,-6607,32090,-6623,32087,-6639,32084,-6656,32080,-6672,32077,-6689,32073,-6705,32070,-6721,32066,-6738,32063,-6754,32059,-6771,32056,-6787,32053,-6803,32049,-6820,32046,-6836,32042,-6852,32039,-6869,32035,-6885,32032,-6902,32028,-6918,32024,-6934,32021,-6951,32017,-6967,32014,-6983,32010,-7000,32007,-7016,32003,-7033,31999,-7049,31996,-7065,31992,-7082,31989,-7098,31985,-7114,31981,-7131,31978,-7147,31974,-7163,31970,-7180,31967,-7196,31963,-7212,31959,-7229,31956,-7245,31952,-7262,31948,-7278,31944,-7294,31941,-7311,31937,-7327,31933,-7343,31929,-7359,31926,-7376,31922,-7392,31918,-7408,31914,-7425,31911,-7441,31907,-7457,31903,-7474,31899,-7490,31895,-7506,31891,-7523,31888,-7539,31884,-7555,31880,-7572,31876,-7588,31872,-7604,31868,-7620,31864,-7637,31860,-7653,31856,-7669,31853,-7686,31849,-7702,31845,-7718,31841,-7734,31837,-7751,31833,-7767,31829,-7783,31825,-7800,31821,-7816,31817,-7832,31813,-7848,31809,-7865,31805,-7881,31801,-7897,31797,-7913,31793,-7930,31789,-7946,31785,-7962,31780,-7978,31776,-7995,31772,-8011,31768,-8027,31764,-8043,31760,-8060,31756,-8076,31752,-8092,31748,-8108,31743,-8125,31739,-8141,31735,-8157,31731,-8173,31727,-8190,31723,-8206,31718,-8222,31714,-8238,31710,-8254,31706,-8271,31701,-8287,31697,-8303,31693,-8319,31689,-8335,31684,-8352,31680,-8368,31676,-8384,31672,-8400,31667,-8416,31663,-8433,31659,-8449,31654,-8465,31650,-8481,31646,-8497,31641,-8514,31637,-8530,31633,-8546,31628,-8562,31624,-8578,31619,-8594,31615,-8611,31611,-8627,31606,-8643,31602,-8659,31597,-8675,31593,-8691,31588,-8708,31584,-8724,31580,-8740,31575,-8756,31571,-8772,31566,-8788,31562,-8804,31557,-8821,31553,-8837,31548,-8853,31544,-8869,31539,-8885,31534,-8901,31530,-8917,31525,-8933,31521,-8950,31516,-8966,31512,-8982,31507,-8998,31502,-9014,31498,-9030,31493,-9046,31489,-9062,31484,-9078,31479,-9095,31475,-9111,31470,-9127,31465,-9143,31461,-9159,31456,-9175,31451,-9191,31446,-9207,31442,-9223,31437,-9239,31432,-9255,31428,-9271,31423,-9288,31418,-9304,31413,-9320,31409,-9336,31404,-9352,31399,-9368,31394,-9384,31389,-9400,31385,-9416,31380,-9432,31375,-9448,31370,-9464,31365,-9480,31360,-9496,31356,-9512,31351,-9528,31346,-9544,31341,-9560,31336,-9576,31331,-9592,31326,-9608,31321,-9624,31316,-9640,31311,-9656,31307,-9672,31302,-9688,31297,-9704,31292,-9720,31287,-9736,31282,-9752,31277,-9768,31272,-9784,31267,-9800,31262,-9816,31257,-9832,31252,-9848,31247,-9864,31242,-9880,31236,-9896,31231,-9912,31226,-9928,31221,-9944,31216,-9960,31211,-9976,31206,-9992,31201,-10008,31196,-10024,31191,-10040,31185,-10056,31180,-10072,31175,-10088,31170,-10104,31165,-10120,31160,-10136,31154,-10152,31149,-10167,31144,-10183,31139,-10199,31134,-10215,31128,-10231,31123,-10247,31118,-10263,31113,-10279,31107,-10295,31102,-10311,31097,-10327,31092,-10343,31086,-10358,31081,-10374,31076,-10390,31070,-10406,31065,-10422,31060,-10438,31054,-10454,31049,-10470,31044,-10485,31038,-10501,31033,-10517,31028,-10533,31022,-10549,31017,-10565,31011,-10581,31006,-10597,31001,-10612,30995,-10628,30990,-10644,30984,-10660,30979,-10676,30973,-10692,30968,-10707,30962,-10723,30957,-10739,30951,-10755,30946,-10771,30940,-10787,30935,-10802,30929,-10818,30924,-10834,30918,-10850,30913,-10866,30907,-10881,30902,-10897,30896,-10913,30890,-10929,30885,-10945,30879,-10960,30874,-10976,30868,-10992,30862,-11008,30857,-11024,30851,-11039,30845,-11055,30840,-11071,30834,-11087,30828,-11102,30823,-11118,30817,-11134,30811,-11150,30806,-11165,30800,-11181,30794,-11197,30788,-11213,30783,-11228,30777,-11244,30771,-11260,30766,-11276,30760,-11291,30754,-11307,30748,-11323,30742,-11339,30737,-11354,30731,-11370,30725,-11386,30719,-11401,30713,-11417,30707,-11433,30702,-11449,30696,-11464,30690,-11480,30684,-11496,30678,-11511,30672,-11527,30666,-11543,30660,-11558,30655,-11574,30649,-11590,30643,-11605,30637,-11621,30631,-11637,30625,-11652,30619,-11668,30613,-11684,30607,-11699,30601,-11715,30595,-11731,30589,-11746,30583,-11762,30577,-11778,30571,-11793,30565,-11809,30559,-11824,30553,-11840,30547,-11856,30541,-11871,30535,-11887,30528,-11903,30522,-11918,30516,-11934,30510,-11949,30504,-11965,30498,-11981,30492,-11996,30486,-12012,30480,-12027,30473,-12043,30467,-12058,30461,-12074,30455,-12090,30449,-12105,30442,-12121,30436,-12136,30430,-12152,30424,-12167,30418,-12183,30411,-12199,30405,-12214,30399,-12230,30393,-12245,30386,-12261,30380,-12276,30374,-12292,30368,-12307,30361,-12323,30355,-12338,30349,-12354,30342,-12369,30336,-12385,30330,-12400,30323,-12416,30317,-12431,30311,-12447,30304,-12462,30298,-12478,30291,-12493,30285,-12509,30279,-12524,30272,-12540,30266,-12555,30259,-12571,30253,-12586,30247,-12602,30240,-12617,30234,-12633,30227,-12648,30221,-12664,30214,-12679,30208,-12695,30201,-12710,30195,-12725,30188,-12741,30182,-12756,30175,-12772,30169,-12787,30162,-12803,30156,-12818,30149,-12833,30142,-12849,30136,-12864,30129,-12880,30123,-12895,30116,-12910,30109,-12926,30103,-12941,30096,-12957,30090,-12972,30083,-12987,30076,-13003,30070,-13018,30063,-13034,30056,-13049,30050,-13064,30043,-13080,30036,-13095,30030,-13110,30023,-13126,30016,-13141,30009,-13156,30003,-13172,29996,-13187,29989,-13202,29983,-13218,29976,-13233,29969,-13248,29962,-13264,29955,-13279,29949,-13294,29942,-13310,29935,-13325,29928,-13340,29921,-13356,29915,-13371,29908,-13386,29901,-13401,29894,-13417,29887,-13432,29880,-13447,29873,-13463,29866,-13478,29860,-13493,29853,-13508,29846,-13524,29839,-13539,29832,-13554,29825,-13569,29818,-13585,29811,-13600,29804,-13615,29797,-13630,29790,-13646,29783,-13661,29776,-13676,29769,-13691,29762,-13707,29755,-13722,29748,-13737,29741,-13752,29734,-13767,29727,-13783,29720,-13798,29713,-13813,29706,-13828,29699,-13843,29692,-13859,29685,-13874,29678,-13889,29670,-13904,29663,-13919,29656,-13934,29649,-13950,29642,-13965,29635,-13980,29628,-13995,29621,-14010,29613,-14025,29606,-14040,29599,-14056,29592,-14071,29585,-14086,29577,-14101,29570,-14116,29563,-14131,29556,-14146,29548,-14161,29541,-14177,29534,-14192,29527,-14207,29519,-14222,29512,-14237,29505,-14252,29498,-14267,29490,-14282,29483,-14297,29476,-14312,29468,-14327,29461,-14343,29454,-14358,29446,-14373,29439,-14388,29432,-14403,29424,-14418,29417,-14433,29410,-14448,29402,-14463,29395,-14478,29387,-14493,29380,-14508,29372,-14523,29365,-14538,29358,-14553,29350,-14568,29343,-14583,29335,-14598,29328,-14613,29320,-14628,29313,-14643,29305,-14658,29298,-14673,29290,-14688,29283,-14703,29275,-14718,29268,-14733,29260,-14748,29253,-14763,29245,-14778,29238,-14793,29230,-14808,29222,-14823,29215,-14838,29207,-14853,29200,-14867,29192,-14882,29184,-14897,29177,-14912,29169,-14927,29162,-14942,29154,-14957,29146,-14972,29139,-14987,29131,-15002,29123,-15017,29116,-15031,29108,-15046,29100,-15061,29092,-15076,29085,-15091,29077,-15106,29069,-15121,29062,-15136,29054,-15150,29046,-15165,29038,-15180,29031,-15195,29023,-15210,29015,-15225,29007,-15239,28999,-15254,28992,-15269,28984,-15284,28976,-15299,28968,-15314,28960,-15328,28953,-15343,28945,-15358,28937,-15373,28929,-15388,28921,-15402,28913,-15417,28905,-15432,28897,-15447,28890,-15462,28882,-15476,28874,-15491,28866,-15506,28858,-15521,28850,-15535,28842,-15550,28834,-15565,28826,-15580,28818,-15594,28810,-15609,28802,-15624,28794,-15639,28786,-15653,28778,-15668,28770,-15683,28762,-15697,28754,-15712,28746,-15727,28738,-15741,28730,-15756,28722,-15771,28714,-15786,28706,-15800,28698,-15815,28690,-15830,28681,-15844,28673,-15859,28665,-15874,28657,-15888,28649,-15903,28641,-15918,28633,-15932,28625,-15947,28616,-15961,28608,-15976,28600,-15991,28592,-16005,28584,-16020,28575,-16035,28567,-16049,28559,-16064,28551,-16078,28543,-16093,28534,-16108,28526,-16122,28518,-16137,28510,-16151,28501,-16166,28493,-16180,28485,-16195,28477,-16210,28468,-16224,28460,-16239,28452,-16253,28443,-16268,28435,-16282,28427,-16297,28418,-16311,28410,-16326,28402,-16340,28393,-16355,28385,-16369,28377,-16384,28368,-16399,28360,-16413,28351,-16428,28343,-16442,28335,-16456,28326,-16471,28318,-16485,28309,-16500,28301,-16514,28292,-16529,28284,-16543,28275,-16558,28267,-16572,28259,-16587,28250,-16601,28242,-16616,28233,-16630,28225,-16644,28216,-16659,28208,-16673,28199,-16688,28190,-16702,28182,-16717,28173,-16731,28165,-16745,28156,-16760,28148,-16774,28139,-16789,28131,-16803,28122,-16817,28113,-16832,28105,-16846,28096,-16860,28087,-16875,28079,-16889,28070,-16904,28062,-16918,28053,-16932,28044,-16947,28036,-16961,28027,-16975,28018,-16990,28009,-17004,28001,-17018,27992,-17033,27983,-17047,27975,-17061,27966,-17075,27957,-17090,27948,-17104,27940,-17118,27931,-17133,27922,-17147,27913,-17161,27905,-17175,27896,-17190,27887,-17204,27878,-17218,27869,-17233,27861,-17247,27852,-17261,27843,-17275,27834,-17289,27825,-17304,27816,-17318,27808,-17332,27799,-17346,27790,-17361,27781,-17375,27772,-17389,27763,-17403,27754,-17417,27745,-17432,27736,-17446,27728,-17460,27719,-17474,27710,-17488,27701,-17502,27692,-17517,27683,-17531,27674,-17545,27665,-17559,27656,-17573,27647,-17587,27638,-17601,27629,-17616,27620,-17630,27611,-17644,27602,-17658,27593,-17672,27584,-17686,27575,-17700,27566,-17714,27557,-17728,27548,-17743,27538,-17757,27529,-17771,27520,-17785,27511,-17799,27502,-17813,27493,-17827,27484,-17841,27475,-17855,27466,-17869,27456,-17883,27447,-17897,27438,-17911,27429,-17925,27420,-17939,27411,-17953,27401,-17967,27392,-17981,27383,-17995,27374,-18009,27365,-18023,27355,-18037,27346,-18051,27337,-18065,27328,-18079,27319,-18093,27309,-18107,27300,-18121,27291,-18135,27281,-18149,27272,-18163,27263,-18177,27254,-18191,27244,-18205,27235,-18219,27226,-18233,27216,-18247,27207,-18261,27198,-18274,27188,-18288,27179,-18302,27170,-18316,27160,-18330,27151,-18344,27141,-18358,27132,-18372,27123,-18386,27113,-18399,27104,-18413,27094,-18427,27085,-18441,27076,-18455,27066,-18469,27057,-18483,27047,-18496,27038,-18510,27028,-18524,27019,-18538,27009,-18552,27000,-18565,26990,-18579,26981,-18593,26971,-18607,26962,-18621,26952,-18634,26943,-18648,26933,-18662,26924,-18676,26914,-18690,26905,-18703,26895,-18717,26885,-18731,26876,-18745,26866,-18758,26857,-18772,26847,-18786,26837,-18799,26828,-18813,26818,-18827,26809,-18841,26799,-18854,26789,-18868,26780,-18882,26770,-18895,26760,-18909,26751,-18923,26741,-18936,26731,-18950,26722,-18964,26712,-18977,26702,-18991,26692,-19005,26683,-19018,26673,-19032,26663,-19046,26654,-19059,26644,-19073,26634,-19087,26624,-19100,26615,-19114,26605,-19127,26595,-19141,26585,-19155,26575,-19168,26566,-19182,26556,-19195,26546,-19209,26536,-19222,26526,-19236,26516,-19250,26507,-19263,26497,-19277,26487,-19290,26477,-19304,26467,-19317,26457,-19331,26447,-19344,26437,-19358,26428,-19371,26418,-19385,26408,-19398,26398,-19412,26388,-19425,26378,-19439,26368,-19452,26358,-19466,26348,-19479,26338,-19493,26328,-19506,26318,-19520,26308,-19533,26298,-19547,26288,-19560,26278,-19574,26268,-19587,26258,-19600,26248,-19614,26238,-19627,26228,-19641,26218,-19654,26208,-19668,26198,-19681,26188,-19694,26178,-19708,26168,-19721,26158,-19734,26148,-19748,26137,-19761,26127,-19775,26117,-19788,26107,-19801,26097,-19815,26087,-19828,26077,-19841,26067,-19855,26056,-19868,26046,-19881,26036,-19895,26026,-19908,26016,-19921,26006,-19934,25995,-19948,25985,-19961,25975,-19974,25965,-19988,25954,-20001,25944,-20014,25934,-20027,25924,-20041,25913,-20054,25903,-20067,25893,-20080,25883,-20094,25872,-20107,25862,-20120,25852,-20133,25842,-20147,25831,-20160,25821,-20173,25811,-20186,25800,-20199,25790,-20213,25780,-20226,25769,-20239,25759,-20252,25749,-20265,25738,-20278,25728,-20292,25717,-20305,25707,-20318,25697,-20331,25686,-20344,25676,-20357,25665,-20370,25655,-20384,25645,-20397,25634,-20410,25624,-20423,25613,-20436,25603,-20449,25592,-20462,25582,-20475,25571,-20488,25561,-20501,25550,-20514,25540,-20528,25529,-20541,25519,-20554,25508,-20567,25498,-20580,25487,-20593,25477,-20606,25466,-20619,25456,-20632,25445,-20645,25435,-20658,25424,-20671,25414,-20684,25403,-20697,25392,-20710,25382,-20723,25371,-20736,25361,-20749,25350,-20762,25339,-20775,25329,-20788,25318,-20801,25307,-20814,25297,-20826,25286,-20839,25276,-20852,25265,-20865,25254,-20878,25243,-20891,25233,-20904,25222,-20917,25211,-20930,25201,-20943,25190,-20956,25179,-20968,25169,-20981,25158,-20994,25147,-21007,25136,-21020,25126,-21033,25115,-21046,25104,-21058,25093,-21071,25083,-21084,25072,-21097,25061,-21110,25050,-21123,25039,-21135,25029,-21148,25018,-21161,25007,-21174,24996,-21187,24985,-21199,24974,-21212,24964,-21225,24953,-21238,24942,-21250,24931,-21263,24920,-21276,24909,-21289,24898,-21301,24887,-21314,24877,-21327,24866,-21340,24855,-21352,24844,-21365,24833,-21378,24822,-21390,24811,-21403,24800,-21416,24789,-21428,24778,-21441,24767,-21454,24756,-21466,24745,-21479,24734,-21492,24723,-21504,24712,-21517,24701,-21530,24690,-21542,24679,-21555,24668,-21567,24657,-21580,24646,-21593,24635,-21605,24624,-21618,24613,-21630,24602,-21643,24591,-21656,24580,-21668,24569,-21681,24558,-21693,24546,-21706,24535,-21718,24524,-21731,24513,-21744,24502,-21756,24491,-21769,24480,-21781,24469,-21794,24457,-21806,24446,-21819,24435,-21831,24424,-21844,24413,-21856,24402,-21869,24390,-21881,24379,-21894,24368,-21906,24357,-21918,24346,-21931,24334,-21943,24323,-21956,24312,-21968,24301,-21981,24289,-21993,24278,-22005,24267,-22018,24256,-22030,24244,-22043,24233,-22055,24222,-22067,24211,-22080,24199,-22092,24188,-22105,24177,-22117,24165,-22129,24154,-22142,24143,-22154,24131,-22166,24120,-22179,24109,-22191,24097,-22203,24086,-22216,24075,-22228,24063,-22240,24052,-22253,24041,-22265,24029,-22277,24018,-22289,24006,-22302,23995,-22314,23984,-22326,23972,-22339,23961,-22351,23949,-22363,23938,-22375,23926,-22388,23915,-22400,23903,-22412,23892,-22424,23881,-22436,23869,-22449,23858,-22461,23846,-22473,23835,-22485,23823,-22497,23812,-22510,23800,-22522,23789,-22534,23777,-22546,23766,-22558,23754,-22570,23742,-22583,23731,-22595,23719,-22607,23708,-22619,23696,-22631,23685,-22643,23673,-22655,23661,-22667,23650,-22679,23638,-22692,23627,-22704,23615,-22716,23603,-22728,23592,-22740,23580,-22752,23569,-22764,23557,-22776,23545,-22788,23534,-22800,23522,-22812,23510,-22824,23499,-22836,23487,-22848,23475,-22860,23464,-22872,23452,-22884,23440,-22896,23428,-22908,23417,-22920,23405,-22932,23393,-22944,23382,-22956,23370,-22968,23358,-22980,23346,-22992,23335,-23004,23323,-23016,23311,-23028,23299,-23040,23287,-23051,23276,-23063,23264,-23075,23252,-23087,23240,-23099,23228,-23111,23217,-23123,23205,-23135,23193,-23147,23181,-23158,23169,-23170,23157,-23182,23146,-23194,23134,-23206,23122,-23218,23110,-23229,23098,-23241,23086,-23253,23074,-23265,23062,-23277,23050,-23288,23039,-23300,23027,-23312,23015,-23324,23003,-23336,22991,-23347,22979,-23359,22967,-23371,22955,-23383,22943,-23394,22931,-23406,22919,-23418,22907,-23429,22895,-23441,22883,-23453,22871,-23465,22859,-23476,22847,-23488,22835,-23500,22823,-23511,22811,-23523,22799,-23535,22787,-23546,22775,-23558,22763,-23570,22751,-23581,22739,-23593,22727,-23604,22715,-23616,22703,-23628,22691,-23639,22678,-23651,22666,-23662,22654,-23674,22642,-23686,22630,-23697,22618,-23709,22606,-23720,22594,-23732,22582,-23743,22569,-23755,22557,-23767,22545,-23778,22533,-23790,22521,-23801,22509,-23813,22496,-23824,22484,-23836,22472,-23847,22460,-23859,22448,-23870,22435,-23882,22423,-23893,22411,-23904,22399,-23916,22387,-23927,22374,-23939,22362,-23950,22350,-23962,22338,-23973,22325,-23985,22313,-23996,22301,-24007,22288,-24019,22276,-24030,22264,-24042,22252,-24053,22239,-24064,22227,-24076,22215,-24087,22202,-24098,22190,-24110,22178,-24121,22165,-24132,22153,-24144,22141,-24155,22128,-24166,22116,-24178,22104,-24189,22091,-24200,22079,-24212,22066,-24223,22054,-24234,22042,-24245,22029,-24257,22017,-24268,22004,-24279,21992,-24290,21980,-24302,21967,-24313,21955,-24324,21942,-24335,21930,-24347,21917,-24358,21905,-24369,21893,-24380,21880,-24391,21868,-24403,21855,-24414,21843,-24425,21830,-24436,21818,-24447,21805,-24458,21793,-24470,21780,-24481,21768,-24492,21755,-24503,21743,-24514,21730,-24525,21717,-24536,21705,-24547,21692,-24559,21680,-24570,21667,-24581,21655,-24592,21642,-24603,21629,-24614,21617,-24625,21604,-24636,21592,-24647,21579,-24658,21566,-24669,21554,-24680,21541,-24691,21529,-24702,21516,-24713,21503,-24724,21491,-24735,21478,-24746,21465,-24757,21453,-24768,21440,-24779,21427,-24790,21415,-24801,21402,-24812,21389,-24823,21377,-24834,21364,-24845,21351,-24856,21339,-24867,21326,-24878,21313,-24888,21300,-24899,21288,-24910,21275,-24921,21262,-24932,21249,-24943,21237,-24954,21224,-24965,21211,-24975,21198,-24986,21186,-24997,21173,-25008,21160,-25019,21147,-25030,21134,-25040,21122,-25051,21109,-25062,21096,-25073,21083,-25084,21070,-25094,21057,-25105,21045,-25116,21032,-25127,21019,-25137,21006,-25148,20993,-25159,20980,-25170,20967,-25180,20955,-25191,20942,-25202,20929,-25212,20916,-25223,20903,-25234,20890,-25244,20877,-25255,20864,-25266,20851,-25277,20838,-25287,20825,-25298,20813,-25308,20800,-25319,20787,-25330,20774,-25340,20761,-25351,20748,-25362,20735,-25372,20722,-25383,20709,-25393,20696,-25404,20683,-25415,20670,-25425,20657,-25436,20644,-25446,20631,-25457,20618,-25467,20605,-25478,20592,-25488,20579,-25499,20566,-25509,20553,-25520,20540,-25530,20527,-25541,20513,-25551,20500,-25562,20487,-25572,20474,-25583,20461,-25593,20448,-25604,20435,-25614,20422,-25625,20409,-25635,20396,-25646,20383,-25656,20369,-25666,20356,-25677,20343,-25687,20330,-25698,20317,-25708,20304,-25718,20291,-25729,20277,-25739,20264,-25750,20251,-25760,20238,-25770,20225,-25781,20212,-25791,20198,-25801,20185,-25812,20172,-25822,20159,-25832,20146,-25843,20132,-25853,20119,-25863,20106,-25873,20093,-25884,20079,-25894,20066,-25904,20053,-25914,20040,-25925,20026,-25935,20013,-25945,20000,-25955,19987,-25966,19973,-25976,19960,-25986,19947,-25996,19933,-26007,19920,-26017,19907,-26027,19894,-26037,19880,-26047,19867,-26057,19854,-26068,19840,-26078,19827,-26088,19814,-26098,19800,-26108,19787,-26118,19774,-26128,19760,-26138,19747,-26149,19733,-26159,19720,-26169,19707,-26179,19693,-26189,19680,-26199,19667,-26209,19653,-26219,19640,-26229,19626,-26239,19613,-26249,19599,-26259,19586,-26269,19573,-26279,19559,-26289,19546,-26299,19532,-26309,19519,-26319,19505,-26329,19492,-26339,19478,-26349,19465,-26359,19451,-26369,19438,-26379,19424,-26389,19411,-26399,19397,-26409,19384,-26419,19370,-26429,19357,-26438,19343,-26448,19330,-26458,19316,-26468,19303,-26478,19289,-26488,19276,-26498,19262,-26508,19249,-26517,19235,-26527,19221,-26537,19208,-26547,19194,-26557,19181,-26567,19167,-26576,19154,-26586,19140,-26596,19126,-26606,19113,-26616,19099,-26625,19086,-26635,19072,-26645,19058,-26655,19045,-26664,19031,-26674,19017,-26684,19004,-26693,18990,-26703,18976,-26713,18963,-26723,18949,-26732,18935,-26742,18922,-26752,18908,-26761,18894,-26771,18881,-26781,18867,-26790,18853,-26800,18840,-26810,18826,-26819,18812,-26829,18798,-26838,18785,-26848,18771,-26858,18757,-26867,18744,-26877,18730,-26886,18716,-26896,18702,-26906,18689,-26915,18675,-26925,18661,-26934,18647,-26944,18633,-26953,18620,-26963,18606,-26972,18592,-26982,18578,-26991,18564,-27001,18551,-27010,18537,-27020,18523,-27029,18509,-27039,18495,-27048,18482,-27058,18468,-27067,18454,-27077,18440,-27086,18426,-27095,18412,-27105,18398,-27114,18385,-27124,18371,-27133,18357,-27142,18343,-27152,18329,-27161,18315,-27171,18301,-27180,18287,-27189,18273,-27199,18260,-27208,18246,-27217,18232,-27227,18218,-27236,18204,-27245,18190,-27255,18176,-27264,18162,-27273,18148,-27282,18134,-27292,18120,-27301,18106,-27310,18092,-27320,18078,-27329,18064,-27338,18050,-27347,18036,-27356,18022,-27366,18008,-27375,17994,-27384,17980,-27393,17966,-27402,17952,-27412,17938,-27421,17924,-27430,17910,-27439,17896,-27448,17882,-27457,17868,-27467,17854,-27476,17840,-27485,17826,-27494,17812,-27503,17798,-27512,17784,-27521,17770,-27530,17756,-27539,17742,-27549,17727,-27558,17713,-27567,17699,-27576,17685,-27585,17671,-27594,17657,-27603,17643,-27612,17629,-27621,17615,-27630,17600,-27639,17586,-27648,17572,-27657,17558,-27666,17544,-27675,17530,-27684,17516,-27693,17501,-27702,17487,-27711,17473,-27720,17459,-27729,17445,-27737,17431,-27746,17416,-27755,17402,-27764,17388,-27773,17374,-27782,17360,-27791,17345,-27800,17331,-27809,17317,-27817,17303,-27826,17288,-27835,17274,-27844,17260,-27853,17246,-27862,17232,-27870,17217,-27879,17203,-27888,17189,-27897,17174,-27906,17160,-27914,17146,-27923,17132,-27932,17117,-27941,17103,-27949,17089,-27958,17074,-27967,17060,-27976,17046,-27984,17032,-27993,17017,-28002,17003,-28010,16989,-28019,16974,-28028,16960,-28037,16946,-28045,16931,-28054,16917,-28063,16903,-28071,16888,-28080,16874,-28088,16859,-28097,16845,-28106,16831,-28114,16816,-28123,16802,-28132,16788,-28140,16773,-28149,16759,-28157,16744,-28166,16730,-28174,16716,-28183,16701,-28191,16687,-28200,16672,-28209,16658,-28217,16643,-28226,16629,-28234,16615,-28243,16600,-28251,16586,-28260,16571,-28268,16557,-28276,16542,-28285,16528,-28293,16513,-28302,16499,-28310,16484,-28319,16470,-28327,16455,-28336,16441,-28344,16427,-28352,16412,-28361,16398,-28369,16383,-28378,16368,-28386,16354,-28394,16339,-28403,16325,-28411,16310,-28419,16296,-28428,16281,-28436,16267,-28444,16252,-28453,16238,-28461,16223,-28469,16209,-28478,16194,-28486,16179,-28494,16165,-28502,16150,-28511,16136,-28519,16121,-28527,16107,-28535,16092,-28544,16077,-28552,16063,-28560,16048,-28568,16034,-28576,16019,-28585,16004,-28593,15990,-28601,15975,-28609,15960,-28617,15946,-28626,15931,-28634,15917,-28642,15902,-28650,15887,-28658,15873,-28666,15858,-28674,15843,-28682,15829,-28691,15814,-28699,15799,-28707,15785,-28715,15770,-28723,15755,-28731,15740,-28739,15726,-28747,15711,-28755,15696,-28763,15682,-28771,15667,-28779,15652,-28787,15638,-28795,15623,-28803,15608,-28811,15593,-28819,15579,-28827,15564,-28835,15549,-28843,15534,-28851,15520,-28859,15505,-28867,15490,-28875,15475,-28883,15461,-28891,15446,-28898,15431,-28906,15416,-28914,15401,-28922,15387,-28930,15372,-28938,15357,-28946,15342,-28954,15327,-28961,15313,-28969,15298,-28977,15283,-28985,15268,-28993,15253,-29000,15238,-29008,15224,-29016,15209,-29024,15194,-29032,15179,-29039,15164,-29047,15149,-29055,15135,-29063,15120,-29070,15105,-29078,15090,-29086,15075,-29093,15060,-29101,15045,-29109,15030,-29117,15016,-29124,15001,-29132,14986,-29140,14971,-29147,14956,-29155,14941,-29163,14926,-29170,14911,-29178,14896,-29185,14881,-29193,14866,-29201,14852,-29208,14837,-29216,14822,-29223,14807,-29231,14792,-29239,14777,-29246,14762,-29254,14747,-29261,14732,-29269,14717,-29276,14702,-29284,14687,-29291,14672,-29299,14657,-29306,14642,-29314,14627,-29321,14612,-29329,14597,-29336,14582,-29344,14567,-29351,14552,-29359,14537,-29366,14522,-29373,14507,-29381,14492,-29388,14477,-29396,14462,-29403,14447,-29411,14432,-29418,14417,-29425,14402,-29433,14387,-29440,14372,-29447,14357,-29455,14342,-29462,14326,-29469,14311,-29477,14296,-29484,14281,-29491,14266,-29499,14251,-29506,14236,-29513,14221,-29520,14206,-29528,14191,-29535,14176,-29542,14160,-29549,14145,-29557,14130,-29564,14115,-29571,14100,-29578,14085,-29586,14070,-29593,14055,-29600,14039,-29607,14024,-29614,14009,-29622,13994,-29629,13979,-29636,13964,-29643,13949,-29650,13933,-29657,13918,-29664,13903,-29671,13888,-29679,13873,-29686,13858,-29693,13842,-29700,13827,-29707,13812,-29714,13797,-29721,13782,-29728,13766,-29735,13751,-29742,13736,-29749,13721,-29756,13706,-29763,13690,-29770,13675,-29777,13660,-29784,13645,-29791,13629,-29798,13614,-29805,13599,-29812,13584,-29819,13568,-29826,13553,-29833,13538,-29840,13523,-29847,13507,-29854,13492,-29861,13477,-29867,13462,-29874,13446,-29881,13431,-29888,13416,-29895,13400,-29902,13385,-29909,13370,-29916,13355,-29922,13339,-29929,13324,-29936,13309,-29943,13293,-29950,13278,-29956,13263,-29963,13247,-29970,13232,-29977,13217,-29984,13201,-29990,13186,-29997,13171,-30004,13155,-30010,13140,-30017,13125,-30024,13109,-30031,13094,-30037,13079,-30044,13063,-30051,13048,-30057,13033,-30064,13017,-30071,13002,-30077,12986,-30084,12971,-30091,12956,-30097,12940,-30104,12925,-30110,12909,-30117,12894,-30124,12879,-30130,12863,-30137,12848,-30143,12832,-30150,12817,-30157,12802,-30163,12786,-30170,12771,-30176,12755,-30183,12740,-30189,12724,-30196,12709,-30202,12694,-30209,12678,-30215,12663,-30222,12647,-30228,12632,-30235,12616,-30241,12601,-30248,12585,-30254,12570,-30260,12554,-30267,12539,-30273,12523,-30280,12508,-30286,12492,-30292,12477,-30299,12461,-30305,12446,-30312,12430,-30318,12415,-30324,12399,-30331,12384,-30337,12368,-30343,12353,-30350,12337,-30356,12322,-30362,12306,-30369,12291,-30375,12275,-30381,12260,-30387,12244,-30394,12229,-30400,12213,-30406,12198,-30412,12182,-30419,12166,-30425,12151,-30431,12135,-30437,12120,-30443,12104,-30450,12089,-30456,12073,-30462,12057,-30468,12042,-30474,12026,-30481,12011,-30487,11995,-30493,11980,-30499,11964,-30505,11948,-30511,11933,-30517,11917,-30523,11902,-30529,11886,-30536,11870,-30542,11855,-30548,11839,-30554,11823,-30560,11808,-30566,11792,-30572,11777,-30578,11761,-30584,11745,-30590,11730,-30596,11714,-30602,11698,-30608,11683,-30614,11667,-30620,11651,-30626,11636,-30632,11620,-30638,11604,-30644,11589,-30650,11573,-30656,11557,-30661,11542,-30667,11526,-30673,11510,-30679,11495,-30685,11479,-30691,11463,-30697,11448,-30703,11432,-30708,11416,-30714,11400,-30720,11385,-30726,11369,-30732,11353,-30738,11338,-30743,11322,-30749,11306,-30755,11290,-30761,11275,-30767,11259,-30772,11243,-30778,11227,-30784,11212,-30789,11196,-30795,11180,-30801,11164,-30807,11149,-30812,11133,-30818,11117,-30824,11101,-30829,11086,-30835,11070,-30841,11054,-30846,11038,-30852,11023,-30858,11007,-30863,10991,-30869,10975,-30875,10959,-30880,10944,-30886,10928,-30891,10912,-30897,10896,-30903,10880,-30908,10865,-30914,10849,-30919,10833,-30925,10817,-30930,10801,-30936,10786,-30941,10770,-30947,10754,-30952,10738,-30958,10722,-30963,10706,-30969,10691,-30974,10675,-30980,10659,-30985,10643,-30991,10627,-30996,10611,-31002,10596,-31007,10580,-31012,10564,-31018,10548,-31023,10532,-31029,10516,-31034,10500,-31039,10484,-31045,10469,-31050,10453,-31055,10437,-31061,10421,-31066,10405,-31071,10389,-31077,10373,-31082,10357,-31087,10342,-31093,10326,-31098,10310,-31103,10294,-31108,10278,-31114,10262,-31119,10246,-31124,10230,-31129,10214,-31135,10198,-31140,10182,-31145,10166,-31150,10151,-31155,10135,-31161,10119,-31166,10103,-31171,10087,-31176,10071,-31181,10055,-31186,10039,-31192,10023,-31197,10007,-31202,9991,-31207,9975,-31212,9959,-31217,9943,-31222,9927,-31227,9911,-31232,9895,-31237,9879,-31243,9863,-31248,9847,-31253,9831,-31258,9815,-31263,9799,-31268,9783,-31273,9767,-31278,9751,-31283,9735,-31288,9719,-31293,9703,-31298,9687,-31303,9671,-31308,9655,-31312,9639,-31317,9623,-31322,9607,-31327,9591,-31332,9575,-31337,9559,-31342,9543,-31347,9527,-31352,9511,-31357,9495,-31361,9479,-31366,9463,-31371,9447,-31376,9431,-31381,9415,-31386,9399,-31390,9383,-31395,9367,-31400,9351,-31405,9335,-31410,9319,-31414,9303,-31419,9287,-31424,9270,-31429,9254,-31433,9238,-31438,9222,-31443,9206,-31447,9190,-31452,9174,-31457,9158,-31462,9142,-31466,9126,-31471,9110,-31476,9094,-31480,9077,-31485,9061,-31490,9045,-31494,9029,-31499,9013,-31503,8997,-31508,8981,-31513,8965,-31517,8949,-31522,8932,-31526,8916,-31531,8900,-31535,8884,-31540,8868,-31545,8852,-31549,8836,-31554,8820,-31558,8803,-31563,8787,-31567,8771,-31572,8755,-31576,8739,-31581,8723,-31585,8707,-31589,8690,-31594,8674,-31598,8658,-31603,8642,-31607,8626,-31612,8610,-31616,8593,-31620,8577,-31625,8561,-31629,8545,-31634,8529,-31638,8513,-31642,8496,-31647,8480,-31651,8464,-31655,8448,-31660,8432,-31664,8415,-31668,8399,-31673,8383,-31677,8367,-31681,8351,-31685,8334,-31690,8318,-31694,8302,-31698,8286,-31702,8270,-31707,8253,-31711,8237,-31715,8221,-31719,8205,-31724,8189,-31728,8172,-31732,8156,-31736,8140,-31740,8124,-31744,8107,-31749,8091,-31753,8075,-31757,8059,-31761,8042,-31765,8026,-31769,8010,-31773,7994,-31777,7977,-31781,7961,-31786,7945,-31790,7929,-31794,7912,-31798,7896,-31802,7880,-31806,7864,-31810,7847,-31814,7831,-31818,7815,-31822,7799,-31826,7782,-31830,7766,-31834,7750,-31838,7733,-31842,7717,-31846,7701,-31850,7685,-31854,7668,-31857,7652,-31861,7636,-31865,7619,-31869,7603,-31873,7587,-31877,7571,-31881,7554,-31885,7538,-31889,7522,-31892,7505,-31896,7489,-31900,7473,-31904,7456,-31908,7440,-31912,7424,-31915,7407,-31919,7391,-31923,7375,-31927,7358,-31930,7342,-31934,7326,-31938,7310,-31942,7293,-31945,7277,-31949,7261,-31953,7244,-31957,7228,-31960,7211,-31964,7195,-31968,7179,-31971,7162,-31975,7146,-31979,7130,-31982,7113,-31986,7097,-31990,7081,-31993,7064,-31997,7048,-32000,7032,-32004,7015,-32008,6999,-32011,6982,-32015,6966,-32018,6950,-32022,6933,-32025,6917,-32029,6901,-32033,6884,-32036,6868,-32040,6851,-32043,6835,-32047,6819,-32050,6802,-32054,6786,-32057,6770,-32060,6753,-32064,6737,-32067,6720,-32071,6704,-32074,6688,-32078,6671,-32081,6655,-32085,6638,-32088,6622,-32091,6606,-32095,6589,-32098,6573,-32101,6556,-32105,6540,-32108,6523,-32111,6507,-32115,6491,-32118,6474,-32121,6458,-32125,6441,-32128,6425,-32131,6408,-32135,6392,-32138,6376,-32141,6359,-32144,6343,-32148,6326,-32151,6310,-32154,6293,-32157,6277,-32161,6261,-32164,6244,-32167,6228,-32170,6211,-32173,6195,-32177,6178,-32180,6162,-32183,6145,-32186,6129,-32189,6112,-32192,6096,-32195,6080,-32198,6063,-32202,6047,-32205,6030,-32208,6014,-32211,5997,-32214,5981,-32217,5964,-32220,5948,-32223,5931,-32226,5915,-32229,5898,-32232,5882,-32235,5865,-32238,5849,-32241,5832,-32244,5816,-32247,5799,-32250,5783,-32253,5766,-32256,5750,-32259,5733,-32262,5717,-32265,5700,-32268,5684,-32271,5667,-32274,5651,-32276,5634,-32279,5618,-32282,5601,-32285,5585,-32288,5568,-32291,5552,-32294,5535,-32296,5519,-32299,5502,-32302,5486,-32305,5469,-32308,5453,-32311,5436,-32313,5420,-32316,5403,-32319,5387,-32322,5370,-32324,5354,-32327,5337,-32330,5321,-32333,5304,-32335,5287,-32338,5271,-32341,5254,-32343,5238,-32346,5221,-32349,5205,-32351,5188,-32354,5172,-32357,5155,-32359,5139,-32362,5122,-32365,5106,-32367,5089,-32370,5072,-32372,5056,-32375,5039,-32378,5023,-32380,5006,-32383,4990,-32385,4973,-32388,4957,-32390,4940,-32393,4923,-32395,4907,-32398,4890,-32400,4874,-32403,4857,-32405,4841,-32408,4824,-32410,4807,-32413,4791,-32415,4774,-32418,4758,-32420,4741,-32423,4725,-32425,4708,-32427,4691,-32430,4675,-32432,4658,-32435,4642,-32437,4625,-32439,4608,-32442,4592,-32444,4575,-32446,4559,-32449,4542,-32451,4525,-32453,4509,-32456,4492,-32458,4476,-32460,4459,-32463,4443,-32465,4426,-32467,4409,-32469,4393,-32472,4376,-32474,4359,-32476,4343,-32478,4326,-32481,4310,-32483,4293,-32485,4276,-32487,4260,-32489,4243,-32492,4227,-32494,4210,-32496,4193,-32498,4177,-32500,4160,-32502,4144,-32504,4127,-32507,4110,-32509,4094,-32511,4077,-32513,4060,-32515,4044,-32517,4027,-32519,4011,-32521,3994,-32523,3977,-32525,3961,-32527,3944,-32529,3927,-32531,3911,-32533,3894,-32535,3877,-32537,3861,-32539,3844,-32541,3828,-32543,3811,-32545,3794,-32547,3778,-32549,3761,-32551,3744,-32553,3728,-32555,3711,-32557,3694,-32559,3678,-32560,3661,-32562,3644,-32564,3628,-32566,3611,-32568,3594,-32570,3578,-32572,3561,-32573,3545,-32575,3528,-32577,3511,-32579,3495,-32581,3478,-32582,3461,-32584,3445,-32586,3428,-32588,3411,-32589,3395,-32591,3378,-32593,3361,-32595,3345,-32596,3328,-32598,3311,-32600,3295,-32601,3278,-32603,3261,-32605,3245,-32606,3228,-32608,3211,-32610,3195,-32611,3178,-32613,3161,-32615,3145,-32616,3128,-32618,3111,-32619,3094,-32621,3078,-32623,3061,-32624,3044,-32626,3028,-32627,3011,-32629,2994,-32630,2978,-32632,2961,-32633,2944,-32635,2928,-32636,2911,-32638,2894,-32639,2878,-32641,2861,-32642,2844,-32644,2828,-32645,2811,-32647,2794,-32648,2777,-32650,2761,-32651,2744,-32652,2727,-32654,2711,-32655,2694,-32657,2677,-32658,2661,-32659,2644,-32661,2627,-32662,2610,-32663,2594,-32665,2577,-32666,2560,-32667,2544,-32669,2527,-32670,2510,-32671,2494,-32672,2477,-32674,2460,-32675,2443,-32676,2427,-32677,2410,-32679,2393,-32680,2377,-32681,2360,-32682,2343,-32684,2326,-32685,2310,-32686,2293,-32687,2276,-32688,2260,-32689,2243,-32691,2226,-32692,2209,-32693,2193,-32694,2176,-32695,2159,-32696,2143,-32697,2126,-32698,2109,-32700,2092,-32701,2076,-32702,2059,-32703,2042,-32704,2026,-32705,2009,-32706,1992,-32707,1975,-32708,1959,-32709,1942,-32710,1925,-32711,1908,-32712,1892,-32713,1875,-32714,1858,-32715,1842,-32716,1825,-32717,1808,-32718,1791,-32718,1775,-32719,1758,-32720,1741,-32721,1724,-32722,1708,-32723,1691,-32724,1674,-32725,1658,-32726,1641,-32726,1624,-32727,1607,-32728,1591,-32729,1574,-32730,1557,-32730,1540,-32731,1524,-32732,1507,-32733,1490,-32734,1473,-32734,1457,-32735,1440,-32736,1423,-32737,1406,-32737,1390,-32738,1373,-32739,1356,-32739,1339,-32740,1323,-32741,1306,-32741,1289,-32742,1273,-32743,1256,-32743,1239,-32744,1222,-32745,1206,-32745,1189,-32746,1172,-32747,1155,-32747,1139,-32748,1122,-32748,1105,-32749,1088,-32749,1072,-32750,1055,-32751,1038,-32751,1021,-32752,1005,-32752,988,-32753,971,-32753,954,-32754,938,-32754,921,-32755,904,-32755,887,-32755,871,-32756,854,-32756,837,-32757,820,-32757,804,-32758,787,-32758,770,-32758,753,-32759,737,-32759,720,-32760,703,-32760,686,-32760,670,-32761,653,-32761,636,-32761,619,-32762,603,-32762,586,-32762,569,-32763,552,-32763,536,-32763,519,-32763,502,-32764,485,-32764,469,-32764,452,-32764,435,-32765,418,-32765,402,-32765,385,-32765,368,-32765,351,-32766,335,-32766,318,-32766,301,-32766,284,-32766,268,-32766,251,-32767,234,-32767,217,-32767,201,-32767,184,-32767,167,-32767,150,-32767,134,-32767,117,-32767,100,-32767,83,-32767,67,-32767,50,-32767,33,-32767,16,-32767,0,-32767,-17,-32767,-34,-32767,-51,-32767,-68,-32767,-84,-32767,-101,-32767,-118,-32767,-135,-32767,-151,-32767,-168,-32767,-185,-32767,-202,-32767,-218,-32767,-235,-32767,-252,-32767,-269,-32766,-285,-32766,-302,-32766,-319,-32766,-336,-32766,-352,-32766,-369,-32765,-386,-32765,-403,-32765,-419,-32765,-436,-32765,-453,-32764,-470,-32764,-486,-32764,-503,-32764,-520,-32763,-537,-32763,-553,-32763,-570,-32763,-587,-32762,-604,-32762,-620,-32762,-637,-32761,-654,-32761,-671,-32761,-687,-32760,-704,-32760,-721,-32760,-738,-32759,-754,-32759,-771,-32758,-788,-32758,-805,-32758,-821,-32757,-838,-32757,-855,-32756,-872,-32756,-888,-32755,-905,-32755,-922,-32755,-939,-32754,-955,-32754,-972,-32753,-989,-32753,-1006,-32752,-1022,-32752,-1039,-32751,-1056,-32751,-1073,-32750,-1089,-32749,-1106,-32749,-1123,-32748,-1140,-32748,-1156,-32747,-1173,-32747,-1190,-32746,-1207,-32745,-1223,-32745,-1240,-32744,-1257,-32743,-1274,-32743,-1290,-32742,-1307,-32741,-1324,-32741,-1340,-32740,-1357,-32739,-1374,-32739,-1391,-32738,-1407,-32737,-1424,-32737,-1441,-32736,-1458,-32735,-1474,-32734,-1491,-32734,-1508,-32733,-1525,-32732,-1541,-32731,-1558,-32730,-1575,-32730,-1592,-32729,-1608,-32728,-1625,-32727,-1642,-32726,-1659,-32726,-1675,-32725,-1692,-32724,-1709,-32723,-1725,-32722,-1742,-32721,-1759,-32720,-1776,-32719,-1792,-32718,-1809,-32718,-1826,-32717,-1843,-32716,-1859,-32715,-1876,-32714,-1893,-32713,-1909,-32712,-1926,-32711,-1943,-32710,-1960,-32709,-1976,-32708,-1993,-32707,-2010,-32706,-2027,-32705,-2043,-32704,-2060,-32703,-2077,-32702,-2093,-32701,-2110,-32700,-2127,-32698,-2144,-32697,-2160,-32696,-2177,-32695,-2194,-32694,-2210,-32693,-2227,-32692,-2244,-32691,-2261,-32689,-2277,-32688,-2294,-32687,-2311,-32686,-2327,-32685,-2344,-32684,-2361,-32682,-2378,-32681,-2394,-32680,-2411,-32679,-2428,-32677,-2444,-32676,-2461,-32675,-2478,-32674,-2495,-32672,-2511,-32671,-2528,-32670,-2545,-32669,-2561,-32667,-2578,-32666,-2595,-32665,-2611,-32663,-2628,-32662,-2645,-32661,-2662,-32659,-2678,-32658,-2695,-32657,-2712,-32655,-2728,-32654,-2745,-32652,-2762,-32651,-2778,-32650,-2795,-32648,-2812,-32647,-2829,-32645,-2845,-32644,-2862,-32642,-2879,-32641,-2895,-32639,-2912,-32638,-2929,-32636,-2945,-32635,-2962,-32633,-2979,-32632,-2995,-32630,-3012,-32629,-3029,-32627,-3045,-32626,-3062,-32624,-3079,-32623,-3095,-32621,-3112,-32619,-3129,-32618,-3146,-32616,-3162,-32615,-3179,-32613,-3196,-32611,-3212,-32610,-3229,-32608,-3246,-32606,-3262,-32605,-3279,-32603,-3296,-32601,-3312,-32600,-3329,-32598,-3346,-32596,-3362,-32595,-3379,-32593,-3396,-32591,-3412,-32589,-3429,-32588,-3446,-32586,-3462,-32584,-3479,-32582,-3496,-32581,-3512,-32579,-3529,-32577,-3546,-32575,-3562,-32573,-3579,-32572,-3595,-32570,-3612,-32568,-3629,-32566,-3645,-32564,-3662,-32562,-3679,-32560,-3695,-32559,-3712,-32557,-3729,-32555,-3745,-32553,-3762,-32551,-3779,-32549,-3795,-32547,-3812,-32545,-3829,-32543,-3845,-32541,-3862,-32539,-3878,-32537,-3895,-32535,-3912,-32533,-3928,-32531,-3945,-32529,-3962,-32527,-3978,-32525,-3995,-32523,-4012,-32521,-4028,-32519,-4045,-32517,-4061,-32515,-4078,-32513,-4095,-32511,-4111,-32509,-4128,-32507,-4145,-32504,-4161,-32502,-4178,-32500,-4194,-32498,-4211,-32496,-4228,-32494,-4244,-32492,-4261,-32489,-4277,-32487,-4294,-32485,-4311,-32483,-4327,-32481,-4344,-32478,-4360,-32476,-4377,-32474,-4394,-32472,-4410,-32469,-4427,-32467,-4444,-32465,-4460,-32463,-4477,-32460,-4493,-32458,-4510,-32456,-4526,-32453,-4543,-32451,-4560,-32449,-4576,-32446,-4593,-32444,-4609,-32442,-4626,-32439,-4643,-32437,-4659,-32435,-4676,-32432,-4692,-32430,-4709,-32427,-4726,-32425,-4742,-32423,-4759,-32420,-4775,-32418,-4792,-32415,-4808,-32413,-4825,-32410,-4842,-32408,-4858,-32405,-4875,-32403,-4891,-32400,-4908,-32398,-4924,-32395,-4941,-32393,-4958,-32390,-4974,-32388,-4991,-32385,-5007,-32383,-5024,-32380,-5040,-32378,-5057,-32375,-5073,-32372,-5090,-32370,-5107,-32367,-5123,-32365,-5140,-32362,-5156,-32359,-5173,-32357,-5189,-32354,-5206,-32351,-5222,-32349,-5239,-32346,-5255,-32343,-5272,-32341,-5288,-32338,-5305,-32335,-5322,-32333,-5338,-32330,-5355,-32327,-5371,-32324,-5388,-32322,-5404,-32319,-5421,-32316,-5437,-32313,-5454,-32311,-5470,-32308,-5487,-32305,-5503,-32302,-5520,-32299,-5536,-32296,-5553,-32294,-5569,-32291,-5586,-32288,-5602,-32285,-5619,-32282,-5635,-32279,-5652,-32276,-5668,-32274,-5685,-32271,-5701,-32268,-5718,-32265,-5734,-32262,-5751,-32259,-5767,-32256,-5784,-32253,-5800,-32250,-5817,-32247,-5833,-32244,-5850,-32241,-5866,-32238,-5883,-32235,-5899,-32232,-5916,-32229,-5932,-32226,-5949,-32223,-5965,-32220,-5982,-32217,-5998,-32214,-6015,-32211,-6031,-32208,-6048,-32205,-6064,-32202,-6081,-32198,-6097,-32195,-6113,-32192,-6130,-32189,-6146,-32186,-6163,-32183,-6179,-32180,-6196,-32177,-6212,-32173,-6229,-32170,-6245,-32167,-6262,-32164,-6278,-32161,-6294,-32157,-6311,-32154,-6327,-32151,-6344,-32148,-6360,-32144,-6377,-32141,-6393,-32138,-6409,-32135,-6426,-32131,-6442,-32128,-6459,-32125,-6475,-32121,-6492,-32118,-6508,-32115,-6524,-32111,-6541,-32108,-6557,-32105,-6574,-32101,-6590,-32098,-6607,-32095,-6623,-32091,-6639,-32088,-6656,-32085,-6672,-32081,-6689,-32078,-6705,-32074,-6721,-32071,-6738,-32067,-6754,-32064,-6771,-32060,-6787,-32057,-6803,-32054,-6820,-32050,-6836,-32047,-6852,-32043,-6869,-32040,-6885,-32036,-6902,-32033,-6918,-32029,-6934,-32025,-6951,-32022,-6967,-32018,-6983,-32015,-7000,-32011,-7016,-32008,-7033,-32004,-7049,-32000,-7065,-31997,-7082,-31993,-7098,-31990,-7114,-31986,-7131,-31982,-7147,-31979,-7163,-31975,-7180,-31971,-7196,-31968,-7212,-31964,-7229,-31960,-7245,-31957,-7262,-31953,-7278,-31949,-7294,-31945,-7311,-31942,-7327,-31938,-7343,-31934,-7359,-31930,-7376,-31927,-7392,-31923,-7408,-31919,-7425,-31915,-7441,-31912,-7457,-31908,-7474,-31904,-7490,-31900,-7506,-31896,-7523,-31892,-7539,-31889,-7555,-31885,-7572,-31881,-7588,-31877,-7604,-31873,-7620,-31869,-7637,-31865,-7653,-31861,-7669,-31857,-7686,-31854,-7702,-31850,-7718,-31846,-7734,-31842,-7751,-31838,-7767,-31834,-7783,-31830,-7800,-31826,-7816,-31822,-7832,-31818,-7848,-31814,-7865,-31810,-7881,-31806,-7897,-31802,-7913,-31798,-7930,-31794,-7946,-31790,-7962,-31786,-7978,-31781,-7995,-31777,-8011,-31773,-8027,-31769,-8043,-31765,-8060,-31761,-8076,-31757,-8092,-31753,-8108,-31749,-8125,-31744,-8141,-31740,-8157,-31736,-8173,-31732,-8190,-31728,-8206,-31724,-8222,-31719,-8238,-31715,-8254,-31711,-8271,-31707,-8287,-31702,-8303,-31698,-8319,-31694,-8335,-31690,-8352,-31685,-8368,-31681,-8384,-31677,-8400,-31673,-8416,-31668,-8433,-31664,-8449,-31660,-8465,-31655,-8481,-31651,-8497,-31647,-8514,-31642,-8530,-31638,-8546,-31634,-8562,-31629,-8578,-31625,-8594,-31620,-8611,-31616,-8627,-31612,-8643,-31607,-8659,-31603,-8675,-31598,-8691,-31594,-8708,-31589,-8724,-31585,-8740,-31581,-8756,-31576,-8772,-31572,-8788,-31567,-8804,-31563,-8821,-31558,-8837,-31554,-8853,-31549,-8869,-31545,-8885,-31540,-8901,-31535,-8917,-31531,-8933,-31526,-8950,-31522,-8966,-31517,-8982,-31513,-8998,-31508,-9014,-31503,-9030,-31499,-9046,-31494,-9062,-31490,-9078,-31485,-9095,-31480,-9111,-31476,-9127,-31471,-9143,-31466,-9159,-31462,-9175,-31457,-9191,-31452,-9207,-31447,-9223,-31443,-9239,-31438,-9255,-31433,-9271,-31429,-9288,-31424,-9304,-31419,-9320,-31414,-9336,-31410,-9352,-31405,-9368,-31400,-9384,-31395,-9400,-31390,-9416,-31386,-9432,-31381,-9448,-31376,-9464,-31371,-9480,-31366,-9496,-31361,-9512,-31357,-9528,-31352,-9544,-31347,-9560,-31342,-9576,-31337,-9592,-31332,-9608,-31327,-9624,-31322,-9640,-31317,-9656,-31312,-9672,-31308,-9688,-31303,-9704,-31298,-9720,-31293,-9736,-31288,-9752,-31283,-9768,-31278,-9784,-31273,-9800,-31268,-9816,-31263,-9832,-31258,-9848,-31253,-9864,-31248,-9880,-31243,-9896,-31237,-9912,-31232,-9928,-31227,-9944,-31222,-9960,-31217,-9976,-31212,-9992,-31207,-10008,-31202,-10024,-31197,-10040,-31192,-10056,-31186,-10072,-31181,-10088,-31176,-10104,-31171,-10120,-31166,-10136,-31161,-10152,-31155,-10167,-31150,-10183,-31145,-10199,-31140,-10215,-31135,-10231,-31129,-10247,-31124,-10263,-31119,-10279,-31114,-10295,-31108,-10311,-31103,-10327,-31098,-10343,-31093,-10358,-31087,-10374,-31082,-10390,-31077,-10406,-31071,-10422,-31066,-10438,-31061,-10454,-31055,-10470,-31050,-10485,-31045,-10501,-31039,-10517,-31034,-10533,-31029,-10549,-31023,-10565,-31018,-10581,-31012,-10597,-31007,-10612,-31002,-10628,-30996,-10644,-30991,-10660,-30985,-10676,-30980,-10692,-30974,-10707,-30969,-10723,-30963,-10739,-30958,-10755,-30952,-10771,-30947,-10787,-30941,-10802,-30936,-10818,-30930,-10834,-30925,-10850,-30919,-10866,-30914,-10881,-30908,-10897,-30903,-10913,-30897,-10929,-30891,-10945,-30886,-10960,-30880,-10976,-30875,-10992,-30869,-11008,-30863,-11024,-30858,-11039,-30852,-11055,-30846,-11071,-30841,-11087,-30835,-11102,-30829,-11118,-30824,-11134,-30818,-11150,-30812,-11165,-30807,-11181,-30801,-11197,-30795,-11213,-30789,-11228,-30784,-11244,-30778,-11260,-30772,-11276,-30767,-11291,-30761,-11307,-30755,-11323,-30749,-11339,-30743,-11354,-30738,-11370,-30732,-11386,-30726,-11401,-30720,-11417,-30714,-11433,-30708,-11449,-30703,-11464,-30697,-11480,-30691,-11496,-30685,-11511,-30679,-11527,-30673,-11543,-30667,-11558,-30661,-11574,-30656,-11590,-30650,-11605,-30644,-11621,-30638,-11637,-30632,-11652,-30626,-11668,-30620,-11684,-30614,-11699,-30608,-11715,-30602,-11731,-30596,-11746,-30590,-11762,-30584,-11778,-30578,-11793,-30572,-11809,-30566,-11824,-30560,-11840,-30554,-11856,-30548,-11871,-30542,-11887,-30536,-11903,-30529,-11918,-30523,-11934,-30517,-11949,-30511,-11965,-30505,-11981,-30499,-11996,-30493,-12012,-30487,-12027,-30481,-12043,-30474,-12058,-30468,-12074,-30462,-12090,-30456,-12105,-30450,-12121,-30443,-12136,-30437,-12152,-30431,-12167,-30425,-12183,-30419,-12199,-30412,-12214,-30406,-12230,-30400,-12245,-30394,-12261,-30387,-12276,-30381,-12292,-30375,-12307,-30369,-12323,-30362,-12338,-30356,-12354,-30350,-12369,-30343,-12385,-30337,-12400,-30331,-12416,-30324,-12431,-30318,-12447,-30312,-12462,-30305,-12478,-30299,-12493,-30292,-12509,-30286,-12524,-30280,-12540,-30273,-12555,-30267,-12571,-30260,-12586,-30254,-12602,-30248,-12617,-30241,-12633,-30235,-12648,-30228,-12664,-30222,-12679,-30215,-12695,-30209,-12710,-30202,-12725,-30196,-12741,-30189,-12756,-30183,-12772,-30176,-12787,-30170,-12803,-30163,-12818,-30157,-12833,-30150,-12849,-30143,-12864,-30137,-12880,-30130,-12895,-30124,-12910,-30117,-12926,-30110,-12941,-30104,-12957,-30097,-12972,-30091,-12987,-30084,-13003,-30077,-13018,-30071,-13034,-30064,-13049,-30057,-13064,-30051,-13080,-30044,-13095,-30037,-13110,-30031,-13126,-30024,-13141,-30017,-13156,-30010,-13172,-30004,-13187,-29997,-13202,-29990,-13218,-29984,-13233,-29977,-13248,-29970,-13264,-29963,-13279,-29956,-13294,-29950,-13310,-29943,-13325,-29936,-13340,-29929,-13356,-29922,-13371,-29916,-13386,-29909,-13401,-29902,-13417,-29895,-13432,-29888,-13447,-29881,-13463,-29874,-13478,-29867,-13493,-29861,-13508,-29854,-13524,-29847,-13539,-29840,-13554,-29833,-13569,-29826,-13585,-29819,-13600,-29812,-13615,-29805,-13630,-29798,-13646,-29791,-13661,-29784,-13676,-29777,-13691,-29770,-13707,-29763,-13722,-29756,-13737,-29749,-13752,-29742,-13767,-29735,-13783,-29728,-13798,-29721,-13813,-29714,-13828,-29707,-13843,-29700,-13859,-29693,-13874,-29686,-13889,-29679,-13904,-29671,-13919,-29664,-13934,-29657,-13950,-29650,-13965,-29643,-13980,-29636,-13995,-29629,-14010,-29622,-14025,-29614,-14040,-29607,-14056,-29600,-14071,-29593,-14086,-29586,-14101,-29578,-14116,-29571,-14131,-29564,-14146,-29557,-14161,-29549,-14177,-29542,-14192,-29535,-14207,-29528,-14222,-29520,-14237,-29513,-14252,-29506,-14267,-29499,-14282,-29491,-14297,-29484,-14312,-29477,-14327,-29469,-14343,-29462,-14358,-29455,-14373,-29447,-14388,-29440,-14403,-29433,-14418,-29425,-14433,-29418,-14448,-29411,-14463,-29403,-14478,-29396,-14493,-29388,-14508,-29381,-14523,-29373,-14538,-29366,-14553,-29359,-14568,-29351,-14583,-29344,-14598,-29336,-14613,-29329,-14628,-29321,-14643,-29314,-14658,-29306,-14673,-29299,-14688,-29291,-14703,-29284,-14718,-29276,-14733,-29269,-14748,-29261,-14763,-29254,-14778,-29246,-14793,-29239,-14808,-29231,-14823,-29223,-14838,-29216,-14853,-29208,-14867,-29201,-14882,-29193,-14897,-29185,-14912,-29178,-14927,-29170,-14942,-29163,-14957,-29155,-14972,-29147,-14987,-29140,-15002,-29132,-15017,-29124,-15031,-29117,-15046,-29109,-15061,-29101,-15076,-29093,-15091,-29086,-15106,-29078,-15121,-29070,-15136,-29063,-15150,-29055,-15165,-29047,-15180,-29039,-15195,-29032,-15210,-29024,-15225,-29016,-15239,-29008,-15254,-29000,-15269,-28993,-15284,-28985,-15299,-28977,-15314,-28969,-15328,-28961,-15343,-28954,-15358,-28946,-15373,-28938,-15388,-28930,-15402,-28922,-15417,-28914,-15432,-28906,-15447,-28898,-15462,-28891,-15476,-28883,-15491,-28875,-15506,-28867,-15521,-28859,-15535,-28851,-15550,-28843,-15565,-28835,-15580,-28827,-15594,-28819,-15609,-28811,-15624,-28803,-15639,-28795,-15653,-28787,-15668,-28779,-15683,-28771,-15697,-28763,-15712,-28755,-15727,-28747,-15741,-28739,-15756,-28731,-15771,-28723,-15786,-28715,-15800,-28707,-15815,-28699,-15830,-28691,-15844,-28682,-15859,-28674,-15874,-28666,-15888,-28658,-15903,-28650,-15918,-28642,-15932,-28634,-15947,-28626,-15961,-28617,-15976,-28609,-15991,-28601,-16005,-28593,-16020,-28585,-16035,-28576,-16049,-28568,-16064,-28560,-16078,-28552,-16093,-28544,-16108,-28535,-16122,-28527,-16137,-28519,-16151,-28511,-16166,-28502,-16180,-28494,-16195,-28486,-16210,-28478,-16224,-28469,-16239,-28461,-16253,-28453,-16268,-28444,-16282,-28436,-16297,-28428,-16311,-28419,-16326,-28411,-16340,-28403,-16355,-28394,-16369,-28386,-16384,-28378,-16399,-28369,-16413,-28361,-16428,-28352,-16442,-28344,-16456,-28336,-16471,-28327,-16485,-28319,-16500,-28310,-16514,-28302,-16529,-28293,-16543,-28285,-16558,-28276,-16572,-28268,-16587,-28260,-16601,-28251,-16616,-28243,-16630,-28234,-16644,-28226,-16659,-28217,-16673,-28209,-16688,-28200,-16702,-28191,-16717,-28183,-16731,-28174,-16745,-28166,-16760,-28157,-16774,-28149,-16789,-28140,-16803,-28132,-16817,-28123,-16832,-28114,-16846,-28106,-16860,-28097,-16875,-28088,-16889,-28080,-16904,-28071,-16918,-28063,-16932,-28054,-16947,-28045,-16961,-28037,-16975,-28028,-16990,-28019,-17004,-28010,-17018,-28002,-17033,-27993,-17047,-27984,-17061,-27976,-17075,-27967,-17090,-27958,-17104,-27949,-17118,-27941,-17133,-27932,-17147,-27923,-17161,-27914,-17175,-27906,-17190,-27897,-17204,-27888,-17218,-27879,-17233,-27870,-17247,-27862,-17261,-27853,-17275,-27844,-17289,-27835,-17304,-27826,-17318,-27817,-17332,-27809,-17346,-27800,-17361,-27791,-17375,-27782,-17389,-27773,-17403,-27764,-17417,-27755,-17432,-27746,-17446,-27737,-17460,-27729,-17474,-27720,-17488,-27711,-17502,-27702,-17517,-27693,-17531,-27684,-17545,-27675,-17559,-27666,-17573,-27657,-17587,-27648,-17601,-27639,-17616,-27630,-17630,-27621,-17644,-27612,-17658,-27603,-17672,-27594,-17686,-27585,-17700,-27576,-17714,-27567,-17728,-27558,-17743,-27549,-17757,-27539,-17771,-27530,-17785,-27521,-17799,-27512,-17813,-27503,-17827,-27494,-17841,-27485,-17855,-27476,-17869,-27467,-17883,-27457,-17897,-27448,-17911,-27439,-17925,-27430,-17939,-27421,-17953,-27412,-17967,-27402,-17981,-27393,-17995,-27384,-18009,-27375,-18023,-27366,-18037,-27356,-18051,-27347,-18065,-27338,-18079,-27329,-18093,-27320,-18107,-27310,-18121,-27301,-18135,-27292,-18149,-27282,-18163,-27273,-18177,-27264,-18191,-27255,-18205,-27245,-18219,-27236,-18233,-27227,-18247,-27217,-18261,-27208,-18274,-27199,-18288,-27189,-18302,-27180,-18316,-27171,-18330,-27161,-18344,-27152,-18358,-27142,-18372,-27133,-18386,-27124,-18399,-27114,-18413,-27105,-18427,-27095,-18441,-27086,-18455,-27077,-18469,-27067,-18483,-27058,-18496,-27048,-18510,-27039,-18524,-27029,-18538,-27020,-18552,-27010,-18565,-27001,-18579,-26991,-18593,-26982,-18607,-26972,-18621,-26963,-18634,-26953,-18648,-26944,-18662,-26934,-18676,-26925,-18690,-26915,-18703,-26906,-18717,-26896,-18731,-26886,-18745,-26877,-18758,-26867,-18772,-26858,-18786,-26848,-18799,-26838,-18813,-26829,-18827,-26819,-18841,-26810,-18854,-26800,-18868,-26790,-18882,-26781,-18895,-26771,-18909,-26761,-18923,-26752,-18936,-26742,-18950,-26732,-18964,-26723,-18977,-26713,-18991,-26703,-19005,-26693,-19018,-26684,-19032,-26674,-19046,-26664,-19059,-26655,-19073,-26645,-19087,-26635,-19100,-26625,-19114,-26616,-19127,-26606,-19141,-26596,-19155,-26586,-19168,-26576,-19182,-26567,-19195,-26557,-19209,-26547,-19222,-26537,-19236,-26527,-19250,-26517,-19263,-26508,-19277,-26498,-19290,-26488,-19304,-26478,-19317,-26468,-19331,-26458,-19344,-26448,-19358,-26438,-19371,-26429,-19385,-26419,-19398,-26409,-19412,-26399,-19425,-26389,-19439,-26379,-19452,-26369,-19466,-26359,-19479,-26349,-19493,-26339,-19506,-26329,-19520,-26319,-19533,-26309,-19547,-26299,-19560,-26289,-19574,-26279,-19587,-26269,-19600,-26259,-19614,-26249,-19627,-26239,-19641,-26229,-19654,-26219,-19668,-26209,-19681,-26199,-19694,-26189,-19708,-26179,-19721,-26169,-19734,-26159,-19748,-26149,-19761,-26138,-19775,-26128,-19788,-26118,-19801,-26108,-19815,-26098,-19828,-26088,-19841,-26078,-19855,-26068,-19868,-26057,-19881,-26047,-19895,-26037,-19908,-26027,-19921,-26017,-19934,-26007,-19948,-25996,-19961,-25986,-19974,-25976,-19988,-25966,-20001,-25955,-20014,-25945,-20027,-25935,-20041,-25925,-20054,-25914,-20067,-25904,-20080,-25894,-20094,-25884,-20107,-25873,-20120,-25863,-20133,-25853,-20147,-25843,-20160,-25832,-20173,-25822,-20186,-25812,-20199,-25801,-20213,-25791,-20226,-25781,-20239,-25770,-20252,-25760,-20265,-25750,-20278,-25739,-20292,-25729,-20305,-25718,-20318,-25708,-20331,-25698,-20344,-25687,-20357,-25677,-20370,-25666,-20384,-25656,-20397,-25646,-20410,-25635,-20423,-25625,-20436,-25614,-20449,-25604,-20462,-25593,-20475,-25583,-20488,-25572,-20501,-25562,-20514,-25551,-20528,-25541,-20541,-25530,-20554,-25520,-20567,-25509,-20580,-25499,-20593,-25488,-20606,-25478,-20619,-25467,-20632,-25457,-20645,-25446,-20658,-25436,-20671,-25425,-20684,-25415,-20697,-25404,-20710,-25393,-20723,-25383,-20736,-25372,-20749,-25362,-20762,-25351,-20775,-25340,-20788,-25330,-20801,-25319,-20814,-25308,-20826,-25298,-20839,-25287,-20852,-25277,-20865,-25266,-20878,-25255,-20891,-25244,-20904,-25234,-20917,-25223,-20930,-25212,-20943,-25202,-20956,-25191,-20968,-25180,-20981,-25170,-20994,-25159,-21007,-25148,-21020,-25137,-21033,-25127,-21046,-25116,-21058,-25105,-21071,-25094,-21084,-25084,-21097,-25073,-21110,-25062,-21123,-25051,-21135,-25040,-21148,-25030,-21161,-25019,-21174,-25008,-21187,-24997,-21199,-24986,-21212,-24975,-21225,-24965,-21238,-24954,-21250,-24943,-21263,-24932,-21276,-24921,-21289,-24910,-21301,-24899,-21314,-24888,-21327,-24878,-21340,-24867,-21352,-24856,-21365,-24845,-21378,-24834,-21390,-24823,-21403,-24812,-21416,-24801,-21428,-24790,-21441,-24779,-21454,-24768,-21466,-24757,-21479,-24746,-21492,-24735,-21504,-24724,-21517,-24713,-21530,-24702,-21542,-24691,-21555,-24680,-21567,-24669,-21580,-24658,-21593,-24647,-21605,-24636,-21618,-24625,-21630,-24614,-21643,-24603,-21656,-24592,-21668,-24581,-21681,-24570,-21693,-24559,-21706,-24547,-21718,-24536,-21731,-24525,-21744,-24514,-21756,-24503,-21769,-24492,-21781,-24481,-21794,-24470,-21806,-24458,-21819,-24447,-21831,-24436,-21844,-24425,-21856,-24414,-21869,-24403,-21881,-24391,-21894,-24380,-21906,-24369,-21918,-24358,-21931,-24347,-21943,-24335,-21956,-24324,-21968,-24313,-21981,-24302,-21993,-24290,-22005,-24279,-22018,-24268,-22030,-24257,-22043,-24245,-22055,-24234,-22067,-24223,-22080,-24212,-22092,-24200,-22105,-24189,-22117,-24178,-22129,-24166,-22142,-24155,-22154,-24144,-22166,-24132,-22179,-24121,-22191,-24110,-22203,-24098,-22216,-24087,-22228,-24076,-22240,-24064,-22253,-24053,-22265,-24042,-22277,-24030,-22289,-24019,-22302,-24007,-22314,-23996,-22326,-23985,-22339,-23973,-22351,-23962,-22363,-23950,-22375,-23939,-22388,-23927,-22400,-23916,-22412,-23904,-22424,-23893,-22436,-23882,-22449,-23870,-22461,-23859,-22473,-23847,-22485,-23836,-22497,-23824,-22510,-23813,-22522,-23801,-22534,-23790,-22546,-23778,-22558,-23767,-22570,-23755,-22583,-23743,-22595,-23732,-22607,-23720,-22619,-23709,-22631,-23697,-22643,-23686,-22655,-23674,-22667,-23662,-22679,-23651,-22692,-23639,-22704,-23628,-22716,-23616,-22728,-23604,-22740,-23593,-22752,-23581,-22764,-23570,-22776,-23558,-22788,-23546,-22800,-23535,-22812,-23523,-22824,-23511,-22836,-23500,-22848,-23488,-22860,-23476,-22872,-23465,-22884,-23453,-22896,-23441,-22908,-23429,-22920,-23418,-22932,-23406,-22944,-23394,-22956,-23383,-22968,-23371,-22980,-23359,-22992,-23347,-23004,-23336,-23016,-23324,-23028,-23312,-23040,-23300,-23051,-23288,-23063,-23277,-23075,-23265,-23087,-23253,-23099,-23241,-23111,-23229,-23123,-23218,-23135,-23206,-23147,-23194,-23158,-23182,-23170,-23170,-23182,-23158,-23194,-23147,-23206,-23135,-23218,-23123,-23229,-23111,-23241,-23099,-23253,-23087,-23265,-23075,-23277,-23063,-23288,-23051,-23300,-23040,-23312,-23028,-23324,-23016,-23336,-23004,-23347,-22992,-23359,-22980,-23371,-22968,-23383,-22956,-23394,-22944,-23406,-22932,-23418,-22920,-23429,-22908,-23441,-22896,-23453,-22884,-23465,-22872,-23476,-22860,-23488,-22848,-23500,-22836,-23511,-22824,-23523,-22812,-23535,-22800,-23546,-22788,-23558,-22776,-23570,-22764,-23581,-22752,-23593,-22740,-23604,-22728,-23616,-22716,-23628,-22704,-23639,-22692,-23651,-22679,-23662,-22667,-23674,-22655,-23686,-22643,-23697,-22631,-23709,-22619,-23720,-22607,-23732,-22595,-23743,-22583,-23755,-22570,-23767,-22558,-23778,-22546,-23790,-22534,-23801,-22522,-23813,-22510,-23824,-22497,-23836,-22485,-23847,-22473,-23859,-22461,-23870,-22449,-23882,-22436,-23893,-22424,-23904,-22412,-23916,-22400,-23927,-22388,-23939,-22375,-23950,-22363,-23962,-22351,-23973,-22339,-23985,-22326,-23996,-22314,-24007,-22302,-24019,-22289,-24030,-22277,-24042,-22265,-24053,-22253,-24064,-22240,-24076,-22228,-24087,-22216,-24098,-22203,-24110,-22191,-24121,-22179,-24132,-22166,-24144,-22154,-24155,-22142,-24166,-22129,-24178,-22117,-24189,-22105,-24200,-22092,-24212,-22080,-24223,-22067,-24234,-22055,-24245,-22043,-24257,-22030,-24268,-22018,-24279,-22005,-24290,-21993,-24302,-21981,-24313,-21968,-24324,-21956,-24335,-21943,-24347,-21931,-24358,-21918,-24369,-21906,-24380,-21894,-24391,-21881,-24403,-21869,-24414,-21856,-24425,-21844,-24436,-21831,-24447,-21819,-24458,-21806,-24470,-21794,-24481,-21781,-24492,-21769,-24503,-21756,-24514,-21744,-24525,-21731,-24536,-21718,-24547,-21706,-24559,-21693,-24570,-21681,-24581,-21668,-24592,-21656,-24603,-21643,-24614,-21630,-24625,-21618,-24636,-21605,-24647,-21593,-24658,-21580,-24669,-21567,-24680,-21555,-24691,-21542,-24702,-21530,-24713,-21517,-24724,-21504,-24735,-21492,-24746,-21479,-24757,-21466,-24768,-21454,-24779,-21441,-24790,-21428,-24801,-21416,-24812,-21403,-24823,-21390,-24834,-21378,-24845,-21365,-24856,-21352,-24867,-21340,-24878,-21327,-24888,-21314,-24899,-21301,-24910,-21289,-24921,-21276,-24932,-21263,-24943,-21250,-24954,-21238,-24965,-21225,-24975,-21212,-24986,-21199,-24997,-21187,-25008,-21174,-25019,-21161,-25030,-21148,-25040,-21135,-25051,-21123,-25062,-21110,-25073,-21097,-25084,-21084,-25094,-21071,-25105,-21058,-25116,-21046,-25127,-21033,-25137,-21020,-25148,-21007,-25159,-20994,-25170,-20981,-25180,-20968,-25191,-20956,-25202,-20943,-25212,-20930,-25223,-20917,-25234,-20904,-25244,-20891,-25255,-20878,-25266,-20865,-25277,-20852,-25287,-20839,-25298,-20826,-25308,-20814,-25319,-20801,-25330,-20788,-25340,-20775,-25351,-20762,-25362,-20749,-25372,-20736,-25383,-20723,-25393,-20710,-25404,-20697,-25415,-20684,-25425,-20671,-25436,-20658,-25446,-20645,-25457,-20632,-25467,-20619,-25478,-20606,-25488,-20593,-25499,-20580,-25509,-20567,-25520,-20554,-25530,-20541,-25541,-20528,-25551,-20514,-25562,-20501,-25572,-20488,-25583,-20475,-25593,-20462,-25604,-20449,-25614,-20436,-25625,-20423,-25635,-20410,-25646,-20397,-25656,-20384,-25666,-20370,-25677,-20357,-25687,-20344,-25698,-20331,-25708,-20318,-25718,-20305,-25729,-20292,-25739,-20278,-25750,-20265,-25760,-20252,-25770,-20239,-25781,-20226,-25791,-20213,-25801,-20199,-25812,-20186,-25822,-20173,-25832,-20160,-25843,-20147,-25853,-20133,-25863,-20120,-25873,-20107,-25884,-20094,-25894,-20080,-25904,-20067,-25914,-20054,-25925,-20041,-25935,-20027,-25945,-20014,-25955,-20001,-25966,-19988,-25976,-19974,-25986,-19961,-25996,-19948,-26007,-19934,-26017,-19921,-26027,-19908,-26037,-19895,-26047,-19881,-26057,-19868,-26068,-19855,-26078,-19841,-26088,-19828,-26098,-19815,-26108,-19801,-26118,-19788,-26128,-19775,-26138,-19761,-26149,-19748,-26159,-19734,-26169,-19721,-26179,-19708,-26189,-19694,-26199,-19681,-26209,-19668,-26219,-19654,-26229,-19641,-26239,-19627,-26249,-19614,-26259,-19600,-26269,-19587,-26279,-19574,-26289,-19560,-26299,-19547,-26309,-19533,-26319,-19520,-26329,-19506,-26339,-19493,-26349,-19479,-26359,-19466,-26369,-19452,-26379,-19439,-26389,-19425,-26399,-19412,-26409,-19398,-26419,-19385,-26429,-19371,-26438,-19358,-26448,-19344,-26458,-19331,-26468,-19317,-26478,-19304,-26488,-19290,-26498,-19277,-26508,-19263,-26517,-19250,-26527,-19236,-26537,-19222,-26547,-19209,-26557,-19195,-26567,-19182,-26576,-19168,-26586,-19155,-26596,-19141,-26606,-19127,-26616,-19114,-26625,-19100,-26635,-19087,-26645,-19073,-26655,-19059,-26664,-19046,-26674,-19032,-26684,-19018,-26693,-19005,-26703,-18991,-26713,-18977,-26723,-18964,-26732,-18950,-26742,-18936,-26752,-18923,-26761,-18909,-26771,-18895,-26781,-18882,-26790,-18868,-26800,-18854,-26810,-18841,-26819,-18827,-26829,-18813,-26838,-18799,-26848,-18786,-26858,-18772,-26867,-18758,-26877,-18745,-26886,-18731,-26896,-18717,-26906,-18703,-26915,-18690,-26925,-18676,-26934,-18662,-26944,-18648,-26953,-18634,-26963,-18621,-26972,-18607,-26982,-18593,-26991,-18579,-27001,-18565,-27010,-18552,-27020,-18538,-27029,-18524,-27039,-18510,-27048,-18496,-27058,-18483,-27067,-18469,-27077,-18455,-27086,-18441,-27095,-18427,-27105,-18413,-27114,-18399,-27124,-18386,-27133,-18372,-27142,-18358,-27152,-18344,-27161,-18330,-27171,-18316,-27180,-18302,-27189,-18288,-27199,-18274,-27208,-18261,-27217,-18247,-27227,-18233,-27236,-18219,-27245,-18205,-27255,-18191,-27264,-18177,-27273,-18163,-27282,-18149,-27292,-18135,-27301,-18121,-27310,-18107,-27320,-18093,-27329,-18079,-27338,-18065,-27347,-18051,-27356,-18037,-27366,-18023,-27375,-18009,-27384,-17995,-27393,-17981,-27402,-17967,-27412,-17953,-27421,-17939,-27430,-17925,-27439,-17911,-27448,-17897,-27457,-17883,-27467,-17869,-27476,-17855,-27485,-17841,-27494,-17827,-27503,-17813,-27512,-17799,-27521,-17785,-27530,-17771,-27539,-17757,-27549,-17743,-27558,-17728,-27567,-17714,-27576,-17700,-27585,-17686,-27594,-17672,-27603,-17658,-27612,-17644,-27621,-17630,-27630,-17616,-27639,-17601,-27648,-17587,-27657,-17573,-27666,-17559,-27675,-17545,-27684,-17531,-27693,-17517,-27702,-17502,-27711,-17488,-27720,-17474,-27729,-17460,-27737,-17446,-27746,-17432,-27755,-17417,-27764,-17403,-27773,-17389,-27782,-17375,-27791,-17361,-27800,-17346,-27809,-17332,-27817,-17318,-27826,-17304,-27835,-17289,-27844,-17275,-27853,-17261,-27862,-17247,-27870,-17233,-27879,-17218,-27888,-17204,-27897,-17190,-27906,-17175,-27914,-17161,-27923,-17147,-27932,-17133,-27941,-17118,-27949,-17104,-27958,-17090,-27967,-17075,-27976,-17061,-27984,-17047,-27993,-17033,-28002,-17018,-28010,-17004,-28019,-16990,-28028,-16975,-28037,-16961,-28045,-16947,-28054,-16932,-28063,-16918,-28071,-16904,-28080,-16889,-28088,-16875,-28097,-16860,-28106,-16846,-28114,-16832,-28123,-16817,-28132,-16803,-28140,-16789,-28149,-16774,-28157,-16760,-28166,-16745,-28174,-16731,-28183,-16717,-28191,-16702,-28200,-16688,-28209,-16673,-28217,-16659,-28226,-16644,-28234,-16630,-28243,-16616,-28251,-16601,-28260,-16587,-28268,-16572,-28276,-16558,-28285,-16543,-28293,-16529,-28302,-16514,-28310,-16500,-28319,-16485,-28327,-16471,-28336,-16456,-28344,-16442,-28352,-16428,-28361,-16413,-28369,-16399,-28378,-16384,-28386,-16369,-28394,-16355,-28403,-16340,-28411,-16326,-28419,-16311,-28428,-16297,-28436,-16282,-28444,-16268,-28453,-16253,-28461,-16239,-28469,-16224,-28478,-16210,-28486,-16195,-28494,-16180,-28502,-16166,-28511,-16151,-28519,-16137,-28527,-16122,-28535,-16108,-28544,-16093,-28552,-16078,-28560,-16064,-28568,-16049,-28576,-16035,-28585,-16020,-28593,-16005,-28601,-15991,-28609,-15976,-28617,-15961,-28626,-15947,-28634,-15932,-28642,-15918,-28650,-15903,-28658,-15888,-28666,-15874,-28674,-15859,-28682,-15844,-28691,-15830,-28699,-15815,-28707,-15800,-28715,-15786,-28723,-15771,-28731,-15756,-28739,-15741,-28747,-15727,-28755,-15712,-28763,-15697,-28771,-15683,-28779,-15668,-28787,-15653,-28795,-15639,-28803,-15624,-28811,-15609,-28819,-15594,-28827,-15580,-28835,-15565,-28843,-15550,-28851,-15535,-28859,-15521,-28867,-15506,-28875,-15491,-28883,-15476,-28891,-15462,-28898,-15447,-28906,-15432,-28914,-15417,-28922,-15402,-28930,-15388,-28938,-15373,-28946,-15358,-28954,-15343,-28961,-15328,-28969,-15314,-28977,-15299,-28985,-15284,-28993,-15269,-29000,-15254,-29008,-15239,-29016,-15225,-29024,-15210,-29032,-15195,-29039,-15180,-29047,-15165,-29055,-15150,-29063,-15136,-29070,-15121,-29078,-15106,-29086,-15091,-29093,-15076,-29101,-15061,-29109,-15046,-29117,-15031,-29124,-15017,-29132,-15002,-29140,-14987,-29147,-14972,-29155,-14957,-29163,-14942,-29170,-14927,-29178,-14912,-29185,-14897,-29193,-14882,-29201,-14867,-29208,-14853,-29216,-14838,-29223,-14823,-29231,-14808,-29239,-14793,-29246,-14778,-29254,-14763,-29261,-14748,-29269,-14733,-29276,-14718,-29284,-14703,-29291,-14688,-29299,-14673,-29306,-14658,-29314,-14643,-29321,-14628,-29329,-14613,-29336,-14598,-29344,-14583,-29351,-14568,-29359,-14553,-29366,-14538,-29373,-14523,-29381,-14508,-29388,-14493,-29396,-14478,-29403,-14463,-29411,-14448,-29418,-14433,-29425,-14418,-29433,-14403,-29440,-14388,-29447,-14373,-29455,-14358,-29462,-14343,-29469,-14327,-29477,-14312,-29484,-14297,-29491,-14282,-29499,-14267,-29506,-14252,-29513,-14237,-29520,-14222,-29528,-14207,-29535,-14192,-29542,-14177,-29549,-14161,-29557,-14146,-29564,-14131,-29571,-14116,-29578,-14101,-29586,-14086,-29593,-14071,-29600,-14056,-29607,-14040,-29614,-14025,-29622,-14010,-29629,-13995,-29636,-13980,-29643,-13965,-29650,-13950,-29657,-13934,-29664,-13919,-29671,-13904,-29679,-13889,-29686,-13874,-29693,-13859,-29700,-13843,-29707,-13828,-29714,-13813,-29721,-13798,-29728,-13783,-29735,-13767,-29742,-13752,-29749,-13737,-29756,-13722,-29763,-13707,-29770,-13691,-29777,-13676,-29784,-13661,-29791,-13646,-29798,-13630,-29805,-13615,-29812,-13600,-29819,-13585,-29826,-13569,-29833,-13554,-29840,-13539,-29847,-13524,-29854,-13508,-29861,-13493,-29867,-13478,-29874,-13463,-29881,-13447,-29888,-13432,-29895,-13417,-29902,-13401,-29909,-13386,-29916,-13371,-29922,-13356,-29929,-13340,-29936,-13325,-29943,-13310,-29950,-13294,-29956,-13279,-29963,-13264,-29970,-13248,-29977,-13233,-29984,-13218,-29990,-13202,-29997,-13187,-30004,-13172,-30010,-13156,-30017,-13141,-30024,-13126,-30031,-13110,-30037,-13095,-30044,-13080,-30051,-13064,-30057,-13049,-30064,-13034,-30071,-13018,-30077,-13003,-30084,-12987,-30091,-12972,-30097,-12957,-30104,-12941,-30110,-12926,-30117,-12910,-30124,-12895,-30130,-12880,-30137,-12864,-30143,-12849,-30150,-12833,-30157,-12818,-30163,-12803,-30170,-12787,-30176,-12772,-30183,-12756,-30189,-12741,-30196,-12725,-30202,-12710,-30209,-12695,-30215,-12679,-30222,-12664,-30228,-12648,-30235,-12633,-30241,-12617,-30248,-12602,-30254,-12586,-30260,-12571,-30267,-12555,-30273,-12540,-30280,-12524,-30286,-12509,-30292,-12493,-30299,-12478,-30305,-12462,-30312,-12447,-30318,-12431,-30324,-12416,-30331,-12400,-30337,-12385,-30343,-12369,-30350,-12354,-30356,-12338,-30362,-12323,-30369,-12307,-30375,-12292,-30381,-12276,-30387,-12261,-30394,-12245,-30400,-12230,-30406,-12214,-30412,-12199,-30419,-12183,-30425,-12167,-30431,-12152,-30437,-12136,-30443,-12121,-30450,-12105,-30456,-12090,-30462,-12074,-30468,-12058,-30474,-12043,-30481,-12027,-30487,-12012,-30493,-11996,-30499,-11981,-30505,-11965,-30511,-11949,-30517,-11934,-30523,-11918,-30529,-11903,-30536,-11887,-30542,-11871,-30548,-11856,-30554,-11840,-30560,-11824,-30566,-11809,-30572,-11793,-30578,-11778,-30584,-11762,-30590,-11746,-30596,-11731,-30602,-11715,-30608,-11699,-30614,-11684,-30620,-11668,-30626,-11652,-30632,-11637,-30638,-11621,-30644,-11605,-30650,-11590,-30656,-11574,-30661,-11558,-30667,-11543,-30673,-11527,-30679,-11511,-30685,-11496,-30691,-11480,-30697,-11464,-30703,-11449,-30708,-11433,-30714,-11417,-30720,-11401,-30726,-11386,-30732,-11370,-30738,-11354,-30743,-11339,-30749,-11323,-30755,-11307,-30761,-11291,-30767,-11276,-30772,-11260,-30778,-11244,-30784,-11228,-30789,-11213,-30795,-11197,-30801,-11181,-30807,-11165,-30812,-11150,-30818,-11134,-30824,-11118,-30829,-11102,-30835,-11087,-30841,-11071,-30846,-11055,-30852,-11039,-30858,-11024,-30863,-11008,-30869,-10992,-30875,-10976,-30880,-10960,-30886,-10945,-30891,-10929,-30897,-10913,-30903,-10897,-30908,-10881,-30914,-10866,-30919,-10850,-30925,-10834,-30930,-10818,-30936,-10802,-30941,-10787,-30947,-10771,-30952,-10755,-30958,-10739,-30963,-10723,-30969,-10707,-30974,-10692,-30980,-10676,-30985,-10660,-30991,-10644,-30996,-10628,-31002,-10612,-31007,-10597,-31012,-10581,-31018,-10565,-31023,-10549,-31029,-10533,-31034,-10517,-31039,-10501,-31045,-10485,-31050,-10470,-31055,-10454,-31061,-10438,-31066,-10422,-31071,-10406,-31077,-10390,-31082,-10374,-31087,-10358,-31093,-10343,-31098,-10327,-31103,-10311,-31108,-10295,-31114,-10279,-31119,-10263,-31124,-10247,-31129,-10231,-31135,-10215,-31140,-10199,-31145,-10183,-31150,-10167,-31155,-10152,-31161,-10136,-31166,-10120,-31171,-10104,-31176,-10088,-31181,-10072,-31186,-10056,-31192,-10040,-31197,-10024,-31202,-10008,-31207,-9992,-31212,-9976,-31217,-9960,-31222,-9944,-31227,-9928,-31232,-9912,-31237,-9896,-31243,-9880,-31248,-9864,-31253,-9848,-31258,-9832,-31263,-9816,-31268,-9800,-31273,-9784,-31278,-9768,-31283,-9752,-31288,-9736,-31293,-9720,-31298,-9704,-31303,-9688,-31308,-9672,-31312,-9656,-31317,-9640,-31322,-9624,-31327,-9608,-31332,-9592,-31337,-9576,-31342,-9560,-31347,-9544,-31352,-9528,-31357,-9512,-31361,-9496,-31366,-9480,-31371,-9464,-31376,-9448,-31381,-9432,-31386,-9416,-31390,-9400,-31395,-9384,-31400,-9368,-31405,-9352,-31410,-9336,-31414,-9320,-31419,-9304,-31424,-9288,-31429,-9271,-31433,-9255,-31438,-9239,-31443,-9223,-31447,-9207,-31452,-9191,-31457,-9175,-31462,-9159,-31466,-9143,-31471,-9127,-31476,-9111,-31480,-9095,-31485,-9078,-31490,-9062,-31494,-9046,-31499,-9030,-31503,-9014,-31508,-8998,-31513,-8982,-31517,-8966,-31522,-8950,-31526,-8933,-31531,-8917,-31535,-8901,-31540,-8885,-31545,-8869,-31549,-8853,-31554,-8837,-31558,-8821,-31563,-8804,-31567,-8788,-31572,-8772,-31576,-8756,-31581,-8740,-31585,-8724,-31589,-8708,-31594,-8691,-31598,-8675,-31603,-8659,-31607,-8643,-31612,-8627,-31616,-8611,-31620,-8594,-31625,-8578,-31629,-8562,-31634,-8546,-31638,-8530,-31642,-8514,-31647,-8497,-31651,-8481,-31655,-8465,-31660,-8449,-31664,-8433,-31668,-8416,-31673,-8400,-31677,-8384,-31681,-8368,-31685,-8352,-31690,-8335,-31694,-8319,-31698,-8303,-31702,-8287,-31707,-8271,-31711,-8254,-31715,-8238,-31719,-8222,-31724,-8206,-31728,-8190,-31732,-8173,-31736,-8157,-31740,-8141,-31744,-8125,-31749,-8108,-31753,-8092,-31757,-8076,-31761,-8060,-31765,-8043,-31769,-8027,-31773,-8011,-31777,-7995,-31781,-7978,-31786,-7962,-31790,-7946,-31794,-7930,-31798,-7913,-31802,-7897,-31806,-7881,-31810,-7865,-31814,-7848,-31818,-7832,-31822,-7816,-31826,-7800,-31830,-7783,-31834,-7767,-31838,-7751,-31842,-7734,-31846,-7718,-31850,-7702,-31854,-7686,-31857,-7669,-31861,-7653,-31865,-7637,-31869,-7620,-31873,-7604,-31877,-7588,-31881,-7572,-31885,-7555,-31889,-7539,-31892,-7523,-31896,-7506,-31900,-7490,-31904,-7474,-31908,-7457,-31912,-7441,-31915,-7425,-31919,-7408,-31923,-7392,-31927,-7376,-31930,-7359,-31934,-7343,-31938,-7327,-31942,-7311,-31945,-7294,-31949,-7278,-31953,-7262,-31957,-7245,-31960,-7229,-31964,-7212,-31968,-7196,-31971,-7180,-31975,-7163,-31979,-7147,-31982,-7131,-31986,-7114,-31990,-7098,-31993,-7082,-31997,-7065,-32000,-7049,-32004,-7033,-32008,-7016,-32011,-7000,-32015,-6983,-32018,-6967,-32022,-6951,-32025,-6934,-32029,-6918,-32033,-6902,-32036,-6885,-32040,-6869,-32043,-6852,-32047,-6836,-32050,-6820,-32054,-6803,-32057,-6787,-32060,-6771,-32064,-6754,-32067,-6738,-32071,-6721,-32074,-6705,-32078,-6689,-32081,-6672,-32085,-6656,-32088,-6639,-32091,-6623,-32095,-6607,-32098,-6590,-32101,-6574,-32105,-6557,-32108,-6541,-32111,-6524,-32115,-6508,-32118,-6492,-32121,-6475,-32125,-6459,-32128,-6442,-32131,-6426,-32135,-6409,-32138,-6393,-32141,-6377,-32144,-6360,-32148,-6344,-32151,-6327,-32154,-6311,-32157,-6294,-32161,-6278,-32164,-6262,-32167,-6245,-32170,-6229,-32173,-6212,-32177,-6196,-32180,-6179,-32183,-6163,-32186,-6146,-32189,-6130,-32192,-6113,-32195,-6097,-32198,-6081,-32202,-6064,-32205,-6048,-32208,-6031,-32211,-6015,-32214,-5998,-32217,-5982,-32220,-5965,-32223,-5949,-32226,-5932,-32229,-5916,-32232,-5899,-32235,-5883,-32238,-5866,-32241,-5850,-32244,-5833,-32247,-5817,-32250,-5800,-32253,-5784,-32256,-5767,-32259,-5751,-32262,-5734,-32265,-5718,-32268,-5701,-32271,-5685,-32274,-5668,-32276,-5652,-32279,-5635,-32282,-5619,-32285,-5602,-32288,-5586,-32291,-5569,-32294,-5553,-32296,-5536,-32299,-5520,-32302,-5503,-32305,-5487,-32308,-5470,-32311,-5454,-32313,-5437,-32316,-5421,-32319,-5404,-32322,-5388,-32324,-5371,-32327,-5355,-32330,-5338,-32333,-5322,-32335,-5305,-32338,-5288,-32341,-5272,-32343,-5255,-32346,-5239,-32349,-5222,-32351,-5206,-32354,-5189,-32357,-5173,-32359,-5156,-32362,-5140,-32365,-5123,-32367,-5107,-32370,-5090,-32372,-5073,-32375,-5057,-32378,-5040,-32380,-5024,-32383,-5007,-32385,-4991,-32388,-4974,-32390,-4958,-32393,-4941,-32395,-4924,-32398,-4908,-32400,-4891,-32403,-4875,-32405,-4858,-32408,-4842,-32410,-4825,-32413,-4808,-32415,-4792,-32418,-4775,-32420,-4759,-32423,-4742,-32425,-4726,-32427,-4709,-32430,-4692,-32432,-4676,-32435,-4659,-32437,-4643,-32439,-4626,-32442,-4609,-32444,-4593,-32446,-4576,-32449,-4560,-32451,-4543,-32453,-4526,-32456,-4510,-32458,-4493,-32460,-4477,-32463,-4460,-32465,-4444,-32467,-4427,-32469,-4410,-32472,-4394,-32474,-4377,-32476,-4360,-32478,-4344,-32481,-4327,-32483,-4311,-32485,-4294,-32487,-4277,-32489,-4261,-32492,-4244,-32494,-4228,-32496,-4211,-32498,-4194,-32500,-4178,-32502,-4161,-32504,-4145,-32507,-4128,-32509,-4111,-32511,-4095,-32513,-4078,-32515,-4061,-32517,-4045,-32519,-4028,-32521,-4012,-32523,-3995,-32525,-3978,-32527,-3962,-32529,-3945,-32531,-3928,-32533,-3912,-32535,-3895,-32537,-3878,-32539,-3862,-32541,-3845,-32543,-3829,-32545,-3812,-32547,-3795,-32549,-3779,-32551,-3762,-32553,-3745,-32555,-3729,-32557,-3712,-32559,-3695,-32560,-3679,-32562,-3662,-32564,-3645,-32566,-3629,-32568,-3612,-32570,-3595,-32572,-3579,-32573,-3562,-32575,-3546,-32577,-3529,-32579,-3512,-32581,-3496,-32582,-3479,-32584,-3462,-32586,-3446,-32588,-3429,-32589,-3412,-32591,-3396,-32593,-3379,-32595,-3362,-32596,-3346,-32598,-3329,-32600,-3312,-32601,-3296,-32603,-3279,-32605,-3262,-32606,-3246,-32608,-3229,-32610,-3212,-32611,-3196,-32613,-3179,-32615,-3162,-32616,-3146,-32618,-3129,-32619,-3112,-32621,-3095,-32623,-3079,-32624,-3062,-32626,-3045,-32627,-3029,-32629,-3012,-32630,-2995,-32632,-2979,-32633,-2962,-32635,-2945,-32636,-2929,-32638,-2912,-32639,-2895,-32641,-2879,-32642,-2862,-32644,-2845,-32645,-2829,-32647,-2812,-32648,-2795,-32650,-2778,-32651,-2762,-32652,-2745,-32654,-2728,-32655,-2712,-32657,-2695,-32658,-2678,-32659,-2662,-32661,-2645,-32662,-2628,-32663,-2611,-32665,-2595,-32666,-2578,-32667,-2561,-32669,-2545,-32670,-2528,-32671,-2511,-32672,-2495,-32674,-2478,-32675,-2461,-32676,-2444,-32677,-2428,-32679,-2411,-32680,-2394,-32681,-2378,-32682,-2361,-32684,-2344,-32685,-2327,-32686,-2311,-32687,-2294,-32688,-2277,-32689,-2261,-32691,-2244,-32692,-2227,-32693,-2210,-32694,-2194,-32695,-2177,-32696,-2160,-32697,-2144,-32698,-2127,-32700,-2110,-32701,-2093,-32702,-2077,-32703,-2060,-32704,-2043,-32705,-2027,-32706,-2010,-32707,-1993,-32708,-1976,-32709,-1960,-32710,-1943,-32711,-1926,-32712,-1909,-32713,-1893,-32714,-1876,-32715,-1859,-32716,-1843,-32717,-1826,-32718,-1809,-32718,-1792,-32719,-1776,-32720,-1759,-32721,-1742,-32722,-1725,-32723,-1709,-32724,-1692,-32725,-1675,-32726,-1659,-32726,-1642,-32727,-1625,-32728,-1608,-32729,-1592,-32730,-1575,-32730,-1558,-32731,-1541,-32732,-1525,-32733,-1508,-32734,-1491,-32734,-1474,-32735,-1458,-32736,-1441,-32737,-1424,-32737,-1407,-32738,-1391,-32739,-1374,-32739,-1357,-32740,-1340,-32741,-1324,-32741,-1307,-32742,-1290,-32743,-1274,-32743,-1257,-32744,-1240,-32745,-1223,-32745,-1207,-32746,-1190,-32747,-1173,-32747,-1156,-32748,-1140,-32748,-1123,-32749,-1106,-32749,-1089,-32750,-1073,-32751,-1056,-32751,-1039,-32752,-1022,-32752,-1006,-32753,-989,-32753,-972,-32754,-955,-32754,-939,-32755,-922,-32755,-905,-32755,-888,-32756,-872,-32756,-855,-32757,-838,-32757,-821,-32758,-805,-32758,-788,-32758,-771,-32759,-754,-32759,-738,-32760,-721,-32760,-704,-32760,-687,-32761,-671,-32761,-654,-32761,-637,-32762,-620,-32762,-604,-32762,-587,-32763,-570,-32763,-553,-32763,-537,-32763,-520,-32764,-503,-32764,-486,-32764,-470,-32764,-453,-32765,-436,-32765,-419,-32765,-403,-32765,-386,-32765,-369,-32766,-352,-32766,-336,-32766,-319,-32766,-302,-32766,-285,-32766,-269,-32767,-252,-32767,-235,-32767,-218,-32767,-202,-32767,-185,-32767,-168,-32767,-151,-32767,-135,-32767,-118,-32767,-101,-32767,-84,-32767,-68,-32767,-51,-32767,-34,-32767,-17,-32767,-1,-32767,16,-32767,33,-32767,50,-32767,67,-32767,83,-32767,100,-32767,117,-32767,134,-32767,150,-32767,167,-32767,184,-32767,201,-32767,217,-32767,234,-32767,251,-32766,268,-32766,284,-32766,301,-32766,318,-32766,335,-32766,351,-32765,368,-32765,385,-32765,402,-32765,418,-32765,435,-32764,452,-32764,469,-32764,485,-32764,502,-32763,519,-32763,536,-32763,552,-32763,569,-32762,586,-32762,603,-32762,619,-32761,636,-32761,653,-32761,670,-32760,686,-32760,703,-32760,720,-32759,737,-32759,753,-32758,770,-32758,787,-32758,804,-32757,820,-32757,837,-32756,854,-32756,871,-32755,887,-32755,904,-32755,921,-32754,938,-32754,954,-32753,971,-32753,988,-32752,1005,-32752,1021,-32751,1038,-32751,1055,-32750,1072,-32749,1088,-32749,1105,-32748,1122,-32748,1139,-32747,1155,-32747,1172,-32746,1189,-32745,1206,-32745,1222,-32744,1239,-32743,1256,-32743,1273,-32742,1289,-32741,1306,-32741,1323,-32740,1339,-32739,1356,-32739,1373,-32738,1390,-32737,1406,-32737,1423,-32736,1440,-32735,1457,-32734,1473,-32734,1490,-32733,1507,-32732,1524,-32731,1540,-32730,1557,-32730,1574,-32729,1591,-32728,1607,-32727,1624,-32726,1641,-32726,1658,-32725,1674,-32724,1691,-32723,1708,-32722,1724,-32721,1741,-32720,1758,-32719,1775,-32718,1791,-32718,1808,-32717,1825,-32716,1842,-32715,1858,-32714,1875,-32713,1892,-32712,1908,-32711,1925,-32710,1942,-32709,1959,-32708,1975,-32707,1992,-32706,2009,-32705,2026,-32704,2042,-32703,2059,-32702,2076,-32701,2092,-32700,2109,-32698,2126,-32697,2143,-32696,2159,-32695,2176,-32694,2193,-32693,2209,-32692,2226,-32691,2243,-32689,2260,-32688,2276,-32687,2293,-32686,2310,-32685,2326,-32684,2343,-32682,2360,-32681,2377,-32680,2393,-32679,2410,-32677,2427,-32676,2443,-32675,2460,-32674,2477,-32672,2494,-32671,2510,-32670,2527,-32669,2544,-32667,2560,-32666,2577,-32665,2594,-32663,2610,-32662,2627,-32661,2644,-32659,2661,-32658,2677,-32657,2694,-32655,2711,-32654,2727,-32652,2744,-32651,2761,-32650,2777,-32648,2794,-32647,2811,-32645,2828,-32644,2844,-32642,2861,-32641,2878,-32639,2894,-32638,2911,-32636,2928,-32635,2944,-32633,2961,-32632,2978,-32630,2994,-32629,3011,-32627,3028,-32626,3044,-32624,3061,-32623,3078,-32621,3094,-32619,3111,-32618,3128,-32616,3145,-32615,3161,-32613,3178,-32611,3195,-32610,3211,-32608,3228,-32606,3245,-32605,3261,-32603,3278,-32601,3295,-32600,3311,-32598,3328,-32596,3345,-32595,3361,-32593,3378,-32591,3395,-32589,3411,-32588,3428,-32586,3445,-32584,3461,-32582,3478,-32581,3495,-32579,3511,-32577,3528,-32575,3545,-32573,3561,-32572,3578,-32570,3594,-32568,3611,-32566,3628,-32564,3644,-32562,3661,-32560,3678,-32559,3694,-32557,3711,-32555,3728,-32553,3744,-32551,3761,-32549,3778,-32547,3794,-32545,3811,-32543,3828,-32541,3844,-32539,3861,-32537,3877,-32535,3894,-32533,3911,-32531,3927,-32529,3944,-32527,3961,-32525,3977,-32523,3994,-32521,4011,-32519,4027,-32517,4044,-32515,4060,-32513,4077,-32511,4094,-32509,4110,-32507,4127,-32504,4144,-32502,4160,-32500,4177,-32498,4193,-32496,4210,-32494,4227,-32492,4243,-32489,4260,-32487,4276,-32485,4293,-32483,4310,-32481,4326,-32478,4343,-32476,4359,-32474,4376,-32472,4393,-32469,4409,-32467,4426,-32465,4443,-32463,4459,-32460,4476,-32458,4492,-32456,4509,-32453,4525,-32451,4542,-32449,4559,-32446,4575,-32444,4592,-32442,4608,-32439,4625,-32437,4642,-32435,4658,-32432,4675,-32430,4691,-32427,4708,-32425,4725,-32423,4741,-32420,4758,-32418,4774,-32415,4791,-32413,4807,-32410,4824,-32408,4841,-32405,4857,-32403,4874,-32400,4890,-32398,4907,-32395,4923,-32393,4940,-32390,4957,-32388,4973,-32385,4990,-32383,5006,-32380,5023,-32378,5039,-32375,5056,-32372,5072,-32370,5089,-32367,5106,-32365,5122,-32362,5139,-32359,5155,-32357,5172,-32354,5188,-32351,5205,-32349,5221,-32346,5238,-32343,5254,-32341,5271,-32338,5287,-32335,5304,-32333,5321,-32330,5337,-32327,5354,-32324,5370,-32322,5387,-32319,5403,-32316,5420,-32313,5436,-32311,5453,-32308,5469,-32305,5486,-32302,5502,-32299,5519,-32296,5535,-32294,5552,-32291,5568,-32288,5585,-32285,5601,-32282,5618,-32279,5634,-32276,5651,-32274,5667,-32271,5684,-32268,5700,-32265,5717,-32262,5733,-32259,5750,-32256,5766,-32253,5783,-32250,5799,-32247,5816,-32244,5832,-32241,5849,-32238,5865,-32235,5882,-32232,5898,-32229,5915,-32226,5931,-32223,5948,-32220,5964,-32217,5981,-32214,5997,-32211,6014,-32208,6030,-32205,6047,-32202,6063,-32198,6080,-32195,6096,-32192,6112,-32189,6129,-32186,6145,-32183,6162,-32180,6178,-32177,6195,-32173,6211,-32170,6228,-32167,6244,-32164,6261,-32161,6277,-32157,6293,-32154,6310,-32151,6326,-32148,6343,-32144,6359,-32141,6376,-32138,6392,-32135,6408,-32131,6425,-32128,6441,-32125,6458,-32121,6474,-32118,6491,-32115,6507,-32111,6523,-32108,6540,-32105,6556,-32101,6573,-32098,6589,-32095,6606,-32091,6622,-32088,6638,-32085,6655,-32081,6671,-32078,6688,-32074,6704,-32071,6720,-32067,6737,-32064,6753,-32060,6770,-32057,6786,-32054,6802,-32050,6819,-32047,6835,-32043,6851,-32040,6868,-32036,6884,-32033,6901,-32029,6917,-32025,6933,-32022,6950,-32018,6966,-32015,6982,-32011,6999,-32008,7015,-32004,7032,-32000,7048,-31997,7064,-31993,7081,-31990,7097,-31986,7113,-31982,7130,-31979,7146,-31975,7162,-31971,7179,-31968,7195,-31964,7211,-31960,7228,-31957,7244,-31953,7261,-31949,7277,-31945,7293,-31942,7310,-31938,7326,-31934,7342,-31930,7358,-31927,7375,-31923,7391,-31919,7407,-31915,7424,-31912,7440,-31908,7456,-31904,7473,-31900,7489,-31896,7505,-31892,7522,-31889,7538,-31885,7554,-31881,7571,-31877,7587,-31873,7603,-31869,7619,-31865,7636,-31861,7652,-31857,7668,-31854,7685,-31850,7701,-31846,7717,-31842,7733,-31838,7750,-31834,7766,-31830,7782,-31826,7799,-31822,7815,-31818,7831,-31814,7847,-31810,7864,-31806,7880,-31802,7896,-31798,7912,-31794,7929,-31790,7945,-31786,7961,-31781,7977,-31777,7994,-31773,8010,-31769,8026,-31765,8042,-31761,8059,-31757,8075,-31753,8091,-31749,8107,-31744,8124,-31740,8140,-31736,8156,-31732,8172,-31728,8189,-31724,8205,-31719,8221,-31715,8237,-31711,8253,-31707,8270,-31702,8286,-31698,8302,-31694,8318,-31690,8334,-31685,8351,-31681,8367,-31677,8383,-31673,8399,-31668,8415,-31664,8432,-31660,8448,-31655,8464,-31651,8480,-31647,8496,-31642,8513,-31638,8529,-31634,8545,-31629,8561,-31625,8577,-31620,8593,-31616,8610,-31612,8626,-31607,8642,-31603,8658,-31598,8674,-31594,8690,-31589,8707,-31585,8723,-31581,8739,-31576,8755,-31572,8771,-31567,8787,-31563,8803,-31558,8820,-31554,8836,-31549,8852,-31545,8868,-31540,8884,-31535,8900,-31531,8916,-31526,8932,-31522,8949,-31517,8965,-31513,8981,-31508,8997,-31503,9013,-31499,9029,-31494,9045,-31490,9061,-31485,9077,-31480,9094,-31476,9110,-31471,9126,-31466,9142,-31462,9158,-31457,9174,-31452,9190,-31447,9206,-31443,9222,-31438,9238,-31433,9254,-31429,9270,-31424,9287,-31419,9303,-31414,9319,-31410,9335,-31405,9351,-31400,9367,-31395,9383,-31390,9399,-31386,9415,-31381,9431,-31376,9447,-31371,9463,-31366,9479,-31361,9495,-31357,9511,-31352,9527,-31347,9543,-31342,9559,-31337,9575,-31332,9591,-31327,9607,-31322,9623,-31317,9639,-31312,9655,-31308,9671,-31303,9687,-31298,9703,-31293,9719,-31288,9735,-31283,9751,-31278,9767,-31273,9783,-31268,9799,-31263,9815,-31258,9831,-31253,9847,-31248,9863,-31243,9879,-31237,9895,-31232,9911,-31227,9927,-31222,9943,-31217,9959,-31212,9975,-31207,9991,-31202,10007,-31197,10023,-31192,10039,-31186,10055,-31181,10071,-31176,10087,-31171,10103,-31166,10119,-31161,10135,-31155,10151,-31150,10166,-31145,10182,-31140,10198,-31135,10214,-31129,10230,-31124,10246,-31119,10262,-31114,10278,-31108,10294,-31103,10310,-31098,10326,-31093,10342,-31087,10357,-31082,10373,-31077,10389,-31071,10405,-31066,10421,-31061,10437,-31055,10453,-31050,10469,-31045,10484,-31039,10500,-31034,10516,-31029,10532,-31023,10548,-31018,10564,-31012,10580,-31007,10596,-31002,10611,-30996,10627,-30991,10643,-30985,10659,-30980,10675,-30974,10691,-30969,10706,-30963,10722,-30958,10738,-30952,10754,-30947,10770,-30941,10786,-30936,10801,-30930,10817,-30925,10833,-30919,10849,-30914,10865,-30908,10880,-30903,10896,-30897,10912,-30891,10928,-30886,10944,-30880,10959,-30875,10975,-30869,10991,-30863,11007,-30858,11023,-30852,11038,-30846,11054,-30841,11070,-30835,11086,-30829,11101,-30824,11117,-30818,11133,-30812,11149,-30807,11164,-30801,11180,-30795,11196,-30789,11212,-30784,11227,-30778,11243,-30772,11259,-30767,11275,-30761,11290,-30755,11306,-30749,11322,-30743,11338,-30738,11353,-30732,11369,-30726,11385,-30720,11400,-30714,11416,-30708,11432,-30703,11448,-30697,11463,-30691,11479,-30685,11495,-30679,11510,-30673,11526,-30667,11542,-30661,11557,-30656,11573,-30650,11589,-30644,11604,-30638,11620,-30632,11636,-30626,11651,-30620,11667,-30614,11683,-30608,11698,-30602,11714,-30596,11730,-30590,11745,-30584,11761,-30578,11777,-30572,11792,-30566,11808,-30560,11823,-30554,11839,-30548,11855,-30542,11870,-30536,11886,-30529,11902,-30523,11917,-30517,11933,-30511,11948,-30505,11964,-30499,11980,-30493,11995,-30487,12011,-30481,12026,-30474,12042,-30468,12057,-30462,12073,-30456,12089,-30450,12104,-30443,12120,-30437,12135,-30431,12151,-30425,12166,-30419,12182,-30412,12198,-30406,12213,-30400,12229,-30394,12244,-30387,12260,-30381,12275,-30375,12291,-30369,12306,-30362,12322,-30356,12337,-30350,12353,-30343,12368,-30337,12384,-30331,12399,-30324,12415,-30318,12430,-30312,12446,-30305,12461,-30299,12477,-30292,12492,-30286,12508,-30280,12523,-30273,12539,-30267,12554,-30260,12570,-30254,12585,-30248,12601,-30241,12616,-30235,12632,-30228,12647,-30222,12663,-30215,12678,-30209,12694,-30202,12709,-30196,12724,-30189,12740,-30183,12755,-30176,12771,-30170,12786,-30163,12802,-30157,12817,-30150,12832,-30143,12848,-30137,12863,-30130,12879,-30124,12894,-30117,12909,-30110,12925,-30104,12940,-30097,12956,-30091,12971,-30084,12986,-30077,13002,-30071,13017,-30064,13033,-30057,13048,-30051,13063,-30044,13079,-30037,13094,-30031,13109,-30024,13125,-30017,13140,-30010,13155,-30004,13171,-29997,13186,-29990,13201,-29984,13217,-29977,13232,-29970,13247,-29963,13263,-29956,13278,-29950,13293,-29943,13309,-29936,13324,-29929,13339,-29922,13355,-29916,13370,-29909,13385,-29902,13400,-29895,13416,-29888,13431,-29881,13446,-29874,13462,-29867,13477,-29861,13492,-29854,13507,-29847,13523,-29840,13538,-29833,13553,-29826,13568,-29819,13584,-29812,13599,-29805,13614,-29798,13629,-29791,13645,-29784,13660,-29777,13675,-29770,13690,-29763,13706,-29756,13721,-29749,13736,-29742,13751,-29735,13766,-29728,13782,-29721,13797,-29714,13812,-29707,13827,-29700,13842,-29693,13858,-29686,13873,-29679,13888,-29671,13903,-29664,13918,-29657,13933,-29650,13949,-29643,13964,-29636,13979,-29629,13994,-29622,14009,-29614,14024,-29607,14039,-29600,14055,-29593,14070,-29586,14085,-29578,14100,-29571,14115,-29564,14130,-29557,14145,-29549,14160,-29542,14176,-29535,14191,-29528,14206,-29520,14221,-29513,14236,-29506,14251,-29499,14266,-29491,14281,-29484,14296,-29477,14311,-29469,14326,-29462,14342,-29455,14357,-29447,14372,-29440,14387,-29433,14402,-29425,14417,-29418,14432,-29411,14447,-29403,14462,-29396,14477,-29388,14492,-29381,14507,-29373,14522,-29366,14537,-29359,14552,-29351,14567,-29344,14582,-29336,14597,-29329,14612,-29321,14627,-29314,14642,-29306,14657,-29299,14672,-29291,14687,-29284,14702,-29276,14717,-29269,14732,-29261,14747,-29254,14762,-29246,14777,-29239,14792,-29231,14807,-29223,14822,-29216,14837,-29208,14852,-29201,14866,-29193,14881,-29185,14896,-29178,14911,-29170,14926,-29163,14941,-29155,14956,-29147,14971,-29140,14986,-29132,15001,-29124,15016,-29117,15030,-29109,15045,-29101,15060,-29093,15075,-29086,15090,-29078,15105,-29070,15120,-29063,15135,-29055,15149,-29047,15164,-29039,15179,-29032,15194,-29024,15209,-29016,15224,-29008,15238,-29000,15253,-28993,15268,-28985,15283,-28977,15298,-28969,15313,-28961,15327,-28954,15342,-28946,15357,-28938,15372,-28930,15387,-28922,15401,-28914,15416,-28906,15431,-28898,15446,-28891,15461,-28883,15475,-28875,15490,-28867,15505,-28859,15520,-28851,15534,-28843,15549,-28835,15564,-28827,15579,-28819,15593,-28811,15608,-28803,15623,-28795,15638,-28787,15652,-28779,15667,-28771,15682,-28763,15696,-28755,15711,-28747,15726,-28739,15740,-28731,15755,-28723,15770,-28715,15785,-28707,15799,-28699,15814,-28691,15829,-28682,15843,-28674,15858,-28666,15873,-28658,15887,-28650,15902,-28642,15917,-28634,15931,-28626,15946,-28617,15960,-28609,15975,-28601,15990,-28593,16004,-28585,16019,-28576,16034,-28568,16048,-28560,16063,-28552,16077,-28544,16092,-28535,16107,-28527,16121,-28519,16136,-28511,16150,-28502,16165,-28494,16179,-28486,16194,-28478,16209,-28469,16223,-28461,16238,-28453,16252,-28444,16267,-28436,16281,-28428,16296,-28419,16310,-28411,16325,-28403,16339,-28394,16354,-28386,16368,-28378,16383,-28369,16398,-28361,16412,-28352,16427,-28344,16441,-28336,16455,-28327,16470,-28319,16484,-28310,16499,-28302,16513,-28293,16528,-28285,16542,-28276,16557,-28268,16571,-28260,16586,-28251,16600,-28243,16615,-28234,16629,-28226,16643,-28217,16658,-28209,16672,-28200,16687,-28191,16701,-28183,16716,-28174,16730,-28166,16744,-28157,16759,-28149,16773,-28140,16788,-28132,16802,-28123,16816,-28114,16831,-28106,16845,-28097,16859,-28088,16874,-28080,16888,-28071,16903,-28063,16917,-28054,16931,-28045,16946,-28037,16960,-28028,16974,-28019,16989,-28010,17003,-28002,17017,-27993,17032,-27984,17046,-27976,17060,-27967,17074,-27958,17089,-27949,17103,-27941,17117,-27932,17132,-27923,17146,-27914,17160,-27906,17174,-27897,17189,-27888,17203,-27879,17217,-27870,17232,-27862,17246,-27853,17260,-27844,17274,-27835,17288,-27826,17303,-27817,17317,-27809,17331,-27800,17345,-27791,17360,-27782,17374,-27773,17388,-27764,17402,-27755,17416,-27746,17431,-27737,17445,-27729,17459,-27720,17473,-27711,17487,-27702,17501,-27693,17516,-27684,17530,-27675,17544,-27666,17558,-27657,17572,-27648,17586,-27639,17600,-27630,17615,-27621,17629,-27612,17643,-27603,17657,-27594,17671,-27585,17685,-27576,17699,-27567,17713,-27558,17727,-27549,17742,-27539,17756,-27530,17770,-27521,17784,-27512,17798,-27503,17812,-27494,17826,-27485,17840,-27476,17854,-27467,17868,-27457,17882,-27448,17896,-27439,17910,-27430,17924,-27421,17938,-27412,17952,-27402,17966,-27393,17980,-27384,17994,-27375,18008,-27366,18022,-27356,18036,-27347,18050,-27338,18064,-27329,18078,-27320,18092,-27310,18106,-27301,18120,-27292,18134,-27282,18148,-27273,18162,-27264,18176,-27255,18190,-27245,18204,-27236,18218,-27227,18232,-27217,18246,-27208,18260,-27199,18273,-27189,18287,-27180,18301,-27171,18315,-27161,18329,-27152,18343,-27142,18357,-27133,18371,-27124,18385,-27114,18398,-27105,18412,-27095,18426,-27086,18440,-27077,18454,-27067,18468,-27058,18482,-27048,18495,-27039,18509,-27029,18523,-27020,18537,-27010,18551,-27001,18564,-26991,18578,-26982,18592,-26972,18606,-26963,18620,-26953,18633,-26944,18647,-26934,18661,-26925,18675,-26915,18689,-26906,18702,-26896,18716,-26886,18730,-26877,18744,-26867,18757,-26858,18771,-26848,18785,-26838,18798,-26829,18812,-26819,18826,-26810,18840,-26800,18853,-26790,18867,-26781,18881,-26771,18894,-26761,18908,-26752,18922,-26742,18935,-26732,18949,-26723,18963,-26713,18976,-26703,18990,-26693,19004,-26684,19017,-26674,19031,-26664,19045,-26655,19058,-26645,19072,-26635,19086,-26625,19099,-26616,19113,-26606,19126,-26596,19140,-26586,19154,-26576,19167,-26567,19181,-26557,19194,-26547,19208,-26537,19221,-26527,19235,-26517,19249,-26508,19262,-26498,19276,-26488,19289,-26478,19303,-26468,19316,-26458,19330,-26448,19343,-26438,19357,-26429,19370,-26419,19384,-26409,19397,-26399,19411,-26389,19424,-26379,19438,-26369,19451,-26359,19465,-26349,19478,-26339,19492,-26329,19505,-26319,19519,-26309,19532,-26299,19546,-26289,19559,-26279,19573,-26269,19586,-26259,19599,-26249,19613,-26239,19626,-26229,19640,-26219,19653,-26209,19667,-26199,19680,-26189,19693,-26179,19707,-26169,19720,-26159,19733,-26149,19747,-26138,19760,-26128,19774,-26118,19787,-26108,19800,-26098,19814,-26088,19827,-26078,19840,-26068,19854,-26057,19867,-26047,19880,-26037,19894,-26027,19907,-26017,19920,-26007,19933,-25996,19947,-25986,19960,-25976,19973,-25966,19987,-25955,20000,-25945,20013,-25935,20026,-25925,20040,-25914,20053,-25904,20066,-25894,20079,-25884,20093,-25873,20106,-25863,20119,-25853,20132,-25843,20146,-25832,20159,-25822,20172,-25812,20185,-25801,20198,-25791,20212,-25781,20225,-25770,20238,-25760,20251,-25750,20264,-25739,20277,-25729,20291,-25718,20304,-25708,20317,-25698,20330,-25687,20343,-25677,20356,-25666,20369,-25656,20383,-25646,20396,-25635,20409,-25625,20422,-25614,20435,-25604,20448,-25593,20461,-25583,20474,-25572,20487,-25562,20500,-25551,20513,-25541,20527,-25530,20540,-25520,20553,-25509,20566,-25499,20579,-25488,20592,-25478,20605,-25467,20618,-25457,20631,-25446,20644,-25436,20657,-25425,20670,-25415,20683,-25404,20696,-25393,20709,-25383,20722,-25372,20735,-25362,20748,-25351,20761,-25340,20774,-25330,20787,-25319,20800,-25308,20813,-25298,20825,-25287,20838,-25277,20851,-25266,20864,-25255,20877,-25244,20890,-25234,20903,-25223,20916,-25212,20929,-25202,20942,-25191,20955,-25180,20967,-25170,20980,-25159,20993,-25148,21006,-25137,21019,-25127,21032,-25116,21045,-25105,21057,-25094,21070,-25084,21083,-25073,21096,-25062,21109,-25051,21122,-25040,21134,-25030,21147,-25019,21160,-25008,21173,-24997,21186,-24986,21198,-24975,21211,-24965,21224,-24954,21237,-24943,21249,-24932,21262,-24921,21275,-24910,21288,-24899,21300,-24888,21313,-24878,21326,-24867,21339,-24856,21351,-24845,21364,-24834,21377,-24823,21389,-24812,21402,-24801,21415,-24790,21427,-24779,21440,-24768,21453,-24757,21465,-24746,21478,-24735,21491,-24724,21503,-24713,21516,-24702,21529,-24691,21541,-24680,21554,-24669,21566,-24658,21579,-24647,21592,-24636,21604,-24625,21617,-24614,21629,-24603,21642,-24592,21655,-24581,21667,-24570,21680,-24559,21692,-24547,21705,-24536,21717,-24525,21730,-24514,21743,-24503,21755,-24492,21768,-24481,21780,-24470,21793,-24458,21805,-24447,21818,-24436,21830,-24425,21843,-24414,21855,-24403,21868,-24391,21880,-24380,21893,-24369,21905,-24358,21917,-24347,21930,-24335,21942,-24324,21955,-24313,21967,-24302,21980,-24290,21992,-24279,22004,-24268,22017,-24257,22029,-24245,22042,-24234,22054,-24223,22066,-24212,22079,-24200,22091,-24189,22104,-24178,22116,-24166,22128,-24155,22141,-24144,22153,-24132,22165,-24121,22178,-24110,22190,-24098,22202,-24087,22215,-24076,22227,-24064,22239,-24053,22252,-24042,22264,-24030,22276,-24019,22288,-24007,22301,-23996,22313,-23985,22325,-23973,22338,-23962,22350,-23950,22362,-23939,22374,-23927,22387,-23916,22399,-23904,22411,-23893,22423,-23882,22435,-23870,22448,-23859,22460,-23847,22472,-23836,22484,-23824,22496,-23813,22509,-23801,22521,-23790,22533,-23778,22545,-23767,22557,-23755,22569,-23743,22582,-23732,22594,-23720,22606,-23709,22618,-23697,22630,-23686,22642,-23674,22654,-23662,22666,-23651,22678,-23639,22691,-23628,22703,-23616,22715,-23604,22727,-23593,22739,-23581,22751,-23570,22763,-23558,22775,-23546,22787,-23535,22799,-23523,22811,-23511,22823,-23500,22835,-23488,22847,-23476,22859,-23465,22871,-23453,22883,-23441,22895,-23429,22907,-23418,22919,-23406,22931,-23394,22943,-23383,22955,-23371,22967,-23359,22979,-23347,22991,-23336,23003,-23324,23015,-23312,23027,-23300,23039,-23288,23050,-23277,23062,-23265,23074,-23253,23086,-23241,23098,-23229,23110,-23218,23122,-23206,23134,-23194,23146,-23182,23157,-23170,23169,-23158,23181,-23147,23193,-23135,23205,-23123,23217,-23111,23228,-23099,23240,-23087,23252,-23075,23264,-23063,23276,-23051,23287,-23040,23299,-23028,23311,-23016,23323,-23004,23335,-22992,23346,-22980,23358,-22968,23370,-22956,23382,-22944,23393,-22932,23405,-22920,23417,-22908,23428,-22896,23440,-22884,23452,-22872,23464,-22860,23475,-22848,23487,-22836,23499,-22824,23510,-22812,23522,-22800,23534,-22788,23545,-22776,23557,-22764,23569,-22752,23580,-22740,23592,-22728,23603,-22716,23615,-22704,23627,-22692,23638,-22679,23650,-22667,23661,-22655,23673,-22643,23685,-22631,23696,-22619,23708,-22607,23719,-22595,23731,-22583,23742,-22570,23754,-22558,23766,-22546,23777,-22534,23789,-22522,23800,-22510,23812,-22497,23823,-22485,23835,-22473,23846,-22461,23858,-22449,23869,-22436,23881,-22424,23892,-22412,23903,-22400,23915,-22388,23926,-22375,23938,-22363,23949,-22351,23961,-22339,23972,-22326,23984,-22314,23995,-22302,24006,-22289,24018,-22277,24029,-22265,24041,-22253,24052,-22240,24063,-22228,24075,-22216,24086,-22203,24097,-22191,24109,-22179,24120,-22166,24131,-22154,24143,-22142,24154,-22129,24165,-22117,24177,-22105,24188,-22092,24199,-22080,24211,-22067,24222,-22055,24233,-22043,24244,-22030,24256,-22018,24267,-22005,24278,-21993,24289,-21981,24301,-21968,24312,-21956,24323,-21943,24334,-21931,24346,-21918,24357,-21906,24368,-21894,24379,-21881,24390,-21869,24402,-21856,24413,-21844,24424,-21831,24435,-21819,24446,-21806,24457,-21794,24469,-21781,24480,-21769,24491,-21756,24502,-21744,24513,-21731,24524,-21718,24535,-21706,24546,-21693,24558,-21681,24569,-21668,24580,-21656,24591,-21643,24602,-21630,24613,-21618,24624,-21605,24635,-21593,24646,-21580,24657,-21567,24668,-21555,24679,-21542,24690,-21530,24701,-21517,24712,-21504,24723,-21492,24734,-21479,24745,-21466,24756,-21454,24767,-21441,24778,-21428,24789,-21416,24800,-21403,24811,-21390,24822,-21378,24833,-21365,24844,-21352,24855,-21340,24866,-21327,24877,-21314,24887,-21301,24898,-21289,24909,-21276,24920,-21263,24931,-21250,24942,-21238,24953,-21225,24964,-21212,24974,-21199,24985,-21187,24996,-21174,25007,-21161,25018,-21148,25029,-21135,25039,-21123,25050,-21110,25061,-21097,25072,-21084,25083,-21071,25093,-21058,25104,-21046,25115,-21033,25126,-21020,25136,-21007,25147,-20994,25158,-20981,25169,-20968,25179,-20956,25190,-20943,25201,-20930,25211,-20917,25222,-20904,25233,-20891,25243,-20878,25254,-20865,25265,-20852,25276,-20839,25286,-20826,25297,-20814,25307,-20801,25318,-20788,25329,-20775,25339,-20762,25350,-20749,25361,-20736,25371,-20723,25382,-20710,25392,-20697,25403,-20684,25414,-20671,25424,-20658,25435,-20645,25445,-20632,25456,-20619,25466,-20606,25477,-20593,25487,-20580,25498,-20567,25508,-20554,25519,-20541,25529,-20528,25540,-20514,25550,-20501,25561,-20488,25571,-20475,25582,-20462,25592,-20449,25603,-20436,25613,-20423,25624,-20410,25634,-20397,25645,-20384,25655,-20370,25665,-20357,25676,-20344,25686,-20331,25697,-20318,25707,-20305,25717,-20292,25728,-20278,25738,-20265,25749,-20252,25759,-20239,25769,-20226,25780,-20213,25790,-20199,25800,-20186,25811,-20173,25821,-20160,25831,-20147,25842,-20133,25852,-20120,25862,-20107,25872,-20094,25883,-20080,25893,-20067,25903,-20054,25913,-20041,25924,-20027,25934,-20014,25944,-20001,25954,-19988,25965,-19974,25975,-19961,25985,-19948,25995,-19934,26006,-19921,26016,-19908,26026,-19895,26036,-19881,26046,-19868,26056,-19855,26067,-19841,26077,-19828,26087,-19815,26097,-19801,26107,-19788,26117,-19775,26127,-19761,26137,-19748,26148,-19734,26158,-19721,26168,-19708,26178,-19694,26188,-19681,26198,-19668,26208,-19654,26218,-19641,26228,-19627,26238,-19614,26248,-19600,26258,-19587,26268,-19574,26278,-19560,26288,-19547,26298,-19533,26308,-19520,26318,-19506,26328,-19493,26338,-19479,26348,-19466,26358,-19452,26368,-19439,26378,-19425,26388,-19412,26398,-19398,26408,-19385,26418,-19371,26428,-19358,26437,-19344,26447,-19331,26457,-19317,26467,-19304,26477,-19290,26487,-19277,26497,-19263,26507,-19250,26516,-19236,26526,-19222,26536,-19209,26546,-19195,26556,-19182,26566,-19168,26575,-19155,26585,-19141,26595,-19127,26605,-19114,26615,-19100,26624,-19087,26634,-19073,26644,-19059,26654,-19046,26663,-19032,26673,-19018,26683,-19005,26692,-18991,26702,-18977,26712,-18964,26722,-18950,26731,-18936,26741,-18923,26751,-18909,26760,-18895,26770,-18882,26780,-18868,26789,-18854,26799,-18841,26809,-18827,26818,-18813,26828,-18799,26837,-18786,26847,-18772,26857,-18758,26866,-18745,26876,-18731,26885,-18717,26895,-18703,26905,-18690,26914,-18676,26924,-18662,26933,-18648,26943,-18634,26952,-18621,26962,-18607,26971,-18593,26981,-18579,26990,-18565,27000,-18552,27009,-18538,27019,-18524,27028,-18510,27038,-18496,27047,-18483,27057,-18469,27066,-18455,27076,-18441,27085,-18427,27094,-18413,27104,-18399,27113,-18386,27123,-18372,27132,-18358,27141,-18344,27151,-18330,27160,-18316,27170,-18302,27179,-18288,27188,-18274,27198,-18261,27207,-18247,27216,-18233,27226,-18219,27235,-18205,27244,-18191,27254,-18177,27263,-18163,27272,-18149,27281,-18135,27291,-18121,27300,-18107,27309,-18093,27319,-18079,27328,-18065,27337,-18051,27346,-18037,27355,-18023,27365,-18009,27374,-17995,27383,-17981,27392,-17967,27401,-17953,27411,-17939,27420,-17925,27429,-17911,27438,-17897,27447,-17883,27456,-17869,27466,-17855,27475,-17841,27484,-17827,27493,-17813,27502,-17799,27511,-17785,27520,-17771,27529,-17757,27538,-17743,27548,-17728,27557,-17714,27566,-17700,27575,-17686,27584,-17672,27593,-17658,27602,-17644,27611,-17630,27620,-17616,27629,-17601,27638,-17587,27647,-17573,27656,-17559,27665,-17545,27674,-17531,27683,-17517,27692,-17502,27701,-17488,27710,-17474,27719,-17460,27728,-17446,27736,-17432,27745,-17417,27754,-17403,27763,-17389,27772,-17375,27781,-17361,27790,-17346,27799,-17332,27808,-17318,27816,-17304,27825,-17289,27834,-17275,27843,-17261,27852,-17247,27861,-17233,27869,-17218,27878,-17204,27887,-17190,27896,-17175,27905,-17161,27913,-17147,27922,-17133,27931,-17118,27940,-17104,27948,-17090,27957,-17075,27966,-17061,27975,-17047,27983,-17033,27992,-17018,28001,-17004,28009,-16990,28018,-16975,28027,-16961,28036,-16947,28044,-16932,28053,-16918,28062,-16904,28070,-16889,28079,-16875,28087,-16860,28096,-16846,28105,-16832,28113,-16817,28122,-16803,28131,-16789,28139,-16774,28148,-16760,28156,-16745,28165,-16731,28173,-16717,28182,-16702,28190,-16688,28199,-16673,28208,-16659,28216,-16644,28225,-16630,28233,-16616,28242,-16601,28250,-16587,28259,-16572,28267,-16558,28275,-16543,28284,-16529,28292,-16514,28301,-16500,28309,-16485,28318,-16471,28326,-16456,28335,-16442,28343,-16428,28351,-16413,28360,-16399,28368};
diff --git a/openair1/PHY/TOOLS/twiddle6144.h b/openair1/PHY/TOOLS/twiddle6144.h
deleted file mode 100644
index 6fc18ebfbe0cbe52c5da48026e59f209e696e87d..0000000000000000000000000000000000000000
--- a/openair1/PHY/TOOLS/twiddle6144.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(0:2047)/6144));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*(0:2:4094)/6144));
-twa2 = zeros(1,4096);
-twb2 = zeros(1,4096);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-
-
- */
-int16_t twa6144[4096] __attribute__((aligned(32))) = {32767,0,32766,-34,32766,-68,32766,-101,32766,-135,32766,-168,32766,-202,32766,-235,32765,-269,32765,-302,32765,-336,32764,-369,32764,-403,32764,-436,32763,-470,32763,-503,32762,-537,32762,-570,32761,-604,32760,-637,32760,-671,32759,-704,32758,-738,32757,-771,32757,-805,32756,-838,32755,-872,32754,-905,32753,-939,32752,-972,32751,-1006,32750,-1039,32749,-1073,32748,-1106,32747,-1140,32746,-1173,32744,-1207,32743,-1240,32742,-1274,32740,-1307,32739,-1340,32738,-1374,32736,-1407,32735,-1441,32733,-1474,32732,-1508,32730,-1541,32729,-1575,32727,-1608,32725,-1642,32724,-1675,32722,-1709,32720,-1742,32718,-1776,32717,-1809,32715,-1843,32713,-1876,32711,-1909,32709,-1943,32707,-1976,32705,-2010,32703,-2043,32701,-2077,32699,-2110,32696,-2144,32694,-2177,32692,-2210,32690,-2244,32687,-2277,32685,-2311,32683,-2344,32680,-2378,32678,-2411,32675,-2444,32673,-2478,32670,-2511,32668,-2545,32665,-2578,32662,-2611,32660,-2645,32657,-2678,32654,-2712,32651,-2745,32649,-2778,32646,-2812,32643,-2845,32640,-2879,32637,-2912,32634,-2945,32631,-2979,32628,-3012,32625,-3045,32622,-3079,32618,-3112,32615,-3146,32612,-3179,32609,-3212,32605,-3246,32602,-3279,32599,-3312,32595,-3346,32592,-3379,32588,-3412,32585,-3446,32581,-3479,32578,-3512,32574,-3546,32571,-3579,32567,-3612,32563,-3645,32559,-3679,32556,-3712,32552,-3745,32548,-3779,32544,-3812,32540,-3845,32536,-3878,32532,-3912,32528,-3945,32524,-3978,32520,-4012,32516,-4045,32512,-4078,32508,-4111,32503,-4145,32499,-4178,32495,-4211,32491,-4244,32486,-4277,32482,-4311,32477,-4344,32473,-4377,32468,-4410,32464,-4444,32459,-4477,32455,-4510,32450,-4543,32445,-4576,32441,-4609,32436,-4643,32431,-4676,32426,-4709,32422,-4742,32417,-4775,32412,-4808,32407,-4842,32402,-4875,32397,-4908,32392,-4941,32387,-4974,32382,-5007,32377,-5040,32371,-5073,32366,-5107,32361,-5140,32356,-5173,32350,-5206,32345,-5239,32340,-5272,32334,-5305,32329,-5338,32323,-5371,32318,-5404,32312,-5437,32307,-5470,32301,-5503,32295,-5536,32290,-5569,32284,-5602,32278,-5635,32273,-5668,32267,-5701,32261,-5734,32255,-5767,32249,-5800,32243,-5833,32237,-5866,32231,-5899,32225,-5932,32219,-5965,32213,-5998,32207,-6031,32201,-6064,32194,-6097,32188,-6130,32182,-6163,32176,-6196,32169,-6229,32163,-6262,32156,-6294,32150,-6327,32143,-6360,32137,-6393,32130,-6426,32124,-6459,32117,-6492,32110,-6524,32104,-6557,32097,-6590,32090,-6623,32084,-6656,32077,-6689,32070,-6721,32063,-6754,32056,-6787,32049,-6820,32042,-6852,32035,-6885,32028,-6918,32021,-6951,32014,-6983,32007,-7016,31999,-7049,31992,-7082,31985,-7114,31978,-7147,31970,-7180,31963,-7212,31956,-7245,31948,-7278,31941,-7311,31933,-7343,31926,-7376,31918,-7408,31911,-7441,31903,-7474,31895,-7506,31888,-7539,31880,-7572,31872,-7604,31864,-7637,31856,-7669,31849,-7702,31841,-7734,31833,-7767,31825,-7800,31817,-7832,31809,-7865,31801,-7897,31793,-7930,31785,-7962,31776,-7995,31768,-8027,31760,-8060,31752,-8092,31743,-8125,31735,-8157,31727,-8190,31718,-8222,31710,-8254,31701,-8287,31693,-8319,31684,-8352,31676,-8384,31667,-8416,31659,-8449,31650,-8481,31641,-8514,31633,-8546,31624,-8578,31615,-8611,31606,-8643,31597,-8675,31588,-8708,31580,-8740,31571,-8772,31562,-8804,31553,-8837,31544,-8869,31534,-8901,31525,-8933,31516,-8966,31507,-8998,31498,-9030,31489,-9062,31479,-9095,31470,-9127,31461,-9159,31451,-9191,31442,-9223,31432,-9255,31423,-9288,31413,-9320,31404,-9352,31394,-9384,31385,-9416,31375,-9448,31365,-9480,31356,-9512,31346,-9544,31336,-9576,31326,-9608,31316,-9640,31307,-9672,31297,-9704,31287,-9736,31277,-9768,31267,-9800,31257,-9832,31247,-9864,31236,-9896,31226,-9928,31216,-9960,31206,-9992,31196,-10024,31185,-10056,31175,-10088,31165,-10120,31154,-10152,31144,-10183,31134,-10215,31123,-10247,31113,-10279,31102,-10311,31092,-10343,31081,-10374,31070,-10406,31060,-10438,31049,-10470,31038,-10501,31028,-10533,31017,-10565,31006,-10597,30995,-10628,30984,-10660,30973,-10692,30962,-10723,30951,-10755,30940,-10787,30929,-10818,30918,-10850,30907,-10881,30896,-10913,30885,-10945,30874,-10976,30862,-11008,30851,-11039,30840,-11071,30828,-11102,30817,-11134,30806,-11165,30794,-11197,30783,-11228,30771,-11260,30760,-11291,30748,-11323,30737,-11354,30725,-11386,30713,-11417,30702,-11449,30690,-11480,30678,-11511,30666,-11543,30655,-11574,30643,-11605,30631,-11637,30619,-11668,30607,-11699,30595,-11731,30583,-11762,30571,-11793,30559,-11824,30547,-11856,30535,-11887,30522,-11918,30510,-11949,30498,-11981,30486,-12012,30473,-12043,30461,-12074,30449,-12105,30436,-12136,30424,-12167,30411,-12199,30399,-12230,30386,-12261,30374,-12292,30361,-12323,30349,-12354,30336,-12385,30323,-12416,30311,-12447,30298,-12478,30285,-12509,30272,-12540,30259,-12571,30247,-12602,30234,-12633,30221,-12664,30208,-12695,30195,-12725,30182,-12756,30169,-12787,30156,-12818,30142,-12849,30129,-12880,30116,-12910,30103,-12941,30090,-12972,30076,-13003,30063,-13034,30050,-13064,30036,-13095,30023,-13126,30009,-13156,29996,-13187,29983,-13218,29969,-13248,29955,-13279,29942,-13310,29928,-13340,29915,-13371,29901,-13401,29887,-13432,29873,-13463,29860,-13493,29846,-13524,29832,-13554,29818,-13585,29804,-13615,29790,-13646,29776,-13676,29762,-13707,29748,-13737,29734,-13767,29720,-13798,29706,-13828,29692,-13859,29678,-13889,29663,-13919,29649,-13950,29635,-13980,29621,-14010,29606,-14040,29592,-14071,29577,-14101,29563,-14131,29548,-14161,29534,-14192,29519,-14222,29505,-14252,29490,-14282,29476,-14312,29461,-14343,29446,-14373,29432,-14403,29417,-14433,29402,-14463,29387,-14493,29372,-14523,29358,-14553,29343,-14583,29328,-14613,29313,-14643,29298,-14673,29283,-14703,29268,-14733,29253,-14763,29238,-14793,29222,-14823,29207,-14853,29192,-14882,29177,-14912,29162,-14942,29146,-14972,29131,-15002,29116,-15031,29100,-15061,29085,-15091,29069,-15121,29054,-15150,29038,-15180,29023,-15210,29007,-15239,28992,-15269,28976,-15299,28960,-15328,28945,-15358,28929,-15388,28913,-15417,28897,-15447,28882,-15476,28866,-15506,28850,-15535,28834,-15565,28818,-15594,28802,-15624,28786,-15653,28770,-15683,28754,-15712,28738,-15741,28722,-15771,28706,-15800,28690,-15830,28673,-15859,28657,-15888,28641,-15918,28625,-15947,28608,-15976,28592,-16005,28575,-16035,28559,-16064,28543,-16093,28526,-16122,28510,-16151,28493,-16180,28477,-16210,28460,-16239,28443,-16268,28427,-16297,28410,-16326,28393,-16355,28377,-16384,28360,-16413,28343,-16442,28326,-16471,28309,-16500,28292,-16529,28275,-16558,28259,-16587,28242,-16616,28225,-16644,28208,-16673,28190,-16702,28173,-16731,28156,-16760,28139,-16789,28122,-16817,28105,-16846,28087,-16875,28070,-16904,28053,-16932,28036,-16961,28018,-16990,28001,-17018,27983,-17047,27966,-17075,27948,-17104,27931,-17133,27913,-17161,27896,-17190,27878,-17218,27861,-17247,27843,-17275,27825,-17304,27808,-17332,27790,-17361,27772,-17389,27754,-17417,27736,-17446,27719,-17474,27701,-17502,27683,-17531,27665,-17559,27647,-17587,27629,-17616,27611,-17644,27593,-17672,27575,-17700,27557,-17728,27538,-17757,27520,-17785,27502,-17813,27484,-17841,27466,-17869,27447,-17897,27429,-17925,27411,-17953,27392,-17981,27374,-18009,27355,-18037,27337,-18065,27319,-18093,27300,-18121,27281,-18149,27263,-18177,27244,-18205,27226,-18233,27207,-18261,27188,-18288,27170,-18316,27151,-18344,27132,-18372,27113,-18399,27094,-18427,27076,-18455,27057,-18483,27038,-18510,27019,-18538,27000,-18565,26981,-18593,26962,-18621,26943,-18648,26924,-18676,26905,-18703,26885,-18731,26866,-18758,26847,-18786,26828,-18813,26809,-18841,26789,-18868,26770,-18895,26751,-18923,26731,-18950,26712,-18977,26692,-19005,26673,-19032,26654,-19059,26634,-19087,26615,-19114,26595,-19141,26575,-19168,26556,-19195,26536,-19222,26516,-19250,26497,-19277,26477,-19304,26457,-19331,26437,-19358,26418,-19385,26398,-19412,26378,-19439,26358,-19466,26338,-19493,26318,-19520,26298,-19547,26278,-19574,26258,-19600,26238,-19627,26218,-19654,26198,-19681,26178,-19708,26158,-19734,26137,-19761,26117,-19788,26097,-19815,26077,-19841,26056,-19868,26036,-19895,26016,-19921,25995,-19948,25975,-19974,25954,-20001,25934,-20027,25913,-20054,25893,-20080,25872,-20107,25852,-20133,25831,-20160,25811,-20186,25790,-20213,25769,-20239,25749,-20265,25728,-20292,25707,-20318,25686,-20344,25665,-20370,25645,-20397,25624,-20423,25603,-20449,25582,-20475,25561,-20501,25540,-20528,25519,-20554,25498,-20580,25477,-20606,25456,-20632,25435,-20658,25414,-20684,25392,-20710,25371,-20736,25350,-20762,25329,-20788,25307,-20814,25286,-20839,25265,-20865,25243,-20891,25222,-20917,25201,-20943,25179,-20968,25158,-20994,25136,-21020,25115,-21046,25093,-21071,25072,-21097,25050,-21123,25029,-21148,25007,-21174,24985,-21199,24964,-21225,24942,-21250,24920,-21276,24898,-21301,24877,-21327,24855,-21352,24833,-21378,24811,-21403,24789,-21428,24767,-21454,24745,-21479,24723,-21504,24701,-21530,24679,-21555,24657,-21580,24635,-21605,24613,-21630,24591,-21656,24569,-21681,24546,-21706,24524,-21731,24502,-21756,24480,-21781,24457,-21806,24435,-21831,24413,-21856,24390,-21881,24368,-21906,24346,-21931,24323,-21956,24301,-21981,24278,-22005,24256,-22030,24233,-22055,24211,-22080,24188,-22105,24165,-22129,24143,-22154,24120,-22179,24097,-22203,24075,-22228,24052,-22253,24029,-22277,24006,-22302,23984,-22326,23961,-22351,23938,-22375,23915,-22400,23892,-22424,23869,-22449,23846,-22473,23823,-22497,23800,-22522,23777,-22546,23754,-22570,23731,-22595,23708,-22619,23685,-22643,23661,-22667,23638,-22692,23615,-22716,23592,-22740,23569,-22764,23545,-22788,23522,-22812,23499,-22836,23475,-22860,23452,-22884,23428,-22908,23405,-22932,23382,-22956,23358,-22980,23335,-23004,23311,-23028,23287,-23051,23264,-23075,23240,-23099,23217,-23123,23193,-23147,23169,-23170,23146,-23194,23122,-23218,23098,-23241,23074,-23265,23050,-23288,23027,-23312,23003,-23336,22979,-23359,22955,-23383,22931,-23406,22907,-23429,22883,-23453,22859,-23476,22835,-23500,22811,-23523,22787,-23546,22763,-23570,22739,-23593,22715,-23616,22691,-23639,22666,-23662,22642,-23686,22618,-23709,22594,-23732,22569,-23755,22545,-23778,22521,-23801,22496,-23824,22472,-23847,22448,-23870,22423,-23893,22399,-23916,22374,-23939,22350,-23962,22325,-23985,22301,-24007,22276,-24030,22252,-24053,22227,-24076,22202,-24098,22178,-24121,22153,-24144,22128,-24166,22104,-24189,22079,-24212,22054,-24234,22029,-24257,22004,-24279,21980,-24302,21955,-24324,21930,-24347,21905,-24369,21880,-24391,21855,-24414,21830,-24436,21805,-24458,21780,-24481,21755,-24503,21730,-24525,21705,-24547,21680,-24570,21655,-24592,21629,-24614,21604,-24636,21579,-24658,21554,-24680,21529,-24702,21503,-24724,21478,-24746,21453,-24768,21427,-24790,21402,-24812,21377,-24834,21351,-24856,21326,-24878,21300,-24899,21275,-24921,21249,-24943,21224,-24965,21198,-24986,21173,-25008,21147,-25030,21122,-25051,21096,-25073,21070,-25094,21045,-25116,21019,-25137,20993,-25159,20967,-25180,20942,-25202,20916,-25223,20890,-25244,20864,-25266,20838,-25287,20813,-25308,20787,-25330,20761,-25351,20735,-25372,20709,-25393,20683,-25415,20657,-25436,20631,-25457,20605,-25478,20579,-25499,20553,-25520,20527,-25541,20500,-25562,20474,-25583,20448,-25604,20422,-25625,20396,-25646,20369,-25666,20343,-25687,20317,-25708,20291,-25729,20264,-25750,20238,-25770,20212,-25791,20185,-25812,20159,-25832,20132,-25853,20106,-25873,20079,-25894,20053,-25914,20026,-25935,20000,-25955,19973,-25976,19947,-25996,19920,-26017,19894,-26037,19867,-26057,19840,-26078,19814,-26098,19787,-26118,19760,-26138,19733,-26159,19707,-26179,19680,-26199,19653,-26219,19626,-26239,19599,-26259,19573,-26279,19546,-26299,19519,-26319,19492,-26339,19465,-26359,19438,-26379,19411,-26399,19384,-26419,19357,-26438,19330,-26458,19303,-26478,19276,-26498,19249,-26517,19221,-26537,19194,-26557,19167,-26576,19140,-26596,19113,-26616,19086,-26635,19058,-26655,19031,-26674,19004,-26693,18976,-26713,18949,-26732,18922,-26752,18894,-26771,18867,-26790,18840,-26810,18812,-26829,18785,-26848,18757,-26867,18730,-26886,18702,-26906,18675,-26925,18647,-26944,18620,-26963,18592,-26982,18564,-27001,18537,-27020,18509,-27039,18482,-27058,18454,-27077,18426,-27095,18398,-27114,18371,-27133,18343,-27152,18315,-27171,18287,-27189,18260,-27208,18232,-27227,18204,-27245,18176,-27264,18148,-27282,18120,-27301,18092,-27320,18064,-27338,18036,-27356,18008,-27375,17980,-27393,17952,-27412,17924,-27430,17896,-27448,17868,-27467,17840,-27485,17812,-27503,17784,-27521,17756,-27539,17727,-27558,17699,-27576,17671,-27594,17643,-27612,17615,-27630,17586,-27648,17558,-27666,17530,-27684,17501,-27702,17473,-27720,17445,-27737,17416,-27755,17388,-27773,17360,-27791,17331,-27809,17303,-27826,17274,-27844,17246,-27862,17217,-27879,17189,-27897,17160,-27914,17132,-27932,17103,-27949,17074,-27967,17046,-27984,17017,-28002,16989,-28019,16960,-28037,16931,-28054,16903,-28071,16874,-28088,16845,-28106,16816,-28123,16788,-28140,16759,-28157,16730,-28174,16701,-28191,16672,-28209,16643,-28226,16615,-28243,16586,-28260,16557,-28276,16528,-28293,16499,-28310,16470,-28327,16441,-28344,16412,-28361,16383,-28378,16354,-28394,16325,-28411,16296,-28428,16267,-28444,16238,-28461,16209,-28478,16179,-28494,16150,-28511,16121,-28527,16092,-28544,16063,-28560,16034,-28576,16004,-28593,15975,-28609,15946,-28626,15917,-28642,15887,-28658,15858,-28674,15829,-28691,15799,-28707,15770,-28723,15740,-28739,15711,-28755,15682,-28771,15652,-28787,15623,-28803,15593,-28819,15564,-28835,15534,-28851,15505,-28867,15475,-28883,15446,-28898,15416,-28914,15387,-28930,15357,-28946,15327,-28961,15298,-28977,15268,-28993,15238,-29008,15209,-29024,15179,-29039,15149,-29055,15120,-29070,15090,-29086,15060,-29101,15030,-29117,15001,-29132,14971,-29147,14941,-29163,14911,-29178,14881,-29193,14852,-29208,14822,-29223,14792,-29239,14762,-29254,14732,-29269,14702,-29284,14672,-29299,14642,-29314,14612,-29329,14582,-29344,14552,-29359,14522,-29373,14492,-29388,14462,-29403,14432,-29418,14402,-29433,14372,-29447,14342,-29462,14311,-29477,14281,-29491,14251,-29506,14221,-29520,14191,-29535,14160,-29549,14130,-29564,14100,-29578,14070,-29593,14039,-29607,14009,-29622,13979,-29636,13949,-29650,13918,-29664,13888,-29679,13858,-29693,13827,-29707,13797,-29721,13766,-29735,13736,-29749,13706,-29763,13675,-29777,13645,-29791,13614,-29805,13584,-29819,13553,-29833,13523,-29847,13492,-29861,13462,-29874,13431,-29888,13400,-29902,13370,-29916,13339,-29929,13309,-29943,13278,-29956,13247,-29970,13217,-29984,13186,-29997,13155,-30010,13125,-30024,13094,-30037,13063,-30051,13033,-30064,13002,-30077,12971,-30091,12940,-30104,12909,-30117,12879,-30130,12848,-30143,12817,-30157,12786,-30170,12755,-30183,12724,-30196,12694,-30209,12663,-30222,12632,-30235,12601,-30248,12570,-30260,12539,-30273,12508,-30286,12477,-30299,12446,-30312,12415,-30324,12384,-30337,12353,-30350,12322,-30362,12291,-30375,12260,-30387,12229,-30400,12198,-30412,12166,-30425,12135,-30437,12104,-30450,12073,-30462,12042,-30474,12011,-30487,11980,-30499,11948,-30511,11917,-30523,11886,-30536,11855,-30548,11823,-30560,11792,-30572,11761,-30584,11730,-30596,11698,-30608,11667,-30620,11636,-30632,11604,-30644,11573,-30656,11542,-30667,11510,-30679,11479,-30691,11448,-30703,11416,-30714,11385,-30726,11353,-30738,11322,-30749,11290,-30761,11259,-30772,11227,-30784,11196,-30795,11164,-30807,11133,-30818,11101,-30829,11070,-30841,11038,-30852,11007,-30863,10975,-30875,10944,-30886,10912,-30897,10880,-30908,10849,-30919,10817,-30930,10786,-30941,10754,-30952,10722,-30963,10691,-30974,10659,-30985,10627,-30996,10596,-31007,10564,-31018,10532,-31029,10500,-31039,10469,-31050,10437,-31061,10405,-31071,10373,-31082,10342,-31093,10310,-31103,10278,-31114,10246,-31124,10214,-31135,10182,-31145,10151,-31155,10119,-31166,10087,-31176,10055,-31186,10023,-31197,9991,-31207,9959,-31217,9927,-31227,9895,-31237,9863,-31248,9831,-31258,9799,-31268,9767,-31278,9735,-31288,9703,-31298,9671,-31308,9639,-31317,9607,-31327,9575,-31337,9543,-31347,9511,-31357,9479,-31366,9447,-31376,9415,-31386,9383,-31395,9351,-31405,9319,-31414,9287,-31424,9254,-31433,9222,-31443,9190,-31452,9158,-31462,9126,-31471,9094,-31480,9061,-31490,9029,-31499,8997,-31508,8965,-31517,8932,-31526,8900,-31535,8868,-31545,8836,-31554,8803,-31563,8771,-31572,8739,-31581,8707,-31589,8674,-31598,8642,-31607,8610,-31616,8577,-31625,8545,-31634,8513,-31642,8480,-31651,8448,-31660,8415,-31668,8383,-31677,8351,-31685,8318,-31694,8286,-31702,8253,-31711,8221,-31719,8189,-31728,8156,-31736,8124,-31744,8091,-31753,8059,-31761,8026,-31769,7994,-31777,7961,-31786,7929,-31794,7896,-31802,7864,-31810,7831,-31818,7799,-31826,7766,-31834,7733,-31842,7701,-31850,7668,-31857,7636,-31865,7603,-31873,7571,-31881,7538,-31889,7505,-31896,7473,-31904,7440,-31912,7407,-31919,7375,-31927,7342,-31934,7310,-31942,7277,-31949,7244,-31957,7211,-31964,7179,-31971,7146,-31979,7113,-31986,7081,-31993,7048,-32000,7015,-32008,6982,-32015,6950,-32022,6917,-32029,6884,-32036,6851,-32043,6819,-32050,6786,-32057,6753,-32064,6720,-32071,6688,-32078,6655,-32085,6622,-32091,6589,-32098,6556,-32105,6523,-32111,6491,-32118,6458,-32125,6425,-32131,6392,-32138,6359,-32144,6326,-32151,6293,-32157,6261,-32164,6228,-32170,6195,-32177,6162,-32183,6129,-32189,6096,-32195,6063,-32202,6030,-32208,5997,-32214,5964,-32220,5931,-32226,5898,-32232,5865,-32238,5832,-32244,5799,-32250,5766,-32256,5733,-32262,5700,-32268,5667,-32274,5634,-32279,5601,-32285,5568,-32291,5535,-32296,5502,-32302,5469,-32308,5436,-32313,5403,-32319,5370,-32324,5337,-32330,5304,-32335,5271,-32341,5238,-32346,5205,-32351,5172,-32357,5139,-32362,5106,-32367,5072,-32372,5039,-32378,5006,-32383,4973,-32388,4940,-32393,4907,-32398,4874,-32403,4841,-32408,4807,-32413,4774,-32418,4741,-32423,4708,-32427,4675,-32432,4642,-32437,4608,-32442,4575,-32446,4542,-32451,4509,-32456,4476,-32460,4443,-32465,4409,-32469,4376,-32474,4343,-32478,4310,-32483,4276,-32487,4243,-32492,4210,-32496,4177,-32500,4144,-32504,4110,-32509,4077,-32513,4044,-32517,4011,-32521,3977,-32525,3944,-32529,3911,-32533,3877,-32537,3844,-32541,3811,-32545,3778,-32549,3744,-32553,3711,-32557,3678,-32560,3644,-32564,3611,-32568,3578,-32572,3545,-32575,3511,-32579,3478,-32582,3445,-32586,3411,-32589,3378,-32593,3345,-32596,3311,-32600,3278,-32603,3245,-32606,3211,-32610,3178,-32613,3145,-32616,3111,-32619,3078,-32623,3044,-32626,3011,-32629,2978,-32632,2944,-32635,2911,-32638,2878,-32641,2844,-32644,2811,-32647,2777,-32650,2744,-32652,2711,-32655,2677,-32658,2644,-32661,2610,-32663,2577,-32666,2544,-32669,2510,-32671,2477,-32674,2443,-32676,2410,-32679,2377,-32681,2343,-32684,2310,-32686,2276,-32688,2243,-32691,2209,-32693,2176,-32695,2143,-32697,2109,-32700,2076,-32702,2042,-32704,2009,-32706,1975,-32708,1942,-32710,1908,-32712,1875,-32714,1842,-32716,1808,-32718,1775,-32719,1741,-32721,1708,-32723,1674,-32725,1641,-32726,1607,-32728,1574,-32730,1540,-32731,1507,-32733,1473,-32734,1440,-32736,1406,-32737,1373,-32739,1339,-32740,1306,-32741,1273,-32743,1239,-32744,1206,-32745,1172,-32747,1139,-32748,1105,-32749,1072,-32750,1038,-32751,1005,-32752,971,-32753,938,-32754,904,-32755,871,-32756,837,-32757,804,-32758,770,-32758,737,-32759,703,-32760,670,-32761,636,-32761,603,-32762,569,-32763,536,-32763,502,-32764,469,-32764,435,-32765,402,-32765,368,-32765,335,-32766,301,-32766,268,-32766,234,-32767,201,-32767,167,-32767,134,-32767,100,-32767,67,-32767,33,-32767,0,-32767,-34,-32767,-68,-32767,-101,-32767,-135,-32767,-168,-32767,-202,-32767,-235,-32767,-269,-32766,-302,-32766,-336,-32766,-369,-32765,-403,-32765,-436,-32765,-470,-32764,-503,-32764,-537,-32763,-570,-32763,-604,-32762,-637,-32761,-671,-32761,-704,-32760,-738,-32759,-771,-32758,-805,-32758,-838,-32757,-872,-32756,-905,-32755,-939,-32754,-972,-32753,-1006,-32752,-1039,-32751,-1073,-32750,-1106,-32749,-1140,-32748,-1173,-32747,-1207,-32745,-1240,-32744,-1274,-32743,-1307,-32741,-1340,-32740,-1374,-32739,-1407,-32737,-1441,-32736,-1474,-32734,-1508,-32733,-1541,-32731,-1575,-32730,-1608,-32728,-1642,-32726,-1675,-32725,-1709,-32723,-1742,-32721,-1776,-32719,-1809,-32718,-1843,-32716,-1876,-32714,-1909,-32712,-1943,-32710,-1976,-32708,-2010,-32706,-2043,-32704,-2077,-32702,-2110,-32700,-2144,-32697,-2177,-32695,-2210,-32693,-2244,-32691,-2277,-32688,-2311,-32686,-2344,-32684,-2378,-32681,-2411,-32679,-2444,-32676,-2478,-32674,-2511,-32671,-2545,-32669,-2578,-32666,-2611,-32663,-2645,-32661,-2678,-32658,-2712,-32655,-2745,-32652,-2778,-32650,-2812,-32647,-2845,-32644,-2879,-32641,-2912,-32638,-2945,-32635,-2979,-32632,-3012,-32629,-3045,-32626,-3079,-32623,-3112,-32619,-3146,-32616,-3179,-32613,-3212,-32610,-3246,-32606,-3279,-32603,-3312,-32600,-3346,-32596,-3379,-32593,-3412,-32589,-3446,-32586,-3479,-32582,-3512,-32579,-3546,-32575,-3579,-32572,-3612,-32568,-3645,-32564,-3679,-32560,-3712,-32557,-3745,-32553,-3779,-32549,-3812,-32545,-3845,-32541,-3878,-32537,-3912,-32533,-3945,-32529,-3978,-32525,-4012,-32521,-4045,-32517,-4078,-32513,-4111,-32509,-4145,-32504,-4178,-32500,-4211,-32496,-4244,-32492,-4277,-32487,-4311,-32483,-4344,-32478,-4377,-32474,-4410,-32469,-4444,-32465,-4477,-32460,-4510,-32456,-4543,-32451,-4576,-32446,-4609,-32442,-4643,-32437,-4676,-32432,-4709,-32427,-4742,-32423,-4775,-32418,-4808,-32413,-4842,-32408,-4875,-32403,-4908,-32398,-4941,-32393,-4974,-32388,-5007,-32383,-5040,-32378,-5073,-32372,-5107,-32367,-5140,-32362,-5173,-32357,-5206,-32351,-5239,-32346,-5272,-32341,-5305,-32335,-5338,-32330,-5371,-32324,-5404,-32319,-5437,-32313,-5470,-32308,-5503,-32302,-5536,-32296,-5569,-32291,-5602,-32285,-5635,-32279,-5668,-32274,-5701,-32268,-5734,-32262,-5767,-32256,-5800,-32250,-5833,-32244,-5866,-32238,-5899,-32232,-5932,-32226,-5965,-32220,-5998,-32214,-6031,-32208,-6064,-32202,-6097,-32195,-6130,-32189,-6163,-32183,-6196,-32177,-6229,-32170,-6262,-32164,-6294,-32157,-6327,-32151,-6360,-32144,-6393,-32138,-6426,-32131,-6459,-32125,-6492,-32118,-6524,-32111,-6557,-32105,-6590,-32098,-6623,-32091,-6656,-32085,-6689,-32078,-6721,-32071,-6754,-32064,-6787,-32057,-6820,-32050,-6852,-32043,-6885,-32036,-6918,-32029,-6951,-32022,-6983,-32015,-7016,-32008,-7049,-32000,-7082,-31993,-7114,-31986,-7147,-31979,-7180,-31971,-7212,-31964,-7245,-31957,-7278,-31949,-7311,-31942,-7343,-31934,-7376,-31927,-7408,-31919,-7441,-31912,-7474,-31904,-7506,-31896,-7539,-31889,-7572,-31881,-7604,-31873,-7637,-31865,-7669,-31857,-7702,-31850,-7734,-31842,-7767,-31834,-7800,-31826,-7832,-31818,-7865,-31810,-7897,-31802,-7930,-31794,-7962,-31786,-7995,-31777,-8027,-31769,-8060,-31761,-8092,-31753,-8125,-31744,-8157,-31736,-8190,-31728,-8222,-31719,-8254,-31711,-8287,-31702,-8319,-31694,-8352,-31685,-8384,-31677,-8416,-31668,-8449,-31660,-8481,-31651,-8514,-31642,-8546,-31634,-8578,-31625,-8611,-31616,-8643,-31607,-8675,-31598,-8708,-31589,-8740,-31581,-8772,-31572,-8804,-31563,-8837,-31554,-8869,-31545,-8901,-31535,-8933,-31526,-8966,-31517,-8998,-31508,-9030,-31499,-9062,-31490,-9095,-31480,-9127,-31471,-9159,-31462,-9191,-31452,-9223,-31443,-9255,-31433,-9288,-31424,-9320,-31414,-9352,-31405,-9384,-31395,-9416,-31386,-9448,-31376,-9480,-31366,-9512,-31357,-9544,-31347,-9576,-31337,-9608,-31327,-9640,-31317,-9672,-31308,-9704,-31298,-9736,-31288,-9768,-31278,-9800,-31268,-9832,-31258,-9864,-31248,-9896,-31237,-9928,-31227,-9960,-31217,-9992,-31207,-10024,-31197,-10056,-31186,-10088,-31176,-10120,-31166,-10152,-31155,-10183,-31145,-10215,-31135,-10247,-31124,-10279,-31114,-10311,-31103,-10343,-31093,-10374,-31082,-10406,-31071,-10438,-31061,-10470,-31050,-10501,-31039,-10533,-31029,-10565,-31018,-10597,-31007,-10628,-30996,-10660,-30985,-10692,-30974,-10723,-30963,-10755,-30952,-10787,-30941,-10818,-30930,-10850,-30919,-10881,-30908,-10913,-30897,-10945,-30886,-10976,-30875,-11008,-30863,-11039,-30852,-11071,-30841,-11102,-30829,-11134,-30818,-11165,-30807,-11197,-30795,-11228,-30784,-11260,-30772,-11291,-30761,-11323,-30749,-11354,-30738,-11386,-30726,-11417,-30714,-11449,-30703,-11480,-30691,-11511,-30679,-11543,-30667,-11574,-30656,-11605,-30644,-11637,-30632,-11668,-30620,-11699,-30608,-11731,-30596,-11762,-30584,-11793,-30572,-11824,-30560,-11856,-30548,-11887,-30536,-11918,-30523,-11949,-30511,-11981,-30499,-12012,-30487,-12043,-30474,-12074,-30462,-12105,-30450,-12136,-30437,-12167,-30425,-12199,-30412,-12230,-30400,-12261,-30387,-12292,-30375,-12323,-30362,-12354,-30350,-12385,-30337,-12416,-30324,-12447,-30312,-12478,-30299,-12509,-30286,-12540,-30273,-12571,-30260,-12602,-30248,-12633,-30235,-12664,-30222,-12695,-30209,-12725,-30196,-12756,-30183,-12787,-30170,-12818,-30157,-12849,-30143,-12880,-30130,-12910,-30117,-12941,-30104,-12972,-30091,-13003,-30077,-13034,-30064,-13064,-30051,-13095,-30037,-13126,-30024,-13156,-30010,-13187,-29997,-13218,-29984,-13248,-29970,-13279,-29956,-13310,-29943,-13340,-29929,-13371,-29916,-13401,-29902,-13432,-29888,-13463,-29874,-13493,-29861,-13524,-29847,-13554,-29833,-13585,-29819,-13615,-29805,-13646,-29791,-13676,-29777,-13707,-29763,-13737,-29749,-13767,-29735,-13798,-29721,-13828,-29707,-13859,-29693,-13889,-29679,-13919,-29664,-13950,-29650,-13980,-29636,-14010,-29622,-14040,-29607,-14071,-29593,-14101,-29578,-14131,-29564,-14161,-29549,-14192,-29535,-14222,-29520,-14252,-29506,-14282,-29491,-14312,-29477,-14343,-29462,-14373,-29447,-14403,-29433,-14433,-29418,-14463,-29403,-14493,-29388,-14523,-29373,-14553,-29359,-14583,-29344,-14613,-29329,-14643,-29314,-14673,-29299,-14703,-29284,-14733,-29269,-14763,-29254,-14793,-29239,-14823,-29223,-14853,-29208,-14882,-29193,-14912,-29178,-14942,-29163,-14972,-29147,-15002,-29132,-15031,-29117,-15061,-29101,-15091,-29086,-15121,-29070,-15150,-29055,-15180,-29039,-15210,-29024,-15239,-29008,-15269,-28993,-15299,-28977,-15328,-28961,-15358,-28946,-15388,-28930,-15417,-28914,-15447,-28898,-15476,-28883,-15506,-28867,-15535,-28851,-15565,-28835,-15594,-28819,-15624,-28803,-15653,-28787,-15683,-28771,-15712,-28755,-15741,-28739,-15771,-28723,-15800,-28707,-15830,-28691,-15859,-28674,-15888,-28658,-15918,-28642,-15947,-28626,-15976,-28609,-16005,-28593,-16035,-28576,-16064,-28560,-16093,-28544,-16122,-28527,-16151,-28511,-16180,-28494,-16210,-28478,-16239,-28461,-16268,-28444,-16297,-28428,-16326,-28411,-16355,-28394};
-
-
-
-int16_t twb6144[4096] __attribute__((aligned(32))) = {32767,0,32766,-68,32766,-135,32766,-202,32765,-269,32765,-336,32764,-403,32763,-470,32762,-537,32761,-604,32760,-671,32758,-738,32757,-805,32755,-872,32753,-939,32751,-1006,32749,-1073,32747,-1140,32744,-1207,32742,-1274,32739,-1340,32736,-1407,32733,-1474,32730,-1541,32727,-1608,32724,-1675,32720,-1742,32717,-1809,32713,-1876,32709,-1943,32705,-2010,32701,-2077,32696,-2144,32692,-2210,32687,-2277,32683,-2344,32678,-2411,32673,-2478,32668,-2545,32662,-2611,32657,-2678,32651,-2745,32646,-2812,32640,-2879,32634,-2945,32628,-3012,32622,-3079,32615,-3146,32609,-3212,32602,-3279,32595,-3346,32588,-3412,32581,-3479,32574,-3546,32567,-3612,32559,-3679,32552,-3745,32544,-3812,32536,-3878,32528,-3945,32520,-4012,32512,-4078,32503,-4145,32495,-4211,32486,-4277,32477,-4344,32468,-4410,32459,-4477,32450,-4543,32441,-4609,32431,-4676,32422,-4742,32412,-4808,32402,-4875,32392,-4941,32382,-5007,32371,-5073,32361,-5140,32350,-5206,32340,-5272,32329,-5338,32318,-5404,32307,-5470,32295,-5536,32284,-5602,32273,-5668,32261,-5734,32249,-5800,32237,-5866,32225,-5932,32213,-5998,32201,-6064,32188,-6130,32176,-6196,32163,-6262,32150,-6327,32137,-6393,32124,-6459,32110,-6524,32097,-6590,32084,-6656,32070,-6721,32056,-6787,32042,-6852,32028,-6918,32014,-6983,31999,-7049,31985,-7114,31970,-7180,31956,-7245,31941,-7311,31926,-7376,31911,-7441,31895,-7506,31880,-7572,31864,-7637,31849,-7702,31833,-7767,31817,-7832,31801,-7897,31785,-7962,31768,-8027,31752,-8092,31735,-8157,31718,-8222,31701,-8287,31684,-8352,31667,-8416,31650,-8481,31633,-8546,31615,-8611,31597,-8675,31580,-8740,31562,-8804,31544,-8869,31525,-8933,31507,-8998,31489,-9062,31470,-9127,31451,-9191,31432,-9255,31413,-9320,31394,-9384,31375,-9448,31356,-9512,31336,-9576,31316,-9640,31297,-9704,31277,-9768,31257,-9832,31236,-9896,31216,-9960,31196,-10024,31175,-10088,31154,-10152,31134,-10215,31113,-10279,31092,-10343,31070,-10406,31049,-10470,31028,-10533,31006,-10597,30984,-10660,30962,-10723,30940,-10787,30918,-10850,30896,-10913,30874,-10976,30851,-11039,30828,-11102,30806,-11165,30783,-11228,30760,-11291,30737,-11354,30713,-11417,30690,-11480,30666,-11543,30643,-11605,30619,-11668,30595,-11731,30571,-11793,30547,-11856,30522,-11918,30498,-11981,30473,-12043,30449,-12105,30424,-12167,30399,-12230,30374,-12292,30349,-12354,30323,-12416,30298,-12478,30272,-12540,30247,-12602,30221,-12664,30195,-12725,30169,-12787,30142,-12849,30116,-12910,30090,-12972,30063,-13034,30036,-13095,30009,-13156,29983,-13218,29955,-13279,29928,-13340,29901,-13401,29873,-13463,29846,-13524,29818,-13585,29790,-13646,29762,-13707,29734,-13767,29706,-13828,29678,-13889,29649,-13950,29621,-14010,29592,-14071,29563,-14131,29534,-14192,29505,-14252,29476,-14312,29446,-14373,29417,-14433,29387,-14493,29358,-14553,29328,-14613,29298,-14673,29268,-14733,29238,-14793,29207,-14853,29177,-14912,29146,-14972,29116,-15031,29085,-15091,29054,-15150,29023,-15210,28992,-15269,28960,-15328,28929,-15388,28897,-15447,28866,-15506,28834,-15565,28802,-15624,28770,-15683,28738,-15741,28706,-15800,28673,-15859,28641,-15918,28608,-15976,28575,-16035,28543,-16093,28510,-16151,28477,-16210,28443,-16268,28410,-16326,28377,-16384,28343,-16442,28309,-16500,28275,-16558,28242,-16616,28208,-16673,28173,-16731,28139,-16789,28105,-16846,28070,-16904,28036,-16961,28001,-17018,27966,-17075,27931,-17133,27896,-17190,27861,-17247,27825,-17304,27790,-17361,27754,-17417,27719,-17474,27683,-17531,27647,-17587,27611,-17644,27575,-17700,27538,-17757,27502,-17813,27466,-17869,27429,-17925,27392,-17981,27355,-18037,27319,-18093,27281,-18149,27244,-18205,27207,-18261,27170,-18316,27132,-18372,27094,-18427,27057,-18483,27019,-18538,26981,-18593,26943,-18648,26905,-18703,26866,-18758,26828,-18813,26789,-18868,26751,-18923,26712,-18977,26673,-19032,26634,-19087,26595,-19141,26556,-19195,26516,-19250,26477,-19304,26437,-19358,26398,-19412,26358,-19466,26318,-19520,26278,-19574,26238,-19627,26198,-19681,26158,-19734,26117,-19788,26077,-19841,26036,-19895,25995,-19948,25954,-20001,25913,-20054,25872,-20107,25831,-20160,25790,-20213,25749,-20265,25707,-20318,25665,-20370,25624,-20423,25582,-20475,25540,-20528,25498,-20580,25456,-20632,25414,-20684,25371,-20736,25329,-20788,25286,-20839,25243,-20891,25201,-20943,25158,-20994,25115,-21046,25072,-21097,25029,-21148,24985,-21199,24942,-21250,24898,-21301,24855,-21352,24811,-21403,24767,-21454,24723,-21504,24679,-21555,24635,-21605,24591,-21656,24546,-21706,24502,-21756,24457,-21806,24413,-21856,24368,-21906,24323,-21956,24278,-22005,24233,-22055,24188,-22105,24143,-22154,24097,-22203,24052,-22253,24006,-22302,23961,-22351,23915,-22400,23869,-22449,23823,-22497,23777,-22546,23731,-22595,23685,-22643,23638,-22692,23592,-22740,23545,-22788,23499,-22836,23452,-22884,23405,-22932,23358,-22980,23311,-23028,23264,-23075,23217,-23123,23169,-23170,23122,-23218,23074,-23265,23027,-23312,22979,-23359,22931,-23406,22883,-23453,22835,-23500,22787,-23546,22739,-23593,22691,-23639,22642,-23686,22594,-23732,22545,-23778,22496,-23824,22448,-23870,22399,-23916,22350,-23962,22301,-24007,22252,-24053,22202,-24098,22153,-24144,22104,-24189,22054,-24234,22004,-24279,21955,-24324,21905,-24369,21855,-24414,21805,-24458,21755,-24503,21705,-24547,21655,-24592,21604,-24636,21554,-24680,21503,-24724,21453,-24768,21402,-24812,21351,-24856,21300,-24899,21249,-24943,21198,-24986,21147,-25030,21096,-25073,21045,-25116,20993,-25159,20942,-25202,20890,-25244,20838,-25287,20787,-25330,20735,-25372,20683,-25415,20631,-25457,20579,-25499,20527,-25541,20474,-25583,20422,-25625,20369,-25666,20317,-25708,20264,-25750,20212,-25791,20159,-25832,20106,-25873,20053,-25914,20000,-25955,19947,-25996,19894,-26037,19840,-26078,19787,-26118,19733,-26159,19680,-26199,19626,-26239,19573,-26279,19519,-26319,19465,-26359,19411,-26399,19357,-26438,19303,-26478,19249,-26517,19194,-26557,19140,-26596,19086,-26635,19031,-26674,18976,-26713,18922,-26752,18867,-26790,18812,-26829,18757,-26867,18702,-26906,18647,-26944,18592,-26982,18537,-27020,18482,-27058,18426,-27095,18371,-27133,18315,-27171,18260,-27208,18204,-27245,18148,-27282,18092,-27320,18036,-27356,17980,-27393,17924,-27430,17868,-27467,17812,-27503,17756,-27539,17699,-27576,17643,-27612,17586,-27648,17530,-27684,17473,-27720,17416,-27755,17360,-27791,17303,-27826,17246,-27862,17189,-27897,17132,-27932,17074,-27967,17017,-28002,16960,-28037,16903,-28071,16845,-28106,16788,-28140,16730,-28174,16672,-28209,16615,-28243,16557,-28276,16499,-28310,16441,-28344,16383,-28378,16325,-28411,16267,-28444,16209,-28478,16150,-28511,16092,-28544,16034,-28576,15975,-28609,15917,-28642,15858,-28674,15799,-28707,15740,-28739,15682,-28771,15623,-28803,15564,-28835,15505,-28867,15446,-28898,15387,-28930,15327,-28961,15268,-28993,15209,-29024,15149,-29055,15090,-29086,15030,-29117,14971,-29147,14911,-29178,14852,-29208,14792,-29239,14732,-29269,14672,-29299,14612,-29329,14552,-29359,14492,-29388,14432,-29418,14372,-29447,14311,-29477,14251,-29506,14191,-29535,14130,-29564,14070,-29593,14009,-29622,13949,-29650,13888,-29679,13827,-29707,13766,-29735,13706,-29763,13645,-29791,13584,-29819,13523,-29847,13462,-29874,13400,-29902,13339,-29929,13278,-29956,13217,-29984,13155,-30010,13094,-30037,13033,-30064,12971,-30091,12909,-30117,12848,-30143,12786,-30170,12724,-30196,12663,-30222,12601,-30248,12539,-30273,12477,-30299,12415,-30324,12353,-30350,12291,-30375,12229,-30400,12166,-30425,12104,-30450,12042,-30474,11980,-30499,11917,-30523,11855,-30548,11792,-30572,11730,-30596,11667,-30620,11604,-30644,11542,-30667,11479,-30691,11416,-30714,11353,-30738,11290,-30761,11227,-30784,11164,-30807,11101,-30829,11038,-30852,10975,-30875,10912,-30897,10849,-30919,10786,-30941,10722,-30963,10659,-30985,10596,-31007,10532,-31029,10469,-31050,10405,-31071,10342,-31093,10278,-31114,10214,-31135,10151,-31155,10087,-31176,10023,-31197,9959,-31217,9895,-31237,9831,-31258,9767,-31278,9703,-31298,9639,-31317,9575,-31337,9511,-31357,9447,-31376,9383,-31395,9319,-31414,9254,-31433,9190,-31452,9126,-31471,9061,-31490,8997,-31508,8932,-31526,8868,-31545,8803,-31563,8739,-31581,8674,-31598,8610,-31616,8545,-31634,8480,-31651,8415,-31668,8351,-31685,8286,-31702,8221,-31719,8156,-31736,8091,-31753,8026,-31769,7961,-31786,7896,-31802,7831,-31818,7766,-31834,7701,-31850,7636,-31865,7571,-31881,7505,-31896,7440,-31912,7375,-31927,7310,-31942,7244,-31957,7179,-31971,7113,-31986,7048,-32000,6982,-32015,6917,-32029,6851,-32043,6786,-32057,6720,-32071,6655,-32085,6589,-32098,6523,-32111,6458,-32125,6392,-32138,6326,-32151,6261,-32164,6195,-32177,6129,-32189,6063,-32202,5997,-32214,5931,-32226,5865,-32238,5799,-32250,5733,-32262,5667,-32274,5601,-32285,5535,-32296,5469,-32308,5403,-32319,5337,-32330,5271,-32341,5205,-32351,5139,-32362,5072,-32372,5006,-32383,4940,-32393,4874,-32403,4807,-32413,4741,-32423,4675,-32432,4608,-32442,4542,-32451,4476,-32460,4409,-32469,4343,-32478,4276,-32487,4210,-32496,4144,-32504,4077,-32513,4011,-32521,3944,-32529,3877,-32537,3811,-32545,3744,-32553,3678,-32560,3611,-32568,3545,-32575,3478,-32582,3411,-32589,3345,-32596,3278,-32603,3211,-32610,3145,-32616,3078,-32623,3011,-32629,2944,-32635,2878,-32641,2811,-32647,2744,-32652,2677,-32658,2610,-32663,2544,-32669,2477,-32674,2410,-32679,2343,-32684,2276,-32688,2209,-32693,2143,-32697,2076,-32702,2009,-32706,1942,-32710,1875,-32714,1808,-32718,1741,-32721,1674,-32725,1607,-32728,1540,-32731,1473,-32734,1406,-32737,1339,-32740,1273,-32743,1206,-32745,1139,-32748,1072,-32750,1005,-32752,938,-32754,871,-32756,804,-32758,737,-32759,670,-32761,603,-32762,536,-32763,469,-32764,402,-32765,335,-32766,268,-32766,201,-32767,134,-32767,67,-32767,0,-32767,-68,-32767,-135,-32767,-202,-32767,-269,-32766,-336,-32766,-403,-32765,-470,-32764,-537,-32763,-604,-32762,-671,-32761,-738,-32759,-805,-32758,-872,-32756,-939,-32754,-1006,-32752,-1073,-32750,-1140,-32748,-1207,-32745,-1274,-32743,-1340,-32740,-1407,-32737,-1474,-32734,-1541,-32731,-1608,-32728,-1675,-32725,-1742,-32721,-1809,-32718,-1876,-32714,-1943,-32710,-2010,-32706,-2077,-32702,-2144,-32697,-2210,-32693,-2277,-32688,-2344,-32684,-2411,-32679,-2478,-32674,-2545,-32669,-2611,-32663,-2678,-32658,-2745,-32652,-2812,-32647,-2879,-32641,-2945,-32635,-3012,-32629,-3079,-32623,-3146,-32616,-3212,-32610,-3279,-32603,-3346,-32596,-3412,-32589,-3479,-32582,-3546,-32575,-3612,-32568,-3679,-32560,-3745,-32553,-3812,-32545,-3878,-32537,-3945,-32529,-4012,-32521,-4078,-32513,-4145,-32504,-4211,-32496,-4277,-32487,-4344,-32478,-4410,-32469,-4477,-32460,-4543,-32451,-4609,-32442,-4676,-32432,-4742,-32423,-4808,-32413,-4875,-32403,-4941,-32393,-5007,-32383,-5073,-32372,-5140,-32362,-5206,-32351,-5272,-32341,-5338,-32330,-5404,-32319,-5470,-32308,-5536,-32296,-5602,-32285,-5668,-32274,-5734,-32262,-5800,-32250,-5866,-32238,-5932,-32226,-5998,-32214,-6064,-32202,-6130,-32189,-6196,-32177,-6262,-32164,-6327,-32151,-6393,-32138,-6459,-32125,-6524,-32111,-6590,-32098,-6656,-32085,-6721,-32071,-6787,-32057,-6852,-32043,-6918,-32029,-6983,-32015,-7049,-32000,-7114,-31986,-7180,-31971,-7245,-31957,-7311,-31942,-7376,-31927,-7441,-31912,-7506,-31896,-7572,-31881,-7637,-31865,-7702,-31850,-7767,-31834,-7832,-31818,-7897,-31802,-7962,-31786,-8027,-31769,-8092,-31753,-8157,-31736,-8222,-31719,-8287,-31702,-8352,-31685,-8416,-31668,-8481,-31651,-8546,-31634,-8611,-31616,-8675,-31598,-8740,-31581,-8804,-31563,-8869,-31545,-8933,-31526,-8998,-31508,-9062,-31490,-9127,-31471,-9191,-31452,-9255,-31433,-9320,-31414,-9384,-31395,-9448,-31376,-9512,-31357,-9576,-31337,-9640,-31317,-9704,-31298,-9768,-31278,-9832,-31258,-9896,-31237,-9960,-31217,-10024,-31197,-10088,-31176,-10152,-31155,-10215,-31135,-10279,-31114,-10343,-31093,-10406,-31071,-10470,-31050,-10533,-31029,-10597,-31007,-10660,-30985,-10723,-30963,-10787,-30941,-10850,-30919,-10913,-30897,-10976,-30875,-11039,-30852,-11102,-30829,-11165,-30807,-11228,-30784,-11291,-30761,-11354,-30738,-11417,-30714,-11480,-30691,-11543,-30667,-11605,-30644,-11668,-30620,-11731,-30596,-11793,-30572,-11856,-30548,-11918,-30523,-11981,-30499,-12043,-30474,-12105,-30450,-12167,-30425,-12230,-30400,-12292,-30375,-12354,-30350,-12416,-30324,-12478,-30299,-12540,-30273,-12602,-30248,-12664,-30222,-12725,-30196,-12787,-30170,-12849,-30143,-12910,-30117,-12972,-30091,-13034,-30064,-13095,-30037,-13156,-30010,-13218,-29984,-13279,-29956,-13340,-29929,-13401,-29902,-13463,-29874,-13524,-29847,-13585,-29819,-13646,-29791,-13707,-29763,-13767,-29735,-13828,-29707,-13889,-29679,-13950,-29650,-14010,-29622,-14071,-29593,-14131,-29564,-14192,-29535,-14252,-29506,-14312,-29477,-14373,-29447,-14433,-29418,-14493,-29388,-14553,-29359,-14613,-29329,-14673,-29299,-14733,-29269,-14793,-29239,-14853,-29208,-14912,-29178,-14972,-29147,-15031,-29117,-15091,-29086,-15150,-29055,-15210,-29024,-15269,-28993,-15328,-28961,-15388,-28930,-15447,-28898,-15506,-28867,-15565,-28835,-15624,-28803,-15683,-28771,-15741,-28739,-15800,-28707,-15859,-28674,-15918,-28642,-15976,-28609,-16035,-28576,-16093,-28544,-16151,-28511,-16210,-28478,-16268,-28444,-16326,-28411,-16384,-28378,-16442,-28344,-16500,-28310,-16558,-28276,-16616,-28243,-16673,-28209,-16731,-28174,-16789,-28140,-16846,-28106,-16904,-28071,-16961,-28037,-17018,-28002,-17075,-27967,-17133,-27932,-17190,-27897,-17247,-27862,-17304,-27826,-17361,-27791,-17417,-27755,-17474,-27720,-17531,-27684,-17587,-27648,-17644,-27612,-17700,-27576,-17757,-27539,-17813,-27503,-17869,-27467,-17925,-27430,-17981,-27393,-18037,-27356,-18093,-27320,-18149,-27282,-18205,-27245,-18261,-27208,-18316,-27171,-18372,-27133,-18427,-27095,-18483,-27058,-18538,-27020,-18593,-26982,-18648,-26944,-18703,-26906,-18758,-26867,-18813,-26829,-18868,-26790,-18923,-26752,-18977,-26713,-19032,-26674,-19087,-26635,-19141,-26596,-19195,-26557,-19250,-26517,-19304,-26478,-19358,-26438,-19412,-26399,-19466,-26359,-19520,-26319,-19574,-26279,-19627,-26239,-19681,-26199,-19734,-26159,-19788,-26118,-19841,-26078,-19895,-26037,-19948,-25996,-20001,-25955,-20054,-25914,-20107,-25873,-20160,-25832,-20213,-25791,-20265,-25750,-20318,-25708,-20370,-25666,-20423,-25625,-20475,-25583,-20528,-25541,-20580,-25499,-20632,-25457,-20684,-25415,-20736,-25372,-20788,-25330,-20839,-25287,-20891,-25244,-20943,-25202,-20994,-25159,-21046,-25116,-21097,-25073,-21148,-25030,-21199,-24986,-21250,-24943,-21301,-24899,-21352,-24856,-21403,-24812,-21454,-24768,-21504,-24724,-21555,-24680,-21605,-24636,-21656,-24592,-21706,-24547,-21756,-24503,-21806,-24458,-21856,-24414,-21906,-24369,-21956,-24324,-22005,-24279,-22055,-24234,-22105,-24189,-22154,-24144,-22203,-24098,-22253,-24053,-22302,-24007,-22351,-23962,-22400,-23916,-22449,-23870,-22497,-23824,-22546,-23778,-22595,-23732,-22643,-23686,-22692,-23639,-22740,-23593,-22788,-23546,-22836,-23500,-22884,-23453,-22932,-23406,-22980,-23359,-23028,-23312,-23075,-23265,-23123,-23218,-23170,-23170,-23218,-23123,-23265,-23075,-23312,-23028,-23359,-22980,-23406,-22932,-23453,-22884,-23500,-22836,-23546,-22788,-23593,-22740,-23639,-22692,-23686,-22643,-23732,-22595,-23778,-22546,-23824,-22497,-23870,-22449,-23916,-22400,-23962,-22351,-24007,-22302,-24053,-22253,-24098,-22203,-24144,-22154,-24189,-22105,-24234,-22055,-24279,-22005,-24324,-21956,-24369,-21906,-24414,-21856,-24458,-21806,-24503,-21756,-24547,-21706,-24592,-21656,-24636,-21605,-24680,-21555,-24724,-21504,-24768,-21454,-24812,-21403,-24856,-21352,-24899,-21301,-24943,-21250,-24986,-21199,-25030,-21148,-25073,-21097,-25116,-21046,-25159,-20994,-25202,-20943,-25244,-20891,-25287,-20839,-25330,-20788,-25372,-20736,-25415,-20684,-25457,-20632,-25499,-20580,-25541,-20528,-25583,-20475,-25625,-20423,-25666,-20370,-25708,-20318,-25750,-20265,-25791,-20213,-25832,-20160,-25873,-20107,-25914,-20054,-25955,-20001,-25996,-19948,-26037,-19895,-26078,-19841,-26118,-19788,-26159,-19734,-26199,-19681,-26239,-19627,-26279,-19574,-26319,-19520,-26359,-19466,-26399,-19412,-26438,-19358,-26478,-19304,-26517,-19250,-26557,-19195,-26596,-19141,-26635,-19087,-26674,-19032,-26713,-18977,-26752,-18923,-26790,-18868,-26829,-18813,-26867,-18758,-26906,-18703,-26944,-18648,-26982,-18593,-27020,-18538,-27058,-18483,-27095,-18427,-27133,-18372,-27171,-18316,-27208,-18261,-27245,-18205,-27282,-18149,-27320,-18093,-27356,-18037,-27393,-17981,-27430,-17925,-27467,-17869,-27503,-17813,-27539,-17757,-27576,-17700,-27612,-17644,-27648,-17587,-27684,-17531,-27720,-17474,-27755,-17417,-27791,-17361,-27826,-17304,-27862,-17247,-27897,-17190,-27932,-17133,-27967,-17075,-28002,-17018,-28037,-16961,-28071,-16904,-28106,-16846,-28140,-16789,-28174,-16731,-28209,-16673,-28243,-16616,-28276,-16558,-28310,-16500,-28344,-16442,-28378,-16384,-28411,-16326,-28444,-16268,-28478,-16210,-28511,-16151,-28544,-16093,-28576,-16035,-28609,-15976,-28642,-15918,-28674,-15859,-28707,-15800,-28739,-15741,-28771,-15683,-28803,-15624,-28835,-15565,-28867,-15506,-28898,-15447,-28930,-15388,-28961,-15328,-28993,-15269,-29024,-15210,-29055,-15150,-29086,-15091,-29117,-15031,-29147,-14972,-29178,-14912,-29208,-14853,-29239,-14793,-29269,-14733,-29299,-14673,-29329,-14613,-29359,-14553,-29388,-14493,-29418,-14433,-29447,-14373,-29477,-14312,-29506,-14252,-29535,-14192,-29564,-14131,-29593,-14071,-29622,-14010,-29650,-13950,-29679,-13889,-29707,-13828,-29735,-13767,-29763,-13707,-29791,-13646,-29819,-13585,-29847,-13524,-29874,-13463,-29902,-13401,-29929,-13340,-29956,-13279,-29984,-13218,-30010,-13156,-30037,-13095,-30064,-13034,-30091,-12972,-30117,-12910,-30143,-12849,-30170,-12787,-30196,-12725,-30222,-12664,-30248,-12602,-30273,-12540,-30299,-12478,-30324,-12416,-30350,-12354,-30375,-12292,-30400,-12230,-30425,-12167,-30450,-12105,-30474,-12043,-30499,-11981,-30523,-11918,-30548,-11856,-30572,-11793,-30596,-11731,-30620,-11668,-30644,-11605,-30667,-11543,-30691,-11480,-30714,-11417,-30738,-11354,-30761,-11291,-30784,-11228,-30807,-11165,-30829,-11102,-30852,-11039,-30875,-10976,-30897,-10913,-30919,-10850,-30941,-10787,-30963,-10723,-30985,-10660,-31007,-10597,-31029,-10533,-31050,-10470,-31071,-10406,-31093,-10343,-31114,-10279,-31135,-10215,-31155,-10152,-31176,-10088,-31197,-10024,-31217,-9960,-31237,-9896,-31258,-9832,-31278,-9768,-31298,-9704,-31317,-9640,-31337,-9576,-31357,-9512,-31376,-9448,-31395,-9384,-31414,-9320,-31433,-9255,-31452,-9191,-31471,-9127,-31490,-9062,-31508,-8998,-31526,-8933,-31545,-8869,-31563,-8804,-31581,-8740,-31598,-8675,-31616,-8611,-31634,-8546,-31651,-8481,-31668,-8416,-31685,-8352,-31702,-8287,-31719,-8222,-31736,-8157,-31753,-8092,-31769,-8027,-31786,-7962,-31802,-7897,-31818,-7832,-31834,-7767,-31850,-7702,-31865,-7637,-31881,-7572,-31896,-7506,-31912,-7441,-31927,-7376,-31942,-7311,-31957,-7245,-31971,-7180,-31986,-7114,-32000,-7049,-32015,-6983,-32029,-6918,-32043,-6852,-32057,-6787,-32071,-6721,-32085,-6656,-32098,-6590,-32111,-6524,-32125,-6459,-32138,-6393,-32151,-6327,-32164,-6262,-32177,-6196,-32189,-6130,-32202,-6064,-32214,-5998,-32226,-5932,-32238,-5866,-32250,-5800,-32262,-5734,-32274,-5668,-32285,-5602,-32296,-5536,-32308,-5470,-32319,-5404,-32330,-5338,-32341,-5272,-32351,-5206,-32362,-5140,-32372,-5073,-32383,-5007,-32393,-4941,-32403,-4875,-32413,-4808,-32423,-4742,-32432,-4676,-32442,-4609,-32451,-4543,-32460,-4477,-32469,-4410,-32478,-4344,-32487,-4277,-32496,-4211,-32504,-4145,-32513,-4078,-32521,-4012,-32529,-3945,-32537,-3878,-32545,-3812,-32553,-3745,-32560,-3679,-32568,-3612,-32575,-3546,-32582,-3479,-32589,-3412,-32596,-3346,-32603,-3279,-32610,-3212,-32616,-3146,-32623,-3079,-32629,-3012,-32635,-2945,-32641,-2879,-32647,-2812,-32652,-2745,-32658,-2678,-32663,-2611,-32669,-2545,-32674,-2478,-32679,-2411,-32684,-2344,-32688,-2277,-32693,-2210,-32697,-2144,-32702,-2077,-32706,-2010,-32710,-1943,-32714,-1876,-32718,-1809,-32721,-1742,-32725,-1675,-32728,-1608,-32731,-1541,-32734,-1474,-32737,-1407,-32740,-1340,-32743,-1274,-32745,-1207,-32748,-1140,-32750,-1073,-32752,-1006,-32754,-939,-32756,-872,-32758,-805,-32759,-738,-32761,-671,-32762,-604,-32763,-537,-32764,-470,-32765,-403,-32766,-336,-32766,-269,-32767,-202,-32767,-135,-32767,-68,-32767,-1,-32767,67,-32767,134,-32767,201,-32766,268,-32766,335,-32765,402,-32764,469,-32763,536,-32762,603,-32761,670,-32759,737,-32758,804,-32756,871,-32754,938,-32752,1005,-32750,1072,-32748,1139,-32745,1206,-32743,1273,-32740,1339,-32737,1406,-32734,1473,-32731,1540,-32728,1607,-32725,1674,-32721,1741,-32718,1808,-32714,1875,-32710,1942,-32706,2009,-32702,2076,-32697,2143,-32693,2209,-32688,2276,-32684,2343,-32679,2410,-32674,2477,-32669,2544,-32663,2610,-32658,2677,-32652,2744,-32647,2811,-32641,2878,-32635,2944,-32629,3011,-32623,3078,-32616,3145,-32610,3211,-32603,3278,-32596,3345,-32589,3411,-32582,3478,-32575,3545,-32568,3611,-32560,3678,-32553,3744,-32545,3811,-32537,3877,-32529,3944,-32521,4011,-32513,4077,-32504,4144,-32496,4210,-32487,4276,-32478,4343,-32469,4409,-32460,4476,-32451,4542,-32442,4608,-32432,4675,-32423,4741,-32413,4807,-32403,4874,-32393,4940,-32383,5006,-32372,5072,-32362,5139,-32351,5205,-32341,5271,-32330,5337,-32319,5403,-32308,5469,-32296,5535,-32285,5601,-32274,5667,-32262,5733,-32250,5799,-32238,5865,-32226,5931,-32214,5997,-32202,6063,-32189,6129,-32177,6195,-32164,6261,-32151,6326,-32138,6392,-32125,6458,-32111,6523,-32098,6589,-32085,6655,-32071,6720,-32057,6786,-32043,6851,-32029,6917,-32015,6982,-32000,7048,-31986,7113,-31971,7179,-31957,7244,-31942,7310,-31927,7375,-31912,7440,-31896,7505,-31881,7571,-31865,7636,-31850,7701,-31834,7766,-31818,7831,-31802,7896,-31786,7961,-31769,8026,-31753,8091,-31736,8156,-31719,8221,-31702,8286,-31685,8351,-31668,8415,-31651,8480,-31634,8545,-31616,8610,-31598,8674,-31581,8739,-31563,8803,-31545,8868,-31526,8932,-31508,8997,-31490,9061,-31471,9126,-31452,9190,-31433,9254,-31414,9319,-31395,9383,-31376,9447,-31357,9511,-31337,9575,-31317,9639,-31298,9703,-31278,9767,-31258,9831,-31237,9895,-31217,9959,-31197,10023,-31176,10087,-31155,10151,-31135,10214,-31114,10278,-31093,10342,-31071,10405,-31050,10469,-31029,10532,-31007,10596,-30985,10659,-30963,10722,-30941,10786,-30919,10849,-30897,10912,-30875,10975,-30852,11038,-30829,11101,-30807,11164,-30784,11227,-30761,11290,-30738,11353,-30714,11416,-30691,11479,-30667,11542,-30644,11604,-30620,11667,-30596,11730,-30572,11792,-30548,11855,-30523,11917,-30499,11980,-30474,12042,-30450,12104,-30425,12166,-30400,12229,-30375,12291,-30350,12353,-30324,12415,-30299,12477,-30273,12539,-30248,12601,-30222,12663,-30196,12724,-30170,12786,-30143,12848,-30117,12909,-30091,12971,-30064,13033,-30037,13094,-30010,13155,-29984,13217,-29956,13278,-29929,13339,-29902,13400,-29874,13462,-29847,13523,-29819,13584,-29791,13645,-29763,13706,-29735,13766,-29707,13827,-29679,13888,-29650,13949,-29622,14009,-29593,14070,-29564,14130,-29535,14191,-29506,14251,-29477,14311,-29447,14372,-29418,14432,-29388,14492,-29359,14552,-29329,14612,-29299,14672,-29269,14732,-29239,14792,-29208,14852,-29178,14911,-29147,14971,-29117,15030,-29086,15090,-29055,15149,-29024,15209,-28993,15268,-28961,15327,-28930,15387,-28898,15446,-28867,15505,-28835,15564,-28803,15623,-28771,15682,-28739,15740,-28707,15799,-28674,15858,-28642,15917,-28609,15975,-28576,16034,-28544,16092,-28511,16150,-28478,16209,-28444,16267,-28411,16325,-28378,16383,-28344,16441,-28310,16499,-28276,16557,-28243,16615,-28209,16672,-28174,16730,-28140,16788,-28106,16845,-28071,16903,-28037,16960,-28002,17017,-27967,17074,-27932,17132,-27897,17189,-27862,17246,-27826,17303,-27791,17360,-27755,17416,-27720,17473,-27684,17530,-27648,17586,-27612,17643,-27576,17699,-27539,17756,-27503,17812,-27467,17868,-27430,17924,-27393,17980,-27356,18036,-27320,18092,-27282,18148,-27245,18204,-27208,18260,-27171,18315,-27133,18371,-27095,18426,-27058,18482,-27020,18537,-26982,18592,-26944,18647,-26906,18702,-26867,18757,-26829,18812,-26790,18867,-26752,18922,-26713,18976,-26674,19031,-26635,19086,-26596,19140,-26557,19194,-26517,19249,-26478,19303,-26438,19357,-26399,19411,-26359,19465,-26319,19519,-26279,19573,-26239,19626,-26199,19680,-26159,19733,-26118,19787,-26078,19840,-26037,19894,-25996,19947,-25955,20000,-25914,20053,-25873,20106,-25832,20159,-25791,20212,-25750,20264,-25708,20317,-25666,20369,-25625,20422,-25583,20474,-25541,20527,-25499,20579,-25457,20631,-25415,20683,-25372,20735,-25330,20787,-25287,20838,-25244,20890,-25202,20942,-25159,20993,-25116,21045,-25073,21096,-25030,21147,-24986,21198,-24943,21249,-24899,21300,-24856,21351,-24812,21402,-24768,21453,-24724,21503,-24680,21554,-24636,21604,-24592,21655,-24547,21705,-24503,21755,-24458,21805,-24414,21855,-24369,21905,-24324,21955,-24279,22004,-24234,22054,-24189,22104,-24144,22153,-24098,22202,-24053,22252,-24007,22301,-23962,22350,-23916,22399,-23870,22448,-23824,22496,-23778,22545,-23732,22594,-23686,22642,-23639,22691,-23593,22739,-23546,22787,-23500,22835,-23453,22883,-23406,22931,-23359,22979,-23312,23027,-23265,23074,-23218,23122,-23170,23169,-23123,23217,-23075,23264,-23028,23311,-22980,23358,-22932,23405,-22884,23452,-22836,23499,-22788,23545,-22740,23592,-22692,23638,-22643,23685,-22595,23731,-22546,23777,-22497,23823,-22449,23869,-22400,23915,-22351,23961,-22302,24006,-22253,24052,-22203,24097,-22154,24143,-22105,24188,-22055,24233,-22005,24278,-21956,24323,-21906,24368,-21856,24413,-21806,24457,-21756,24502,-21706,24546,-21656,24591,-21605,24635,-21555,24679,-21504,24723,-21454,24767,-21403,24811,-21352,24855,-21301,24898,-21250,24942,-21199,24985,-21148,25029,-21097,25072,-21046,25115,-20994,25158,-20943,25201,-20891,25243,-20839,25286,-20788,25329,-20736,25371,-20684,25414,-20632,25456,-20580,25498,-20528,25540,-20475,25582,-20423,25624,-20370,25665,-20318,25707,-20265,25749,-20213,25790,-20160,25831,-20107,25872,-20054,25913,-20001,25954,-19948,25995,-19895,26036,-19841,26077,-19788,26117,-19734,26158,-19681,26198,-19627,26238,-19574,26278,-19520,26318,-19466,26358,-19412,26398,-19358,26437,-19304,26477,-19250,26516,-19195,26556,-19141,26595,-19087,26634,-19032,26673,-18977,26712,-18923,26751,-18868,26789,-18813,26828,-18758,26866,-18703,26905,-18648,26943,-18593,26981,-18538,27019,-18483,27057,-18427,27094,-18372,27132,-18316,27170,-18261,27207,-18205,27244,-18149,27281,-18093,27319,-18037,27355,-17981,27392,-17925,27429,-17869,27466,-17813,27502,-17757,27538,-17700,27575,-17644,27611,-17587,27647,-17531,27683,-17474,27719,-17417,27754,-17361,27790,-17304,27825,-17247,27861,-17190,27896,-17133,27931,-17075,27966,-17018,28001,-16961,28036,-16904,28070,-16846,28105,-16789,28139,-16731,28173,-16673,28208,-16616,28242,-16558,28275,-16500,28309,-16442,28343};
diff --git a/openair1/PHY/TOOLS/twiddles4096.h b/openair1/PHY/TOOLS/twiddles4096.h
deleted file mode 100644
index af2b6a8887619bd82949cfa72ac54f814d5b83a6..0000000000000000000000000000000000000000
--- a/openair1/PHY/TOOLS/twiddles4096.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(0:1023)/4096));
-twb = floor(32767*exp(-sqrt(-1)*2*pi*2*(0:1023)/4096));
-twc = floor(32767*exp(-sqrt(-1)*2*pi*3*(0:1023)/4096));
-twa2 = zeros(1,2*1024);
-twb2 = zeros(1,2*1024);
-twc2 = zeros(1,2*1024);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-twb2(1:2:end) = real(twb);
-twb2(2:2:end) = imag(twb);
-twc2(1:2:end) = real(twc);
-twc2(2:2:end) = imag(twc);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t tw4096[3*1024*2] = {");
-fprintf(fd,"%d,",twa2);
-fprintf(fd,"%d,",twb2);
-fprintf(fd,"%d,",twc2(1:(1024*2)-1));
-fprintf(fd,"%d};\n",twc2(end));
-fclose(fd);
-*/
-static int16_t tw4096[3*1024*2] = {32767,0,32766,-51,32766,-101,32766,-151,32766,-202,32766,-252,32765,-302,32765,-352,32764,-403,32763,-453,32763,-503,32762,-553,32761,-604,32760,-654,32759,-704,32758,-754,32757,-805,32755,-855,32754,-905,32753,-955,32751,-1006,32750,-1056,32748,-1106,32746,-1156,32744,-1207,32742,-1257,32740,-1307,32738,-1357,32736,-1407,32734,-1458,32732,-1508,32729,-1558,32727,-1608,32725,-1659,32722,-1709,32719,-1759,32717,-1809,32714,-1859,32711,-1909,32708,-1960,32705,-2010,32702,-2060,32699,-2110,32695,-2160,32692,-2210,32688,-2261,32685,-2311,32681,-2361,32678,-2411,32674,-2461,32670,-2511,32666,-2561,32662,-2611,32658,-2662,32654,-2712,32650,-2762,32646,-2812,32641,-2862,32637,-2912,32632,-2962,32628,-3012,32623,-3062,32618,-3112,32614,-3162,32609,-3212,32604,-3262,32599,-3312,32594,-3362,32588,-3412,32583,-3462,32578,-3512,32572,-3562,32567,-3612,32561,-3662,32556,-3712,32550,-3762,32544,-3812,32538,-3862,32532,-3912,32526,-3962,32520,-4012,32514,-4061,32508,-4111,32501,-4161,32495,-4211,32488,-4261,32482,-4311,32475,-4360,32468,-4410,32462,-4460,32455,-4510,32448,-4560,32441,-4609,32434,-4659,32426,-4709,32419,-4759,32412,-4808,32404,-4858,32397,-4908,32389,-4958,32382,-5007,32374,-5057,32366,-5107,32358,-5156,32350,-5206,32342,-5255,32334,-5305,32326,-5355,32318,-5404,32310,-5454,32301,-5503,32293,-5553,32284,-5602,32275,-5652,32267,-5701,32258,-5751,32249,-5800,32240,-5850,32231,-5899,32222,-5949,32213,-5998,32204,-6048,32194,-6097,32185,-6146,32176,-6196,32166,-6245,32156,-6294,32147,-6344,32137,-6393,32127,-6442,32117,-6492,32107,-6541,32097,-6590,32087,-6639,32077,-6689,32066,-6738,32056,-6787,32046,-6836,32035,-6885,32024,-6934,32014,-6983,32003,-7033,31992,-7082,31981,-7131,31970,-7180,31959,-7229,31948,-7278,31937,-7327,31926,-7376,31914,-7425,31903,-7474,31891,-7523,31880,-7572,31868,-7620,31856,-7669,31845,-7718,31833,-7767,31821,-7816,31809,-7865,31797,-7913,31785,-7962,31772,-8011,31760,-8060,31748,-8108,31735,-8157,31723,-8206,31710,-8254,31697,-8303,31684,-8352,31672,-8400,31659,-8449,31646,-8497,31633,-8546,31619,-8594,31606,-8643,31593,-8691,31580,-8740,31566,-8788,31553,-8837,31539,-8885,31525,-8933,31512,-8982,31498,-9030,31484,-9078,31470,-9127,31456,-9175,31442,-9223,31428,-9271,31413,-9320,31399,-9368,31385,-9416,31370,-9464,31356,-9512,31341,-9560,31326,-9608,31311,-9656,31297,-9704,31282,-9752,31267,-9800,31252,-9848,31236,-9896,31221,-9944,31206,-9992,31191,-10040,31175,-10088,31160,-10136,31144,-10183,31128,-10231,31113,-10279,31097,-10327,31081,-10374,31065,-10422,31049,-10470,31033,-10517,31017,-10565,31001,-10612,30984,-10660,30968,-10707,30951,-10755,30935,-10802,30918,-10850,30902,-10897,30885,-10945,30868,-10992,30851,-11039,30834,-11087,30817,-11134,30800,-11181,30783,-11228,30766,-11276,30748,-11323,30731,-11370,30713,-11417,30696,-11464,30678,-11511,30660,-11558,30643,-11605,30625,-11652,30607,-11699,30589,-11746,30571,-11793,30553,-11840,30535,-11887,30516,-11934,30498,-11981,30480,-12027,30461,-12074,30442,-12121,30424,-12167,30405,-12214,30386,-12261,30368,-12307,30349,-12354,30330,-12400,30311,-12447,30291,-12493,30272,-12540,30253,-12586,30234,-12633,30214,-12679,30195,-12725,30175,-12772,30156,-12818,30136,-12864,30116,-12910,30096,-12957,30076,-13003,30056,-13049,30036,-13095,30016,-13141,29996,-13187,29976,-13233,29955,-13279,29935,-13325,29915,-13371,29894,-13417,29873,-13463,29853,-13508,29832,-13554,29811,-13600,29790,-13646,29769,-13691,29748,-13737,29727,-13783,29706,-13828,29685,-13874,29663,-13919,29642,-13965,29621,-14010,29599,-14056,29577,-14101,29556,-14146,29534,-14192,29512,-14237,29490,-14282,29468,-14327,29446,-14373,29424,-14418,29402,-14463,29380,-14508,29358,-14553,29335,-14598,29313,-14643,29290,-14688,29268,-14733,29245,-14778,29222,-14823,29200,-14867,29177,-14912,29154,-14957,29131,-15002,29108,-15046,29085,-15091,29062,-15136,29038,-15180,29015,-15225,28992,-15269,28968,-15314,28945,-15358,28921,-15402,28897,-15447,28874,-15491,28850,-15535,28826,-15580,28802,-15624,28778,-15668,28754,-15712,28730,-15756,28706,-15800,28681,-15844,28657,-15888,28633,-15932,28608,-15976,28584,-16020,28559,-16064,28534,-16108,28510,-16151,28485,-16195,28460,-16239,28435,-16282,28410,-16326,28385,-16369,28360,-16413,28335,-16456,28309,-16500,28284,-16543,28259,-16587,28233,-16630,28208,-16673,28182,-16717,28156,-16760,28131,-16803,28105,-16846,28079,-16889,28053,-16932,28027,-16975,28001,-17018,27975,-17061,27948,-17104,27922,-17147,27896,-17190,27869,-17233,27843,-17275,27816,-17318,27790,-17361,27763,-17403,27736,-17446,27710,-17488,27683,-17531,27656,-17573,27629,-17616,27602,-17658,27575,-17700,27548,-17743,27520,-17785,27493,-17827,27466,-17869,27438,-17911,27411,-17953,27383,-17995,27355,-18037,27328,-18079,27300,-18121,27272,-18163,27244,-18205,27216,-18247,27188,-18288,27160,-18330,27132,-18372,27104,-18413,27076,-18455,27047,-18496,27019,-18538,26990,-18579,26962,-18621,26933,-18662,26905,-18703,26876,-18745,26847,-18786,26818,-18827,26789,-18868,26760,-18909,26731,-18950,26702,-18991,26673,-19032,26644,-19073,26615,-19114,26585,-19155,26556,-19195,26526,-19236,26497,-19277,26467,-19317,26437,-19358,26408,-19398,26378,-19439,26348,-19479,26318,-19520,26288,-19560,26258,-19600,26228,-19641,26198,-19681,26168,-19721,26137,-19761,26107,-19801,26077,-19841,26046,-19881,26016,-19921,25985,-19961,25954,-20001,25924,-20041,25893,-20080,25862,-20120,25831,-20160,25800,-20199,25769,-20239,25738,-20278,25707,-20318,25676,-20357,25645,-20397,25613,-20436,25582,-20475,25550,-20514,25519,-20554,25487,-20593,25456,-20632,25424,-20671,25392,-20710,25361,-20749,25329,-20788,25297,-20826,25265,-20865,25233,-20904,25201,-20943,25169,-20981,25136,-21020,25104,-21058,25072,-21097,25039,-21135,25007,-21174,24974,-21212,24942,-21250,24909,-21289,24877,-21327,24844,-21365,24811,-21403,24778,-21441,24745,-21479,24712,-21517,24679,-21555,24646,-21593,24613,-21630,24580,-21668,24546,-21706,24513,-21744,24480,-21781,24446,-21819,24413,-21856,24379,-21894,24346,-21931,24312,-21968,24278,-22005,24244,-22043,24211,-22080,24177,-22117,24143,-22154,24109,-22191,24075,-22228,24041,-22265,24006,-22302,23972,-22339,23938,-22375,23903,-22412,23869,-22449,23835,-22485,23800,-22522,23766,-22558,23731,-22595,23696,-22631,23661,-22667,23627,-22704,23592,-22740,23557,-22776,23522,-22812,23487,-22848,23452,-22884,23417,-22920,23382,-22956,23346,-22992,23311,-23028,23276,-23063,23240,-23099,23205,-23135,23169,-23170,23134,-23206,23098,-23241,23062,-23277,23027,-23312,22991,-23347,22955,-23383,22919,-23418,22883,-23453,22847,-23488,22811,-23523,22775,-23558,22739,-23593,22703,-23628,22666,-23662,22630,-23697,22594,-23732,22557,-23767,22521,-23801,22484,-23836,22448,-23870,22411,-23904,22374,-23939,22338,-23973,22301,-24007,22264,-24042,22227,-24076,22190,-24110,22153,-24144,22116,-24178,22079,-24212,22042,-24245,22004,-24279,21967,-24313,21930,-24347,21893,-24380,21855,-24414,21818,-24447,21780,-24481,21743,-24514,21705,-24547,21667,-24581,21629,-24614,21592,-24647,21554,-24680,21516,-24713,21478,-24746,21440,-24779,21402,-24812,21364,-24845,21326,-24878,21288,-24910,21249,-24943,21211,-24975,21173,-25008,21134,-25040,21096,-25073,21057,-25105,21019,-25137,20980,-25170,20942,-25202,20903,-25234,20864,-25266,20825,-25298,20787,-25330,20748,-25362,20709,-25393,20670,-25425,20631,-25457,20592,-25488,20553,-25520,20513,-25551,20474,-25583,20435,-25614,20396,-25646,20356,-25677,20317,-25708,20277,-25739,20238,-25770,20198,-25801,20159,-25832,20119,-25863,20079,-25894,20040,-25925,20000,-25955,19960,-25986,19920,-26017,19880,-26047,19840,-26078,19800,-26108,19760,-26138,19720,-26169,19680,-26199,19640,-26229,19599,-26259,19559,-26289,19519,-26319,19478,-26349,19438,-26379,19397,-26409,19357,-26438,19316,-26468,19276,-26498,19235,-26527,19194,-26557,19154,-26586,19113,-26616,19072,-26645,19031,-26674,18990,-26703,18949,-26732,18908,-26761,18867,-26790,18826,-26819,18785,-26848,18744,-26877,18702,-26906,18661,-26934,18620,-26963,18578,-26991,18537,-27020,18495,-27048,18454,-27077,18412,-27105,18371,-27133,18329,-27161,18287,-27189,18246,-27217,18204,-27245,18162,-27273,18120,-27301,18078,-27329,18036,-27356,17994,-27384,17952,-27412,17910,-27439,17868,-27467,17826,-27494,17784,-27521,17742,-27549,17699,-27576,17657,-27603,17615,-27630,17572,-27657,17530,-27684,17487,-27711,17445,-27737,17402,-27764,17360,-27791,17317,-27817,17274,-27844,17232,-27870,17189,-27897,17146,-27923,17103,-27949,17060,-27976,17017,-28002,16974,-28028,16931,-28054,16888,-28080,16845,-28106,16802,-28132,16759,-28157,16716,-28183,16672,-28209,16629,-28234,16586,-28260,16542,-28285,16499,-28310,16455,-28336,16412,-28361,16368,-28386,16325,-28411,16281,-28436,16238,-28461,16194,-28486,16150,-28511,16107,-28535,16063,-28560,16019,-28585,15975,-28609,15931,-28634,15887,-28658,15843,-28682,15799,-28707,15755,-28731,15711,-28755,15667,-28779,15623,-28803,15579,-28827,15534,-28851,15490,-28875,15446,-28898,15401,-28922,15357,-28946,15313,-28969,15268,-28993,15224,-29016,15179,-29039,15135,-29063,15090,-29086,15045,-29109,15001,-29132,14956,-29155,14911,-29178,14866,-29201,14822,-29223,14777,-29246,14732,-29269,14687,-29291,14642,-29314,14597,-29336,14552,-29359,14507,-29381,14462,-29403,14417,-29425,14372,-29447,14326,-29469,14281,-29491,14236,-29513,14191,-29535,14145,-29557,14100,-29578,14055,-29600,14009,-29622,13964,-29643,13918,-29664,13873,-29686,13827,-29707,13782,-29728,13736,-29749,13690,-29770,13645,-29791,13599,-29812,13553,-29833,13507,-29854,13462,-29874,13416,-29895,13370,-29916,13324,-29936,13278,-29956,13232,-29977,13186,-29997,13140,-30017,13094,-30037,13048,-30057,13002,-30077,12956,-30097,12909,-30117,12863,-30137,12817,-30157,12771,-30176,12724,-30196,12678,-30215,12632,-30235,12585,-30254,12539,-30273,12492,-30292,12446,-30312,12399,-30331,12353,-30350,12306,-30369,12260,-30387,12213,-30406,12166,-30425,12120,-30443,12073,-30462,12026,-30481,11980,-30499,11933,-30517,11886,-30536,11839,-30554,11792,-30572,11745,-30590,11698,-30608,11651,-30626,11604,-30644,11557,-30661,11510,-30679,11463,-30697,11416,-30714,11369,-30732,11322,-30749,11275,-30767,11227,-30784,11180,-30801,11133,-30818,11086,-30835,11038,-30852,10991,-30869,10944,-30886,10896,-30903,10849,-30919,10801,-30936,10754,-30952,10706,-30969,10659,-30985,10611,-31002,10564,-31018,10516,-31034,10469,-31050,10421,-31066,10373,-31082,10326,-31098,10278,-31114,10230,-31129,10182,-31145,10135,-31161,10087,-31176,10039,-31192,9991,-31207,9943,-31222,9895,-31237,9847,-31253,9799,-31268,9751,-31283,9703,-31298,9655,-31312,9607,-31327,9559,-31342,9511,-31357,9463,-31371,9415,-31386,9367,-31400,9319,-31414,9270,-31429,9222,-31443,9174,-31457,9126,-31471,9077,-31485,9029,-31499,8981,-31513,8932,-31526,8884,-31540,8836,-31554,8787,-31567,8739,-31581,8690,-31594,8642,-31607,8593,-31620,8545,-31634,8496,-31647,8448,-31660,8399,-31673,8351,-31685,8302,-31698,8253,-31711,8205,-31724,8156,-31736,8107,-31749,8059,-31761,8010,-31773,7961,-31786,7912,-31798,7864,-31810,7815,-31822,7766,-31834,7717,-31846,7668,-31857,7619,-31869,7571,-31881,7522,-31892,7473,-31904,7424,-31915,7375,-31927,7326,-31938,7277,-31949,7228,-31960,7179,-31971,7130,-31982,7081,-31993,7032,-32004,6982,-32015,6933,-32025,6884,-32036,6835,-32047,6786,-32057,6737,-32067,6688,-32078,6638,-32088,6589,-32098,6540,-32108,6491,-32118,6441,-32128,6392,-32138,6343,-32148,6293,-32157,6244,-32167,6195,-32177,6145,-32186,6096,-32195,6047,-32205,5997,-32214,5948,-32223,5898,-32232,5849,-32241,5799,-32250,5750,-32259,5700,-32268,5651,-32276,5601,-32285,5552,-32294,5502,-32302,5453,-32311,5403,-32319,5354,-32327,5304,-32335,5254,-32343,5205,-32351,5155,-32359,5106,-32367,5056,-32375,5006,-32383,4957,-32390,4907,-32398,4857,-32405,4807,-32413,4758,-32420,4708,-32427,4658,-32435,4608,-32442,4559,-32449,4509,-32456,4459,-32463,4409,-32469,4359,-32476,4310,-32483,4260,-32489,4210,-32496,4160,-32502,4110,-32509,4060,-32515,4011,-32521,3961,-32527,3911,-32533,3861,-32539,3811,-32545,3761,-32551,3711,-32557,3661,-32562,3611,-32568,3561,-32573,3511,-32579,3461,-32584,3411,-32589,3361,-32595,3311,-32600,3261,-32605,3211,-32610,3161,-32615,3111,-32619,3061,-32624,3011,-32629,2961,-32633,2911,-32638,2861,-32642,2811,-32647,2761,-32651,2711,-32655,2661,-32659,2610,-32663,2560,-32667,2510,-32671,2460,-32675,2410,-32679,2360,-32682,2310,-32686,2260,-32689,2209,-32693,2159,-32696,2109,-32700,2059,-32703,2009,-32706,1959,-32709,1908,-32712,1858,-32715,1808,-32718,1758,-32720,1708,-32723,1658,-32726,1607,-32728,1557,-32730,1507,-32733,1457,-32735,1406,-32737,1356,-32739,1306,-32741,1256,-32743,1206,-32745,1155,-32747,1105,-32749,1055,-32751,1005,-32752,954,-32754,904,-32755,854,-32756,804,-32758,753,-32759,703,-32760,653,-32761,603,-32762,552,-32763,502,-32764,452,-32764,402,-32765,351,-32766,301,-32766,251,-32767,201,-32767,150,-32767,100,-32767,50,-32767,32767,0,32766,-101,32766,-202,32765,-302,32764,-403,32763,-503,32761,-604,32759,-704,32757,-805,32754,-905,32751,-1006,32748,-1106,32744,-1207,32740,-1307,32736,-1407,32732,-1508,32727,-1608,32722,-1709,32717,-1809,32711,-1909,32705,-2010,32699,-2110,32692,-2210,32685,-2311,32678,-2411,32670,-2511,32662,-2611,32654,-2712,32646,-2812,32637,-2912,32628,-3012,32618,-3112,32609,-3212,32599,-3312,32588,-3412,32578,-3512,32567,-3612,32556,-3712,32544,-3812,32532,-3912,32520,-4012,32508,-4111,32495,-4211,32482,-4311,32468,-4410,32455,-4510,32441,-4609,32426,-4709,32412,-4808,32397,-4908,32382,-5007,32366,-5107,32350,-5206,32334,-5305,32318,-5404,32301,-5503,32284,-5602,32267,-5701,32249,-5800,32231,-5899,32213,-5998,32194,-6097,32176,-6196,32156,-6294,32137,-6393,32117,-6492,32097,-6590,32077,-6689,32056,-6787,32035,-6885,32014,-6983,31992,-7082,31970,-7180,31948,-7278,31926,-7376,31903,-7474,31880,-7572,31856,-7669,31833,-7767,31809,-7865,31785,-7962,31760,-8060,31735,-8157,31710,-8254,31684,-8352,31659,-8449,31633,-8546,31606,-8643,31580,-8740,31553,-8837,31525,-8933,31498,-9030,31470,-9127,31442,-9223,31413,-9320,31385,-9416,31356,-9512,31326,-9608,31297,-9704,31267,-9800,31236,-9896,31206,-9992,31175,-10088,31144,-10183,31113,-10279,31081,-10374,31049,-10470,31017,-10565,30984,-10660,30951,-10755,30918,-10850,30885,-10945,30851,-11039,30817,-11134,30783,-11228,30748,-11323,30713,-11417,30678,-11511,30643,-11605,30607,-11699,30571,-11793,30535,-11887,30498,-11981,30461,-12074,30424,-12167,30386,-12261,30349,-12354,30311,-12447,30272,-12540,30234,-12633,30195,-12725,30156,-12818,30116,-12910,30076,-13003,30036,-13095,29996,-13187,29955,-13279,29915,-13371,29873,-13463,29832,-13554,29790,-13646,29748,-13737,29706,-13828,29663,-13919,29621,-14010,29577,-14101,29534,-14192,29490,-14282,29446,-14373,29402,-14463,29358,-14553,29313,-14643,29268,-14733,29222,-14823,29177,-14912,29131,-15002,29085,-15091,29038,-15180,28992,-15269,28945,-15358,28897,-15447,28850,-15535,28802,-15624,28754,-15712,28706,-15800,28657,-15888,28608,-15976,28559,-16064,28510,-16151,28460,-16239,28410,-16326,28360,-16413,28309,-16500,28259,-16587,28208,-16673,28156,-16760,28105,-16846,28053,-16932,28001,-17018,27948,-17104,27896,-17190,27843,-17275,27790,-17361,27736,-17446,27683,-17531,27629,-17616,27575,-17700,27520,-17785,27466,-17869,27411,-17953,27355,-18037,27300,-18121,27244,-18205,27188,-18288,27132,-18372,27076,-18455,27019,-18538,26962,-18621,26905,-18703,26847,-18786,26789,-18868,26731,-18950,26673,-19032,26615,-19114,26556,-19195,26497,-19277,26437,-19358,26378,-19439,26318,-19520,26258,-19600,26198,-19681,26137,-19761,26077,-19841,26016,-19921,25954,-20001,25893,-20080,25831,-20160,25769,-20239,25707,-20318,25645,-20397,25582,-20475,25519,-20554,25456,-20632,25392,-20710,25329,-20788,25265,-20865,25201,-20943,25136,-21020,25072,-21097,25007,-21174,24942,-21250,24877,-21327,24811,-21403,24745,-21479,24679,-21555,24613,-21630,24546,-21706,24480,-21781,24413,-21856,24346,-21931,24278,-22005,24211,-22080,24143,-22154,24075,-22228,24006,-22302,23938,-22375,23869,-22449,23800,-22522,23731,-22595,23661,-22667,23592,-22740,23522,-22812,23452,-22884,23382,-22956,23311,-23028,23240,-23099,23169,-23170,23098,-23241,23027,-23312,22955,-23383,22883,-23453,22811,-23523,22739,-23593,22666,-23662,22594,-23732,22521,-23801,22448,-23870,22374,-23939,22301,-24007,22227,-24076,22153,-24144,22079,-24212,22004,-24279,21930,-24347,21855,-24414,21780,-24481,21705,-24547,21629,-24614,21554,-24680,21478,-24746,21402,-24812,21326,-24878,21249,-24943,21173,-25008,21096,-25073,21019,-25137,20942,-25202,20864,-25266,20787,-25330,20709,-25393,20631,-25457,20553,-25520,20474,-25583,20396,-25646,20317,-25708,20238,-25770,20159,-25832,20079,-25894,20000,-25955,19920,-26017,19840,-26078,19760,-26138,19680,-26199,19599,-26259,19519,-26319,19438,-26379,19357,-26438,19276,-26498,19194,-26557,19113,-26616,19031,-26674,18949,-26732,18867,-26790,18785,-26848,18702,-26906,18620,-26963,18537,-27020,18454,-27077,18371,-27133,18287,-27189,18204,-27245,18120,-27301,18036,-27356,17952,-27412,17868,-27467,17784,-27521,17699,-27576,17615,-27630,17530,-27684,17445,-27737,17360,-27791,17274,-27844,17189,-27897,17103,-27949,17017,-28002,16931,-28054,16845,-28106,16759,-28157,16672,-28209,16586,-28260,16499,-28310,16412,-28361,16325,-28411,16238,-28461,16150,-28511,16063,-28560,15975,-28609,15887,-28658,15799,-28707,15711,-28755,15623,-28803,15534,-28851,15446,-28898,15357,-28946,15268,-28993,15179,-29039,15090,-29086,15001,-29132,14911,-29178,14822,-29223,14732,-29269,14642,-29314,14552,-29359,14462,-29403,14372,-29447,14281,-29491,14191,-29535,14100,-29578,14009,-29622,13918,-29664,13827,-29707,13736,-29749,13645,-29791,13553,-29833,13462,-29874,13370,-29916,13278,-29956,13186,-29997,13094,-30037,13002,-30077,12909,-30117,12817,-30157,12724,-30196,12632,-30235,12539,-30273,12446,-30312,12353,-30350,12260,-30387,12166,-30425,12073,-30462,11980,-30499,11886,-30536,11792,-30572,11698,-30608,11604,-30644,11510,-30679,11416,-30714,11322,-30749,11227,-30784,11133,-30818,11038,-30852,10944,-30886,10849,-30919,10754,-30952,10659,-30985,10564,-31018,10469,-31050,10373,-31082,10278,-31114,10182,-31145,10087,-31176,9991,-31207,9895,-31237,9799,-31268,9703,-31298,9607,-31327,9511,-31357,9415,-31386,9319,-31414,9222,-31443,9126,-31471,9029,-31499,8932,-31526,8836,-31554,8739,-31581,8642,-31607,8545,-31634,8448,-31660,8351,-31685,8253,-31711,8156,-31736,8059,-31761,7961,-31786,7864,-31810,7766,-31834,7668,-31857,7571,-31881,7473,-31904,7375,-31927,7277,-31949,7179,-31971,7081,-31993,6982,-32015,6884,-32036,6786,-32057,6688,-32078,6589,-32098,6491,-32118,6392,-32138,6293,-32157,6195,-32177,6096,-32195,5997,-32214,5898,-32232,5799,-32250,5700,-32268,5601,-32285,5502,-32302,5403,-32319,5304,-32335,5205,-32351,5106,-32367,5006,-32383,4907,-32398,4807,-32413,4708,-32427,4608,-32442,4509,-32456,4409,-32469,4310,-32483,4210,-32496,4110,-32509,4011,-32521,3911,-32533,3811,-32545,3711,-32557,3611,-32568,3511,-32579,3411,-32589,3311,-32600,3211,-32610,3111,-32619,3011,-32629,2911,-32638,2811,-32647,2711,-32655,2610,-32663,2510,-32671,2410,-32679,2310,-32686,2209,-32693,2109,-32700,2009,-32706,1908,-32712,1808,-32718,1708,-32723,1607,-32728,1507,-32733,1406,-32737,1306,-32741,1206,-32745,1105,-32749,1005,-32752,904,-32755,804,-32758,703,-32760,603,-32762,502,-32764,402,-32765,301,-32766,201,-32767,100,-32767,0,-32767,-101,-32767,-202,-32767,-302,-32766,-403,-32765,-503,-32764,-604,-32762,-704,-32760,-805,-32758,-905,-32755,-1006,-32752,-1106,-32749,-1207,-32745,-1307,-32741,-1407,-32737,-1508,-32733,-1608,-32728,-1709,-32723,-1809,-32718,-1909,-32712,-2010,-32706,-2110,-32700,-2210,-32693,-2311,-32686,-2411,-32679,-2511,-32671,-2611,-32663,-2712,-32655,-2812,-32647,-2912,-32638,-3012,-32629,-3112,-32619,-3212,-32610,-3312,-32600,-3412,-32589,-3512,-32579,-3612,-32568,-3712,-32557,-3812,-32545,-3912,-32533,-4012,-32521,-4111,-32509,-4211,-32496,-4311,-32483,-4410,-32469,-4510,-32456,-4609,-32442,-4709,-32427,-4808,-32413,-4908,-32398,-5007,-32383,-5107,-32367,-5206,-32351,-5305,-32335,-5404,-32319,-5503,-32302,-5602,-32285,-5701,-32268,-5800,-32250,-5899,-32232,-5998,-32214,-6097,-32195,-6196,-32177,-6294,-32157,-6393,-32138,-6492,-32118,-6590,-32098,-6689,-32078,-6787,-32057,-6885,-32036,-6983,-32015,-7082,-31993,-7180,-31971,-7278,-31949,-7376,-31927,-7474,-31904,-7572,-31881,-7669,-31857,-7767,-31834,-7865,-31810,-7962,-31786,-8060,-31761,-8157,-31736,-8254,-31711,-8352,-31685,-8449,-31660,-8546,-31634,-8643,-31607,-8740,-31581,-8837,-31554,-8933,-31526,-9030,-31499,-9127,-31471,-9223,-31443,-9320,-31414,-9416,-31386,-9512,-31357,-9608,-31327,-9704,-31298,-9800,-31268,-9896,-31237,-9992,-31207,-10088,-31176,-10183,-31145,-10279,-31114,-10374,-31082,-10470,-31050,-10565,-31018,-10660,-30985,-10755,-30952,-10850,-30919,-10945,-30886,-11039,-30852,-11134,-30818,-11228,-30784,-11323,-30749,-11417,-30714,-11511,-30679,-11605,-30644,-11699,-30608,-11793,-30572,-11887,-30536,-11981,-30499,-12074,-30462,-12167,-30425,-12261,-30387,-12354,-30350,-12447,-30312,-12540,-30273,-12633,-30235,-12725,-30196,-12818,-30157,-12910,-30117,-13003,-30077,-13095,-30037,-13187,-29997,-13279,-29956,-13371,-29916,-13463,-29874,-13554,-29833,-13646,-29791,-13737,-29749,-13828,-29707,-13919,-29664,-14010,-29622,-14101,-29578,-14192,-29535,-14282,-29491,-14373,-29447,-14463,-29403,-14553,-29359,-14643,-29314,-14733,-29269,-14823,-29223,-14912,-29178,-15002,-29132,-15091,-29086,-15180,-29039,-15269,-28993,-15358,-28946,-15447,-28898,-15535,-28851,-15624,-28803,-15712,-28755,-15800,-28707,-15888,-28658,-15976,-28609,-16064,-28560,-16151,-28511,-16239,-28461,-16326,-28411,-16413,-28361,-16500,-28310,-16587,-28260,-16673,-28209,-16760,-28157,-16846,-28106,-16932,-28054,-17018,-28002,-17104,-27949,-17190,-27897,-17275,-27844,-17361,-27791,-17446,-27737,-17531,-27684,-17616,-27630,-17700,-27576,-17785,-27521,-17869,-27467,-17953,-27412,-18037,-27356,-18121,-27301,-18205,-27245,-18288,-27189,-18372,-27133,-18455,-27077,-18538,-27020,-18621,-26963,-18703,-26906,-18786,-26848,-18868,-26790,-18950,-26732,-19032,-26674,-19114,-26616,-19195,-26557,-19277,-26498,-19358,-26438,-19439,-26379,-19520,-26319,-19600,-26259,-19681,-26199,-19761,-26138,-19841,-26078,-19921,-26017,-20001,-25955,-20080,-25894,-20160,-25832,-20239,-25770,-20318,-25708,-20397,-25646,-20475,-25583,-20554,-25520,-20632,-25457,-20710,-25393,-20788,-25330,-20865,-25266,-20943,-25202,-21020,-25137,-21097,-25073,-21174,-25008,-21250,-24943,-21327,-24878,-21403,-24812,-21479,-24746,-21555,-24680,-21630,-24614,-21706,-24547,-21781,-24481,-21856,-24414,-21931,-24347,-22005,-24279,-22080,-24212,-22154,-24144,-22228,-24076,-22302,-24007,-22375,-23939,-22449,-23870,-22522,-23801,-22595,-23732,-22667,-23662,-22740,-23593,-22812,-23523,-22884,-23453,-22956,-23383,-23028,-23312,-23099,-23241,-23170,-23170,-23241,-23099,-23312,-23028,-23383,-22956,-23453,-22884,-23523,-22812,-23593,-22740,-23662,-22667,-23732,-22595,-23801,-22522,-23870,-22449,-23939,-22375,-24007,-22302,-24076,-22228,-24144,-22154,-24212,-22080,-24279,-22005,-24347,-21931,-24414,-21856,-24481,-21781,-24547,-21706,-24614,-21630,-24680,-21555,-24746,-21479,-24812,-21403,-24878,-21327,-24943,-21250,-25008,-21174,-25073,-21097,-25137,-21020,-25202,-20943,-25266,-20865,-25330,-20788,-25393,-20710,-25457,-20632,-25520,-20554,-25583,-20475,-25646,-20397,-25708,-20318,-25770,-20239,-25832,-20160,-25894,-20080,-25955,-20001,-26017,-19921,-26078,-19841,-26138,-19761,-26199,-19681,-26259,-19600,-26319,-19520,-26379,-19439,-26438,-19358,-26498,-19277,-26557,-19195,-26616,-19114,-26674,-19032,-26732,-18950,-26790,-18868,-26848,-18786,-26906,-18703,-26963,-18621,-27020,-18538,-27077,-18455,-27133,-18372,-27189,-18288,-27245,-18205,-27301,-18121,-27356,-18037,-27412,-17953,-27467,-17869,-27521,-17785,-27576,-17700,-27630,-17616,-27684,-17531,-27737,-17446,-27791,-17361,-27844,-17275,-27897,-17190,-27949,-17104,-28002,-17018,-28054,-16932,-28106,-16846,-28157,-16760,-28209,-16673,-28260,-16587,-28310,-16500,-28361,-16413,-28411,-16326,-28461,-16239,-28511,-16151,-28560,-16064,-28609,-15976,-28658,-15888,-28707,-15800,-28755,-15712,-28803,-15624,-28851,-15535,-28898,-15447,-28946,-15358,-28993,-15269,-29039,-15180,-29086,-15091,-29132,-15002,-29178,-14912,-29223,-14823,-29269,-14733,-29314,-14643,-29359,-14553,-29403,-14463,-29447,-14373,-29491,-14282,-29535,-14192,-29578,-14101,-29622,-14010,-29664,-13919,-29707,-13828,-29749,-13737,-29791,-13646,-29833,-13554,-29874,-13463,-29916,-13371,-29956,-13279,-29997,-13187,-30037,-13095,-30077,-13003,-30117,-12910,-30157,-12818,-30196,-12725,-30235,-12633,-30273,-12540,-30312,-12447,-30350,-12354,-30387,-12261,-30425,-12167,-30462,-12074,-30499,-11981,-30536,-11887,-30572,-11793,-30608,-11699,-30644,-11605,-30679,-11511,-30714,-11417,-30749,-11323,-30784,-11228,-30818,-11134,-30852,-11039,-30886,-10945,-30919,-10850,-30952,-10755,-30985,-10660,-31018,-10565,-31050,-10470,-31082,-10374,-31114,-10279,-31145,-10183,-31176,-10088,-31207,-9992,-31237,-9896,-31268,-9800,-31298,-9704,-31327,-9608,-31357,-9512,-31386,-9416,-31414,-9320,-31443,-9223,-31471,-9127,-31499,-9030,-31526,-8933,-31554,-8837,-31581,-8740,-31607,-8643,-31634,-8546,-31660,-8449,-31685,-8352,-31711,-8254,-31736,-8157,-31761,-8060,-31786,-7962,-31810,-7865,-31834,-7767,-31857,-7669,-31881,-7572,-31904,-7474,-31927,-7376,-31949,-7278,-31971,-7180,-31993,-7082,-32015,-6983,-32036,-6885,-32057,-6787,-32078,-6689,-32098,-6590,-32118,-6492,-32138,-6393,-32157,-6294,-32177,-6196,-32195,-6097,-32214,-5998,-32232,-5899,-32250,-5800,-32268,-5701,-32285,-5602,-32302,-5503,-32319,-5404,-32335,-5305,-32351,-5206,-32367,-5107,-32383,-5007,-32398,-4908,-32413,-4808,-32427,-4709,-32442,-4609,-32456,-4510,-32469,-4410,-32483,-4311,-32496,-4211,-32509,-4111,-32521,-4012,-32533,-3912,-32545,-3812,-32557,-3712,-32568,-3612,-32579,-3512,-32589,-3412,-32600,-3312,-32610,-3212,-32619,-3112,-32629,-3012,-32638,-2912,-32647,-2812,-32655,-2712,-32663,-2611,-32671,-2511,-32679,-2411,-32686,-2311,-32693,-2210,-32700,-2110,-32706,-2010,-32712,-1909,-32718,-1809,-32723,-1709,-32728,-1608,-32733,-1508,-32737,-1407,-32741,-1307,-32745,-1207,-32749,-1106,-32752,-1006,-32755,-905,-32758,-805,-32760,-704,-32762,-604,-32764,-503,-32765,-403,-32766,-302,-32767,-202,-32767,-101,32767,0,32766,-151,32765,-302,32763,-453,32761,-604,32758,-754,32754,-905,32750,-1056,32744,-1207,32738,-1357,32732,-1508,32725,-1659,32717,-1809,32708,-1960,32699,-2110,32688,-2261,32678,-2411,32666,-2561,32654,-2712,32641,-2862,32628,-3012,32614,-3162,32599,-3312,32583,-3462,32567,-3612,32550,-3762,32532,-3912,32514,-4061,32495,-4211,32475,-4360,32455,-4510,32434,-4659,32412,-4808,32389,-4958,32366,-5107,32342,-5255,32318,-5404,32293,-5553,32267,-5701,32240,-5850,32213,-5998,32185,-6146,32156,-6294,32127,-6442,32097,-6590,32066,-6738,32035,-6885,32003,-7033,31970,-7180,31937,-7327,31903,-7474,31868,-7620,31833,-7767,31797,-7913,31760,-8060,31723,-8206,31684,-8352,31646,-8497,31606,-8643,31566,-8788,31525,-8933,31484,-9078,31442,-9223,31399,-9368,31356,-9512,31311,-9656,31267,-9800,31221,-9944,31175,-10088,31128,-10231,31081,-10374,31033,-10517,30984,-10660,30935,-10802,30885,-10945,30834,-11087,30783,-11228,30731,-11370,30678,-11511,30625,-11652,30571,-11793,30516,-11934,30461,-12074,30405,-12214,30349,-12354,30291,-12493,30234,-12633,30175,-12772,30116,-12910,30056,-13049,29996,-13187,29935,-13325,29873,-13463,29811,-13600,29748,-13737,29685,-13874,29621,-14010,29556,-14146,29490,-14282,29424,-14418,29358,-14553,29290,-14688,29222,-14823,29154,-14957,29085,-15091,29015,-15225,28945,-15358,28874,-15491,28802,-15624,28730,-15756,28657,-15888,28584,-16020,28510,-16151,28435,-16282,28360,-16413,28284,-16543,28208,-16673,28131,-16803,28053,-16932,27975,-17061,27896,-17190,27816,-17318,27736,-17446,27656,-17573,27575,-17700,27493,-17827,27411,-17953,27328,-18079,27244,-18205,27160,-18330,27076,-18455,26990,-18579,26905,-18703,26818,-18827,26731,-18950,26644,-19073,26556,-19195,26467,-19317,26378,-19439,26288,-19560,26198,-19681,26107,-19801,26016,-19921,25924,-20041,25831,-20160,25738,-20278,25645,-20397,25550,-20514,25456,-20632,25361,-20749,25265,-20865,25169,-20981,25072,-21097,24974,-21212,24877,-21327,24778,-21441,24679,-21555,24580,-21668,24480,-21781,24379,-21894,24278,-22005,24177,-22117,24075,-22228,23972,-22339,23869,-22449,23766,-22558,23661,-22667,23557,-22776,23452,-22884,23346,-22992,23240,-23099,23134,-23206,23027,-23312,22919,-23418,22811,-23523,22703,-23628,22594,-23732,22484,-23836,22374,-23939,22264,-24042,22153,-24144,22042,-24245,21930,-24347,21818,-24447,21705,-24547,21592,-24647,21478,-24746,21364,-24845,21249,-24943,21134,-25040,21019,-25137,20903,-25234,20787,-25330,20670,-25425,20553,-25520,20435,-25614,20317,-25708,20198,-25801,20079,-25894,19960,-25986,19840,-26078,19720,-26169,19599,-26259,19478,-26349,19357,-26438,19235,-26527,19113,-26616,18990,-26703,18867,-26790,18744,-26877,18620,-26963,18495,-27048,18371,-27133,18246,-27217,18120,-27301,17994,-27384,17868,-27467,17742,-27549,17615,-27630,17487,-27711,17360,-27791,17232,-27870,17103,-27949,16974,-28028,16845,-28106,16716,-28183,16586,-28260,16455,-28336,16325,-28411,16194,-28486,16063,-28560,15931,-28634,15799,-28707,15667,-28779,15534,-28851,15401,-28922,15268,-28993,15135,-29063,15001,-29132,14866,-29201,14732,-29269,14597,-29336,14462,-29403,14326,-29469,14191,-29535,14055,-29600,13918,-29664,13782,-29728,13645,-29791,13507,-29854,13370,-29916,13232,-29977,13094,-30037,12956,-30097,12817,-30157,12678,-30215,12539,-30273,12399,-30331,12260,-30387,12120,-30443,11980,-30499,11839,-30554,11698,-30608,11557,-30661,11416,-30714,11275,-30767,11133,-30818,10991,-30869,10849,-30919,10706,-30969,10564,-31018,10421,-31066,10278,-31114,10135,-31161,9991,-31207,9847,-31253,9703,-31298,9559,-31342,9415,-31386,9270,-31429,9126,-31471,8981,-31513,8836,-31554,8690,-31594,8545,-31634,8399,-31673,8253,-31711,8107,-31749,7961,-31786,7815,-31822,7668,-31857,7522,-31892,7375,-31927,7228,-31960,7081,-31993,6933,-32025,6786,-32057,6638,-32088,6491,-32118,6343,-32148,6195,-32177,6047,-32205,5898,-32232,5750,-32259,5601,-32285,5453,-32311,5304,-32335,5155,-32359,5006,-32383,4857,-32405,4708,-32427,4559,-32449,4409,-32469,4260,-32489,4110,-32509,3961,-32527,3811,-32545,3661,-32562,3511,-32579,3361,-32595,3211,-32610,3061,-32624,2911,-32638,2761,-32651,2610,-32663,2460,-32675,2310,-32686,2159,-32696,2009,-32706,1858,-32715,1708,-32723,1557,-32730,1406,-32737,1256,-32743,1105,-32749,954,-32754,804,-32758,653,-32761,502,-32764,351,-32766,201,-32767,50,-32767,-101,-32767,-252,-32767,-403,-32765,-553,-32763,-704,-32760,-855,-32756,-1006,-32752,-1156,-32747,-1307,-32741,-1458,-32735,-1608,-32728,-1759,-32720,-1909,-32712,-2060,-32703,-2210,-32693,-2361,-32682,-2511,-32671,-2662,-32659,-2812,-32647,-2962,-32633,-3112,-32619,-3262,-32605,-3412,-32589,-3562,-32573,-3712,-32557,-3862,-32539,-4012,-32521,-4161,-32502,-4311,-32483,-4460,-32463,-4609,-32442,-4759,-32420,-4908,-32398,-5057,-32375,-5206,-32351,-5355,-32327,-5503,-32302,-5652,-32276,-5800,-32250,-5949,-32223,-6097,-32195,-6245,-32167,-6393,-32138,-6541,-32108,-6689,-32078,-6836,-32047,-6983,-32015,-7131,-31982,-7278,-31949,-7425,-31915,-7572,-31881,-7718,-31846,-7865,-31810,-8011,-31773,-8157,-31736,-8303,-31698,-8449,-31660,-8594,-31620,-8740,-31581,-8885,-31540,-9030,-31499,-9175,-31457,-9320,-31414,-9464,-31371,-9608,-31327,-9752,-31283,-9896,-31237,-10040,-31192,-10183,-31145,-10327,-31098,-10470,-31050,-10612,-31002,-10755,-30952,-10897,-30903,-11039,-30852,-11181,-30801,-11323,-30749,-11464,-30697,-11605,-30644,-11746,-30590,-11887,-30536,-12027,-30481,-12167,-30425,-12307,-30369,-12447,-30312,-12586,-30254,-12725,-30196,-12864,-30137,-13003,-30077,-13141,-30017,-13279,-29956,-13417,-29895,-13554,-29833,-13691,-29770,-13828,-29707,-13965,-29643,-14101,-29578,-14237,-29513,-14373,-29447,-14508,-29381,-14643,-29314,-14778,-29246,-14912,-29178,-15046,-29109,-15180,-29039,-15314,-28969,-15447,-28898,-15580,-28827,-15712,-28755,-15844,-28682,-15976,-28609,-16108,-28535,-16239,-28461,-16369,-28386,-16500,-28310,-16630,-28234,-16760,-28157,-16889,-28080,-17018,-28002,-17147,-27923,-17275,-27844,-17403,-27764,-17531,-27684,-17658,-27603,-17785,-27521,-17911,-27439,-18037,-27356,-18163,-27273,-18288,-27189,-18413,-27105,-18538,-27020,-18662,-26934,-18786,-26848,-18909,-26761,-19032,-26674,-19155,-26586,-19277,-26498,-19398,-26409,-19520,-26319,-19641,-26229,-19761,-26138,-19881,-26047,-20001,-25955,-20120,-25863,-20239,-25770,-20357,-25677,-20475,-25583,-20593,-25488,-20710,-25393,-20826,-25298,-20943,-25202,-21058,-25105,-21174,-25008,-21289,-24910,-21403,-24812,-21517,-24713,-21630,-24614,-21744,-24514,-21856,-24414,-21968,-24313,-22080,-24212,-22191,-24110,-22302,-24007,-22412,-23904,-22522,-23801,-22631,-23697,-22740,-23593,-22848,-23488,-22956,-23383,-23063,-23277,-23170,-23170,-23277,-23063,-23383,-22956,-23488,-22848,-23593,-22740,-23697,-22631,-23801,-22522,-23904,-22412,-24007,-22302,-24110,-22191,-24212,-22080,-24313,-21968,-24414,-21856,-24514,-21744,-24614,-21630,-24713,-21517,-24812,-21403,-24910,-21289,-25008,-21174,-25105,-21058,-25202,-20943,-25298,-20826,-25393,-20710,-25488,-20593,-25583,-20475,-25677,-20357,-25770,-20239,-25863,-20120,-25955,-20001,-26047,-19881,-26138,-19761,-26229,-19641,-26319,-19520,-26409,-19398,-26498,-19277,-26586,-19155,-26674,-19032,-26761,-18909,-26848,-18786,-26934,-18662,-27020,-18538,-27105,-18413,-27189,-18288,-27273,-18163,-27356,-18037,-27439,-17911,-27521,-17785,-27603,-17658,-27684,-17531,-27764,-17403,-27844,-17275,-27923,-17147,-28002,-17018,-28080,-16889,-28157,-16760,-28234,-16630,-28310,-16500,-28386,-16369,-28461,-16239,-28535,-16108,-28609,-15976,-28682,-15844,-28755,-15712,-28827,-15580,-28898,-15447,-28969,-15314,-29039,-15180,-29109,-15046,-29178,-14912,-29246,-14778,-29314,-14643,-29381,-14508,-29447,-14373,-29513,-14237,-29578,-14101,-29643,-13965,-29707,-13828,-29770,-13691,-29833,-13554,-29895,-13417,-29956,-13279,-30017,-13141,-30077,-13003,-30137,-12864,-30196,-12725,-30254,-12586,-30312,-12447,-30369,-12307,-30425,-12167,-30481,-12027,-30536,-11887,-30590,-11746,-30644,-11605,-30697,-11464,-30749,-11323,-30801,-11181,-30852,-11039,-30903,-10897,-30952,-10755,-31002,-10612,-31050,-10470,-31098,-10327,-31145,-10183,-31192,-10040,-31237,-9896,-31283,-9752,-31327,-9608,-31371,-9464,-31414,-9320,-31457,-9175,-31499,-9030,-31540,-8885,-31581,-8740,-31620,-8594,-31660,-8449,-31698,-8303,-31736,-8157,-31773,-8011,-31810,-7865,-31846,-7718,-31881,-7572,-31915,-7425,-31949,-7278,-31982,-7131,-32015,-6983,-32047,-6836,-32078,-6689,-32108,-6541,-32138,-6393,-32167,-6245,-32195,-6097,-32223,-5949,-32250,-5800,-32276,-5652,-32302,-5503,-32327,-5355,-32351,-5206,-32375,-5057,-32398,-4908,-32420,-4759,-32442,-4609,-32463,-4460,-32483,-4311,-32502,-4161,-32521,-4012,-32539,-3862,-32557,-3712,-32573,-3562,-32589,-3412,-32605,-3262,-32619,-3112,-32633,-2962,-32647,-2812,-32659,-2662,-32671,-2511,-32682,-2361,-32693,-2210,-32703,-2060,-32712,-1909,-32720,-1759,-32728,-1608,-32735,-1458,-32741,-1307,-32747,-1156,-32752,-1006,-32756,-855,-32760,-704,-32763,-553,-32765,-403,-32767,-252,-32767,-101,-32767,50,-32767,201,-32766,351,-32764,502,-32761,653,-32758,804,-32754,954,-32749,1105,-32743,1256,-32737,1406,-32730,1557,-32723,1708,-32715,1858,-32706,2009,-32696,2159,-32686,2310,-32675,2460,-32663,2610,-32651,2761,-32638,2911,-32624,3061,-32610,3211,-32595,3361,-32579,3511,-32562,3661,-32545,3811,-32527,3961,-32509,4110,-32489,4260,-32469,4409,-32449,4559,-32427,4708,-32405,4857,-32383,5006,-32359,5155,-32335,5304,-32311,5453,-32285,5601,-32259,5750,-32232,5898,-32205,6047,-32177,6195,-32148,6343,-32118,6491,-32088,6638,-32057,6786,-32025,6933,-31993,7081,-31960,7228,-31927,7375,-31892,7522,-31857,7668,-31822,7815,-31786,7961,-31749,8107,-31711,8253,-31673,8399,-31634,8545,-31594,8690,-31554,8836,-31513,8981,-31471,9126,-31429,9270,-31386,9415,-31342,9559,-31298,9703,-31253,9847,-31207,9991,-31161,10135,-31114,10278,-31066,10421,-31018,10564,-30969,10706,-30919,10849,-30869,10991,-30818,11133,-30767,11275,-30714,11416,-30661,11557,-30608,11698,-30554,11839,-30499,11980,-30443,12120,-30387,12260,-30331,12399,-30273,12539,-30215,12678,-30157,12817,-30097,12956,-30037,13094,-29977,13232,-29916,13370,-29854,13507,-29791,13645,-29728,13782,-29664,13918,-29600,14055,-29535,14191,-29469,14326,-29403,14462,-29336,14597,-29269,14732,-29201,14866,-29132,15001,-29063,15135,-28993,15268,-28922,15401,-28851,15534,-28779,15667,-28707,15799,-28634,15931,-28560,16063,-28486,16194,-28411,16325,-28336,16455,-28260,16586,-28183,16716,-28106,16845,-28028,16974,-27949,17103,-27870,17232,-27791,17360,-27711,17487,-27630,17615,-27549,17742,-27467,17868,-27384,17994,-27301,18120,-27217,18246,-27133,18371,-27048,18495,-26963,18620,-26877,18744,-26790,18867,-26703,18990,-26616,19113,-26527,19235,-26438,19357,-26349,19478,-26259,19599,-26169,19720,-26078,19840,-25986,19960,-25894,20079,-25801,20198,-25708,20317,-25614,20435,-25520,20553,-25425,20670,-25330,20787,-25234,20903,-25137,21019,-25040,21134,-24943,21249,-24845,21364,-24746,21478,-24647,21592,-24547,21705,-24447,21818,-24347,21930,-24245,22042,-24144,22153,-24042,22264,-23939,22374,-23836,22484,-23732,22594,-23628,22703,-23523,22811,-23418,22919,-23312,23027,-23206,23134,-23099,23240,-22992,23346,-22884,23452,-22776,23557,-22667,23661,-22558,23766,-22449,23869,-22339,23972,-22228,24075,-22117,24177,-22005,24278,-21894,24379,-21781,24480,-21668,24580,-21555,24679,-21441,24778,-21327,24877,-21212,24974,-21097,25072,-20981,25169,-20865,25265,-20749,25361,-20632,25456,-20514,25550,-20397,25645,-20278,25738,-20160,25831,-20041,25924,-19921,26016,-19801,26107,-19681,26198,-19560,26288,-19439,26378,-19317,26467,-19195,26556,-19073,26644,-18950,26731,-18827,26818,-18703,26905,-18579,26990,-18455,27076,-18330,27160,-18205,27244,-18079,27328,-17953,27411,-17827,27493,-17700,27575,-17573,27656,-17446,27736,-17318,27816,-17190,27896,-17061,27975,-16932,28053,-16803,28131,-16673,28208,-16543,28284,-16413,28360,-16282,28435,-16151,28510,-16020,28584,-15888,28657,-15756,28730,-15624,28802,-15491,28874,-15358,28945,-15225,29015,-15091,29085,-14957,29154,-14823,29222,-14688,29290,-14553,29358,-14418,29424,-14282,29490,-14146,29556,-14010,29621,-13874,29685,-13737,29748,-13600,29811,-13463,29873,-13325,29935,-13187,29996,-13049,30056,-12910,30116,-12772,30175,-12633,30234,-12493,30291,-12354,30349,-12214,30405,-12074,30461,-11934,30516,-11793,30571,-11652,30625,-11511,30678,-11370,30731,-11228,30783,-11087,30834,-10945,30885,-10802,30935,-10660,30984,-10517,31033,-10374,31081,-10231,31128,-10088,31175,-9944,31221,-9800,31267,-9656,31311,-9512,31356,-9368,31399,-9223,31442,-9078,31484,-8933,31525,-8788,31566,-8643,31606,-8497,31646,-8352,31684,-8206,31723,-8060,31760,-7913,31797,-7767,31833,-7620,31868,-7474,31903,-7327,31937,-7180,31970,-7033,32003,-6885,32035,-6738,32066,-6590,32097,-6442,32127,-6294,32156,-6146,32185,-5998,32213,-5850,32240,-5701,32267,-5553,32293,-5404,32318,-5255,32342,-5107,32366,-4958,32389,-4808,32412,-4659,32434,-4510,32455,-4360,32475,-4211,32495,-4061,32514,-3912,32532,-3762,32550,-3612,32567,-3462,32583,-3312,32599,-3162,32614,-3012,32628,-2862,32641,-2712,32654,-2561,32666,-2411,32678,-2261,32688,-2110,32699,-1960,32708,-1809,32717,-1659,32725,-1508,32732,-1357,32738,-1207,32744,-1056,32750,-905,32754,-754,32758,-604,32761,-453,32763,-302,32765,-151,32766};
diff --git a/openair1/PHY/TOOLS/twiddles8192.h b/openair1/PHY/TOOLS/twiddles8192.h
deleted file mode 100644
index 6b76619013387f85ddac1292a29fa5b39fff4ecd..0000000000000000000000000000000000000000
--- a/openair1/PHY/TOOLS/twiddles8192.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/* Twiddles generated with
-twa = floor(32767*exp(-sqrt(-1)*2*pi*(0:4095)/8192));
-twa2 = zeros(1,2*4096);
-twa2(1:2:end) = real(twa);
-twa2(2:2:end) = imag(twa);
-fd=fopen("twiddle_tmp.txt","w");
-fprintf(fd,"static int16_t tw8192[4096*2] = {");
-fprintf(fd,"%d,",twa2(1:(4096*2)-1));
-fprintf(fd,"%d};\n",twa2(end));
-fclose(fd);
-*/
-static int16_t tw8192[4096*2] = {32767,0,32766,-26,32766,-51,32766,-76,32766,-101,32766,-126,32766,-151,32766,-176,32766,-202,32766,-227,32766,-252,32765,-277,32765,-302,32765,-327,32765,-352,32764,-377,32764,-403,32764,-428,32763,-453,32763,-478,32763,-503,32762,-528,32762,-553,32761,-579,32761,-604,32760,-629,32760,-654,32759,-679,32759,-704,32758,-729,32758,-754,32757,-780,32757,-805,32756,-830,32755,-855,32755,-880,32754,-905,32753,-930,32753,-955,32752,-981,32751,-1006,32750,-1031,32750,-1056,32749,-1081,32748,-1106,32747,-1131,32746,-1156,32745,-1181,32744,-1207,32743,-1232,32742,-1257,32741,-1282,32740,-1307,32739,-1332,32738,-1357,32737,-1382,32736,-1407,32735,-1433,32734,-1458,32733,-1483,32732,-1508,32731,-1533,32729,-1558,32728,-1583,32727,-1608,32726,-1633,32725,-1659,32723,-1684,32722,-1709,32721,-1734,32719,-1759,32718,-1784,32717,-1809,32715,-1834,32714,-1859,32712,-1884,32711,-1909,32709,-1935,32708,-1960,32706,-1985,32705,-2010,32703,-2035,32702,-2060,32700,-2085,32699,-2110,32697,-2135,32695,-2160,32694,-2185,32692,-2210,32690,-2236,32688,-2261,32687,-2286,32685,-2311,32683,-2336,32681,-2361,32680,-2386,32678,-2411,32676,-2436,32674,-2461,32672,-2486,32670,-2511,32668,-2536,32666,-2561,32664,-2586,32662,-2611,32660,-2637,32658,-2662,32656,-2687,32654,-2712,32652,-2737,32650,-2762,32648,-2787,32646,-2812,32644,-2837,32641,-2862,32639,-2887,32637,-2912,32635,-2937,32632,-2962,32630,-2987,32628,-3012,32625,-3037,32623,-3062,32621,-3087,32618,-3112,32616,-3137,32614,-3162,32611,-3187,32609,-3212,32606,-3237,32604,-3262,32601,-3287,32599,-3312,32596,-3337,32594,-3362,32591,-3387,32588,-3412,32586,-3437,32583,-3462,32580,-3487,32578,-3512,32575,-3537,32572,-3562,32570,-3587,32567,-3612,32564,-3637,32561,-3662,32558,-3687,32556,-3712,32553,-3737,32550,-3762,32547,-3787,32544,-3812,32541,-3837,32538,-3862,32535,-3887,32532,-3912,32529,-3937,32526,-3962,32523,-3987,32520,-4012,32517,-4036,32514,-4061,32511,-4086,32508,-4111,32504,-4136,32501,-4161,32498,-4186,32495,-4211,32492,-4236,32488,-4261,32485,-4286,32482,-4311,32478,-4336,32475,-4360,32472,-4385,32468,-4410,32465,-4435,32462,-4460,32458,-4485,32455,-4510,32451,-4535,32448,-4560,32444,-4585,32441,-4609,32437,-4634,32434,-4659,32430,-4684,32426,-4709,32423,-4734,32419,-4759,32416,-4784,32412,-4808,32408,-4833,32404,-4858,32401,-4883,32397,-4908,32393,-4933,32389,-4958,32386,-4982,32382,-5007,32378,-5032,32374,-5057,32370,-5082,32366,-5107,32362,-5131,32358,-5156,32354,-5181,32350,-5206,32346,-5231,32342,-5255,32338,-5280,32334,-5305,32330,-5330,32326,-5355,32322,-5379,32318,-5404,32314,-5429,32310,-5454,32305,-5479,32301,-5503,32297,-5528,32293,-5553,32288,-5578,32284,-5602,32280,-5627,32275,-5652,32271,-5677,32267,-5701,32262,-5726,32258,-5751,32254,-5776,32249,-5800,32245,-5825,32240,-5850,32236,-5875,32231,-5899,32227,-5924,32222,-5949,32218,-5973,32213,-5998,32208,-6023,32204,-6048,32199,-6072,32194,-6097,32190,-6122,32185,-6146,32180,-6171,32176,-6196,32171,-6220,32166,-6245,32161,-6270,32156,-6294,32152,-6319,32147,-6344,32142,-6368,32137,-6393,32132,-6418,32127,-6442,32122,-6467,32117,-6492,32112,-6516,32107,-6541,32102,-6565,32097,-6590,32092,-6615,32087,-6639,32082,-6664,32077,-6689,32072,-6713,32066,-6738,32061,-6762,32056,-6787,32051,-6812,32046,-6836,32040,-6861,32035,-6885,32030,-6910,32024,-6934,32019,-6959,32014,-6983,32008,-7008,32003,-7033,31998,-7057,31992,-7082,31987,-7106,31981,-7131,31976,-7155,31970,-7180,31965,-7204,31959,-7229,31954,-7253,31948,-7278,31943,-7302,31937,-7327,31931,-7351,31926,-7376,31920,-7400,31914,-7425,31909,-7449,31903,-7474,31897,-7498,31891,-7523,31886,-7547,31880,-7572,31874,-7596,31868,-7620,31862,-7645,31856,-7669,31851,-7694,31845,-7718,31839,-7743,31833,-7767,31827,-7791,31821,-7816,31815,-7840,31809,-7865,31803,-7889,31797,-7913,31791,-7938,31785,-7962,31778,-7987,31772,-8011,31766,-8035,31760,-8060,31754,-8084,31748,-8108,31741,-8133,31735,-8157,31729,-8181,31723,-8206,31716,-8230,31710,-8254,31704,-8279,31697,-8303,31691,-8327,31684,-8352,31678,-8376,31672,-8400,31665,-8425,31659,-8449,31652,-8473,31646,-8497,31639,-8522,31633,-8546,31626,-8570,31619,-8594,31613,-8619,31606,-8643,31600,-8667,31593,-8691,31586,-8716,31580,-8740,31573,-8764,31566,-8788,31559,-8813,31553,-8837,31546,-8861,31539,-8885,31532,-8909,31525,-8933,31518,-8958,31512,-8982,31505,-9006,31498,-9030,31491,-9054,31484,-9078,31477,-9103,31470,-9127,31463,-9151,31456,-9175,31449,-9199,31442,-9223,31435,-9247,31428,-9271,31420,-9296,31413,-9320,31406,-9344,31399,-9368,31392,-9392,31385,-9416,31377,-9440,31370,-9464,31363,-9488,31356,-9512,31348,-9536,31341,-9560,31334,-9584,31326,-9608,31319,-9632,31311,-9656,31304,-9680,31297,-9704,31289,-9728,31282,-9752,31274,-9776,31267,-9800,31259,-9824,31252,-9848,31244,-9872,31236,-9896,31229,-9920,31221,-9944,31214,-9968,31206,-9992,31198,-10016,31191,-10040,31183,-10064,31175,-10088,31167,-10112,31160,-10136,31152,-10160,31144,-10183,31136,-10207,31128,-10231,31121,-10255,31113,-10279,31105,-10303,31097,-10327,31089,-10350,31081,-10374,31073,-10398,31065,-10422,31057,-10446,31049,-10470,31041,-10493,31033,-10517,31025,-10541,31017,-10565,31009,-10589,31001,-10612,30992,-10636,30984,-10660,30976,-10684,30968,-10707,30960,-10731,30951,-10755,30943,-10779,30935,-10802,30927,-10826,30918,-10850,30910,-10874,30902,-10897,30893,-10921,30885,-10945,30876,-10968,30868,-10992,30860,-11016,30851,-11039,30843,-11063,30834,-11087,30826,-11110,30817,-11134,30809,-11158,30800,-11181,30791,-11205,30783,-11228,30774,-11252,30766,-11276,30757,-11299,30748,-11323,30739,-11346,30731,-11370,30722,-11394,30713,-11417,30705,-11441,30696,-11464,30687,-11488,30678,-11511,30669,-11535,30660,-11558,30652,-11582,30643,-11605,30634,-11629,30625,-11652,30616,-11676,30607,-11699,30598,-11723,30589,-11746,30580,-11770,30571,-11793,30562,-11817,30553,-11840,30544,-11863,30535,-11887,30525,-11910,30516,-11934,30507,-11957,30498,-11981,30489,-12004,30480,-12027,30470,-12051,30461,-12074,30452,-12097,30442,-12121,30433,-12144,30424,-12167,30415,-12191,30405,-12214,30396,-12237,30386,-12261,30377,-12284,30368,-12307,30358,-12331,30349,-12354,30339,-12377,30330,-12400,30320,-12424,30311,-12447,30301,-12470,30291,-12493,30282,-12517,30272,-12540,30263,-12563,30253,-12586,30243,-12610,30234,-12633,30224,-12656,30214,-12679,30205,-12702,30195,-12725,30185,-12749,30175,-12772,30165,-12795,30156,-12818,30146,-12841,30136,-12864,30126,-12887,30116,-12910,30106,-12934,30096,-12957,30086,-12980,30076,-13003,30066,-13026,30056,-13049,30046,-13072,30036,-13095,30026,-13118,30016,-13141,30006,-13164,29996,-13187,29986,-13210,29976,-13233,29966,-13256,29955,-13279,29945,-13302,29935,-13325,29925,-13348,29915,-13371,29904,-13394,29894,-13417,29884,-13440,29873,-13463,29863,-13486,29853,-13508,29842,-13531,29832,-13554,29822,-13577,29811,-13600,29801,-13623,29790,-13646,29780,-13668,29769,-13691,29759,-13714,29748,-13737,29738,-13760,29727,-13783,29717,-13805,29706,-13828,29695,-13851,29685,-13874,29674,-13896,29663,-13919,29653,-13942,29642,-13965,29631,-13987,29621,-14010,29610,-14033,29599,-14056,29588,-14078,29577,-14101,29567,-14124,29556,-14146,29545,-14169,29534,-14192,29523,-14214,29512,-14237,29501,-14260,29490,-14282,29479,-14305,29468,-14327,29457,-14350,29446,-14373,29435,-14395,29424,-14418,29413,-14440,29402,-14463,29391,-14485,29380,-14508,29369,-14531,29358,-14553,29346,-14576,29335,-14598,29324,-14621,29313,-14643,29302,-14666,29290,-14688,29279,-14710,29268,-14733,29256,-14755,29245,-14778,29234,-14800,29222,-14823,29211,-14845,29200,-14867,29188,-14890,29177,-14912,29165,-14935,29154,-14957,29142,-14979,29131,-15002,29119,-15024,29108,-15046,29096,-15069,29085,-15091,29073,-15113,29062,-15136,29050,-15158,29038,-15180,29027,-15202,29015,-15225,29003,-15247,28992,-15269,28980,-15291,28968,-15314,28956,-15336,28945,-15358,28933,-15380,28921,-15402,28909,-15425,28897,-15447,28886,-15469,28874,-15491,28862,-15513,28850,-15535,28838,-15557,28826,-15580,28814,-15602,28802,-15624,28790,-15646,28778,-15668,28766,-15690,28754,-15712,28742,-15734,28730,-15756,28718,-15778,28706,-15800,28694,-15822,28681,-15844,28669,-15866,28657,-15888,28645,-15910,28633,-15932,28620,-15954,28608,-15976,28596,-15998,28584,-16020,28571,-16042,28559,-16064,28547,-16086,28534,-16108,28522,-16129,28510,-16151,28497,-16173,28485,-16195,28472,-16217,28460,-16239,28447,-16261,28435,-16282,28423,-16304,28410,-16326,28397,-16348,28385,-16369,28372,-16391,28360,-16413,28347,-16435,28335,-16456,28322,-16478,28309,-16500,28297,-16522,28284,-16543,28271,-16565,28259,-16587,28246,-16608,28233,-16630,28220,-16652,28208,-16673,28195,-16695,28182,-16717,28169,-16738,28156,-16760,28143,-16781,28131,-16803,28118,-16825,28105,-16846,28092,-16868,28079,-16889,28066,-16911,28053,-16932,28040,-16954,28027,-16975,28014,-16997,28001,-17018,27988,-17040,27975,-17061,27962,-17083,27948,-17104,27935,-17125,27922,-17147,27909,-17168,27896,-17190,27883,-17211,27869,-17233,27856,-17254,27843,-17275,27830,-17297,27816,-17318,27803,-17339,27790,-17361,27777,-17382,27763,-17403,27750,-17424,27736,-17446,27723,-17467,27710,-17488,27696,-17510,27683,-17531,27669,-17552,27656,-17573,27642,-17594,27629,-17616,27615,-17637,27602,-17658,27588,-17679,27575,-17700,27561,-17721,27548,-17743,27534,-17764,27520,-17785,27507,-17806,27493,-17827,27479,-17848,27466,-17869,27452,-17890,27438,-17911,27424,-17932,27411,-17953,27397,-17974,27383,-17995,27369,-18016,27355,-18037,27342,-18058,27328,-18079,27314,-18100,27300,-18121,27286,-18142,27272,-18163,27258,-18184,27244,-18205,27230,-18226,27216,-18247,27202,-18268,27188,-18288,27174,-18309,27160,-18330,27146,-18351,27132,-18372,27118,-18393,27104,-18413,27090,-18434,27076,-18455,27061,-18476,27047,-18496,27033,-18517,27019,-18538,27005,-18559,26990,-18579,26976,-18600,26962,-18621,26948,-18641,26933,-18662,26919,-18683,26905,-18703,26890,-18724,26876,-18745,26861,-18765,26847,-18786,26833,-18806,26818,-18827,26804,-18847,26789,-18868,26775,-18889,26760,-18909,26746,-18930,26731,-18950,26717,-18971,26702,-18991,26688,-19012,26673,-19032,26658,-19052,26644,-19073,26629,-19093,26615,-19114,26600,-19134,26585,-19155,26570,-19175,26556,-19195,26541,-19216,26526,-19236,26512,-19256,26497,-19277,26482,-19297,26467,-19317,26452,-19338,26437,-19358,26423,-19378,26408,-19398,26393,-19419,26378,-19439,26363,-19459,26348,-19479,26333,-19500,26318,-19520,26303,-19540,26288,-19560,26273,-19580,26258,-19600,26243,-19621,26228,-19641,26213,-19661,26198,-19681,26183,-19701,26168,-19721,26153,-19741,26137,-19761,26122,-19781,26107,-19801,26092,-19821,26077,-19841,26061,-19861,26046,-19881,26031,-19901,26016,-19921,26000,-19941,25985,-19961,25970,-19981,25954,-20001,25939,-20021,25924,-20041,25908,-20061,25893,-20080,25878,-20100,25862,-20120,25847,-20140,25831,-20160,25816,-20180,25800,-20199,25785,-20219,25769,-20239,25754,-20259,25738,-20278,25723,-20298,25707,-20318,25691,-20338,25676,-20357,25660,-20377,25645,-20397,25629,-20416,25613,-20436,25598,-20456,25582,-20475,25566,-20495,25550,-20514,25535,-20534,25519,-20554,25503,-20573,25487,-20593,25472,-20612,25456,-20632,25440,-20651,25424,-20671,25408,-20690,25392,-20710,25376,-20729,25361,-20749,25345,-20768,25329,-20788,25313,-20807,25297,-20826,25281,-20846,25265,-20865,25249,-20885,25233,-20904,25217,-20923,25201,-20943,25185,-20962,25169,-20981,25152,-21001,25136,-21020,25120,-21039,25104,-21058,25088,-21078,25072,-21097,25056,-21116,25039,-21135,25023,-21155,25007,-21174,24991,-21193,24974,-21212,24958,-21231,24942,-21250,24926,-21269,24909,-21289,24893,-21308,24877,-21327,24860,-21346,24844,-21365,24827,-21384,24811,-21403,24795,-21422,24778,-21441,24762,-21460,24745,-21479,24729,-21498,24712,-21517,24696,-21536,24679,-21555,24663,-21574,24646,-21593,24630,-21612,24613,-21630,24596,-21649,24580,-21668,24563,-21687,24546,-21706,24530,-21725,24513,-21744,24496,-21762,24480,-21781,24463,-21800,24446,-21819,24430,-21837,24413,-21856,24396,-21875,24379,-21894,24362,-21912,24346,-21931,24329,-21950,24312,-21968,24295,-21987,24278,-22005,24261,-22024,24244,-22043,24228,-22061,24211,-22080,24194,-22098,24177,-22117,24160,-22136,24143,-22154,24126,-22173,24109,-22191,24092,-22210,24075,-22228,24058,-22246,24041,-22265,24023,-22283,24006,-22302,23989,-22320,23972,-22339,23955,-22357,23938,-22375,23921,-22394,23903,-22412,23886,-22430,23869,-22449,23852,-22467,23835,-22485,23817,-22504,23800,-22522,23783,-22540,23766,-22558,23748,-22576,23731,-22595,23714,-22613,23696,-22631,23679,-22649,23661,-22667,23644,-22686,23627,-22704,23609,-22722,23592,-22740,23574,-22758,23557,-22776,23539,-22794,23522,-22812,23504,-22830,23487,-22848,23469,-22866,23452,-22884,23434,-22902,23417,-22920,23399,-22938,23382,-22956,23364,-22974,23346,-22992,23329,-23010,23311,-23028,23293,-23046,23276,-23063,23258,-23081,23240,-23099,23223,-23117,23205,-23135,23187,-23152,23169,-23170,23151,-23188,23134,-23206,23116,-23224,23098,-23241,23080,-23259,23062,-23277,23045,-23294,23027,-23312,23009,-23330,22991,-23347,22973,-23365,22955,-23383,22937,-23400,22919,-23418,22901,-23435,22883,-23453,22865,-23470,22847,-23488,22829,-23505,22811,-23523,22793,-23540,22775,-23558,22757,-23575,22739,-23593,22721,-23610,22703,-23628,22685,-23645,22666,-23662,22648,-23680,22630,-23697,22612,-23715,22594,-23732,22575,-23749,22557,-23767,22539,-23784,22521,-23801,22503,-23818,22484,-23836,22466,-23853,22448,-23870,22429,-23887,22411,-23904,22393,-23922,22374,-23939,22356,-23956,22338,-23973,22319,-23990,22301,-24007,22282,-24024,22264,-24042,22245,-24059,22227,-24076,22209,-24093,22190,-24110,22172,-24127,22153,-24144,22135,-24161,22116,-24178,22097,-24195,22079,-24212,22060,-24229,22042,-24245,22023,-24262,22004,-24279,21986,-24296,21967,-24313,21949,-24330,21930,-24347,21911,-24363,21893,-24380,21874,-24397,21855,-24414,21836,-24431,21818,-24447,21799,-24464,21780,-24481,21761,-24497,21743,-24514,21724,-24531,21705,-24547,21686,-24564,21667,-24581,21648,-24597,21629,-24614,21611,-24631,21592,-24647,21573,-24664,21554,-24680,21535,-24697,21516,-24713,21497,-24730,21478,-24746,21459,-24763,21440,-24779,21421,-24796,21402,-24812,21383,-24828,21364,-24845,21345,-24861,21326,-24878,21307,-24894,21288,-24910,21268,-24927,21249,-24943,21230,-24959,21211,-24975,21192,-24992,21173,-25008,21154,-25024,21134,-25040,21115,-25057,21096,-25073,21077,-25089,21057,-25105,21038,-25121,21019,-25137,21000,-25153,20980,-25170,20961,-25186,20942,-25202,20922,-25218,20903,-25234,20884,-25250,20864,-25266,20845,-25282,20825,-25298,20806,-25314,20787,-25330,20767,-25346,20748,-25362,20728,-25377,20709,-25393,20689,-25409,20670,-25425,20650,-25441,20631,-25457,20611,-25473,20592,-25488,20572,-25504,20553,-25520,20533,-25536,20513,-25551,20494,-25567,20474,-25583,20455,-25599,20435,-25614,20415,-25630,20396,-25646,20376,-25661,20356,-25677,20337,-25692,20317,-25708,20297,-25724,20277,-25739,20258,-25755,20238,-25770,20218,-25786,20198,-25801,20179,-25817,20159,-25832,20139,-25848,20119,-25863,20099,-25879,20079,-25894,20060,-25909,20040,-25925,20020,-25940,20000,-25955,19980,-25971,19960,-25986,19940,-26001,19920,-26017,19900,-26032,19880,-26047,19860,-26062,19840,-26078,19820,-26093,19800,-26108,19780,-26123,19760,-26138,19740,-26154,19720,-26169,19700,-26184,19680,-26199,19660,-26214,19640,-26229,19620,-26244,19599,-26259,19579,-26274,19559,-26289,19539,-26304,19519,-26319,19499,-26334,19478,-26349,19458,-26364,19438,-26379,19418,-26394,19397,-26409,19377,-26424,19357,-26438,19337,-26453,19316,-26468,19296,-26483,19276,-26498,19255,-26513,19235,-26527,19215,-26542,19194,-26557,19174,-26571,19154,-26586,19133,-26601,19113,-26616,19092,-26630,19072,-26645,19051,-26659,19031,-26674,19011,-26689,18990,-26703,18970,-26718,18949,-26732,18929,-26747,18908,-26761,18888,-26776,18867,-26790,18846,-26805,18826,-26819,18805,-26834,18785,-26848,18764,-26862,18744,-26877,18723,-26891,18702,-26906,18682,-26920,18661,-26934,18640,-26949,18620,-26963,18599,-26977,18578,-26991,18558,-27006,18537,-27020,18516,-27034,18495,-27048,18475,-27062,18454,-27077,18433,-27091,18412,-27105,18392,-27119,18371,-27133,18350,-27147,18329,-27161,18308,-27175,18287,-27189,18267,-27203,18246,-27217,18225,-27231,18204,-27245,18183,-27259,18162,-27273,18141,-27287,18120,-27301,18099,-27315,18078,-27329,18057,-27343,18036,-27356,18015,-27370,17994,-27384,17973,-27398,17952,-27412,17931,-27425,17910,-27439,17889,-27453,17868,-27467,17847,-27480,17826,-27494,17805,-27508,17784,-27521,17763,-27535,17742,-27549,17720,-27562,17699,-27576,17678,-27589,17657,-27603,17636,-27616,17615,-27630,17593,-27643,17572,-27657,17551,-27670,17530,-27684,17509,-27697,17487,-27711,17466,-27724,17445,-27737,17423,-27751,17402,-27764,17381,-27778,17360,-27791,17338,-27804,17317,-27817,17296,-27831,17274,-27844,17253,-27857,17232,-27870,17210,-27884,17189,-27897,17167,-27910,17146,-27923,17124,-27936,17103,-27949,17082,-27963,17060,-27976,17039,-27989,17017,-28002,16996,-28015,16974,-28028,16953,-28041,16931,-28054,16910,-28067,16888,-28080,16867,-28093,16845,-28106,16824,-28119,16802,-28132,16780,-28144,16759,-28157,16737,-28170,16716,-28183,16694,-28196,16672,-28209,16651,-28221,16629,-28234,16607,-28247,16586,-28260,16564,-28272,16542,-28285,16521,-28298,16499,-28310,16477,-28323,16455,-28336,16434,-28348,16412,-28361,16390,-28373,16368,-28386,16347,-28398,16325,-28411,16303,-28424,16281,-28436,16260,-28448,16238,-28461,16216,-28473,16194,-28486,16172,-28498,16150,-28511,16128,-28523,16107,-28535,16085,-28548,16063,-28560,16041,-28572,16019,-28585,15997,-28597,15975,-28609,15953,-28621,15931,-28634,15909,-28646,15887,-28658,15865,-28670,15843,-28682,15821,-28695,15799,-28707,15777,-28719,15755,-28731,15733,-28743,15711,-28755,15689,-28767,15667,-28779,15645,-28791,15623,-28803,15601,-28815,15579,-28827,15556,-28839,15534,-28851,15512,-28863,15490,-28875,15468,-28887,15446,-28898,15424,-28910,15401,-28922,15379,-28934,15357,-28946,15335,-28957,15313,-28969,15290,-28981,15268,-28993,15246,-29004,15224,-29016,15201,-29028,15179,-29039,15157,-29051,15135,-29063,15112,-29074,15090,-29086,15068,-29097,15045,-29109,15023,-29120,15001,-29132,14978,-29143,14956,-29155,14934,-29166,14911,-29178,14889,-29189,14866,-29201,14844,-29212,14822,-29223,14799,-29235,14777,-29246,14754,-29257,14732,-29269,14709,-29280,14687,-29291,14665,-29303,14642,-29314,14620,-29325,14597,-29336,14575,-29347,14552,-29359,14530,-29370,14507,-29381,14484,-29392,14462,-29403,14439,-29414,14417,-29425,14394,-29436,14372,-29447,14349,-29458,14326,-29469,14304,-29480,14281,-29491,14259,-29502,14236,-29513,14213,-29524,14191,-29535,14168,-29546,14145,-29557,14123,-29568,14100,-29578,14077,-29589,14055,-29600,14032,-29611,14009,-29622,13986,-29632,13964,-29643,13941,-29654,13918,-29664,13895,-29675,13873,-29686,13850,-29696,13827,-29707,13804,-29718,13782,-29728,13759,-29739,13736,-29749,13713,-29760,13690,-29770,13667,-29781,13645,-29791,13622,-29802,13599,-29812,13576,-29823,13553,-29833,13530,-29843,13507,-29854,13485,-29864,13462,-29874,13439,-29885,13416,-29895,13393,-29905,13370,-29916,13347,-29926,13324,-29936,13301,-29946,13278,-29956,13255,-29967,13232,-29977,13209,-29987,13186,-29997,13163,-30007,13140,-30017,13117,-30027,13094,-30037,13071,-30047,13048,-30057,13025,-30067,13002,-30077,12979,-30087,12956,-30097,12933,-30107,12909,-30117,12886,-30127,12863,-30137,12840,-30147,12817,-30157,12794,-30166,12771,-30176,12748,-30186,12724,-30196,12701,-30206,12678,-30215,12655,-30225,12632,-30235,12609,-30244,12585,-30254,12562,-30264,12539,-30273,12516,-30283,12492,-30292,12469,-30302,12446,-30312,12423,-30321,12399,-30331,12376,-30340,12353,-30350,12330,-30359,12306,-30369,12283,-30378,12260,-30387,12236,-30397,12213,-30406,12190,-30416,12166,-30425,12143,-30434,12120,-30443,12096,-30453,12073,-30462,12050,-30471,12026,-30481,12003,-30490,11980,-30499,11956,-30508,11933,-30517,11909,-30526,11886,-30536,11862,-30545,11839,-30554,11816,-30563,11792,-30572,11769,-30581,11745,-30590,11722,-30599,11698,-30608,11675,-30617,11651,-30626,11628,-30635,11604,-30644,11581,-30653,11557,-30661,11534,-30670,11510,-30679,11487,-30688,11463,-30697,11440,-30706,11416,-30714,11393,-30723,11369,-30732,11345,-30740,11322,-30749,11298,-30758,11275,-30767,11251,-30775,11227,-30784,11204,-30792,11180,-30801,11157,-30810,11133,-30818,11109,-30827,11086,-30835,11062,-30844,11038,-30852,11015,-30861,10991,-30869,10967,-30877,10944,-30886,10920,-30894,10896,-30903,10873,-30911,10849,-30919,10825,-30928,10801,-30936,10778,-30944,10754,-30952,10730,-30961,10706,-30969,10683,-30977,10659,-30985,10635,-30993,10611,-31002,10588,-31010,10564,-31018,10540,-31026,10516,-31034,10492,-31042,10469,-31050,10445,-31058,10421,-31066,10397,-31074,10373,-31082,10349,-31090,10326,-31098,10302,-31106,10278,-31114,10254,-31122,10230,-31129,10206,-31137,10182,-31145,10159,-31153,10135,-31161,10111,-31168,10087,-31176,10063,-31184,10039,-31192,10015,-31199,9991,-31207,9967,-31215,9943,-31222,9919,-31230,9895,-31237,9871,-31245,9847,-31253,9823,-31260,9799,-31268,9775,-31275,9751,-31283,9727,-31290,9703,-31298,9679,-31305,9655,-31312,9631,-31320,9607,-31327,9583,-31335,9559,-31342,9535,-31349,9511,-31357,9487,-31364,9463,-31371,9439,-31378,9415,-31386,9391,-31393,9367,-31400,9343,-31407,9319,-31414,9295,-31421,9270,-31429,9246,-31436,9222,-31443,9198,-31450,9174,-31457,9150,-31464,9126,-31471,9102,-31478,9077,-31485,9053,-31492,9029,-31499,9005,-31506,8981,-31513,8957,-31519,8932,-31526,8908,-31533,8884,-31540,8860,-31547,8836,-31554,8812,-31560,8787,-31567,8763,-31574,8739,-31581,8715,-31587,8690,-31594,8666,-31601,8642,-31607,8618,-31614,8593,-31620,8569,-31627,8545,-31634,8521,-31640,8496,-31647,8472,-31653,8448,-31660,8424,-31666,8399,-31673,8375,-31679,8351,-31685,8326,-31692,8302,-31698,8278,-31705,8253,-31711,8229,-31717,8205,-31724,8180,-31730,8156,-31736,8132,-31742,8107,-31749,8083,-31755,8059,-31761,8034,-31767,8010,-31773,7986,-31779,7961,-31786,7937,-31792,7912,-31798,7888,-31804,7864,-31810,7839,-31816,7815,-31822,7790,-31828,7766,-31834,7742,-31840,7717,-31846,7693,-31852,7668,-31857,7644,-31863,7619,-31869,7595,-31875,7571,-31881,7546,-31887,7522,-31892,7497,-31898,7473,-31904,7448,-31910,7424,-31915,7399,-31921,7375,-31927,7350,-31932,7326,-31938,7301,-31944,7277,-31949,7252,-31955,7228,-31960,7203,-31966,7179,-31971,7154,-31977,7130,-31982,7105,-31988,7081,-31993,7056,-31999,7032,-32004,7007,-32009,6982,-32015,6958,-32020,6933,-32025,6909,-32031,6884,-32036,6860,-32041,6835,-32047,6811,-32052,6786,-32057,6761,-32062,6737,-32067,6712,-32073,6688,-32078,6663,-32083,6638,-32088,6614,-32093,6589,-32098,6564,-32103,6540,-32108,6515,-32113,6491,-32118,6466,-32123,6441,-32128,6417,-32133,6392,-32138,6367,-32143,6343,-32148,6318,-32153,6293,-32157,6269,-32162,6244,-32167,6219,-32172,6195,-32177,6170,-32181,6145,-32186,6121,-32191,6096,-32195,6071,-32200,6047,-32205,6022,-32209,5997,-32214,5972,-32219,5948,-32223,5923,-32228,5898,-32232,5874,-32237,5849,-32241,5824,-32246,5799,-32250,5775,-32255,5750,-32259,5725,-32263,5700,-32268,5676,-32272,5651,-32276,5626,-32281,5601,-32285,5577,-32289,5552,-32294,5527,-32298,5502,-32302,5478,-32306,5453,-32311,5428,-32315,5403,-32319,5378,-32323,5354,-32327,5329,-32331,5304,-32335,5279,-32339,5254,-32343,5230,-32347,5205,-32351,5180,-32355,5155,-32359,5130,-32363,5106,-32367,5081,-32371,5056,-32375,5031,-32379,5006,-32383,4981,-32387,4957,-32390,4932,-32394,4907,-32398,4882,-32402,4857,-32405,4832,-32409,4807,-32413,4783,-32417,4758,-32420,4733,-32424,4708,-32427,4683,-32431,4658,-32435,4633,-32438,4608,-32442,4584,-32445,4559,-32449,4534,-32452,4509,-32456,4484,-32459,4459,-32463,4434,-32466,4409,-32469,4384,-32473,4359,-32476,4335,-32479,4310,-32483,4285,-32486,4260,-32489,4235,-32493,4210,-32496,4185,-32499,4160,-32502,4135,-32505,4110,-32509,4085,-32512,4060,-32515,4035,-32518,4011,-32521,3986,-32524,3961,-32527,3936,-32530,3911,-32533,3886,-32536,3861,-32539,3836,-32542,3811,-32545,3786,-32548,3761,-32551,3736,-32554,3711,-32557,3686,-32559,3661,-32562,3636,-32565,3611,-32568,3586,-32571,3561,-32573,3536,-32576,3511,-32579,3486,-32581,3461,-32584,3436,-32587,3411,-32589,3386,-32592,3361,-32595,3336,-32597,3311,-32600,3286,-32602,3261,-32605,3236,-32607,3211,-32610,3186,-32612,3161,-32615,3136,-32617,3111,-32619,3086,-32622,3061,-32624,3036,-32626,3011,-32629,2986,-32631,2961,-32633,2936,-32636,2911,-32638,2886,-32640,2861,-32642,2836,-32645,2811,-32647,2786,-32649,2761,-32651,2736,-32653,2711,-32655,2686,-32657,2661,-32659,2636,-32661,2610,-32663,2585,-32665,2560,-32667,2535,-32669,2510,-32671,2485,-32673,2460,-32675,2435,-32677,2410,-32679,2385,-32681,2360,-32682,2335,-32684,2310,-32686,2285,-32688,2260,-32689,2235,-32691,2209,-32693,2184,-32695,2159,-32696,2134,-32698,2109,-32700,2084,-32701,2059,-32703,2034,-32704,2009,-32706,1984,-32707,1959,-32709,1934,-32710,1908,-32712,1883,-32713,1858,-32715,1833,-32716,1808,-32718,1783,-32719,1758,-32720,1733,-32722,1708,-32723,1683,-32724,1658,-32726,1632,-32727,1607,-32728,1582,-32729,1557,-32730,1532,-32732,1507,-32733,1482,-32734,1457,-32735,1432,-32736,1406,-32737,1381,-32738,1356,-32739,1331,-32740,1306,-32741,1281,-32742,1256,-32743,1231,-32744,1206,-32745,1180,-32746,1155,-32747,1130,-32748,1105,-32749,1080,-32750,1055,-32751,1030,-32751,1005,-32752,980,-32753,954,-32754,929,-32754,904,-32755,879,-32756,854,-32756,829,-32757,804,-32758,779,-32758,753,-32759,728,-32759,703,-32760,678,-32760,653,-32761,628,-32761,603,-32762,578,-32762,552,-32763,527,-32763,502,-32764,477,-32764,452,-32764,427,-32765,402,-32765,376,-32765,351,-32766,326,-32766,301,-32766,276,-32766,251,-32767,226,-32767,201,-32767,175,-32767,150,-32767,125,-32767,100,-32767,75,-32767,50,-32767,25,-32767,0,-32767,-26,-32767,-51,-32767,-76,-32767,-101,-32767,-126,-32767,-151,-32767,-176,-32767,-202,-32767,-227,-32767,-252,-32767,-277,-32766,-302,-32766,-327,-32766,-352,-32766,-377,-32765,-403,-32765,-428,-32765,-453,-32764,-478,-32764,-503,-32764,-528,-32763,-553,-32763,-579,-32762,-604,-32762,-629,-32761,-654,-32761,-679,-32760,-704,-32760,-729,-32759,-754,-32759,-780,-32758,-805,-32758,-830,-32757,-855,-32756,-880,-32756,-905,-32755,-930,-32754,-955,-32754,-981,-32753,-1006,-32752,-1031,-32751,-1056,-32751,-1081,-32750,-1106,-32749,-1131,-32748,-1156,-32747,-1181,-32746,-1207,-32745,-1232,-32744,-1257,-32743,-1282,-32742,-1307,-32741,-1332,-32740,-1357,-32739,-1382,-32738,-1407,-32737,-1433,-32736,-1458,-32735,-1483,-32734,-1508,-32733,-1533,-32732,-1558,-32730,-1583,-32729,-1608,-32728,-1633,-32727,-1659,-32726,-1684,-32724,-1709,-32723,-1734,-32722,-1759,-32720,-1784,-32719,-1809,-32718,-1834,-32716,-1859,-32715,-1884,-32713,-1909,-32712,-1935,-32710,-1960,-32709,-1985,-32707,-2010,-32706,-2035,-32704,-2060,-32703,-2085,-32701,-2110,-32700,-2135,-32698,-2160,-32696,-2185,-32695,-2210,-32693,-2236,-32691,-2261,-32689,-2286,-32688,-2311,-32686,-2336,-32684,-2361,-32682,-2386,-32681,-2411,-32679,-2436,-32677,-2461,-32675,-2486,-32673,-2511,-32671,-2536,-32669,-2561,-32667,-2586,-32665,-2611,-32663,-2637,-32661,-2662,-32659,-2687,-32657,-2712,-32655,-2737,-32653,-2762,-32651,-2787,-32649,-2812,-32647,-2837,-32645,-2862,-32642,-2887,-32640,-2912,-32638,-2937,-32636,-2962,-32633,-2987,-32631,-3012,-32629,-3037,-32626,-3062,-32624,-3087,-32622,-3112,-32619,-3137,-32617,-3162,-32615,-3187,-32612,-3212,-32610,-3237,-32607,-3262,-32605,-3287,-32602,-3312,-32600,-3337,-32597,-3362,-32595,-3387,-32592,-3412,-32589,-3437,-32587,-3462,-32584,-3487,-32581,-3512,-32579,-3537,-32576,-3562,-32573,-3587,-32571,-3612,-32568,-3637,-32565,-3662,-32562,-3687,-32559,-3712,-32557,-3737,-32554,-3762,-32551,-3787,-32548,-3812,-32545,-3837,-32542,-3862,-32539,-3887,-32536,-3912,-32533,-3937,-32530,-3962,-32527,-3987,-32524,-4012,-32521,-4036,-32518,-4061,-32515,-4086,-32512,-4111,-32509,-4136,-32505,-4161,-32502,-4186,-32499,-4211,-32496,-4236,-32493,-4261,-32489,-4286,-32486,-4311,-32483,-4336,-32479,-4360,-32476,-4385,-32473,-4410,-32469,-4435,-32466,-4460,-32463,-4485,-32459,-4510,-32456,-4535,-32452,-4560,-32449,-4585,-32445,-4609,-32442,-4634,-32438,-4659,-32435,-4684,-32431,-4709,-32427,-4734,-32424,-4759,-32420,-4784,-32417,-4808,-32413,-4833,-32409,-4858,-32405,-4883,-32402,-4908,-32398,-4933,-32394,-4958,-32390,-4982,-32387,-5007,-32383,-5032,-32379,-5057,-32375,-5082,-32371,-5107,-32367,-5131,-32363,-5156,-32359,-5181,-32355,-5206,-32351,-5231,-32347,-5255,-32343,-5280,-32339,-5305,-32335,-5330,-32331,-5355,-32327,-5379,-32323,-5404,-32319,-5429,-32315,-5454,-32311,-5479,-32306,-5503,-32302,-5528,-32298,-5553,-32294,-5578,-32289,-5602,-32285,-5627,-32281,-5652,-32276,-5677,-32272,-5701,-32268,-5726,-32263,-5751,-32259,-5776,-32255,-5800,-32250,-5825,-32246,-5850,-32241,-5875,-32237,-5899,-32232,-5924,-32228,-5949,-32223,-5973,-32219,-5998,-32214,-6023,-32209,-6048,-32205,-6072,-32200,-6097,-32195,-6122,-32191,-6146,-32186,-6171,-32181,-6196,-32177,-6220,-32172,-6245,-32167,-6270,-32162,-6294,-32157,-6319,-32153,-6344,-32148,-6368,-32143,-6393,-32138,-6418,-32133,-6442,-32128,-6467,-32123,-6492,-32118,-6516,-32113,-6541,-32108,-6565,-32103,-6590,-32098,-6615,-32093,-6639,-32088,-6664,-32083,-6689,-32078,-6713,-32073,-6738,-32067,-6762,-32062,-6787,-32057,-6812,-32052,-6836,-32047,-6861,-32041,-6885,-32036,-6910,-32031,-6934,-32025,-6959,-32020,-6983,-32015,-7008,-32009,-7033,-32004,-7057,-31999,-7082,-31993,-7106,-31988,-7131,-31982,-7155,-31977,-7180,-31971,-7204,-31966,-7229,-31960,-7253,-31955,-7278,-31949,-7302,-31944,-7327,-31938,-7351,-31932,-7376,-31927,-7400,-31921,-7425,-31915,-7449,-31910,-7474,-31904,-7498,-31898,-7523,-31892,-7547,-31887,-7572,-31881,-7596,-31875,-7620,-31869,-7645,-31863,-7669,-31857,-7694,-31852,-7718,-31846,-7743,-31840,-7767,-31834,-7791,-31828,-7816,-31822,-7840,-31816,-7865,-31810,-7889,-31804,-7913,-31798,-7938,-31792,-7962,-31786,-7987,-31779,-8011,-31773,-8035,-31767,-8060,-31761,-8084,-31755,-8108,-31749,-8133,-31742,-8157,-31736,-8181,-31730,-8206,-31724,-8230,-31717,-8254,-31711,-8279,-31705,-8303,-31698,-8327,-31692,-8352,-31685,-8376,-31679,-8400,-31673,-8425,-31666,-8449,-31660,-8473,-31653,-8497,-31647,-8522,-31640,-8546,-31634,-8570,-31627,-8594,-31620,-8619,-31614,-8643,-31607,-8667,-31601,-8691,-31594,-8716,-31587,-8740,-31581,-8764,-31574,-8788,-31567,-8813,-31560,-8837,-31554,-8861,-31547,-8885,-31540,-8909,-31533,-8933,-31526,-8958,-31519,-8982,-31513,-9006,-31506,-9030,-31499,-9054,-31492,-9078,-31485,-9103,-31478,-9127,-31471,-9151,-31464,-9175,-31457,-9199,-31450,-9223,-31443,-9247,-31436,-9271,-31429,-9296,-31421,-9320,-31414,-9344,-31407,-9368,-31400,-9392,-31393,-9416,-31386,-9440,-31378,-9464,-31371,-9488,-31364,-9512,-31357,-9536,-31349,-9560,-31342,-9584,-31335,-9608,-31327,-9632,-31320,-9656,-31312,-9680,-31305,-9704,-31298,-9728,-31290,-9752,-31283,-9776,-31275,-9800,-31268,-9824,-31260,-9848,-31253,-9872,-31245,-9896,-31237,-9920,-31230,-9944,-31222,-9968,-31215,-9992,-31207,-10016,-31199,-10040,-31192,-10064,-31184,-10088,-31176,-10112,-31168,-10136,-31161,-10160,-31153,-10183,-31145,-10207,-31137,-10231,-31129,-10255,-31122,-10279,-31114,-10303,-31106,-10327,-31098,-10350,-31090,-10374,-31082,-10398,-31074,-10422,-31066,-10446,-31058,-10470,-31050,-10493,-31042,-10517,-31034,-10541,-31026,-10565,-31018,-10589,-31010,-10612,-31002,-10636,-30993,-10660,-30985,-10684,-30977,-10707,-30969,-10731,-30961,-10755,-30952,-10779,-30944,-10802,-30936,-10826,-30928,-10850,-30919,-10874,-30911,-10897,-30903,-10921,-30894,-10945,-30886,-10968,-30877,-10992,-30869,-11016,-30861,-11039,-30852,-11063,-30844,-11087,-30835,-11110,-30827,-11134,-30818,-11158,-30810,-11181,-30801,-11205,-30792,-11228,-30784,-11252,-30775,-11276,-30767,-11299,-30758,-11323,-30749,-11346,-30740,-11370,-30732,-11394,-30723,-11417,-30714,-11441,-30706,-11464,-30697,-11488,-30688,-11511,-30679,-11535,-30670,-11558,-30661,-11582,-30653,-11605,-30644,-11629,-30635,-11652,-30626,-11676,-30617,-11699,-30608,-11723,-30599,-11746,-30590,-11770,-30581,-11793,-30572,-11817,-30563,-11840,-30554,-11863,-30545,-11887,-30536,-11910,-30526,-11934,-30517,-11957,-30508,-11981,-30499,-12004,-30490,-12027,-30481,-12051,-30471,-12074,-30462,-12097,-30453,-12121,-30443,-12144,-30434,-12167,-30425,-12191,-30416,-12214,-30406,-12237,-30397,-12261,-30387,-12284,-30378,-12307,-30369,-12331,-30359,-12354,-30350,-12377,-30340,-12400,-30331,-12424,-30321,-12447,-30312,-12470,-30302,-12493,-30292,-12517,-30283,-12540,-30273,-12563,-30264,-12586,-30254,-12610,-30244,-12633,-30235,-12656,-30225,-12679,-30215,-12702,-30206,-12725,-30196,-12749,-30186,-12772,-30176,-12795,-30166,-12818,-30157,-12841,-30147,-12864,-30137,-12887,-30127,-12910,-30117,-12934,-30107,-12957,-30097,-12980,-30087,-13003,-30077,-13026,-30067,-13049,-30057,-13072,-30047,-13095,-30037,-13118,-30027,-13141,-30017,-13164,-30007,-13187,-29997,-13210,-29987,-13233,-29977,-13256,-29967,-13279,-29956,-13302,-29946,-13325,-29936,-13348,-29926,-13371,-29916,-13394,-29905,-13417,-29895,-13440,-29885,-13463,-29874,-13486,-29864,-13508,-29854,-13531,-29843,-13554,-29833,-13577,-29823,-13600,-29812,-13623,-29802,-13646,-29791,-13668,-29781,-13691,-29770,-13714,-29760,-13737,-29749,-13760,-29739,-13783,-29728,-13805,-29718,-13828,-29707,-13851,-29696,-13874,-29686,-13896,-29675,-13919,-29664,-13942,-29654,-13965,-29643,-13987,-29632,-14010,-29622,-14033,-29611,-14056,-29600,-14078,-29589,-14101,-29578,-14124,-29568,-14146,-29557,-14169,-29546,-14192,-29535,-14214,-29524,-14237,-29513,-14260,-29502,-14282,-29491,-14305,-29480,-14327,-29469,-14350,-29458,-14373,-29447,-14395,-29436,-14418,-29425,-14440,-29414,-14463,-29403,-14485,-29392,-14508,-29381,-14531,-29370,-14553,-29359,-14576,-29347,-14598,-29336,-14621,-29325,-14643,-29314,-14666,-29303,-14688,-29291,-14710,-29280,-14733,-29269,-14755,-29257,-14778,-29246,-14800,-29235,-14823,-29223,-14845,-29212,-14867,-29201,-14890,-29189,-14912,-29178,-14935,-29166,-14957,-29155,-14979,-29143,-15002,-29132,-15024,-29120,-15046,-29109,-15069,-29097,-15091,-29086,-15113,-29074,-15136,-29063,-15158,-29051,-15180,-29039,-15202,-29028,-15225,-29016,-15247,-29004,-15269,-28993,-15291,-28981,-15314,-28969,-15336,-28957,-15358,-28946,-15380,-28934,-15402,-28922,-15425,-28910,-15447,-28898,-15469,-28887,-15491,-28875,-15513,-28863,-15535,-28851,-15557,-28839,-15580,-28827,-15602,-28815,-15624,-28803,-15646,-28791,-15668,-28779,-15690,-28767,-15712,-28755,-15734,-28743,-15756,-28731,-15778,-28719,-15800,-28707,-15822,-28695,-15844,-28682,-15866,-28670,-15888,-28658,-15910,-28646,-15932,-28634,-15954,-28621,-15976,-28609,-15998,-28597,-16020,-28585,-16042,-28572,-16064,-28560,-16086,-28548,-16108,-28535,-16129,-28523,-16151,-28511,-16173,-28498,-16195,-28486,-16217,-28473,-16239,-28461,-16261,-28448,-16282,-28436,-16304,-28424,-16326,-28411,-16348,-28398,-16369,-28386,-16391,-28373,-16413,-28361,-16435,-28348,-16456,-28336,-16478,-28323,-16500,-28310,-16522,-28298,-16543,-28285,-16565,-28272,-16587,-28260,-16608,-28247,-16630,-28234,-16652,-28221,-16673,-28209,-16695,-28196,-16717,-28183,-16738,-28170,-16760,-28157,-16781,-28144,-16803,-28132,-16825,-28119,-16846,-28106,-16868,-28093,-16889,-28080,-16911,-28067,-16932,-28054,-16954,-28041,-16975,-28028,-16997,-28015,-17018,-28002,-17040,-27989,-17061,-27976,-17083,-27963,-17104,-27949,-17125,-27936,-17147,-27923,-17168,-27910,-17190,-27897,-17211,-27884,-17233,-27870,-17254,-27857,-17275,-27844,-17297,-27831,-17318,-27817,-17339,-27804,-17361,-27791,-17382,-27778,-17403,-27764,-17424,-27751,-17446,-27737,-17467,-27724,-17488,-27711,-17510,-27697,-17531,-27684,-17552,-27670,-17573,-27657,-17594,-27643,-17616,-27630,-17637,-27616,-17658,-27603,-17679,-27589,-17700,-27576,-17721,-27562,-17743,-27549,-17764,-27535,-17785,-27521,-17806,-27508,-17827,-27494,-17848,-27480,-17869,-27467,-17890,-27453,-17911,-27439,-17932,-27425,-17953,-27412,-17974,-27398,-17995,-27384,-18016,-27370,-18037,-27356,-18058,-27343,-18079,-27329,-18100,-27315,-18121,-27301,-18142,-27287,-18163,-27273,-18184,-27259,-18205,-27245,-18226,-27231,-18247,-27217,-18268,-27203,-18288,-27189,-18309,-27175,-18330,-27161,-18351,-27147,-18372,-27133,-18393,-27119,-18413,-27105,-18434,-27091,-18455,-27077,-18476,-27062,-18496,-27048,-18517,-27034,-18538,-27020,-18559,-27006,-18579,-26991,-18600,-26977,-18621,-26963,-18641,-26949,-18662,-26934,-18683,-26920,-18703,-26906,-18724,-26891,-18745,-26877,-18765,-26862,-18786,-26848,-18806,-26834,-18827,-26819,-18847,-26805,-18868,-26790,-18889,-26776,-18909,-26761,-18930,-26747,-18950,-26732,-18971,-26718,-18991,-26703,-19012,-26689,-19032,-26674,-19052,-26659,-19073,-26645,-19093,-26630,-19114,-26616,-19134,-26601,-19155,-26586,-19175,-26571,-19195,-26557,-19216,-26542,-19236,-26527,-19256,-26513,-19277,-26498,-19297,-26483,-19317,-26468,-19338,-26453,-19358,-26438,-19378,-26424,-19398,-26409,-19419,-26394,-19439,-26379,-19459,-26364,-19479,-26349,-19500,-26334,-19520,-26319,-19540,-26304,-19560,-26289,-19580,-26274,-19600,-26259,-19621,-26244,-19641,-26229,-19661,-26214,-19681,-26199,-19701,-26184,-19721,-26169,-19741,-26154,-19761,-26138,-19781,-26123,-19801,-26108,-19821,-26093,-19841,-26078,-19861,-26062,-19881,-26047,-19901,-26032,-19921,-26017,-19941,-26001,-19961,-25986,-19981,-25971,-20001,-25955,-20021,-25940,-20041,-25925,-20061,-25909,-20080,-25894,-20100,-25879,-20120,-25863,-20140,-25848,-20160,-25832,-20180,-25817,-20199,-25801,-20219,-25786,-20239,-25770,-20259,-25755,-20278,-25739,-20298,-25724,-20318,-25708,-20338,-25692,-20357,-25677,-20377,-25661,-20397,-25646,-20416,-25630,-20436,-25614,-20456,-25599,-20475,-25583,-20495,-25567,-20514,-25551,-20534,-25536,-20554,-25520,-20573,-25504,-20593,-25488,-20612,-25473,-20632,-25457,-20651,-25441,-20671,-25425,-20690,-25409,-20710,-25393,-20729,-25377,-20749,-25362,-20768,-25346,-20788,-25330,-20807,-25314,-20826,-25298,-20846,-25282,-20865,-25266,-20885,-25250,-20904,-25234,-20923,-25218,-20943,-25202,-20962,-25186,-20981,-25170,-21001,-25153,-21020,-25137,-21039,-25121,-21058,-25105,-21078,-25089,-21097,-25073,-21116,-25057,-21135,-25040,-21155,-25024,-21174,-25008,-21193,-24992,-21212,-24975,-21231,-24959,-21250,-24943,-21269,-24927,-21289,-24910,-21308,-24894,-21327,-24878,-21346,-24861,-21365,-24845,-21384,-24828,-21403,-24812,-21422,-24796,-21441,-24779,-21460,-24763,-21479,-24746,-21498,-24730,-21517,-24713,-21536,-24697,-21555,-24680,-21574,-24664,-21593,-24647,-21612,-24631,-21630,-24614,-21649,-24597,-21668,-24581,-21687,-24564,-21706,-24547,-21725,-24531,-21744,-24514,-21762,-24497,-21781,-24481,-21800,-24464,-21819,-24447,-21837,-24431,-21856,-24414,-21875,-24397,-21894,-24380,-21912,-24363,-21931,-24347,-21950,-24330,-21968,-24313,-21987,-24296,-22005,-24279,-22024,-24262,-22043,-24245,-22061,-24229,-22080,-24212,-22098,-24195,-22117,-24178,-22136,-24161,-22154,-24144,-22173,-24127,-22191,-24110,-22210,-24093,-22228,-24076,-22246,-24059,-22265,-24042,-22283,-24024,-22302,-24007,-22320,-23990,-22339,-23973,-22357,-23956,-22375,-23939,-22394,-23922,-22412,-23904,-22430,-23887,-22449,-23870,-22467,-23853,-22485,-23836,-22504,-23818,-22522,-23801,-22540,-23784,-22558,-23767,-22576,-23749,-22595,-23732,-22613,-23715,-22631,-23697,-22649,-23680,-22667,-23662,-22686,-23645,-22704,-23628,-22722,-23610,-22740,-23593,-22758,-23575,-22776,-23558,-22794,-23540,-22812,-23523,-22830,-23505,-22848,-23488,-22866,-23470,-22884,-23453,-22902,-23435,-22920,-23418,-22938,-23400,-22956,-23383,-22974,-23365,-22992,-23347,-23010,-23330,-23028,-23312,-23046,-23294,-23063,-23277,-23081,-23259,-23099,-23241,-23117,-23224,-23135,-23206,-23152,-23188,-23170,-23170,-23188,-23152,-23206,-23135,-23224,-23117,-23241,-23099,-23259,-23081,-23277,-23063,-23294,-23046,-23312,-23028,-23330,-23010,-23347,-22992,-23365,-22974,-23383,-22956,-23400,-22938,-23418,-22920,-23435,-22902,-23453,-22884,-23470,-22866,-23488,-22848,-23505,-22830,-23523,-22812,-23540,-22794,-23558,-22776,-23575,-22758,-23593,-22740,-23610,-22722,-23628,-22704,-23645,-22686,-23662,-22667,-23680,-22649,-23697,-22631,-23715,-22613,-23732,-22595,-23749,-22576,-23767,-22558,-23784,-22540,-23801,-22522,-23818,-22504,-23836,-22485,-23853,-22467,-23870,-22449,-23887,-22430,-23904,-22412,-23922,-22394,-23939,-22375,-23956,-22357,-23973,-22339,-23990,-22320,-24007,-22302,-24024,-22283,-24042,-22265,-24059,-22246,-24076,-22228,-24093,-22210,-24110,-22191,-24127,-22173,-24144,-22154,-24161,-22136,-24178,-22117,-24195,-22098,-24212,-22080,-24229,-22061,-24245,-22043,-24262,-22024,-24279,-22005,-24296,-21987,-24313,-21968,-24330,-21950,-24347,-21931,-24363,-21912,-24380,-21894,-24397,-21875,-24414,-21856,-24431,-21837,-24447,-21819,-24464,-21800,-24481,-21781,-24497,-21762,-24514,-21744,-24531,-21725,-24547,-21706,-24564,-21687,-24581,-21668,-24597,-21649,-24614,-21630,-24631,-21612,-24647,-21593,-24664,-21574,-24680,-21555,-24697,-21536,-24713,-21517,-24730,-21498,-24746,-21479,-24763,-21460,-24779,-21441,-24796,-21422,-24812,-21403,-24828,-21384,-24845,-21365,-24861,-21346,-24878,-21327,-24894,-21308,-24910,-21289,-24927,-21269,-24943,-21250,-24959,-21231,-24975,-21212,-24992,-21193,-25008,-21174,-25024,-21155,-25040,-21135,-25057,-21116,-25073,-21097,-25089,-21078,-25105,-21058,-25121,-21039,-25137,-21020,-25153,-21001,-25170,-20981,-25186,-20962,-25202,-20943,-25218,-20923,-25234,-20904,-25250,-20885,-25266,-20865,-25282,-20846,-25298,-20826,-25314,-20807,-25330,-20788,-25346,-20768,-25362,-20749,-25377,-20729,-25393,-20710,-25409,-20690,-25425,-20671,-25441,-20651,-25457,-20632,-25473,-20612,-25488,-20593,-25504,-20573,-25520,-20554,-25536,-20534,-25551,-20514,-25567,-20495,-25583,-20475,-25599,-20456,-25614,-20436,-25630,-20416,-25646,-20397,-25661,-20377,-25677,-20357,-25692,-20338,-25708,-20318,-25724,-20298,-25739,-20278,-25755,-20259,-25770,-20239,-25786,-20219,-25801,-20199,-25817,-20180,-25832,-20160,-25848,-20140,-25863,-20120,-25879,-20100,-25894,-20080,-25909,-20061,-25925,-20041,-25940,-20021,-25955,-20001,-25971,-19981,-25986,-19961,-26001,-19941,-26017,-19921,-26032,-19901,-26047,-19881,-26062,-19861,-26078,-19841,-26093,-19821,-26108,-19801,-26123,-19781,-26138,-19761,-26154,-19741,-26169,-19721,-26184,-19701,-26199,-19681,-26214,-19661,-26229,-19641,-26244,-19621,-26259,-19600,-26274,-19580,-26289,-19560,-26304,-19540,-26319,-19520,-26334,-19500,-26349,-19479,-26364,-19459,-26379,-19439,-26394,-19419,-26409,-19398,-26424,-19378,-26438,-19358,-26453,-19338,-26468,-19317,-26483,-19297,-26498,-19277,-26513,-19256,-26527,-19236,-26542,-19216,-26557,-19195,-26571,-19175,-26586,-19155,-26601,-19134,-26616,-19114,-26630,-19093,-26645,-19073,-26659,-19052,-26674,-19032,-26689,-19012,-26703,-18991,-26718,-18971,-26732,-18950,-26747,-18930,-26761,-18909,-26776,-18889,-26790,-18868,-26805,-18847,-26819,-18827,-26834,-18806,-26848,-18786,-26862,-18765,-26877,-18745,-26891,-18724,-26906,-18703,-26920,-18683,-26934,-18662,-26949,-18641,-26963,-18621,-26977,-18600,-26991,-18579,-27006,-18559,-27020,-18538,-27034,-18517,-27048,-18496,-27062,-18476,-27077,-18455,-27091,-18434,-27105,-18413,-27119,-18393,-27133,-18372,-27147,-18351,-27161,-18330,-27175,-18309,-27189,-18288,-27203,-18268,-27217,-18247,-27231,-18226,-27245,-18205,-27259,-18184,-27273,-18163,-27287,-18142,-27301,-18121,-27315,-18100,-27329,-18079,-27343,-18058,-27356,-18037,-27370,-18016,-27384,-17995,-27398,-17974,-27412,-17953,-27425,-17932,-27439,-17911,-27453,-17890,-27467,-17869,-27480,-17848,-27494,-17827,-27508,-17806,-27521,-17785,-27535,-17764,-27549,-17743,-27562,-17721,-27576,-17700,-27589,-17679,-27603,-17658,-27616,-17637,-27630,-17616,-27643,-17594,-27657,-17573,-27670,-17552,-27684,-17531,-27697,-17510,-27711,-17488,-27724,-17467,-27737,-17446,-27751,-17424,-27764,-17403,-27778,-17382,-27791,-17361,-27804,-17339,-27817,-17318,-27831,-17297,-27844,-17275,-27857,-17254,-27870,-17233,-27884,-17211,-27897,-17190,-27910,-17168,-27923,-17147,-27936,-17125,-27949,-17104,-27963,-17083,-27976,-17061,-27989,-17040,-28002,-17018,-28015,-16997,-28028,-16975,-28041,-16954,-28054,-16932,-28067,-16911,-28080,-16889,-28093,-16868,-28106,-16846,-28119,-16825,-28132,-16803,-28144,-16781,-28157,-16760,-28170,-16738,-28183,-16717,-28196,-16695,-28209,-16673,-28221,-16652,-28234,-16630,-28247,-16608,-28260,-16587,-28272,-16565,-28285,-16543,-28298,-16522,-28310,-16500,-28323,-16478,-28336,-16456,-28348,-16435,-28361,-16413,-28373,-16391,-28386,-16369,-28398,-16348,-28411,-16326,-28424,-16304,-28436,-16282,-28448,-16261,-28461,-16239,-28473,-16217,-28486,-16195,-28498,-16173,-28511,-16151,-28523,-16129,-28535,-16108,-28548,-16086,-28560,-16064,-28572,-16042,-28585,-16020,-28597,-15998,-28609,-15976,-28621,-15954,-28634,-15932,-28646,-15910,-28658,-15888,-28670,-15866,-28682,-15844,-28695,-15822,-28707,-15800,-28719,-15778,-28731,-15756,-28743,-15734,-28755,-15712,-28767,-15690,-28779,-15668,-28791,-15646,-28803,-15624,-28815,-15602,-28827,-15580,-28839,-15557,-28851,-15535,-28863,-15513,-28875,-15491,-28887,-15469,-28898,-15447,-28910,-15425,-28922,-15402,-28934,-15380,-28946,-15358,-28957,-15336,-28969,-15314,-28981,-15291,-28993,-15269,-29004,-15247,-29016,-15225,-29028,-15202,-29039,-15180,-29051,-15158,-29063,-15136,-29074,-15113,-29086,-15091,-29097,-15069,-29109,-15046,-29120,-15024,-29132,-15002,-29143,-14979,-29155,-14957,-29166,-14935,-29178,-14912,-29189,-14890,-29201,-14867,-29212,-14845,-29223,-14823,-29235,-14800,-29246,-14778,-29257,-14755,-29269,-14733,-29280,-14710,-29291,-14688,-29303,-14666,-29314,-14643,-29325,-14621,-29336,-14598,-29347,-14576,-29359,-14553,-29370,-14531,-29381,-14508,-29392,-14485,-29403,-14463,-29414,-14440,-29425,-14418,-29436,-14395,-29447,-14373,-29458,-14350,-29469,-14327,-29480,-14305,-29491,-14282,-29502,-14260,-29513,-14237,-29524,-14214,-29535,-14192,-29546,-14169,-29557,-14146,-29568,-14124,-29578,-14101,-29589,-14078,-29600,-14056,-29611,-14033,-29622,-14010,-29632,-13987,-29643,-13965,-29654,-13942,-29664,-13919,-29675,-13896,-29686,-13874,-29696,-13851,-29707,-13828,-29718,-13805,-29728,-13783,-29739,-13760,-29749,-13737,-29760,-13714,-29770,-13691,-29781,-13668,-29791,-13646,-29802,-13623,-29812,-13600,-29823,-13577,-29833,-13554,-29843,-13531,-29854,-13508,-29864,-13486,-29874,-13463,-29885,-13440,-29895,-13417,-29905,-13394,-29916,-13371,-29926,-13348,-29936,-13325,-29946,-13302,-29956,-13279,-29967,-13256,-29977,-13233,-29987,-13210,-29997,-13187,-30007,-13164,-30017,-13141,-30027,-13118,-30037,-13095,-30047,-13072,-30057,-13049,-30067,-13026,-30077,-13003,-30087,-12980,-30097,-12957,-30107,-12934,-30117,-12910,-30127,-12887,-30137,-12864,-30147,-12841,-30157,-12818,-30166,-12795,-30176,-12772,-30186,-12749,-30196,-12725,-30206,-12702,-30215,-12679,-30225,-12656,-30235,-12633,-30244,-12610,-30254,-12586,-30264,-12563,-30273,-12540,-30283,-12517,-30292,-12493,-30302,-12470,-30312,-12447,-30321,-12424,-30331,-12400,-30340,-12377,-30350,-12354,-30359,-12331,-30369,-12307,-30378,-12284,-30387,-12261,-30397,-12237,-30406,-12214,-30416,-12191,-30425,-12167,-30434,-12144,-30443,-12121,-30453,-12097,-30462,-12074,-30471,-12051,-30481,-12027,-30490,-12004,-30499,-11981,-30508,-11957,-30517,-11934,-30526,-11910,-30536,-11887,-30545,-11863,-30554,-11840,-30563,-11817,-30572,-11793,-30581,-11770,-30590,-11746,-30599,-11723,-30608,-11699,-30617,-11676,-30626,-11652,-30635,-11629,-30644,-11605,-30653,-11582,-30661,-11558,-30670,-11535,-30679,-11511,-30688,-11488,-30697,-11464,-30706,-11441,-30714,-11417,-30723,-11394,-30732,-11370,-30740,-11346,-30749,-11323,-30758,-11299,-30767,-11276,-30775,-11252,-30784,-11228,-30792,-11205,-30801,-11181,-30810,-11158,-30818,-11134,-30827,-11110,-30835,-11087,-30844,-11063,-30852,-11039,-30861,-11016,-30869,-10992,-30877,-10968,-30886,-10945,-30894,-10921,-30903,-10897,-30911,-10874,-30919,-10850,-30928,-10826,-30936,-10802,-30944,-10779,-30952,-10755,-30961,-10731,-30969,-10707,-30977,-10684,-30985,-10660,-30993,-10636,-31002,-10612,-31010,-10589,-31018,-10565,-31026,-10541,-31034,-10517,-31042,-10493,-31050,-10470,-31058,-10446,-31066,-10422,-31074,-10398,-31082,-10374,-31090,-10350,-31098,-10327,-31106,-10303,-31114,-10279,-31122,-10255,-31129,-10231,-31137,-10207,-31145,-10183,-31153,-10160,-31161,-10136,-31168,-10112,-31176,-10088,-31184,-10064,-31192,-10040,-31199,-10016,-31207,-9992,-31215,-9968,-31222,-9944,-31230,-9920,-31237,-9896,-31245,-9872,-31253,-9848,-31260,-9824,-31268,-9800,-31275,-9776,-31283,-9752,-31290,-9728,-31298,-9704,-31305,-9680,-31312,-9656,-31320,-9632,-31327,-9608,-31335,-9584,-31342,-9560,-31349,-9536,-31357,-9512,-31364,-9488,-31371,-9464,-31378,-9440,-31386,-9416,-31393,-9392,-31400,-9368,-31407,-9344,-31414,-9320,-31421,-9296,-31429,-9271,-31436,-9247,-31443,-9223,-31450,-9199,-31457,-9175,-31464,-9151,-31471,-9127,-31478,-9103,-31485,-9078,-31492,-9054,-31499,-9030,-31506,-9006,-31513,-8982,-31519,-8958,-31526,-8933,-31533,-8909,-31540,-8885,-31547,-8861,-31554,-8837,-31560,-8813,-31567,-8788,-31574,-8764,-31581,-8740,-31587,-8716,-31594,-8691,-31601,-8667,-31607,-8643,-31614,-8619,-31620,-8594,-31627,-8570,-31634,-8546,-31640,-8522,-31647,-8497,-31653,-8473,-31660,-8449,-31666,-8425,-31673,-8400,-31679,-8376,-31685,-8352,-31692,-8327,-31698,-8303,-31705,-8279,-31711,-8254,-31717,-8230,-31724,-8206,-31730,-8181,-31736,-8157,-31742,-8133,-31749,-8108,-31755,-8084,-31761,-8060,-31767,-8035,-31773,-8011,-31779,-7987,-31786,-7962,-31792,-7938,-31798,-7913,-31804,-7889,-31810,-7865,-31816,-7840,-31822,-7816,-31828,-7791,-31834,-7767,-31840,-7743,-31846,-7718,-31852,-7694,-31857,-7669,-31863,-7645,-31869,-7620,-31875,-7596,-31881,-7572,-31887,-7547,-31892,-7523,-31898,-7498,-31904,-7474,-31910,-7449,-31915,-7425,-31921,-7400,-31927,-7376,-31932,-7351,-31938,-7327,-31944,-7302,-31949,-7278,-31955,-7253,-31960,-7229,-31966,-7204,-31971,-7180,-31977,-7155,-31982,-7131,-31988,-7106,-31993,-7082,-31999,-7057,-32004,-7033,-32009,-7008,-32015,-6983,-32020,-6959,-32025,-6934,-32031,-6910,-32036,-6885,-32041,-6861,-32047,-6836,-32052,-6812,-32057,-6787,-32062,-6762,-32067,-6738,-32073,-6713,-32078,-6689,-32083,-6664,-32088,-6639,-32093,-6615,-32098,-6590,-32103,-6565,-32108,-6541,-32113,-6516,-32118,-6492,-32123,-6467,-32128,-6442,-32133,-6418,-32138,-6393,-32143,-6368,-32148,-6344,-32153,-6319,-32157,-6294,-32162,-6270,-32167,-6245,-32172,-6220,-32177,-6196,-32181,-6171,-32186,-6146,-32191,-6122,-32195,-6097,-32200,-6072,-32205,-6048,-32209,-6023,-32214,-5998,-32219,-5973,-32223,-5949,-32228,-5924,-32232,-5899,-32237,-5875,-32241,-5850,-32246,-5825,-32250,-5800,-32255,-5776,-32259,-5751,-32263,-5726,-32268,-5701,-32272,-5677,-32276,-5652,-32281,-5627,-32285,-5602,-32289,-5578,-32294,-5553,-32298,-5528,-32302,-5503,-32306,-5479,-32311,-5454,-32315,-5429,-32319,-5404,-32323,-5379,-32327,-5355,-32331,-5330,-32335,-5305,-32339,-5280,-32343,-5255,-32347,-5231,-32351,-5206,-32355,-5181,-32359,-5156,-32363,-5131,-32367,-5107,-32371,-5082,-32375,-5057,-32379,-5032,-32383,-5007,-32387,-4982,-32390,-4958,-32394,-4933,-32398,-4908,-32402,-4883,-32405,-4858,-32409,-4833,-32413,-4808,-32417,-4784,-32420,-4759,-32424,-4734,-32427,-4709,-32431,-4684,-32435,-4659,-32438,-4634,-32442,-4609,-32445,-4585,-32449,-4560,-32452,-4535,-32456,-4510,-32459,-4485,-32463,-4460,-32466,-4435,-32469,-4410,-32473,-4385,-32476,-4360,-32479,-4336,-32483,-4311,-32486,-4286,-32489,-4261,-32493,-4236,-32496,-4211,-32499,-4186,-32502,-4161,-32505,-4136,-32509,-4111,-32512,-4086,-32515,-4061,-32518,-4036,-32521,-4012,-32524,-3987,-32527,-3962,-32530,-3937,-32533,-3912,-32536,-3887,-32539,-3862,-32542,-3837,-32545,-3812,-32548,-3787,-32551,-3762,-32554,-3737,-32557,-3712,-32559,-3687,-32562,-3662,-32565,-3637,-32568,-3612,-32571,-3587,-32573,-3562,-32576,-3537,-32579,-3512,-32581,-3487,-32584,-3462,-32587,-3437,-32589,-3412,-32592,-3387,-32595,-3362,-32597,-3337,-32600,-3312,-32602,-3287,-32605,-3262,-32607,-3237,-32610,-3212,-32612,-3187,-32615,-3162,-32617,-3137,-32619,-3112,-32622,-3087,-32624,-3062,-32626,-3037,-32629,-3012,-32631,-2987,-32633,-2962,-32636,-2937,-32638,-2912,-32640,-2887,-32642,-2862,-32645,-2837,-32647,-2812,-32649,-2787,-32651,-2762,-32653,-2737,-32655,-2712,-32657,-2687,-32659,-2662,-32661,-2637,-32663,-2611,-32665,-2586,-32667,-2561,-32669,-2536,-32671,-2511,-32673,-2486,-32675,-2461,-32677,-2436,-32679,-2411,-32681,-2386,-32682,-2361,-32684,-2336,-32686,-2311,-32688,-2286,-32689,-2261,-32691,-2236,-32693,-2210,-32695,-2185,-32696,-2160,-32698,-2135,-32700,-2110,-32701,-2085,-32703,-2060,-32704,-2035,-32706,-2010,-32707,-1985,-32709,-1960,-32710,-1935,-32712,-1909,-32713,-1884,-32715,-1859,-32716,-1834,-32718,-1809,-32719,-1784,-32720,-1759,-32722,-1734,-32723,-1709,-32724,-1684,-32726,-1659,-32727,-1633,-32728,-1608,-32729,-1583,-32730,-1558,-32732,-1533,-32733,-1508,-32734,-1483,-32735,-1458,-32736,-1433,-32737,-1407,-32738,-1382,-32739,-1357,-32740,-1332,-32741,-1307,-32742,-1282,-32743,-1257,-32744,-1232,-32745,-1207,-32746,-1181,-32747,-1156,-32748,-1131,-32749,-1106,-32750,-1081,-32751,-1056,-32751,-1031,-32752,-1006,-32753,-981,-32754,-955,-32754,-930,-32755,-905,-32756,-880,-32756,-855,-32757,-830,-32758,-805,-32758,-780,-32759,-754,-32759,-729,-32760,-704,-32760,-679,-32761,-654,-32761,-629,-32762,-604,-32762,-579,-32763,-553,-32763,-528,-32764,-503,-32764,-478,-32764,-453,-32765,-428,-32765,-403,-32765,-377,-32766,-352,-32766,-327,-32766,-302,-32766,-277,-32767,-252,-32767,-227,-32767,-202,-32767,-176,-32767,-151,-32767,-126,-32767,-101,-32767,-76,-32767,-51,-32767,-26};
diff --git a/openair1/PHY/defs_L1_NB_IoT.h b/openair1/PHY/defs_L1_NB_IoT.h
index bb08d5122dd68033f1c7871a37faabd4a1355a68..8a7c853df55d10fbd148d94077683eabfd873a39 100644
--- a/openair1/PHY/defs_L1_NB_IoT.h
+++ b/openair1/PHY/defs_L1_NB_IoT.h
@@ -52,7 +52,7 @@
 #     include "COMMON/ral_messages_types.h"
 #     include "UTIL/queue.h"
 #   endif
-#   include "log.h"
+#   include "common/utils/LOG/log.h"
 #   define msg(aRGS...) LOG_D(PHY, ##aRGS)
 # else
 #   define msg printf
diff --git a/openair1/PHY/defs_UE.h b/openair1/PHY/defs_UE.h
index f079794a34afa069d83032b6f0e20a00353d50e4..55f8c9639ab281316a25784b62f45811c69d9203 100644
--- a/openair1/PHY/defs_UE.h
+++ b/openair1/PHY/defs_UE.h
@@ -93,7 +93,7 @@
 #     include "COMMON/ral_messages_types.h"
 #     include "UTIL/queue.h"
 #   endif
-#   include "log.h"
+#   include "common/utils/LOG/log.h"
 #   define msg(aRGS...) LOG_D(PHY, ##aRGS)
 # else
 #   define msg printf
diff --git a/openair1/PHY/defs_eNB.h b/openair1/PHY/defs_eNB.h
index df3c1e449770221d919851dcd63080b8fbcdf43b..c58fffe0ef2ebe8fa890dbac762dcd4e9bb2a56f 100644
--- a/openair1/PHY/defs_eNB.h
+++ b/openair1/PHY/defs_eNB.h
@@ -194,11 +194,11 @@ typedef struct RU_proc_t_s {
   pthread_cond_t cond_synch;
   /// condition variable for asynch RX/TX thread
   pthread_cond_t cond_asynch_rxtx;
-  /// condition varible for RU RX FEP thread
+  /// condition variable for RU RX FEP thread
   pthread_cond_t cond_fep;
-  /// condition varible for RU TX FEP thread
+  /// condition variable for RU TX FEP thread
   pthread_cond_t cond_feptx;
-  /// condition varible for emulated RF
+  /// condition variable for emulated RF
   pthread_cond_t cond_emulateRF;
   /// condition variable for eNB signal
   pthread_cond_t cond_eNBs;
@@ -260,6 +260,7 @@ typedef struct RU_proc_t_s {
   /// pipeline ready state
   int ru_rx_ready;
   int ru_tx_ready;
+  int emulate_rf_busy;
 } RU_proc_t;
 
 typedef enum {
diff --git a/openair1/SCHED/fapi_l1.c b/openair1/SCHED/fapi_l1.c
index 8840d065ecef45ec85e575d2dd5cd1b20c564b50..ad72c3d9f5f6a2cf8a17933135b63a0399b62985 100644
--- a/openair1/SCHED/fapi_l1.c
+++ b/openair1/SCHED/fapi_l1.c
@@ -668,7 +668,6 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
   AssertFatal(RC.eNB[Mod_id][CC_id]!=NULL,"RC.eNB[%d][%d] is null\n",Mod_id,CC_id);
 
 
-
   eNB         = RC.eNB[Mod_id][CC_id];
   fp          = &eNB->frame_parms;
   proc        = &eNB->proc.proc_rxtx[0];
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index c43b3775db4980a9544f3b0493c08e5d253ce01e..e2a28118ffc39de7aa088346aef01f37585d18b1 100644
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -347,7 +347,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
 	  dlsch_harq->rvidx,
 	  dlsch_harq->round);
   }    
-#if defined(MESSAGE_CHART_GENERATOR_PHY)
+
   MSC_LOG_TX_MESSAGE(
 		     MSC_PHY_ENB,MSC_PHY_UE,
 		     NULL,0,
@@ -368,7 +368,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
 		     pmi2hex_2Ar1(dlsch_harq->pmi_alloc),
 		     dlsch_harq->rvidx,
 		     dlsch_harq->round);
-#endif
+
   
   
   if (ue_stats) ue_stats->dlsch_sliding_cnt++;
@@ -412,7 +412,6 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
       &eNB->dlsch_turbo_encoding_wakeup_stats1,
 	  &eNB->dlsch_interleaving_stats);
     stop_meas(&eNB->dlsch_encoding_stats);
-  //////////////////////////////////////////////////*******************************************
   if(eNB->dlsch_encoding_stats.diff_now>500*3000 && opp_enabled == 1)
   {
     print_meas_now(&eNB->dlsch_encoding_stats,"total coding",stderr);
@@ -1376,7 +1375,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
 	  ulsch->harq_mask   &= ~(1 << harq_pid);
 	  ulsch_harq->round   = 0;
 	}
-#if defined(MESSAGE_CHART_GENERATOR_PHY)
+
         MSC_LOG_RX_DISCARDED_MESSAGE(
 				     MSC_PHY_ENB,MSC_PHY_UE,
 				     NULL,0,
@@ -1385,7 +1384,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
 				     ulsch->rnti,harq_pid,
 				     ulsch_harq->round-1
 				     );
-#endif
+
 	
         /* Mark the HARQ process to release it later if max transmission reached
          * (see below).
@@ -1404,7 +1403,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
         T(T_ENB_PHY_ULSCH_UE_ACK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(ulsch->rnti),
           T_INT(harq_pid));
 
-#if defined(MESSAGE_CHART_GENERATOR_PHY)
+
           MSC_LOG_RX_MESSAGE(
               MSC_PHY_ENB,MSC_PHY_UE,
               NULL,0,
@@ -1412,7 +1411,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
               frame,subframe,
               ulsch->rnti,harq_pid
               );
-#endif
+
 
 #ifdef DEBUG_PHY_PROC
 #ifdef DEBUG_ULSCH
@@ -1501,7 +1500,7 @@ void init_te_thread(PHY_VARS_eNB *eNB) {
     pthread_cond_init( &proc->tep[i].cond_te, NULL);
     pthread_attr_init( &proc->tep[i].attr_te);
     
-    printf("Creating te_thread 0\n");
+    LOG_I(PHY,"Creating te_thread %d\n",i);
     pthread_create(&proc->tep[i].pthread_te, &proc->tep[i].attr_te, te_thread, (void*)&proc->tep[i]);
   }
 }
@@ -1605,6 +1604,16 @@ static void do_release_harq(PHY_VARS_eNB *eNB,int UE_id,int tb,uint16_t frame,ui
     dlsch1_harq     = dlsch1->harq_processes[harq_pid];
     AssertFatal(dlsch0_harq!=NULL,"dlsch0_harq is null\n");
 
+#if T_TRACER
+    if (after_rounds != -1) {
+      T(T_ENB_PHY_DLSCH_UE_NACK, T_INT(0), T_INT(frame), T_INT(subframe),
+        T_INT(dlsch0->rnti), T_INT(harq_pid));
+    } else {
+      T(T_ENB_PHY_DLSCH_UE_ACK, T_INT(0), T_INT(frame), T_INT(subframe),
+        T_INT(dlsch0->rnti), T_INT(harq_pid));
+    }
+#endif
+
     if (dlsch0_harq->round >= after_rounds) {
       dlsch0_harq->status = SCH_IDLE;
       /*if ((dlsch1_harq == NULL)||
@@ -1632,6 +1641,15 @@ static void do_release_harq(PHY_VARS_eNB *eNB,int UE_id,int tb,uint16_t frame,ui
 	  dlsch1_harq     = dlsch1->harq_processes[harq_pid];
 	  AssertFatal(dlsch0_harq!=NULL,"dlsch0_harq is null\n");
       
+#if T_TRACER
+          if (after_rounds != -1) {
+            T(T_ENB_PHY_DLSCH_UE_NACK, T_INT(0), T_INT(frame), T_INT(subframe),
+              T_INT(dlsch0->rnti), T_INT(harq_pid));
+          } else {
+            T(T_ENB_PHY_DLSCH_UE_ACK, T_INT(0), T_INT(frame), T_INT(subframe),
+              T_INT(dlsch0->rnti), T_INT(harq_pid));
+          }
+#endif
           if (dlsch0_harq->round >= after_rounds) {
 	    dlsch0_harq->status = SCH_IDLE;
 	    if ((dlsch1_harq == NULL)||
@@ -1754,22 +1772,6 @@ void fill_ulsch_harq_indication(PHY_VARS_eNB *eNB,LTE_UL_eNB_HARQ_t *ulsch_harq,
       pdu->harq_indication_fdd_rel13.harq_tb_n[i] = 2-ulsch_harq->o_ACK[i];
       // release DLSCH if needed
       release_harq(eNB,UE_id,i,frame,subframe,0xffff, ulsch_harq->o_ACK[i] == 1);
-
-
-#if T_TRACER
-      /* TODO: get correct harq pid */
-      {
-        int subframe_tx = (subframe+6)%10;
-        int frame_tx = subframe_tx >= 6 ? (frame+1023)%1024 : frame;
-        if (ulsch_harq->o_ACK[i] != 1) {
-          T(T_ENB_PHY_DLSCH_UE_NACK, T_INT(0), T_INT(frame), T_INT(subframe),
-            T_INT(rnti), T_INT(eNB->dlsch[UE_id][0]->harq_ids[frame_tx%2][subframe_tx]));
-        } else {
-          T(T_ENB_PHY_DLSCH_UE_ACK, T_INT(0), T_INT(frame), T_INT(subframe),
-            T_INT(rnti), T_INT(eNB->dlsch[UE_id][0]->harq_ids[frame_tx%2][subframe_tx]));
-        }
-      }
-#endif
     }
   }
   else { // TDD
@@ -1858,21 +1860,6 @@ void fill_uci_harq_indication(PHY_VARS_eNB *eNB,
       pdu->harq_indication_fdd_rel13.harq_tb_n[0] = harq_ack[0];
       // release DLSCH if needed
       release_harq(eNB,UE_id,0,frame,subframe,0xffff, harq_ack[0] == 1);
-
-
-#if T_TRACER
-      {
-        int subframe_tx = (subframe+6)%10;
-        int frame_tx = subframe_tx >= 6 ? (frame+1023)%1024 : frame;
-        if (harq_ack[0] != 1) {
-          T(T_ENB_PHY_DLSCH_UE_NACK, T_INT(0), T_INT(frame), T_INT(subframe),
-            T_INT(uci->rnti), T_INT(eNB->dlsch[UE_id][0]->harq_ids[frame_tx%2][subframe_tx]));
-        } else {
-          T(T_ENB_PHY_DLSCH_UE_ACK, T_INT(0), T_INT(frame), T_INT(subframe),
-            T_INT(uci->rnti), T_INT(eNB->dlsch[UE_id][0]->harq_ids[frame_tx%2][subframe_tx]));
-        }
-      }
-#endif
     }
     else if (uci->pucch_fmt == pucch_format1b) {
       pdu->harq_indication_fdd_rel13.tl.tag = NFAPI_HARQ_INDICATION_FDD_REL13_TAG;
@@ -2042,16 +2029,15 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
   const int subframe = proc->subframe_rx;
   const int frame    = proc->frame_rx;
 
-
-  if ((fp->frame_type == TDD) && (subframe_select(fp,subframe)!=SF_UL)) return;
-
-  T(T_ENB_PHY_UL_TICK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe));
-
   /* TODO: use correct rxdata */
   T(T_ENB_PHY_INPUT_SIGNAL, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(0),
     T_BUFFER(&eNB->RU_list[0]->common.rxdata[0][subframe*eNB->frame_parms.samples_per_tti],
              eNB->frame_parms.samples_per_tti * 4));
 
+  if ((fp->frame_type == TDD) && (subframe_select(fp,subframe)!=SF_UL)) return;
+
+  T(T_ENB_PHY_UL_TICK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe));
+
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC, 1 );
 
   LOG_D(PHY,"[eNB %d] Frame %d: Doing phy_procedures_eNB_uespec_RX(%d)\n",eNB->Mod_id,frame, subframe);
diff --git a/openair1/SCHED/ru_procedures.c b/openair1/SCHED/ru_procedures.c
index a35922cfed31c6c74510ba7aebaecf4be96a86f4..6272650f72b56b8af9b6cdf78af68603e85e9351 100644
--- a/openair1/SCHED/ru_procedures.c
+++ b/openair1/SCHED/ru_procedures.c
@@ -150,6 +150,7 @@ static void *feptx_thread(void *param) {
   while (!oai_exit) {
 
     if (wait_on_condition(&proc->mutex_feptx,&proc->cond_feptx,&proc->instance_cnt_feptx,"feptx thread")<0) break;  
+    if (oai_exit) break;
     //stop_meas(&ru->ofdm_mod_wakeup_stats);
     feptx0(ru,1);
     if (release_thread(&proc->mutex_feptx,&proc->instance_cnt_feptx,"feptx thread")<0) break;
@@ -247,7 +248,6 @@ void feptx_ofdm(RU_t *ru) {
 //  int CC_id = ru->proc.CC_id;
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM , 1 );
-
   slot_offset_F = 0;
 
   slot_offset = subframe*fp->samples_per_tti;
@@ -455,6 +455,7 @@ static void *fep_thread(void *param) {
   while (!oai_exit) {
 
     if (wait_on_condition(&proc->mutex_fep,&proc->cond_fep,&proc->instance_cnt_fep,"fep thread")<0) break; 
+    if (oai_exit) break;
 	//stop_meas(&ru->ofdm_demod_wakeup_stats);
 	VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX1, 1 ); 
     fep0(ru,0);
@@ -504,6 +505,33 @@ void init_fep_thread(RU_t *ru,pthread_attr_t *attr_fep) {
 
 
 }
+
+extern void kill_fep_thread(RU_t *ru)
+{
+  RU_proc_t *proc = &ru->proc;
+  pthread_mutex_lock( &proc->mutex_fep );
+  proc->instance_cnt_fep         = 0;
+  pthread_cond_signal(&proc->cond_fep);
+  pthread_mutex_unlock( &proc->mutex_fep );
+  LOG_D(PHY, "Joining pthread_fep\n");
+  pthread_join(proc->pthread_fep, NULL);
+  pthread_mutex_destroy( &proc->mutex_fep );
+  pthread_cond_destroy( &proc->cond_fep );
+}
+
+extern void kill_feptx_thread(RU_t *ru)
+{
+  RU_proc_t *proc = &ru->proc;
+  pthread_mutex_lock( &proc->mutex_feptx );
+  proc->instance_cnt_feptx         = 0;
+  pthread_cond_signal(&proc->cond_feptx);
+  pthread_mutex_unlock( &proc->mutex_feptx );
+  LOG_D(PHY, "Joining pthread_feptx\n");
+  pthread_join(proc->pthread_feptx, NULL);
+  pthread_mutex_destroy( &proc->mutex_feptx );
+  pthread_cond_destroy( &proc->cond_feptx );
+}
+
 void ru_fep_full_2thread(RU_t *ru) {
 
   RU_proc_t *proc = &ru->proc;
diff --git a/openair1/SCHED_UE/phy_procedures_lte_ue.c b/openair1/SCHED_UE/phy_procedures_lte_ue.c
index ed258ed47c6f0ab6875d15582d5b8879c4b29395..b7d05ba006204fd9cde6456d3e5085353dee8a9a 100644
--- a/openair1/SCHED_UE/phy_procedures_lte_ue.c
+++ b/openair1/SCHED_UE/phy_procedures_lte_ue.c
@@ -99,77 +99,77 @@ void get_dumpparam(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id, uint8_t
 
 void dump_dlsch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t subframe,uint8_t harq_pid)
 {
-LOG_M_BEGIN(DEBUG_UE_PHYPROC)
-  unsigned int coded_bits_per_codeword;
-  uint8_t nsymb ;
-
-  get_dumpparam(ue, proc, eNB_id, 
-                ue->dlsch[ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->nb_rb ,
-                ue->dlsch[ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->rb_alloc_even,
-                subframe,
-                ue->dlsch[ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->Qm,
-                ue->dlsch[ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->Nl,                
-                ue->transmission_mode[eNB_id]<7?0:ue->transmission_mode[eNB_id],
-                &nsymb, &coded_bits_per_codeword);
-
-  LOG_M("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],2*nsymb*ue->frame_parms.ofdm_symbol_size,2,1);
-  LOG_M("rxsigF0_ext.m","rxsF0_ext", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->rxdataF_ext[0],2*nsymb*ue->frame_parms.ofdm_symbol_size,1,1);
-  LOG_M("dlsch00_ch0_ext.m","dl00_ch0_ext", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->dl_ch_estimates_ext[0],300*nsymb,1,1);
-  /*
-    LOG_M("dlsch01_ch0_ext.m","dl01_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[1],300*12,1,1);
-    LOG_M("dlsch10_ch0_ext.m","dl10_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[2],300*12,1,1);
-    LOG_M("dlsch11_ch0_ext.m","dl11_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[3],300*12,1,1);
-    LOG_M("dlsch_rho.m","dl_rho",pdsch_vars[0]->rho[0],300*12,1,1);
-  */
-  LOG_M("dlsch_rxF_comp0.m","dlsch0_rxF_comp0", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->rxdataF_comp0[0],300*12,1,1);
-  LOG_M("dlsch_rxF_llr.m","dlsch_llr", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->llr[0],coded_bits_per_codeword,1,0);
+  if (LOG_DUMPFLAG(DEBUG_UE_PHYPROC)) { 
+    unsigned int coded_bits_per_codeword;
+    uint8_t nsymb ;
+
+    get_dumpparam(ue, proc, eNB_id, 
+  		  ue->dlsch[ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->nb_rb ,
+  		  ue->dlsch[ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->rb_alloc_even,
+  		  subframe,
+  		  ue->dlsch[ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->Qm,
+  		  ue->dlsch[ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->Nl,  	      
+  		  ue->transmission_mode[eNB_id]<7?0:ue->transmission_mode[eNB_id],
+  		  &nsymb, &coded_bits_per_codeword);
+
+    LOG_M("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],2*nsymb*ue->frame_parms.ofdm_symbol_size,2,1);
+    LOG_M("rxsigF0_ext.m","rxsF0_ext", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->rxdataF_ext[0],2*nsymb*ue->frame_parms.ofdm_symbol_size,1,1);
+    LOG_M("dlsch00_ch0_ext.m","dl00_ch0_ext", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->dl_ch_estimates_ext[0],300*nsymb,1,1);
+    /*
+      LOG_M("dlsch01_ch0_ext.m","dl01_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[1],300*12,1,1);
+      LOG_M("dlsch10_ch0_ext.m","dl10_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[2],300*12,1,1);
+      LOG_M("dlsch11_ch0_ext.m","dl11_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[3],300*12,1,1);
+      LOG_M("dlsch_rho.m","dl_rho",pdsch_vars[0]->rho[0],300*12,1,1);
+    */
+    LOG_M("dlsch_rxF_comp0.m","dlsch0_rxF_comp0", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->rxdataF_comp0[0],300*12,1,1);
+    LOG_M("dlsch_rxF_llr.m","dlsch_llr", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->llr[0],coded_bits_per_codeword,1,0);
 
-  LOG_M("dlsch_mag1.m","dlschmag1",ue->pdsch_vars[ue->current_thread_id[subframe]][0]->dl_ch_mag0,300*12,1,1);
-  LOG_M("dlsch_mag2.m","dlschmag2",ue->pdsch_vars[ue->current_thread_id[subframe]][0]->dl_ch_magb0,300*12,1,1);
-LOG_M_END
+    LOG_M("dlsch_mag1.m","dlschmag1",ue->pdsch_vars[ue->current_thread_id[subframe]][0]->dl_ch_mag0,300*12,1,1);
+    LOG_M("dlsch_mag2.m","dlschmag2",ue->pdsch_vars[ue->current_thread_id[subframe]][0]->dl_ch_magb0,300*12,1,1);
+    }
 }
 
 void dump_dlsch_SI(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t subframe)
 {
-LOG_M_BEGIN(DEBUG_UE_PHYPROC)
-  unsigned int coded_bits_per_codeword;
-  uint8_t nsymb;
-
-  get_dumpparam(ue, proc, eNB_id,
-                ue->dlsch_SI[eNB_id]->harq_processes[0]->nb_rb,
-                ue->dlsch_SI[eNB_id]->harq_processes[0]->rb_alloc_even,
-                subframe,2,1,0,
-                &nsymb, &coded_bits_per_codeword);
-
-  LOG_D(PHY,"[UE %d] Dumping dlsch_SI : ofdm_symbol_size %d, nsymb %d, nb_rb %d, mcs %d, nb_rb %d, num_pdcch_symbols %d,G %d\n",
-        ue->Mod_id,
-        ue->frame_parms.ofdm_symbol_size,
-        nsymb,
-        ue->dlsch_SI[eNB_id]->harq_processes[0]->nb_rb,
-        ue->dlsch_SI[eNB_id]->harq_processes[0]->mcs,
-        ue->dlsch_SI[eNB_id]->harq_processes[0]->nb_rb,
-        ue->pdcch_vars[0%RX_NB_TH][eNB_id]->num_pdcch_symbols,
-        coded_bits_per_codeword);
-
-  LOG_M("rxsig0.m","rxs0", &ue->common_vars.rxdata[0][subframe*ue->frame_parms.samples_per_tti],ue->frame_parms.samples_per_tti,1,1);
-
-  LOG_M("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],nsymb*ue->frame_parms.ofdm_symbol_size,1,1);
-  LOG_M("rxsigF0_ext.m","rxsF0_ext", ue->pdsch_vars_SI[0]->rxdataF_ext[0],2*nsymb*ue->frame_parms.ofdm_symbol_size,1,1);
-  LOG_M("dlsch00_ch0_ext.m","dl00_ch0_ext", ue->pdsch_vars_SI[0]->dl_ch_estimates_ext[0],ue->frame_parms.N_RB_DL*12*nsymb,1,1);
-  /*
-    LOG_M("dlsch01_ch0_ext.m","dl01_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[1],300*12,1,1);
-    LOG_M("dlsch10_ch0_ext.m","dl10_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[2],300*12,1,1);
-    LOG_M("dlsch11_ch0_ext.m","dl11_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[3],300*12,1,1);
-    LOG_M("dlsch_rho.m","dl_rho",pdsch_vars[0]->rho[0],300*12,1,1);
-  */
-  LOG_M("dlsch_rxF_comp0.m","dlsch0_rxF_comp0", ue->pdsch_vars_SI[0]->rxdataF_comp0[0],ue->frame_parms.N_RB_DL*12*nsymb,1,1);
-  LOG_M("dlsch_rxF_llr.m","dlsch_llr", ue->pdsch_vars_SI[0]->llr[0],coded_bits_per_codeword,1,0);
-
-  LOG_M("dlsch_mag1.m","dlschmag1",ue->pdsch_vars_SI[0]->dl_ch_mag0,300*nsymb,1,1);
-  LOG_M("dlsch_mag2.m","dlschmag2",ue->pdsch_vars_SI[0]->dl_ch_magb0,300*nsymb,1,1);
-  sleep(1);
-  exit(-1);
-LOG_M_END
+  if (LOG_DUMPFLAG(DEBUG_UE_PHYPROC)){
+    unsigned int coded_bits_per_codeword;
+    uint8_t nsymb;
+
+    get_dumpparam(ue, proc, eNB_id,
+  		  ue->dlsch_SI[eNB_id]->harq_processes[0]->nb_rb,
+  		  ue->dlsch_SI[eNB_id]->harq_processes[0]->rb_alloc_even,
+  		  subframe,2,1,0,
+  		  &nsymb, &coded_bits_per_codeword);
+
+    LOG_D(PHY,"[UE %d] Dumping dlsch_SI : ofdm_symbol_size %d, nsymb %d, nb_rb %d, mcs %d, nb_rb %d, num_pdcch_symbols %d,G %d\n",
+  	  ue->Mod_id,
+  	  ue->frame_parms.ofdm_symbol_size,
+  	  nsymb,
+  	  ue->dlsch_SI[eNB_id]->harq_processes[0]->nb_rb,
+  	  ue->dlsch_SI[eNB_id]->harq_processes[0]->mcs,
+  	  ue->dlsch_SI[eNB_id]->harq_processes[0]->nb_rb,
+  	  ue->pdcch_vars[0%RX_NB_TH][eNB_id]->num_pdcch_symbols,
+  	  coded_bits_per_codeword);
+
+    LOG_M("rxsig0.m","rxs0", &ue->common_vars.rxdata[0][subframe*ue->frame_parms.samples_per_tti],ue->frame_parms.samples_per_tti,1,1);
+
+    LOG_M("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],nsymb*ue->frame_parms.ofdm_symbol_size,1,1);
+    LOG_M("rxsigF0_ext.m","rxsF0_ext", ue->pdsch_vars_SI[0]->rxdataF_ext[0],2*nsymb*ue->frame_parms.ofdm_symbol_size,1,1);
+    LOG_M("dlsch00_ch0_ext.m","dl00_ch0_ext", ue->pdsch_vars_SI[0]->dl_ch_estimates_ext[0],ue->frame_parms.N_RB_DL*12*nsymb,1,1);
+    /*
+      LOG_M("dlsch01_ch0_ext.m","dl01_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[1],300*12,1,1);
+      LOG_M("dlsch10_ch0_ext.m","dl10_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[2],300*12,1,1);
+      LOG_M("dlsch11_ch0_ext.m","dl11_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[3],300*12,1,1);
+      LOG_M("dlsch_rho.m","dl_rho",pdsch_vars[0]->rho[0],300*12,1,1);
+    */
+    LOG_M("dlsch_rxF_comp0.m","dlsch0_rxF_comp0", ue->pdsch_vars_SI[0]->rxdataF_comp0[0],ue->frame_parms.N_RB_DL*12*nsymb,1,1);
+    LOG_M("dlsch_rxF_llr.m","dlsch_llr", ue->pdsch_vars_SI[0]->llr[0],coded_bits_per_codeword,1,0);
+
+    LOG_M("dlsch_mag1.m","dlschmag1",ue->pdsch_vars_SI[0]->dl_ch_mag0,300*nsymb,1,1);
+    LOG_M("dlsch_mag2.m","dlschmag2",ue->pdsch_vars_SI[0]->dl_ch_magb0,300*nsymb,1,1);
+    sleep(1);
+    exit(-1);
+  }
 }
 
 #if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR)
@@ -234,40 +234,40 @@ unsigned int get_tx_amp(int power_dBm, int power_max_dBm, int N_RB_UL, int nb_rb
 
 void dump_dlsch_ra(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t subframe)
 {
-LOG_M_BEGIN(DEBUG_UE_PHYPROC)
-  unsigned int coded_bits_per_codeword;
-  uint8_t nsymb ;
-
-
-  get_dumpparam(ue, proc, eNB_id,
-                ue->dlsch_SI[eNB_id]->harq_processes[0]->nb_rb,
-                ue->dlsch_SI[eNB_id]->harq_processes[0]->rb_alloc_even, 
-                subframe,2,1,0,
-                &nsymb, &coded_bits_per_codeword);
-
-  LOG_D(PHY,"[UE %d] Dumping dlsch_ra : nb_rb %d, mcs %d, nb_rb %d, num_pdcch_symbols %d,G %d\n",
-        ue->Mod_id,
-        ue->dlsch_ra[eNB_id]->harq_processes[0]->nb_rb,
-        ue->dlsch_ra[eNB_id]->harq_processes[0]->mcs,
-        ue->dlsch_ra[eNB_id]->harq_processes[0]->nb_rb,
-        ue->pdcch_vars[0%RX_NB_TH][eNB_id]->num_pdcch_symbols,
-        coded_bits_per_codeword);
-
-  LOG_M("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],2*12*ue->frame_parms.ofdm_symbol_size,2,1);
-  LOG_M("rxsigF0_ext.m","rxsF0_ext", ue->pdsch_vars_ra[0]->rxdataF_ext[0],2*12*ue->frame_parms.ofdm_symbol_size,1,1);
-  LOG_M("dlsch00_ch0_ext.m","dl00_ch0_ext", ue->pdsch_vars_ra[0]->dl_ch_estimates_ext[0],300*nsymb,1,1);
-  /*
-    LOG_M("dlsch01_ch0_ext.m","dl01_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[1],300*12,1,1);
-    LOG_M("dlsch10_ch0_ext.m","dl10_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[2],300*12,1,1);
-    LOG_M("dlsch11_ch0_ext.m","dl11_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[3],300*12,1,1);
-    LOG_M("dlsch_rho.m","dl_rho",pdsch_vars[0]->rho[0],300*12,1,1);
-  */
-  LOG_M("dlsch_rxF_comp0.m","dlsch0_rxF_comp0", ue->pdsch_vars_ra[0]->rxdataF_comp0[0],300*nsymb,1,1);
-  LOG_M("dlsch_rxF_llr.m","dlsch_llr", ue->pdsch_vars_ra[0]->llr[0],coded_bits_per_codeword,1,0);
+  if (LOG_DUMPFLAG(DEBUG_UE_PHYPROC)){
+    unsigned int coded_bits_per_codeword;
+    uint8_t nsymb ;
+
+
+    get_dumpparam(ue, proc, eNB_id,
+  		  ue->dlsch_SI[eNB_id]->harq_processes[0]->nb_rb,
+  		  ue->dlsch_SI[eNB_id]->harq_processes[0]->rb_alloc_even, 
+  		  subframe,2,1,0,
+  		  &nsymb, &coded_bits_per_codeword);
+
+    LOG_D(PHY,"[UE %d] Dumping dlsch_ra : nb_rb %d, mcs %d, nb_rb %d, num_pdcch_symbols %d,G %d\n",
+  	  ue->Mod_id,
+  	  ue->dlsch_ra[eNB_id]->harq_processes[0]->nb_rb,
+  	  ue->dlsch_ra[eNB_id]->harq_processes[0]->mcs,
+  	  ue->dlsch_ra[eNB_id]->harq_processes[0]->nb_rb,
+  	  ue->pdcch_vars[0%RX_NB_TH][eNB_id]->num_pdcch_symbols,
+  	  coded_bits_per_codeword);
+
+    LOG_M("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],2*12*ue->frame_parms.ofdm_symbol_size,2,1);
+    LOG_M("rxsigF0_ext.m","rxsF0_ext", ue->pdsch_vars_ra[0]->rxdataF_ext[0],2*12*ue->frame_parms.ofdm_symbol_size,1,1);
+    LOG_M("dlsch00_ch0_ext.m","dl00_ch0_ext", ue->pdsch_vars_ra[0]->dl_ch_estimates_ext[0],300*nsymb,1,1);
+    /*
+      LOG_M("dlsch01_ch0_ext.m","dl01_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[1],300*12,1,1);
+      LOG_M("dlsch10_ch0_ext.m","dl10_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[2],300*12,1,1);
+      LOG_M("dlsch11_ch0_ext.m","dl11_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[3],300*12,1,1);
+      LOG_M("dlsch_rho.m","dl_rho",pdsch_vars[0]->rho[0],300*12,1,1);
+    */
+    LOG_M("dlsch_rxF_comp0.m","dlsch0_rxF_comp0", ue->pdsch_vars_ra[0]->rxdataF_comp0[0],300*nsymb,1,1);
+    LOG_M("dlsch_rxF_llr.m","dlsch_llr", ue->pdsch_vars_ra[0]->llr[0],coded_bits_per_codeword,1,0);
 
-  LOG_M("dlsch_mag1.m","dlschmag1",ue->pdsch_vars_ra[0]->dl_ch_mag0,300*nsymb,1,1);
-  LOG_M("dlsch_mag2.m","dlschmag2",ue->pdsch_vars_ra[0]->dl_ch_magb0,300*nsymb,1,1);
-LOG_M_END
+    LOG_M("dlsch_mag1.m","dlschmag1",ue->pdsch_vars_ra[0]->dl_ch_mag0,300*nsymb,1,1);
+    LOG_M("dlsch_mag2.m","dlschmag2",ue->pdsch_vars_ra[0]->dl_ch_magb0,300*nsymb,1,1);
+  }
 }
 
 void phy_reset_ue(module_id_t Mod_id,uint8_t CC_id,uint8_t eNB_index)
@@ -362,11 +362,11 @@ void process_timing_advance_rar(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint16_t ti
   ue->timing_advance = timing_advance*4;
 
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
+  if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
   /* TODO: fix this log, what is 'HW timing advance'? */
   /*LOG_I(PHY,"[UE %d] AbsoluteSubFrame %d.%d, received (rar) timing_advance %d, HW timing advance %d\n",ue->Mod_id,proc->frame_rx, proc->subframe_rx, ue->timing_advance);*/
-  LOG_I(PHY,"[UE %d] AbsoluteSubFrame %d.%d, received (rar) timing_advance %d\n",ue->Mod_id,proc->frame_rx, proc->subframe_rx, ue->timing_advance);
-LOG_DEBUG_END
+    LOG_UI(PHY,"[UE %d] AbsoluteSubFrame %d.%d, received (rar) timing_advance %d\n",ue->Mod_id,proc->frame_rx, proc->subframe_rx, ue->timing_advance);
+  }
 
 }
 
@@ -740,17 +740,17 @@ uint16_t get_n1_pucch(PHY_VARS_UE *ue,
   } else {
 
     bundling_flag = ue->pucch_config_dedicated[eNB_id].tdd_AckNackFeedbackMode;
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
+    if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
 
-    if (bundling_flag==bundling) {
-      LOG_D(PHY,"[UE%d] Frame %d subframe %d : get_n1_pucch, bundling, SR %d/%d\n",ue->Mod_id,proc->frame_tx,subframe,SR,
-            ue->scheduling_request_config[eNB_id].sr_PUCCH_ResourceIndex);
-    } else {
-      LOG_D(PHY,"[UE%d] Frame %d subframe %d : get_n1_pucch, multiplexing, SR %d/%d\n",ue->Mod_id,proc->frame_tx,subframe,SR,
-            ue->scheduling_request_config[eNB_id].sr_PUCCH_ResourceIndex);
+      if (bundling_flag==bundling) {
+        LOG_D(PHY,"[UE%d] Frame %d subframe %d : get_n1_pucch, bundling, SR %d/%d\n",ue->Mod_id,proc->frame_tx,subframe,SR,
+              ue->scheduling_request_config[eNB_id].sr_PUCCH_ResourceIndex);
+      } else {
+        LOG_D(PHY,"[UE%d] Frame %d subframe %d : get_n1_pucch, multiplexing, SR %d/%d\n",ue->Mod_id,proc->frame_tx,subframe,SR,
+              ue->scheduling_request_config[eNB_id].sr_PUCCH_ResourceIndex);
+      }
     }
 
-LOG_DEBUG_END
 
     switch (frame_parms->tdd_config) {
     case 1:  // DL:S:UL:UL:DL:DL:S:UL:UL:DL
@@ -1226,9 +1226,9 @@ void ulsch_common_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc, uint8_t empt
 #endif
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_COMMON,VCD_FUNCTION_IN);
-LOG_DEBUG_BEGIN(UE_TIMING)
-  start_meas(&ue->ofdm_mod_stats);
-LOG_DEBUG_END
+  if ( LOG_DEBUGFLAG(UE_TIMING)) {
+    start_meas(&ue->ofdm_mod_stats);
+  }
   nsymb = (frame_parms->Ncp == 0) ? 14 : 12;
 
 #if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR)//this is the EXPRESS MIMO case
@@ -1345,9 +1345,9 @@ LOG_DEBUG_END
 
   } //nb_antennas_tx
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-      stop_meas(&ue->ofdm_mod_stats);
-LOG_DEBUG_END
+  if ( LOG_DEBUGFLAG(UE_TIMING)) {
+    stop_meas(&ue->ofdm_mod_stats);
+  }
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_COMMON,VCD_FUNCTION_OUT);
 
@@ -1634,30 +1634,30 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
       }
 
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-    if(ue->ulsch[eNB_id]->o_ACK[0])
-    {
-    	LOG_I(PHY,"PUSCH ACK\n");
-        T(T_UE_PHY_DLSCH_UE_ACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
-                      T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->current_harq_pid));
-    }
-    else
-    {
-    	LOG_I(PHY,"PUSCH NACK\n");
-        T(T_UE_PHY_DLSCH_UE_NACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
-                      T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->current_harq_pid));
-    }
-      LOG_I(PHY,"[UE  %d][PDSCH %x] AbsSubFrame %d.%d Generating ACK (%d,%d) for %d bits on PUSCH\n",
-        Mod_id,
-        ue->ulsch[eNB_id]->rnti,
-        frame_tx%1024,subframe_tx,
-        ue->ulsch[eNB_id]->o_ACK[0],ue->ulsch[eNB_id]->o_ACK[1],
-        ue->ulsch[eNB_id]->harq_processes[harq_pid]->O_ACK);
-LOG_DEBUG_END
+    if ( LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+      if(ue->ulsch[eNB_id]->o_ACK[0])
+      {
+  	  LOG_I(PHY,"PUSCH ACK\n");
+  	  T(T_UE_PHY_DLSCH_UE_ACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
+  			T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->current_harq_pid));
+      }
+      else
+      {
+  	  LOG_I(PHY,"PUSCH NACK\n");
+  	  T(T_UE_PHY_DLSCH_UE_NACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
+  			T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->current_harq_pid));
+      }
+  	LOG_I(PHY,"[UE  %d][PDSCH %x] AbsSubFrame %d.%d Generating ACK (%d,%d) for %d bits on PUSCH\n",
+  	  Mod_id,
+  	  ue->ulsch[eNB_id]->rnti,
+  	  frame_tx%1024,subframe_tx,
+  	  ue->ulsch[eNB_id]->o_ACK[0],ue->ulsch[eNB_id]->o_ACK[1],
+  	  ue->ulsch[eNB_id]->harq_processes[harq_pid]->O_ACK);
     }
+  }
 
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
+  if ( LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)){
         LOG_D(PHY,
               "[UE  %d][PUSCH %d] AbsSubframe %d.%d Generating PUSCH : first_rb %d, nb_rb %d, round %d, mcs %d, rv %d, "
               "cyclic_shift %d (cyclic_shift_common %d,n_DMRS2 %d,n_PRS %d), ACK (%d,%d), O_ACK %d, ack_status_cw0 %d ack_status_cw1 %d bundling %d, Nbundled %d, CQI %d, RI %d\n",
@@ -1679,7 +1679,7 @@ LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
           ue->ulsch[eNB_id]->bundling, Nbundled,
           cqi_status,
           ri_status);
-LOG_DEBUG_END
+  }
 
 
 
@@ -1701,9 +1701,9 @@ LOG_DEBUG_END
 	    ue->prach_resources[eNB_id]->Msg3[6],
 	    ue->prach_resources[eNB_id]->Msg3[7],
 	    ue->prach_resources[eNB_id]->Msg3[8]);
-LOG_DEBUG_BEGIN(UE_TIMING)
+    if ( LOG_DEBUGFLAG(UE_TIMING)) {
       start_meas(&ue->ulsch_encoding_stats);
-LOG_DEBUG_END
+    }
       
       AssertFatal(ulsch_encoding(ue->prach_resources[eNB_id]->Msg3,
 				 ue,
@@ -1713,11 +1713,11 @@ LOG_DEBUG_END
 				 ue->transmission_mode[eNB_id],0,0)==0,
 		  "ulsch_coding.c: FATAL ERROR: returning\n");
       
-LOG_DEBUG_BEGIN(UE_TIMING)
+    if ( LOG_DEBUGFLAG(UE_TIMING)) {
       stop_meas(&ue->phy_proc_tx);
       LOG_UI(PHY,"------FULL TX PROC : %5.2f ------\n",ue->phy_proc_tx.p_time/(cpuf*1000.0));
       stop_meas(&ue->ulsch_encoding_stats);
-LOG_DEBUG_END
+    }
 
       if (ue->mac_enabled == 1) {
 
@@ -1752,26 +1752,25 @@ LOG_DEBUG_END
       
 
 	
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
+      if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
 	LOG_D(PHY,"[UE] Frame %d, subframe %d : ULSCH SDU (TX harq_pid %d)  (%d bytes) : \n",frame_tx,subframe_tx,harq_pid, ue->ulsch[eNB_id]->harq_processes[harq_pid]->TBS>>3);
 	
 	for (i=0; i<ue->ulsch[eNB_id]->harq_processes[harq_pid]->TBS>>3; i++)
 	  LOG_T(PHY,"%x.",ulsch_input_buffer[i]);
 	
 	LOG_T(PHY,"\n");
-LOG_DEBUG_END
       }
-      else {
+     } else {
 	unsigned int taus(void);
 	
 	for (i=0; i<input_buffer_length; i++)
 	  ulsch_input_buffer[i]= (uint8_t)(taus()&0xff);
 	
-      }
+     }
       
-LOG_DEBUG_BEGIN(UE_TIMING)
+     if ( LOG_DEBUGFLAG(UE_TIMING)) {
       start_meas(&ue->ulsch_encoding_stats);
-LOG_DEBUG_END
+     }
       if (abstraction_flag==0) {
 	
 	if (ulsch_encoding(ulsch_input_buffer,
@@ -1783,16 +1782,16 @@ LOG_DEBUG_END
 			   Nbundled)!=0) {
 	  LOG_E(PHY,"ulsch_coding.c: FATAL ERROR: returning\n");
 	  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT);
-LOG_DEBUG_BEGIN(UE_TIMING)
-	  stop_meas(&ue->phy_proc_tx);
-LOG_DEBUG_END
+          if (LOG_DEBUGFLAG(UE_TIMING)) {
+	    stop_meas(&ue->phy_proc_tx);
+          }
 	  return;
 	}
       }
       
-LOG_DEBUG_BEGIN(UE_TIMING)
-      stop_meas(&ue->ulsch_encoding_stats);
-LOG_DEBUG_END
+      if(LOG_DEBUGFLAG(UE_TIMING)) {
+        stop_meas(&ue->ulsch_encoding_stats);
+      }
     }
     
     if (abstraction_flag == 0) {
@@ -1817,13 +1816,13 @@ LOG_DEBUG_END
     T(T_UE_PHY_PUSCH_TX_POWER, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx),T_INT(ue->tx_power_dBm[subframe_tx]),
       T_INT(tx_amp),T_INT(ue->ulsch[eNB_id]->f_pusch),T_INT(get_PL(Mod_id,0,eNB_id)),T_INT(nb_rb));
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-    LOG_D(PHY,"[UE  %d][PUSCH %d] AbsSubFrame %d.%d, generating PUSCH, Po_PUSCH: %d dBm (max %d dBm), amp %d\n",
-	  Mod_id,harq_pid,frame_tx%1024,subframe_tx,ue->tx_power_dBm[subframe_tx],ue->tx_power_max_dBm, tx_amp);
-LOG_DEBUG_END
-LOG_DEBUG_BEGIN(UE_TIMING)
-    start_meas(&ue->ulsch_modulation_stats);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+      LOG_D(PHY,"[UE  %d][PUSCH %d] AbsSubFrame %d.%d, generating PUSCH, Po_PUSCH: %d dBm (max %d dBm), amp %d\n",
+	    Mod_id,harq_pid,frame_tx%1024,subframe_tx,ue->tx_power_dBm[subframe_tx],ue->tx_power_max_dBm, tx_amp);
+    }
+    if (LOG_DEBUGFLAG(UE_TIMING)) {
+      start_meas(&ue->ulsch_modulation_stats);
+    }
     ulsch_modulation(ue->common_vars.txdataF,
 		     tx_amp,
 		     frame_tx,
@@ -1840,9 +1839,9 @@ LOG_DEBUG_END
 			 nb_rb,
 			 aa);
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-    stop_meas(&ue->ulsch_modulation_stats);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)) {
+      stop_meas(&ue->ulsch_modulation_stats);
+    }
 
     }
     
@@ -2219,18 +2218,18 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
       }
 
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-      if(pucch_payload[0])
-      {
-          T(T_UE_PHY_DLSCH_UE_ACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
-                  T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->current_harq_pid));
+      if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+  	if(pucch_payload[0])
+  	{
+  	    T(T_UE_PHY_DLSCH_UE_ACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
+  		    T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->current_harq_pid));
+  	}
+  	else
+  	{
+  	    T(T_UE_PHY_DLSCH_UE_NACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
+  		    T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->current_harq_pid));
+  	}
       }
-      else
-      {
-          T(T_UE_PHY_DLSCH_UE_NACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
-                  T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->current_harq_pid));
-      }
-LOG_DEBUG_END
 
       generate_pucch1x(ue->common_vars.txdataF,
 		       &ue->frame_parms,
@@ -2268,15 +2267,15 @@ LOG_DEBUG_END
 #endif
       T(T_UE_PHY_PUCCH_TX_POWER, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx),T_INT(ue->tx_power_dBm[subframe_tx]),
               T_INT(tx_amp),T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->g_pucch),T_INT(get_PL(ue->Mod_id,ue->CC_id,eNB_id)));
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-      LOG_D(PHY,"[UE  %d][RNTI %x] AbsSubFrame %d.%d Generating PUCCH 2 (RI or CQI), Po_PUCCH %d, isShortenPucch %d, amp %d\n",
-              Mod_id,
-              ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti,
-              frame_tx%1024, subframe_tx,
-              Po_PUCCH,
-              isShortenPucch,
-              tx_amp);
-LOG_DEBUG_END
+      if( LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+  	LOG_D(PHY,"[UE  %d][RNTI %x] AbsSubFrame %d.%d Generating PUCCH 2 (RI or CQI), Po_PUCCH %d, isShortenPucch %d, amp %d\n",
+  		Mod_id,
+  		ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti,
+  		frame_tx%1024, subframe_tx,
+  		Po_PUCCH,
+  		isShortenPucch,
+  		tx_amp);
+      }
       generate_pucch2x(ue->common_vars.txdataF,
               &ue->frame_parms,
               ue->ncs_cell,
@@ -2354,9 +2353,9 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
 
 
   ue->generate_ul_signal[eNB_id] = 0;
-LOG_DEBUG_BEGIN(UE_TIMING)
-  start_meas(&ue->phy_proc_tx);
-LOG_DEBUG_END
+  if ( LOG_DEBUGFLAG(UE_TIMING)) {
+    start_meas(&ue->phy_proc_tx);
+  }
 
   ue->tx_power_dBm[subframe_tx]=-127;
 
@@ -2449,9 +2448,9 @@ LOG_DEBUG_END
   LOG_D(PHY,"****** end TX-Chain for AbsSubframe %d.%d ******\n", frame_tx, subframe_tx);
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT);
-LOG_DEBUG_BEGIN(UE_TIMING)
-  stop_meas(&ue->phy_proc_tx);
-LOG_DEBUG_END
+  if ( LOG_DEBUGFLAG(UE_TIMING)) {
+    stop_meas(&ue->phy_proc_tx);
+  }
 }
 
 void phy_procedures_UE_S_TX(PHY_VARS_UE *ue,uint8_t eNB_id,uint8_t abstraction_flag)
@@ -2516,7 +2515,7 @@ void ue_measurement_procedures(
 	  T_INT((int)ue->common_vars.freq_offset));
   }
 
-  if (l==(6-ue->frame_parms.Ncp)) {
+  if (( (slot%2) == 0) && (l==(6-ue->frame_parms.Ncp))) {
 
     // make sure we have signal from PSS/SSS for N0 measurement
          // LOG_I(PHY," l==(6-ue->frame_parms.Ncp) ue_rrc_measurements\n");
@@ -2617,7 +2616,7 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin
       dummy[0] = ue->pbch_vars[eNB_id]->decoded_output[2];
       dummy[1] = ue->pbch_vars[eNB_id]->decoded_output[1];
       dummy[2] = ue->pbch_vars[eNB_id]->decoded_output[0];
-      trace_pdu(1, dummy, 3, ue->Mod_id, 0, 0,
+      trace_pdu( DIRECTION_DOWNLINK, dummy, WS_C_RNTI, ue->Mod_id, 0, 0,
           frame_rx, subframe_rx, 0, 0);
       LOG_D(OPT,"[UE %d][PBCH] Frame %d trace pdu for PBCH\n",
           ue->Mod_id, subframe_rx);
@@ -2693,40 +2692,36 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin
 
     }
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
+    if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
 
-    LOG_UI(PHY,"[UE %d] frame %d, subframe %d, Received PBCH (MIB): nb_antenna_ports_eNB %d, tx_ant %d, frame_tx %d. N_RB_DL %d, phich_duration %d, phich_resource %d/6!\n",
-	  ue->Mod_id,
-	  frame_rx,
-	  subframe_rx,
-	  ue->frame_parms.nb_antenna_ports_eNB,
-	  pbch_tx_ant,
-	  frame_tx,
-	  ue->frame_parms.N_RB_DL,
-	  ue->frame_parms.phich_config_common.phich_duration,
-	  ue->frame_parms.phich_config_common.phich_resource);
-LOG_DEBUG_END
+      LOG_UI(PHY,"[UE %d] frame %d, subframe %d, Received PBCH (MIB): nb_antenna_ports_eNB %d, tx_ant %d, frame_tx %d. N_RB_DL %d, phich_duration %d, phich_resource %d/6!\n",
+	    ue->Mod_id,
+	    frame_rx,
+	    subframe_rx,
+	    ue->frame_parms.nb_antenna_ports_eNB,
+	    pbch_tx_ant,
+	    frame_tx,
+	    ue->frame_parms.N_RB_DL,
+	    ue->frame_parms.phich_config_common.phich_duration,
+	    ue->frame_parms.phich_config_common.phich_resource);
+    }
 
   } else { 
 
-    /*
-    LOG_E(PHY,"[UE %d] frame %d, subframe %d, Error decoding PBCH!\n",
-    ue->Mod_id,frame_rx, subframe_rx);
-
-    LOG_I(PHY,"[UE %d] rx_offset %d\n",ue->Mod_id,ue->rx_offset);
+    if (LOG_DUMPFLAG(DEBUG_UE_PHYPROC)) {
+      LOG_E(PHY,"[UE %d] frame %d, subframe %d, Error decoding PBCH!\n",
+      ue->Mod_id,frame_rx, subframe_rx);
 
+      LOG_I(PHY,"[UE %d] rx_offset %d\n",ue->Mod_id,ue->rx_offset);
 
-    LOG_M("rxsig0.m","rxs0", ue->common_vars.rxdata[0],ue->frame_parms.samples_per_tti,1,1);
 
-    LOG_M("H00.m","h00",&(ue->common_vars.dl_ch_estimates[0][0][0]),((ue->frame_parms.Ncp==0)?7:6)*(ue->frame_parms.ofdm_symbol_size),1,1);
-    LOG_M("H10.m","h10",&(ue->common_vars.dl_ch_estimates[0][2][0]),((ue->frame_parms.Ncp==0)?7:6)*(ue->frame_parms.ofdm_symbol_size),1,1);
+      LOG_M("rxsig0.m","rxs0", ue->common_vars.rxdata[0],ue->frame_parms.samples_per_tti,1,1);
 
-    LOG_M("rxsigF0.m","rxsF0", ue->common_vars.rxdataF[0],8*ue->frame_parms.ofdm_symbol_size,1,1);
-    LOG_M("PBCH_rxF0_ext.m","pbch0_ext",ue->pbch_vars[0]->rxdataF_ext[0],12*4*6,1,1);
-    LOG_M("PBCH_rxF0_comp.m","pbch0_comp",ue->pbch_vars[0]->rxdataF_comp[0],12*4*6,1,1);
-    LOG_M("PBCH_rxF_llr.m","pbch_llr",ue->pbch_vars[0]->llr,(ue->frame_parms.Ncp==0) ? 1920 : 1728,1,4);
-    exit(-1);
-    */
+      LOG_M("PBCH_rxF0_ext.m","pbch0_ext",ue->pbch_vars[0]->rxdataF_ext[0],12*4*6,1,1);
+      LOG_M("PBCH_rxF0_comp.m","pbch0_comp",ue->pbch_vars[0]->rxdataF_comp[0],12*4*6,1,1);
+      LOG_M("PBCH_rxF_llr.m","pbch_llr",ue->pbch_vars[0]->llr,(ue->frame_parms.Ncp==0) ? 1920 : 1728,1,4);
+      exit(-1);
+    }
 
     ue->pbch_vars[eNB_id]->pdu_errors_conseq++;
     ue->pbch_vars[eNB_id]->pdu_errors++;
@@ -2742,12 +2737,12 @@ LOG_DEBUG_END
     ue->pbch_vars[eNB_id]->pdu_errors_last = ue->pbch_vars[eNB_id]->pdu_errors;
   }
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-  LOG_UI(PHY,"[UE %d] frame %d, slot %d, PBCH errors = %d, consecutive errors = %d!\n",
-  ue->Mod_id,frame_rx, subframe_rx,
-  ue->pbch_vars[eNB_id]->pdu_errors,
-  ue->pbch_vars[eNB_id]->pdu_errors_conseq);
-LOG_DEBUG_END
+  if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+    LOG_UI(PHY,"[UE %d] frame %d, slot %d, PBCH errors = %d, consecutive errors = %d!\n",
+    ue->Mod_id,frame_rx, subframe_rx,
+    ue->pbch_vars[eNB_id]->pdu_errors,
+    ue->pbch_vars[eNB_id]->pdu_errors_conseq);
+  }
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PBCH_PROCEDURES, VCD_FUNCTION_OUT);
 }
 
@@ -2767,9 +2762,9 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
 
   LOG_D(PHY,"DCI Decoding procedure in %d.%d\n",frame_rx,subframe_rx);
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PDCCH_PROCEDURES, VCD_FUNCTION_IN);
-LOG_DEBUG_BEGIN(UE_TIMING)
-  start_meas(&ue->dlsch_rx_pdcch_stats);
-LOG_DEBUG_END
+  if (LOG_DEBUGFLAG(UE_TIMING)) {
+    start_meas(&ue->dlsch_rx_pdcch_stats);
+  }
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH, VCD_FUNCTION_IN);
   rx_pdcch(ue,
@@ -2896,17 +2891,17 @@ LOG_DEBUG_END
 	
 	ue->dlsch_received[eNB_id]++;
 	
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-	LOG_D(PHY,"[UE  %d] Generated UE DLSCH C_RNTI format %d\n",ue->Mod_id,dci_alloc_rx[i].format);
-	dump_dci(&ue->frame_parms, &dci_alloc_rx[i]);
-	LOG_D(PHY,"[UE %d] *********** dlsch->active in subframe %d=> %d\n",ue->Mod_id,subframe_rx,ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->active);
-LOG_DEBUG_END
+        if ( LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+	  LOG_D(PHY,"[UE  %d] Generated UE DLSCH C_RNTI format %d\n",ue->Mod_id,dci_alloc_rx[i].format);
+	  dump_dci(&ue->frame_parms, &dci_alloc_rx[i]);
+	  LOG_D(PHY,"[UE %d] *********** dlsch->active in subframe %d=> %d\n",ue->Mod_id,subframe_rx,ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->active);
+        }
 	
 	// we received a CRNTI, so we're in PUSCH
 	if (ue->UE_mode[eNB_id] != PUSCH) {
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
+          if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
 	  LOG_D(PHY,"[UE  %d] Frame %d, subframe %d: Received DCI with CRNTI %x => Mode PUSCH\n",ue->Mod_id,frame_rx,subframe_rx,ue->pdcch_vars[subframe_rx&1][eNB_id]->crnti);
-LOG_DEBUG_END
+         }
 	  
 	  //dump_dci(&ue->frame_parms, &dci_alloc_rx[i]);
 	  ue->UE_mode[eNB_id] = PUSCH;
@@ -2921,9 +2916,9 @@ LOG_DEBUG_END
 	       ((dci_alloc_rx[i].format == format1A) || (dci_alloc_rx[i].format == format1C))) {
 
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-	LOG_D(PHY,"[UE  %d] subframe %d: Found rnti %x, format 1%s, dci_cnt %d\n",ue->Mod_id,subframe_rx,dci_alloc_rx[i].rnti,dci_alloc_rx[i].format==format1A?"A":"C",i);
-LOG_DEBUG_END
+        if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+	  LOG_D(PHY,"[UE  %d] subframe %d: Found rnti %x, format 1%s, dci_cnt %d\n",ue->Mod_id,subframe_rx,dci_alloc_rx[i].rnti,dci_alloc_rx[i].format==format1A?"A":"C",i);
+        }
 	
 	if (generate_ue_dlsch_params_from_dci(frame_rx,
 					      subframe_rx,
@@ -2952,9 +2947,9 @@ LOG_DEBUG_END
     else if ((dci_alloc_rx[i].rnti == P_RNTI) &&
        ((dci_alloc_rx[i].format == format1A) || (dci_alloc_rx[i].format == format1C))) {
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-      LOG_D(PHY,"[UE  %d] subframe %d: Found rnti %x, format 1%s, dci_cnt %d\n",ue->Mod_id,subframe_rx,dci_alloc_rx[i].rnti,dci_alloc_rx[i].format==format1A?"A":"C",i);
-LOG_DEBUG_END
+      if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+        LOG_D(PHY,"[UE  %d] subframe %d: Found rnti %x, format 1%s, dci_cnt %d\n",ue->Mod_id,subframe_rx,dci_alloc_rx[i].rnti,dci_alloc_rx[i].format==format1A?"A":"C",i);
+      }
 
 
       if (generate_ue_dlsch_params_from_dci(frame_rx,
@@ -2982,18 +2977,18 @@ LOG_DEBUG_END
 
     else if ((ue->prach_resources[eNB_id]) &&
        (dci_alloc_rx[i].rnti == ue->prach_resources[eNB_id]->ra_RNTI) &&
-       (dci_alloc_rx[i].format == format1A)) {
+       ((dci_alloc_rx[i].format == format1A) || (dci_alloc_rx[i].format == format1C))) {
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-      LOG_D(PHY,"[UE  %d][RAPROC] subframe %d: Found RA rnti %x, format 1A, dci_cnt %d\n",ue->Mod_id,subframe_rx,dci_alloc_rx[i].rnti,i);
-LOG_DEBUG_END
+      if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+        LOG_D(PHY,"[UE  %d][RAPROC] subframe %d: Found RA rnti %x, format 1%s, dci_cnt %d\n",ue->Mod_id,subframe_rx,dci_alloc_rx[i].rnti,dci_alloc_rx[i].format==format1A?"A":"C",i);
+      }
 
 
       if (generate_ue_dlsch_params_from_dci(frame_rx,
 					    subframe_rx,
-					    (DCI1A_5MHz_TDD_1_6_t *)&dci_alloc_rx[i].dci_pdu,
+					    (void *)&dci_alloc_rx[i].dci_pdu,
 					    ue->prach_resources[eNB_id]->ra_RNTI,
-					    format1A,
+					    dci_alloc_rx[i].format,
 					    ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id],
 					    ue->pdsch_vars_ra[eNB_id],
 					    &ue->dlsch_ra[eNB_id],
@@ -3005,20 +3000,20 @@ LOG_DEBUG_END
 					    ue->transmission_mode[eNB_id]<7?0:ue->transmission_mode[eNB_id],
                                             0)==0) {
 	
-  ue->dlsch_ra_received[eNB_id]++;
+         ue->dlsch_ra_received[eNB_id]++;
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-  LOG_D(PHY,"[UE  %d] Generate UE DLSCH RA_RNTI format 1A, rb_alloc %x, dlsch_ra[eNB_id] %p\n",
-        ue->Mod_id,ue->dlsch_ra[eNB_id]->harq_processes[0]->rb_alloc_even[0],ue->dlsch_ra[eNB_id]);
-LOG_DEBUG_END
+         if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+           LOG_D(PHY,"[UE  %d] Generate UE DLSCH RA_RNTI format 1A, rb_alloc %x, dlsch_ra[eNB_id] %p\n",
+                  ue->Mod_id,ue->dlsch_ra[eNB_id]->harq_processes[0]->rb_alloc_even[0],ue->dlsch_ra[eNB_id]);
+         }
       }
     } else if( (dci_alloc_rx[i].rnti == ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id]->crnti) &&
 	       (dci_alloc_rx[i].format == format0)) {
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-      LOG_D(PHY,"[UE  %d][PUSCH] Frame %d subframe %d: Found rnti %x, format 0, dci_cnt %d\n",
-      ue->Mod_id,frame_rx,subframe_rx,dci_alloc_rx[i].rnti,i);
-LOG_DEBUG_END
+      if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+        LOG_D(PHY,"[UE  %d][PUSCH] Frame %d subframe %d: Found rnti %x, format 0, dci_cnt %d\n",
+              ue->Mod_id,frame_rx,subframe_rx,dci_alloc_rx[i].rnti,i);
+      }
 
       ue->ulsch_no_allocation_counter[eNB_id] = 0;
       //dump_dci(&ue->frame_parms,&dci_alloc_rx[i]);
@@ -3036,42 +3031,41 @@ LOG_DEBUG_END
 					     CBA_RNTI,
 					     eNB_id,
 					     0)==0)) {
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
+         if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
    
-    LOG_USEDINLOG_VAR(int8_t,harq_pid) = subframe2harq_pid(&ue->frame_parms,
-                              pdcch_alloc2ul_frame(&ue->frame_parms,proc->frame_rx,proc->subframe_rx),
-                              pdcch_alloc2ul_subframe(&ue->frame_parms,proc->subframe_rx));
-    T(T_UE_PHY_ULSCH_UE_DCI, T_INT(eNB_id), T_INT(proc->frame_rx%1024), T_INT(proc->subframe_rx),
-      T_INT(dci_alloc_rx[i].rnti), 
-      T_INT(harq_pid),
-      T_INT(ue->ulsch[eNB_id]->harq_processes[harq_pid]->mcs),
-      T_INT(ue->ulsch[eNB_id]->harq_processes[harq_pid]->round),
-      T_INT(ue->ulsch[eNB_id]->harq_processes[harq_pid]->first_rb),
-      T_INT(ue->ulsch[eNB_id]->harq_processes[harq_pid]->nb_rb),
-      T_INT(ue->ulsch[eNB_id]->harq_processes[harq_pid]->TBS));
-
-      LOG_D(PHY,"[UE  %d] Generate UE ULSCH C_RNTI format 0 (subframe %d)\n",ue->Mod_id,subframe_rx);
-LOG_DEBUG_END
-
+             LOG_USEDINLOG_VAR(int8_t,harq_pid) = subframe2harq_pid(&ue->frame_parms,
+                                       pdcch_alloc2ul_frame(&ue->frame_parms,proc->frame_rx,proc->subframe_rx),
+                                       pdcch_alloc2ul_subframe(&ue->frame_parms,proc->subframe_rx));
+             T(T_UE_PHY_ULSCH_UE_DCI, T_INT(eNB_id), T_INT(proc->frame_rx%1024), T_INT(proc->subframe_rx),
+               T_INT(dci_alloc_rx[i].rnti), 
+               T_INT(harq_pid),
+               T_INT(ue->ulsch[eNB_id]->harq_processes[harq_pid]->mcs),
+               T_INT(ue->ulsch[eNB_id]->harq_processes[harq_pid]->round),
+               T_INT(ue->ulsch[eNB_id]->harq_processes[harq_pid]->first_rb),
+               T_INT(ue->ulsch[eNB_id]->harq_processes[harq_pid]->nb_rb),
+               T_INT(ue->ulsch[eNB_id]->harq_processes[harq_pid]->TBS));
+
+             LOG_D(PHY,"[UE  %d] Generate UE ULSCH C_RNTI format 0 (subframe %d)\n",ue->Mod_id,subframe_rx);
+         }
       }
     } else if( (dci_alloc_rx[i].rnti == ue->ulsch[eNB_id]->cba_rnti[0]) &&
          (dci_alloc_rx[i].format == format0)) {
       // UE could belong to more than one CBA group
       // ue->Mod_id%ue->ulsch[eNB_id]->num_active_cba_groups]
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-      LOG_D(PHY,"[UE  %d][PUSCH] Frame %d subframe %d: Found cba rnti %x, format 0, dci_cnt %d\n",
-      ue->Mod_id,frame_rx,subframe_rx,dci_alloc_rx[i].rnti,i);
+      if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+        LOG_D(PHY,"[UE  %d][PUSCH] Frame %d subframe %d: Found cba rnti %x, format 0, dci_cnt %d\n",
+                   ue->Mod_id,frame_rx,subframe_rx,dci_alloc_rx[i].rnti,i);
       /*
   if (((frame_rx%100) == 0) || (frame_rx < 20))
   dump_dci(&ue->frame_parms, &dci_alloc_rx[i]);
       */
-LOG_DEBUG_END
+      }
 
       ue->ulsch_no_allocation_counter[eNB_id] = 0;
       //dump_dci(&ue->frame_parms,&dci_alloc_rx[i]);
 
       if ((ue->UE_mode[eNB_id] > PRACH) &&
-    (generate_ue_ulsch_params_from_dci((void *)&dci_alloc_rx[i].dci_pdu,
+          (generate_ue_ulsch_params_from_dci((void *)&dci_alloc_rx[i].dci_pdu,
                ue->ulsch[eNB_id]->cba_rnti[0],
                subframe_rx,
                format0,
@@ -3084,28 +3078,28 @@ LOG_DEBUG_END
                eNB_id,
                0)==0)) {
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-  LOG_D(PHY,"[UE  %d] Generate UE ULSCH CBA_RNTI format 0 (subframe %d)\n",ue->Mod_id,subframe_rx);
-LOG_DEBUG_END
-  ue->ulsch[eNB_id]->num_cba_dci[(subframe_rx+4)%10]++;
+        if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+          LOG_D(PHY,"[UE  %d] Generate UE ULSCH CBA_RNTI format 0 (subframe %d)\n",ue->Mod_id,subframe_rx);
+        }
+        ue->ulsch[eNB_id]->num_cba_dci[(subframe_rx+4)%10]++;
       }
     }
 
     else {
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-      LOG_D(PHY,"[UE  %d] frame %d, subframe %d: received DCI %d with RNTI=%x (C-RNTI:%x, CBA_RNTI %x) and format %d!\n",ue->Mod_id,frame_rx,subframe_rx,i,dci_alloc_rx[i].rnti,
-	    ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id]->crnti,
-	    ue->ulsch[eNB_id]->cba_rnti[0],
+      if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+        LOG_D(PHY,"[UE  %d] frame %d, subframe %d: received DCI %d with RNTI=%x (C-RNTI:%x, CBA_RNTI %x) and format %d!\n",ue->Mod_id,frame_rx,subframe_rx,i,dci_alloc_rx[i].rnti,
+	      ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id]->crnti,
+	      ue->ulsch[eNB_id]->cba_rnti[0],
 	    dci_alloc_rx[i].format);
 
       //      dump_dci(&ue->frame_parms, &dci_alloc_rx[i]);
-LOG_DEBUG_END
+      }
     }
 
   }
-LOG_DEBUG_BEGIN(UE_TIMING)
-  stop_meas(&ue->dlsch_rx_pdcch_stats);
-LOG_DEBUG_END
+  if (LOG_DEBUGFLAG(UE_TIMING)) {
+      stop_meas(&ue->dlsch_rx_pdcch_stats);
+  }
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PDCCH_PROCEDURES, VCD_FUNCTION_OUT);
   return(0);
 }
@@ -3128,7 +3122,7 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,int eNB_id,int abs
     // LOG_D(PHY,"ue calling pmch subframe ..\n ");
 
     LOG_D(PHY,"[UE %d] Frame %d, subframe %d: Querying for PMCH demodulation\n",
-    ue->Mod_id,(subframe_rx==9?-1:0)+frame_rx,subframe_rx);
+    ue->Mod_id,frame_rx,subframe_rx);
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
 
     pmch_mcs = ue_query_mch(ue->Mod_id,
@@ -3147,9 +3141,7 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,int eNB_id,int abs
       LOG_D(PHY,"[UE %d] Frame %d, subframe %d: Programming PMCH demodulation for mcs %d\n",ue->Mod_id,frame_rx,subframe_rx,pmch_mcs);
       fill_UE_dlsch_MCH(ue,pmch_mcs,1,0,0);
 
-      
       for (l=2; l<12; l++) {
-	
 	slot_fep_mbsfn(ue,
 		       l,
 		       subframe_rx,
@@ -3164,6 +3156,8 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,int eNB_id,int abs
       }
       
       
+      ue->dlsch_MCH[0]->harq_processes[0]->Qm = get_Qm(pmch_mcs);
+
       ue->dlsch_MCH[0]->harq_processes[0]->G = get_G(&ue->frame_parms,
 						     ue->dlsch_MCH[0]->harq_processes[0]->nb_rb,
 						     ue->dlsch_MCH[0]->harq_processes[0]->rb_alloc_even,
@@ -3177,7 +3171,14 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,int eNB_id,int abs
       dlsch_unscrambling(&ue->frame_parms,1,ue->dlsch_MCH[0],
 			 ue->dlsch_MCH[0]->harq_processes[0]->G,
 			 ue->pdsch_vars_MCH[0]->llr[0],0,subframe_rx<<1);
-      
+
+      LOG_D(PHY,"start turbo decode for MCH %d.%d --> nb_rb %d \n", frame_rx, subframe_rx, ue->dlsch_MCH[0]->harq_processes[0]->nb_rb);
+      LOG_D(PHY,"start turbo decode for MCH %d.%d --> rb_alloc_even %x \n", frame_rx, subframe_rx, (unsigned int)((intptr_t)ue->dlsch_MCH[0]->harq_processes[0]->rb_alloc_even));
+      LOG_D(PHY,"start turbo decode for MCH %d.%d --> Qm %d \n", frame_rx, subframe_rx, ue->dlsch_MCH[0]->harq_processes[0]->Qm);
+      LOG_D(PHY,"start turbo decode for MCH %d.%d --> Nl %d \n", frame_rx, subframe_rx, ue->dlsch_MCH[0]->harq_processes[0]->Nl);
+      LOG_D(PHY,"start turbo decode for MCH %d.%d --> G  %d \n", frame_rx, subframe_rx, ue->dlsch_MCH[0]->harq_processes[0]->G);
+      LOG_D(PHY,"start turbo decode for MCH %d.%d --> Kmimo  %d \n", frame_rx, subframe_rx, ue->dlsch_MCH[0]->Kmimo);
+
       ret = dlsch_decoding(ue,
 			   ue->pdsch_vars_MCH[0]->llr[0],
 			   &ue->frame_parms,
@@ -3206,15 +3207,16 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,int eNB_id,int abs
 	      ue->dlsch_MCH[0]->harq_processes[0]->TBS>>3,
 	      ue->dlsch_MCH[0]->max_turbo_iterations,
 	      ue->dlsch_MCH[0]->harq_processes[0]->G);
-	dump_mch(ue,0,ue->dlsch_MCH[0]->harq_processes[0]->G,subframe_rx);
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
+	// dump_mch(ue,0,ue->dlsch_MCH[0]->harq_processes[0]->G,subframe_rx);
+
+        if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
 	
-	for (int i=0; i<ue->dlsch_MCH[0]->harq_processes[0]->TBS>>3; i++) {
-	  LOG_T(PHY,"%02x.",ue->dlsch_MCH[0]->harq_processes[0]->c[0][i]);
-	}
+          for (int i=0; i<ue->dlsch_MCH[0]->harq_processes[0]->TBS>>3; i++) {
+	       LOG_T(PHY,"%02x.",ue->dlsch_MCH[0]->harq_processes[0]->c[0][i]);
+	  }
 	
-	LOG_T(PHY,"\n");
-LOG_DEBUG_END
+	  LOG_T(PHY,"\n");
+        }
 	
 	
 	//	if (subframe_rx==9)
@@ -3222,25 +3224,24 @@ LOG_DEBUG_END
       } else { // decoding successful
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
 	
-	if (mcch_active == 1) {
-	  ue_send_mch_sdu(ue->Mod_id,
-			  CC_id,
-			  frame_rx,
-			  ue->dlsch_MCH[0]->harq_processes[0]->b,
-			  ue->dlsch_MCH[0]->harq_processes[0]->TBS>>3,
-			  eNB_id,// not relevant in eMBMS context
-			  sync_area);
+	ue_send_mch_sdu(ue->Mod_id,
+			CC_id,
+			frame_rx,
+			ue->dlsch_MCH[0]->harq_processes[0]->b,
+			ue->dlsch_MCH[0]->harq_processes[0]->TBS>>3,
+			eNB_id,// not relevant in eMBMS context
+			sync_area);
+
+	if (mcch_active == 1)
 	  ue->dlsch_mcch_received[sync_area][0]++;
-	  
-	  
-	  if (ue->dlsch_mch_received_sf[subframe_rx%5][0] == 1 ) {
-	    ue->dlsch_mch_received_sf[subframe_rx%5][0]=0;
-	  } else {
-	    ue->dlsch_mch_received[0]+=1;
-	    ue->dlsch_mch_received_sf[subframe_rx][0]=1;
-	  }
-	  
-	  
+	else
+	  ue->dlsch_mtch_received[sync_area][0]++;
+
+	if (ue->dlsch_mch_received_sf[subframe_rx%5][0] == 1 ) {
+	  ue->dlsch_mch_received_sf[subframe_rx%5][0]=0;
+	} else {
+	  ue->dlsch_mch_received[0]+=1;
+	  ue->dlsch_mch_received_sf[subframe_rx][0]=1;
 	}
 
 #endif // #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
@@ -3345,12 +3346,12 @@ void ue_pdsch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc, int eNB_id, PDSC
       else
           first_symbol_flag = 0;
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-      uint8_t slot = 0;
-      if(m >= ue->frame_parms.symbols_per_tti>>1)
+      if (LOG_DEBUGFLAG(UE_TIMING)) {
+        uint8_t slot = 0;
+        if(m >= ue->frame_parms.symbols_per_tti>>1)
         slot = 1;
-      start_meas(&ue->dlsch_llr_stats_parallelization[ue->current_thread_id[subframe_rx]][slot]);
-LOG_DEBUG_END
+        start_meas(&ue->dlsch_llr_stats_parallelization[ue->current_thread_id[subframe_rx]][slot]);
+      }
       // process DLSCH received in first slot
       rx_pdsch(ue,
 	       pdsch,
@@ -3363,13 +3364,13 @@ LOG_DEBUG_END
 	       dual_stream_UE,
 	       i_mod,
 	       dlsch0->current_harq_pid);
-LOG_DEBUG_BEGIN(UE_TIMING)
-      uint8_t slot = 0;
-      if(m >= ue->frame_parms.symbols_per_tti>>1)
-        slot = 1;
-      stop_meas(&ue->dlsch_llr_stats_parallelization[ue->current_thread_id[subframe_rx]][slot]);
-      LOG_UI(PHY, "[AbsSFN %d.%d] LLR Computation Symbol %d %5.2f \n",proc->frame_rx,subframe_rx,m,ue->dlsch_llr_stats_parallelization[ue->current_thread_id[subframe_rx]][slot].p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+      if (LOG_DEBUGFLAG(UE_TIMING)) {
+  	uint8_t slot = 0;
+  	if(m >= ue->frame_parms.symbols_per_tti>>1)
+  	  slot = 1;
+  	stop_meas(&ue->dlsch_llr_stats_parallelization[ue->current_thread_id[subframe_rx]][slot]);
+  	LOG_UI(PHY, "[AbsSFN %d.%d] LLR Computation Symbol %d %5.2f \n",proc->frame_rx,subframe_rx,m,ue->dlsch_llr_stats_parallelization[ue->current_thread_id[subframe_rx]][slot].p_time/(cpuf*1000.0));
+      }
 
 
 
@@ -3564,9 +3565,9 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
 						  frame_rx,
 						  subframe_rx,
 						  ue->transmission_mode[eNB_id]<7?0:ue->transmission_mode[eNB_id]);
-LOG_DEBUG_BEGIN(UE_TIMING)
-      start_meas(&ue->dlsch_unscrambling_stats);
-LOG_DEBUG_END
+      if (LOG_DEBUGFLAG(UE_TIMING)) {
+        start_meas(&ue->dlsch_unscrambling_stats);
+      }
       dlsch_unscrambling(&ue->frame_parms,
 			 0,
 			 dlsch0,
@@ -3574,9 +3575,9 @@ LOG_DEBUG_END
 			 pdsch_vars->llr[0],
 			 0,
 			 subframe_rx<<1);
-LOG_DEBUG_BEGIN(UE_TIMING)
-      stop_meas(&ue->dlsch_unscrambling_stats);
-LOG_DEBUG_END
+      if (LOG_DEBUGFLAG(UE_TIMING)) {
+        stop_meas(&ue->dlsch_unscrambling_stats);
+      }
       
       LOG_D(PHY," ------ start turbo decoder for AbsSubframe %d.%d / %d  ------  \n", frame_rx, subframe_rx, harq_pid);
       LOG_D(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d --> nb_rb %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->harq_processes[harq_pid]->nb_rb);
@@ -3587,9 +3588,9 @@ LOG_DEBUG_END
       LOG_D(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> Kmimo  %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->Kmimo);
       LOG_D(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> Pdcch Sym  %d \n", frame_rx, subframe_rx, harq_pid, ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id]->num_pdcch_symbols);
       
-LOG_DEBUG_BEGIN(UE_TIMING)
-      start_meas(&ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]]);
-LOG_DEBUG_END
+      if (LOG_DEBUGFLAG(UE_TIMING)) {
+        start_meas(&ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]]);
+      }
       ret = dlsch_decoding(ue,
 			   pdsch_vars->llr[0],
 			   &ue->frame_parms,
@@ -3601,14 +3602,14 @@ LOG_DEBUG_END
 			   pdsch==PDSCH?1:0,
 			   dlsch0->harq_processes[harq_pid]->TBS>256?1:0);
       
-LOG_DEBUG_BEGIN(UE_TIMING)
-      stop_meas(&ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]]);
-      LOG_UI(PHY, " --> Unscrambling for CW0 %5.3f\n",
-	    (ue->dlsch_unscrambling_stats.p_time)/(cpuf*1000.0));
-      LOG_UI(PHY, "AbsSubframe %d.%d --> Turbo Decoding for CW0 %5.3f\n",
-	    frame_rx%1024, subframe_rx,(ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]].p_time)/(cpuf*1000.0));
+      if (LOG_DEBUGFLAG(UE_TIMING)) {
+        stop_meas(&ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]]);
+        LOG_UI(PHY, " --> Unscrambling for CW0 %5.3f\n",
+	      (ue->dlsch_unscrambling_stats.p_time)/(cpuf*1000.0));
+        LOG_UI(PHY, "AbsSubframe %d.%d --> Turbo Decoding for CW0 %5.3f\n",
+	      frame_rx%1024, subframe_rx,(ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]].p_time)/(cpuf*1000.0));
       
-LOG_DEBUG_END
+      }
       if(is_cw1_active)
 	{
           // start turbo decode for CW 1
@@ -3621,9 +3622,9 @@ LOG_DEBUG_END
 						      frame_rx,
 						      subframe_rx,
 						      ue->transmission_mode[eNB_id]<7?0:ue->transmission_mode[eNB_id]);
-LOG_DEBUG_BEGIN(UE_TIMING)
-          start_meas(&ue->dlsch_unscrambling_stats);
-LOG_DEBUG_END
+          if (LOG_DEBUGFLAG(UE_TIMING)) {
+            start_meas(&ue->dlsch_unscrambling_stats);
+          }
           dlsch_unscrambling(&ue->frame_parms,
 			     0,
 			     dlsch1,
@@ -3631,9 +3632,9 @@ LOG_DEBUG_END
 			     pdsch_vars->llr[1],
 			     1,
 			     subframe_rx<<1);
-LOG_DEBUG_BEGIN(UE_TIMING)
-          stop_meas(&ue->dlsch_unscrambling_stats);
-LOG_DEBUG_END
+          if (LOG_DEBUGFLAG(UE_TIMING)) {
+            stop_meas(&ue->dlsch_unscrambling_stats);
+          }
 	  
           LOG_D(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d --> nb_rb %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->harq_processes[harq_pid]->nb_rb);
           LOG_D(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> rb_alloc_even %x \n", frame_rx, subframe_rx, harq_pid, (uint16_t)((intptr_t)dlsch1->harq_processes[harq_pid]->rb_alloc_even));
@@ -3643,9 +3644,9 @@ LOG_DEBUG_END
           LOG_D(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> Kmimo  %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->Kmimo);
           LOG_D(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> Pdcch Sym  %d \n", frame_rx, subframe_rx, harq_pid, ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id]->num_pdcch_symbols);
 	  
-LOG_DEBUG_BEGIN(UE_TIMING)
-          start_meas(&ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]]);
-LOG_DEBUG_END
+          if (LOG_DEBUGFLAG(UE_TIMING)) {
+            start_meas(&ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]]);
+          }
 	  
           ret1 = dlsch_decoding(ue,
 				pdsch_vars->llr[1],
@@ -3658,13 +3659,13 @@ LOG_DEBUG_END
 				pdsch==PDSCH?1:0,
 				dlsch1->harq_processes[harq_pid]->TBS>256?1:0);
 	  
-LOG_DEBUG_BEGIN(UE_TIMING)
-          stop_meas(&ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]]);
-          LOG_UI(PHY, " --> Unscrambling for CW1 %5.3f\n",
-		(ue->dlsch_unscrambling_stats.p_time)/(cpuf*1000.0));
-          LOG_UI(PHY, "AbsSubframe %d.%d --> Turbo Decoding for CW1 %5.3f\n",
-		frame_rx%1024, subframe_rx,(ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]].p_time)/(cpuf*1000.0));
-LOG_DEBUG_END
+          if (LOG_DEBUGFLAG(UE_TIMING)) {
+            stop_meas(&ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]]);
+            LOG_UI(PHY, " --> Unscrambling for CW1 %5.3f\n",
+		  (ue->dlsch_unscrambling_stats.p_time)/(cpuf*1000.0));
+            LOG_UI(PHY, "AbsSubframe %d.%d --> Turbo Decoding for CW1 %5.3f\n",
+		  frame_rx%1024, subframe_rx,(ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]].p_time)/(cpuf*1000.0));
+          }
 
           LOG_D(PHY,"AbsSubframe %d.%d --> Turbo Decoding for CW1 %5.3f\n",
 		frame_rx%1024, subframe_rx,(ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]].p_time)/(cpuf*1000.0));
@@ -3703,15 +3704,15 @@ LOG_DEBUG_END
             dlsch0->harq_processes[harq_pid]->TBS);
         }
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-      int j;
-      LOG_D(PHY,"dlsch harq_pid %d (rx): \n",dlsch0->current_harq_pid);
+      if ( LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)){
+        int j;
+        LOG_D(PHY,"dlsch harq_pid %d (rx): \n",dlsch0->current_harq_pid);
 
-      for (j=0; j<dlsch0->harq_processes[dlsch0->current_harq_pid]->TBS>>3; j++)
-  LOG_T(PHY,"%x.",dlsch0->harq_processes[dlsch0->current_harq_pid]->b[j]);
+        for (j=0; j<dlsch0->harq_processes[dlsch0->current_harq_pid]->TBS>>3; j++)
+            LOG_T(PHY,"%x.",dlsch0->harq_processes[dlsch0->current_harq_pid]->b[j]);
 
-      LOG_T(PHY,"\n");
-LOG_DEBUG_END
+        LOG_T(PHY,"\n");
+      }
 
 
       if (ue->mac_enabled == 1) {
@@ -3804,26 +3805,26 @@ LOG_DEBUG_END
         }
       }
     
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-    LOG_D(PHY,"[UE  %d][PDSCH %x/%d] Frame %d subframe %d: PDSCH/DLSCH decoding iter %d (mcs %d, rv %d, TBS %d)\n",
-	  ue->Mod_id,
-	  dlsch0->rnti,harq_pid,
-	  frame_rx,subframe_rx,ret,
-	  dlsch0->harq_processes[harq_pid]->mcs,
-	  dlsch0->harq_processes[harq_pid]->rvidx,
-	  dlsch0->harq_processes[harq_pid]->TBS);
-    
-    if (frame_rx%100==0) {
-      LOG_D(PHY,"[UE  %d][PDSCH %x] Frame %d subframe %d dlsch_errors %d, dlsch_received %d, dlsch_fer %d, current_dlsch_cqi %d\n",
-	    ue->Mod_id,dlsch0->rnti,
-	    frame_rx,subframe_rx,
-	    ue->dlsch_errors[eNB_id],
-	    ue->dlsch_received[eNB_id],
-	    ue->dlsch_fer[eNB_id],
-	    ue->measurements.wideband_cqi_tot[eNB_id]);
-    }
+    if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+      LOG_D(PHY,"[UE  %d][PDSCH %x/%d] Frame %d subframe %d: PDSCH/DLSCH decoding iter %d (mcs %d, rv %d, TBS %d)\n",
+  	    ue->Mod_id,
+  	    dlsch0->rnti,harq_pid,
+  	    frame_rx,subframe_rx,ret,
+  	    dlsch0->harq_processes[harq_pid]->mcs,
+  	    dlsch0->harq_processes[harq_pid]->rvidx,
+  	    dlsch0->harq_processes[harq_pid]->TBS);
+      
+      if (frame_rx%100==0) {
+  	LOG_D(PHY,"[UE  %d][PDSCH %x] Frame %d subframe %d dlsch_errors %d, dlsch_received %d, dlsch_fer %d, current_dlsch_cqi %d\n",
+  	      ue->Mod_id,dlsch0->rnti,
+  	      frame_rx,subframe_rx,
+  	      ue->dlsch_errors[eNB_id],
+  	      ue->dlsch_received[eNB_id],
+  	      ue->dlsch_fer[eNB_id],
+  	      ue->measurements.wideband_cqi_tot[eNB_id]);
+      }
     
-LOG_DEBUG_END
+    } /*LOG_DEBUGFLAG(DEBUG_UE_PHYPROC) */
     
   }
   
@@ -3909,9 +3910,9 @@ void *UE_thread_slot1_dl_processing(void *arg) {
         }
 
         /**** Slot1 FE Processing ****/
-LOG_DEBUG_BEGIN(UE_TIMING)
-        start_meas(&ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][1]);
-LOG_DEBUG_END
+        if (LOG_DEBUGFLAG(UE_TIMING)) {
+          start_meas(&ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][1]);
+        }
         // I- start dl slot1 processing
         // do first symbol of next downlink subframe for channel estimation
         /*
@@ -3936,9 +3937,9 @@ LOG_DEBUG_END
         {
             //if( (l != pilot0) && (l != pilot1))
             {
-LOG_DEBUG_BEGIN(UE_TIMING)
+            if (LOG_DEBUGFLAG(UE_TIMING)) {
                 start_meas(&ue->ofdm_demod_stats);
-LOG_DEBUG_END
+            }
                 VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
                 //printf("AbsSubframe %d.%d FFT slot %d, symbol %d\n", frame_rx,subframe_rx,slot1,l);
                 front_end_fft(ue,
@@ -3947,9 +3948,9 @@ LOG_DEBUG_END
                         0,
                         0);
                 VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
-LOG_DEBUG_BEGIN(UE_TIMING)
-                stop_meas(&ue->ofdm_demod_stats);
-LOG_DEBUG_END
+                if (LOG_DEBUGFLAG(UE_TIMING)) {
+                  stop_meas(&ue->ofdm_demod_stats);
+                }
             }
         } // for l=1..l2
 
@@ -4002,11 +4003,10 @@ LOG_DEBUG_END
         //printf(" [slot1 dl processing] ==> Start LLR Comuptation slot1 for AbsSubframe %d.%d \n", proc->frame_rx, proc->subframe_rx);
 
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-        stop_meas(&ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][1]);
-        LOG_UI(PHY, "[AbsSFN %d.%d] Slot1: FFT + Channel Estimate + Pdsch Proc Slot0 %5.2f \n",frame_rx,subframe_rx,ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][1].p_time/(cpuf*1000.0));
-
-LOG_DEBUG_END
+        if ( LOG_DEBUGFLAG(UE_TIMING)) {
+          stop_meas(&ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][1]);
+          LOG_UI(PHY, "[AbsSFN %d.%d] Slot1: FFT + Channel Estimate + Pdsch Proc Slot0 %5.2f \n",frame_rx,subframe_rx,ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][1].p_time/(cpuf*1000.0));
+        }
 
 
     //wait until pdcch is decoded
@@ -4025,9 +4025,9 @@ LOG_DEBUG_END
     //printf("AbsSubframe %d.%d Pdsch Procedure (slot1)\n",frame_rx,subframe_rx);
 
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-    start_meas(&ue->pdsch_procedures_per_slot_stat[ue->current_thread_id[subframe_rx]][1]);
-LOG_DEBUG_END
+    if ( LOG_DEBUGFLAG(UE_TIMING)) {
+      start_meas(&ue->pdsch_procedures_per_slot_stat[ue->current_thread_id[subframe_rx]][1]);
+    }
     // start slave thread for Pdsch Procedure (slot1)
     // do procedures for C-RNTI
     uint8_t eNB_id = 0;
@@ -4097,10 +4097,10 @@ LOG_DEBUG_END
     proc->llr_slot1_available=1;
     //printf("Set available LLR slot1 to 1 AbsSubframe %d.%d \n",frame_rx,subframe_rx);
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-    stop_meas(&ue->pdsch_procedures_per_slot_stat[ue->current_thread_id[subframe_rx]][1]);
-    LOG_UI(PHY, "[AbsSFN %d.%d] Slot1: LLR Computation %5.2f \n",frame_rx,subframe_rx,ue->pdsch_procedures_per_slot_stat[ue->current_thread_id[subframe_rx]][1].p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+    if ( LOG_DEBUGFLAG(UE_TIMING)) {
+      stop_meas(&ue->pdsch_procedures_per_slot_stat[ue->current_thread_id[subframe_rx]][1]);
+      LOG_UI(PHY, "[AbsSFN %d.%d] Slot1: LLR Computation %5.2f \n",frame_rx,subframe_rx,ue->pdsch_procedures_per_slot_stat[ue->current_thread_id[subframe_rx]][1].p_time/(cpuf*1000.0));
+    }
 
 
         if (pthread_mutex_lock(&proc->mutex_slot1_dl_processing) != 0) {
@@ -4144,14 +4144,14 @@ int phy_procedures_slot_parallelization_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *pr
 
 
     // start timers
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-    LOG_D(PHY," ****** start RX-Chain for AbsSubframe %d.%d ******  \n", frame_rx%1024, subframe_rx);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+      LOG_D(PHY," ****** start RX-Chain for AbsSubframe %d.%d ******  \n", frame_rx%1024, subframe_rx);
+    }
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-    start_meas(&ue->phy_proc_rx[ue->current_thread_id[subframe_rx]]);
-    start_meas(&ue->ue_front_end_stat[ue->current_thread_id[subframe_rx]]);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)) {
+      start_meas(&ue->phy_proc_rx[ue->current_thread_id[subframe_rx]]);
+      start_meas(&ue->ue_front_end_stat[ue->current_thread_id[subframe_rx]]);
+    }
 
     pmch_flag = is_pmch_subframe(frame_rx,subframe_rx,&ue->frame_parms) ? 1 : 0;
 
@@ -4170,16 +4170,16 @@ LOG_DEBUG_END
             ue->dlsch_ra[eNB_id]->active = 0;
     }
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-    LOG_D(PHY,"[UE %d] Frame %d subframe %d: Doing phy_procedures_UE_RX\n",
-                    ue->Mod_id,frame_rx, subframe_rx);
-LOG_DEBUG_END
+    if ( LOG_DEBUG_FLAG(DEBUG_UE_PHYPROC)) {
+      LOG_D(PHY,"[UE %d] Frame %d subframe %d: Doing phy_procedures_UE_RX\n",
+                      ue->Mod_id,frame_rx, subframe_rx);
+    }
 
 
 
 
     if (subframe_select(&ue->frame_parms,subframe_rx) == SF_S) { // S-subframe, do first 5 symbols only
-        l2 = 5;
+        l2 = 4;
     } else if (pmch_flag == 1) { // do first 2 symbols only
         l2 = 1;
     } else { // normal subframe, last symbol to be processed is the first of the second slot
@@ -4247,9 +4247,9 @@ LOG_DEBUG_END
 
     /**** Slot0 FE Processing ****/
     // I- start main thread for FFT/ChanEst symbol: 0/1 --> 7
-LOG_DEBUG_BEGIN(UE_TIMING)
-    start_meas(&ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][0]);
-LOG_DEBUG_END
+    if ( LOG_DEBUGFLAG(UE_TIMING)) {
+      start_meas(&ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][0]);
+    }
     // 1- perform FFT for pilot ofdm symbols first (ofdmSym7 ofdmSym4 or (ofdmSym6 ofdmSym3))
     //printf("AbsSubframe %d.%d FFT slot %d, symbol %d\n", frame_rx,subframe_rx,slot1,pilot0);
     front_end_fft(ue,
@@ -4282,9 +4282,9 @@ LOG_DEBUG_END
         if( (l != pilot0) && (l != pilot1))
         {
             //printf("AbsSubframe %d.%d FFT slot %d, symbol %d\n", frame_rx,subframe_rx,slot0,l);
-LOG_DEBUG_BEGIN(UE_TIMING)
-            start_meas(&ue->ofdm_demod_stats);
-LOG_DEBUG_END
+            if (LOG_DEBUGFLAG(UE_TIMING)) {
+              start_meas(&ue->ofdm_demod_stats);
+            }
             VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
             front_end_fft(ue,
                     l,
@@ -4292,9 +4292,9 @@ LOG_DEBUG_END
                     0,
                     0);
             VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
-LOG_DEBUG_BEGIN(UE_TIMING)
-            stop_meas(&ue->ofdm_demod_stats);
-LOG_DEBUG_END
+            if (LOG_DEBUGFLAG(UE_TIMING)) {
+              stop_meas(&ue->ofdm_demod_stats);
+            }
         }
     } // for l=1..l2
 
@@ -4313,32 +4313,32 @@ LOG_DEBUG_END
     }
 
     if (do_pdcch_flag) {
-LOG_DEBUG_BEGIN(UE_TIMING)
-        start_meas(&ue->pdcch_procedures_stat[ue->current_thread_id[subframe_rx]]);
-LOG_DEBUG_END
+        if (LOG_DEBUGFLAG(UE_TIMING)) {
+          start_meas(&ue->pdcch_procedures_stat[ue->current_thread_id[subframe_rx]]);
+        }
         if (ue_pdcch_procedures(eNB_id,ue,proc,abstraction_flag) == -1) {
             LOG_E(PHY,"[UE  %d] Frame %d, subframe %d: Error in pdcch procedures\n",ue->Mod_id,frame_rx,subframe_rx);
-LOG_DEBUG_BEGIN(UE_TIMING)
+          if (LOG_DEBUGFLAG(UE_TIMING)) {
             LOG_UI(PHY, "[AbsSFN %d.%d] Slot0: PDCCH %5.2f \n",frame_rx,subframe_rx,ue->pdcch_procedures_stat[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+        }
 
             //proc->dci_slot0_available = 1;
             return(-1);
         }
         //proc->dci_slot0_available=1;
-LOG_DEBUG_BEGIN(UE_TIMING)
-        stop_meas(&ue->pdcch_procedures_stat[ue->current_thread_id[subframe_rx]]);
-        LOG_UI(PHY, "[AbsSFN %d.%d] Slot0: PDCCH %5.2f \n",frame_rx,subframe_rx,ue->pdcch_procedures_stat[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+        if (LOG_DEBUGFLAG(UE_TIMING)) {
+          stop_meas(&ue->pdcch_procedures_stat[ue->current_thread_id[subframe_rx]]);
+          LOG_UI(PHY, "[AbsSFN %d.%d] Slot0: PDCCH %5.2f \n",frame_rx,subframe_rx,ue->pdcch_procedures_stat[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
+        }
     }
 
     //printf("num_pdcch_symbols %d\n",ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id]->num_pdcch_symbols);
 
     // first slot has been processed (FFTs + Channel Estimation, PCFICH/PHICH/PDCCH)
-LOG_DEBUG_BEGIN(UE_TIMING)
-    stop_meas(&ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][0]);
-    LOG_UI(PHY, "[AbsSFN %d.%d] Slot0: FFT + Channel Estimate + PCFICH/PHICH/PDCCH %5.2f \n",frame_rx,subframe_rx,ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][0].p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)) {
+      stop_meas(&ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][0]);
+      LOG_UI(PHY, "[AbsSFN %d.%d] Slot0: FFT + Channel Estimate + PCFICH/PHICH/PDCCH %5.2f \n",frame_rx,subframe_rx,ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][0].p_time/(cpuf*1000.0));
+    }
 
     //wait until slot1 FE is done
     uint32_t wait = 0;
@@ -4348,10 +4348,10 @@ LOG_DEBUG_END
         wait++;
     }
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-    stop_meas(&ue->ue_front_end_stat[ue->current_thread_id[subframe_rx]]);
-    LOG_UI(PHY, "[AbsSFN %d.%d] FULL FE Processing %5.2f \n",frame_rx,subframe_rx,ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][0].p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)) {
+      stop_meas(&ue->ue_front_end_stat[ue->current_thread_id[subframe_rx]]);
+      LOG_UI(PHY, "[AbsSFN %d.%d] FULL FE Processing %5.2f \n",frame_rx,subframe_rx,ue->ue_front_end_per_slot_stat[ue->current_thread_id[subframe_rx]][0].p_time/(cpuf*1000.0));
+    }
     /**** End Subframe FE Processing ****/
 
 
@@ -4365,13 +4365,13 @@ LOG_DEBUG_END
     //printf("AbsSubframe %d.%d Pdsch Procedure (slot0)\n",frame_rx%1024,subframe_rx);
     //printf("AbsSubframe %d.%d Pdsch Procedure PDSCH Active %d \n",frame_rx%1024,subframe_rx, ue->dlsch[ue->current_thread_id[subframe_rx]][0][0]->active);
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-    start_meas(&ue->pdsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)) {
+      start_meas(&ue->pdsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
+    }
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-    start_meas(&ue->pdsch_procedures_per_slot_stat[ue->current_thread_id[subframe_rx]][0]);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)) {
+      start_meas(&ue->pdsch_procedures_per_slot_stat[ue->current_thread_id[subframe_rx]][0]);
+    }
     if (ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->active == 1) {
         VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_IN);
         ue_pdsch_procedures(ue,
@@ -4437,10 +4437,10 @@ LOG_DEBUG_END
     //printf("Set available dci slot0 to 1 AbsSubframe %d.%d \n",frame_rx%1024,subframe_rx);
 
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-    stop_meas(&ue->pdsch_procedures_per_slot_stat[ue->current_thread_id[subframe_rx]][0]);
-    LOG_UI(PHY, "[AbsSFN %d.%d] Slot0: LLR Computation %5.2f \n",frame_rx,subframe_rx,ue->pdsch_procedures_per_slot_stat[ue->current_thread_id[subframe_rx]][0].p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)){
+      stop_meas(&ue->pdsch_procedures_per_slot_stat[ue->current_thread_id[subframe_rx]][0]);
+      LOG_UI(PHY, "[AbsSFN %d.%d] Slot0: LLR Computation %5.2f \n",frame_rx,subframe_rx,ue->pdsch_procedures_per_slot_stat[ue->current_thread_id[subframe_rx]][0].p_time/(cpuf*1000.0));
+    }
 
 
     //wait until LLR Slot1 is done
@@ -4453,16 +4453,16 @@ LOG_DEBUG_END
 
 
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-    stop_meas(&ue->pdsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
-    LOG_UI(PHY, "[AbsSFN %d.%d] Full LLR Computation %5.2f \n",frame_rx,subframe_rx,ue->pdsch_procedures_stat[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)){
+      stop_meas(&ue->pdsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
+      LOG_UI(PHY, "[AbsSFN %d.%d] Full LLR Computation %5.2f \n",frame_rx,subframe_rx,ue->pdsch_procedures_stat[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
+    }
 
 
     //=====================================================================//
-LOG_DEBUG_BEGIN(UE_TIMING)
-    start_meas(&ue->dlsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)){
+      start_meas(&ue->dlsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
+    }
 
     LOG_D(PHY,"==> Start Turbo Decoder active dlsch %d SI %d RA %d \n",ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->active,
     		ue->dlsch_SI[eNB_id]->active,
@@ -4524,10 +4524,10 @@ LOG_DEBUG_END
         ue->dlsch_ra[eNB_id]->active = 0;
     }
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-        stop_meas(&ue->dlsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
-        LOG_UI(PHY, "[AbsSFN %d.%d] Channel Decoder: %5.2f \n",frame_rx,subframe_rx,ue->dlsch_procedures_stat[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)
+      stop_meas(&ue->dlsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
+      LOG_UI(PHY, "[AbsSFN %d.%d] Channel Decoder: %5.2f \n",frame_rx,subframe_rx,ue->dlsch_procedures_stat[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
+    }
 
         // duplicate harq structure
         uint8_t          current_harq_pid        = ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->current_harq_pid;
@@ -4587,10 +4587,10 @@ LOG_DEBUG_END
 
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX, VCD_FUNCTION_OUT);
 
-LOG_DEBUG_BEGIN(UE_TIMING)
+    if (LOG_DEBUGFLAG(UE_TIMING)){
     stop_meas(&ue->phy_proc_rx[ue->current_thread_id[subframe_rx]]);
     LOG_UI(PHY, "------FULL RX PROC [AbsSFN %d.%d]: %5.2f ------\n",frame_rx,subframe_rx,ue->phy_proc_rx[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+    }
 
     LOG_D(PHY," ****** end RX-Chain  for AbsSubframe %d.%d ******  \n", frame_rx%1024, subframe_rx);
     return (0);
@@ -4626,14 +4626,14 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
 
 
   // start timers
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-  LOG_I(PHY," ****** start RX-Chain for AbsSubframe %d.%d ******  \n", frame_rx%1024, subframe_rx);
-LOG_DEBUG_END
+  if ( LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+    LOG_I(PHY," ****** start RX-Chain for AbsSubframe %d.%d ******  \n", frame_rx%1024, subframe_rx);
+  }
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-  start_meas(&ue->phy_proc_rx[ue->current_thread_id[subframe_rx]]);
-  start_meas(&ue->generic_stat);
-LOG_DEBUG_END
+  if(LOG_DEBUGFLAG(UE_TIMING)) {
+    start_meas(&ue->phy_proc_rx[ue->current_thread_id[subframe_rx]]);
+    start_meas(&ue->generic_stat);
+  }
 
   pmch_flag = is_pmch_subframe(frame_rx,subframe_rx,&ue->frame_parms) ? 1 : 0;
 
@@ -4652,10 +4652,10 @@ LOG_DEBUG_END
     ue->dlsch_ra[eNB_id]->active = 0;
   }
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-  LOG_D(PHY,"[UE %d] Frame %d subframe %d: Doing phy_procedures_UE_RX\n",
-  ue->Mod_id,frame_rx, subframe_rx);
-LOG_DEBUG_END
+  if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+      LOG_D(PHY,"[UE %d] Frame %d subframe %d: Doing phy_procedures_UE_RX\n",
+      ue->Mod_id,frame_rx, subframe_rx);
+  }
 
   if (ue->frame_parms.Ncp == 0) {  // normal prefix
     pilot1 = 4;
@@ -4665,7 +4665,7 @@ LOG_DEBUG_END
 
 
   if (subframe_select(&ue->frame_parms,subframe_rx) == SF_S) { // S-subframe, do first 5 symbols only
-    l2 = 5;
+    l2 = 4;
   } else if (pmch_flag == 1) { // do first 2 symbols only
     l2 = 1;
   } else { // normal subframe, last symbol to be processed is the first of the second slot
@@ -4689,9 +4689,9 @@ LOG_DEBUG_END
   LOG_D(PHY," ------  --> FFT/ChannelEst/PDCCH slot 0: AbsSubframe %d.%d ------  \n", frame_rx%1024, subframe_rx);
   for (; l<=l2; l++) {
     if (abstraction_flag == 0) {
-LOG_DEBUG_BEGIN(UE_TIMING)
-        start_meas(&ue->ofdm_demod_stats);
-LOG_DEBUG_END
+        if (LOG_DEBUGFLAG(UE_TIMING)) {
+          start_meas(&ue->ofdm_demod_stats);
+        }
       VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
       slot_fep(ue,
          l,
@@ -4700,16 +4700,16 @@ LOG_DEBUG_END
          0,
          0);
       VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
-LOG_DEBUG_BEGIN(UE_TIMING)
-      stop_meas(&ue->ofdm_demod_stats);
-LOG_DEBUG_END
+      if (LOG_DEBUGFLAG(UE_TIMING)) {
+        stop_meas(&ue->ofdm_demod_stats);
+        }
     }
 
     ue_measurement_procedures(l-1,ue,proc,eNB_id,(subframe_rx<<1),abstraction_flag,mode);
 
     if (do_pdcch_flag) {
       if ((l==pilot1) ||
-	  ((pmch_flag==1)&(l==l2)))  {
+	  ((pmch_flag==1)&&(l==l2)))  {
 	LOG_D(PHY,"[UE  %d] Frame %d: Calling pdcch procedures (eNB %d)\n",ue->Mod_id,frame_rx,eNB_id);
 
 	//start_meas(&ue->rx_pdcch_stats[ue->current_thread_id[subframe_rx]]);
@@ -4729,9 +4729,22 @@ LOG_DEBUG_END
   ue_measurement_procedures(l-1,ue,proc,eNB_id,(subframe_rx<<1),abstraction_flag,mode);
 
   LOG_D(PHY," ------  end FFT/ChannelEst/PDCCH slot 0: AbsSubframe %d.%d ------  \n", frame_rx%1024, subframe_rx);
-    // If this is PMCH, call procedures and return
+
+  // If this is PMCH, call procedures, do channel estimation for first symbol of next DL subframe and return
   if (pmch_flag == 1) {
     ue_pmch_procedures(ue,proc,eNB_id,abstraction_flag);
+
+    int next_subframe_rx = (1+subframe_rx)%10;
+    if (subframe_select(&ue->frame_parms,next_subframe_rx) != SF_UL)
+    {
+      slot_fep(ue,
+         0,
+         (next_subframe_rx<<1),
+         0,
+         0,
+         0);
+    }
+
     return 0;
   }
 
@@ -4743,16 +4756,16 @@ LOG_DEBUG_END
      0);
 
   // first slot has been processed (FFTs + Channel Estimation, PCFICH/PHICH/PDCCH)
-LOG_DEBUG_BEGIN(UE_TIMING)
-  stop_meas(&ue->generic_stat);
-  LOG_UI(PHY, "[SFN %d] Slot0: FFT + Channel Estimate + PCFICH/PHICH/PDCCH %5.2f \n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+  if (LOG_DEBUGFLAG(UE_TIMING)) {
+    stop_meas(&ue->generic_stat);
+    LOG_UI(PHY, "[SFN %d] Slot0: FFT + Channel Estimate + PCFICH/PHICH/PDCCH %5.2f \n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
+  }
 
 
   LOG_D(PHY," ------ --> PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------  \n", frame_rx%1024, subframe_rx);
-LOG_DEBUG_BEGIN(UE_TIMING)
-  start_meas(&ue->generic_stat);
-LOG_DEBUG_END
+  if (LOG_DEBUGFLAG(UE_TIMING)) {
+    start_meas(&ue->generic_stat);
+  }
   // do procedures for C-RNTI
   if (ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->active == 1) {
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_IN);
@@ -4822,9 +4835,9 @@ LOG_DEBUG_END
   if (subframe_select(&ue->frame_parms,subframe_rx) != SF_S) {  // do front-end processing for second slot, and first symbol of next subframe
     for (l=1; l<ue->frame_parms.symbols_per_tti>>1; l++) {
       if (abstraction_flag == 0) {
-LOG_DEBUG_BEGIN(UE_TIMING)
+        if (LOG_DEBUGFLAG(UE_TIMING)) {
           start_meas(&ue->ofdm_demod_stats);
-LOG_DEBUG_END
+        }
 	VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
 	slot_fep(ue,
 		 l,
@@ -4833,14 +4846,15 @@ LOG_DEBUG_END
 		 0,
 		 0);
 	VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
-LOG_DEBUG_BEGIN(UE_TIMING)
-    stop_meas(&ue->ofdm_demod_stats);
-LOG_DEBUG_END
+        if (LOG_DEBUGFLAG(UE_TIMING)) {
+          stop_meas(&ue->ofdm_demod_stats);
+        }
       }
 
       ue_measurement_procedures(l-1,ue,proc,eNB_id,1+(subframe_rx<<1),abstraction_flag,mode);
 
     } // for l=1..l2
+    ue_measurement_procedures(l-1,ue,proc,eNB_id,1+(subframe_rx<<1),abstraction_flag,mode);
 
     // do first symbol of next downlink subframe for channel estimation
     int next_subframe_rx = (1+subframe_rx)%10;
@@ -4854,10 +4868,10 @@ LOG_DEBUG_END
          0);
     }
   } // not an S-subframe
-LOG_DEBUG_BEGIN(UE_TIMING)
-  stop_meas(&ue->generic_stat);
-  LOG_UI(PHY, "[SFN %d] Slot1: FFT + Channel Estimate + Pdsch Proc Slot0 %5.2f \n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+  if(LOG_DEBUGFLAG(UE_TIMING)) {
+    stop_meas(&ue->generic_stat);
+    LOG_UI(PHY, "[SFN %d] Slot1: FFT + Channel Estimate + Pdsch Proc Slot0 %5.2f \n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
+  }
 
   LOG_D(PHY," ------  end FFT/ChannelEst/PDCCH slot 1: AbsSubframe %d.%d ------  \n", frame_rx%1024, subframe_rx);
 
@@ -4872,9 +4886,9 @@ LOG_DEBUG_END
   LOG_D(PHY," ------ --> PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------  \n", frame_rx%1024, subframe_rx);
   if (ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->active == 1) {
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_IN);
-LOG_DEBUG_BEGIN(UE_TIMING)
-    start_meas(&ue->pdsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)) { 
+      start_meas(&ue->pdsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
+    }
     ue_pdsch_procedures(ue,
 			proc,
 			eNB_id,
@@ -4886,10 +4900,10 @@ LOG_DEBUG_END
 			abstraction_flag);
     LOG_D(PHY," ------ end PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------  \n", frame_rx%1024, subframe_rx);
     LOG_D(PHY," ------ --> PDSCH Turbo Decoder slot 0/1: AbsSubframe %d.%d ------  \n", frame_rx%1024, subframe_rx);
-LOG_DEBUG_BEGIN(UE_TIMING)
-    stop_meas(&ue->pdsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
-    start_meas(&ue->dlsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)) { 
+      stop_meas(&ue->pdsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
+      start_meas(&ue->dlsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
+    }
     ue_dlsch_procedures(ue,
 			proc,
 			eNB_id,
@@ -4899,38 +4913,38 @@ LOG_DEBUG_END
 			&ue->dlsch_errors[eNB_id],
 			mode,
 			abstraction_flag);
-LOG_DEBUG_BEGIN(UE_TIMING)
-    stop_meas(&ue->dlsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
-    LOG_UI(PHY, "[SFN %d] Slot1:       Pdsch Proc %5.2f\n",subframe_rx,ue->pdsch_procedures_stat[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
-    LOG_UI(PHY, "[SFN %d] Slot0 Slot1: Dlsch Proc %5.2f\n",subframe_rx,ue->dlsch_procedures_stat[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)) { 
+      stop_meas(&ue->dlsch_procedures_stat[ue->current_thread_id[subframe_rx]]);
+      LOG_UI(PHY, "[SFN %d] Slot1:       Pdsch Proc %5.2f\n",subframe_rx,ue->pdsch_procedures_stat[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
+      LOG_UI(PHY, "[SFN %d] Slot0 Slot1: Dlsch Proc %5.2f\n",subframe_rx,ue->dlsch_procedures_stat[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
+    }
 
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_OUT);
 
   }
-LOG_DEBUG_BEGIN(UE_TIMING)
-  start_meas(&ue->generic_stat);
-LOG_DEBUG_END
+  if (LOG_DEBUGFLAG(UE_TIMING)) {
+    start_meas(&ue->generic_stat);
+  }
 
-LOG_M_BEGIN(DEBUG_UE_PHYPROC)
-  if(subframe_rx==5 &&  ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->harq_processes[ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->current_harq_pid]->nb_rb > 20){
-       //LOG_M("decoder_llr.m","decllr",dlsch_llr,G,1,0);
-       //LOG_M("llr.m","llr",  &ue->pdsch_vars[eNB_id]->llr[0][0],(14*nb_rb*12*dlsch1_harq->Qm) - 4*(nb_rb*4*dlsch1_harq->Qm),1,0);
+  if (LOG_DUMPFLAG(DEBUG_UE_PHYPROC)) {
+    if(subframe_rx==5 &&  ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->harq_processes[ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->current_harq_pid]->nb_rb > 20){
+  	 //LOG_M("decoder_llr.m","decllr",dlsch_llr,G,1,0);
+  	 //LOG_M("llr.m","llr",  &ue->pdsch_vars[eNB_id]->llr[0][0],(14*nb_rb*12*dlsch1_harq->Qm) - 4*(nb_rb*4*dlsch1_harq->Qm),1,0);
 
-       LOG_M("rxdataF0_current.m"    , "rxdataF0", &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
-       //LOG_M("rxdataF0_previous.m"    , "rxdataF0_prev_sss", &ue->common_vars.common_vars_rx_data_per_thread[next_thread_id].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
+  	 LOG_M("rxdataF0_current.m"    , "rxdataF0", &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
+  	 //LOG_M("rxdataF0_previous.m"    , "rxdataF0_prev_sss", &ue->common_vars.common_vars_rx_data_per_thread[next_thread_id].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
 
-       //LOG_M("rxdataF0_previous.m"    , "rxdataF0_prev", &ue->common_vars.common_vars_rx_data_per_thread[next_thread_id].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
+  	 //LOG_M("rxdataF0_previous.m"    , "rxdataF0_prev", &ue->common_vars.common_vars_rx_data_per_thread[next_thread_id].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
 
-       LOG_M("dl_ch_estimates.m", "dl_ch_estimates_sfn5", &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].dl_ch_estimates[0][0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
-       LOG_M("dl_ch_estimates_ext.m", "dl_ch_estimatesExt_sfn5", &ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->dl_ch_estimates_ext[0][0],14*ue->frame_parms.N_RB_DL*12,1,1);
-       LOG_M("rxdataF_comp00.m","rxdataF_comp00",         &ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->rxdataF_comp0[0][0],14*ue->frame_parms.N_RB_DL*12,1,1);
-       //LOG_M("magDLFirst.m", "magDLFirst", &phy_vars_ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->dl_ch_mag0[0][0],14*frame_parms->N_RB_DL*12,1,1);
-       //LOG_M("magDLSecond.m", "magDLSecond", &phy_vars_ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->dl_ch_magb0[0][0],14*frame_parms->N_RB_DL*12,1,1);
+  	 LOG_M("dl_ch_estimates.m", "dl_ch_estimates_sfn5", &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].dl_ch_estimates[0][0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
+  	 LOG_M("dl_ch_estimates_ext.m", "dl_ch_estimatesExt_sfn5", &ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->dl_ch_estimates_ext[0][0],14*ue->frame_parms.N_RB_DL*12,1,1);
+  	 LOG_M("rxdataF_comp00.m","rxdataF_comp00",	    &ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->rxdataF_comp0[0][0],14*ue->frame_parms.N_RB_DL*12,1,1);
+  	 //LOG_M("magDLFirst.m", "magDLFirst", &phy_vars_ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->dl_ch_mag0[0][0],14*frame_parms->N_RB_DL*12,1,1);
+  	 //LOG_M("magDLSecond.m", "magDLSecond", &phy_vars_ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->dl_ch_magb0[0][0],14*frame_parms->N_RB_DL*12,1,1);
 
-       AssertFatal (0,"");
+  	 AssertFatal (0,"");
+    }
   }
-LOG_M_END
 
   // do procedures for SI-RNTI
   if ((ue->dlsch_SI[eNB_id]) && (ue->dlsch_SI[eNB_id]->active == 1)) {
@@ -5035,25 +5049,25 @@ LOG_M_END
     ue->Mod_id,frame_rx,ue->total_TBS[eNB_id],
     ue->total_TBS_last[eNB_id],(float) ue->bitrate[eNB_id]/1000.0);
 
-LOG_DEBUG_BEGIN(DEBUG_UE_PHYPROC)
-    if ((frame_rx % 100 == 0)) {
-      LOG_I(PHY,"[UE  %d] AUTOTEST Metric : UE_DLSCH_BITRATE = %5.2f kbps (frame = %d) \n", ue->Mod_id, (float) ue->bitrate[eNB_id]/1000.0, frame_rx);
+    if ( LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) {
+      if ((frame_rx % 100 == 0)) {
+        LOG_UI(PHY,"[UE  %d] AUTOTEST Metric : UE_DLSCH_BITRATE = %5.2f kbps (frame = %d) \n", ue->Mod_id, (float) ue->bitrate[eNB_id]/1000.0, frame_rx);
+      }
     }
-LOG_DEBUG_END
 
   }
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-  stop_meas(&ue->generic_stat);
-  printf("after tubo until end of Rx %5.2f \n",ue->generic_stat.p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+  if ( LOG_DEBUGFLAG(UE_TIMING)) {
+    stop_meas(&ue->generic_stat);
+    LOG_UI(PHY,"after tubo until end of Rx %5.2f \n",ue->generic_stat.p_time/(cpuf*1000.0));
+  }
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX, VCD_FUNCTION_OUT);
 
-LOG_DEBUG_BEGIN(UE_TIMING)
-  stop_meas(&ue->phy_proc_rx[ue->current_thread_id[subframe_rx]]);
-  LOG_UI(PHY, "------FULL RX PROC [SFN %d]: %5.2f ------\n",subframe_rx,ue->phy_proc_rx[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
-LOG_DEBUG_END
+  if ( LOG_DEBUGFLAG(UE_TIMING) ) {
+    stop_meas(&ue->phy_proc_rx[ue->current_thread_id[subframe_rx]]);
+    LOG_UI(PHY, "------FULL RX PROC [SFN %d]: %5.2f ------\n",subframe_rx,ue->phy_proc_rx[ue->current_thread_id[subframe_rx]].p_time/(cpuf*1000.0));
+  }
 
   LOG_D(PHY," ****** end RX-Chain  for AbsSubframe %d.%d ******  \n", frame_rx%1024, subframe_rx);
   return (0);
@@ -5083,9 +5097,9 @@ void phy_procedures_UE_lte(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,u
 
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_LTE,1);
-LOG_DEBUG_BEGIN(UE_TIMING)
-  start_meas(&ue->phy_proc[ue->current_thread_id[subframe_rx]]);
-LOG_DEBUG_END
+  if ( LOG_DEBUGFLAG(UE_TIMING)) {
+    start_meas(&ue->phy_proc[ue->current_thread_id[subframe_rx]]);
+  }
 
 #if defined(ENABLE_ITTI)
 
@@ -5168,9 +5182,9 @@ LOG_DEBUG_END
     }
     
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_LTE,0);
-LOG_DEBUG_BEGIN(UE_TIMING)
-    stop_meas(&ue->phy_proc[ue->current_thread_id[subframe_rx]]);
-LOG_DEBUG_END
+    if (LOG_DEBUGFLAG(UE_TIMING)) { 
+      stop_meas(&ue->phy_proc[ue->current_thread_id[subframe_rx]]);
+    }
   } // slot
 }
 
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c
index e0ad8b41f3c83689edeca7d010789b7aa1b897e6..a03ce34bcae135d452b54c53a7e5dbb79bf39049 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim.c
@@ -67,6 +67,7 @@
 #include "common/config/config_load_configmodule.h"
 #include "PHY/INIT/phy_init.h"
 
+
 void feptx_ofdm(RU_t *ru);
 void feptx_prec(RU_t *ru);
 
@@ -83,6 +84,8 @@ int n_rx_dropped = 0; /*!< \brief initial max process time for rx */
 
 int codingw = 0;
 
+int emulate_rf = 0;
+
 void handler(int sig)
 {
   void *array[10];
@@ -520,7 +523,7 @@ int main(int argc, char **argv)
   int c;
   int k,i,j,aa;
   int re;
-
+  int loglvl=OAILOG_DEBUG;
 
   int s,Kr,Kr_bytes;
 
@@ -998,7 +1001,7 @@ int main(int argc, char **argv)
       break;
 
     case 'L':
-      set_glog(atoi(optarg));
+      loglvl = atoi(optarg);
       break;
 
     case 'h':
@@ -1046,7 +1049,7 @@ int main(int argc, char **argv)
 	      "cannot load configuration module, exiting\n");
   logInit();
   // enable these lines if you need debug info
-  set_glog(LOG_DEBUG);
+  set_glog(loglvl);
   // moreover you need to init itti with the following line
   // however itti will catch all signals, so ctrl-c won't work anymore
   // alternatively you can disable ITTI completely in CMakeLists.txt
@@ -2043,24 +2046,9 @@ int main(int argc, char **argv)
       qsort (table_rx, time_vector_rx.size, sizeof(double), &compare);
 
       if (dump_table == 1 ) {
-        set_component_filelog(USIM);  // file located in /tmp/usim.txt
-        int n;
-        LOG_F(USIM,"The transmitter raw data: \n");
-
-        for (n=0; n< time_vector_tx.size; n++) {
-          printf("%f ", table_tx[n]);
-          LOG_F(USIM,"%f ", table_tx[n]);
-        }
-
-        LOG_F(USIM,"\n");
-        LOG_F(USIM,"The receiver raw data: \n");
-
-        for (n=0; n< time_vector_rx.size; n++) {
-          // printf("%f ", table_rx[n]);
-          LOG_F(USIM,"%f ", table_rx[n]);
-        }
-
-        LOG_F(USIM,"\n");
+        set_component_filelog(SIM);  // file located in /tmp/usim.txt
+        LOG_UDUMPMSG(SIM,table_tx,time_vector_tx.size,LOG_DUMP_DOUBLE,"The transmitter raw data: \n");
+        LOG_UDUMPMSG(SIM,table_rx,time_vector_rx.size,LOG_DUMP_DOUBLE,"Thereceiver raw data: \n");
       }
 
       double tx_median = table_tx[time_vector_tx.size/2];
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c b/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
index 0c942df275f7ce5b8dab0d1b1f2cba0c42066a33..2176e272c8a5483c3e4ed8b2b046ba8e21ee375d 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
@@ -5016,24 +5016,11 @@ int main(int argc, char **argv)
 
       if (dump_table == 1 ) {
         set_component_filelog(USIM);  // file located in /tmp/usim.txt
-        int n;
-        LOG_F(USIM,"The transmitter raw data: \n");
+        LOG_UDUMPMSG(RRC,(char *)table_tx,time_vector_tx.size,LOG_DUMP_DOUBLE,
+                     "The transmitter raw data: \n");
+        LOG_UDUMPMSG(RRC,(char *)table_rx,time_vector_rx.size,LOG_DUMP_DOUBLE,
+                     "The receiver raw data: \n");
 
-        for (n=0; n< time_vector_tx.size; n++) {
-          printf("%f ", table_tx[n]);
-          LOG_F(USIM,"%f ", table_tx[n]);
-        }
-
-        LOG_F(USIM,"\n");
-        LOG_F(USIM,"The receiver raw data: \n");
-
-        for (n=0; n< time_vector_rx.size; n++) {
-          // printf("%f ", table_rx[n]);
-          LOG_F(USIM,"%f ", table_rx[n]);
-        }
-
-        LOG_F(USIM,"\n");
-      }
 
       double tx_median = table_tx[time_vector_tx.size/2];
       double tx_q1 = table_tx[time_vector_tx.size/4];
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c b/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
index b41dd5536c360c073c7ec8c0cc576333b8adbeb7..570c13c0b64f0abec0a817b1cfc1223583fffb61 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
@@ -3851,24 +3851,9 @@ PMI_FEEDBACK:
       qsort (table_rx, time_vector_rx.size, sizeof(double), &compare);
 
       if (dump_table == 1 ) {
-        set_component_filelog(USIM);  // file located in /tmp/usim.txt
-        int n;
-        LOG_F(USIM,"The transmitter raw data: \n");
-
-        for (n=0; n< time_vector_tx.size; n++) {
-          printf("%f ", table_tx[n]);
-          LOG_F(USIM,"%f ", table_tx[n]);
-        }
-
-        LOG_F(USIM,"\n");
-        LOG_F(USIM,"The receiver raw data: \n");
-
-        for (n=0; n< time_vector_rx.size; n++) {
-          // printf("%f ", table_rx[n]);
-          LOG_F(USIM,"%f ", table_rx[n]);
-        }
-
-        LOG_F(USIM,"\n");
+        set_component_filelog(SIM);  // file located in /tmp/usim.txt
+        LOG_UDUMPMSG(SIM,table_tx,time_vector_tx.size,LOG_DUMP_DOUBLE,"The transmitter raw data: \n");
+        LOG_UDUMPMSG(SIM,table_rx,time_vector_rx.size,LOG_DUMP_DOUBLE,"The receiver raw data: \n");
       }
 
       double tx_median = table_tx[time_vector_tx.size/2];
diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c
index ab7a29b096c0a292583b43d8e0a97f56b7e48021..3fcb01068548a1c2fab305b50385174ada689737 100644
--- a/openair1/SIMULATION/LTE_PHY/ulsim.c
+++ b/openair1/SIMULATION/LTE_PHY/ulsim.c
@@ -1491,24 +1491,9 @@ int main(int argc, char **argv)
       qsort (table_rx, time_vector_rx.size, sizeof(double), &compare);
 
       if (dump_table == 1 ) {
-        int n;
         set_component_filelog(SIM); // file located in /tmp/usim.txt
-        LOG_F(SIM,"The transmitter raw data: \n");
-
-        for (n=0; n< time_vector_tx.size; n++) {
-          //   printf("%f ", table_tx[n]);
-          LOG_F(SIM,"%f ", table_tx[n]);
-        }
-
-        LOG_F(SIM,"\n");
-        LOG_F(SIM,"The receiver raw data: \n");
-
-        for (n=0; n< time_vector_rx.size; n++) {
-          // printf("%f ", table_rx[n]);
-          LOG_F(SIM,"%f ", table_rx[n]);
-        }
-
-        LOG_F(SIM,"\n");
+        LOG_UDUMPMSG(SIM,table_tx,time_vector_tx.size,LOG_DUMP_DOUBLE,"The transmitter raw data: \n");
+        LOG_UDUMPMSG(SIM,table_rx,time_vector_rx.size,LOG_DUMP_DOUBLE,"The receiver raw data: \n");
       }
 
       double tx_median = table_tx[time_vector_tx.size/2];
diff --git a/openair2/COMMON/x2ap_messages_def.h b/openair2/COMMON/x2ap_messages_def.h
index 4690bba42e5b91f4721d727b38d41da928e0c55a..36842c13d0cef7a55aa36739a0d3dcddd2fad348 100644
--- a/openair2/COMMON/x2ap_messages_def.h
+++ b/openair2/COMMON/x2ap_messages_def.h
@@ -19,3 +19,24 @@
  *      contact@openairinterface.org
  */
 
+/* eNB application layer -> X2AP messages */
+/* ITTI LOG messages */
+/* ENCODER */
+MESSAGE_DEF(X2AP_RESET_REQUST_LOG             , MESSAGE_PRIORITY_MED, IttiMsgText                      , x2ap_reset_request_log)
+MESSAGE_DEF(X2AP_RESOURCE_STATUS_RESPONSE_LOG , MESSAGE_PRIORITY_MED, IttiMsgText                      , x2ap_resource_status_response_log)
+MESSAGE_DEF(X2AP_RESOURCE_STATUS_FAILURE_LOG , MESSAGE_PRIORITY_MED, IttiMsgText                      , x2ap_resource_status_failure_log)
+
+/* Messages for X2AP logging */
+MESSAGE_DEF(X2AP_SETUP_REQUEST_LOG           , MESSAGE_PRIORITY_MED, IttiMsgText                      , x2ap_setup_request_log)
+
+
+/* eNB application layer -> X2AP messages */
+MESSAGE_DEF(X2AP_REGISTER_ENB_REQ          , MESSAGE_PRIORITY_MED, x2ap_register_enb_req_t          , x2ap_register_enb_req)
+
+/* X2AP -> eNB application layer messages */
+MESSAGE_DEF(X2AP_REGISTER_ENB_CNF          , MESSAGE_PRIORITY_MED, x2ap_register_enb_cnf_t          , x2ap_register_enb_cnf)
+MESSAGE_DEF(X2AP_DEREGISTERED_ENB_IND      , MESSAGE_PRIORITY_MED, x2ap_deregistered_enb_ind_t      , x2ap_deregistered_enb_ind)
+
+/* handover messages X2AP <-> RRC */
+MESSAGE_DEF(X2AP_HANDOVER_REQ              , MESSAGE_PRIORITY_MED, x2ap_handover_req_t              , x2ap_handover_req)
+MESSAGE_DEF(X2AP_HANDOVER_REQ_ACK          , MESSAGE_PRIORITY_MED, x2ap_handover_req_ack_t          , x2ap_handover_req_ack)
diff --git a/openair2/COMMON/x2ap_messages_types.h b/openair2/COMMON/x2ap_messages_types.h
index 4690bba42e5b91f4721d727b38d41da928e0c55a..6c4031b981df42869d76abbe210bb88289a27115 100644
--- a/openair2/COMMON/x2ap_messages_types.h
+++ b/openair2/COMMON/x2ap_messages_types.h
@@ -19,3 +19,158 @@
  *      contact@openairinterface.org
  */
 
+#ifndef X2AP_MESSAGES_TYPES_H_
+#define X2AP_MESSAGES_TYPES_H_
+
+#include "PhysCellId.h"
+
+//-------------------------------------------------------------------------------------------//
+// Defines to access message fields.
+
+#define X2AP_REGISTER_ENB_REQ(mSGpTR)           (mSGpTR)->ittiMsg.x2ap_register_enb_req
+#define X2AP_HANDOVER_REQ(mSGpTR)               (mSGpTR)->ittiMsg.x2ap_handover_req
+#define X2AP_HANDOVER_REQ_ACK(mSGpTR)           (mSGpTR)->ittiMsg.x2ap_handover_req_ack
+#define X2AP_REGISTER_ENB_CNF(mSGpTR)           (mSGpTR)->ittiMsg.x2ap_register_enb_cnf
+#define X2AP_DEREGISTERED_ENB_IND(mSGpTR)       (mSGpTR)->ittiMsg.x2ap_deregistered_enb_ind
+
+
+#define X2AP_MAX_NB_ENB_IP_ADDRESS 2
+
+// eNB application layer -> X2AP messages
+typedef struct x2ap_register_enb_req_s {
+  /* Unique eNB_id to identify the eNB within EPC.
+   * For macro eNB ids this field should be 20 bits long.
+   * For home eNB ids this field should be 28 bits long.
+   */
+  uint32_t eNB_id;
+  /* The type of the cell */
+  enum cell_type_e cell_type;
+
+  /* Optional name for the cell
+   * NOTE: the name can be NULL (i.e no name) and will be cropped to 150
+   * characters.
+   */
+  char *eNB_name;
+
+  /* Tracking area code */
+  uint16_t tac;
+
+  /* Mobile Country Code
+   * Mobile Network Code
+   */
+  uint16_t mcc;
+  uint16_t mnc;
+  uint8_t  mnc_digit_length;
+
+  /*
+   * EARFCN
+   */
+  uint16_t fdd_uL_EARFCN;
+  uint16_t fdd_dL_EARFCN;
+  uint16_t tdd_EARFCN;
+
+
+  uint16_t fdd_uL_Transmission_Bandwidth;
+  uint16_t fdd_dL_Transmission_Bandwidth;
+  uint16_t tdd_Transmission_Bandwidth;
+
+
+  /* The local eNB IP address to bind */
+  net_ip_address_t enb_x2_ip_address;
+
+  /* Nb of MME to connect to */
+  uint8_t          nb_x2;
+
+  /* List of target eNB to connect to for X2*/
+  net_ip_address_t target_enb_x2_ip_address[X2AP_MAX_NB_ENB_IP_ADDRESS];
+
+  /* Number of SCTP streams used for associations */
+  uint16_t sctp_in_streams;
+  uint16_t sctp_out_streams;
+
+  /* eNB port for X2C*/
+  uint32_t enb_port_for_X2C;
+} x2ap_register_enb_req_t;
+
+//-------------------------------------------------------------------------------------------//
+// X2AP -> eNB application layer messages
+typedef struct x2ap_register_enb_cnf_s {
+  /* Nb of connected eNBs*/
+  uint8_t          nb_x2;
+} x2ap_register_enb_cnf_t;
+
+typedef struct x2ap_deregistered_enb_ind_s {
+  /* Nb of connected eNBs */
+  uint8_t          nb_x2;
+} x2ap_deregistered_enb_ind_t;
+
+//-------------------------------------------------------------------------------------------//
+// X2AP <-> RRC
+typedef struct x2ap_gummei_s {
+  uint16_t mcc;
+  uint16_t mnc;
+  uint8_t  mnc_len;
+  uint8_t  mme_code;
+  uint16_t mme_group_id;
+} x2ap_gummei_t;
+
+typedef struct x2ap_lastvisitedcell_info_s {
+  uint16_t mcc;
+  uint16_t mnc;
+  uint8_t  mnc_len;
+  PhysCellId_t target_physCellId;
+  cell_type_t cell_type;
+  uint64_t time_UE_StayedInCell;
+}x2ap_lastvisitedcell_info_t;
+
+//used for src
+typedef struct x2ap_handover_req_s {
+  int source_rnti;                       /* TODO: to be fixed/remove */
+  int source_x2id;                       /* TODO: to be fixed/remove */
+
+  unsigned  old_eNB_ue_s1ap_id:24;
+
+  PhysCellId_t target_physCellId;
+
+  x2ap_gummei_t ue_gummei;
+
+  /*UE-ContextInformation */
+
+  /* MME UE id  */
+  uint32_t mme_ue_s1ap_id;
+
+  security_capabilities_t security_capabilities;
+
+  uint8_t      kenb[32]; // keNB or keNB*
+
+  /*next_hop_chaining_coun */
+  long int     kenb_ncc;
+
+  /* UE aggregate maximum bitrate */
+  ambr_t ue_ambr;
+
+  uint8_t nb_e_rabs_tobesetup;
+
+ /* list of e_rab setup-ed by RRC layers */
+  e_rab_setup_t e_rabs_tobesetup[S1AP_MAX_E_RAB];
+
+  /* ue_context_pP->ue_context.e_rab[i].param.sgw_addr; */
+
+  x2ap_lastvisitedcell_info_t lastvisitedcell_info;
+
+  /* TODO: this parameter has to be removed */
+  int target_mod_id;
+} x2ap_handover_req_t;
+
+typedef struct x2ap_handover_req_ack_s {
+  int source_rnti;                       /* TODO: to be fixed/remove */
+  int source_x2id;                       /* TODO: to be fixed/remove */
+  /* TODO: this parameter has to be removed */
+  int target_mod_id;
+  uint8_t rrc_buffer[1024 /* arbitrary, big enough */];
+  int rrc_buffer_size;
+
+  uint32_t mme_ue_s1ap_id;
+} x2ap_handover_req_ack_t;
+
+#endif /* X2AP_MESSAGES_TYPES_H_ */
diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
index 0545eeb3be11e59522aebcafb3161b4aaa61e60a..549c7eaa2227e944a98747b6bcdd2f8a2ac73207 100644
--- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
+++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
@@ -38,7 +38,7 @@
 
 #include "liblfds700.h"
 
-#include "log.h"
+#include "common/utils/LOG/log.h"
 
 /*Flags showing if a mac agent has already been registered*/
 unsigned int mac_agent_registered[NUM_MAX_ENB];
diff --git a/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c b/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
index e5e242232ced64c83f8d021fd99c0a4c16aba3cb..b4bf0293731620731fc25ffb03268e3b17a1fcfc 100644
--- a/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
+++ b/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
@@ -31,7 +31,7 @@
 
 #include "liblfds700.h"
 
-#include "log.h"
+#include "common/utils/LOG/log.h"
 
 /*Trigger boolean for RRC measurement*/
 bool triggered_rrc = false;
diff --git a/openair2/ENB_APP/NB_IoT_interface.c b/openair2/ENB_APP/NB_IoT_interface.c
index c4884453c2e9cc03d62f5c4e454bd3a3dd3f57fb..7355233d71d766e033efac6efa2a1ab08e81aed3 100644
--- a/openair2/ENB_APP/NB_IoT_interface.c
+++ b/openair2/ENB_APP/NB_IoT_interface.c
@@ -43,7 +43,7 @@ int load_NB_IoT(void) {
  RCConfig_NbIoT_f_t RCConfig;
  loader_shlibfunc_t shlib_fdesc[]=NBIOT_INTERFACE_FLIST; 
 
-     ret=load_module_shlib(NBIOT_MODULENAME,shlib_fdesc,sizeof(shlib_fdesc)/sizeof(loader_shlibfunc_t));
+     ret=load_module_shlib(NBIOT_MODULENAME,shlib_fdesc,sizeof(shlib_fdesc)/sizeof(loader_shlibfunc_t),NULL);
      if (ret) {
         return ret;
      }
diff --git a/openair2/ENB_APP/enb_app.c b/openair2/ENB_APP/enb_app.c
index 042d3fb395db6169913849d80cffbaa3f995629c..ad3f5fd6ed7d063f0ddb36a8cb7e5709d3ac216a 100644
--- a/openair2/ENB_APP/enb_app.c
+++ b/openair2/ENB_APP/enb_app.c
@@ -35,7 +35,7 @@
 #include "assertions.h"
 #include "common/ran_context.h"
 
-#include "log.h"
+#include "common/utils/LOG/log.h"
 
 #if defined(ENABLE_ITTI)
 # include "intertask_interface.h"
@@ -43,8 +43,14 @@
 #   include "s1ap_eNB.h"
 #   include "sctp_eNB_task.h"
 #   include "gtpv1u_eNB_task.h"
+# else
+#    define EPC_MODE_ENABLED 0
 # endif
 
+//#   include "x2ap_eNB.h"
+#   include "x2ap_messages_types.h"
+#   define X2AP_ENB_REGISTER_RETRY_DELAY   10
+
 #include "openair1/PHY/INIT/phy_init.h"
 extern unsigned char NB_eNB_INST;
 #endif
@@ -134,6 +140,30 @@ static uint32_t eNB_app_register(uint32_t enb_id_start, uint32_t enb_id_end)//,
 # endif
 #endif
 
+/*------------------------------------------------------------------------------*/
+static uint32_t eNB_app_register_x2(uint32_t enb_id_start, uint32_t enb_id_end)
+{
+  uint32_t         enb_id;
+  MessageDef      *msg_p;
+  uint32_t         register_enb_x2_pending = 0;
+
+  for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) {
+
+    {
+
+      msg_p = itti_alloc_new_message (TASK_ENB_APP, X2AP_REGISTER_ENB_REQ);
+
+      RCconfig_X2(msg_p, enb_id);
+
+	//itti_send_msg_to_task (TASK_X2AP, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
+
+      register_enb_x2_pending++;
+    }
+  }
+
+  return register_enb_x2_pending;
+}
+
 /*------------------------------------------------------------------------------*/
 void *eNB_app_task(void *args_p)
 {
@@ -142,10 +172,13 @@ void *eNB_app_task(void *args_p)
   uint32_t                        enb_id_start = 0;
   uint32_t                        enb_id_end = enb_id_start + enb_nb;
 # if defined(ENABLE_USE_MME)
-  uint32_t                        register_enb_pending;
+  uint32_t                        register_enb_pending=0;
   uint32_t                        registered_enb;
   long                            enb_register_retry_timer_id;
 # endif
+  uint32_t                        x2_register_enb_pending;
+  //uint32_t                        x2_registered_enb;
+  //long                            x2_enb_register_retry_timer_id;
   uint32_t                        enb_id;
   MessageDef                     *msg_p           = NULL;
   instance_t                      instance;
@@ -183,13 +216,17 @@ void *eNB_app_task(void *args_p)
 
 # if defined(ENABLE_USE_MME)
   /* Try to register each eNB */
-  registered_enb = 0;
-  register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
-# else
+    registered_enb = 0;
+    register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
+#else
   /* Start L2L1 task */
-  msg_p = itti_alloc_new_message(TASK_ENB_APP, INITIALIZE_MESSAGE);
-  itti_send_msg_to_task(TASK_L2L1, INSTANCE_DEFAULT, msg_p);
-# endif
+    msg_p = itti_alloc_new_message(TASK_ENB_APP, INITIALIZE_MESSAGE);
+    itti_send_msg_to_task(TASK_L2L1, INSTANCE_DEFAULT, msg_p);
+#endif
+
+  /* Try to register each eNB with each other */
+ // x2_registered_enb = 0;
+  x2_register_enb_pending = eNB_app_register_x2 (enb_id_start, enb_id_end);
 
   do {
     // Wait for a message
@@ -207,66 +244,68 @@ void *eNB_app_task(void *args_p)
       LOG_I(ENB_APP, "Received %s\n", ITTI_MSG_NAME(msg_p));
       break;
 
-# if defined(ENABLE_USE_MME)
-
     case S1AP_REGISTER_ENB_CNF:
-      LOG_I(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, ITTI_MSG_NAME (msg_p),
-            S1AP_REGISTER_ENB_CNF(msg_p).nb_mme);
-
-      DevAssert(register_enb_pending > 0);
-      register_enb_pending--;
-
-      /* Check if at least eNB is registered with one MME */
-      if (S1AP_REGISTER_ENB_CNF(msg_p).nb_mme > 0) {
-        registered_enb++;
-      }
-
-      /* Check if all register eNB requests have been processed */
-      if (register_enb_pending == 0) {
-        if (registered_enb == enb_nb) {
-          /* If all eNB are registered, start L2L1 task */
-          MessageDef *msg_init_p;
-
-          msg_init_p = itti_alloc_new_message (TASK_ENB_APP, INITIALIZE_MESSAGE);
-          itti_send_msg_to_task (TASK_L2L1, INSTANCE_DEFAULT, msg_init_p);
-
-        } else {
-          LOG_W(ENB_APP, " %d eNB not associated with a MME, retrying registration in %d seconds ...\n",
-                enb_nb - registered_enb,  ENB_REGISTER_RETRY_DELAY);
-
-          /* Restart the eNB registration process in ENB_REGISTER_RETRY_DELAY seconds */
-          if (timer_setup (ENB_REGISTER_RETRY_DELAY, 0, TASK_ENB_APP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,
-                           NULL, &enb_register_retry_timer_id) < 0) {
-            LOG_E(ENB_APP, " Can not start eNB register retry timer, use \"sleep\" instead!\n");
-
-            sleep(ENB_REGISTER_RETRY_DELAY);
-            /* Restart the registration process */
-            registered_enb = 0;
-            register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
-          }
-        }
-      }
-
+# if defined(ENABLE_USE_MME)
+  	LOG_I(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, ITTI_MSG_NAME (msg_p),
+  	      S1AP_REGISTER_ENB_CNF(msg_p).nb_mme);
+
+  	DevAssert(register_enb_pending > 0);
+  	register_enb_pending--;
+
+  	/* Check if at least eNB is registered with one MME */
+  	if (S1AP_REGISTER_ENB_CNF(msg_p).nb_mme > 0) {
+  	  registered_enb++;
+  	}
+
+  	/* Check if all register eNB requests have been processed */
+  	if (register_enb_pending == 0) {
+  	  if (registered_enb == enb_nb) {
+  	    /* If all eNB are registered, start L2L1 task */
+  	    MessageDef *msg_init_p;
+
+  	    msg_init_p = itti_alloc_new_message (TASK_ENB_APP, INITIALIZE_MESSAGE);
+  	    itti_send_msg_to_task (TASK_L2L1, INSTANCE_DEFAULT, msg_init_p);
+
+  	  } else {
+  	    LOG_W(ENB_APP, " %d eNB not associated with a MME, retrying registration in %d seconds ...\n",
+  		  enb_nb - registered_enb,  ENB_REGISTER_RETRY_DELAY);
+
+  	    /* Restart the eNB registration process in ENB_REGISTER_RETRY_DELAY seconds */
+  	    if (timer_setup (ENB_REGISTER_RETRY_DELAY, 0, TASK_ENB_APP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,
+  			     NULL, &enb_register_retry_timer_id) < 0) {
+  	      LOG_E(ENB_APP, " Can not start eNB register retry timer, use \"sleep\" instead!\n");
+
+  	      sleep(ENB_REGISTER_RETRY_DELAY);
+  	      /* Restart the registration process */
+  	      registered_enb = 0;
+  	      register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
+  	    }
+  	  }
+  	}
+#endif
       break;
 
     case S1AP_DEREGISTERED_ENB_IND:
-      LOG_W(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, ITTI_MSG_NAME (msg_p),
-            S1AP_DEREGISTERED_ENB_IND(msg_p).nb_mme);
+      if (EPC_MODE_ENABLED) {
+  	LOG_W(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, ITTI_MSG_NAME (msg_p),
+  	      S1AP_DEREGISTERED_ENB_IND(msg_p).nb_mme);
 
-      /* TODO handle recovering of registration */
+  	/* TODO handle recovering of registration */
+      }
       break;
 
     case TIMER_HAS_EXPIRED:
-      LOG_I(ENB_APP, " Received %s: timer_id %ld\n", ITTI_MSG_NAME (msg_p), TIMER_HAS_EXPIRED(msg_p).timer_id);
-
-      if (TIMER_HAS_EXPIRED (msg_p).timer_id == enb_register_retry_timer_id) {
-        /* Restart the registration process */
-        registered_enb = 0;
-        register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
-      }
+# if defined(ENABLE_USE_MME)
+  	LOG_I(ENB_APP, " Received %s: timer_id %ld\n", ITTI_MSG_NAME (msg_p), TIMER_HAS_EXPIRED(msg_p).timer_id);
 
+  	if (TIMER_HAS_EXPIRED (msg_p).timer_id == enb_register_retry_timer_id) {
+  	  /* Restart the registration process */
+  	  registered_enb = 0;
+  	  register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
+  	}
+#endif
       break;
-# endif
+
 
     default:
       LOG_E(ENB_APP, "Received unexpected message %s\n", ITTI_MSG_NAME (msg_p));
diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c
index 2b6931effa66453a2df29a73b0342053d4fccf4e..012375e66888995bfc4ded98d7a99e5307022455 100644
--- a/openair2/ENB_APP/enb_config.c
+++ b/openair2/ENB_APP/enb_config.c
@@ -37,10 +37,12 @@
 #include "UTIL/OTG/otg_externs.h"
 #if defined(ENABLE_ITTI)
 # include "intertask_interface.h"
-# if defined(ENABLE_USE_MME)
+# if defined(ENABLE_USE_MME) 
 #   include "s1ap_eNB.h"
 #   include "sctp_eNB_task.h"
-# endif
+# else
+#  define EPC_MODE_ENABLED 0
+# endif 
 #endif
 #include "sctp_default_values.h"
 #include "SystemInformationBlockType2.h"
@@ -198,11 +200,10 @@ void RCconfig_flexran()
     /* eNB ID from configuration, as read in by RCconfig_RRC() */
     if (!ENBParamList.paramarray[i][ENB_ENB_ID_IDX].uptr) {
       // Calculate a default eNB ID
-# if defined(ENABLE_USE_MME)
-      enb_id = i + (s1ap_generate_eNB_id () & 0xFFFF8);
-# else
-      enb_id = i;
-# endif
+      if (EPC_MODE_ENABLED)
+         enb_id = i + (s1ap_generate_eNB_id () & 0xFFFF8);
+      else
+         enb_id = i;
     } else {
         enb_id = *(ENBParamList.paramarray[i][ENB_ENB_ID_IDX].uptr);
     }
@@ -546,32 +547,6 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
   int32_t     srb1_max_retx_threshold       = 0;
 
   int32_t     my_int;
-
-
-  
-/* 
-  int32_t     otg_ue_id                     = 0;
-  char*             otg_app_type                  = NULL;
-  char*             otg_bg_traffic                = NULL;
-  char*             glog_level                    = NULL;
-  char*             glog_verbosity                = NULL;
-  char*             hw_log_level                  = NULL;
-  char*             hw_log_verbosity              = NULL;
-  char*             phy_log_level                 = NULL;
-  char*             phy_log_verbosity             = NULL;
-  char*             mac_log_level                 = NULL;
-  char*             mac_log_verbosity             = NULL;
-  char* 	    rlc_log_level		  = NULL;
-  char* 	    rlc_log_verbosity		  = NULL;
-  char* 	    pdcp_log_level		  = NULL;
-  char* 	    pdcp_log_verbosity  	  = NULL;
-  char* 	    rrc_log_level		  = NULL;
-  char* 	    rrc_log_verbosity		  = NULL;
-  char* 	    udp_log_verbosity		  = NULL;
-  char* 	    osa_log_level		  = NULL;
-  char* 	    osa_log_verbosity		  = NULL;
-*/  
-
   
   // for no gcc warnings 
   (void)my_int;
@@ -591,32 +566,13 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
      CCsParams[I].chkPptr = &(config_check_CCparams[I]);  
   }
 /* get global parameters, defined outside any section in the config file */
-  
+
   config_get( ENBSParams,sizeof(ENBSParams)/sizeof(paramdef_t),NULL); 
+
   num_enbs = ENBSParams[ENB_ACTIVE_ENBS_IDX].numelt;
   AssertFatal (i<num_enbs,
    	       "Failed to parse config file no %ith element in %s \n",i, ENB_CONFIG_STRING_ACTIVE_ENBS);
   
-#if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
-
-
-    if (strcasecmp( *(ENBSParams[ENB_ASN1_VERBOSITY_IDX].strptr), ENB_CONFIG_STRING_ASN1_VERBOSITY_NONE) == 0) {
-      asn_debug      = 0;
-      asn1_xer_print = 0;
-    } else if (strcasecmp( *(ENBSParams[ENB_ASN1_VERBOSITY_IDX].strptr), ENB_CONFIG_STRING_ASN1_VERBOSITY_INFO) == 0) {
-      asn_debug      = 1;
-      asn1_xer_print = 1;
-    } else if (strcasecmp(*(ENBSParams[ENB_ASN1_VERBOSITY_IDX].strptr) , ENB_CONFIG_STRING_ASN1_VERBOSITY_ANNOYING) == 0) {
-      asn_debug      = 1;
-      asn1_xer_print = 2;
-    } else {
-      asn_debug      = 0;
-      asn1_xer_print = 0;
-    }
-
-
-#endif
-  
 
   
   if (num_enbs>0) {
@@ -628,14 +584,14 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
       
       if (ENBParamList.paramarray[i][ENB_ENB_ID_IDX].uptr == NULL) {
 	// Calculate a default eNB ID
-# if defined(ENABLE_USE_MME)
-	uint32_t hash;
-	
-	hash = s1ap_generate_eNB_id ();
-	enb_id = i + (hash & 0xFFFF8);
-# else
-	enb_id = i;
-# endif
+        if (EPC_MODE_ENABLED) {
+  	  uint32_t hash;
+  	  
+  	  hash = s1ap_generate_eNB_id ();
+  	  enb_id = i + (hash & 0xFFFF8);
+  	  } else {
+  	  enb_id = i;
+        }
       } else {
           enb_id = *(ENBParamList.paramarray[i][ENB_ENB_ID_IDX].uptr);
       }
@@ -2255,23 +2211,9 @@ int RCconfig_S1(MessageDef *msg_p, uint32_t i) {
 
 /* get global parameters, defined outside any section in the config file */
   
-  config_get( ENBSParams,sizeof(ENBSParams)/sizeof(paramdef_t),NULL); 
-#if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
-    if (strcasecmp( *(ENBSParams[ENB_ASN1_VERBOSITY_IDX].strptr), ENB_CONFIG_STRING_ASN1_VERBOSITY_NONE) == 0) {
-      asn_debug      = 0;
-      asn1_xer_print = 0;
-    } else if (strcasecmp( *(ENBSParams[ENB_ASN1_VERBOSITY_IDX].strptr), ENB_CONFIG_STRING_ASN1_VERBOSITY_INFO) == 0) {
-      asn_debug      = 1;
-      asn1_xer_print = 1;
-    } else if (strcasecmp(*(ENBSParams[ENB_ASN1_VERBOSITY_IDX].strptr) , ENB_CONFIG_STRING_ASN1_VERBOSITY_ANNOYING) == 0) {
-      asn_debug      = 1;
-      asn1_xer_print = 2;
-    } else {
-      asn_debug      = 0;
-      asn1_xer_print = 0;
-    }
+  config_get( ENBSParams,sizeof(ENBSParams)/sizeof(paramdef_t),NULL);
+  
 
-#endif
 
     AssertFatal (i<ENBSParams[ENB_ACTIVE_ENBS_IDX].numelt,
 		 "Failed to parse config file %s, %uth attribute %s \n",
@@ -2291,17 +2233,17 @@ int RCconfig_S1(MessageDef *msg_p, uint32_t i) {
 	if (ENBParamList.paramarray[k][ENB_ENB_ID_IDX].uptr == NULL) {
 	  // Calculate a default eNB ID
 
-# if defined(ENABLE_USE_MME)
-	  uint32_t hash;
-	  
-	  hash = s1ap_generate_eNB_id ();
-	  enb_id = k + (hash & 0xFFFF8);
-# else
-	  enb_id = k;
-# endif
-	} else {
-          enb_id = *(ENBParamList.paramarray[k][ENB_ENB_ID_IDX].uptr);
-        }
+  	  if (EPC_MODE_ENABLED) {
+  		uint32_t hash;
+  		
+  		hash = s1ap_generate_eNB_id ();
+  		enb_id = k + (hash & 0xFFFF8);
+  	  } else {
+  		enb_id = k;
+  	  }
+  	} else {
+  	    enb_id = *(ENBParamList.paramarray[k][ENB_ENB_ID_IDX].uptr);
+  	}
 	
 	
 	// search if in active list
@@ -2349,18 +2291,14 @@ int RCconfig_S1(MessageDef *msg_p, uint32_t i) {
 	      strcpy(S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv4_address,*(S1ParamList.paramarray[l][ENB_MME_IPV4_ADDRESS_IDX].strptr));
 	      strcpy(S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv6_address,*(S1ParamList.paramarray[l][ENB_MME_IPV6_ADDRESS_IDX].strptr));
 
-	      if (strcmp(*(S1ParamList.paramarray[l][ENB_MME_IP_ADDRESS_ACTIVE_IDX].strptr), "yes") == 0) {
-#if defined(ENABLE_USE_MME)
-		EPC_MODE_ENABLED = 1;
-#endif
-	      } 
+
 	      if (strcmp(*(S1ParamList.paramarray[l][ENB_MME_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv4") == 0) {
-		S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[j].ipv4 = 1;
+		S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv4 = 1;
 	      } else if (strcmp(*(S1ParamList.paramarray[l][ENB_MME_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv6") == 0) {
-		S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[j].ipv6 = 1;
+		S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv6 = 1;
 	      } else if (strcmp(*(S1ParamList.paramarray[l][ENB_MME_IP_ADDRESS_PREFERENCE_IDX].strptr), "no") == 0) {
-		S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[j].ipv4 = 1;
-		S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[j].ipv6 = 1;
+		S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv4 = 1;
+		S1AP_REGISTER_ENB_REQ (msg_p).mme_ip_address[l].ipv6 = 1;
 	      }
 	    }
 
@@ -2368,12 +2306,12 @@ int RCconfig_S1(MessageDef *msg_p, uint32_t i) {
 	    // SCTP SETTING
 	    S1AP_REGISTER_ENB_REQ (msg_p).sctp_out_streams = SCTP_OUT_STREAMS;
 	    S1AP_REGISTER_ENB_REQ (msg_p).sctp_in_streams  = SCTP_IN_STREAMS;
-# if defined(ENABLE_USE_MME)
-	    sprintf(aprefix,"%s.[%i].%s",ENB_CONFIG_STRING_ENB_LIST,k,ENB_CONFIG_STRING_SCTP_CONFIG);
-            config_get( SCTPParams,sizeof(SCTPParams)/sizeof(paramdef_t),aprefix); 
-            S1AP_REGISTER_ENB_REQ (msg_p).sctp_in_streams = (uint16_t)*(SCTPParams[ENB_SCTP_INSTREAMS_IDX].uptr);
-            S1AP_REGISTER_ENB_REQ (msg_p).sctp_out_streams = (uint16_t)*(SCTPParams[ENB_SCTP_OUTSTREAMS_IDX].uptr);
-#endif
+            if (EPC_MODE_ENABLED) {
+	      sprintf(aprefix,"%s.[%i].%s",ENB_CONFIG_STRING_ENB_LIST,k,ENB_CONFIG_STRING_SCTP_CONFIG);
+              config_get( SCTPParams,sizeof(SCTPParams)/sizeof(paramdef_t),aprefix); 
+              S1AP_REGISTER_ENB_REQ (msg_p).sctp_in_streams = (uint16_t)*(SCTPParams[ENB_SCTP_INSTREAMS_IDX].uptr);
+              S1AP_REGISTER_ENB_REQ (msg_p).sctp_out_streams = (uint16_t)*(SCTPParams[ENB_SCTP_OUTSTREAMS_IDX].uptr);
+              }
 
             sprintf(aprefix,"%s.[%i].%s",ENB_CONFIG_STRING_ENB_LIST,k,ENB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG);
 	    // NETWORK_INTERFACES
@@ -2388,31 +2326,161 @@ int RCconfig_S1(MessageDef *msg_p, uint32_t i) {
 
 		strcpy(S1AP_REGISTER_ENB_REQ (msg_p).enb_ip_address.ipv4_address, address);
 
-		/*
-		in_addr_t  ipv4_address;
+	    break;
+	  }
+	}
+      }
+    }
+  }
+return 0;
+}
 
-				if (address) {
-		  IPV4_STR_ADDR_TO_INT_NWBO ( address, ipv4_address, "BAD IP ADDRESS FORMAT FOR eNB S1_U !\n" );
-		}
-		strcpy(S1AP_REGISTER_ENB_REQ (msg_p).enb_ip_address.ipv4_address, inet_ntoa(ipv4_address));
-		//		S1AP_REGISTER_ENB_REQ (msg_p).enb_port_for_S1U = enb_port_for_S1U;
+int RCconfig_X2(MessageDef *msg_p, uint32_t i)
+{
+  int   j, k, l;
 
+  int   enb_id;
 
-		S1AP_REGISTER_ENB_REQ (msg_p).enb_interface_name_for_S1_MME = strdup(enb_interface_name_for_S1_MME);
-		cidr = enb_ipv4_address_for_S1_MME;
-		address = strtok(cidr, "/");
-		
-		if (address) {
-		  IPV4_STR_ADDR_TO_INT_NWBO ( address, S1AP_REGISTER_ENB_REQ(msg_p).enb_ipv4_address_for_S1_MME, "BAD IP ADDRESS FORMAT FOR eNB S1_MME !\n" );
-		}
-*/
-	  
+  char *address = NULL;
+  char *cidr    = NULL;
+
+  paramdef_t ENBSParams[] = ENBSPARAMS_DESC;
+  paramdef_t ENBParams[]  = ENBPARAMS_DESC;
+  paramlist_def_t ENBParamList = {ENB_CONFIG_STRING_ENB_LIST,NULL,0};
 
+  /* get global parameters, defined outside any section in the config file */
+  config_get( ENBSParams,sizeof(ENBSParams)/sizeof(paramdef_t),NULL);
+/*#if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
+    if (strcasecmp( *(ENBSParams[ENB_ASN1_VERBOSITY_IDX].strptr), ENB_CONFIG_STRING_ASN1_VERBOSITY_NONE) == 0) {
+      asn_debug      = 0;
+      asn1_xer_print = 0;
+    } else if (strcasecmp( *(ENBSParams[ENB_ASN1_VERBOSITY_IDX].strptr), ENB_CONFIG_STRING_ASN1_VERBOSITY_INFO) == 0) {
+      asn_debug      = 1;
+      asn1_xer_print = 1;
+    } else if (strcasecmp(*(ENBSParams[ENB_ASN1_VERBOSITY_IDX].strptr) , ENB_CONFIG_STRING_ASN1_VERBOSITY_ANNOYING) == 0) {
+      asn_debug      = 1;
+      asn1_xer_print = 2;
+    } else {
+      asn_debug      = 0;
+      asn1_xer_print = 0;
+    }
+#endif */
 
+  AssertFatal(i < ENBSParams[ENB_ACTIVE_ENBS_IDX].numelt,
+              "Failed to parse config file %s, %uth attribute %s \n",
+              RC.config_file_name, i, ENB_CONFIG_STRING_ACTIVE_ENBS);
 
-	    break;
-	  }
-	}
+  if (ENBSParams[ENB_ACTIVE_ENBS_IDX].numelt > 0) {
+    // Output a list of all eNBs.
+    config_getlist( &ENBParamList,ENBParams,sizeof(ENBParams)/sizeof(paramdef_t),NULL);
+    if (ENBParamList.numelt > 0) {
+      for (k = 0; k < ENBParamList.numelt; k++) {
+        if (ENBParamList.paramarray[k][ENB_ENB_ID_IDX].uptr == NULL) {
+          // Calculate a default eNB ID
+# if defined(ENABLE_USE_MME)
+          uint32_t hash;
+
+          hash = s1ap_generate_eNB_id ();
+          enb_id = k + (hash & 0xFFFF8);
+# else
+          enb_id = k;
+# endif
+        } else {
+          enb_id = *(ENBParamList.paramarray[k][ENB_ENB_ID_IDX].uptr);
+        }
+
+        // search if in active list
+        for (j = 0; j < ENBSParams[ENB_ACTIVE_ENBS_IDX].numelt; j++) {
+          if (strcmp(ENBSParams[ENB_ACTIVE_ENBS_IDX].strlistptr[j], *(ENBParamList.paramarray[k][ENB_ENB_NAME_IDX].strptr)) == 0) {
+
+            paramdef_t X2Params[]  = X2PARAMS_DESC;
+            paramlist_def_t X2ParamList = {ENB_CONFIG_STRING_TARGET_ENB_X2_IP_ADDRESS,NULL,0};
+
+            paramdef_t SCTPParams[]  = SCTPPARAMS_DESC;
+            paramdef_t NETParams[]  =  NETPARAMS_DESC;
+            char aprefix[MAX_OPTNAME_SIZE*2 + 8];
+
+            /* Some default/random parameters */
+
+            X2AP_REGISTER_ENB_REQ (msg_p).eNB_id = enb_id;
+
+            if (strcmp(*(ENBParamList.paramarray[k][ENB_CELL_TYPE_IDX].strptr), "CELL_MACRO_ENB") == 0) {
+              X2AP_REGISTER_ENB_REQ (msg_p).cell_type = CELL_MACRO_ENB;
+            } else  if (strcmp(*(ENBParamList.paramarray[k][ENB_CELL_TYPE_IDX].strptr), "CELL_HOME_ENB") == 0) {
+              X2AP_REGISTER_ENB_REQ (msg_p).cell_type = CELL_HOME_ENB;
+            } else {
+              AssertFatal (0,
+                  "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for cell_type choice: CELL_MACRO_ENB or CELL_HOME_ENB !\n",
+                  RC.config_file_name, i, *(ENBParamList.paramarray[k][ENB_CELL_TYPE_IDX].strptr));
+            }
+
+            X2AP_REGISTER_ENB_REQ (msg_p).eNB_name         = strdup(*(ENBParamList.paramarray[k][ENB_ENB_NAME_IDX].strptr));
+            X2AP_REGISTER_ENB_REQ (msg_p).tac              = (uint16_t)atoi(*(ENBParamList.paramarray[k][ENB_TRACKING_AREA_CODE_IDX].strptr));
+            X2AP_REGISTER_ENB_REQ (msg_p).mcc              = (uint16_t)atoi(*(ENBParamList.paramarray[k][ENB_MOBILE_COUNTRY_CODE_IDX].strptr));
+            X2AP_REGISTER_ENB_REQ (msg_p).mnc              = (uint16_t)atoi(*(ENBParamList.paramarray[k][ENB_MOBILE_NETWORK_CODE_IDX].strptr));
+            X2AP_REGISTER_ENB_REQ (msg_p).mnc_digit_length = strlen(*(ENBParamList.paramarray[k][ENB_MOBILE_NETWORK_CODE_IDX].strptr));
+
+            AssertFatal((X2AP_REGISTER_ENB_REQ (msg_p).mnc_digit_length == 2) ||
+                        (X2AP_REGISTER_ENB_REQ (msg_p).mnc_digit_length == 3),
+                        "BAD MNC DIGIT LENGTH %d",
+                        X2AP_REGISTER_ENB_REQ (msg_p).mnc_digit_length);
+
+            sprintf(aprefix,"%s.[%i]",ENB_CONFIG_STRING_ENB_LIST,k);
+            config_getlist( &X2ParamList,X2Params,sizeof(X2Params)/sizeof(paramdef_t),aprefix);
+
+            if(X2ParamList.numelt>X2AP_MAX_NB_ENB_IP_ADDRESS){
+		 LOG_E(RRC,"value of X2ParamList.numelt %d must be lower than X2AP_MAX_NB_ENB_IP_ADDRESS %d value: reconsider to increase X2AP_MAX_NB_ENB_IP_ADDRESS\n",X2ParamList.numelt,X2AP_MAX_NB_ENB_IP_ADDRESS);
+		 exit(1);
+	    }
+
+            X2AP_REGISTER_ENB_REQ (msg_p).nb_x2 = 0;
+            for (l = 0; l < X2ParamList.numelt; l++) {
+              X2AP_REGISTER_ENB_REQ (msg_p).nb_x2 += 1;
+
+              strcpy(X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4_address,*(X2ParamList.paramarray[l][ENB_X2_IPV4_ADDRESS_IDX].strptr));
+              strcpy(X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6_address,*(X2ParamList.paramarray[l][ENB_X2_IPV6_ADDRESS_IDX].strptr));
+
+              if (strcmp(*(X2ParamList.paramarray[l][ENB_X2_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv4") == 0) {
+                X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4 = 1;
+              } else if (strcmp(*(X2ParamList.paramarray[l][ENB_X2_IP_ADDRESS_PREFERENCE_IDX].strptr), "ipv6") == 0) {
+                X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6 = 1;
+              } else if (strcmp(*(X2ParamList.paramarray[l][ENB_X2_IP_ADDRESS_PREFERENCE_IDX].strptr), "no") == 0) {
+                X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv4 = 1;
+                X2AP_REGISTER_ENB_REQ (msg_p).target_enb_x2_ip_address[l].ipv6 = 1;
+              }
+            }
+
+            // SCTP SETTING
+            X2AP_REGISTER_ENB_REQ (msg_p).sctp_out_streams = SCTP_OUT_STREAMS;
+            X2AP_REGISTER_ENB_REQ (msg_p).sctp_in_streams  = SCTP_IN_STREAMS;
+# if defined(ENABLE_USE_MME)
+            sprintf(aprefix,"%s.[%i].%s",ENB_CONFIG_STRING_ENB_LIST,k,ENB_CONFIG_STRING_SCTP_CONFIG);
+            config_get( SCTPParams,sizeof(SCTPParams)/sizeof(paramdef_t),aprefix);
+            X2AP_REGISTER_ENB_REQ (msg_p).sctp_in_streams = (uint16_t)*(SCTPParams[ENB_SCTP_INSTREAMS_IDX].uptr);
+            X2AP_REGISTER_ENB_REQ (msg_p).sctp_out_streams = (uint16_t)*(SCTPParams[ENB_SCTP_OUTSTREAMS_IDX].uptr);
+#endif
+
+            sprintf(aprefix,"%s.[%i].%s",ENB_CONFIG_STRING_ENB_LIST,k,ENB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG);
+
+            // NETWORK_INTERFACES
+            config_get( NETParams,sizeof(NETParams)/sizeof(paramdef_t),aprefix);
+
+            X2AP_REGISTER_ENB_REQ (msg_p).enb_port_for_X2C = (uint32_t)*(NETParams[ENB_PORT_FOR_X2C_IDX].uptr);
+
+            if ((NETParams[ENB_IPV4_ADDR_FOR_X2C_IDX].strptr == NULL) || (X2AP_REGISTER_ENB_REQ (msg_p).enb_port_for_X2C == 0)) {
+              LOG_E(RRC,"Add eNB IPv4 address and/or port for X2C in the CONF file!\n");
+              exit(1);
+            }
+
+            cidr = *(NETParams[ENB_IPV4_ADDR_FOR_X2C_IDX].strptr);
+            address = strtok(cidr, "/");
+
+            X2AP_REGISTER_ENB_REQ (msg_p).enb_x2_ip_address.ipv6 = 0;
+            X2AP_REGISTER_ENB_REQ (msg_p).enb_x2_ip_address.ipv4 = 1;
+
+            strcpy(X2AP_REGISTER_ENB_REQ (msg_p).enb_x2_ip_address.ipv4_address, address);
+          }
+        }
       }
     }
   }
@@ -2436,8 +2504,11 @@ void RCConfig(void) {
   printf("Getting ENBSParams\n");
  
   config_get( ENBSParams,sizeof(ENBSParams)/sizeof(paramdef_t),NULL); 
+# if defined(ENABLE_USE_MME)
+  EPC_MODE_ENABLED = ((*ENBSParams[ENB_NOS1_IDX].uptr) == 0);
+#endif
   RC.nb_inst = ENBSParams[ENB_ACTIVE_ENBS_IDX].numelt;
- 
+
   if (RC.nb_inst > 0) {
     RC.nb_CC = (int *)malloc((1+RC.nb_inst)*sizeof(int));
     for (int i=0;i<RC.nb_inst;i++) {
diff --git a/openair2/ENB_APP/enb_config.h b/openair2/ENB_APP/enb_config.h
index 6e89ec8fcca534daffd47c5d9acf43bb459cc5dc..ed1b4aeaa2924dd08f49be84d5f20337b307a044 100644
--- a/openair2/ENB_APP/enb_config.h
+++ b/openair2/ENB_APP/enb_config.h
@@ -106,6 +106,7 @@ void                          ru_config_display(void);
 
 int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc);
 int RCconfig_S1(MessageDef *msg_p, uint32_t i);
+int RCconfig_X2(MessageDef *msg_p, uint32_t i);
 
 #endif /* ENB_CONFIG_H_ */
 /** @} */
diff --git a/openair2/ENB_APP/enb_paramdef.h b/openair2/ENB_APP/enb_paramdef.h
index 23b4c2a8376e90349ce8a7f03fbc36dd85dcfb0a..04edea1493b955f5840e7da84ead7099168bfc2b 100755
--- a/openair2/ENB_APP/enb_paramdef.h
+++ b/openair2/ENB_APP/enb_paramdef.h
@@ -55,11 +55,6 @@
 
 
 
-#if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
-extern int asn_debug;
-extern int asn1_xer_print;
-#endif
-
 #ifdef LIBCONFIG_LONG
 #define libconfig_int long
 #else
@@ -102,6 +97,8 @@ typedef enum {
 #define CONFIG_STRING_RU_MAX_RXGAIN               "max_rxgain"
 #define CONFIG_STRING_RU_IF_COMPRESSION           "if_compression"
 #define CONFIG_STRING_RU_NBIOTRRC_LIST            "NbIoT_RRC_instances"
+#define CONFIG_STRING_RU_SDR_ADDRS                "sdr_addrs"
+#define CONFIG_STRING_RU_SDR_CLK_SRC              "clock_src"
 
 #define RU_LOCAL_IF_NAME_IDX          0
 #define RU_LOCAL_ADDRESS_IDX          1
@@ -121,6 +118,8 @@ typedef enum {
 #define RU_ATT_TX_IDX                 15
 #define RU_ATT_RX_IDX                 16
 #define RU_NBIOTRRC_LIST_IDX          17
+#define RU_SDR_ADDRS                  18
+#define RU_SDR_CLK_SRC                19
 
 
 
@@ -147,6 +146,8 @@ typedef enum {
 {CONFIG_STRING_RU_ATT_TX,                   	 NULL,       0,       uptr:NULL,       defintval:0,		TYPE_UINT,	  0}, \
 {CONFIG_STRING_RU_ATT_RX,                   	 NULL,       0,       uptr:NULL,       defintval:0,		TYPE_UINT,	  0}, \
 {CONFIG_STRING_RU_NBIOTRRC_LIST,                 NULL,       0,       uptr:NULL,       defintarrayval:DEFENBS,  TYPE_INTARRAY,    1}, \
+{CONFIG_STRING_RU_SDR_ADDRS,                 	 NULL,       0,       strptr:NULL,     defstrval:"0.0.0.0",   TYPE_STRING,      0}, \
+{CONFIG_STRING_RU_SDR_CLK_SRC,               	 NULL,       0,       strptr:NULL,     defstrval:"internal",   TYPE_STRING,      0}, \
 }
 
 /*---------------------------------------------------------------------------------------------------------------------------------------*/
@@ -160,25 +161,19 @@ typedef enum {
 /* global parameters, not under a specific section   */
 #define ENB_CONFIG_STRING_ASN1_VERBOSITY           "Asn1_verbosity"
 #define ENB_CONFIG_STRING_ACTIVE_ENBS              "Active_eNBs"
+#define ENB_CONFIG_STRING_NOS1                     "noS1"
 /*--------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 /*                                            global configuration parameters                                                                                   */
-/*   optname                                   helpstr   paramflags    XXXptr        defXXXval                                        type           numelt     */
+/*   optname                          helpstr      paramflags          XXXptr        defXXXval                                        type           numelt     */
 /*--------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 #define ENBSPARAMS_DESC {                                                                                             \
-{ENB_CONFIG_STRING_ASN1_VERBOSITY,             NULL,     0,        uptr:NULL,   defstrval:ENB_CONFIG_STRING_ASN1_VERBOSITY_NONE,   TYPE_STRING,      0},   \
-{ENB_CONFIG_STRING_ACTIVE_ENBS,                NULL,     0,        uptr:NULL,   defstrval:NULL, 				   TYPE_STRINGLIST,  0}    \
+{ENB_CONFIG_STRING_ASN1_VERBOSITY,      NULL,     0,                   uptr:NULL,   defstrval:ENB_CONFIG_STRING_ASN1_VERBOSITY_NONE,   TYPE_STRING,      0},   \
+{ENB_CONFIG_STRING_ACTIVE_ENBS,         NULL,     0,                   uptr:NULL,   defstrval:NULL, 				       TYPE_STRINGLIST,  0},   \
+{ENB_CONFIG_STRING_NOS1,                NULL,     PARAMFLAG_BOOL,      uptr:NULL,   defintval:0, 				       TYPE_UINT,        0},   \
 }
 #define ENB_ASN1_VERBOSITY_IDX                     0
 #define ENB_ACTIVE_ENBS_IDX                        1
-
-
-/*
-{ENB_CONFIG_STRING_COMPONENT_CARRIERS,"",   "",   0,   uptr:NULL,defstrval:ENB_CONFIG_STRING_ASN1_VERBOSITY_NONE,TYPE_STRING,0},           \
-{ENB_CONFIG_STRING_CC_NODE_FUNCTION,"",   "",   0,   uptr:NULL,defstrval:ENB_CONFIG_STRING_ASN1_VERBOSITY_NONE,TYPE_STRING,0},           \
-{ENB_CONFIG_STRING_CC_NODE_TIMING,"",   "",   0,   uptr:NULL,defstrval:ENB_CONFIG_STRING_ASN1_VERBOSITY_NONE,TYPE_STRING,0},           \
-{ENB_CONFIG_STRING_CC_NODE_SYNCH_REF,"",   "",   0,   uptr:NULL,defstrval:ENB_CONFIG_STRING_ASN1_VERBOSITY_NONE,TYPE_STRING,0},           \
-*/
-
+#define ENB_NOS1_IDX                               2
 
 
 /*------------------------------------------------------------------------------------------------------------------------------------------*/
@@ -704,6 +699,31 @@ typedef enum {
 #define ENB_MME_IP_ADDRESS_ACTIVE_IDX     2
 #define ENB_MME_IP_ADDRESS_PREFERENCE_IDX 3
 /*---------------------------------------------------------------------------------------------------------------------------------------*/
+
+/* X2 configuration parameters section name */
+#define ENB_CONFIG_STRING_TARGET_ENB_X2_IP_ADDRESS                "target_enb_x2_ip_address"
+
+/* X2 configuration parameters names   */
+
+
+#define ENB_CONFIG_STRING_TARGET_ENB_X2_IPV4_ADDRESS              "ipv4"
+#define ENB_CONFIG_STRING_TARGET_ENB_X2_IPV6_ADDRESS              "ipv6"
+#define ENB_CONFIG_STRING_TARGET_ENB_X2_IP_ADDRESS_PREFERENCE     "preference"
+
+
+/*-------------------------------------------------------------------------------------------------------------------------------------*/
+/*                                            X2 configuration parameters                                                             */
+/*   optname                                          helpstr   paramflags    XXXptr       defXXXval         type           numelt     */
+/*-------------------------------------------------------------------------------------------------------------------------------------*/
+#define X2PARAMS_DESC {  \
+{ENB_CONFIG_STRING_TARGET_ENB_X2_IPV4_ADDRESS,                   NULL,      0,         uptr:NULL,   defstrval:NULL,   TYPE_STRING,   0},          \
+{ENB_CONFIG_STRING_TARGET_ENB_X2_IPV6_ADDRESS,                   NULL,      0,         uptr:NULL,   defstrval:NULL,   TYPE_STRING,   0},          \
+{ENB_CONFIG_STRING_TARGET_ENB_X2_IP_ADDRESS_PREFERENCE,          NULL,      0,         uptr:NULL,   defstrval:NULL,   TYPE_STRING,   0},          \
+}
+
+#define ENB_X2_IPV4_ADDRESS_IDX          0
+#define ENB_X2_IPV6_ADDRESS_IDX          1
+#define ENB_X2_IP_ADDRESS_PREFERENCE_IDX 2
 /*---------------------------------------------------------------------------------------------------------------------------------------*/
 /* SCTP configuration parameters section name */
 #define ENB_CONFIG_STRING_SCTP_CONFIG                    "SCTP"
@@ -735,6 +755,8 @@ typedef enum {
 #define ENB_INTERFACE_NAME_FOR_S1U_IDX             2
 #define ENB_IPV4_ADDR_FOR_S1U_IDX                  3
 #define ENB_PORT_FOR_S1U_IDX                       4
+#define ENB_IPV4_ADDR_FOR_X2C_IDX		   5
+#define ENB_PORT_FOR_X2C_IDX			   6
 
 /* S1 interface configuration parameters names   */
 #define ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1_MME "ENB_INTERFACE_NAME_FOR_S1_MME"
@@ -743,8 +765,12 @@ typedef enum {
 #define ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_S1U         "ENB_IPV4_ADDRESS_FOR_S1U"
 #define ENB_CONFIG_STRING_ENB_PORT_FOR_S1U              "ENB_PORT_FOR_S1U"
 
+/* X2 interface configuration parameters names */
+#define ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_X2C         "ENB_IPV4_ADDRESS_FOR_X2C"
+#define ENB_CONFIG_STRING_ENB_PORT_FOR_X2C              "ENB_PORT_FOR_X2C"
+
 /*--------------------------------------------------------------------------------------------------------------------------------------------------*/
-/*                                            S1 interface configuration parameters                                                                 */
+/*                                            S1/X2 interface configuration parameters                                                                 */
 /*   optname                                            helpstr   paramflags    XXXptr              defXXXval             type           numelt     */
 /*--------------------------------------------------------------------------------------------------------------------------------------------------*/
 #define NETPARAMS_DESC {  \
@@ -752,7 +778,9 @@ typedef enum {
 {ENB_CONFIG_STRING_ENB_IPV4_ADDRESS_FOR_S1_MME,          NULL,      0,         strptr:NULL,         defstrval:NULL,      TYPE_STRING,      0},      \
 {ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1U,           NULL,      0,         strptr:NULL,         defstrval:NULL,      TYPE_STRING,      0},      \
 {ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_S1U,                NULL,      0,         strptr:NULL,         defstrval:NULL,      TYPE_STRING,      0},      \
-{ENB_CONFIG_STRING_ENB_PORT_FOR_S1U,                     NULL,      0,         uptr:NULL,           defintval:2152L,     TYPE_UINT,        0}       \
+{ENB_CONFIG_STRING_ENB_PORT_FOR_S1U,                     NULL,      0,         uptr:NULL,           defintval:2152L,     TYPE_UINT,        0},      \
+{ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_X2C,                NULL,      0,         strptr:NULL,         defstrval:NULL,      TYPE_STRING,      0},      \
+{ENB_CONFIG_STRING_ENB_PORT_FOR_X2C,                     NULL,      0,         uptr:NULL,           defintval:0L,        TYPE_UINT,        0},      \
 }   
 
 
diff --git a/openair2/ENB_APP/flexran_agent.h b/openair2/ENB_APP/flexran_agent.h
index aed8f9eb60dc386700e74fbd1eeb7e7fddd5f96b..4ce727ff1c7c89e305ccb7ff2d1641010122e64a 100644
--- a/openair2/ENB_APP/flexran_agent.h
+++ b/openair2/ENB_APP/flexran_agent.h
@@ -39,7 +39,7 @@
 #include "flexran_agent_mac.h"
 #include "flexran_agent_rrc.h"
 #include "flexran_agent_pdcp.h"
-#include "log.h"
+#include "common/utils/LOG/log.h"
 #include "assertions.h"
 
 /* Initiation of the eNodeB agent */
diff --git a/openair2/ENB_APP/flexran_agent_common.c b/openair2/ENB_APP/flexran_agent_common.c
index 3bbea167d37dfacf1e8e2ca6cc0c576a2918f18d..db1943c9451f15304902cefd1d5ee080897280bf 100644
--- a/openair2/ENB_APP/flexran_agent_common.c
+++ b/openair2/ENB_APP/flexran_agent_common.c
@@ -36,7 +36,7 @@
 #include "flexran_agent_net_comm.h"
 #include "flexran_agent_ran_api.h"
 //#include "PHY/extern.h"
-#include "log.h"
+#include "common/utils/LOG/log.h"
 
 //#include "SCHED/defs.h"
 #include "RRC/LTE/rrc_extern.h"
diff --git a/openair2/ENB_APP/flexran_agent_handler.c b/openair2/ENB_APP/flexran_agent_handler.c
index d4c82e4dff127b12828c1a72ed6779705cf73714..66123fd71c60197ec9c40297bce7dc59f1e66343 100644
--- a/openair2/ENB_APP/flexran_agent_handler.c
+++ b/openair2/ENB_APP/flexran_agent_handler.c
@@ -33,7 +33,7 @@
 #include "flexran_agent_pdcp.h"
 #include "flexran_agent_timer.h"
 #include "flexran_agent_ran_api.h"
-#include "log.h"
+#include "common/utils/LOG/log.h"
 
 #include "assertions.h"
 
diff --git a/openair2/ENB_APP/flexran_agent_ran_api.h b/openair2/ENB_APP/flexran_agent_ran_api.h
index 3354d8ace875da91ed0dc6fc9b53f5fca5225877..dacca55ab78a2bba6f642c25bc7e5d710429ba3a 100644
--- a/openair2/ENB_APP/flexran_agent_ran_api.h
+++ b/openair2/ENB_APP/flexran_agent_ran_api.h
@@ -43,7 +43,7 @@
 #include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
 #include "RRC/LTE/rrc_eNB_UE_context.h"
 #include "PHY/phy_extern.h"
-#include "log.h"
+#include "common/utils/LOG/log.h"
 
 /****************************
  * get generic info from RAN
diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c
index dc7cbd409c4db13361bf2e1b7f1137179f7fcb48..a2988f26d8c27b34265fe94635d625e2858935c0 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler.c
@@ -538,8 +538,8 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frameP,
 	      0 ? "in synch" : "out of sync",
 	      UE_list->UE_template[CC_id][i].phr_info,
 	      UE_list->UE_sched_ctrl[i].dl_cqi[CC_id],
-	      (UE_list->UE_sched_ctrl[i].pusch_snr[CC_id] - 128) / 2,
-	      (UE_list->UE_sched_ctrl[i].pucch1_snr[CC_id] - 128) / 2);
+	      (5*UE_list->UE_sched_ctrl[i].pusch_snr[CC_id] - 640) / 10,
+	      (5*UE_list->UE_sched_ctrl[i].pucch1_snr[CC_id] - 640) / 10);
       }
       
       RC.eNB[module_idP][CC_id]->pusch_stats_bsr[i][(frameP * 10) +
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_RA.c b/openair2/LAYER2/MAC/eNB_scheduler_RA.c
index 35590ec896716ca9777c774fbe215690a36ae04e..b637a92a9616f53e447cb422087a43dd3789eff4 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_RA.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_RA.c
@@ -988,9 +988,10 @@ generate_Msg4(module_id_t module_idP, int CC_idP, frame_t frameP,
 			   payload[0], ra->msg4_TBsize));
 
 		if (opt_enabled == 1) {
-		    trace_pdu(1,
+		    trace_pdu(DIRECTION_DOWNLINK,
 			      (uint8_t *) mac->
-			      UE_list.DLSCH_pdu[CC_idP][0][(unsigned char)UE_id].payload[0], rrc_sdu_length, UE_id, 3,
+			      UE_list.DLSCH_pdu[CC_idP][0][(unsigned char)UE_id].payload[0],
+			      rrc_sdu_length, UE_id, WS_C_RNTI,
 			      UE_RNTI(module_idP, UE_id), mac->frame,
 			      mac->subframe, 0, 0);
 		    LOG_D(OPT,
@@ -1193,9 +1194,10 @@ generate_Msg4(module_id_t module_idP, int CC_idP, frame_t frameP,
 			   payload[0], ra->msg4_TBsize));
 
 		if (opt_enabled == 1) {
-		    trace_pdu(1,
+		    trace_pdu(DIRECTION_DOWNLINK,
 			      (uint8_t *) mac->
-			      UE_list.DLSCH_pdu[CC_idP][0][(unsigned char)UE_id].payload[0], rrc_sdu_length, UE_id, 3,
+			      UE_list.DLSCH_pdu[CC_idP][0][(unsigned char)UE_id].payload[0],
+			      rrc_sdu_length, UE_id,  WS_C_RNTI,
 			      UE_RNTI(module_idP, UE_id), mac->frame,
 			      mac->subframe, 0, 0);
 		    LOG_D(OPT,
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_bch.c b/openair2/LAYER2/MAC/eNB_scheduler_bch.c
index d965bc811bf1c07ccf84c5e816a63ce5ffbe1a01..b2b59691f88db67daeafa8dbe2db05a8267bce01 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_bch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_bch.c
@@ -281,10 +281,10 @@ schedule_SIB1_BR(module_id_t module_idP,
         eNB->TX_req[CC_id].header.message_id = NFAPI_TX_REQUEST;
 
 	if (opt_enabled == 1) {
-	    trace_pdu(1,
+	    trace_pdu(DIRECTION_DOWNLINK,
 		      &cc->BCCH_BR_pdu[0].payload[0],
 		      bcch_sdu_length,
-		      0xffff, 4, 0xffff, eNB->frame, eNB->subframe, 0, 0);
+		      0xffff, WS_SI_RNTI, 0xffff, eNB->frame, eNB->subframe, 0, 0);
 	    LOG_D(OPT,
 		  "[eNB %d][BCH] Frame %d trace pdu for CC_id %d rnti %x with size %d\n",
 		  module_idP, frameP, CC_id, 0xffff, bcch_sdu_length);
@@ -472,11 +472,11 @@ schedule_SI_BR(module_id_t module_idP, frame_t frameP,
                         eNB->TX_req[CC_id].header.message_id = NFAPI_TX_REQUEST;
 
 			if (opt_enabled == 1) {
-			    trace_pdu(1,
+			    trace_pdu(DIRECTION_DOWNLINK,
 				      &cc->BCCH_BR_pdu[i + 1].payload[0],
 				      bcch_sdu_length,
 				      0xffff,
-				      4,
+				      WS_SI_RNTI,
 				      0xffff, eNB->frame, eNB->subframe, 0,
 				      0);
 			    LOG_D(OPT,
@@ -759,11 +759,11 @@ schedule_SI(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP)
 		}
 
 		if (opt_enabled == 1) {
-		    trace_pdu(1,
+		    trace_pdu(DIRECTION_DOWNLINK,
 			      &cc->BCCH_pdu.payload[0],
 			      bcch_sdu_length,
 			      0xffff,
-			      4, 0xffff, eNB->frame, eNB->subframe, 0, 0);
+			     WS_SI_RNTI, 0xffff, eNB->frame, eNB->subframe, 0, 0);
 		    LOG_D(OPT,
 			  "[eNB %d][BCH] Frame %d trace pdu for CC_id %d rnti %x with size %d\n",
 			  module_idP, frameP, CC_id, 0xffff,
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
index 05498e4377b0abb24a883da61da4a027cebed93c..da52a8fedcdf9013f47df5231c3f2042fb6353bd 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
@@ -386,6 +386,7 @@ set_ul_DAI(int module_idP, int UE_idP, int CC_idP, int frameP,
         UE_list->UE_template[CC_idP][UE_idP].DAI_ul[3] = DAI;
         break;
       }
+      break;
 
     case 2:
       //      if ((subframeP==3)||(subframeP==8))
@@ -1358,9 +1359,9 @@ schedule_ue_spec(module_id_t module_idP,slice_id_t slice_idP,
 	  }
 
 	  if (opt_enabled == 1) {
-	    trace_pdu(1, (uint8_t *)
-		      UE_list->DLSCH_pdu[CC_id][0][UE_id].
-		      payload[0], TBS, module_idP, 3,
+	    trace_pdu(DIRECTION_DOWNLINK,
+		      (uint8_t *) UE_list->DLSCH_pdu[CC_id][0][UE_id].payload[0],
+		      TBS, module_idP, WS_C_RNTI,
 		      UE_RNTI(module_idP, UE_id), eNB->frame,
 		      eNB->subframe, 0, 0);
 	    LOG_D(OPT,
@@ -2084,7 +2085,7 @@ void schedule_PCH(module_id_t module_idP,frame_t frameP,sub_frame_t subframeP)
 	}
 
 	if (opt_enabled == 1) {
-	  trace_pdu(1,
+	  trace_pdu(DIRECTION_DOWNLINK,
 		    &eNB->common_channels[CC_id].PCCH_pdu.payload[0],
 		    pcch_sdu_length,
 		    0xffff,
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c b/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
index 1acf65722099af3c1cf4df99251ebbcbbe591355..76589eebdb7c0ade1ffe50acaf4813bec3138154 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
@@ -1655,8 +1655,8 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
           }
 
           if (opt_enabled == 1) {
-            trace_pdu(1, (uint8_t *)UE_list->DLSCH_pdu[CC_id][0][UE_id].payload[0],
-                      TBS, module_idP, 3, UE_RNTI(module_idP,UE_id),
+            trace_pdu(DIRECTION_DOWNLINK, (uint8_t *)UE_list->DLSCH_pdu[CC_id][0][UE_id].payload[0],
+                      TBS, module_idP, WS_RA_RNTI, UE_RNTI(module_idP,UE_id),
                       eNB->frame, eNB->subframe,0,0);
             LOG_D(OPT,"[eNB %d][DLSCH] CC_id %d Frame %d  rnti %x  with size %d\n",
                   module_idP, CC_id, frameP, UE_RNTI(module_idP,UE_id), TBS);
@@ -1696,9 +1696,9 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
           // this is the normalized RX power
 	  eNB_UE_stats =  &UE_list->eNB_UE_stats[CC_id][UE_id];
 
-          /* TODO: fix how we deal with power, unit is not dBm, it's special from nfapi */
-	  normalized_rx_power = ue_sched_ctl->pucch1_snr[CC_id];
-	  target_rx_power = 208;
+          /* Unit is not dBm, it's special from nfapi */
+      normalized_rx_power = (5*ue_sched_ctl->pucch1_snr[CC_id]-640)/10+30;//(+eNB->measurements.n0_power_dB[0])
+	  target_rx_power= eNB->puCch10xSnr/10 + 30;//(+eNB->measurements.n0_power_dB[0])
 	    
           // this assumes accumulated tpc
 	  // make sure that we are only sending a tpc update once a frame, otherwise the control loop will freak out
@@ -2690,9 +2690,25 @@ void schedule_ulsch_rnti_fairRR(module_id_t   module_idP,
       if (status < RRC_CONNECTED)
         cqi_req = 0;
       else if (UE_sched_ctrl->cqi_req_timer>30) {
-        cqi_req = 1;
-        UE_sched_ctrl->cqi_req_timer=0;
-        UE_sched_ctrl->cqi_req_flag |= 1 << sched_subframeP;
+    	  cqi_req = 1;
+		   // To be safe , do not ask CQI in special SFs:36.213/7.2.3 CQI definition
+			if (cc->tdd_Config) {
+			  switch (cc->tdd_Config->subframeAssignment) {
+				  case 1:
+					if( subframeP == 1 || subframeP == 6 ) cqi_req=0;
+					break;
+				  case 3:
+					if( subframeP == 1 ) cqi_req=0;
+					break;
+				  default:
+					LOG_E(MAC," TDD config not supported\n");
+					break;
+			  }
+			}
+			if(cqi_req == 1){
+				UE_sched_ctrl->cqi_req_timer=0;
+				UE_sched_ctrl->cqi_req_flag |= 1 << sched_subframeP;
+			}
       }
       else
         cqi_req = 0;
@@ -2701,8 +2717,8 @@ void schedule_ulsch_rnti_fairRR(module_id_t   module_idP,
       //compute the expected ULSCH RX power (for the stats)
 
       // this is the normalized RX power and this should be constant (regardless of mcs
-      normalized_rx_power = UE_sched_ctrl->pusch_snr[CC_id];
-      target_rx_power = 178;
+      normalized_rx_power = (5*UE_sched_ctrl->pusch_snr[CC_id]-640)/10+30; //(+eNB->measurements.n0_power_dB[0])
+      target_rx_power= eNB->puSch10xSnr/10 + 30; //(+eNB->measurements.n0_power_dB[0])
 
       // this assumes accumulated tpc
       // make sure that we are only sending a tpc update once a frame, otherwise the control loop will freak out
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_mch.c b/openair2/LAYER2/MAC/eNB_scheduler_mch.c
index 63a471177881ab5fafc6cfd71bdecf0825a79265..16953e958a8ffe39ee32593e2a4053f8fb5567f9 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_mch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_mch.c
@@ -767,7 +767,7 @@ schedule_MBMS(module_id_t module_idP, uint8_t CC_id, frame_t frameP,
 
 	/* Tracing of PDU is done on UE side */
 	if (opt_enabled == 1) {
-	    trace_pdu(1, (uint8_t *) cc->MCH_pdu.payload, TBS, module_idP, 6, 0xffff,	// M_RNTI = 6 in wirehsark
+	    trace_pdu(DIRECTION_DOWNLINK, (uint8_t *) cc->MCH_pdu.payload, TBS, module_idP, WS_M_RNTI , 0xffff,	// M_RNTI = 6 in wirehsark
 		      RC.mac[module_idP]->frame,
 		      RC.mac[module_idP]->subframe, 0, 0);
 	    LOG_D(OPT,
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_phytest.c b/openair2/LAYER2/MAC/eNB_scheduler_phytest.c
index 4a2c8f7ec81b88e1dac91d6a6cc0bd46c913c3a3..03def311723c157b227742d2e5f4e74b0cadf66d 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_phytest.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_phytest.c
@@ -67,13 +67,13 @@ schedule_ue_spec_phy_test(
   uint16_t                       TBS;
   uint16_t                       nb_rb;
 
-  unsigned char                  harq_pid  = subframeP%5;
+  unsigned char                  harq_pid  = (frameP*10+subframeP)%8;
   uint16_t                       rnti      = 0x1235;
-  uint32_t                       rb_alloc  = 0x1FFFFFFF;
+  uint32_t                       rb_alloc  = 0x1FFFFF;
   int32_t                        tpc       = 1;
-  int32_t                        mcs       = 28;
+  int32_t                        mcs       = 10;
   int32_t                        cqi       = 15;
-  int32_t                        ndi       = subframeP/5;
+  int32_t                        ndi       = (frameP*10+subframeP)/8;
   int32_t                        dai       = 0;
 
   eNB_MAC_INST                   *eNB      = RC.mac[module_idP];
@@ -92,10 +92,9 @@ schedule_ue_spec_phy_test(
       continue;
 
     nb_rb = conv_nprb(0,rb_alloc,N_RB_DL);
-    //printf("////////////////////////////////////*************************nb_rb = %d\n",nb_rb);
     TBS = get_TBS_DL(mcs,nb_rb);
 
-    LOG_D(PHY,"schedule_ue_spec_phy_test: subframe %d/%d: nb_rb=%d, TBS=%d, mcs=%d (rb_alloc=%x, N_RB_DL=%d)\n",frameP,subframeP,nb_rb,TBS,mcs,rb_alloc,N_RB_DL);
+    LOG_D(MAC,"schedule_ue_spec_phy_test: subframe %d/%d: nb_rb=%d, TBS=%d, mcs=%d harq_pid=%d (rb_alloc=%x, N_RB_DL=%d) pdu_number = %d \n", frameP, subframeP, nb_rb, TBS, mcs, harq_pid, rb_alloc, N_RB_DL, dl_req->number_pdu);
 
     dl_config_pdu                                                         = &dl_req->dl_config_pdu_list[dl_req->number_pdu]; 
     memset((void*)dl_config_pdu,0,sizeof(nfapi_dl_config_request_pdu_t));
@@ -136,6 +135,8 @@ schedule_ue_spec_phy_test(
       //ue_sched_ctl->round[CC_id][harq_pid] = 0;
       dl_req->number_dci++;
       dl_req->number_pdu++;
+      eNB->DL_req[CC_id].sfn_sf = frameP<<4 | subframeP;
+      //eNB->DL_req[CC_id].header.message_id = NFAPI_DL_CONFIG_REQUEST;
       
       // Toggle NDI for next time
       /*
@@ -150,7 +151,6 @@ schedule_ue_spec_phy_test(
       AssertFatal(UE_list->UE_template[CC_id][UE_id].physicalConfigDedicated->pdsch_ConfigDedicated!=NULL,"physicalConfigDedicated->pdsch_ConfigDedicated is NULL\n");
       */
 
-
       
       fill_nfapi_dlsch_config(eNB,
 			      dl_req,
@@ -196,32 +196,47 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
   int               UE_id = 0;
   uint8_t           aggregation    = 2;
   rnti_t            rnti           = 0x1235;
-  uint8_t           mcs            = 0;
+  uint8_t           mcs            = 20;
   uint8_t           harq_pid       = 0;
   uint32_t          cqi_req = 0,cshift,ndi,tpc = 1;
   int32_t           normalized_rx_power;
   int32_t           target_rx_power= 178;
   int               CC_id = 0;
-  int               nb_rb = 96;
-  eNB_MAC_INST      *eNB = RC.mac[module_idP];
-  COMMON_channels_t *cc  = eNB->common_channels;
-  UE_list_t         *UE_list=&eNB->UE_list;
+  int               nb_rb = 24;
+  int               N_RB_UL;
+  eNB_MAC_INST      *mac = RC.mac[module_idP];
+  COMMON_channels_t *cc  = &mac->common_channels[0];
+  UE_list_t         *UE_list=&mac->UE_list;
   UE_TEMPLATE       *UE_template;
   UE_sched_ctrl     *UE_sched_ctrl;
   int               sched_frame=frameP;
   int               sched_subframe = (subframeP+4)%10;
-  
+  uint16_t          ul_req_index;
+
   if (sched_subframe<subframeP) sched_frame++;
 
-  nfapi_hi_dci0_request_body_t   *hi_dci0_req = &eNB->HI_DCI0_req[CC_id][subframeP].hi_dci0_request_body;
+  nfapi_hi_dci0_request_t        *hi_dci0_req = &mac->HI_DCI0_req[CC_id][subframeP];
+  nfapi_hi_dci0_request_body_t   *hi_dci0_req_body = &hi_dci0_req->hi_dci0_request_body;
   nfapi_hi_dci0_request_pdu_t    *hi_dci0_pdu;
 
   //nfapi_ul_config_request_pdu_t  *ul_config_pdu = &ul_req->ul_config_pdu_list[0];;
-  nfapi_ul_config_request_body_t *ul_req       = &eNB->UL_req[CC_id].ul_config_request_body;
-
+  nfapi_ul_config_request_body_t *ul_req       = &mac->UL_req[CC_id].ul_config_request_body;
+
+  N_RB_UL         = to_prb(cc->mib->message.dl_Bandwidth);
+  switch(N_RB_UL){
+  case 100:
+    nb_rb = 96;
+    break;
+  case 50:
+    nb_rb = 48;
+    break;
+  case 25:
+    nb_rb = 24;
+    break;
+  }
 
-  eNB->UL_req[CC_id].sfn_sf   = (sched_frame<<4) + sched_subframe;
-  eNB->HI_DCI0_req[CC_id][subframeP].sfn_sf = (frameP<<4)+subframeP;
+  mac->UL_req[CC_id].sfn_sf   = (sched_frame<<4) + sched_subframe;
+  hi_dci0_req->sfn_sf = (frameP << 4) + subframeP;
   
   for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
     //rnti = UE_RNTI(module_idP,UE_id);
@@ -235,7 +250,6 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
       UE_sched_ctrl = &UE_list->UE_sched_ctrl[UE_id];
       harq_pid      = subframe2harqpid(&cc[CC_id],sched_frame,sched_subframe);
 
-      LOG_D(MAC,"Scheduling for frame %d, subframe %d => harq_pid %d\n",sched_frame,sched_subframe,harq_pid);
 
       RC.eNB[module_idP][CC_id]->pusch_stats_BO[UE_id][(frameP*10)+subframeP] = UE_template->TBS_UL[harq_pid];
 
@@ -245,7 +259,7 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
       //compute the expected ULSCH RX power (for the stats)
 	  
       // this is the normalized RX power and this should be constant (regardless of mcs
-      normalized_rx_power = UE_sched_ctrl->pusch_snr[CC_id];
+      normalized_rx_power = (5*UE_sched_ctrl->pusch_snr[CC_id]-640)/10+30;
 	  
       // new transmission
 	  
@@ -281,7 +295,7 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
 	  // save it for a potential retransmission
       UE_template->cshift[harq_pid] = cshift;	    
 
-	  hi_dci0_pdu                                                         = &hi_dci0_req->hi_dci0_pdu_list[eNB->HI_DCI0_req[CC_id][subframeP].hi_dci0_request_body.number_of_dci+eNB->HI_DCI0_req[CC_id][subframeP].hi_dci0_request_body.number_of_hi]; 	
+	  hi_dci0_pdu                                                         = &hi_dci0_req_body->hi_dci0_pdu_list[hi_dci0_req_body->number_of_dci + hi_dci0_req_body->number_of_hi];
 	  memset((void*)hi_dci0_pdu,0,sizeof(nfapi_hi_dci0_request_pdu_t));
 	  hi_dci0_pdu->pdu_type                                               = NFAPI_HI_DCI0_DCI_PDU_TYPE; 
 	  hi_dci0_pdu->pdu_size                                               = 2+sizeof(nfapi_hi_dci0_dci_pdu);
@@ -298,18 +312,26 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
 	  hi_dci0_pdu->dci_pdu.dci_pdu_rel8.tpc                               = tpc;
 	  hi_dci0_pdu->dci_pdu.dci_pdu_rel8.cqi_csi_request                   = cqi_req;
 	  hi_dci0_pdu->dci_pdu.dci_pdu_rel8.dl_assignment_index               = UE_template->DAI_ul[sched_subframe];
+          hi_dci0_pdu->dci_pdu.dci_pdu_rel8.harq_pid                          = harq_pid;
 
+
+	  hi_dci0_req_body->number_of_dci++;
 	    
-	  eNB->HI_DCI0_req[CC_id][subframeP].hi_dci0_request_body.number_of_dci++;
-	    
-	    
+	  ul_req_index = 0;
+            for(ul_req_index = 0;ul_req_index < ul_req->number_of_pdus;ul_req_index++){
+              if(ul_req->ul_config_pdu_list[ul_req_index].pdu_type == NFAPI_UL_CONFIG_UCI_HARQ_PDU_TYPE){
+                LOG_D(MAC,"Frame %d, Subframe %d:rnti %x ul_req_index %d Switched UCI HARQ to ULSCH HARQ(first)\n",frameP,subframeP,rnti,ul_req_index);
+                break;
+              }
+            }
+
 	  // Add UL_config PDUs
-	  fill_nfapi_ulsch_config_request_rel8(&ul_req->ul_config_pdu_list[ul_req->number_of_pdus],
+	  fill_nfapi_ulsch_config_request_rel8(& ul_req->ul_config_pdu_list[ul_req_index],
 						 cqi_req,
 						 cc,
 						 0,//UE_template->physicalConfigDedicated,
 						 get_tmode(module_idP,CC_id,UE_id),
-						 eNB->ul_handle,
+						 mac->ul_handle,//eNB->ul_handle,
 						 rnti,
 						 first_rb[CC_id], // resource_block_start
 						 nb_rb, // number_of_resource_blocks
@@ -327,7 +349,7 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
 						 );
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
 	  if (UE_template->rach_resource_type>0) { // This is a BL/CE UE allocation
-	    fill_nfapi_ulsch_config_request_emtc(&ul_req->ul_config_pdu_list[ul_req->number_of_pdus],
+	    fill_nfapi_ulsch_config_request_emtc(&ul_req->ul_config_pdu_list[ul_req_index],
 						   UE_template->rach_resource_type>2 ? 2 : 1,
 						   1, //total_number_of_repetitions
 						   1, //repetition_number
@@ -335,7 +357,7 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
 	    }
 #endif
 	  ul_req->number_of_pdus = 1;
-	  eNB->ul_handle++;
+	  mac->ul_handle++;
 	    
 	    
 	  	
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
index 04415a838626df5e9f91b59dd599b7d94245faad..f48cf50bcec74a37aa8b8836d8059f089e19f1dd 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
@@ -150,7 +150,7 @@ rx_sdu(const module_id_t enb_mod_idP,
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
     (VCD_SIGNAL_DUMPER_FUNCTIONS_RX_SDU, 1);
   if (opt_enabled == 1) {
-    trace_pdu(0, sduP, sdu_lenP, 0, 3, current_rnti, frameP, subframeP,
+    trace_pdu(DIRECTION_UPLINK, sduP, sdu_lenP, 0, WS_C_RNTI, current_rnti, frameP, subframeP,
 	      0, 0);
     LOG_D(OPT, "[eNB %d][ULSCH] Frame %d  rnti %x  with size %d\n",
 	  enb_mod_idP, frameP, current_rnti, sdu_lenP);
@@ -1337,10 +1337,24 @@ schedule_ulsch_rnti(module_id_t module_idP,
 	  if (status >= RRC_CONNECTED && UE_sched_ctrl->cqi_req_timer > 30) { 
 	    if (UE_sched_ctrl->cqi_received == 0) {
 	      if (nfapi_mode) {
-		cqi_req = 0;
+	    	  cqi_req = 0;
 	      } else {
-		cqi_req = 1;
-		UE_sched_ctrl->cqi_req_flag |= 1 << sched_subframeP;
+	    	  cqi_req = 1;
+		   // To be safe , do not ask CQI in special Subframes:36.213/7.2.3 CQI definition
+			if (cc[CC_id].tdd_Config) {
+			  switch (cc[CC_id].tdd_Config->subframeAssignment) {
+				  case 1:
+					if( subframeP == 1 || subframeP == 6 ) cqi_req=0;
+					break;
+				  case 3:
+					if( subframeP == 1 ) cqi_req=0;
+					break;
+				  default:
+					LOG_E(MAC," TDD config not supported\n");
+					break;
+			  }
+			}
+			if(cqi_req == 1) UE_sched_ctrl->cqi_req_flag |= 1 << sched_subframeP;
 	      }
 	    }
 	    else if (UE_sched_ctrl->cqi_received == 1) {
diff --git a/openair2/LAYER2/MAC/mac.h b/openair2/LAYER2/MAC/mac.h
index d9e914f087009858a77e323fb2c3597609ca3d38..f8121310b1e413496d6663701662051d256f95ed 100644
--- a/openair2/LAYER2/MAC/mac.h
+++ b/openair2/LAYER2/MAC/mac.h
@@ -442,7 +442,7 @@ typedef struct {
 /*!\brief LCID of MCCH for DL */
 #define MCCH_LCHANID 0
 /*!\brief LCID of MCH scheduling info for DL */
-#define MCH_SCHDL_INFO 3
+#define MCH_SCHDL_INFO 30
 /*!\brief LCID of Carrier component activation/deactivation */
 #define CC_ACT_DEACT 27
 //TTN (for D2D)
@@ -1502,7 +1502,16 @@ typedef struct {
     /// MCCH status
     uint8_t mcch_status;
     /// MSI status
-    uint8_t msi_status;		// could be an array if there are >1 MCH in one MBSFN area
+    uint8_t msi_status_v[28];
+    uint8_t msi_current_alloc;
+    uint8_t msi_pmch;
+
+    struct MBSFN_SubframeConfig *commonSF_Alloc_r9_mbsfn_SubframeConfig[8]; // FIXME replace 8 by MAX_MBSFN_AREA?
+    uint8_t commonSF_AllocPeriod_r9;
+    int common_num_sf_alloc;
+
+    uint8_t pmch_lcids[28];
+    uint16_t pmch_stop_mtch[28];
 #endif
   //#ifdef CBA
   /// CBA RNTI for each group
diff --git a/openair2/LAYER2/MAC/ra_procedures.c b/openair2/LAYER2/MAC/ra_procedures.c
index f5df67ab64d5ce540b14a2fa1c6975bdf9200aa7..aeabbd092a32c02dee9ba16fdabf6deab593b0ec 100644
--- a/openair2/LAYER2/MAC/ra_procedures.c
+++ b/openair2/LAYER2/MAC/ra_procedures.c
@@ -248,7 +248,7 @@ Msg1_transmitted(module_id_t module_idP, uint8_t CC_id,
     UE_mac_inst[module_idP].RA_attempt_number++;
 
     if (opt_enabled) {
-	trace_pdu(0, NULL, 0, module_idP, 0,
+	trace_pdu(DIRECTION_UPLINK, NULL, 0, module_idP, WS_NO_RNTI,
 		  UE_mac_inst[module_idP].RA_prach_resources.
 		  ra_PreambleIndex, UE_mac_inst[module_idP].txFrame,
 		  UE_mac_inst[module_idP].txSubframe, 0,
@@ -277,8 +277,8 @@ Msg3_transmitted(module_id_t module_idP, uint8_t CC_id,
     UE_mac_inst[module_idP].RA_contention_resolution_timer_active = 1;
 
     if (opt_enabled) {		// msg3
-	trace_pdu(0, &UE_mac_inst[module_idP].CCCH_pdu.payload[0],
-		  UE_mac_inst[module_idP].RA_Msg3_size, module_idP, 3,
+      trace_pdu(DIRECTION_UPLINK , &UE_mac_inst[module_idP].CCCH_pdu.payload[0],
+		  UE_mac_inst[module_idP].RA_Msg3_size, module_idP, WS_C_RNTI,
 		  UE_mac_inst[module_idP].crnti,
 		  UE_mac_inst[module_idP].txFrame,
 		  UE_mac_inst[module_idP].txSubframe, 0, 0);
diff --git a/openair2/LAYER2/MAC/rar_tools.c b/openair2/LAYER2/MAC/rar_tools.c
index b70b3824946cf0271752ff735613fd473e781c99..2e6b47ff60464c320326a8d48455e47fc43792d2 100644
--- a/openair2/LAYER2/MAC/rar_tools.c
+++ b/openair2/LAYER2/MAC/rar_tools.c
@@ -96,7 +96,7 @@ fill_rar(const module_id_t module_idP,
 	((ra->msg3_ULdelay & 1) << 1) | (ra->msg3_cqireq & 1);
 
     if (opt_enabled) {
-	trace_pdu(1, dlsch_buffer, input_buffer_length, module_idP, 2, 1,
+	trace_pdu(DIRECTION_DOWNLINK , dlsch_buffer, input_buffer_length, module_idP,  WS_RA_RNTI , 1,
 		  RC.mac[module_idP]->frame, RC.mac[module_idP]->subframe,
 		  0, 0);
 	LOG_D(OPT,
@@ -181,7 +181,7 @@ fill_rar_br(eNB_MAC_INST * eNB,
 	  ra->preamble_index, ra->timing_offset);
 
     if (opt_enabled) {
-	trace_pdu(1, dlsch_buffer, input_buffer_length, eNB->Mod_id, 2, 1,
+	trace_pdu(DIRECTION_DOWNLINK , dlsch_buffer, input_buffer_length, eNB->Mod_id,  WS_RA_RNTI , 1,
 		  eNB->frame, eNB->subframe, 0, 0);
 	LOG_D(OPT,
 	      "[RAPROC] RAR Frame %d trace pdu for rnti %x and  rapid %d size %d\n",
diff --git a/openair2/LAYER2/MAC/rar_tools_ue.c b/openair2/LAYER2/MAC/rar_tools_ue.c
index 991eaae052b40fe68297927593101cb548f192a6..35d1f7925e55ddc07c0d37dbe4217f19a0910aa0 100644
--- a/openair2/LAYER2/MAC/rar_tools_ue.c
+++ b/openair2/LAYER2/MAC/rar_tools_ue.c
@@ -119,8 +119,8 @@ uint16_t ue_process_rar(const module_id_t module_idP, const int CC_id, const fra
 	LOG_D(OPT,
 	      "[UE %d][RAPROC] CC_id %d RAR Frame %d trace pdu for ra-RNTI %x\n",
 	      module_idP, CC_id, frameP, ra_rnti);
-	trace_pdu(1, (uint8_t *) dlsch_buffer, n_rarh + n_rarpy * 6,
-		  module_idP, 2, ra_rnti, UE_mac_inst[module_idP].rxFrame,
+	trace_pdu(DIRECTION_DOWNLINK, (uint8_t *) dlsch_buffer, n_rarh + n_rarpy * 6,
+		  module_idP, WS_RA_RNTI, ra_rnti, UE_mac_inst[module_idP].rxFrame,
 		  UE_mac_inst[module_idP].rxSubframe, 0, 0);
     }
 
diff --git a/openair2/LAYER2/MAC/ue_procedures.c b/openair2/LAYER2/MAC/ue_procedures.c
index dd78da72751db65b3ae551d921b25353e9fcc33f..2c99b79ce8057860a4f3870c6dcd6a302854f7d7 100644
--- a/openair2/LAYER2/MAC/ue_procedures.c
+++ b/openair2/LAYER2/MAC/ue_procedures.c
@@ -420,7 +420,7 @@ ue_send_sdu(module_id_t module_idP,
   //LOG_D(MAC,"sdu: %x.%x.%x\n",sdu[0],sdu[1],sdu[2]);
 
     if (opt_enabled) {
-	trace_pdu(1, sdu, sdu_len, module_idP, 3,
+	trace_pdu(DIRECTION_DOWNLINK, sdu, sdu_len, module_idP, WS_C_RNTI,
 		  UE_mac_inst[module_idP].crnti, frameP, subframeP, 0, 0);
 	LOG_D(OPT,
 	      "[UE %d][DLSCH] Frame %d trace pdu for rnti %x  with size %d\n",
@@ -637,11 +637,11 @@ ue_decode_si(module_id_t module_idP, int CC_id, frame_t frameP,
     stop_meas(&UE_mac_inst[module_idP].rx_si);
 #endif
     if (opt_enabled == 1) {
-	trace_pdu(0,
+	trace_pdu(DIRECTION_UPLINK,
 		  (uint8_t *) pdu,
 		  len,
 		  module_idP,
-		  4,
+		  WS_SI_RNTI,
 		  0xffff,
 		  UE_mac_inst[module_idP].rxFrame,
 		  UE_mac_inst[module_idP].rxSubframe, 0, 0);
@@ -675,11 +675,11 @@ ue_decode_p(module_id_t module_idP, int CC_id, frame_t frameP,
     stop_meas(&UE_mac_inst[module_idP].rx_p);
 #endif
     if (opt_enabled == 1) {
-	trace_pdu(0,
+	trace_pdu(DIRECTION_UPLINK ,
 		  (uint8_t *) pdu,
 		  len,
 		  module_idP,
-		  4,
+		  WS_SI_RNTI,
 		  P_RNTI,
 		  UE_mac_inst[module_idP].rxFrame,
 		  UE_mac_inst[module_idP].rxSubframe, 0, 0);
@@ -750,7 +750,7 @@ ue_send_mch_sdu(module_id_t module_idP, uint8_t CC_id, frame_t frameP,
 		uint8_t sync_area)
 {
 
-    unsigned char num_sdu, i, *payload_ptr;
+    unsigned char num_sdu, i, j, *payload_ptr;
     unsigned char rx_lcids[NB_RB_MAX];
     unsigned short rx_lengths[NB_RB_MAX];
 #if UE_TIMING_TRACE
@@ -771,47 +771,76 @@ ue_send_mch_sdu(module_id_t module_idP, uint8_t CC_id, frame_t frameP,
 	  num_sdu);
 
     for (i = 0; i < num_sdu; i++) {
-	if (rx_lcids[i] == MCH_SCHDL_INFO) {
-	    if (UE_mac_inst[module_idP].mcch_status == 1) {
-		LOG_I(MAC,
-		      "[UE %d] Frame %d : MCH->MSI for sync area %d (eNB %d, %d bytes)\n",
-		      module_idP, frameP, sync_area, eNB_index,
-		      rx_lengths[i]);
-		// ??store necessary scheduling info to ue_mac_inst in order to
-		// calculate exact position of interested service (for the complex case has >1 mtch)
-		// set msi_status to 1
-		UE_mac_inst[module_idP].msi_status = 1;
-	    }
-	} else if (rx_lcids[i] == MCCH_LCHANID) {
-	    LOG_I(MAC,
-		  "[UE %d] Frame %d : SDU %d MCH->MCCH for sync area %d (eNB %d, %d bytes)\n",
-		  module_idP, frameP, i, sync_area, eNB_index,
-		  rx_lengths[i]);
-	    mac_rrc_data_ind_ue(module_idP, CC_id, frameP, 0,	// unknown subframe
-			     M_RNTI,
-			     MCCH,
-			     payload_ptr, rx_lengths[i], eNB_index,
-			     sync_area);
-	} else if (rx_lcids[i] == MTCH) {
-	    if (UE_mac_inst[module_idP].msi_status == 1) {
-		LOG_I(MAC,
-		      "[UE %d] Frame %d : MCH->MTCH for sync area %d (eNB %d, %d bytes)\n",
-		      module_idP, frameP, sync_area, eNB_index,
-		      rx_lengths[i]);
+      if (rx_lcids[i] == MCH_SCHDL_INFO) {
+        if (rx_lengths[i] & 0x01) {
+          LOG_E(MAC,"MCH Scheduling Information MAC Control Element should have an even size\n");
+        }
 
-		mac_rlc_data_ind(module_idP, UE_mac_inst[module_idP].crnti, eNB_index, frameP, ENB_FLAG_NO, MBMS_FLAG_YES, MTCH,	/*+ (maxDRB + 3), */
-				 (char *) payload_ptr, rx_lengths[i], 1,
-				 NULL);
+        LOG_D(MAC,"MCH Scheduling Information, len(%d)\n",rx_lengths[i]);
 
-	    }
-	} else {
-	    LOG_W(MAC,
-		  "[UE %d] Frame %d : unknown sdu %d rx_lcids[%d]=%d mcch status %d eNB %d \n",
-		  module_idP, frameP, rx_lengths[i], i, rx_lcids[i],
-		  UE_mac_inst[module_idP].mcch_status, eNB_index);
-	}
+        for (j=0; j<rx_lengths[i]/2; j++) {
+          uint16_t stop_mtch_val = ((uint16_t)(payload_ptr[2*j] & 0x07) << 8) | (uint16_t)payload_ptr[2*j+1];
+
+          UE_mac_inst[module_idP].pmch_lcids[j] = (payload_ptr[2*j] & 0xF8) >> 3;
+          UE_mac_inst[module_idP].pmch_stop_mtch[j] = stop_mtch_val;
+          LOG_D(MAC,"lcid(%d),stop_mtch_val %d frameP(%d)\n", UE_mac_inst[module_idP].pmch_lcids[j], stop_mtch_val, frameP);
+
+          if ((stop_mtch_val >= 2043) && (stop_mtch_val <= 2046)) {
+            LOG_D(MAC,"(reserved)\n");
+          }
+
+          UE_mac_inst[module_idP].msi_status_v[j] = 0;
 
-	payload_ptr += rx_lengths[i];
+          if (UE_mac_inst[module_idP].mcch_status==1) {
+            LOG_D(MAC,"[UE %d] Frame %d : MCH->MSI for sync area %d (eNB %d, %d bytes), i(%d)\n", module_idP, frameP, sync_area, eNB_index, rx_lengths[i], UE_mac_inst[module_idP].pmch_stop_mtch[j]);
+            if (UE_mac_inst[module_idP].pmch_stop_mtch[j] < 2043) {
+              UE_mac_inst[module_idP].pmch_stop_mtch[j] += UE_mac_inst[module_idP].msi_current_alloc;
+              UE_mac_inst[module_idP].msi_status_v[j] = 1;
+            }
+          }
+        }
+      } else if (rx_lcids[i] == MCCH_LCHANID) {
+        LOG_D(MAC,"[UE %d] Frame %d : SDU %d MCH->MCCH for sync area %d (eNB %d, %d bytes)\n",module_idP,frameP, i, sync_area, eNB_index, rx_lengths[i]);
+        mac_rrc_data_ind_ue(module_idP,
+                         CC_id,
+                         frameP,0, // unknown subframe
+                         M_RNTI,
+                         MCCH,
+                         payload_ptr + 1, // Skip RLC layer 1st byte
+                         rx_lengths[i] - 1,
+                         eNB_index,
+                         sync_area);
+      } else if (rx_lcids[i] <= 28) {
+        for (j=0; j<28; j++) {
+          if (rx_lcids[i] == UE_mac_inst[module_idP].pmch_lcids[j])
+            break;
+        }
+
+        if (j<28 && UE_mac_inst[module_idP].msi_status_v[j]==1) {
+          LOG_D(MAC,"[UE %d] Frame %d : MCH->MTCH for sync area %d (eNB %d, %d bytes), j=%d\n", module_idP, frameP, sync_area, eNB_index, rx_lengths[i], j);
+
+          mac_rlc_data_ind(
+            module_idP,
+            UE_mac_inst[module_idP].crnti,
+            eNB_index,
+            frameP,
+            ENB_FLAG_NO,
+            MBMS_FLAG_YES,
+            rx_lcids[i], /*+ (maxDRB + 3),*/
+            (char *)payload_ptr,
+            rx_lengths[i],
+            1,
+            NULL);
+
+        }
+      } else {
+        LOG_W(MAC,
+              "[UE %d] Frame %d : unknown sdu %d rx_lcids[%d]=%d mcch status %d eNB %d \n",
+              module_idP, frameP, rx_lengths[i], i, rx_lcids[i],
+              UE_mac_inst[module_idP].mcch_status, eNB_index);
+      }
+
+      payload_ptr += rx_lengths[i];
     }
 
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
@@ -916,406 +945,591 @@ int8_t ue_get_mbsfn_sf_alloction (module_id_t module_idP, uint8_t mbsfn_sync_are
     }
 }
 
-int
-ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP,
-	     uint32_t subframe, uint8_t eNB_index, uint8_t * sync_area,
-	     uint8_t * mcch_active)
+int ue_query_p_mch_info(module_id_t module_idP, uint32_t frameP, uint32_t subframe, int commonSFAlloc_period, int commonSFAlloc_offset, int num_sf_alloc, int *mtch_active, int *msi_active, uint8_t *mch_lcid)
 {
+  int i, mtch_mcs = -1;
+  int mtch_flag = 0;
+  int msi_flag = 0;
 
-    int i = 0, j = 0, ii = 0, msi_pos = 0, mcch_mcs = -1;
-    int mcch_flag = 0, mtch_flag = 0, msi_flag = 0;
-    int mbsfn_period = 0;	// 1<<(UE_mac_inst[module_idP].mbsfn_SubframeConfig[0]->radioframeAllocationPeriod);
-    int mcch_period = 0;	// 32<<(UE_mac_inst[module_idP].mbsfn_AreaInfo[0]->mcch_Config_r9.mcch_RepetitionPeriod_r9);
-    int mch_scheduling_period = -1;
+  for (i = 0; i < 4; i++) {
+    if (UE_mac_inst[module_idP].pmch_Config[i] == NULL)
+      continue;
 
-    int frame_FDD = 1;
+    int mch_scheduling_period = 8 << UE_mac_inst[module_idP].pmch_Config[i]->mch_SchedulingPeriod_r9;
+    uint8_t  sf_AllocEnd_r9   = UE_mac_inst[module_idP].pmch_Config[i]->sf_AllocEnd_r9;
 
+    if (sf_AllocEnd_r9 == 2047) {
+      msi_flag = 1;
+      break;
+    }
 
-#if UE_TIMING_TRACE
-    start_meas(&UE_mac_inst[module_idP].ue_query_mch);
-#endif
+    if ((frameP % mch_scheduling_period) == (commonSFAlloc_offset + (frameP % 4))) {
+      if (i == 0) {
+        //msi and mtch are mutally excluded then the break is safe
+        if ((num_sf_alloc == 0) && (sf_AllocEnd_r9 >= 1)) {
+          msi_flag = 1;
+          LOG_D(MAC,"msi(%d) should be allocated:frame(%d),submframe(%d),num_sf_alloc(%d),sf_AllocEnd_r9(%d),common_num_sf_alloc(%d)\n",i,frameP,subframe,num_sf_alloc,sf_AllocEnd_r9,UE_mac_inst[module_idP].common_num_sf_alloc);
+          UE_mac_inst[module_idP].msi_current_alloc = num_sf_alloc;
+          UE_mac_inst[module_idP].msi_pmch = i;
+        }
+      } else { //more that one MCH ?? check better this condition
+        //msi and mtch are mutally excluded then the break is safe
+        if ((num_sf_alloc ==  UE_mac_inst[module_idP].pmch_Config[i-1]->sf_AllocEnd_r9 + 1) && (sf_AllocEnd_r9 >= (num_sf_alloc+1))) {
+          //msi should be just after 
+          msi_flag = 1;
+          LOG_D(MAC,"msi(%d) should be allocated:frame(%d),submframe(%d),num_sf_alloc(%d),sf_AllocEnd_r9(%d),common_num_sf_alloc(%d)\n",i,frameP,subframe,num_sf_alloc,sf_AllocEnd_r9,UE_mac_inst[module_idP].common_num_sf_alloc);
+          UE_mac_inst[module_idP].msi_current_alloc = num_sf_alloc;
+          UE_mac_inst[module_idP].msi_pmch = i;
+        }
+      }
+    }
+  }
 
-    if (UE_mac_inst[module_idP].pmch_Config[0]) {
-	mch_scheduling_period =
-	    8 << (UE_mac_inst[module_idP].
-		  pmch_Config[0]->mch_SchedulingPeriod_r9);
+  for (i = 0; i < 28; i++) {
+    if (UE_mac_inst[module_idP].pmch_stop_mtch[i] >= num_sf_alloc) {
+      if (UE_mac_inst[module_idP].pmch_stop_mtch[i] != 2047) {
+        mtch_flag = 1;
+        if (UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch] != NULL)
+          mtch_mcs = UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch]->dataMCS_r9;
+        else
+          mtch_mcs = -1;
+        *mch_lcid = (uint8_t)i;
+        LOG_D(MAC,"mtch should be allocated:frame(%d),submframe(%d),num_sf_alloc(%d),mtch_mcs(%d),pmch_stop_mtch(%d),lcid(%d),msi_pmch(%d)\n",frameP,subframe,num_sf_alloc,mtch_mcs,UE_mac_inst[module_idP].pmch_stop_mtch[i],UE_mac_inst[module_idP].pmch_lcids[i],UE_mac_inst[module_idP].msi_pmch);
+        break;
+      }
     }
+  }
 
-    for (i = 0; i < UE_mac_inst[module_idP].num_active_mbsfn_area; i++) {
-	// assume, that there is always a mapping
-	if ((j =
-	     ue_get_mbsfn_sf_alloction(module_idP, i, eNB_index)) == -1) {
-	    return -1;		// continue;
-	}
+  *mtch_active = mtch_flag;
+  *msi_active = msi_flag;
 
-	ii = 0;
-	msi_pos = 0;
-	mbsfn_period =
-	    1 << (UE_mac_inst[module_idP].
-		  mbsfn_SubframeConfig[0]->radioframeAllocationPeriod);
-	mcch_period =
-	    32 << (UE_mac_inst[module_idP].
-		   mbsfn_AreaInfo[0]->mcch_Config_r9.
-		   mcch_RepetitionPeriod_r9);
+  return mtch_mcs;
+}
 
-	LOG_D(MAC,
-	      "[UE %d] Frame %d subframe %d: Checking MBSFN Sync Area %d/%d with SF allocation %d/%d for MCCH and MTCH (mbsfn period %d, mcch period %d,mac sched period (%d,%ld))\n",
-	      module_idP, frameP, subframe, i,
-	      UE_mac_inst[module_idP].num_active_mbsfn_area, j,
-	      UE_mac_inst[module_idP].num_sf_allocation_pattern,
-	      mbsfn_period, mcch_period, mch_scheduling_period,
-	      UE_mac_inst[module_idP].
-	      mbsfn_SubframeConfig[j]->radioframeAllocationOffset);
-
-	// get the real MCS value
-	switch (UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->
-		mcch_Config_r9.signallingMCS_r9) {
-	case 0:
-	    mcch_mcs = 2;
-	    break;
-
-	case 1:
-	    mcch_mcs = 7;
-	    break;
-
-	case 2:
-	    mcch_mcs = 13;
-	    break;
-
-	case 3:
-	    mcch_mcs = 19;
-	    break;
-	}
+int ue_query_p_mch(module_id_t module_idP, uint32_t frameP, uint32_t subframe, int *mtch_active, int *msi_active, uint8_t *mch_lcid)
+{
+  int i, j, mtch_mcs = -1;
+  int mtch_flag = 0;
+
+  // Acount for sf_allocable in CSA
+  int num_sf_alloc = 0;
+  for (i = 0; i < 8; i++) {
+    if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i] == NULL)
+      continue;
+
+    if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.present == MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) // one-frameP format
+      continue;
+
+    // four-frameP format
+    uint32_t common_mbsfn_SubframeConfig = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[2] |
+                                          (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[1]<<8) |
+                                          (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[0]<<16);
+    for (j = 0; j < 24; j++)
+      num_sf_alloc += ((common_mbsfn_SubframeConfig & (0x800000 >> j)) == (0x800000 >> j));
+  }
 
-	if (frameP % mbsfn_period == UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->radioframeAllocationOffset) {	// MBSFN frameP
-	    if (UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.present == MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) {	// one-frameP format
+  for (i = 0; i < 8; i++ ) {
+    if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i] == NULL)
+      continue;
+
+    if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.present == MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) // one-frameP format
+      continue;
+
+    // four-frameP format
+    int common_mbsfn_alloc_offset = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->radioframeAllocationOffset;
+    int common_mbsfn_period  = 1 << UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->radioframeAllocationPeriod;
+    int commonSF_AllocPeriod = 4 << UE_mac_inst[module_idP].commonSF_AllocPeriod_r9;
+
+    uint32_t common_mbsfn_SubframeConfig = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[2] |
+                                          (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[1]<<8) |
+                                          (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[0]<<16);
+
+    int jj = frameP % 4;
+    if ((frameP % common_mbsfn_period) != (common_mbsfn_alloc_offset + jj))
+      continue;
+
+    if(UE_mac_inst[module_idP].tdd_Config == NULL){
+      switch (subframe) {
+      case 1:
+        if ((common_mbsfn_SubframeConfig & (0x800000 >> (jj*6))) == (0x800000 >> (jj*6))) {
+          mtch_flag = 1;
+          mtch_mcs = ue_query_p_mch_info(module_idP,frameP,subframe,common_mbsfn_period,common_mbsfn_alloc_offset,UE_mac_inst[module_idP].common_num_sf_alloc,mtch_active,msi_active,mch_lcid);
+          UE_mac_inst[module_idP].common_num_sf_alloc++;
+          UE_mac_inst[module_idP].common_num_sf_alloc = UE_mac_inst[module_idP].common_num_sf_alloc % (num_sf_alloc * commonSF_AllocPeriod / common_mbsfn_period);//48;
+        }
+        break;
+      case 2:
+        if ((common_mbsfn_SubframeConfig & (0x400000 >> (jj*6))) == (0x400000 >> (jj*6))) {
+          mtch_flag = 1;
+          mtch_mcs = ue_query_p_mch_info(module_idP,frameP,subframe,common_mbsfn_period,common_mbsfn_alloc_offset,UE_mac_inst[module_idP].common_num_sf_alloc,mtch_active,msi_active,mch_lcid);
+          UE_mac_inst[module_idP].common_num_sf_alloc++;
+          UE_mac_inst[module_idP].common_num_sf_alloc = UE_mac_inst[module_idP].common_num_sf_alloc % (num_sf_alloc * commonSF_AllocPeriod / common_mbsfn_period);//48;
+        }
+        break;
+      case 3:
+        if ((common_mbsfn_SubframeConfig & (0x200000 >> (jj*6))) == (0x200000 >> (jj*6))) {
+          mtch_flag = 1;
+          mtch_mcs = ue_query_p_mch_info(module_idP,frameP,subframe,common_mbsfn_period,common_mbsfn_alloc_offset,UE_mac_inst[module_idP].common_num_sf_alloc,mtch_active,msi_active,mch_lcid);
+          UE_mac_inst[module_idP].common_num_sf_alloc++;
+          UE_mac_inst[module_idP].common_num_sf_alloc = UE_mac_inst[module_idP].common_num_sf_alloc % (num_sf_alloc * commonSF_AllocPeriod / common_mbsfn_period);//48;
+        }
+        break;
+      case 6:
+        if ((common_mbsfn_SubframeConfig & (0x100000 >> (jj*6))) == (0x100000 >> (jj*6))) {
+          mtch_flag = 1;
+          mtch_mcs = ue_query_p_mch_info(module_idP,frameP,subframe,common_mbsfn_period,common_mbsfn_alloc_offset,UE_mac_inst[module_idP].common_num_sf_alloc,mtch_active,msi_active,mch_lcid);
+          UE_mac_inst[module_idP].common_num_sf_alloc++;
+          UE_mac_inst[module_idP].common_num_sf_alloc = UE_mac_inst[module_idP].common_num_sf_alloc % (num_sf_alloc * commonSF_AllocPeriod / common_mbsfn_period);//48;
+        }
+        break;
+      case 7:
+        if ((common_mbsfn_SubframeConfig & (0x80000 >> (jj*6))) == (0x80000 >> (jj*6))) {
+          mtch_flag = 1;
+          mtch_mcs = ue_query_p_mch_info(module_idP,frameP,subframe,common_mbsfn_period,common_mbsfn_alloc_offset,UE_mac_inst[module_idP].common_num_sf_alloc,mtch_active,msi_active,mch_lcid);
+          UE_mac_inst[module_idP].common_num_sf_alloc++;
+          UE_mac_inst[module_idP].common_num_sf_alloc = UE_mac_inst[module_idP].common_num_sf_alloc % (num_sf_alloc * commonSF_AllocPeriod / common_mbsfn_period);//48;
+        }
+        break;
+      case 8:
+        if ((common_mbsfn_SubframeConfig & (0x40000 >> (jj*6))) == (0x40000 >> (jj*6))) {
+          mtch_flag = 1;
+          mtch_mcs = ue_query_p_mch_info(module_idP,frameP,subframe,common_mbsfn_period,common_mbsfn_alloc_offset,UE_mac_inst[module_idP].common_num_sf_alloc,mtch_active,msi_active,mch_lcid);
+          UE_mac_inst[module_idP].common_num_sf_alloc++;
+          UE_mac_inst[module_idP].common_num_sf_alloc = UE_mac_inst[module_idP].common_num_sf_alloc% ( num_sf_alloc*commonSF_AllocPeriod/common_mbsfn_period);//48;
+        }
+        break;
+      }
+    } else {
+      // TODO TDD
+    }
+    if (mtch_flag == 1)
+      break;
+  }
 
-		if (UE_mac_inst[module_idP].pmch_Config[0]) {
-		    //  Find the first subframe in this MCH to transmit MSI
-		    if (frameP % mch_scheduling_period ==
-			UE_mac_inst[module_idP].
-			mbsfn_SubframeConfig
-			[j]->radioframeAllocationOffset) {
-			while (ii == 0) {
-			    ii = UE_mac_inst[module_idP].
-				mbsfn_SubframeConfig[j]->
-				subframeAllocation.choice.
-				oneFrame.buf[0] & (0x80 >> msi_pos);
-			    msi_pos++;
-			}
-		    }
-		}
+   return mtch_mcs;
+}
 
-		if (UE_mac_inst[module_idP].tdd_Config == NULL)
-		    frame_FDD = 1;
-		else
-		    frame_FDD = 0;
-		// Check if the subframe is for MSI, MCCH or MTCHs and Set the correspoding flag to 1
-		switch (subframe) {
-		case 1:
-		    if (frame_FDD == 1) {
-			if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig
-			     [j]->subframeAllocation.choice.oneFrame.
-			     buf[0] & MBSFN_FDD_SF1) == MBSFN_FDD_SF1) {
-			    if (msi_pos == 1) {
-				msi_flag = 1;
-			    }
+int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_t subframe, uint8_t eNB_index,uint8_t *sync_area, uint8_t *mcch_active)
+{
 
-			    if ((frameP % mcch_period ==
-				 UE_mac_inst[module_idP].mbsfn_AreaInfo
-				 [i]->mcch_Config_r9.mcch_Offset_r9)
-				&&
-				((UE_mac_inst[module_idP].mbsfn_AreaInfo
-				  [i]->mcch_Config_r9.sf_AllocInfo_r9.
-				  buf[0] & MBSFN_FDD_SF1) ==
-				 MBSFN_FDD_SF1)) {
-				mcch_flag = 1;
-			    }
+  int i = 0, j = 0, ii = 0, jj = 0, msi_pos = 0, mcch_mcs = -1, mtch_mcs = -1;
+  int mcch_flag = 0, mtch_flag = 0, msi_flag = 0;
+  long mch_scheduling_period = -1;
+  uint8_t mch_lcid = 0;
 
-			    mtch_flag = 1;
-			}
-		    }
+#if UE_TIMING_TRACE
+  start_meas(&UE_mac_inst[module_idP].ue_query_mch);
+#endif
 
-		    break;
+  if (UE_mac_inst[module_idP].pmch_Config[0]) {
+    mch_scheduling_period = 8 << UE_mac_inst[module_idP].pmch_Config[0]->mch_SchedulingPeriod_r9;
+  }
 
-		case 2:
-		    if (frame_FDD == 1) {
-			if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig
-			     [j]->subframeAllocation.choice.oneFrame.
-			     buf[0] & MBSFN_FDD_SF2) == MBSFN_FDD_SF2) {
-			    if (msi_pos == 2) {
-				msi_flag = 1;
-			    }
+  for (i = 0;
+       i < UE_mac_inst[module_idP].num_active_mbsfn_area;
+       i++ )
+  {
+    // assume, that there is always a mapping
+    if ((j = ue_get_mbsfn_sf_alloction(module_idP,i,eNB_index)) == -1) {
+      return -1; // continue;
+    }
 
-			    if ((frameP % mcch_period ==
-				 UE_mac_inst[module_idP].mbsfn_AreaInfo
-				 [i]->mcch_Config_r9.mcch_Offset_r9)
-				&&
-				((UE_mac_inst[module_idP].mbsfn_AreaInfo
-				  [i]->mcch_Config_r9.sf_AllocInfo_r9.
-				  buf[0] & MBSFN_FDD_SF2) ==
-				 MBSFN_FDD_SF2)) {
-				mcch_flag = 1;
-			    }
+    ii = 0;
+    msi_pos = 0;
+    
+    long mbsfn_period =  1 << UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->radioframeAllocationPeriod;
+    long mbsfn_alloc_offset = UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->radioframeAllocationOffset;
+    long mcch_period  = 32 << UE_mac_inst[module_idP].mbsfn_AreaInfo[j]->mcch_Config_r9.mcch_RepetitionPeriod_r9;
+    long mcch_offset        = UE_mac_inst[module_idP].mbsfn_AreaInfo[j]->mcch_Config_r9.mcch_Offset_r9;
 
-			    mtch_flag = 1;
-			}
-		    }
+    LOG_D(MAC,
+          "[UE %d] Frame %d subframe %d: Checking MBSFN Sync Area %d/%d with SF allocation %d/%d for MCCH and MTCH (mbsfn period %ld, mcch period %ld,mac sched period (%ld,%ld))\n",
+          module_idP,frameP, subframe,i,UE_mac_inst[module_idP].num_active_mbsfn_area,
+          j,UE_mac_inst[module_idP].num_sf_allocation_pattern,mbsfn_period,mcch_period,
+          mcch_offset,mbsfn_alloc_offset);
+
+    // get the real MCS value
+    switch (UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.signallingMCS_r9) {
+    case 0:
+      mcch_mcs = 2;
+      break;
 
-		    break;
+    case 1:
+      mcch_mcs = 7;
+      break;
 
-		case 3:
-		    if (frame_FDD == 0) {	//TDD
-			if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig
-			     [j]->subframeAllocation.choice.oneFrame.
-			     buf[0] & MBSFN_TDD_SF3) == MBSFN_TDD_SF3) {
-			    if (msi_pos == 1) {
-				msi_flag = 1;
-			    }
+    case 2:
+      mcch_mcs = 13;
+      break;
 
-			    if ((frameP % mcch_period ==
-				 UE_mac_inst[module_idP].mbsfn_AreaInfo
-				 [i]->mcch_Config_r9.mcch_Offset_r9)
-				&&
-				((UE_mac_inst[module_idP].mbsfn_AreaInfo
-				  [i]->mcch_Config_r9.sf_AllocInfo_r9.
-				  buf[0] & MBSFN_TDD_SF3) ==
-				 MBSFN_TDD_SF3)) {
-				mcch_flag = 1;
-			    }
+    case 3:
+      mcch_mcs = 19;
+      break;
+    }
 
-			    mtch_flag = 1;
-			}
-		    } else {	// FDD
-			if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig
-			     [j]->subframeAllocation.choice.oneFrame.
-			     buf[0] & MBSFN_FDD_SF3) == MBSFN_FDD_SF3) {
-			    if (msi_pos == 3) {
-				msi_flag = 1;
-			    }
+    if (UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.present == MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) { // one-frameP format
+      if (frameP % mbsfn_period == mbsfn_alloc_offset) { // MBSFN frameP
 
-			    if ((frameP % mcch_period ==
-				 UE_mac_inst[module_idP].mbsfn_AreaInfo
-				 [i]->mcch_Config_r9.mcch_Offset_r9)
-				&&
-				((UE_mac_inst[module_idP].mbsfn_AreaInfo
-				  [i]->mcch_Config_r9.sf_AllocInfo_r9.
-				  buf[0] & MBSFN_FDD_SF3) ==
-				 MBSFN_FDD_SF3)) {
-				mcch_flag = 1;
-			    }
+        if (UE_mac_inst[module_idP].pmch_Config[0]) {
+          //  Find the first subframe in this MCH to transmit MSI
+          if (frameP % mch_scheduling_period == mbsfn_alloc_offset) {
+            while (ii == 0) {
+              ii = UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & (0x80 >> msi_pos);
+              msi_pos++;
+            }
+          }
+        }
+
+        // Check if the subframe is for MSI, MCCH or MTCHs and Set the correspoding flag to 1
+        switch (subframe) {
+        case 1:
+          if (UE_mac_inst[module_idP].tdd_Config == NULL) {
+            if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF1) == MBSFN_FDD_SF1) {
+              if (msi_pos == 1) {
+                msi_flag = 1;
+              }
+
+              if ((frameP % mcch_period == mcch_offset) &&
+                  ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF1) == MBSFN_FDD_SF1)) {
+                mcch_flag = 1;
+              }
+
+              mtch_flag = 1;
+            }
+          }
 
-			    mtch_flag = 1;
-			}
-		    }
+          break;
 
-		    break;
+        case 2:
+          if (UE_mac_inst[module_idP].tdd_Config == NULL) {
+            if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF2) == MBSFN_FDD_SF2) {
+              if (msi_pos == 2) {
+                msi_flag = 1;
+              }
 
-		case 4:
-		    if (frame_FDD == 0) {
-			if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig
-			     [j]->subframeAllocation.choice.oneFrame.
-			     buf[0] & MBSFN_TDD_SF4) == MBSFN_TDD_SF4) {
-			    if (msi_pos == 2) {
-				msi_flag = 1;
-			    }
+              if ((frameP % mcch_period == mcch_offset) &&
+                  ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF2) == MBSFN_FDD_SF2)) {
+                mcch_flag = 1;
+              }
 
-			    if ((frameP % mcch_period ==
-				 UE_mac_inst[module_idP].mbsfn_AreaInfo
-				 [i]->mcch_Config_r9.mcch_Offset_r9)
-				&&
-				((UE_mac_inst[module_idP].mbsfn_AreaInfo
-				  [i]->mcch_Config_r9.sf_AllocInfo_r9.
-				  buf[0] & MBSFN_TDD_SF4) ==
-				 MBSFN_TDD_SF4)) {
-				mcch_flag = 1;
-			    }
+              mtch_flag = 1;
+            }
+          }
 
-			    mtch_flag = 1;
-			}
-		    }
+          break;
 
-		    break;
+        case 3:
+          if (UE_mac_inst[module_idP].tdd_Config != NULL) { // TDD
+            if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_TDD_SF3) == MBSFN_TDD_SF3) {
+              if (msi_pos == 1) {
+                msi_flag = 1;
+              }
 
-		case 6:
-		    if (frame_FDD == 1) {
-			if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig
-			     [j]->subframeAllocation.choice.oneFrame.
-			     buf[0] & MBSFN_FDD_SF6) == MBSFN_FDD_SF6) {
-			    if (msi_pos == 4) {
-				msi_flag = 1;
-			    }
+              if ((frameP % mcch_period == mcch_offset) &&
+                  ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_TDD_SF3) == MBSFN_TDD_SF3)) {
+                mcch_flag = 1;
+              }
 
-			    if ((frameP % mcch_period ==
-				 UE_mac_inst[module_idP].mbsfn_AreaInfo
-				 [i]->mcch_Config_r9.mcch_Offset_r9)
-				&&
-				((UE_mac_inst[module_idP].mbsfn_AreaInfo
-				  [i]->mcch_Config_r9.sf_AllocInfo_r9.
-				  buf[0] & MBSFN_FDD_SF6) ==
-				 MBSFN_FDD_SF6)) {
-				mcch_flag = 1;
-			    }
+              mtch_flag = 1;
+            }
+          } else { // FDD
+            if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF3) == MBSFN_FDD_SF3) {
+              if (msi_pos == 3) {
+                msi_flag = 1;
+              }
+
+              if ((frameP % mcch_period == mcch_offset) &&
+                  ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF3) == MBSFN_FDD_SF3)) {
+                mcch_flag = 1;
+              }
+
+              mtch_flag = 1;
+            }
+          }
 
-			    mtch_flag = 1;
-			}
-		    }
+          break;
 
-		    break;
+        case 4:
+          if (UE_mac_inst[module_idP].tdd_Config != NULL) {
+            if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_TDD_SF4) == MBSFN_TDD_SF4) {
+              if (msi_pos == 2) {
+                msi_flag = 1;
+              }
 
-		case 7:
-		    if (frame_FDD == 0) {	// TDD
-			if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig
-			     [j]->subframeAllocation.choice.oneFrame.
-			     buf[0] & MBSFN_TDD_SF7) == MBSFN_TDD_SF7) {
-			    if (msi_pos == 3) {
-				msi_flag = 1;
-			    }
+              if ((frameP % mcch_period == mcch_offset) &&
+                  ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_TDD_SF4) == MBSFN_TDD_SF4)) {
+                mcch_flag = 1;
+              }
 
-			    if ((frameP % mcch_period ==
-				 UE_mac_inst[module_idP].mbsfn_AreaInfo
-				 [i]->mcch_Config_r9.mcch_Offset_r9)
-				&&
-				((UE_mac_inst[module_idP].mbsfn_AreaInfo
-				  [i]->mcch_Config_r9.sf_AllocInfo_r9.
-				  buf[0] & MBSFN_TDD_SF7) ==
-				 MBSFN_TDD_SF7)) {
-				mcch_flag = 1;
-			    }
+              mtch_flag = 1;
+            }
+          }
 
-			    mtch_flag = 1;
-			}
-		    } else {	// FDD
-			if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig
-			     [j]->subframeAllocation.choice.oneFrame.
-			     buf[0] & MBSFN_FDD_SF7) == MBSFN_FDD_SF7) {
-			    if (msi_pos == 5) {
-				msi_flag = 1;
-			    }
+          break;
 
-			    if ((frameP % mcch_period ==
-				 UE_mac_inst[module_idP].mbsfn_AreaInfo
-				 [i]->mcch_Config_r9.mcch_Offset_r9)
-				&&
-				((UE_mac_inst[module_idP].mbsfn_AreaInfo
-				  [i]->mcch_Config_r9.sf_AllocInfo_r9.
-				  buf[0] & MBSFN_FDD_SF7) ==
-				 MBSFN_FDD_SF7)) {
-				mcch_flag = 1;
-			    }
+        case 6:
+          if (UE_mac_inst[module_idP].tdd_Config == NULL) {
+            if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF6) == MBSFN_FDD_SF6) {
+              if (msi_pos == 4) {
+                msi_flag = 1;
+              }
 
-			    mtch_flag = 1;
-			}
-		    }
+              if ((frameP % mcch_period == mcch_offset) &&
+                  ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF6) == MBSFN_FDD_SF6)) {
+                mcch_flag = 1;
+              }
 
-		    break;
+              mtch_flag = 1;
+            }
+          }
 
-		case 8:
-		    if (frame_FDD == 0) {	//TDD
-			if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig
-			     [j]->subframeAllocation.choice.oneFrame.
-			     buf[0] & MBSFN_TDD_SF8) == MBSFN_TDD_SF8) {
-			    if (msi_pos == 4) {
-				msi_flag = 1;
-			    }
+          break;
 
-			    if ((frameP % mcch_period ==
-				 UE_mac_inst[module_idP].mbsfn_AreaInfo
-				 [i]->mcch_Config_r9.mcch_Offset_r9)
-				&&
-				((UE_mac_inst[module_idP].mbsfn_AreaInfo
-				  [i]->mcch_Config_r9.sf_AllocInfo_r9.
-				  buf[0] & MBSFN_TDD_SF8) ==
-				 MBSFN_TDD_SF8)) {
-				mcch_flag = 1;
-			    }
+        case 7:
+          if (UE_mac_inst[module_idP].tdd_Config != NULL) { // TDD
+            if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_TDD_SF7) == MBSFN_TDD_SF7) {
+              if (msi_pos == 3) {
+                msi_flag = 1;
+              }
 
-			    mtch_flag = 1;
-			}
-		    } else {	// FDD
-			if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig
-			     [j]->subframeAllocation.choice.oneFrame.
-			     buf[0] & MBSFN_FDD_SF8) == MBSFN_FDD_SF8) {
-			    if (msi_pos == 6) {
-				msi_flag = 1;
-			    }
+              if ((frameP % mcch_period == mcch_offset) &&
+                  ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_TDD_SF7) == MBSFN_TDD_SF7)) {
+                mcch_flag = 1;
+              }
 
-			    if ((frameP % mcch_period ==
-				 UE_mac_inst[module_idP].mbsfn_AreaInfo
-				 [i]->mcch_Config_r9.mcch_Offset_r9)
-				&&
-				((UE_mac_inst[module_idP].mbsfn_AreaInfo
-				  [i]->mcch_Config_r9.sf_AllocInfo_r9.
-				  buf[0] & MBSFN_FDD_SF8) ==
-				 MBSFN_FDD_SF8)) {
-				mcch_flag = 1;
-			    }
+              mtch_flag = 1;
+            }
+          } else { // FDD
+            if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF7) == MBSFN_FDD_SF7) {
+              if (msi_pos == 5) {
+                msi_flag = 1;
+              }
+
+              if ((frameP % mcch_period == mcch_offset) &&
+                  ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF7) == MBSFN_FDD_SF7)) {
+                mcch_flag = 1;
+              }
+
+              mtch_flag = 1;
+            }
+          }
 
-			    mtch_flag = 1;
-			}
-		    }
+          break;
 
-		    break;
+        case 8:
+          if (UE_mac_inst[module_idP].tdd_Config != NULL) { //TDD
+            if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_TDD_SF8) == MBSFN_TDD_SF8) {
+              if (msi_pos == 4) {
+                msi_flag = 1;
+              }
 
-		case 9:
-		    if (frame_FDD == 0) {
-			if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig
-			     [j]->subframeAllocation.choice.oneFrame.
-			     buf[0] & MBSFN_TDD_SF9) == MBSFN_TDD_SF9) {
-			    if (msi_pos == 5) {
-				msi_flag = 1;
-			    }
+              if ((frameP % mcch_period == mcch_offset) &&
+                  ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_TDD_SF8) == MBSFN_TDD_SF8)) {
+                mcch_flag = 1;
+              }
 
-			    if ((frameP % mcch_period ==
-				 UE_mac_inst[module_idP].mbsfn_AreaInfo
-				 [i]->mcch_Config_r9.mcch_Offset_r9)
-				&&
-				((UE_mac_inst[module_idP].mbsfn_AreaInfo
-				  [i]->mcch_Config_r9.sf_AllocInfo_r9.
-				  buf[0] & MBSFN_TDD_SF9) ==
-				 MBSFN_TDD_SF9)) {
-				mcch_flag = 1;
-			    }
+              mtch_flag = 1;
+            }
+          } else { // FDD
+            if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF8) == MBSFN_FDD_SF8) {
+              if (msi_pos == 6) {
+                msi_flag = 1;
+              }
+
+              if ((frameP % mcch_period == mcch_offset) &&
+                  ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF8) == MBSFN_FDD_SF8)) {
+                mcch_flag = 1;
+              }
+
+              mtch_flag = 1;
+            }
+          }
 
-			    mtch_flag = 1;
-			}
-		    }
+          break;
 
-		    break;
-		}		// end switch
+        case 9:
+          if (UE_mac_inst[module_idP].tdd_Config != NULL) {
+            if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_TDD_SF9) == MBSFN_TDD_SF9) {
+              if (msi_pos == 5) {
+                msi_flag = 1;
+              }
 
-		// sf allocation is non-overlapping
-		if ((msi_flag == 1) || (mcch_flag == 1)
-		    || (mtch_flag == 1)) {
-		    LOG_D(MAC,
-			  "[UE %d] Frame %d Subframe %d: sync area %d SF alloc %d: msi flag %d, mcch flag %d, mtch flag %d\n",
-			  module_idP, frameP, subframe, i, j, msi_flag,
-			  mcch_flag, mtch_flag);
+              if ((frameP % mcch_period == mcch_offset) &&
+                  ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_TDD_SF9) == MBSFN_TDD_SF9)) {
+                mcch_flag = 1;
+              }
+
+              mtch_flag = 1;
+            }
+          }
+
+          break;
+        }// end switch
+
+        // Acount for sf_allocable in CSA
+        int num_sf_alloc = 0;
+        for (i = 0; i < 8; i++) {
+          if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i] == NULL)
+            continue;
+
+          if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.present != MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame)
+            continue;
+
+          uint32_t common_mbsfn_SubframeConfig = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[0];
+          for (j = 0; j < 6; j++)
+            num_sf_alloc += ((common_mbsfn_SubframeConfig & (0x80 >> j)) == (0x80 >> j));
+        }
+
+        for (i = 0; i < 28; i++) {
+          if (UE_mac_inst[module_idP].pmch_stop_mtch[i] >= num_sf_alloc) {
+            if (UE_mac_inst[module_idP].pmch_stop_mtch[i] != 2047) {
+              if (UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch] != NULL)
+                mtch_mcs = UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch]->dataMCS_r9;
+              else
+                mtch_mcs = -1;
+              mch_lcid = (uint8_t)i;
+              break;
+            }
+          }
+        }
+
+        // sf allocation is non-overlapping
+        if ((msi_flag==1) || (mcch_flag==1) || (mtch_flag==1)) {
+          LOG_D(MAC,"[UE %d] Frame %d Subframe %d: sync area %d SF alloc %d: msi flag %d, mcch flag %d, mtch flag %d\n",
+                module_idP, frameP, subframe,i,j,msi_flag,mcch_flag,mtch_flag);
+
+          *sync_area=i;
+          break;
+        }
+      }
+    } else { // four-frameP format
+      uint32_t mbsfn_SubframeConfig = UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[2] |
+                                     (UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[1]<<8) |
+                                     (UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0]<<16);
+      uint32_t MCCH_mbsfn_SubframeConfig = /* UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[2] |
+                                          (UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[1]<<8) | */
+                                          (UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0]<<16);
+
+      jj=frameP%4;
+      if ((frameP % mbsfn_period) == (mbsfn_alloc_offset+jj)) {
+        if (UE_mac_inst[module_idP].tdd_Config == NULL) {
+          switch (subframe) {
+          case 1:
+            if ((mbsfn_SubframeConfig & (0x800000>>(jj*6))) == (0x800000>>(jj*6))) {
+              if ((frameP % mcch_period == (mcch_offset+jj)) && ((MCCH_mbsfn_SubframeConfig & (0x800000>>(jj*6))) == (0x800000>>(jj*6)))) {
+                mcch_flag=1;
+                LOG_D(MAC,"frameP(%d),mcch_period(%ld),mbsfn_SubframeConfig(%x),MCCH_mbsfn_SubframeConfig(%x),mask(%x),jj(%d),num_sf_alloc(%d)\n",
+                      frameP, mcch_period, mbsfn_SubframeConfig, MCCH_mbsfn_SubframeConfig, (0x800000>>(jj*6)), jj, UE_mac_inst[module_idP].common_num_sf_alloc);
+                if(UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[0]==NULL)
+                  UE_mac_inst[module_idP].common_num_sf_alloc++;
+              }
+            }
+            break;
+          case 2:
+            if ((mbsfn_SubframeConfig & (0x400000>>(jj*6))) == (0x400000>>(jj*6))) {
+              if ((frameP % mcch_period == (mcch_offset+jj)) && ((MCCH_mbsfn_SubframeConfig & (0x400000>>(jj*6))) == (0x400000>>(jj*6)))) {
+                mcch_flag=1;
+                LOG_D(MAC,"frameP(%d),mcch_period(%ld),mbsfn_SubframeConfig(%x),MCCH_mbsfn_SubframeConfig(%x),mask(%x),jj(%d),num_sf_alloc(%d)\n",
+                      frameP, mcch_period, mbsfn_SubframeConfig, MCCH_mbsfn_SubframeConfig, (0x400000>>(jj*6)), jj, UE_mac_inst[module_idP].common_num_sf_alloc);
+                if(UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[0]==NULL)
+                  UE_mac_inst[module_idP].common_num_sf_alloc++;
+              }
+            }
+            break;
+          case 3:
+            if ((mbsfn_SubframeConfig & (0x200000>>(jj*6))) == (0x200000>>(jj*6))) {
+              if ((frameP % mcch_period == (mcch_offset+jj)) && ((MCCH_mbsfn_SubframeConfig & (0x200000>>(jj*6))) == (0x200000>>(jj*6)))) {
+                LOG_D(MAC,"frameP(%d),mcch_period(%ld),mbsfn_SubframeConfig(%x),MCCH_mbsfn_SubframeConfig(%x),mask(%x),jj(%d),num_sf_alloc(%d)\n",
+                      frameP, mcch_period, mbsfn_SubframeConfig, MCCH_mbsfn_SubframeConfig, (0x200000>>(jj*6)), jj, UE_mac_inst[module_idP].common_num_sf_alloc);
+                mcch_flag=1;
+                if(UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[0]==NULL)
+                  UE_mac_inst[module_idP].common_num_sf_alloc++;
+              }
+            }
+            break;
+          case 6:
+            if ((mbsfn_SubframeConfig & (0x100000>>(jj*6))) == (0x100000>>(jj*6))) {
+              if ((frameP % mcch_period == (mcch_offset+jj)) && ((MCCH_mbsfn_SubframeConfig & (0x100000>>(jj*6))) == (0x100000>>(jj*6)))) {
+                LOG_D(MAC,"frameP(%d),mcch_period(%ld),mbsfn_SubframeConfig(%x),MCCH_mbsfn_SubframeConfig(%x),mask(%x),jj(%d),num_sf_alloc(%d)\n",
+                      frameP, mcch_period, mbsfn_SubframeConfig, MCCH_mbsfn_SubframeConfig, (0x100000>>(jj*6)), jj, UE_mac_inst[module_idP].common_num_sf_alloc);
+                mcch_flag=1;
+                if(UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[0]==NULL)
+                  UE_mac_inst[module_idP].common_num_sf_alloc++;
+              }
+            }
+            break;
+          case 7:
+            if ((mbsfn_SubframeConfig & (0x80000>>(jj*6))) == (0x80000>>(jj*6))) {
+              if ((frameP % mcch_period == (mcch_offset+jj)) && ((MCCH_mbsfn_SubframeConfig & (0x80000>>(jj*6))) == (0x80000>>(jj*6)))) {
+                LOG_D(MAC,"frameP(%d),mcch_period(%ld),mbsfn_SubframeConfig(%x),MCCH_mbsfn_SubframeConfig(%x),mask(%x),jj(%d),num_sf_alloc(%d)\n",
+                      frameP, mcch_period, mbsfn_SubframeConfig, MCCH_mbsfn_SubframeConfig, (0x80000>>(jj*6)), jj, UE_mac_inst[module_idP].common_num_sf_alloc);
+                if(UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[0]==NULL)
+                  UE_mac_inst[module_idP].common_num_sf_alloc++;
+                mcch_flag=1;
+              }
+            }
+            break;
+          case 8:
+            if ((mbsfn_SubframeConfig & (0x40000>>(jj*6))) == (0x40000>>(jj*6))) {
+              if ((frameP % mcch_period == (mcch_offset+jj)) && ((MCCH_mbsfn_SubframeConfig & (0x40000>>(jj*6))) == (0x40000>>(jj*6)))) {
+                LOG_D(MAC,"frameP(%d),mcch_period(%ld),mbsfn_SubframeConfig(%x),MCCH_mbsfn_SubframeConfig(%x),mask(%x),jj(%d),num_sf_alloc(%d)\n",
+                      frameP, mcch_period, mbsfn_SubframeConfig, MCCH_mbsfn_SubframeConfig, (0x40000>>(jj*6)), jj, UE_mac_inst[module_idP].common_num_sf_alloc);
+                if(UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[0]==NULL)
+                  UE_mac_inst[module_idP].common_num_sf_alloc++;
+                mcch_flag=1;
+              }
+            }
+            break;
+          }// end switch
+        } else {
+          // TODO TDD
+        }
+
+        mtch_mcs = ue_query_p_mch(module_idP, frameP, subframe, &mtch_flag, &msi_flag, &mch_lcid);
+
+        // sf allocation is non-overlapping
+        if ((msi_flag==1) || (mcch_flag==1) || (mtch_flag==1)) {
+          LOG_D(MAC,"[UE %d] Frame %d Subframe %d: sync area %d SF alloc %d: msi flag %d, mcch flag %d, mtch flag %d\n",
+                module_idP, frameP, subframe,i,j,msi_flag,mcch_flag,mtch_flag);
+          *sync_area=i;
+          break;
+        }
+      }
+    }
+  } // end of for
 
-		    *sync_area = i;
-		    break;
-		}
-	    } else {		// four-frameP format
-	    }
-	}
-    }				// end of for
 #if UE_TIMING_TRACE
-    stop_meas(&UE_mac_inst[module_idP].ue_query_mch);
+  stop_meas(&UE_mac_inst[module_idP].ue_query_mch);
 #endif
 
-    if ((mcch_flag == 1)) {	// || (msi_flag==1))
-	*mcch_active = 1;
-    }
+  if ((mcch_flag == 1)) {	// || (msi_flag==1))
+    *mcch_active = 1;
+  }
 
-    if ((mcch_flag == 1)
-	|| ((msi_flag == 1) && (UE_mac_inst[module_idP].mcch_status == 1))) {
-	return mcch_mcs;
-    } else if ((mtch_flag == 1)
-	       && (UE_mac_inst[module_idP].msi_status == 1)) {
-	return UE_mac_inst[module_idP].pmch_Config[0]->dataMCS_r9;
+  if ( (mcch_flag==1) || ((msi_flag==1) && (UE_mac_inst[module_idP].mcch_status==1)) ) {
+    if (msi_flag!=1) {
+      for (i=0; i<8; i++)
+        UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i] = NULL;
+      for (i=0; i<15; i++)
+        UE_mac_inst[module_idP].pmch_Config[i] = NULL;
+      for (i=0; i<28 ;i++) {
+        UE_mac_inst[module_idP].pmch_lcids[i] = -1;
+        UE_mac_inst[module_idP].pmch_stop_mtch[i] = 2047;
+        UE_mac_inst[module_idP].msi_status_v[i] = 0;
+      }
     } else {
-	return -1;
+      for (i=0; i<28; i++) {
+        UE_mac_inst[module_idP].pmch_lcids[i] = -1;
+        UE_mac_inst[module_idP].pmch_stop_mtch[i] = 2047;
+        UE_mac_inst[module_idP].msi_status_v[i] = 0;
+      }
     }
+    return mcch_mcs;
+  } else if ((mtch_flag==1) && (UE_mac_inst[module_idP].msi_status_v[(mch_lcid > 27) ? 27 : mch_lcid] == 1)) {
+    return mtch_mcs;
+  } else {
+    return -1;
+  }
 }
 
 #endif
@@ -2255,7 +2469,7 @@ ue_get_sdu(module_id_t module_idP, int CC_id, frame_t frameP,
 #endif
 
     if (opt_enabled) {
-	trace_pdu(0, ulsch_buffer, buflen, module_idP, 3,
+	trace_pdu(DIRECTION_UPLINK, ulsch_buffer, buflen, module_idP, WS_C_RNTI,
 		  UE_mac_inst[module_idP].crnti,
 		  UE_mac_inst[module_idP].txFrame,
 		  UE_mac_inst[module_idP].txSubframe, 0, 0);
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
index e12fb80e1bda913de5e770730d3fe9ca97aa9ba6..4731039c1a949d3c097dd643ad812ab9ac48efc5 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
@@ -30,6 +30,8 @@
 #define PDCP_C
 //#define DEBUG_PDCP_FIFO_FLUSH_SDU
 
+#define MBMS_MULTICAST_OUT
+
 #include "assertions.h"
 #include "hashtable.h"
 #include "pdcp.h"
@@ -66,6 +68,17 @@ extern int otg_enabled;
 #include "common/ran_context.h"
 extern RAN_CONTEXT_t RC;
 
+#ifdef MBMS_MULTICAST_OUT
+# include <sys/types.h>
+# include <sys/socket.h>
+# include <netinet/in.h>
+# include <netinet/ip.h>
+# include <netinet/udp.h>
+# include <unistd.h>
+
+static int mbms_socket = -1;
+#endif
+
 //-----------------------------------------------------------------------------
 /*
  * If PDCP_UNIT_TEST is set here then data flow between PDCP and RLC is broken
@@ -349,16 +362,10 @@ boolean_t pdcp_data_req(
      * Ask sublayer to transmit data and check return value
      * to see if RLC succeeded
      */
-#ifdef PDCP_MSG_PRINT
-    int i=0;
-    LOG_F(PDCP,"[MSG] PDCP DL %s PDU on rb_id %d\n", (srb_flagP)? "CONTROL" : "DATA", rb_idP);
 
-    for (i = 0; i < pdcp_pdu_size; i++) {
-      LOG_F(PDCP,"%02x ", ((uint8_t*)pdcp_pdu_p->data)[i]);
-    }
+    LOG_DUMPMSG(PDCP,DEBUG_PDCP,(char *)pdcp_pdu_p->data,pdcp_pdu_size,
+                "[MSG] PDCP DL %s PDU on rb_id %d\n",(srb_flagP)? "CONTROL" : "DATA", rb_idP);
 
-    LOG_F(PDCP,"\n");
-#endif
     rlc_status = rlc_data_req(ctxt_pP, srb_flagP, MBMS_FLAG_NO, rb_idP, muiP, confirmP, pdcp_pdu_size, pdcp_pdu_p
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
                              ,sourceL2Id
@@ -461,17 +468,8 @@ pdcp_data_ind(
 
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_DATA_IND,VCD_FUNCTION_IN);
-
-#ifdef PDCP_MSG_PRINT
-  int i=0;
-  LOG_F(PDCP,"[MSG] PDCP UL %s PDU on rb_id %d\n", (srb_flagP)? "CONTROL" : "DATA", rb_idP);
-
-  for (i = 0; i < sdu_buffer_sizeP; i++) {
-    LOG_F(PDCP,"%02x ", ((uint8_t*)sdu_buffer_pP->data)[i]);
-  }
-
-  LOG_F(PDCP,"\n");
-#endif
+  LOG_DUMPMSG(PDCP,DEBUG_PDCP,(char *)sdu_buffer_pP->data,sdu_buffer_sizeP,
+              "[MSG] PDCP UL %s PDU on rb_id %d\n", (srb_flagP)? "CONTROL" : "DATA", rb_idP);
 
 #if T_TRACER
   if (ctxt_pP->enb_flag != ENB_FLAG_NO)
@@ -758,11 +756,26 @@ pdcp_data_ind(
   packet_forwarded = FALSE;
 #endif
 
+#ifdef MBMS_MULTICAST_OUT
+  if ((MBMS_flagP != 0) && (mbms_socket != -1)) {
+    struct iphdr   *ip_header = (struct iphdr*)&sdu_buffer_pP->data[payload_offset];
+    struct udphdr *udp_header = (struct udphdr*)&sdu_buffer_pP->data[payload_offset + sizeof(struct iphdr)];
+    struct sockaddr_in dest_addr;
+
+    dest_addr.sin_family      = AF_INET;
+    dest_addr.sin_port        = udp_header->dest;
+    dest_addr.sin_addr.s_addr = ip_header->daddr;
+
+    sendto(mbms_socket, &sdu_buffer_pP->data[payload_offset], sdu_buffer_sizeP - payload_offset, MSG_DONTWAIT, (struct sockaddr*)&dest_addr, sizeof(dest_addr));
+    packet_forwarded = TRUE;
+  }
+#endif
+
   if (FALSE == packet_forwarded) {
     new_sdu_p = get_free_mem_block(sdu_buffer_sizeP - payload_offset + sizeof (pdcp_data_ind_header_t), __func__);
 
     if (new_sdu_p) {
-      if (pdcp_p->rlc_mode == RLC_MODE_AM ) {
+      if ((MBMS_flagP == 0) && (pdcp_p->rlc_mode == RLC_MODE_AM)) {
         pdcp_p->last_submitted_pdcp_rx_sn = sequence_number;
       }
 
@@ -803,7 +816,6 @@ pdcp_data_ind(
       
       
     }
-  }
 
   /* Print octets of incoming data in hexadecimal form */
   LOG_D(PDCP, "Following content has been received from RLC (%d,%d)(PDCP header has already been removed):\n",
@@ -839,13 +851,14 @@ pdcp_data_ind(
 
   
 #if defined(STOP_ON_IP_TRAFFIC_OVERLOAD)
-  else {
-    AssertFatal(0, PROTOCOL_PDCP_CTXT_FMT" PDCP_DATA_IND SDU DROPPED, OUT OF MEMORY \n",
-                PROTOCOL_PDCP_CTXT_ARGS(ctxt_pP, pdcp_p));
-  }
-
+    else {
+      AssertFatal(0, PROTOCOL_PDCP_CTXT_FMT" PDCP_DATA_IND SDU DROPPED, OUT OF MEMORY \n",
+                  PROTOCOL_PDCP_CTXT_ARGS(ctxt_pP, pdcp_p));
+    }
 #endif
 
+  }
+
   free_mem_block(sdu_buffer_pP, __func__);
 
   if (ctxt_pP->enb_flag) {
@@ -1458,8 +1471,12 @@ rrc_pdcp_config_asn1_req (
 
       for (j=0; j<mbms_SessionInfoList_r9_p->list.count; j++) {
         MBMS_SessionInfo_p = mbms_SessionInfoList_r9_p->list.array[j];
-        lc_id = MBMS_SessionInfo_p->sessionId_r9->buf[0];
+        if (MBMS_SessionInfo_p->sessionId_r9)
+          lc_id = MBMS_SessionInfo_p->sessionId_r9->buf[0];
+        else
+          lc_id = MBMS_SessionInfo_p->logicalChannelIdentity_r9;
         mch_id = MBMS_SessionInfo_p->tmgi_r9.serviceId_r9.buf[2]; //serviceId is 3-octet string
+//        mch_id = j;
 
         // can set the mch_id = i
         if (ctxt_pP->enb_flag) {
@@ -1480,6 +1497,14 @@ rrc_pdcp_config_asn1_req (
           }
         }
 
+        LOG_D(PDCP, "lc_id (%02ld) mch_id(%02x,%02x,%02x) drb_id(%ld) action(%d)\n",
+          lc_id,
+          MBMS_SessionInfo_p->tmgi_r9.serviceId_r9.buf[0],
+          MBMS_SessionInfo_p->tmgi_r9.serviceId_r9.buf[1],
+          MBMS_SessionInfo_p->tmgi_r9.serviceId_r9.buf[2],
+          drb_id,
+          action);
+
         pdcp_config_req_asn1 (
           ctxt_pP,
           NULL,  // unused for MBMS
@@ -2018,6 +2043,12 @@ void pdcp_layer_init(void)
 #endif
   }
 
+#ifdef MBMS_MULTICAST_OUT
+  mbms_socket = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
+  if (mbms_socket == -1)
+    LOG_W(PDCP, "Could not create RAW socket, MBMS packets will not be put to the network\n");
+#endif
+
   LOG_I(PDCP, "PDCP layer has been initialized\n");
 
   pdcp_output_sdu_bytes_to_write=0;
@@ -2068,6 +2099,12 @@ void pdcp_layer_cleanup (void)
 {
   list_free (&pdcp_sdu_list);
   hashtable_destroy(pdcp_coll_p);
+#ifdef MBMS_MULTICAST_OUT
+  if(mbms_socket != -1) {
+    close(mbms_socket);
+    mbms_socket = -1;
+  }
+#endif
 }
 
 #ifdef PDCP_USE_RT_FIFO
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
index b9e605ca24dbea29d60d414b835386c8cc9924c2..92409d96dcfc4f0eb877a33af061f87480a0440a 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
@@ -760,10 +760,10 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const  ctxt_pP)
                                     0,
                                     MSC_AS_TIME_FMT" DATA-REQ inst %u rb %u rab %u size %u",
                                     MSC_AS_TIME_ARGS(ctxt_pP),
-                                    pc5s_header.inst,
-                                    pc5s_header.rb_id,
+                                    pc5s_header->inst,
+                                    pc5s_header->rb_id,
                                     rab_id,
-                                    pc5s_header.data_size);
+                                    pc5s_header->data_size);
 
                   pdcp_data_req(
                         &ctxt,
@@ -787,10 +787,10 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const  ctxt_pP)
                                     0,
                                     MSC_AS_TIME_FMT" DATA-REQ inst %u rb %u rab %u size %u",
                                     MSC_AS_TIME_ARGS(ctxt_pP),
-                                    pc5s_header.inst,
-                                    pc5s_header.rb_id,
+                                    pc5s_header->inst,
+                                    pc5s_header->rb_id,
                                     rab_id,
-                                    pc5s_header.data_size);
+                                    pc5s_header->data_size);
                   LOG_D(PDCP,
                         "[FRAME %5u][UE][IP][INSTANCE %u][RB %u][--- PDCP_DATA_REQ / %d Bytes ---X][PDCP][MOD %u][UE %u][RB %u] NON INSTANCIATED INSTANCE key 0x%"PRIx64", DROPPED\n",
                         ctxt.frame,
diff --git a/openair2/LAYER2/RLC/rlc.h b/openair2/LAYER2/RLC/rlc.h
index ff49b2d056f12f2e07a6a642322411e0841c5398..8c557188a2a2e115300b7ea9d15ef4032da49e1e 100644
--- a/openair2/LAYER2/RLC/rlc.h
+++ b/openair2/LAYER2/RLC/rlc.h
@@ -208,7 +208,7 @@ rlc_mbms_id_t        rlc_mbms_lcid2service_session_id_eNB[MAX_eNB][RLC_MAX_MBMS_
 #define rlc_mbms_ue_get_lcid_by_rb_id(uE_mOD,rB_iD) rlc_mbms_rbid2lcid_ue[uE_mOD][rB_iD]
 
 #define rlc_mbms_ue_set_lcid_by_rb_id(uE_mOD,rB_iD,lOG_cH_iD) do { \
-            AssertFatal(rB_iD<NB_RB_MAX, "INVALID RB ID %u", rB_iD); \
+            AssertFatal(rB_iD<NB_RB_MBMS_MAX, "INVALID RB ID %u", rB_iD); \
             rlc_mbms_rbid2lcid_ue[uE_mOD][rB_iD] = lOG_cH_iD; \
         } while (0);
 
diff --git a/openair2/LAYER2/RLC/rlc_rrc.c b/openair2/LAYER2/RLC/rlc_rrc.c
index aa00ffb773c876f4c8e99edac83394794e457822..8977e422b60591d100fd809aa36643c090469cb2 100644
--- a/openair2/LAYER2/RLC/rlc_rrc.c
+++ b/openair2/LAYER2/RLC/rlc_rrc.c
@@ -414,9 +414,13 @@ rlc_op_status_t rrc_rlc_config_asn1_req (const protocol_ctxt_t   * const ctxt_pP
 
       for (j=0; j<mbms_SessionInfoList_r9_p->list.count; j++) {
         MBMS_SessionInfo_p = mbms_SessionInfoList_r9_p->list.array[j];
-        mbms_session_id    = MBMS_SessionInfo_p->sessionId_r9->buf[0];
+        if (MBMS_SessionInfo_p->sessionId_r9)
+          mbms_session_id  = MBMS_SessionInfo_p->sessionId_r9->buf[0];
+        else
+          mbms_session_id  = MBMS_SessionInfo_p->logicalChannelIdentity_r9;
         lc_id              = mbms_session_id;
         mbms_service_id    = MBMS_SessionInfo_p->tmgi_r9.serviceId_r9.buf[2]; //serviceId is 3-octet string
+//        mbms_service_id    = j;
 
         // can set the mch_id = i
         if (ctxt_pP->enb_flag) {
diff --git a/openair2/NETWORK_DRIVER/LITE/common.c b/openair2/NETWORK_DRIVER/LITE/common.c
index 0d616d5764fa16e47ec5971b8f81346c54d110c8..2ae6f5279d12ce5f2be1f2b1d36ee59d5ddfbef2 100644
--- a/openair2/NETWORK_DRIVER/LITE/common.c
+++ b/openair2/NETWORK_DRIVER/LITE/common.c
@@ -333,7 +333,7 @@ void oai_nw_drv_common_class_wireless2ip(uint16_t dlen,
 
   printk("\n");
 #endif //OAI_DRV_DEBUG_RECEIVE
-  netif_rx(skb);
+  netif_rx_ni(skb);
 #ifdef OAI_DRV_DEBUG_RECEIVE
   printk("[OAI_IP_DRV][%s] end\n",__FUNCTION__);
 #endif
diff --git a/openair2/NETWORK_DRIVER/MESH/common.c b/openair2/NETWORK_DRIVER/MESH/common.c
index d380b8a4d829cf31bf1369996d05de279cab73a5..1c7b8e4d123d41c11b1dfb9f5b47ffc916d8d997 100644
--- a/openair2/NETWORK_DRIVER/MESH/common.c
+++ b/openair2/NETWORK_DRIVER/MESH/common.c
@@ -309,7 +309,7 @@ void nas_COMMON_receive(uint16_t dlen,
 
   printk("\n");
 #endif //NAS_DEBUG_RECEIVE
-  netif_rx(skb);
+  netif_rx_ni(skb);
 #ifdef NAS_DEBUG_RECEIVE
   printk("NAS_COMMON_RECEIVE: end\n");
 #endif
diff --git a/openair2/NETWORK_DRIVER/MESH/device.c b/openair2/NETWORK_DRIVER/MESH/device.c
index f8a420697a95d043d2f5870d2c55ca8279567ed5..f5d31742bc400c4cc055d8950ae633c65b9beec0 100644
--- a/openair2/NETWORK_DRIVER/MESH/device.c
+++ b/openair2/NETWORK_DRIVER/MESH/device.c
@@ -324,7 +324,11 @@ static const struct net_device_ops nasmesh_netdev_ops = {
   .ndo_set_mac_address  = NULL,
   .ndo_set_config     = nas_set_config,
   .ndo_do_ioctl       = nas_CTL_ioctl,
+#if RHEL_RELEASE_CODE>=1797
+  .extended.ndo_change_mtu   = nas_change_mtu,
+#else
   .ndo_change_mtu   = nas_change_mtu,
+#endif
   .ndo_tx_timeout   = nas_tx_timeout,
 };
 
diff --git a/openair2/NETWORK_DRIVER/UE_IP/common.c b/openair2/NETWORK_DRIVER/UE_IP/common.c
index 84f425ef3c004646069f1e0496620a6cca4327a9..b21ca5f2dcc7bd9c8fab015f9f95d5b546fa4b77 100644
--- a/openair2/NETWORK_DRIVER/UE_IP/common.c
+++ b/openair2/NETWORK_DRIVER/UE_IP/common.c
@@ -222,7 +222,7 @@ skb_p->mark = rb_idP;
 
   printk("\n");
 #endif //OAI_DRV_DEBUG_RECEIVE
-  netif_rx(skb_p);
+  netif_rx_ni(skb_p);
 #ifdef OAI_DRV_DEBUG_RECEIVE
   printk("[UE_IP_DRV][%s] end\n",__FUNCTION__);
 #endif
diff --git a/openair2/NETWORK_DRIVER/UE_IP/device.c b/openair2/NETWORK_DRIVER/UE_IP/device.c
index d9a91496859a70cb62c4d699206ce5178f259dfe..47c820fe775330dd0aa9de35052667f31e4b0266 100644
--- a/openair2/NETWORK_DRIVER/UE_IP/device.c
+++ b/openair2/NETWORK_DRIVER/UE_IP/device.c
@@ -349,7 +349,11 @@ static const struct net_device_ops ue_ip_netdev_ops = {
   .ndo_set_mac_address    = ue_ip_set_mac_address,
   .ndo_set_config         = ue_ip_set_config,
   .ndo_do_ioctl           = NULL,
-  .ndo_change_mtu         = ue_ip_change_mtu,
+#if RHEL_RELEASE_CODE>=1797
+  .extended.ndo_change_mtu         = ue_ip_change_mtu,
+#else
+  .ndo_change_mtu   = ue_ip_change_mtu,
+#endif
   .ndo_tx_timeout         = ue_ip_tx_timeout,
   .ndo_change_rx_flags    = ue_ip_change_rx_flags,
 };
diff --git a/openair2/RRC/LTE/L2_interface.c b/openair2/RRC/LTE/L2_interface.c
index a7c96a8a22f201d19fe1dc2e63eaa59009745a92..d201732177733f67cc61cfc0ff877d06b21f7c6f 100644
--- a/openair2/RRC/LTE/L2_interface.c
+++ b/openair2/RRC/LTE/L2_interface.c
@@ -43,9 +43,6 @@
 
 #include "flexran_agent_extern.h"
 
-//#define RRC_DATA_REQ_DEBUG
-//#define DEBUG_RRC 1
-
 
 extern RAN_CONTEXT_t RC;
 
@@ -68,10 +65,9 @@ mac_rrc_data_req(
   uint8_t sfn                     = (uint8_t)((frameP>>2)&0xff);
 
 
-#ifdef DEBUG_RRC
-  int i;
-  LOG_I(RRC,"[eNB %d] mac_rrc_data_req to SRB ID=%d\n",Mod_idP,Srb_id);
-#endif
+  if (LOG_DEBUGFLAG(DEBUG_RRC)) {
+    LOG_D(RRC,"[eNB %d] mac_rrc_data_req to SRB ID=%d\n",Mod_idP,Srb_id);
+  }
 
   eNB_RRC_INST *rrc;
   rrc_eNB_carrier_data_t *carrier;
@@ -96,15 +92,15 @@ mac_rrc_data_req(
                RC.rrc[Mod_idP]->carrier[CC_id].SIB1,
                RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1);
 
-#ifdef DEBUG_RRC
-        LOG_T(RRC,"[eNB %d] Frame %d : BCCH request => SIB 1\n",Mod_idP,frameP);
+        if (LOG_DEBUGFLAG(DEBUG_RRC)) {
+          LOG_T(RRC,"[eNB %d] Frame %d : BCCH request => SIB 1\n",Mod_idP,frameP);
 
-        for (i=0; i<RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1; i++) {
-          LOG_T(RRC,"%x.",buffer_pP[i]);
-        }
+          for (int i=0; i<RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1; i++) {
+            LOG_T(RRC,"%x.",buffer_pP[i]);
+          }
 
-        LOG_T(RRC,"\n");
-#endif
+          LOG_T(RRC,"\n");
+        } /* LOG_DEBUGFLAG(DEBUG_RRC) */
 
         return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1);
       } // All RFN mod 8 transmit SIB2-3 in SF 5
@@ -113,15 +109,15 @@ mac_rrc_data_req(
                RC.rrc[Mod_idP]->carrier[CC_id].SIB23,
                RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23);
 
-#ifdef DEBUG_RRC
-        LOG_T(RRC,"[eNB %d] Frame %d BCCH request => SIB 2-3\n",Mod_idP,frameP);
+        if (LOG_DEBUGFLAG(DEBUG_RRC)) {
+          LOG_T(RRC,"[eNB %d] Frame %d BCCH request => SIB 2-3\n",Mod_idP,frameP);
 
-        for (i=0; i<RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23; i++) {
-          LOG_T(RRC,"%x.",buffer_pP[i]);
-        }
+          for (int i=0; i<RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23; i++) {
+               LOG_T(RRC,"%x.",buffer_pP[i]);
+          }
 
-        LOG_T(RRC,"\n");
-#endif
+          LOG_T(RRC,"\n");
+        } /* LOG_DEBUGFLAG(DEBUG_RRC) */
         return(RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23);
       } else {
         return(0);
@@ -193,20 +189,17 @@ mac_rrc_data_req(
              RC.rrc[Mod_idP]->carrier[CC_id].MCCH_MESSAGE[mbsfn_sync_area],
              RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]);
 
-#ifdef DEBUG_RRC
-      LOG_D(RRC,"[eNB %d] Frame %d : MCCH request => MCCH_MESSAGE \n",Mod_idP,frameP);
+     if (LOG_DEBUGFLAG(DEBUG_RRC)) {
+       LOG_D(RRC,"[eNB %d] Frame %d : MCCH request => MCCH_MESSAGE \n",Mod_idP,frameP);
 
-      for (i=0; i<RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]; i++) {
-        LOG_T(RRC,"%x.",buffer_pP[i]);
-      }
+       for (int i=0; i<RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]; i++) {
+            LOG_T(RRC,"%x.",buffer_pP[i]);
+       }
 
-      LOG_T(RRC,"\n");
-#endif
+       LOG_T(RRC,"\n");
+     } /* LOG_DEBUGFLAG(DEBUG_RRC) */
 
-      return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]);
-      //      }
-      //else
-      //return(0);
+     return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]);
     }
 
 #endif // #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
@@ -329,7 +322,7 @@ void mac_eNB_rrc_ul_failure(const module_id_t Mod_instP,
 								     rntiP,
 								     PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_DEACTIVATED);
   }
-//  rrc_mac_remove_ue(Mod_instP,rntiP);
+  rrc_mac_remove_ue(Mod_instP,rntiP);
 }
 
 void mac_eNB_rrc_uplane_failure(const module_id_t Mod_instP,
diff --git a/openair2/RRC/LTE/L2_interface_ue.c b/openair2/RRC/LTE/L2_interface_ue.c
index d3527b8a17e619119399ab1d557c1e4a89b2d653..3b7219af42913d844ca30f96a8029cc85aab60a6 100644
--- a/openair2/RRC/LTE/L2_interface_ue.c
+++ b/openair2/RRC/LTE/L2_interface_ue.c
@@ -42,7 +42,6 @@
 #endif
 
 //#define RRC_DATA_REQ_DEBUG
-//#define DEBUG_RRC 1
 
 
 
@@ -61,10 +60,7 @@ mac_rrc_data_req_ue(
 //--------------------------------------------------------------------------
 {
 
-#ifdef DEBUG_RRC
-  int i;
-  LOG_I(RRC,"[eNB %d] mac_rrc_data_req to SRB ID=%d\n",Mod_idP,Srb_id);
-#endif
+  LOG_D(RRC,"[eNB %d] mac_rrc_data_req to SRB ID=%d\n",Mod_idP,Srb_id);
 
 
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.c b/openair2/RRC/LTE/MESSAGES/asn1_msg.c
index 66aae4237ab2d5103f2431fefc9ae44ba8bb607e..3a1e7eed87d9bb64b88bf85a8e2a02fd8b18b6b3 100644
--- a/openair2/RRC/LTE/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.c
@@ -91,7 +91,6 @@
 #define msg printf
 #endif
 
-//#define XER_PRINT
 
 typedef struct xer_sprint_string_s {
   char *string;
@@ -1353,9 +1352,9 @@ uint8_t do_SIB23(uint8_t Mod_id,
   }
 #endif
 
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message, (void*)bcch_message);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message, (void*)bcch_message);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_DL_SCH_Message,
                                    NULL,
                                    (void*)bcch_message,
@@ -1607,9 +1606,9 @@ uint8_t do_SidelinkUEInformation(uint8_t Mod_id, uint8_t *buffer,  SL_Destinatio
       break;
    }
 
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void*)&ul_dcch_msg);
-#endif
+   if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+      xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void*)&ul_dcch_msg);
+   }
 
 
    enc_rval = uper_encode_to_buffer(&asn_DEF_UL_DCCH_Message,
@@ -2165,9 +2164,9 @@ do_RRCConnectionSetup(
 #endif
 
 
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message,
                                    NULL,
                                    (void*)&dl_ccch_msg,
@@ -2240,9 +2239,9 @@ do_SecurityModeCommand(
   dl_dcch_msg.message.choice.c1.choice.securityModeCommand.criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.integrityProtAlgorithm
     = (e_SecurityAlgorithmConfig__integrityProtAlgorithm)integrityProtAlgorithm;
 
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_DCCH_Message, (void*)&dl_dcch_msg);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_DL_DCCH_Message, (void*)&dl_dcch_msg);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message,
                                    NULL,
                                    (void*)&dl_dcch_msg,
@@ -2320,9 +2319,9 @@ do_UECapabilityEnquiry(
   ASN_SEQUENCE_ADD(&dl_dcch_msg.message.choice.c1.choice.ueCapabilityEnquiry.criticalExtensions.choice.c1.choice.ueCapabilityEnquiry_r8.ue_CapabilityRequest.list,
                    &rat);
 
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_DCCH_Message, (void*)&dl_dcch_msg);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_DL_DCCH_Message, (void*)&dl_dcch_msg);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message,
                                    NULL,
                                    (void*)&dl_dcch_msg,
@@ -2539,9 +2538,9 @@ do_RRCConnectionReconfiguration(
            enc_rval.failed_type->name, enc_rval.encoded);
      return -1;
   }
-#ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_DL_DCCH_Message,(void*)&dl_dcch_msg);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout,&asn_DEF_DL_DCCH_Message,(void*)&dl_dcch_msg);
+  }
 
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
@@ -2742,9 +2741,9 @@ do_RRCConnectionReestablishment(
 
   rrcConnectionReestablishment->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r8.nonCriticalExtension = NULL;
 
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message,
                                    NULL,
                                    (void*)&dl_ccch_msg,
@@ -2804,9 +2803,9 @@ do_RRCConnectionReestablishmentReject(
   // RRCConnectionReestablishmentReject
   rrcConnectionReestablishmentReject->criticalExtensions.present = RRCConnectionReestablishmentReject__criticalExtensions_PR_rrcConnectionReestablishmentReject_r8;
 
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message,
                                    NULL,
                                    (void*)&dl_ccch_msg,
@@ -2867,9 +2866,9 @@ do_RRCConnectionReject(
   /* let's put a wait time of 1s for the moment */
   rrcConnectionReject->criticalExtensions.choice.c1.choice.rrcConnectionReject_r8.waitTime = 1;
 
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message,
                                    NULL,
                                    (void*)&dl_ccch_msg,
@@ -3061,9 +3060,9 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id,
   */
   ASN_SEQUENCE_ADD(&(*mbsfnAreaConfiguration)->pmch_InfoList_r9.list,pmch_Info_1);
 
-#ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_MCCH_Message,(void*)mcch_message);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout,&asn_DEF_MCCH_Message,(void*)mcch_message);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_MCCH_Message,
                                    NULL,
                                    (void*)mcch_message,
@@ -3339,9 +3338,9 @@ uint8_t do_Paging(uint8_t Mod_id, uint8_t *buffer, ue_paging_identity_t ue_pagin
            enc_rval.failed_type->name, enc_rval.encoded);
      return -1;
   }
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_PCCH_Message, (void*)&pcch_msg);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_PCCH_Message, (void*)&pcch_msg);
+  }
 
   return((enc_rval.encoded+7)/8);
 }
@@ -3504,9 +3503,9 @@ OAI_UECapability_t *fill_ue_capability(char *UE_EUTRA_Capability_xer_fname)
   }
 
   UECapability.UE_EUTRA_Capability = UE_EUTRA_Capability;
-#ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_UE_EUTRA_Capability,(void *)UE_EUTRA_Capability);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout,&asn_DEF_UE_EUTRA_Capability,(void *)UE_EUTRA_Capability);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_UE_EUTRA_Capability,
                                    NULL,
                                    (void*)UE_EUTRA_Capability,
diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c b/openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c
index cdfc1ac0f355ef068e18d677ddf2e4ccf371b00f..20962f3ca159741224898017637a3400df005c90 100644
--- a/openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c
+++ b/openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c
@@ -136,7 +136,7 @@ uint8_t do_MIB_NB_IoT(
                                    carrier->MIB_NB_IoT,
                                    100);
   if(enc_rval.encoded <= 0) {
-      LOG_F(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
+      LOG_E(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
   }
 
@@ -382,9 +382,9 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
   ASN_SEQUENCE_ADD(&(*sib1_NB_IoT)->systemInfoValueTagList_r13->list,&systemInfoValueTagSI);
 
 
-#ifdef XER_PRINT //generate xml files
-  xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message_NB, (void*)bcch_message);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message_NB, (void*)bcch_message);
+  }
 
 
   enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_DL_SCH_Message_NB,
@@ -394,7 +394,7 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
                                    100);
 
   if (enc_rval.encoded > 0){ 
-       LOG_F(RRC,"ASN1 message encoding failed (%s, %lu)!\n",
+       LOG_E(RRC,"ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
   }
 
@@ -667,9 +667,9 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
   ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation_r13.criticalExtensions.choice.systemInformation_r13.sib_TypeAndInfo_r13.list,
                    sib3_NB_part);
 
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message_NB, (void*)bcch_message);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message_NB, (void*)bcch_message);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_DL_SCH_Message_NB,
                                    NULL,
                                    (void*)bcch_message,
@@ -887,9 +887,9 @@ uint8_t do_RRCConnectionSetup_NB_IoT(
  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.physicalConfigDedicated_r13 = physicalConfigDedicated2_NB_IoT;
  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.mac_MainConfig_r13 = NULL;
 
-#ifdef XER_PRINT
- xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
-#endif
+ if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+    xer_fprint(stdout, &asn_DEF_DL_CCCH_Message_NB, (void*)&dl_ccch_msg_NB_IoT);
+ }
  enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message_NB,
                                   NULL,
                                   (void*)&dl_ccch_msg_NB_IoT,
@@ -897,7 +897,7 @@ uint8_t do_RRCConnectionSetup_NB_IoT(
                                   100);
 
  if (enc_rval.encoded <= 0) {
-     LOG_F(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
+     LOG_E(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
               enc_rval.failed_type->name, enc_rval.encoded);
  }
 
@@ -939,16 +939,16 @@ uint8_t do_SecurityModeCommand_NB_IoT(
     = (e_SecurityAlgorithmConfig__integrityProtAlgorithm)integrityProtAlgorithm;
 
 //only changed "asn_DEF_DL_DCCH_Message_NB"
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_DCCH_Message_NB, (void*)&dl_dcch_msg_NB_IoT);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_DL_DCCH_Message_NB, (void*)&dl_dcch_msg_NB_IoT);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message_NB,
                                    NULL,
                                    (void*)&dl_dcch_msg_NB_IoT,
                                    buffer,
                                    100);
   if (enc_rval.encoded <= 0) {
-      LOG_F(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
+      LOG_E(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
   }
 
@@ -1001,16 +1001,16 @@ uint8_t do_UECapabilityEnquiry_NB_IoT(
   //no ue_CapabilityRequest (list of RAT_Type)
 
 //only changed "asn_DEF_DL_DCCH_Message_NB"
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_DCCH_Message_NB, (void*)&dl_dcch_msg_NB_IoT);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_DL_DCCH_Message_NB, (void*)&dl_dcch_msg_NB_IoT);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message_NB,
                                    NULL,
                                    (void*)&dl_dcch_msg_NB_IoT,
                                    buffer,
                                    100);
   if (enc_rval.encoded <= 0) {
-     LOG_F(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
+     LOG_E(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
     }
 
@@ -1105,14 +1105,14 @@ uint16_t do_RRCConnectionReconfiguration_NB_IoT(
                                    buffer,
                                    RRC_BUF_SIZE);
   if (enc_rval.encoded <= 0) {
-     LOG_F(RRC, "ASN1 message encoding failed %s, %li\n",
+     LOG_E(RRC, "ASN1 message encoding failed %s, %li\n",
                enc_rval.failed_type->name, enc_rval.encoded);
   }
 
   //changed only asn_DEF_DL_DCCH_Message_NB
-#ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_DL_DCCH_Message_NB,(void*)&dl_dcch_msg_NB_IoT);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout,&asn_DEF_DL_DCCH_Message_NB,(void*)&dl_dcch_msg_NB_IoT);
+  }
 
 //#if defined(ENABLE_ITTI)
 //# if !defined(DISABLE_XER_SPRINT)...
@@ -1143,16 +1143,16 @@ uint8_t do_RRCConnectionReestablishmentReject_NB_IoT(
   rrcConnectionReestablishmentReject->criticalExtensions.present = RRCConnectionReestablishmentReject__criticalExtensions_PR_rrcConnectionReestablishmentReject_r8;
 
   //Only change in "asn_DEF_DL_CCCH_Message_NB"
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message_NB, (void*)&dl_ccch_msg_NB_IoT);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_DL_CCCH_Message_NB, (void*)&dl_ccch_msg_NB_IoT);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message_NB,
                                    NULL,
                                    (void*)&dl_ccch_msg_NB_IoT,
                                    buffer,
                                    100);
   if (enc_rval.encoded <= 0) {
-     LOG_F(RRC,"ASN1 message encoding failed (%s, %lu)!\n",
+     LOG_E(RRC,"ASN1 message encoding failed (%s, %lu)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
   }
 
@@ -1214,16 +1214,16 @@ uint8_t do_RRCConnectionReject_NB_IoT(
 		  RRCConnectionReject_NB_r13_IEs__rrc_SuspendIndication_r13_true;
 
   //Only Modified "asn_DEF_DL_CCCH_Message_NB"
-#ifdef XER_PRINT
-  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message_NB, (void*)&dl_ccch_msg);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout, &asn_DEF_DL_CCCH_Message_NB, (void*)&dl_ccch_msg_NB_IoT);
+  }
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message_NB,
                                    NULL,
                                    (void*)&dl_ccch_msg_NB_IoT,
                                    buffer,
                                    100);
   if (enc_rval.encoded <= 0) {
-     LOG_F(RRC, "ASN1 message encoding failed (%s, %ld)!\n",
+     LOG_E(RRC, "ASN1 message encoding failed (%s, %ld)!\n",
                enc_rval.failed_type->name, enc_rval.encoded);
   }
 
@@ -1351,13 +1351,13 @@ uint8_t do_RRCConnectionReestablishment_NB_IoT(
 	                                   RRC_BUF_SIZE);
 
 	if (enc_rval.encoded <= 0) {
-           LOG_F(RRC, "ASN1 message encoding failed (%s, %li)!\n",
+           LOG_E(RRC, "ASN1 message encoding failed (%s, %li)!\n",
 	               enc_rval.failed_type->name, enc_rval.encoded);
         }
 
-#ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_DL_CCCH_Message_NB,(void*)&dl_ccch_msg_NB_IoT);
-#endif
+        if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+           xer_fprint(stdout,&asn_DEF_DL_CCCH_Message_NB,(void*)&dl_ccch_msg_NB_IoT);
+        }
 
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
diff --git a/openair2/RRC/LTE/rrc_UE.c b/openair2/RRC/LTE/rrc_UE.c
index c23bf12d52a8b533bb54f6023025ee1566fba317..b111f77871c1292afa40a366b8b2506dcfd2e23b 100644
--- a/openair2/RRC/LTE/rrc_UE.c
+++ b/openair2/RRC/LTE/rrc_UE.c
@@ -99,10 +99,6 @@ int send_ue_information = 0;
 // for malloc_clear
 #include "PHY/defs_UE.h"
 
-//#define XER_PRINT
-
-
-
 extern void pdcp_config_set_security(
   const protocol_ctxt_t* const  ctxt_pP,
   pdcp_t         * const pdcp_pP,
@@ -733,9 +729,9 @@ int rrc_ue_decode_ccch( const protocol_ctxt_t* const ctxt_pP, const SRB_INFO* co
                          (uint8_t*)Srb_info->Rx_buffer.Payload,
                          100,0,0);
 
-#ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_DL_CCCH_Message,(void*)dl_ccch_msg);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout,&asn_DEF_DL_CCCH_Message,(void*)dl_ccch_msg);
+  }
 
 #if defined(ENABLE_ITTI)
 # if defined(DISABLE_ITTI_XER_PRINT)
@@ -1931,9 +1927,9 @@ rrc_ue_process_securityModeCommand(
     AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n",
 		 enc_rval.failed_type->name, enc_rval.encoded);
     
-#ifdef XER_PRINT
-    xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void*)&ul_dcch_msg);
-#endif
+    if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+       xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void*)&ul_dcch_msg);
+    }
     
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
@@ -2042,9 +2038,9 @@ rrc_ue_process_ueCapabilityEnquiry(
       AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n",
 		   enc_rval.failed_type->name, enc_rval.encoded);
       
-#ifdef XER_PRINT
-      xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void*)&ul_dcch_msg);
-#endif
+      if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+         xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void*)&ul_dcch_msg);
+      }
       
 #if defined(ENABLE_ITTI)
 # if !defined(DISABLE_XER_SPRINT)
@@ -2429,9 +2425,9 @@ rrc_ue_decode_dcch(
               (uint8_t*)Buffer,
               RRC_BUF_SIZE,0,0);
 
-#ifdef XER_PRINT
-  xer_fprint(stdout,&asn_DEF_DL_DCCH_Message,(void*)dl_dcch_msg);
-#endif
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+     xer_fprint(stdout,&asn_DEF_DL_DCCH_Message,(void*)dl_dcch_msg);
+  }
 
 #if defined(ENABLE_ITTI)
 # if defined(DISABLE_ITTI_XER_PRINT)
@@ -4560,9 +4556,9 @@ int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB
       return -1;
     }
 
-#ifdef XER_PRINT
-    xer_fprint(stdout, &asn_DEF_MCCH_Message, (void*)mcch);
-#endif
+    if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+      xer_fprint(stdout, &asn_DEF_MCCH_Message, (void*)mcch);
+    }
 
     if (mcch->message.present == MCCH_MessageType_PR_c1) {
       LOG_D(RRC,"[UE %d] Found mcch message \n",
@@ -4594,10 +4590,30 @@ int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB
 //-----------------------------------------------------------------------------
  void decode_MBSFNAreaConfiguration( module_id_t ue_mod_idP, uint8_t eNB_index, frame_t frameP, uint8_t mbsfn_sync_area )
 {
+  uint8_t i;
   protocol_ctxt_t               ctxt;
 
   LOG_I(RRC,"[UE %d] Frame %d : Number of MCH(s) in the MBSFN Sync Area %d  is %d\n",
         ue_mod_idP, frameP, mbsfn_sync_area, UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->pmch_InfoList_r9.list.count);
+
+  // Configure commonSF_Alloc 
+  for(i=0; i< UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_Alloc_r9.list.count;i++){
+    LOG_W(RRC,"[UE %d] Frame %d, commonSF_Alloc_r9: radioframeAllocationPeriod(%ldn),radioframeAllocationOffset(%ld), subframeAllocation(%x,%x,%x)\n",
+          ue_mod_idP, frameP,
+          UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_Alloc_r9.list.array[i]->radioframeAllocationPeriod<<1,
+          UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_Alloc_r9.list.array[i]->radioframeAllocationOffset,
+          UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_Alloc_r9.list.array[i]->subframeAllocation.choice.oneFrame.buf[0],
+          UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_Alloc_r9.list.array[i]->subframeAllocation.choice.oneFrame.buf[1],
+          UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_Alloc_r9.list.array[i]->subframeAllocation.choice.oneFrame.buf[2]);
+    UE_mac_inst[ue_mod_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i] = UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_Alloc_r9.list.array[i];
+  }
+  LOG_W(RRC,"[UE %d] Frame %d, commonSF_AllocPeriod_r9 %drf \n",
+        ue_mod_idP, frameP,
+        4<<UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_AllocPeriod_r9);
+
+  // Configure commonSF_AllocPeriod
+  UE_mac_inst[ue_mod_idP].commonSF_AllocPeriod_r9 = UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_AllocPeriod_r9;
+
   //  store to MAC/PHY necessary parameters for receiving MTCHs
 
   rrc_mac_config_req_ue(ue_mod_idP,0,eNB_index,
@@ -5558,9 +5574,9 @@ void *rrc_control_socket_thread_fct(void *arg)
       //process the message
       switch (sl_ctrl_msg_recv->type) {
       case SESSION_INIT_REQ:
-LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
-         LOG_UI(RRC,"Received SessionInitializationRequest on socket from ProSe App (msg type: %d)\n", sl_ctrl_msg_recv->type);
-LOG_DEBUG_END
+         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
+           LOG_UI(RRC,"Received SessionInitializationRequest on socket from ProSe App (msg type: %d)\n", sl_ctrl_msg_recv->type);
+         }
          //TODO: get SL_UE_STATE from lower layer
 
          LOG_I(RRC,"Send UEStateInformation to ProSe App \n");
@@ -5579,12 +5595,12 @@ LOG_DEBUG_END
             exit(EXIT_FAILURE);
          }
 
-LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
-         struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
-         ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
-         LOG_UI(RRC,"[UEStateInformation] msg type: %d\n",ptr_ctrl_msg->type);
-         LOG_UI(RRC,"[UEStateInformation] UE state: %d\n",ptr_ctrl_msg->sidelinkPrimitive.ue_state);
-LOG_DEBUG_END
+         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
+           struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
+           ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
+           LOG_UI(RRC,"[UEStateInformation] msg type: %d\n",ptr_ctrl_msg->type);
+           LOG_UI(RRC,"[UEStateInformation] UE state: %d\n",ptr_ctrl_msg->sidelinkPrimitive.ue_state);
+         }
          /*  if (enable_notification > 0) {
               //create thread to send status notification (for testing purpose, status notification will be sent e.g., every 20 seconds)
               pthread_t notification_thread;
@@ -5599,12 +5615,12 @@ LOG_DEBUG_END
          sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id;
          groupL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id;
 
-LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
-         LOG_UI(RRC,"[GroupCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
-         LOG_UI(RRC,"[GroupCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id);
-         LOG_UI(RRC,"[GroupCommunicationEstablishReq] group Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id);
-         LOG_UI(RRC,"[GroupCommunicationEstablishReq] group IP Address: " IPV4_ADDR "\n",IPV4_ADDR_FORMAT(sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupIpAddress));
-LOG_DEBUG_END
+         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
+           LOG_UI(RRC,"[GroupCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
+           LOG_UI(RRC,"[GroupCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id);
+           LOG_UI(RRC,"[GroupCommunicationEstablishReq] group Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id);
+           LOG_UI(RRC,"[GroupCommunicationEstablishReq] group IP Address: " IPV4_ADDR "\n",IPV4_ADDR_FORMAT(sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupIpAddress));
+         }
 
          //store sourceL2Id/groupL2Id
          UE_rrc_inst[module_id].sourceL2Id = sourceL2Id;
@@ -5764,20 +5780,20 @@ LOG_DEBUG_END
             exit(EXIT_FAILURE);
          }
 
-LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
-         struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
-         ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
-         LOG_UI(RRC,"[GroupCommunicationEstablishResponse]  msg type: %d\n",ptr_ctrl_msg->type);
-         LOG_UI(RRC,"[GroupCommunicationEstablishResponse]  slrb_id: %d\n",ptr_ctrl_msg->sidelinkPrimitive.slrb_id);
-LOG_DEBUG_END
+         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
+           struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
+           ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
+           LOG_UI(RRC,"[GroupCommunicationEstablishResponse]  msg type: %d\n",ptr_ctrl_msg->type);
+           LOG_UI(RRC,"[GroupCommunicationEstablishResponse]  slrb_id: %d\n",ptr_ctrl_msg->sidelinkPrimitive.slrb_id);
+         }
          break;
 
       case GROUP_COMMUNICATION_RELEASE_REQ:
          printf("-----------------------------------\n");
-LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
-         LOG_UI(RRC,"[GroupCommunicationReleaseRequest] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
-         LOG_UI(RRC,"[GroupCommunicationReleaseRequest] Slrb Id: %i\n",sl_ctrl_msg_recv->sidelinkPrimitive.slrb_id);
-LOG_DEBUG_END
+         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
+           LOG_UI(RRC,"[GroupCommunicationReleaseRequest] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
+           LOG_UI(RRC,"[GroupCommunicationReleaseRequest] Slrb Id: %i\n",sl_ctrl_msg_recv->sidelinkPrimitive.slrb_id);
+         }
          //reset groupL2ID from MAC LAYER
          UE_rrc_inst[module_id].groupL2Id = 0x00000000;
          sourceL2Id = UE_rrc_inst[module_id].sourceL2Id;
@@ -5849,11 +5865,11 @@ LOG_DEBUG_END
          sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.direct_comm_establish_req.sourceL2Id;
          destinationL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.direct_comm_establish_req.destinationL2Id;
 
-LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
-         LOG_UI(RRC,"[DirectCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
-         LOG_UI(RRC,"[DirectCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id);
-         LOG_UI(RRC,"[DirectCommunicationEstablishReq] destination Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id);
-LOG_DEBUG_END
+         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
+           LOG_UI(RRC,"[DirectCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
+           LOG_UI(RRC,"[DirectCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id);
+           LOG_UI(RRC,"[DirectCommunicationEstablishReq] destination Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id);
+         }
 
          //store sourceL2Id/destinationL2Id
          UE_rrc_inst[module_id].sourceL2Id = sourceL2Id;
@@ -6013,27 +6029,27 @@ LOG_DEBUG_END
          }
 
 
-LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
-         struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
-         ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
-         LOG_UI(RRC,"[DirectCommunicationEstablishResponse]  msg type: %d\n",ptr_ctrl_msg->type);
-         LOG_UI(RRC,"[DirectCommunicationEstablishResponse]  slrb_id: %d\n",ptr_ctrl_msg->sidelinkPrimitive.slrb_id);
-LOG_DEBUG_END
+         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
+           struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
+           ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
+           LOG_UI(RRC,"[DirectCommunicationEstablishResponse]  msg type: %d\n",ptr_ctrl_msg->type);
+           LOG_UI(RRC,"[DirectCommunicationEstablishResponse]  slrb_id: %d\n",ptr_ctrl_msg->sidelinkPrimitive.slrb_id);
+         }
          break;
 
       case PC5S_ESTABLISH_REQ:
-         type =  sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.type;
-         sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.sourceL2Id;
-LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
-         LOG_UI(RRC,"[PC5EstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
-         LOG_UI(RRC,"[PC5EstablishReq] type: %d\n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.type); //RX/TX
-         LOG_UI(RRC,"[PC5EstablishReq] source Id: 0x%08x \n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.sourceL2Id);
-LOG_DEBUG_END
+           type =  sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.type;
+           sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.sourceL2Id;
+           if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
+             LOG_UI(RRC,"[PC5EstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
+             LOG_UI(RRC,"[PC5EstablishReq] type: %d\n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.type); //RX/TX
+             LOG_UI(RRC,"[PC5EstablishReq] source Id: 0x%08x \n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.sourceL2Id);
+           }
          if (type > 0) {
             destinationL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.destinationL2Id;
-LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
-            LOG_UI(RRC,"[PC5EstablishReq] destination Id: 0x%08x \n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.destinationL2Id);
-LOG_DEBUG_END
+            if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
+              LOG_UI(RRC,"[PC5EstablishReq] destination Id: 0x%08x \n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.destinationL2Id);
+            }
          }
 
          //store sourceL2Id/destinationL2Id
@@ -6244,9 +6260,9 @@ LOG_DEBUG_END
 
       case PC5_DISCOVERY_MESSAGE:
 
-LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
+         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
            LOG_UI(RRC,"[PC5DiscoveryMessage] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
-LOG_DEBUG_END
+         }
         //prepare SL_Discovery buffer
          if (UE_rrc_inst) {
            memcpy((void*)&UE_rrc_inst[module_id].SL_Discovery[0].Tx_buffer.Payload[0], (void*)&sl_ctrl_msg_recv->sidelinkPrimitive.pc5_discovery_message.payload[0], PC5_DISCOVERY_PAYLOAD_SIZE);
diff --git a/openair2/RRC/LTE/rrc_common.c b/openair2/RRC/LTE/rrc_common.c
index d18c43d6cf38261bec43af35689d61aad8df0c0f..cf0196441e21d118e4ff8e64830bd85de27aa052 100644
--- a/openair2/RRC/LTE/rrc_common.c
+++ b/openair2/RRC/LTE/rrc_common.c
@@ -43,7 +43,6 @@
 #include "rrc_eNB_UE_context.h"
 #include "common/ran_context.h"
 
-#define DEBUG_RRC 1
 extern RAN_CONTEXT_t RC;
 extern UE_MAC_INST *UE_mac_inst;
 
diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c
index b0b444084c19b7d106a81c6246c1b5883bb6c6de..10590bc0194988daa6cea1d8ce0b1af233b4523a 100644
--- a/openair2/RRC/LTE/rrc_eNB.c
+++ b/openair2/RRC/LTE/rrc_eNB.c
@@ -85,6 +85,8 @@
 #   else
 #      include "../../S1AP/s1ap_eNB.h"
 #   endif
+#else
+# define EPC_MODE_ENABLED 0
 #endif
 
 #include "pdcp.h"
@@ -100,7 +102,6 @@
 
 #include "SIMULATION/TOOLS/sim.h" // for taus
 
-//#define XER_PRINT
 
 extern RAN_CONTEXT_t RC;
 
@@ -839,11 +840,6 @@ rrc_eNB_free_UE(const module_id_t enb_mod_idP,const struct rrc_eNB_ue_context_s*
 
 
   protocol_ctxt_t                     ctxt;
-#if !defined(ENABLE_USE_MME)
-  module_id_t                         ue_module_id;
-  /* avoid gcc warnings */
-  (void)ue_module_id;
-#endif
   rnti_t rnti = ue_context_pP->ue_context.rnti;
   if (enb_mod_idP >= NB_eNB_INST) {
       LOG_I(RRC, "eNB inst invalid (%d/%d) for UE %x!\n",enb_mod_idP, NB_eNB_INST,rnti);
@@ -858,20 +854,21 @@ rrc_eNB_free_UE(const module_id_t enb_mod_idP,const struct rrc_eNB_ue_context_s*
     PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, enb_mod_idP, ENB_FLAG_YES, rnti, 0, 0,enb_mod_idP);
     LOG_W(RRC, "[eNB %d] Removing UE RNTI %x\n", enb_mod_idP, rnti);
 
-#if defined(ENABLE_USE_MME)
-   if((ue_context_pP->ue_context.ul_failure_timer >= 20000) &&
-      (mac_eNB_get_rrc_status(enb_mod_idP,rnti) >= RRC_CONNECTED)) {
-    LOG_I(RRC, "[eNB %d] S1AP_UE_CONTEXT_RELEASE_REQ RNTI %x\n", enb_mod_idP, rnti);
-    rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_REQ(enb_mod_idP, ue_context_pP, S1AP_CAUSE_RADIO_NETWORK, 21); // send cause 21: connection with ue lost
-    /* From 3GPP 36300v10 p129 : 19.2.2.2.2 S1 UE Context Release Request (eNB triggered)
-     * If the E-UTRAN internal reason is a radio link failure detected in the eNB, the eNB shall wait a sufficient time before
-     *  triggering the S1 UE Context Release Request procedure
-     *  in order to allow the UE to perform the NAS recovery
-     *  procedure, see TS 23.401 [17].
-     */
-     return;
+   if(EPC_MODE_ENABLED) {
+
+     if((ue_context_pP->ue_context.ul_failure_timer >= 20000) &&
+  	(mac_eNB_get_rrc_status(enb_mod_idP,rnti) >= RRC_CONNECTED)) {
+      LOG_I(RRC, "[eNB %d] S1AP_UE_CONTEXT_RELEASE_REQ RNTI %x\n", enb_mod_idP, rnti);
+      rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_REQ(enb_mod_idP, ue_context_pP, S1AP_CAUSE_RADIO_NETWORK, 21); // send cause 21: connection with ue lost
+      /* From 3GPP 36300v10 p129 : 19.2.2.2.2 S1 UE Context Release Request (eNB triggered)
+       * If the E-UTRAN internal reason is a radio link failure detected in the eNB, the eNB shall wait a sufficient time before
+       *  triggering the S1 UE Context Release Request procedure
+       *  in order to allow the UE to perform the NAS recovery
+       *  procedure, see TS 23.401 [17].
+       */
+       return;
     }
-#endif
+  }
     // add UE info to freeList
     LOG_I(RRC, "put UE %x into freeList\n", rnti);
     put_UE_in_freelist(enb_mod_idP, rnti, 1);
@@ -1018,17 +1015,13 @@ rrc_eNB_process_RRCConnectionSetupComplete(
   T(T_ENB_RRC_CONNECTION_SETUP_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
 
-#if defined(ENABLE_USE_MME)
-
   if (EPC_MODE_ENABLED == 1) {
     // Forward message to S1AP layer
     rrc_eNB_send_S1AP_NAS_FIRST_REQ(
       ctxt_pP,
       ue_context_pP,
       rrcConnectionSetupComplete);
-  } else
-#endif
-  {
+  } else {
     // RRC loop back (no S1AP), send SecurityModeCommand to UE
     rrc_eNB_generate_SecurityModeCommand(
       ctxt_pP,
@@ -1058,16 +1051,8 @@ rrc_eNB_generate_SecurityModeCommand(
            ue_context_pP->ue_context.ciphering_algorithm,
            ue_context_pP->ue_context.integrity_algorithm);
 
-#ifdef RRC_MSG_PRINT
-  uint16_t i=0;
-  LOG_F(RRC,"[MSG] RRC Security Mode Command\n");
 
-  for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
-  }
-
-  LOG_F(RRC,"\n");
-#endif
+  LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)buffer,size,"[MSG] RRC Security Mode Command\n");
 
   LOG_I(RRC,
         PROTOCOL_RRC_CTXT_UE_FMT" Logical Channel DL-DCCH, Generate SecurityModeCommand (bytes %d)\n",
@@ -1166,9 +1151,6 @@ rrc_eNB_generate_RRCConnectionReject(
 )
 //-----------------------------------------------------------------------------
 {
-#ifdef RRC_MSG_PRINT
-  int                                 cnt;
-#endif
 
   T(T_ENB_RRC_CONNECTION_REJECT, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
@@ -1177,15 +1159,10 @@ rrc_eNB_generate_RRCConnectionReject(
     do_RRCConnectionReject(ctxt_pP->module_id,
                           (uint8_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload);
 
-#ifdef RRC_MSG_PRINT
-  LOG_F(RRC,"[MSG] RRCConnectionReject\n");
-
-  for (cnt = 0; cnt < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size; cnt++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)RC.rrc[ctxt_pP->module_id]->Srb0.Tx_buffer.Payload)[cnt]);
-  }
-
-  LOG_F(RRC,"\n");
-#endif
+  LOG_DUMPMSG(RRC,DEBUG_RRC,
+              (char *)(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload),
+              RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size,
+              "[MSG] RRCConnectionReject\n");
 
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
@@ -1230,17 +1207,11 @@ rrc_eNB_generate_RRCConnectionReestablishment(
                                     rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id),
                                     SRB_configList,
                                     &ue_context_pP->ue_context.physicalConfigDedicated);
-
-#ifdef RRC_MSG_PRINT
-  LOG_F(RRC,"[MSG] RRCConnectionReestablishment\n");
-
-  for (cnt = 0; cnt < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size; cnt++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload)[cnt]);
-  }
-
-  LOG_F(RRC,"\n");
-#endif
-
+  LOG_DUMPMSG(RRC,DEBUG_RRC,
+              (char *)(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload),
+              RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size,
+              "[MSG] RRCConnectionReestablishment\n"
+              );
   // configure SRB1 for UE
 
   if (*SRB_configList != NULL) {
@@ -1356,10 +1327,6 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
   struct SRB_ToAddMod                *SRB2_config = NULL;
   struct DRB_ToAddMod                *DRB_config = NULL;
   int i = 0;
-# if defined(ENABLE_USE_MME)
-  int j = 0;
-  hashtable_rc_t                      h_rc;
-#endif
   uint8_t                             buffer[RRC_BUF_SIZE];
   uint16_t                            size;
   MeasObjectToAddModList_t           *MeasObj_list                     = NULL;
@@ -1450,59 +1417,61 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
   ue_context_pP->ue_context.Srb1.Active = 1;
   //ue_context_pP->ue_context.Srb2.Srb_info.Srb_id = 2;
 
-# if defined(ENABLE_USE_MME)
-  rrc_ue_s1ap_ids_t* rrc_ue_s1ap_ids_p = NULL;
-  uint16_t ue_initial_id = ue_context_pP->ue_context.ue_initial_id;
-  uint32_t eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
-  eNB_RRC_INST *rrc_instance_p = RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)];
-  if (eNB_ue_s1ap_id > 0) {
-    h_rc = hashtable_get(rrc_instance_p->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id, (void**)&rrc_ue_s1ap_ids_p);
-    if  (h_rc == HASH_TABLE_OK) {
-      rrc_ue_s1ap_ids_p->ue_rnti = ctxt_pP->rnti;
+#if defined(ENABLE_USE_MME) 
+    hashtable_rc_t    h_rc;
+    int               j;
+    rrc_ue_s1ap_ids_t* rrc_ue_s1ap_ids_p = NULL;
+    uint16_t ue_initial_id = ue_context_pP->ue_context.ue_initial_id;
+    uint32_t eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
+    eNB_RRC_INST *rrc_instance_p = RC.rrc[ENB_INSTANCE_TO_MODULE_ID(ctxt_pP->instance)];
+    if (eNB_ue_s1ap_id > 0) {
+      h_rc = hashtable_get(rrc_instance_p->s1ap_id2_s1ap_ids, (hash_key_t)eNB_ue_s1ap_id, (void**)&rrc_ue_s1ap_ids_p);
+      if  (h_rc == HASH_TABLE_OK) {
+  	rrc_ue_s1ap_ids_p->ue_rnti = ctxt_pP->rnti;
+      }
     }
-  }
-  if (ue_initial_id != 0) {
-    h_rc = hashtable_get(rrc_instance_p->initial_id2_s1ap_ids, (hash_key_t)ue_initial_id, (void**)&rrc_ue_s1ap_ids_p);
-    if  (h_rc == HASH_TABLE_OK) {
-      rrc_ue_s1ap_ids_p->ue_rnti = ctxt_pP->rnti;
+    if (ue_initial_id != 0) {
+      h_rc = hashtable_get(rrc_instance_p->initial_id2_s1ap_ids, (hash_key_t)ue_initial_id, (void**)&rrc_ue_s1ap_ids_p);
+      if  (h_rc == HASH_TABLE_OK) {
+  	rrc_ue_s1ap_ids_p->ue_rnti = ctxt_pP->rnti;
+      }
     }
-  }
 
-  gtpv1u_enb_create_tunnel_req_t  create_tunnel_req;
+    gtpv1u_enb_create_tunnel_req_t  create_tunnel_req;
 
-  /* Save e RAB information for later */
-  memset(&create_tunnel_req, 0 , sizeof(create_tunnel_req));
+    /* Save e RAB information for later */
+    memset(&create_tunnel_req, 0 , sizeof(create_tunnel_req));
 
-  for (j = 0, i = 0; i < NB_RB_MAX; i++) {
-    if (ue_context_pP->ue_context.e_rab[i].status == E_RAB_STATUS_ESTABLISHED || ue_context_pP->ue_context.e_rab[i].status == E_RAB_STATUS_DONE) {
-      create_tunnel_req.eps_bearer_id[j]       = ue_context_pP->ue_context.e_rab[i].param.e_rab_id;
-      create_tunnel_req.sgw_S1u_teid[j]        = ue_context_pP->ue_context.e_rab[i].param.gtp_teid;
+    for ( j = 0, i = 0; i < NB_RB_MAX; i++) {
+      if (ue_context_pP->ue_context.e_rab[i].status == E_RAB_STATUS_ESTABLISHED || ue_context_pP->ue_context.e_rab[i].status == E_RAB_STATUS_DONE) {
+  	create_tunnel_req.eps_bearer_id[j]	 = ue_context_pP->ue_context.e_rab[i].param.e_rab_id;
+  	create_tunnel_req.sgw_S1u_teid[j]	 = ue_context_pP->ue_context.e_rab[i].param.gtp_teid;
 
-      memcpy(&create_tunnel_req.sgw_addr[j],
-             &ue_context_pP->ue_context.e_rab[i].param.sgw_addr,
-             sizeof(transport_layer_addr_t));
-      j++;
+  	memcpy(&create_tunnel_req.sgw_addr[j],
+  	       &ue_context_pP->ue_context.e_rab[i].param.sgw_addr,
+  	       sizeof(transport_layer_addr_t));
+  	j++;
+      }
     }
-  }
 
-  create_tunnel_req.rnti       = ctxt_pP->rnti; // warning put zero above
-  create_tunnel_req.num_tunnels    = j;
+    create_tunnel_req.rnti       = ctxt_pP->rnti; // warning put zero above
+    create_tunnel_req.num_tunnels    = j;
 
-  gtpv1u_update_s1u_tunnel(
-            ctxt_pP->instance,
-            &create_tunnel_req,
-            reestablish_rnti);
+    gtpv1u_update_s1u_tunnel(
+              ctxt_pP->instance,
+              &create_tunnel_req,
+              reestablish_rnti);
 #endif
   /* Update RNTI in ue_context */
   ue_context_pP->ue_id_rnti                    = ctxt_pP->rnti; // here ue_id_rnti is just a key, may be something else
   ue_context_pP->ue_context.rnti               = ctxt_pP->rnti;
-# if defined(ENABLE_USE_MME)
-  uint8_t send_security_mode_command = FALSE;
-  rrc_pdcp_config_security(
-      ctxt_pP,
-      ue_context_pP,
-      send_security_mode_command);
-  LOG_D(RRC, "set security successfully \n");
+#if defined(ENABLE_USE_MME)
+    uint8_t send_security_mode_command = FALSE;
+    rrc_pdcp_config_security(
+        ctxt_pP,
+        ue_context_pP,
+        send_security_mode_command);
+    LOG_D(RRC, "set security successfully \n");
 #endif
   // Measurement ID list
   MeasId_list = CALLOC(1, sizeof(*MeasId_list));
@@ -1869,15 +1838,9 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
                                          , (SCellToAddMod_r10_t*)NULL
 #endif
                                         );
+  LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)buffer,size,
+              "[MSG] RRC Connection Reconfiguration\n");
 
-#ifdef RRC_MSG_PRINT
-  LOG_F(RRC,"[MSG] RRC Connection Reconfiguration\n");
-  for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
-  }
-  LOG_F(RRC,"\n");
-  ////////////////////////////////////////
-#endif
 
 #if defined(ENABLE_ITTI)
 
@@ -1977,9 +1940,6 @@ rrc_eNB_generate_RRCConnectionReestablishmentReject(
 )
 //-----------------------------------------------------------------------------
 {
-#ifdef RRC_MSG_PRINT
-  int                                 cnt;
-#endif
   int UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti);
   if(UE_id != -1){
     RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer = 1;
@@ -1997,15 +1957,11 @@ rrc_eNB_generate_RRCConnectionReestablishmentReject(
     do_RRCConnectionReestablishmentReject(ctxt_pP->module_id,
                           (uint8_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload);
 
-#ifdef RRC_MSG_PRINT
-  LOG_F(RRC,"[MSG] RRCConnectionReestablishmentReject\n");
+  LOG_DUMPMSG(RRC,DEBUG_RRC,
+              (char *)(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload),
+              RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size,
+              "[MSG] RRCConnectionReestablishmentReject\n");
 
-  for (cnt = 0; cnt < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size; cnt++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload)[cnt]);
-  }
-
-  LOG_F(RRC,"\n");
-#endif
 
   MSC_LOG_TX_MESSAGE(
     MSC_RRC_ENB,
@@ -2336,15 +2292,8 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
 #endif
                                         );
  
+  LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)buffer,size,"[MSG] RRC Connection Reconfiguration\n");
 
-#ifdef RRC_MSG_PRINT
-  LOG_F(RRC,"[MSG] RRC Connection Reconfiguration\n");
-  for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
-  }
-  LOG_F(RRC,"\n");
-  ////////////////////////////////////////
-#endif
 
 #if defined(ENABLE_ITTI)
 
@@ -2606,15 +2555,8 @@ rrc_eNB_modify_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* cons
 #endif
    	   	   	   	   	  );
 
-
-#ifdef RRC_MSG_PRINT
-  LOG_F(RRC,"[MSG] RRC Connection Reconfiguration\n");
-  for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
-  }
-  LOG_F(RRC,"\n");
-  ////////////////////////////////////////
-#endif
+  LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)buffer,size,
+              "[MSG] RRC Connection Reconfiguration\n");
 
 #if defined(ENABLE_ITTI)
 
@@ -2731,15 +2673,8 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_release(  const protocol_
 #endif
                                    );
     ue_context_pP->ue_context.e_rab_release_command_flag = 1;
-
-#ifdef RRC_MSG_PRINT
-  LOG_F(RRC,"[MSG] RRC Connection Reconfiguration\n");
-  for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
-  }
-  LOG_F(RRC,"\n");
-  ////////////////////////////////////////
-#endif
+    LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)buffer,size,
+                "[MSG] RRC Connection Reconfiguration\n");
 
 #if defined(ENABLE_ITTI)
   /* Free all NAS PDUs */
@@ -3460,15 +3395,8 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t* cons
                                          , (SCellToAddMod_r10_t*)NULL
 #endif
                                         );
-
-#ifdef RRC_MSG_PRINT
-  LOG_F(RRC,"[MSG] RRC Connection Reconfiguration\n");
-  for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
-  }
-  LOG_F(RRC,"\n");
-  ////////////////////////////////////////
-#endif
+  LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)buffer,size,
+              "[MSG] RRC Connection Reconfiguration\n");
 
 #if defined(ENABLE_ITTI)
 
@@ -4052,15 +3980,8 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt
                                          , (SCellToAddMod_r10_t*)NULL
 #endif
                                         );
-
-#ifdef RRC_MSG_PRINT
-  LOG_F(RRC,"[MSG] RRC Connection Reconfiguration\n");
-  for (i = 0; i < size; i++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
-  }
-  LOG_F(RRC,"\n");
-  ////////////////////////////////////////
-#endif
+  LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)buffer,size,
+              "[MSG] RRC Connection Reconfiguration\n");
 
 #if defined(ENABLE_ITTI)
 
@@ -5438,11 +5359,9 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
 #ifdef PDCP_USE_NETLINK
   int                                 oip_ifup = 0;
   int                                 dest_ip_offset = 0;
-  module_id_t                         ue_module_id   = -1;
   /* avoid gcc warnings */
   (void)oip_ifup;
   (void)dest_ip_offset;
-  (void)ue_module_id;
 #endif
 
   uint8_t                            *kRRCenc = NULL;
@@ -5585,6 +5504,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
                        ctxt_pP->module_id + 1);  // fourth octet
 
           if (oip_ifup == 0) {    // interface is up --> send a config the DRB
+            module_id_t ue_module_id; 
             dest_ip_offset = 8;
             LOG_I(OIP,
                   "[eNB %d] Config the oai%d to send/receive pkt on DRB %ld to/from the protocol stack\n",
@@ -5754,16 +5674,10 @@ rrc_eNB_generate_RRCConnectionSetup(
                           SRB_configList,
                           &ue_context_pP->ue_context.physicalConfigDedicated);
 
-#ifdef RRC_MSG_PRINT
-  LOG_F(RRC,"[MSG] RRC Connection Setup\n");
-
-  for (cnt = 0; cnt < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size; cnt++) {
-    LOG_F(RRC,"%02x ", ((uint8_t*)RC.rrc[ctxt_pP->module_id]->Srb0.Tx_buffer.Payload)[cnt]);
-  }
-
-  LOG_F(RRC,"\n");
-  //////////////////////////////////
-#endif
+  LOG_DUMPMSG(RRC,DEBUG_RRC,
+              (char *)(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload),
+              RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size,
+              "[MSG] RRC Connection Setup\n");
 
   // configure SRB1/SRB2, PhysicalConfigDedicated, MAC_MainConfig for UE
 
@@ -6111,15 +6025,10 @@ rrc_eNB_decode_ccch(
       T(T_ENB_RRC_CONNECTION_REESTABLISHMENT_REQUEST, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
         T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
 
-#ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Connection Reestablishment Request\n");
+      LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)(Srb_info->Rx_buffer.Payload),
+                  Srb_info->Rx_buffer.payload_size,
+                  "[MSG] RRC Connection Reestablishment Request\n");
 
-      for (i = 0; i < Srb_info->Rx_buffer.payload_size; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Srb_info->Rx_buffer.Payload)[i]);
-      }
-
-      LOG_F(RRC,"\n");
-#endif
       LOG_D(RRC,
             PROTOCOL_RRC_CTXT_UE_FMT"MAC_eNB--- MAC_DATA_IND (rrcConnectionReestablishmentRequest on SRB0) --> RRC_eNB\n",
             PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
@@ -6336,15 +6245,10 @@ rrc_eNB_decode_ccch(
       T(T_ENB_RRC_CONNECTION_REQUEST, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
         T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
 
-#ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Connection Request\n");
+      LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)(Srb_info->Rx_buffer.Payload),
+                  Srb_info->Rx_buffer.payload_size,
+                  "[MSG] RRC Connection Request\n");
 
-      for (i = 0; i < Srb_info->Rx_buffer.payload_size; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Srb_info->Rx_buffer.Payload)[i]);
-      }
-
-      LOG_F(RRC,"\n");
-#endif
       LOG_D(RRC,
             PROTOCOL_RRC_CTXT_UE_FMT"MAC_eNB --- MAC_DATA_IND  (rrcConnectionRequest on SRB0) --> RRC_eNB\n",
             PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
@@ -6631,36 +6535,7 @@ rrc_eNB_decode_dcch(
                sdu_sizeP,
                0,
                0);
-  /*
-#if defined(ENABLE_ITTI)
-#   if defined(DISABLE_ITTI_XER_PRINT)
-  {
-    MessageDef                         *message_p;
-
-    message_p = itti_alloc_new_message(TASK_RRC_ENB, RRC_UL_DCCH_MESSAGE);
-    memcpy(&message_p->ittiMsg, (void *)ul_dcch_msg, sizeof(RrcUlDcchMessage));
 
-    itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, message_p);
-  }
-#   else
-  {
-    char                                message_string[10000];
-    size_t                              message_string_size;
-
-    if ((message_string_size =
-           xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg)) >= 0) {
-      MessageDef                         *msg_p;
-
-      msg_p = itti_alloc_new_message_sized(TASK_RRC_ENB, RRC_UL_DCCH, message_string_size + sizeof(IttiMsgText));
-      msg_p->ittiMsg.rrc_ul_dcch.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rrc_ul_dcch.text, message_string, message_string_size);
-
-      itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-    }
-  }
-#   endif
-#endif
-  */
   {
     for (i = 0; i < sdu_sizeP; i++) {
       LOG_T(RRC, "%x.", Rx_sdu[i]);
@@ -6714,15 +6589,9 @@ rrc_eNB_decode_dcch(
         LOG_I(RRC, "Processing RRCConnectionReconfigurationComplete UE %x, ue_context_p is NULL\n", ctxt_pP->rnti);
         break;
       }
-#ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Connection Reconfiguration Complete\n");
+      LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)(Rx_sdu),sdu_sizeP,
+                  "[MSG] RRC Connection Reconfiguration Complete\n");
 
-      for (i = 0; i < sdu_sizeP; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
-
-      LOG_F(RRC,"\n");
-#endif
       MSC_LOG_RX_MESSAGE(
         MSC_RRC_ENB,
         MSC_RRC_UE,
@@ -6745,42 +6614,42 @@ rrc_eNB_decode_dcch(
           RRCConnectionReconfigurationComplete__criticalExtensions_PR_rrcConnectionReconfigurationComplete_r8) {
 	/*NN: revise the condition */
 	/*FK: left the condition as is for the case MME is used (S1 mode) but setting  dedicated_DRB = 1 otherwise (noS1 mode) so that no second RRCReconfiguration message activationg more DRB is sent as this causes problems with the nasmesh driver.*/
-#if defined(ENABLE_USE_MME)
-        if (ue_context_p->ue_context.Status == RRC_RECONFIGURED){
-	  dedicated_DRB = 1;
-	  LOG_I(RRC,
-		PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld)\n",
-		PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
-          //clear
-          int16_t UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti);
-          if(UE_id == -1){
-            LOG_E(RRC,
-                  PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReconfigurationComplete without rnti %x, fault\n",
-                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ctxt_pP->rnti);
-            break;
-          }
-          if(RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].crnti_reconfigurationcomplete_flag == 1){
-            LOG_I(RRC,
-                  PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld) C-RNTI Complete\n",
-                  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
-            dedicated_DRB = 2;
-            RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].crnti_reconfigurationcomplete_flag = 0;
-          }
-	} else {
-	  dedicated_DRB = 0;
-	  ue_context_p->ue_context.Status = RRC_RECONFIGURED;
-          LOG_I(RRC,
-                PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (default DRB, xid %ld)\n",
-                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
-	}
-        ue_context_p->ue_context.reestablishment_xid = -1;
-#else
-	dedicated_DRB = 1;
-	ue_context_p->ue_context.Status = RRC_RECONFIGURED;
-	LOG_I(RRC,
-	    PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld)\n",
-	    PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
-#endif
+        if (EPC_MODE_ENABLED) {
+  	  if (ue_context_p->ue_context.Status == RRC_RECONFIGURED){
+  	    dedicated_DRB = 1;
+  	    LOG_I(RRC,
+  		  PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld)\n",
+  		  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
+  	    //clear
+  	    int16_t UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti);
+  	    if(UE_id == -1){
+  	      LOG_E(RRC,
+  		    PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReconfigurationComplete without rnti %x, fault\n",
+  		    PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ctxt_pP->rnti);
+  	      break;
+  	    }
+  	    if(RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].crnti_reconfigurationcomplete_flag == 1){
+  	      LOG_I(RRC,
+  		    PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld) C-RNTI Complete\n",
+  		    PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
+  	      dedicated_DRB = 2;
+  	      RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].crnti_reconfigurationcomplete_flag = 0;
+  	    }
+  	  } else {
+  	    dedicated_DRB = 0;
+  	    ue_context_p->ue_context.Status = RRC_RECONFIGURED;
+  	    LOG_I(RRC,
+  		  PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (default DRB, xid %ld)\n",
+  		  PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
+  	  }
+  	  ue_context_p->ue_context.reestablishment_xid = -1;
+        } else {
+  	  dedicated_DRB = 1;
+  	  ue_context_p->ue_context.Status = RRC_RECONFIGURED;
+  	  LOG_I(RRC,
+  	      PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld)\n",
+  	      PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
+  	}
 	
 	rrc_eNB_process_RRCConnectionReconfigurationComplete(
           ctxt_pP,
@@ -6795,8 +6664,7 @@ rrc_eNB_decode_dcch(
 	}
       }
 #if defined(ENABLE_ITTI)
-#   if defined(ENABLE_USE_MME)
-      if (EPC_MODE_ENABLED == 1) {
+#if defined(ENABLE_USE_MME)
 	if (dedicated_DRB == 1){
 //	  rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(ctxt_pP,
 //					     ue_context_p,
@@ -6861,14 +6729,12 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
                }
              }
          }
-      }    
+#endif   
 #else  // establish a dedicated bearer 
       if (dedicated_DRB == 0 ) {
 	//	ue_context_p->ue_context.e_rab[0].status = E_RAB_STATUS_ESTABLISHED;
 	rrc_eNB_reconfigure_DRBs(ctxt_pP,ue_context_p);
       }
-      
-#endif
 #endif 
       break;
 
@@ -6876,15 +6742,8 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
       T(T_ENB_RRC_CONNECTION_REESTABLISHMENT_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
         T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
 
-#ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Connection Reestablishment Complete\n");
-
-      for (i = 0; i < sdu_sizeP; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
-
-      LOG_F(RRC,"\n");
-#endif
+      LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
+                  "[MSG] RRC Connection Reestablishment Complete\n");
 
       MSC_LOG_RX_MESSAGE(
         MSC_RRC_ENB,
@@ -6963,15 +6822,8 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
         LOG_I(RRC, "Processing RRCConnectionSetupComplete UE %x, ue_context_p is NULL\n", ctxt_pP->rnti);
         break;
       }
-#ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Connection SetupComplete\n");
-
-      for (i = 0; i < sdu_sizeP; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
-
-      LOG_F(RRC,"\n");
-#endif
+      LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
+                  "[MSG] RRC Connection SetupComplete\n");
 
       MSC_LOG_RX_MESSAGE(
         MSC_RRC_ENB,
@@ -7023,15 +6875,9 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
         LOG_I(RRC, "Processing securityModeComplete UE %x, ue_context_p is NULL\n", ctxt_pP->rnti);
         break;
       }
-#ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Security Mode Complete\n");
-
-      for (i = 0; i < sdu_sizeP; i++) eNB->pusch_vars[UE_id]{
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
+      LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
+                  "[MSG] RRC Security Mode Complete\n");
 
-      LOG_F(RRC,"\n");
-#endif
 
       MSC_LOG_RX_MESSAGE(
         MSC_RRC_ENB,
@@ -7053,9 +6899,9 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
             PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
             DCCH,
             sdu_sizeP);
-#ifdef XER_PRINT
-      xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg);
-#endif
+      if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+         xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg);
+      }
       // confirm with PDCP about the security mode for DCCH
       //rrc_pdcp_config_req (enb_mod_idP, frameP, 1,CONFIG_ACTION_SET_SECURITY_MODE, (ue_mod_idP * NB_RB_MAX) + DCCH, 0x77);
       // continue the procedure
@@ -7068,15 +6914,8 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
       T(T_ENB_RRC_SECURITY_MODE_FAILURE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
         T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
 
-#ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC Security Mode Failure\n");
-
-      for (i = 0; i < sdu_sizeP; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
-
-      LOG_F(RRC,"\n");
-#endif
+      LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
+                  "[MSG] RRC Security Mode Failure\n");
 
       MSC_LOG_RX_MESSAGE(
         MSC_RRC_ENB,
@@ -7094,9 +6933,9 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
             PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
             DCCH,
             sdu_sizeP);
-#ifdef XER_PRINT
-      xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg);
-#endif
+      if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+         xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg);
+      }
       // cancel the security mode in PDCP
 
       // followup with the remaining procedure
@@ -7112,15 +6951,9 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
           LOG_I(RRC, "Processing ueCapabilityInformation UE %x, ue_context_p is NULL\n", ctxt_pP->rnti);
           break;
       }
-#ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC UECapablility Information \n");
-
-      for (i = 0; i < sdu_sizeP; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
 
-      LOG_F(RRC,"\n");
-#endif
+      LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
+                  "[MSG] RRC UECapablility Information\n");
 
       MSC_LOG_RX_MESSAGE(
         MSC_RRC_ENB,
@@ -7142,9 +6975,9 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
             PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
             DCCH,
             sdu_sizeP);
-#ifdef XER_PRINT
-      xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg);
-#endif
+      if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+          xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void *)ul_dcch_msg);
+      }
       LOG_I(RRC, "got UE capabilities for UE %x\n", ctxt_pP->rnti);
       if (ue_context_p->ue_context.UE_Capability) {
         LOG_I(RRC, "freeing old UE capabilities for UE %x\n", ctxt_pP->rnti);
@@ -7161,9 +6994,9 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
                              ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.
                              choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.
                              array[0]->ueCapabilityRAT_Container.size, 0, 0);
-#ifdef XER_PRINT
-      xer_fprint(stdout, &asn_DEF_UE_EUTRA_Capability, ue_context_p->ue_context.UE_Capability);
-#endif
+      if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+         xer_fprint(stdout, &asn_DEF_UE_EUTRA_Capability, ue_context_p->ue_context.UE_Capability);
+      }
 
       if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) {
         LOG_E(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Failed to decode UE capabilities (%zu bytes)\n",
@@ -7174,22 +7007,22 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
         ue_context_p->ue_context.UE_Capability = 0;
       }
 
-#if defined(ENABLE_USE_MME)
+      if (EPC_MODE_ENABLED) {
 
-      if (EPC_MODE_ENABLED == 1) {
-        rrc_eNB_send_S1AP_UE_CAPABILITIES_IND(ctxt_pP,
-                                              ue_context_p,
-                                              ul_dcch_msg);
-      }
-#else 
-      ue_context_p->ue_context.nb_of_e_rabs = 1;
-      for (i = 0; i < ue_context_p->ue_context.nb_of_e_rabs; i++){
-	ue_context_p->ue_context.e_rab[i].status = E_RAB_STATUS_NEW;
-	ue_context_p->ue_context.e_rab[i].param.e_rab_id = 1+i;
-	ue_context_p->ue_context.e_rab[i].param.qos.qci=9;
+        if (EPC_MODE_ENABLED == 1) {
+  	  rrc_eNB_send_S1AP_UE_CAPABILITIES_IND(ctxt_pP,
+  						ue_context_p,
+  						ul_dcch_msg);
+  	}
+      } else {
+  	ue_context_p->ue_context.nb_of_e_rabs = 1;
+  	for (i = 0; i < ue_context_p->ue_context.nb_of_e_rabs; i++){
+  	  ue_context_p->ue_context.e_rab[i].status = E_RAB_STATUS_NEW;
+  	  ue_context_p->ue_context.e_rab[i].param.e_rab_id = 1+i;
+  	  ue_context_p->ue_context.e_rab[i].param.qos.qci=9;
+  	}
+  	ue_context_p->ue_context.setup_e_rabs =ue_context_p->ue_context.nb_of_e_rabs;
       }
-      ue_context_p->ue_context.setup_e_rabs =ue_context_p->ue_context.nb_of_e_rabs;
-#endif
 
       rrc_eNB_generate_defaultRRCConnectionReconfiguration(ctxt_pP,
           ue_context_p,
@@ -7212,16 +7045,8 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
       }
 
       LOG_D(RRC,"[MSG] RRC UL Information Transfer \n");
-#ifdef RRC_MSG_PRINT
-      LOG_F(RRC,"[MSG] RRC UL Information Transfer \n");
-
-      for (i = 0; i < sdu_sizeP; i++) {
-        LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-      }
-
-      LOG_F(RRC,"\n");
-#endif
-
+      LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
+                  "[MSG] RRC UL Information Transfer \n");
 
       MSC_LOG_RX_MESSAGE(
         MSC_RRC_ENB,
@@ -7233,15 +7058,11 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
         ue_context_p->ue_context.rnti,
         sdu_sizeP);
 
-#if defined(ENABLE_USE_MME)
-
       if (EPC_MODE_ENABLED == 1) {
         rrc_eNB_send_S1AP_UPLINK_NAS(ctxt_pP,
                                      ue_context_p,
                                      ul_dcch_msg);
       }
-
-#endif
       break;
 
     case UL_DCCH_MessageType__c1_PR_counterCheckResponse:
@@ -7307,15 +7128,8 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
      //case UL_DCCH_MessageType__messageClassExtension__c2_PR_sidelinkUEInformation_r12: //SidelinkUEInformation
         LOG_I(RRC,"THINH [UL_DCCH_MessageType__messageClassExtension_PR_c2]\n");
 
-#ifdef RRC_MSG_PRINT
-        LOG_F(RRC,"[MSG] SidelinkUEInformation\n");
-
-        for (i = 0; i < sdu_sizeP; i++) {
-           LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
-        }
-
-        LOG_F(RRC,"\n");
-#endif
+        LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
+                    "[MSG] RRC SidelinkUEInformation \n");
 
         MSC_LOG_RX_MESSAGE(
               MSC_RRC_ENB,
diff --git a/openair2/RRC/LTE/rrc_eNB_S1AP.c b/openair2/RRC/LTE/rrc_eNB_S1AP.c
index 36e0645795b07e3ee10ea668f2abd6b174b9505b..7d242286023985c1002562d25feb32040285603e 100644
--- a/openair2/RRC/LTE/rrc_eNB_S1AP.c
+++ b/openair2/RRC/LTE/rrc_eNB_S1AP.c
@@ -467,43 +467,20 @@ rrc_pdcp_config_security(
                      &kRRCint);
 
 #if !defined(USRP_REC_PLAY)
-#define DEBUG_SECURITY 1
+  SET_LOG_DUMP(DEBUG_SECURITY) ;
 #endif
   
-#if defined (DEBUG_SECURITY)
-#undef msg
-#define msg printf
 
-  if (print_keys ==1 ) {
-    print_keys =0;
-    int i;
-    msg("\nKeNB:");
-
-    for(i = 0; i < 32; i++) {
-      msg("%02x", ue_context_pP->ue_context.kenb[i]);
-    }
-
-    msg("\n");
-
-    msg("\nKRRCenc:");
-
-    for(i = 0; i < 32; i++) {
-      msg("%02x", kRRCenc[i]);
-    }
+  if ( LOG_DUMPFLAG( DEBUG_SECURITY ) ) {
+    if (print_keys ==1 ) {
+      print_keys =0;
 
-    msg("\n");
-
-    msg("\nKRRCint:");
-
-    for(i = 0; i < 32; i++) {
-      msg("%02x", kRRCint[i]);
+      LOG_DUMPMSG(RRC, DEBUG_SECURITY, ue_context_pP->ue_context.kenb, 32,"\nKeNB:" );
+      LOG_DUMPMSG(RRC, DEBUG_SECURITY, kRRCenc, 32,"\nKRRCenc:" );
+      LOG_DUMPMSG(RRC, DEBUG_SECURITY, kRRCint, 32,"\nKRRCint:" );
     }
-
-    msg("\n");
-
   }
 
-#endif //DEBUG_SECURITY
   key = PDCP_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, DCCH, SRB_FLAG_YES);
   h_rc = hashtable_get(pdcp_coll_p, key, (void**)&pdcp_p);
 
@@ -945,16 +922,8 @@ rrc_eNB_process_S1AP_DOWNLINK_NAS(
                S1AP_DOWNLINK_NAS (msg_p).nas_pdu.length,
                S1AP_DOWNLINK_NAS (msg_p).nas_pdu.buffer);
 
-#ifdef RRC_MSG_PRINT
-    int i=0;
-    LOG_F(RRC,"[MSG] RRC DL Information Transfer\n");
+    LOG_DUMPMSG(RRC,DEBUG_RRC,buffer,length,"[MSG] RRC DL Information Transfer\n");
 
-    for (i = 0; i < length; i++) {
-      LOG_F(RRC,"%02x ", ((uint8_t*)buffer)[i]);
-    }
-
-    LOG_F(RRC,"\n");
-#endif
     /* 
      * switch UL or DL NAS message without RRC piggybacked to SRB2 if active. 
      */
diff --git a/openair2/UTIL/OPT/README.txt b/openair2/UTIL/OPT/README.txt
index 7193733d0098a16f4230701a4cf0fc758209ed45..c56aeda93d96902b490d583c034f6101abecd540 100644
--- a/openair2/UTIL/OPT/README.txt
+++ b/openair2/UTIL/OPT/README.txt
@@ -1,9 +1,13 @@
-2012 07 10 - Working version
 How to configure wireshark for dissecting LTE protocols:
 - start the wireshark as a sudoers
+- goto analyze->enabled prototols
+  => enable mac_lte_udp and rlc_lte_udp
 - goto edit/preferences and expand Protocols
 - select UDP and check "try heuristic sub-dissectors first"
 - select MAC-LTE, and check all the options (checkboxes), and set the "which layer info to show in info column" to "MAC info"
 - select RLC-LTE, and check all the options except the "May see RLC headers only", and set the "call PDCP dissector for DRB PDUs" to "12-bit SN". Optionally you may select the sequence analysis for RLC AM/UM.
+
+How to use
+- start eNB or UE with option -W (or -P if you want to make a pcap file)
 - capture on local interface "lo" 
 - filter out the ICMP/DNS/TCP messages (e.g. "!icmp && !dns && !tcp") 
diff --git a/openair2/UTIL/OPT/mac_pcap.h b/openair2/UTIL/OPT/mac_pcap.h
index f1d4b324923f844fc5ba5b45f2ab505c3837acfd..48b31bb3c07395b2b0d6382166356f717706d9d0 100644
--- a/openair2/UTIL/OPT/mac_pcap.h
+++ b/openair2/UTIL/OPT/mac_pcap.h
@@ -42,11 +42,4 @@ typedef struct MAC_Context_Info_t {
   unsigned int   subframesSinceCaptureStart;
 } MAC_Context_Info_t;
 
-pcap_hdr_t file_header = {
-  0xa1b2c3d4,   /* magic number */
-  2, 4,         /* version number is 2.4 */
-  0,            /* timezone */
-  0,            /* sigfigs - apparently all tools do this */
-  65535,        /* snaplen - this should be long enough */
-  MAC_LTE_DLT   /* Data Link Type (DLT).  Set as unused value 147 for now */
-};
+
diff --git a/openair2/UTIL/OPT/opt.h b/openair2/UTIL/OPT/opt.h
index c9340f258e9700baee412b73940e9a946676a589..b4ff3b5006bbf4b5ad9b1d4bdc4ac7c731a9ae1a 100644
--- a/openair2/UTIL/OPT/opt.h
+++ b/openair2/UTIL/OPT/opt.h
@@ -55,6 +55,16 @@ This header file must be included */
 #include "PHY/impl_defs_lte.h"
 #endif
 
+#define PACKET_MAC_LTE_DEFAULT_UDP_PORT (9999)
+
+typedef uint8_t  guint8;
+typedef uint16_t guint16;
+typedef uint32_t guint32;
+typedef guint8   gboolean;
+
+#include "packet-mac-lte.h"
+#include "mac_pcap.h"
+
 #ifdef OCP_FRAMEWORK
 #include <enums.h>
 #else
@@ -74,7 +84,7 @@ typedef enum radio_type_e {
 
 extern trace_mode_t opt_type;
 extern char in_ip[40];
-extern char in_path[100];
+extern char in_path[FILENAME_MAX];
 
 /**
  * function def
@@ -84,7 +94,7 @@ void trace_pdu(int direction, uint8_t *pdu_buffer, unsigned int pdu_buffer_size,
                int ueid, int rntiType, int rnti, uint16_t sysFrame, uint8_t subframe,
                int oob_event, int oob_event_value);
 
-int init_opt(char *path, char *ip, char *port, radio_type_t radio_type_p);
+int init_opt(char *path, char *ip);
 
 void terminate_opt(void);
 
diff --git a/openair2/UTIL/OPT/packet-mac-lte.h b/openair2/UTIL/OPT/packet-mac-lte.h
index d0bb60f6b5cdb942ef7581ba868066434cf9b1fb..4dfbe7912ec484a174567cac076d70627550ebe4 100644
--- a/openair2/UTIL/OPT/packet-mac-lte.h
+++ b/openair2/UTIL/OPT/packet-mac-lte.h
@@ -1,41 +1,36 @@
 /* packet-mac-lte.h
  *
  * Martin Mathieson
- * $Id: packet-mac-lte.h 42240 2012-04-25 20:02:12Z pascal $
  *
  * Wireshark - Network traffic analyzer
  * By Gerald Combs <gerald@wireshark.org>
  * Copyright 1998 Gerald Combs
  *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
  * This header file may also be distributed under
  * the terms of the BSD Licence as follows:
  *
  * Copyright (C) 2009 Martin Mathieson. All rights reserved.
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``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 AUTHOR OR 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
+ * SPDX-License-Identifier: BSD-2-Clause
  */
+ 
+ /* 
+ this is wireshark, commit: commit eda834b6e29c36e05a63a6056afa98390ff79357 
+ Date:   Wed Aug 22 14:36:20 2018 +0200
+ modified to be used in OpenAir to create the LTE MAC/RLC encapsulated in UDP as per Wireshark feature 
+ */
+
+
+#include "ws_symbol_export.h"
+
+/** data structure to hold time values with nanosecond resolution*/
+typedef struct {
+	time_t	secs;
+	int	nsecs;
+} nstime_t;
 
-#ifndef PACKET_MAC_LTE_H_
-#define PACKET_MAC_LTE_H_
 
 /* radioType */
 #define FDD_RADIO 1
@@ -45,105 +40,190 @@
 #define DIRECTION_UPLINK   0
 #define DIRECTION_DOWNLINK 1
 
-/* SR: no need to declare following part: */
+/* rntiType */
+#define WS_NO_RNTI     0
+#define WS_P_RNTI      1
+#define WS_RA_RNTI     2
+#define WS_C_RNTI      3
+#define WS_SI_RNTI     4
+#define WS_SPS_RNTI    5
+#define WS_M_RNTI      6
+#define WS_SL_BCH_RNTI 7
+#define WS_SL_RNTI     8
+#define WS_SC_RNTI     9
+#define WS_G_RNTI      10
+
 typedef enum mac_lte_oob_event {
-  ltemac_send_preamble,
-  ltemac_send_sr,
-  ltemac_sr_failure
+    ltemac_send_preamble,
+    ltemac_send_sr,
+    ltemac_sr_failure
 } mac_lte_oob_event;
 
 typedef enum mac_lte_dl_retx {
-  dl_retx_no,
-  dl_retx_yes,
-  dl_retx_unknown
+    dl_retx_no,
+    dl_retx_yes,
+    dl_retx_unknown
 } mac_lte_dl_retx;
 
 typedef enum mac_lte_crc_status {
-  crc_fail = 0,
-  crc_success = 1,
-  crc_high_code_rate = 2,
-  crc_pdsch_lost = 3,
-  crc_duplicate_nonzero_rv = 4
+    crc_fail = 0,
+    crc_success = 1,
+    crc_high_code_rate = 2,
+    crc_pdsch_lost = 3,
+    crc_duplicate_nonzero_rv = 4,
+    crc_false_dci = 5
 } mac_lte_crc_status;
 
+/* N.B. for SCellIndex-r13 extends to 31 */
+typedef enum mac_lte_carrier_id {
+    carrier_id_primary,
+    carrier_id_secondary_1,
+    carrier_id_secondary_2,
+    carrier_id_secondary_3,
+    carrier_id_secondary_4,
+    carrier_id_secondary_5,
+    carrier_id_secondary_6,
+    carrier_id_secondary_7
+} mac_lte_carrier_id;
+
+typedef enum mac_lte_ce_mode {
+    no_ce_mode = 0,
+    ce_mode_a = 1,
+    ce_mode_b = 2
+} mac_lte_ce_mode;
+
+typedef enum mac_lte_nb_mode {
+    no_nb_mode = 0,
+    nb_mode = 1
+} mac_lte_nb_mode;
+
 /* Context info attached to each LTE MAC frame */
-typedef struct mac_lte_info {
-  /* Needed for decode */
-  guint8          radioType;
-  guint8          direction;
-  guint8          rntiType;
-
-  /* Extra info to display */
-  guint16         rnti;
-  guint16         ueid;
-
-  /* Timing info */
-  guint16         sysframeNumber;
-  guint16         subframeNumber;
-
-  /* Optional field. More interesting for TDD (FDD is always -4 subframeNumber) */
-  gboolean        subframeNumberOfGrantPresent;
-  guint16         subframeNumberOfGrant;
-
-  /* Flag set only if doing PHY-level data test - i.e. there may not be a
-     well-formed MAC PDU so just show as raw data */
-  gboolean        isPredefinedData;
-
-  /* Length of DL PDU or UL grant size in bytes */
-  guint16         length;
-
-  /* UL only.  0=newTx, 1=first-retx, etc */
-  guint8          reTxCount;
-  guint8          isPHICHNACK; /* FALSE=PDCCH retx grant, TRUE=PHICH NACK */
-
-  /* UL only.  Indicates if the R10 extendedBSR-Sizes parameter is set */
-  gboolean        isExtendedBSRSizes;
-
-  /* DL only.  Status of CRC check */
-  mac_lte_crc_status   crcStatusValid;
-
-  /* DL only.  Is this known to be a retransmission? */
-  mac_lte_dl_retx dl_retx;
-
-  /* More Physical layer info (see direction above for which side of union to use) */
-  union {
-    struct mac_lte_ul_phy_info {
-      guint8 present;  /* Remaining UL fields are present and should be displayed */
-      guint8 modulation_type;
-      guint8 tbs_index;
-      guint8 resource_block_length;
-      guint8 resource_block_start;
-      guint8 harq_id;
-      gboolean ndi;
-    } ul_info;
-    struct mac_lte_dl_phy_info {
-      guint8 present; /* Remaining UL fields are present and should be displayed */
-      guint8 dci_format;
-      guint8 resource_allocation_type;
-      guint8 aggregation_level;
-      guint8 mcs_index;
-      guint8 redundancy_version_index;
-      guint8 resource_block_length;
-      mac_lte_crc_status crc_status;
-      guint8 harq_id;
-      gboolean ndi;
-      guint8   transport_block;  /* 1..2 */
-    } dl_info;
-  } detailed_phy_info;
-
-  /* Relating to out-of-band events */
-  /* N.B. dissector will only look to these fields if length is 0... */
-  mac_lte_oob_event  oob_event;
-  guint8             rapid;
-  guint8             rach_attempt_number;
-#define MAX_SRs 20
-  guint16            number_of_srs;
-  guint16            oob_ueid[MAX_SRs];
-  guint16            oob_rnti[MAX_SRs];
+typedef struct mac_lte_info
+{
+    /* Needed for decode */
+    guint8          radioType;
+    guint8          direction;
+    guint8          rntiType;
+
+    /* Extra info to display */
+    guint16         rnti;
+    guint16         ueid;
+
+    /* Timing info */
+    guint16         sysframeNumber;
+    guint16         subframeNumber;
+
+    /* Optional field. More interesting for TDD (FDD is always -4 subframeNumber) */
+    gboolean        subframeNumberOfGrantPresent;
+    guint16         subframeNumberOfGrant;
+
+    /* Flag set only if doing PHY-level data test - i.e. there may not be a
+       well-formed MAC PDU so just show as raw data */
+    gboolean        isPredefinedData;
+
+    /* Length of DL PDU or UL grant size in bytes */
+    guint16         length;
+
+    /* 0=newTx, 1=first-retx, etc */
+    guint8          reTxCount;
+    guint8          isPHICHNACK; /* FALSE=PDCCH retx grant, TRUE=PHICH NACK */
+
+    /* UL only.  Indicates if the R10 extendedBSR-Sizes parameter is set */
+    gboolean        isExtendedBSRSizes;
+
+    /* UL only.  Indicates if the R10 simultaneousPUCCH-PUSCH parameter is set for PCell */
+    gboolean        isSimultPUCCHPUSCHPCell;
+
+    /* UL only.  Indicates if the R10 extendedBSR-Sizes parameter is set for PSCell */
+    gboolean        isSimultPUCCHPUSCHPSCell;
+
+    /* Status of CRC check. For UE it is DL only. For eNodeB it is UL
+       only. For an analyzer, it is present for both DL and UL. */
+    gboolean        crcStatusValid;
+    mac_lte_crc_status crcStatus;
+
+    /* Carrier ID */
+    mac_lte_carrier_id   carrierId;
+
+    /* DL only.  Is this known to be a retransmission? */
+    mac_lte_dl_retx dl_retx;
+
+    /* DL only. CE mode to be used for RAR decoding */
+    mac_lte_ce_mode ceMode;
+
+    /* DL and UL. NB-IoT mode of the UE */
+    mac_lte_nb_mode nbMode;
+
+    /* UL only, for now used for CE mode A RAR decoding */
+    guint8          nUlRb;
+
+    /* More Physical layer info (see direction above for which side of union to use) */
+    union {
+        struct mac_lte_ul_phy_info
+        {
+            guint8 present;  /* Remaining UL fields are present and should be displayed */
+            guint8 modulation_type;
+            guint8 tbs_index;
+            guint8 resource_block_length;
+            guint8 resource_block_start;
+            guint8 harq_id;
+            gboolean ndi;
+        } ul_info;
+        struct mac_lte_dl_phy_info
+        {
+            guint8 present; /* Remaining DL fields are present and should be displayed */
+            guint8 dci_format;
+            guint8 resource_allocation_type;
+            guint8 aggregation_level;
+            guint8 mcs_index;
+            guint8 redundancy_version_index;
+            guint8 resource_block_length;
+            guint8 harq_id;
+            gboolean ndi;
+            guint8   transport_block;  /* 0..1 */
+        } dl_info;
+    } detailed_phy_info;
+
+    /* Relating to out-of-band events */
+    /* N.B. dissector will only look to these fields if length is 0... */
+    mac_lte_oob_event  oob_event;
+    guint8             rapid;
+    guint8             rach_attempt_number;
+    #define MAX_SRs 20
+    guint16            number_of_srs;
+    guint16            oob_ueid[MAX_SRs];
+    guint16            oob_rnti[MAX_SRs];
 } mac_lte_info;
 
-/* Accessor function to check if a frame was considered to be ReTx */
-//int is_mac_lte_frame_retx(packet_info *pinfo, guint8 direction);
+
+typedef struct mac_lte_tap_info {
+    /* Info from context */
+    guint16  rnti;
+    guint16  ueid;
+    guint8   rntiType;
+    guint8   isPredefinedData;
+    gboolean crcStatusValid;
+    mac_lte_crc_status   crcStatus;
+    guint8   direction;
+
+    guint8   isPHYRetx;
+    guint16  ueInTTI;
+
+    nstime_t mac_lte_time;
+
+    /* Number of bytes (which part is used depends upon context settings) */
+    guint32  single_number_of_bytes;
+    guint32  bytes_for_lcid[11];
+    guint32  sdus_for_lcid[11];
+    guint8   number_of_rars;
+    guint8   number_of_paging_ids;
+
+    /* Number of padding bytes includes padding subheaders and trailing padding */
+    guint16  padding_bytes;
+    guint16  raw_length;
+} mac_lte_tap_info;
+
+
 
 /*****************************************************************/
 /* UDP framing format                                            */
@@ -153,12 +233,10 @@ typedef struct mac_lte_info {
 /* and implemented by this dissector, using the definitions      */
 /* below. A link to an example program showing you how to encode */
 /* these headers and send LTE MAC PDUs on a UDP socket is        */
-/* provided at http://wiki.wireshark.org/MAC-LTE                 */
+/* provided at https://wiki.wireshark.org/MAC-LTE                */
 /*                                                               */
-/* A heuristic dissecter (enabled by a preference) will          */
-/* recognise a signature at the beginning of these frames   .    */
-/* Until someone is using this format, suggestions for changes   */
-/* are welcome.                                                  */
+/* A heuristic dissector (enabled by a preference) will          */
+/* recognise a signature at the beginning of these frames.       */
 /*****************************************************************/
 
 
@@ -177,7 +255,7 @@ typedef struct mac_lte_info {
    to show you display/filter/plot/add-custom-columns on these fields, so should
    be added if available.
    The format is to have the tag, followed by the value (there is no length field,
-   its implicit from the tag) */
+   it's implicit from the tag) */
 
 #define MAC_LTE_RNTI_TAG            0x02
 /* 2 bytes, network order */
@@ -185,8 +263,8 @@ typedef struct mac_lte_info {
 #define MAC_LTE_UEID_TAG            0x03
 /* 2 bytes, network order */
 
-#define MAC_LTE_SUBFRAME_TAG        0x04
-/* 2 bytes, network order */
+#define MAC_LTE_FRAME_SUBFRAME_TAG  0x04
+/* 2 bytes, network order, SFN is stored in 12 MSB and SF in 4 LSB */
 
 #define MAC_LTE_PREDEFINED_DATA_TAG 0x05
 /* 1 byte */
@@ -200,29 +278,101 @@ typedef struct mac_lte_info {
 #define MAC_LTE_EXT_BSR_SIZES_TAG   0x08
 /* 0 byte */
 
-#define MAC_LTE_OOB_EVENT_TAG   0x09
-/* 3 byte */
+#define MAC_LTE_SEND_PREAMBLE_TAG   0x09
+/* 2 bytes, RAPID value (1 byte) followed by RACH attempt number (1 byte) */
+
+#define MAC_LTE_CARRIER_ID_TAG      0x0A
+/* 1 byte */
+
+#define MAC_LTE_PHY_TAG             0x0B
+/* variable length, length (1 byte) then depending on direction
+   in UL: modulation type (1 byte), TBS index (1 byte), RB length (1 byte),
+          RB start (1 byte), HARQ id (1 byte), NDI (1 byte)
+   in DL: DCI format (1 byte), resource allocation type (1 byte), aggregation level (1 byte),
+          MCS index (1 byte), redundancy version (1 byte), resource block length (1 byte),
+          HARQ id (1 byte), NDI (1 byte), TB (1 byte), DL reTx (1 byte) */
+
+#define MAC_LTE_SIMULT_PUCCH_PUSCH_PCELL_TAG  0x0C
+/* 0 byte */
+
+#define MAC_LTE_SIMULT_PUCCH_PUSCH_PSCELL_TAG 0x0D
+/* 0 byte */
+
+#define MAC_LTE_CE_MODE_TAG         0x0E
+/* 1 byte containing mac_lte_ce_mode enum value */
+
+#define MAC_LTE_NB_MODE_TAG         0x0F
+/* 1 byte containing mac_lte_nb_mode enum value */
+
+#define MAC_LTE_N_UL_RB_TAG         0x10
+/* 1 byte containing the number of UL resource blocks: 6, 15, 25, 50, 75 or 100 */
+
+#define MAC_LTE_SR_TAG              0x11
+/* 2 bytes for the number of items, followed by that number of ueid, rnti (2 bytes each) */
+
 
 /* MAC PDU. Following this tag comes the actual MAC PDU (there is no length, the PDU
    continues until the end of the frame) */
 #define MAC_LTE_PAYLOAD_TAG 0x01
 
 
-/* Set details of an LCID -> drb channel mapping.  To be called from
-   configuration protocol (e.g. RRC) */
-/*void set_mac_lte_channel_mapping(guint16 ueid, guint8 lcid,
-                                 guint8  srbid, guint8 drbid,
-                                 guint8  rlcMode, guint8 um_sn_length,
-                                 guint8  ul_priority);
-*/
-/* Functions to be called from outside this module (e.g. in a plugin, where mac_lte_info
-   isn't available) to get/set per-packet data */
-//mac_lte_info *get_mac_lte_proto_data(packet_info *pinfo);
-//void set_mac_lte_proto_data(packet_info *pinfo, mac_lte_info *p_mac_lte_info);
-
-/* Function to attempt to populate p_mac_lte_info using framing definition above */
-/*gboolean dissect_mac_lte_context_fields(struct mac_lte_info  *p_mac_lte_info, tvbuff_t *tvb,
-                                        gint *p_offset);
-*/
-
-#endif /* PACKET_MAC_LTE_H_ */
+/* Type to store parameters for configuring LCID->RLC channel settings for DRB */
+/* Some are optional, and may not be seen (e.g. on reestablishment) */
+typedef struct drb_mapping_t
+{
+    guint16    ueid;                /* Mandatory */
+    guint8     drbid;               /* Mandatory */
+    gboolean   lcid_present;
+    guint8     lcid;                /* Part of LogicalChannelConfig - optional */
+    gboolean   rlcMode_present;
+    guint8     rlcMode;             /* Part of RLC config - optional */
+    gboolean   rlc_ul_ext_li_field; /* Part of RLC config - optional */
+    gboolean   rlc_dl_ext_li_field; /* Part of RLC config - optional */
+    gboolean   rlc_ul_ext_am_sn;    /* Part of RLC config - optional */
+    gboolean   rlc_dl_ext_am_sn;    /* Part of RLC config - optional */
+    gboolean   um_sn_length_present;
+    guint8     um_sn_length;        /* Part of RLC config - optional */
+    gboolean   ul_priority_present;
+    guint8     ul_priority;         /* Part of LogicalChannelConfig - optional */
+    gboolean   pdcp_sn_size_present;
+    guint8     pdcp_sn_size;        /* Part of pdcp-Config - optional */
+} drb_mapping_t;
+
+
+
+/* Dedicated DRX config. Used to verify that a sensible config is given.
+   Also, beginning to configure MAC with this config and (optionally) show
+   DRX config and state (cycles/timers) attached to each UL/DL PDU! */
+typedef struct drx_config_t {
+    gboolean    configured;
+    guint32     frameNum;
+    guint32     previousFrameNum;
+
+    guint32     onDurationTimer;
+    guint32     inactivityTimer;
+    guint32     retransmissionTimer;
+    guint32     longCycle;
+    guint32     cycleOffset;
+    /* Optional Short cycle */
+    gboolean    shortCycleConfigured;
+    guint32     shortCycle;
+    guint32     shortCycleTimer;
+} drx_config_t;
+
+/* RRC can indicate whether simultaneous PUCCH/PUSCH is used */
+typedef enum {
+    SIMULT_PUCCH_PUSCH_PCELL = 0,
+    SIMULT_PUCCH_PUSCH_PSCELL
+} simult_pucch_pusch_cell_type;
+/*
+ * Editor modelines  -  http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/openair2/UTIL/OPT/probe.c b/openair2/UTIL/OPT/probe.c
index 2f7dac3d1ed9a7a568af2ecae00d86b58529e7ad..a1e53671682a10f0f984cbcd831b98c0116378e2 100644
--- a/openair2/UTIL/OPT/probe.c
+++ b/openair2/UTIL/OPT/probe.c
@@ -95,26 +95,22 @@ what about the implementation
 
 int opt_enabled=0;
 
-#define PACKET_MAC_LTE_DEFAULT_UDP_PORT (9999)
-
-typedef uint8_t  guint8;
-typedef uint16_t guint16;
-typedef uint32_t guint32;
-typedef guint8   gboolean;
-
-#include "packet-mac-lte.h"
-#include "mac_pcap.h"
-
 //static unsigned char g_PDUBuffer[1600];
 //static unsigned int g_PDUOffset;
 
-
 char in_ip[40];
-char in_path[100];
+char in_path[FILENAME_MAX];
 FILE *file_fd = NULL;
+pcap_hdr_t file_header = {
+  0xa1b2c3d4,   /* magic number */
+  2, 4,         /* version number is 2.4 */
+  0,            /* timezone */
+  0,            /* sigfigs - apparently all tools do this */
+  65535,        /* snaplen - this should be long enough */
+  MAC_LTE_DLT   /* Data Link Type (DLT).  Set as unused value 147 for now */
+};
 
 trace_mode_t opt_type = OPT_NONE;
-static radio_type_t radio_type;
 static unsigned int subframesSinceCaptureStart;
 
 static int g_socksd = -1;/* UDP socket used for sending frames */
@@ -237,22 +233,13 @@ static void SendFrame(guint8 radioType, guint8 direction, guint8 rntiType,
                       guint8 oob_event, guint8 oob_event_value,
                       uint8_t *pdu_buffer, unsigned int pdu_buffer_size)
 {
-  #ifdef JUMBO_FRAME
-     static unsigned char frameBuffer[9000];
-  #else
-     static unsigned char frameBuffer[1600];
-  #endif 
-  static unsigned int frameOffset;
+  unsigned char frameBuffer[9000];
+  unsigned int frameOffset;
 
   ssize_t bytesSent;
   frameOffset = 0;
   uint16_t tmp16;
 
-  /********************************************************************/
-  /* Fixed start to each frame (allowing heuristic dissector to work) */
-  /* Not NULL terminated */
-  memset(frameBuffer+frameOffset, 0, sizeof(mac_lte_info)+pdu_buffer_size + 8);
-
   memcpy(frameBuffer+frameOffset, MAC_LTE_START_STRING,
          strlen(MAC_LTE_START_STRING));
   frameOffset += strlen(MAC_LTE_START_STRING);
@@ -279,7 +266,7 @@ static void SendFrame(guint8 radioType, guint8 direction, guint8 rntiType,
   frameOffset += 2;
 
   /* Subframe number */
-  frameBuffer[frameOffset++] = MAC_LTE_SUBFRAME_TAG;
+  frameBuffer[frameOffset++] = MAC_LTE_FRAME_SUBFRAME_TAG;
   tmp16 = htons(sfnSf); // frame counter : this will give an expert info as wireshark expects SF and not F
   memcpy(frameBuffer+frameOffset, &tmp16, 2);
   frameOffset += 2;
@@ -313,26 +300,29 @@ static void SendFrame(guint8 radioType, guint8 direction, guint8 rntiType,
   if (pdu_buffer_size==0) {
     switch (oob_event) {
     case ltemac_send_preamble :
-      LOG_D(OPT,"oob ltemac_send_preamble event %02x."
+      LOG_D(OPT,"ltemac_send_preamble event %02x."
           //"%02x."
           "%02x.%02x\n",
-          MAC_LTE_OOB_EVENT_TAG,
+          MAC_LTE_SEND_PREAMBLE_TAG,
           //ltemac_send_preamble,
           rnti,
           oob_event_value);
       //frameBuffer[frameOffset++]=0;
       //frameBuffer[frameOffset++]=0;
       //frameBuffer[frameOffset++]=0;
-      frameBuffer[frameOffset++] = MAC_LTE_OOB_EVENT_TAG;
+      frameBuffer[frameOffset++] = MAC_LTE_SEND_PREAMBLE_TAG;
       //frameBuffer[frameOffset++]=ltemac_send_preamble;
       frameBuffer[frameOffset++]=rnti; // is the preamble
       frameBuffer[frameOffset++]=oob_event_value;
       break;
 
     case ltemac_send_sr:
-      frameBuffer[frameOffset++]=ltemac_send_sr;
+      frameBuffer[frameOffset++]=MAC_LTE_SR_TAG ;
       frameOffset+=2;
+      frameBuffer[frameOffset++]=rnti;
+      frameOffset++;
       frameBuffer[frameOffset++]=oob_event_value;
+      frameOffset++;
       break;
 
     case ltemac_sr_failure:
@@ -394,7 +384,7 @@ static int MAC_LTE_PCAP_WritePDU(MAC_Context_Info_t *context,
   offset += 2;
 
   /* Subframe number */
-  context_header[offset++] = MAC_LTE_SUBFRAME_TAG;
+  context_header[offset++] = MAC_LTE_FRAME_SUBFRAME_TAG;
   tmp16 = htons(context->subFrameNumber);
   memcpy(context_header+offset, &tmp16, 2);
   offset += 2;
@@ -423,21 +413,27 @@ static int MAC_LTE_PCAP_WritePDU(MAC_Context_Info_t *context,
 
   return 1;
 }
-
+#include <common/ran_context.h>
+extern RAN_CONTEXT_t RC;
+#include <openair1/PHY/phy_extern_ue.h>
 /* Remote serveraddress (where Wireshark is running) */
 void trace_pdu(int direction, uint8_t *pdu_buffer, unsigned int pdu_buffer_size,
                int ueid, int rntiType, int rnti, uint16_t sysFrameNumber, uint8_t subFrameNumber, int oob_event,
                int oob_event_value)
 {
   MAC_Context_Info_t pdu_context;
-
+  int radioType=FDD_RADIO;
+  if (RC.eNB[0][0]!=NULL)
+    radioType=RC.eNB[0][0]->frame_parms.frame_type== FDD ? FDD_RADIO:TDD_RADIO;
+  if (PHY_vars_UE_g[0][0] != NULL)
+    radioType=PHY_vars_UE_g[0][0]->frame_parms.frame_type== FDD ? FDD_RADIO:TDD_RADIO;
   switch (opt_type) {
   case OPT_WIRESHARK :
     if (g_socksd == -1) {
       return;
     }
 
-    SendFrame(radio_type,
+    SendFrame( radioType,
               (direction == DIRECTION_DOWNLINK) ? DIRECTION_DOWNLINK : DIRECTION_UPLINK,
               rntiType, rnti, ueid, (sysFrameNumber<<4) + subFrameNumber,
               1, 0, 1,  //guint8 isPredefinedData, guint8 retx, guint8 crcStatus
@@ -450,7 +446,7 @@ void trace_pdu(int direction, uint8_t *pdu_buffer, unsigned int pdu_buffer_size,
       return;
     }
 
-    pdu_context.radioType = radio_type;
+    pdu_context.radioType =  radioType;
     pdu_context.direction = (direction == DIRECTION_DOWNLINK) ? DIRECTION_DOWNLINK
                             : DIRECTION_UPLINK;
     pdu_context.rntiType = rntiType;
@@ -470,7 +466,7 @@ void trace_pdu(int direction, uint8_t *pdu_buffer, unsigned int pdu_buffer_size,
   }
 }
 /*---------------------------------------------------*/
-int init_opt(char *path, char *ip, char *port, radio_type_t radio_type_p)
+int init_opt(char *path, char *ip)
 {
   uint16_t in_port;
   subframesSinceCaptureStart = 0;
@@ -489,13 +485,7 @@ int init_opt(char *path, char *ip, char *port, radio_type_t radio_type_p)
     strcpy( in_ip, "127.0.0.1" );
   }
 
-  if (port != NULL) {
-    in_port = atoi(port);
-  } else {
-    in_port = PACKET_MAC_LTE_DEFAULT_UDP_PORT;
-  }
-
-  radio_type = radio_type_p;
+  in_port = PACKET_MAC_LTE_DEFAULT_UDP_PORT;
 
   // trace_mode
   switch (opt_type) {
diff --git a/openair2/UTIL/OPT/ws_compiler_tests.h b/openair2/UTIL/OPT/ws_compiler_tests.h
new file mode 100644
index 0000000000000000000000000000000000000000..46a4ab6099d2d9a2826f42f2884eae962efedff1
--- /dev/null
+++ b/openair2/UTIL/OPT/ws_compiler_tests.h
@@ -0,0 +1,138 @@
+/* ws_compiler_tests.h
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef __WS_COMPILER_TESTS_H__
+#define __WS_COMPILER_TESTS_H__
+
+/*
+ * This was introduced by Clang:
+ *
+ *     http://clang.llvm.org/docs/LanguageExtensions.html#has-attribute
+ *
+ * in some version (which version?); it has been picked up by GCC 5.0.
+ */
+#ifndef __has_attribute
+  /*
+   * It's a macro, so you can check whether it's defined to check
+   * whether it's supported.
+   *
+   * If it's not, define it to always return 0, so that we move on to
+   * the fallback checks.
+   */
+  #define __has_attribute(x) 0
+#endif
+
+/*
+ * Note that the C90 spec's "6.8.1 Conditional inclusion" and the
+ * C99 spec's and C11 spec's "6.10.1 Conditional inclusion" say:
+ *
+ *    Prior to evaluation, macro invocations in the list of preprocessing
+ *    tokens that will become the controlling constant expression are
+ *    replaced (except for those macro names modified by the defined unary
+ *    operator), just as in normal text.  If the token "defined" is
+ *    generated as a result of this replacement process or use of the
+ *    "defined" unary operator does not match one of the two specified
+ *    forms prior to macro replacement, the behavior is undefined.
+ *
+ * so you shouldn't use defined() in a #define that's used in #if or
+ * #elif.  Some versions of Clang, for example, will warn about this.
+ *
+ * Instead, we check whether the pre-defined macros for particular
+ * compilers are defined and, if not, define the "is this version XXX
+ * or a later version of this compiler" macros as 0.
+ */
+
+/*
+ * Check whether this is GCC major.minor or a later release, or some
+ * compiler that claims to be "just like GCC" of that version or a
+ * later release.
+ */
+
+#if !defined(__GNUC__)
+  #define WS_IS_AT_LEAST_GNUC_VERSION(major, minor) 0
+#else
+  #define WS_IS_AT_LEAST_GNUC_VERSION(major, minor) \
+	(__GNUC__ > (major) || \
+	 (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
+#endif
+
+/*
+ * Check whether this is Clang major.minor or a later release.
+ */
+
+#if !defined(__clang__)
+  #define WS_IS_AT_LEAST_CLANG_VERSION(major, minor) 0
+#else
+  #define WS_IS_AT_LEAST_CLANG_VERSION(major, minor) \
+	(__clang_major__ > (major) || \
+	 (__clang_major__ == (major) && __clang_minor__ >= (minor)))
+#endif
+
+/*
+ * Check whether this is Sun C/SunPro C/Oracle Studio major.minor
+ * or a later release.
+ *
+ * The version number in __SUNPRO_C is encoded in hex BCD, with the
+ * uppermost hex digit being the major version number, the next
+ * one or two hex digits being the minor version number, and
+ * the last digit being the patch version.
+ *
+ * It represents the *compiler* version, not the product version;
+ * see
+ *
+ *    https://sourceforge.net/p/predef/wiki/Compilers/
+ *
+ * for a partial mapping, which we assume continues for later
+ * 12.x product releases.
+ */
+
+#if !defined(__SUNPRO_C)
+  #define WS_IS_AT_LEAST_SUNC_VERSION(major, minor) 0
+#else
+  #define WS_SUNPRO_VERSION_TO_BCD(major, minor) \
+	(((minor) >= 10) ? \
+	    (((major) << 12) | (((minor)/10) << 8) | (((minor)%10) << 4)) : \
+	    (((major) << 8) | ((minor) << 4)))
+  #define WS_IS_AT_LEAST_SUNC_VERSION(major, minor) \
+	(__SUNPRO_C >= WS_SUNPRO_VERSION_TO_BCD((major), (minor)))
+#endif
+
+/*
+ * Check whether this is IBM XL C major.minor or a later release.
+ *
+ * The version number in __xlC__ has the major version in the
+ * upper 8 bits and the minor version in the lower 8 bits.
+ */
+
+#if !defined(__xlC__)
+  #define WS_IS_AT_LEAST_XL_C_VERSION(major, minor) 0
+#else
+  #define WS_IS_AT_LEAST_XL_C_VERSION(major, minor) \
+	(__xlC__ >= (((major) << 8) | (minor)))
+#endif
+
+/*
+ * Check whether this is HP aC++/HP C major.minor or a later release.
+ *
+ * The version number in __HP_aCC is encoded in zero-padded decimal BCD,
+ * with the "A." stripped off, the uppermost two decimal digits being
+ * the major version number, the next two decimal digits being the minor
+ * version number, and the last two decimal digits being the patch version.
+ * (Strip off the A., remove the . between the major and minor version
+ * number, and add two digits of patch.)
+ */
+
+#if !defined(__HP_aCC)
+  #define WS_IS_AT_LEAST_HP_C_VERSION(major, minor) 0
+#else
+  #define WS_IS_AT_LEAST_HP_C_VERSION(major, minor) \
+	(__HP_aCC >= ((major)*10000 + (minor)*100))
+#endif
+
+#endif /* __WS_COMPILER_TESTS_H__ */
diff --git a/openair2/UTIL/OPT/ws_symbol_export.h b/openair2/UTIL/OPT/ws_symbol_export.h
new file mode 100644
index 0000000000000000000000000000000000000000..4c7a2f710af741a948163a0efb7892af7be5a662
--- /dev/null
+++ b/openair2/UTIL/OPT/ws_symbol_export.h
@@ -0,0 +1,202 @@
+/*
+ * Cross platform defines for exporting symbols from shared libraries
+ *
+ * Wireshark - Network traffic analyzer
+ * By Balint Reczey <balint@balintreczey.hu>
+ * Copyright 2013 Balint Reczey
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "ws_compiler_tests.h"
+
+/** Reset symbol export behavior.
+ * If you {un}define WS_BUILD_DLL on the fly you'll have to define this
+ * as well.
+ */
+#ifdef RESET_SYMBOL_EXPORT
+
+#ifdef SYMBOL_EXPORT_H
+#undef SYMBOL_EXPORT_H
+#endif
+
+#ifdef WS_DLL_PUBLIC
+#undef WS_DLL_PUBLIC
+#endif
+
+#ifdef WS_DLL_PUBLIC_DEF
+#undef WS_DLL_PUBLIC_DEF
+#endif
+
+#ifdef WS_DLL_LOCAL
+#undef WS_DLL_LOCAL
+#endif
+
+#endif /* RESET_SYMBOL_EXPORT */
+
+#ifndef SYMBOL_EXPORT_H
+#define SYMBOL_EXPORT_H
+
+/*
+ * NOTE: G_HAVE_GNUC_VISIBILITY is defined only if all of
+ *
+ *    __attribute__ ((visibility ("hidden")))
+ *
+ *    __attribute__ ((visibility ("internal")))
+ *
+ *    __attribute__ ((visibility ("protected")))
+ *
+ *    __attribute__ ((visibility ("default")))
+ *
+ * are supported, and at least some versions of GCC from Apple support
+ * "default" and "hidden" but not "internal" or "protected", so it
+ * shouldn't be used to determine whether "hidden" or "default" is
+ * supported.
+ *
+ * This also means that we shouldn't use G_GNUC_INTERNAL instead of
+ * WS_DLL_LOCAL, as GLib uses G_HAVE_GNUC_VISIBILITY to determine
+ * whether to use __attribute__ ((visibility ("hidden"))) for
+ * G_GNUC_INTERNAL, and that will not use it even with compilers
+ * that support it.
+ */
+
+/* Originally copied from GCC Wiki at http://gcc.gnu.org/wiki/Visibility */
+#if defined _WIN32 || defined __CYGWIN__
+  /* Compiling for Windows, so we use the Windows DLL declarations. */
+  #ifdef WS_BUILD_DLL
+    /*
+     * Building a DLL; for all definitions, we want dllexport, and
+     * (presumably so source from DLL and source from a program using the
+     * DLL can both include a header that declares APIs and exported data
+     * for the DLL), for declarations, either dllexport or dllimport will
+     * work (they mean the same thing for a declaration when building a DLL).
+     */
+    #ifdef __GNUC__
+      /* GCC */
+      #define WS_DLL_PUBLIC_DEF __attribute__ ((dllexport))
+    #else /* ! __GNUC__ */
+      /*
+       * Presumably MSVC.
+       * Note: actually gcc seems to also support this syntax.
+       */
+      #define WS_DLL_PUBLIC_DEF __declspec(dllexport)
+    #endif /* __GNUC__ */
+  #else /* WS_BUILD_DLL */
+    /*
+     * Building a program; we should only see declarations, not definitions,
+     * with WS_DLL_PUBLIC, and they all represent APIs or data imported
+     * from a DLL, so use dllimport.
+     *
+     * For functions, export shouldn't be necessary; for data, it might
+     * be necessary, e.g. if what's declared is an array whose size is
+     * not given in the declaration.
+     */
+    #ifdef __GNUC__
+      /* GCC */
+      #define WS_DLL_PUBLIC_DEF __attribute__ ((dllimport))
+    #elif ! (defined ENABLE_STATIC) /* ! __GNUC__ */
+      /*
+       * Presumably MSVC, and we're not building all-static.
+       * Note: actually gcc seems to also support this syntax.
+       */
+      #define WS_DLL_PUBLIC_DEF __declspec(dllimport)
+    #else /* ! __GNUC__  && ENABLE_STATIC */
+      /*
+       * Presumably MSVC, and we're building all-static, so we're
+       * not building any DLLs.
+       */
+      #define WS_DLL_PUBLIC_DEF
+    #endif /* __GNUC__ */
+  #endif /* WS_BUILD_DLL */
+
+  /*
+   * Symbols in a DLL are *not* exported unless they're specifically
+   * flagged as exported, so, for a non-static but non-exported
+   * symbol, we don't have to do anything.
+   */
+  #define WS_DLL_LOCAL
+#else /* defined _WIN32 || defined __CYGWIN__ */
+  /*
+   * Compiling for UN*X, where the dllimport and dllexport stuff
+   * is neither necessary nor supported; just specify the
+   * visibility if we have a compiler that supports doing so.
+   */
+  #if WS_IS_AT_LEAST_GNUC_VERSION(3,4) \
+      || WS_IS_AT_LEAST_XL_C_VERSION(12,0)
+    /*
+     * GCC 3.4 or later, or some compiler asserting compatibility with
+     * GCC 3.4 or later, or XL C 13.0 or later, so we have
+     * __attribute__((visibility()).
+     */
+
+    /*
+     * Symbols exported from libraries.
+     */
+    #define WS_DLL_PUBLIC_DEF __attribute__ ((visibility ("default")))
+
+    /*
+     * Non-static symbols *not* exported from libraries.
+     */
+    #define WS_DLL_LOCAL  __attribute__ ((visibility ("hidden")))
+  #elif WS_IS_AT_LEAST_SUNC_VERSION(5,5)
+    /*
+     * Sun C 5.5 or later, so we have __global and __hidden.
+     * (Sun C 5.9 and later also have __attribute__((visibility()),
+     * but there's no reason to prefer it with Sun C.)
+     */
+
+    /*
+     * Symbols exported from libraries.
+     */
+    #define WS_DLL_PUBLIC_DEF __global
+
+    /*
+     * Non-static symbols *not* exported from libraries.
+     */
+    #define WS_DLL_LOCAL __hidden
+  #else
+    /*
+     * We have neither a way to make stuff not explicitly marked as
+     * visible invisible outside a library nor a way to make stuff
+     * explicitly marked as local invisible outside the library.
+     */
+
+    /*
+     * Symbols exported from libraries.
+     */
+    #define WS_DLL_PUBLIC_DEF
+
+    /*
+     * Non-static symbols *not* exported from libraries.
+     */
+    #define WS_DLL_LOCAL
+  #endif
+#endif
+
+/*
+ * You *must* use this for exported data *declarations*; if you use
+ * WS_DLL_PUBLIC_DEF, some compilers, such as MSVC++, will complain
+ * about array definitions with no size.
+ *
+ * You must *not* use this for exported data *definitions*, as that
+ * will, for some compilers, cause warnings about items being initialized
+ * and declared extern.
+ *
+ * Either can be used for exported *function* declarations and definitions.
+ */
+#define WS_DLL_PUBLIC  WS_DLL_PUBLIC_DEF extern
+
+#endif /* SYMBOL_EXPORT_H */
+
+/*
+ * Editor modelines  -  http://www.wireshark.org/tools/modelines.html
+ *
+ * Local Variables:
+ * c-basic-offset: 2
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=2 tabstop=8 expandtab:
+ * :indentSize=2:tabSize=8:noTabs=true:
+ */
diff --git a/openair2/X2AP/x2ap_common.c b/openair2/X2AP/x2ap_common.c
index 2ac875155d6294cf1bd815f960164ae4cdc59c58..cc2954f77bcfb212874add515e90f82d76fdb483 100644
--- a/openair2/X2AP/x2ap_common.c
+++ b/openair2/X2AP/x2ap_common.c
@@ -66,7 +66,7 @@ ssize_t x2ap_generate_initiating_message(
   pdu.present = X2AP_X2AP_PDU_PR_initiatingMessage;
   pdu.choice.initiatingMessage.procedureCode = procedureCode;
   pdu.choice.initiatingMessage.criticality   = criticality;
-  ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
+  ANY_fromType_aper((ANY_t *)&pdu.choice.initiatingMessage.value, td, sptr);
 
   if (asn1_xer_print) {
     xer_fprint(stdout, &asn_DEF_X2AP_X2AP_PDU, (void *)&pdu);
@@ -98,7 +98,7 @@ ssize_t x2ap_generate_successfull_outcome(
   pdu.present = X2AP_X2AP_PDU_PR_successfulOutcome;
   pdu.choice.successfulOutcome.procedureCode = procedureCode;
   pdu.choice.successfulOutcome.criticality   = criticality;
-  ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
+  ANY_fromType_aper((ANY_t *)&pdu.choice.successfulOutcome.value, td, sptr);
 
   if (asn1_xer_print) {
     xer_fprint(stdout, &asn_DEF_X2AP_X2AP_PDU, (void *)&pdu);
@@ -130,7 +130,7 @@ ssize_t x2ap_generate_unsuccessfull_outcome(
   pdu.present = X2AP_X2AP_PDU_PR_unsuccessfulOutcome;
   pdu.choice.successfulOutcome.procedureCode = procedureCode;
   pdu.choice.successfulOutcome.criticality   = criticality;
-  ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
+  ANY_fromType_aper((ANY_t *)&pdu.choice.successfulOutcome.value, td, sptr);
 
   if (asn1_xer_print) {
     xer_fprint(stdout, &asn_DEF_X2AP_X2AP_PDU, (void *)&pdu);
diff --git a/openair2/X2AP/x2ap_common.h b/openair2/X2AP/x2ap_common.h
index 1a4889f0f01699cb307b8e1c30b08351a1a4df36..76cc92aed23ee05c1ed49a192d6c502ecba8bca4 100644
--- a/openair2/X2AP/x2ap_common.h
+++ b/openair2/X2AP/x2ap_common.h
@@ -57,11 +57,10 @@
 #define FALSE 0
 #endif
 
-extern int asn_debug;
 extern int asn1_xer_print;
 
 #if defined(ENB_MODE)
-# include "log.h"
+# include "common/utils/LOG/log.h"
 # define X2AP_ERROR(x, args...) LOG_E(X2AP, x, ##args)
 # define X2AP_WARN(x, args...)  LOG_W(X2AP, x, ##args)
 # define X2AP_DEBUG(x, args...) LOG_D(X2AP, x, ##args)
diff --git a/openair3/NAS/COMMON/UTIL/nas_log.c b/openair3/NAS/COMMON/UTIL/nas_log.c
deleted file mode 100644
index 6af90c4be871ab88e0a698c0926efd43f9f87b09..0000000000000000000000000000000000000000
--- a/openair3/NAS/COMMON/UTIL/nas_log.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*****************************************************************************
-Source    nas_log.c
-
-Version   0.1
-
-Date    2012/02/28
-
-Product   NAS stack
-
-Subsystem Utilities
-
-Author    Frederic Maurel
-
-Description Usefull logging functions
-
-*****************************************************************************/
-
-#include "nas_log.h"
-#if defined(NAS_BUILT_IN_UE) && defined(NAS_UE)
-int nas_log_func_indent;
-#else
-#include <stdio.h>  // stderr, sprintf, fprintf, vfprintf
-#include <stdarg.h> // va_list, va_start, va_end
-#include <string.h> // strlen
-
-/****************************************************************************/
-/****************  E X T E R N A L    D E F I N I T I O N S  ****************/
-/****************************************************************************/
-
-/* ANSI escape codes for colored display */
-#define LOG_BLACK "\033[30m"
-#define LOG_RED   "\033[31m"
-#define LOG_GREEN "\033[32m"
-#define LOG_YELLOW  "\033[33m"
-#define LOG_BLUE  "\033[34m"
-#define LOG_MAGENTA "\033[35m"
-#define LOG_CYAN  "\033[36m"
-#define LOG_WHITE "\033[37m"
-#define LOG_END   "\033[0m"
-#define LOG_AUTO  LOG_END
-
-/****************************************************************************/
-/*******************  L O C A L    D E F I N I T I O N S  *******************/
-/****************************************************************************/
-
-/* ------------------------
- * Internal logging context
- * ------------------------
- *  Internal logging context consists on:
- *      - The file name and the line number from where the data have been
- *        logged. These information are gathered into a string that will
- *        be displayed as a prefix of the logging trace with the format
- *        filename[line]
- *      - The severity level filter
- *      - The indentation level to convey FUNC logging traces
- *      - The data definition of each logging trace level: name and mask
- *        (the mask is used against the severity level filter to enable
- *        or disable specific logging traces)
- */
-typedef struct {
-#define LOG_PREFIX_SIZE 118
-  char prefix[LOG_PREFIX_SIZE];
-  unsigned char filter;
-  int indent;
-  const struct {
-    char* name;
-    unsigned char mask;
-    char* color;
-  } level[];
-} log_context_t;
-
-/*
- * Definition of the logging context
- */
-static log_context_t _log_context = {
-  "",   /* prefix */
-  0x00, /* filter */
-  0,    /* indent */
-  {
-    { "DEBUG",  NAS_LOG_DEBUG,          LOG_GREEN },  /* DEBUG  */
-    { "INFO", NAS_LOG_INFO,         LOG_AUTO  },  /* INFO   */
-    { "WARNING",  NAS_LOG_WARNING,  LOG_BLUE  },  /* WARNING  */
-    { "ERROR",  NAS_LOG_ERROR,          LOG_RED   },  /* ERROR  */
-    { "",   NAS_LOG_FUNC,         LOG_AUTO  },  /* FUNC_IN  */
-    { "",   NAS_LOG_FUNC,         LOG_AUTO  },  /* FUNC_OUT */
-  }   /* level[]  */
-};
-
-/* Maximum number of bytes into a line of dump logging data */
-#define LOG_DUMP_LINE_SIZE  16
-
-/****************************************************************************/
-/******************  E X P O R T E D    F U N C T I O N S  ******************/
-/****************************************************************************/
-
-/****************************************************************************
- **                                                                        **
- ** Name:  log_init()                                                **
- **                                                                        **
- ** Description: Initializes internal logging data                         **
- **                                                                        **
- ** Inputs:  filter:  Value of the severity level that will be   **
- **       used as a filter to enable or disable      **
- **       specific logging traces                    **
- **      Others:  None                                       **
- **                                                                        **
- ** Outputs:   Return:  None                                       **
- **      Others:  None                                       **
- **                                                                        **
- ***************************************************************************/
-void nas_log_init(char filter)
-{
-  _log_context.filter = filter;
-}
-
-/****************************************************************************
- **                                                                        **
- ** Name:  log_data()                                                **
- **                                                                        **
- ** Description: Defines internal logging data                             **
- **                                                                        **
- ** Inputs:  filename:  Name of the file from where the data have  **
- **         been logged                                **
- **      line:    Number of the line in the file             **
- **      Others:  None                                       **
- **                                                                        **
- ** Outputs:   Return:  None                                       **
- **      Others:  None                                       **
- **                                                                        **
- ***************************************************************************/
-void log_data(const char* filename, int line)
-{
-  int len = strlen(filename) + 2 + 1; //2:[], 1:/0
-  if (line > 9999)     len+=5;
-  else if (line > 999) len+=4;
-  else if (line > 99)  len+=3;
-  else if (line > 9)   len+=2;
-  else                 len+=1;
-  if (len > LOG_PREFIX_SIZE) {
-	snprintf(_log_context.prefix, LOG_PREFIX_SIZE, "%s:%d", &filename[len - LOG_PREFIX_SIZE], line);
-  } else {
-    snprintf(_log_context.prefix, LOG_PREFIX_SIZE, "%s:%d", filename, line);
-  }
-}
-
-/****************************************************************************
- **                                                                        **
- ** Name:  log_trace()                                               **
- **                                                                        **
- ** Description: Displays logging data                                     **
- **                                                                        **
- ** Inputs:  severity:  Severity level of the logging data         **
- **      data:    Formated logging data to display           **
- **      Others:  None                                       **
- **                                                                        **
- ** Outputs:   Return:  None                                       **
- **      Others:  None                                       **
- **                                                                        **
- ***************************************************************************/
-void log_trace(log_severity_t severity, const char* data, ...)
-{
-  int i;
-
-  /* Sanity check */
-  if (severity > LOG_SEVERITY_MAX) return;
-
-  /* Display only authorized logging traces */
-  if (_log_context.level[severity].mask & _log_context.filter) {
-    va_list argp;
-
-    /*
-     * First, display internal logging data (logging trace prefix: file
-     * name and line number from where the data have been logged) and
-     * the severity level.
-     */
-    fprintf(stderr, "%s%-120.118s%-10s", _log_context.level[severity].color,
-            _log_context.prefix, _log_context.level[severity].name);
-    {
-      /* Next, perform indentation for FUNC logging trace */
-      if (severity == FUNC_OUT) {
-        _log_context.indent--;
-      }
-
-      for (i=0; i<_log_context.indent; i++) {
-        fprintf(stderr, "  ");
-      }
-
-      if (severity == FUNC_IN) {
-        _log_context.indent++;
-      }
-    }
-
-    /* Finally, display logging data */
-    va_start(argp, data);
-    vfprintf(stderr, data, argp);
-
-    /* Terminate with line feed character */
-    fprintf(stderr, "%s\n", LOG_END);
-
-    va_end(argp);
-  }
-}
-
-/****************************************************************************
- **                                                                        **
- ** Name:  log_dump()                                                **
- **                                                                        **
- ** Description: Dump logging data                                         **
- **                                                                        **
- ** Inputs:  data:    Logging data to dump                       **
- **      len:   Number of bytes to be dumped               **
- **      Others:  None                                       **
- **                                                                        **
- ** Outputs:   Return:  None                                       **
- **      Others:  None                                       **
- **                                                                        **
- ***************************************************************************/
-void log_dump(const char* data, int len)
-{
-  int i;
-
-  /* Display only authorized logging traces */
-  if ( (len > 0) && (NAS_LOG_HEX & _log_context.filter) ) {
-    int bytes = 0;
-
-    fprintf(stderr, "\n\t");
-
-    for (i=0; i < len; i++) {
-      fprintf(stderr, "%.2hx ", (const unsigned char) data[i]);
-
-      /* Add new line when the number of displayed bytes exceeds
-       * the line's size */
-      if ( ++bytes > (LOG_DUMP_LINE_SIZE - 1) ) {
-        bytes = 0;
-        fprintf(stderr, "\n\t");
-      }
-    }
-
-    if (bytes % LOG_DUMP_LINE_SIZE) {
-      fprintf(stderr, "\n");
-    }
-
-    fprintf(stderr, "\n");
-    fflush(stderr);
-  }
-}
-
-/****************************************************************************/
-/*********************  L O C A L    F U N C T I O N S  *********************/
-/****************************************************************************/
-#endif
-
diff --git a/openair3/NAS/COMMON/UTIL/nas_log.h b/openair3/NAS/COMMON/UTIL/nas_log.h
index c36e0795c7a141b1115d359773b376c7f86c5ec7..b41e34c51be03fe99aeeccfc104a580337e3e4a8 100644
--- a/openair3/NAS/COMMON/UTIL/nas_log.h
+++ b/openair3/NAS/COMMON/UTIL/nas_log.h
@@ -95,7 +95,7 @@ typedef enum {
 /******************  E X P O R T E D    F U N C T I O N S  ******************/
 /****************************************************************************/
 
-#if defined(NAS_BUILT_IN_UE) && defined(NAS_UE)
+#ifdef LOG_E
 # define LOG_TRACE(s, x, args...)                               \
 do {                                                            \
     switch (s) {                                                \
@@ -106,54 +106,21 @@ do {                                                            \
     }                                                           \
 } while (0)
 
-# define LOG_DUMP(dATA, lEN)                                                    \
-do {                                                                            \
-    char buffer[3*lEN + 1];                                                     \
-    int i;                                                                      \
-    for (i = 0; i < lEN; i++)                                                   \
-        sprintf (&buffer[3*i], "%02x ", dATA[i]);                               \
-    LOG_D(NAS, " Dump %d: %s\n", lEN, buffer);                                  \
-} while (0)
-
-# define LOG_FUNC_IN                                                            \
-do {                                                                            \
-    LOG_D(NAS, " %s:%d %*sEntering %s()\n", __FILE__, __LINE__, nas_log_func_indent, "", __FUNCTION__);   \
-    nas_log_func_indent += 2;                                                   \
-} while (0)
-
-# define LOG_FUNC_OUT                                                           \
-do {                                                                            \
-    nas_log_func_indent -= 2;                                                   \
-    LOG_D(NAS, " %s:%d %*sLeaving %s()\n", __FILE__, __LINE__, nas_log_func_indent, "", __FUNCTION__);    \
-} while (0)
-
-# define LOG_FUNC_RETURN(rETURNcODE)                                            \
-do {                                                                            \
-    nas_log_func_indent -= 2;                                                   \
-    LOG_D(NAS, " %s:%d %*sLeaving %s(rc = %ld)\n", __FILE__, __LINE__, nas_log_func_indent, "",           \
-          __FUNCTION__, (long) (rETURNcODE));                                     \
-    return (rETURNcODE);                                                        \
-} while (0)
+# define LOG_DUMP(dATA, lEN)   LOG_DUMPMSG(NAS, DEBUG_NAS,dATA, lEN, " Dump %d:\n", lEN)                                                 
+# define LOG_FUNC_IN  LOG_ENTER(NAS)
+# define LOG_FUNC_OUT  LOG_END(NAS)
+# define LOG_FUNC_RETURN(rETURNcODE) LOG_RETURN(NAS,rETURNcODE)
 
 extern int nas_log_func_indent;
 
 #else
-# define LOG_TRACE log_data(__FILE__, __LINE__); log_trace
-# define LOG_DUMP(a, b) log_dump((a),(b));
-
-# define LOG_FUNC_IN LOG_TRACE(FUNC_IN, "Entering %s()", __FUNCTION__)
-# define LOG_FUNC_OUT LOG_TRACE(FUNC_OUT, "Leaving %s()", __FUNCTION__)
-# define LOG_FUNC_RETURN(rETURNcODE)                                            \
-do {                                                                           \
-    LOG_TRACE(FUNC_OUT, "Leaving %s(rc = %ld)", __FUNCTION__,                  \
-    (long) (rETURNcODE));                                                        \
-    return (rETURNcODE);                                                       \
-} while(0)
-
-void nas_log_init(char filter);
-void log_data(const char* filename, int line);
-void log_trace(log_severity_t severity, const char* data, ...);
-void log_dump(const char* data, int len);
+# define LOG_TRACE(s, x, args...)  
+# define LOG_DUMP(dATA, lEN)   LOG_DUMPMSG(NAS, LOG_DUMP_CHAR,dATA, lEN,  " Dump %d:\n", lEN)
+
+# define LOG_FUNC_IN 
+# define LOG_FUNC_OUT 
+# define LOG_FUNC_RETURN(rETURNcODE)  return  rETURNcODE                                  \
+
 #endif
 
 #endif /* __NAS_LOG_H__*/
diff --git a/openair3/NAS/UE/EMM/SAP/emm_fsm.c b/openair3/NAS/UE/EMM/SAP/emm_fsm.c
index d614b9ec7e42a5008c275251c1b6d229ab2b021c..5a715727ad17f3e091b7ca04a01eee113d2ccc59 100644
--- a/openair3/NAS/UE/EMM/SAP/emm_fsm.c
+++ b/openair3/NAS/UE/EMM/SAP/emm_fsm.c
@@ -208,8 +208,7 @@ emm_fsm_state_t emm_fsm_initialize()
 {
   LOG_FUNC_IN;
 
-  LOG_FUNC_OUT;
-  return EMM_NULL;
+  LOG_FUNC_RETURN(EMM_NULL);
 }
 
 /****************************************************************************
diff --git a/openair3/S1AP/MESSAGES/ASN1/R15/s1ap-15.2.0.asn1 b/openair3/S1AP/MESSAGES/ASN1/R15/s1ap-15.2.0.asn1
index db1f1b59150a5d17de2764d473ddd2627dc91d23..97d0a6de871ff1b8c4dd48a45df457f7d423223a 100755
--- a/openair3/S1AP/MESSAGES/ASN1/R15/s1ap-15.2.0.asn1
+++ b/openair3/S1AP/MESSAGES/ASN1/R15/s1ap-15.2.0.asn1
@@ -6881,3 +6881,201 @@ id-EDT-Session										ProtocolIE-ID ::= 281
 id-CNTypeRestrictions								ProtocolIE-ID ::= 282
 
 END
+
+-- **************************************************************
+--
+-- Container definitions
+--
+-- **************************************************************
+
+S1AP-Containers {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-Containers (5) }
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+	Criticality,
+	Presence,
+	PrivateIE-ID,
+	ProtocolExtensionID,
+	ProtocolIE-ID
+FROM S1AP-CommonDataTypes
+
+	maxPrivateIEs,
+	maxProtocolExtensions,
+	maxProtocolIEs
+FROM S1AP-Constants;
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+S1AP-PROTOCOL-IES ::= CLASS {
+	&id				ProtocolIE-ID 					UNIQUE,
+	&criticality	Criticality,
+	&Value,
+	&presence		Presence
+}
+WITH SYNTAX {
+	ID				&id
+	CRITICALITY		&criticality
+	TYPE			&Value
+	PRESENCE		&presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+S1AP-PROTOCOL-IES-PAIR ::= CLASS {
+	&id					ProtocolIE-ID 				UNIQUE,
+	&firstCriticality	Criticality,
+	&FirstValue,
+	&secondCriticality	Criticality,
+	&SecondValue,
+	&presence			Presence
+}
+WITH SYNTAX {
+	ID				&id
+	FIRST CRITICALITY		&firstCriticality
+	FIRST TYPE				&FirstValue
+	SECOND CRITICALITY		&secondCriticality
+	SECOND TYPE				&SecondValue
+	PRESENCE				&presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol Extensions
+--
+-- **************************************************************
+
+S1AP-PROTOCOL-EXTENSION ::= CLASS {
+	&id				ProtocolExtensionID			UNIQUE,
+	&criticality	Criticality,
+	&Extension,
+	&presence		Presence
+}
+WITH SYNTAX {
+	ID				&id
+	CRITICALITY		&criticality
+	EXTENSION		&Extension
+	PRESENCE		&presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Private IEs
+--
+-- **************************************************************
+
+S1AP-PRIVATE-IES ::= CLASS {
+	&id				PrivateIE-ID,
+	&criticality	Criticality,
+	&Value,
+	&presence		Presence
+}
+WITH SYNTAX {
+	ID				&id
+	CRITICALITY		&criticality
+	TYPE			&Value
+	PRESENCE		&presence
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IEs
+--
+-- **************************************************************
+
+ProtocolIE-Container {S1AP-PROTOCOL-IES : IEsSetParam} ::= 
+	SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+	ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-SingleContainer {S1AP-PROTOCOL-IES : IEsSetParam} ::= 
+	ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Field {S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
+	id				S1AP-PROTOCOL-IES.&id				({IEsSetParam}),
+	criticality		S1AP-PROTOCOL-IES.&criticality		({IEsSetParam}{@id}),
+	value			S1AP-PROTOCOL-IES.&Value			({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IE Pairs
+--
+-- **************************************************************
+
+ProtocolIE-ContainerPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= 
+	SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+	ProtocolIE-FieldPair {{IEsSetParam}}
+
+ProtocolIE-FieldPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
+	id					S1AP-PROTOCOL-IES-PAIR.&id					({IEsSetParam}),
+	firstCriticality	S1AP-PROTOCOL-IES-PAIR.&firstCriticality	({IEsSetParam}{@id}),
+	firstValue			S1AP-PROTOCOL-IES-PAIR.&FirstValue			({IEsSetParam}{@id}),
+	secondCriticality	S1AP-PROTOCOL-IES-PAIR.&secondCriticality	({IEsSetParam}{@id}),
+	secondValue			S1AP-PROTOCOL-IES-PAIR.&SecondValue		({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container Lists for Protocol IE Containers
+--
+-- **************************************************************
+
+ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES : IEsSetParam} ::=
+	SEQUENCE (SIZE (lowerBound..upperBound)) OF
+	ProtocolIE-SingleContainer {{IEsSetParam}}
+
+ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
+	SEQUENCE (SIZE (lowerBound..upperBound)) OF
+	ProtocolIE-ContainerPair {{IEsSetParam}}
+
+-- **************************************************************
+--
+-- Container for Protocol Extensions
+--
+-- **************************************************************
+
+ProtocolExtensionContainer {S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= 
+	SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
+	ProtocolExtensionField {{ExtensionSetParam}}
+
+ProtocolExtensionField {S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
+	id					S1AP-PROTOCOL-EXTENSION.&id				({ExtensionSetParam}),
+	criticality			S1AP-PROTOCOL-EXTENSION.&criticality	({ExtensionSetParam}{@id}),
+	extensionValue		S1AP-PROTOCOL-EXTENSION.&Extension		({ExtensionSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Private IEs
+--
+-- **************************************************************
+
+PrivateIE-Container {S1AP-PRIVATE-IES : IEsSetParam } ::= 
+	SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
+	PrivateIE-Field {{IEsSetParam}}
+
+PrivateIE-Field {S1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
+	id					S1AP-PRIVATE-IES.&id				({IEsSetParam}),
+	criticality			S1AP-PRIVATE-IES.&criticality		({IEsSetParam}{@id}),
+	value				S1AP-PRIVATE-IES.&Value				({IEsSetParam}{@id})
+}
+
+END
diff --git a/openair3/S1AP/s1ap_common.c b/openair3/S1AP/s1ap_common.c
index 7c4f970af2f18d61e626c4a7d8f70d607a8d663c..d31c6e58390917b82c12b836fddd40c0ecf286a6 100644
--- a/openair3/S1AP/s1ap_common.c
+++ b/openair3/S1AP/s1ap_common.c
@@ -32,26 +32,9 @@
 #include "s1ap_common.h"
 #include "S1AP_S1AP-PDU.h"
 
-int asn_debug = 0;
-int asn1_xer_print = 0;
-
-#if defined(EMIT_ASN_DEBUG_EXTERN)
-inline void ASN_DEBUG(const char *fmt, ...)
-{
-  if (asn_debug) {
-    int adi = asn_debug_indent;
-    va_list ap;
-    va_start(ap, fmt);
-    fprintf(stderr, "[ASN1]");
 
-    while(adi--) fprintf(stderr, " ");
+int asn1_xer_print = 0;
 
-    vfprintf(stderr, fmt, ap);
-    fprintf(stderr, "\n");
-    va_end(ap);
-  }
-}
-#endif
 
 void s1ap_handle_criticality(S1AP_Criticality_t criticality)
 {
diff --git a/openair3/S1AP/s1ap_common.h b/openair3/S1AP/s1ap_common.h
index 8a2faa311f6e1e015d8c56654363f7e948a32811..94b3e43bc65b8789e330f25179381e0d2de4ba47 100644
--- a/openair3/S1AP/s1ap_common.h
+++ b/openair3/S1AP/s1ap_common.h
@@ -31,13 +31,16 @@
 #ifndef S1AP_COMMON_H_
 #define S1AP_COMMON_H_
 
-/* Defined in asn_internal.h */
-// extern int asn_debug_indent;
-extern int asn_debug;
 
-#if defined(EMIT_ASN_DEBUG_EXTERN)
-inline void ASN_DEBUG(const char *fmt, ...);
+#include "common/utils/LOG/log.h"
+/* replace ASN_DEBUG defined in asn_internal.h by oai tracing system
+   Would be cleaner to modify asn_internal.h but it seems to come
+   from non oai source, with BSD license, so prefer to do that here..
+*/
+#ifdef ASN_DEBUG
+# undef ASN_DEBUG
 #endif
+#define ASN_DEBUG( x... )  LOG_I(ASN, x)
 
 #include "S1AP_ProtocolIE-Field.h"
 #include "S1AP_S1AP-PDU.h"
diff --git a/openair3/S1AP/s1ap_eNB_handlers.c b/openair3/S1AP/s1ap_eNB_handlers.c
index 9b150fe75163f72223fcf627d7f7b0a073f3fb5e..5c6b208b87336111216ec516b78448b47971aa94 100644
--- a/openair3/S1AP/s1ap_eNB_handlers.c
+++ b/openair3/S1AP/s1ap_eNB_handlers.c
@@ -1043,7 +1043,7 @@ int s1ap_eNB_handle_paging(uint32_t               assoc_id,
 
   /* Paging procedure -> stream != 0 */
   if (stream == 0) {
-    S1AP_ERROR("[SCTP %d] Received Paging procedure on stream (%d)\n",
+    LOG_W(S1AP,"[SCTP %d] Received Paging procedure on stream (%d)\n",
                assoc_id, stream);
     return -1;
   }
diff --git a/openair3/S1AP/s1ap_eNB_nas_procedures.c b/openair3/S1AP/s1ap_eNB_nas_procedures.c
index f2f84de32d5140b7eaee9e5388017790d364d171..ebd5bab4fdd8e1b80ec8a61025fafac4501c19ed 100644
--- a/openair3/S1AP/s1ap_eNB_nas_procedures.c
+++ b/openair3/S1AP/s1ap_eNB_nas_procedures.c
@@ -473,17 +473,11 @@ int s1ap_eNB_handle_nas_downlink(uint32_t         assoc_id,
     MSC_LOG_RX_DISCARDED_MESSAGE(
       MSC_S1AP_ENB,
       MSC_S1AP_MME,
-      (const char *)NULL,
       NULL,
+      0,
       MSC_AS_TIME_FMT" downlinkNASTransport  eNB_ue_s1ap_id %u mme_ue_s1ap_id %u",
-      0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
       enb_ue_s1ap_id,
       mme_ue_s1ap_id);
-    /* TODO: fix this log - the original version is suspicious (twice downlink_NAS_transport_p->eNB_UE_S1AP_ID?) */
-    /*S1AP_ERROR("[SCTP %d] Received NAS downlink message for non existing UE context eNB_UE_S1AP_ID: 0x%"PRIx32" %u\n",
-               assoc_id,
-               downlink_NAS_transport_p->eNB_UE_S1AP_ID,
-               downlink_NAS_transport_p->eNB_UE_S1AP_ID);*/
     S1AP_ERROR("[SCTP %d] Received NAS downlink message for non existing UE context eNB_UE_S1AP_ID: 0x%lx\n",
                assoc_id,
                enb_ue_s1ap_id);
@@ -518,11 +512,10 @@ int s1ap_eNB_handle_nas_downlink(uint32_t         assoc_id,
   MSC_LOG_RX_MESSAGE(
     MSC_S1AP_ENB,
     MSC_S1AP_MME,
-    (const char *)NULL,
     NULL,
+    0,
     MSC_AS_TIME_FMT" downlinkNASTransport  eNB_ue_s1ap_id %u mme_ue_s1ap_id %u",
-    0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
-    enb_ue_s1ap_id,
+    assoc_id,
     mme_ue_s1ap_id);
 
   S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_DownlinkNASTransport_IEs_t, ie, container,
diff --git a/openair3/UTILS/log.c b/openair3/UTILS/log.c
deleted file mode 100644
index 5ddebd415c7e83f79248c7cbae5023641b5b84fe..0000000000000000000000000000000000000000
--- a/openair3/UTILS/log.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include "log.h"
-
-/* mme log */
-int log_enabled = 0;
-
-int log_init(const mme_config_t *mme_config_p,
-             log_specific_init_t specific_init)
-{
-  if (mme_config_p->verbosity_level == 1) {
-    log_enabled = 1;
-  } else if (mme_config_p->verbosity_level == 2) {
-    log_enabled = 1;
-  } else {
-    log_enabled = 0;
-  }
-
-  return specific_init(mme_config_p->verbosity_level);
-}
diff --git a/openair3/UTILS/log.h b/openair3/UTILS/log.h
deleted file mode 100644
index 7b712df755437a9048c7204618ae5d4832c49f29..0000000000000000000000000000000000000000
--- a/openair3/UTILS/log.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-#include "mme_config.h"
-
-#ifndef LOG_H_
-#define LOG_H_
-
-/* asn1c debug */
-extern int asn_debug;
-extern int asn1_xer_print;
-extern int fd_g_debug_lvl;
-
-typedef int (*log_specific_init_t)(int log_level);
-
-int log_init(const mme_config_t *mme_config,
-             log_specific_init_t specific_init);
-
-#endif /* LOG_H_ */
diff --git a/targets/ARCH/COMMON/common_lib.c b/targets/ARCH/COMMON/common_lib.c
index 7ff3b820dca5e121f585bd3b9c5a5827ddea1e95..d25826e82e7c060ae75c90c8e51bb9f86941e1cf 100644
--- a/targets/ARCH/COMMON/common_lib.c
+++ b/targets/ARCH/COMMON/common_lib.c
@@ -100,7 +100,7 @@ int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_param
       libname=OAI_TP_LIBNAME;
       shlib_fdesc[0].fname="transport_init";      
     } 
-  ret=load_module_shlib(libname,shlib_fdesc,1);
+  ret=load_module_shlib(libname,shlib_fdesc,1,NULL);
   if (ret < 0) {
        fprintf(stderr,"Library %s couldn't be loaded\n",libname);
   } else {
diff --git a/targets/ARCH/COMMON/common_lib.h b/targets/ARCH/COMMON/common_lib.h
index 433e29e97db7b15322b51d8f3282daa91b922c09..0ef3cd233f57433e6ca3dad9ad399d630206d7d7 100644
--- a/targets/ARCH/COMMON/common_lib.h
+++ b/targets/ARCH/COMMON/common_lib.h
@@ -199,6 +199,8 @@ typedef struct {
   double tx_bw;
   //! clock source 
   clock_source_t clock_source;
+  //! Manual SDR IP address
+  char *sdr_addrs;
   //! Auto calibration flag
   int autocal[4];
   //! rf devices work with x bits iqs when oai have its own iq format
diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
index 9d145728591227159d523494d234228380269b7b..47cd12d816d9dcd71c01e23507931d685bc8a9c7 100644
--- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
+++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
@@ -43,6 +43,8 @@
 #include "common/utils/LOG/log.h"
 #include "common_lib.h"
 #include "assertions.h"
+#include <sys/sysinfo.h>
+#include <sys/resource.h>
 
 #ifdef __SSE4_1__
 #  include <smmintrin.h>
@@ -274,6 +276,8 @@ static int sync_to_gps(openair0_device *device)
 #include "usrp_lib.h"
 static FILE    *pFile = NULL;
 int             mmapfd = 0;
+int             iqfd = 0;
+int             use_mmap = 1; // default is to use mmap
 struct stat     sb;
 iqrec_t        *ms_sample = NULL;                      // memory for all subframes
 unsigned int    nb_samples = 0;
@@ -406,13 +410,24 @@ static void trx_usrp_end(openair0_device *device) {
       }
     }
     if (u_sf_mode == 2) { // replay
-      if (ms_sample != MAP_FAILED) {
-	munmap(ms_sample, sb.st_size);
-	ms_sample = NULL;
-      }
-      if (mmapfd != 0) {
-	close(mmapfd);
-	mmapfd = 0;
+      if (use_mmap) {
+	if (ms_sample != MAP_FAILED) {
+	  munmap(ms_sample, sb.st_size);
+	  ms_sample = NULL;
+	}
+	if (mmapfd != 0) {
+	  close(mmapfd);
+	  mmapfd = 0;
+	}
+      } else {
+	if (ms_sample != NULL) {
+	  free(ms_sample);
+	  ms_sample = NULL;
+	}
+	if (iqfd != 0) {
+	  close(iqfd);
+	  iqfd = 0;
+	}
       }
     }
 #endif    
@@ -619,15 +634,50 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp
 	return 0; // should make calling process exit
       }
       wrap_ts = wrap_count * (nb_samples * (((int)(device->openair0_cfg[0].sample_rate)) / 1000));
+      if (!use_mmap) {
+	if (lseek(iqfd, 0, SEEK_SET) == 0) {
+	  std::cerr << "Seeking at the beginning of IQ file" << std::endl;
+	} else {
+	  std::cerr << "Problem seeking at the beginning of IQ file" << std::endl;
+	}
+      }
     }
-    if (cur_samples < nb_samples) {
-      *ptimestamp = (ms_sample[0].ts + (cur_samples * (((int)(device->openair0_cfg[0].sample_rate)) / 1000))) + wrap_ts;
-      if (cur_samples == 0) {
-	std::cerr << "starting subframes file with wrap_count=" << wrap_count << " wrap_ts=" << wrap_ts
-		  << " ts=" << *ptimestamp << std::endl;
+    if (use_mmap) {
+      if (cur_samples < nb_samples) {
+	*ptimestamp = (ms_sample[0].ts + (cur_samples * (((int)(device->openair0_cfg[0].sample_rate)) / 1000))) + wrap_ts;
+	if (cur_samples == 0) {
+	  std::cerr << "starting subframes file with wrap_count=" << wrap_count << " wrap_ts=" << wrap_ts
+		    << " ts=" << *ptimestamp << std::endl;
+	}
+	memcpy(buff[0], &ms_sample[cur_samples].samples[0], nsamps*4);
+	cur_samples++;
+      }
+    } else {
+      // read sample from file
+      if (read(iqfd, ms_sample, sizeof(iqrec_t)) != sizeof(iqrec_t)) {
+	std::cerr << "pb reading iqfile at index " << sizeof(iqrec_t)*cur_samples << std::endl;
+	close(iqfd);
+	free(ms_sample);
+	ms_sample = NULL;
+	iqfd = 0;
+	exit(-1);
+      }
+
+      if (cur_samples < nb_samples) {
+	static int64_t ts0 = 0;
+	if ((cur_samples == 0) && (wrap_count == 0)) {
+	  ts0 = ms_sample->ts;
+	}
+	*ptimestamp = ts0 + (cur_samples * (((int)(device->openair0_cfg[0].sample_rate)) / 1000)) + wrap_ts;
+	if (cur_samples == 0) {
+	  std::cerr << "starting subframes file with wrap_count=" << wrap_count << " wrap_ts=" << wrap_ts
+		    << " ts=" << *ptimestamp << std::endl;
+	}
+	memcpy(buff[0], &ms_sample->samples[0], nsamps*4);
+	cur_samples++;
+	// Prepare for next read
+	off_t where = lseek(iqfd, cur_samples * sizeof(iqrec_t), SEEK_SET);
       }
-      memcpy(buff[0], &ms_sample[cur_samples].samples[0], nsamps*4);
-      cur_samples++;
     }
     struct timespec req;
     req.tv_sec = 0;
@@ -900,13 +950,18 @@ int trx_usrp_recplay_config_init(paramdef_t *usrp_recplay_params) {
 #endif
 
 extern "C" {
-    /*! \brief Initialize Openair USRP target. It returns 0 if OK
-    * \param device the hardware to use
-         * \param openair0_cfg RF frontend parameters set by application
-         */
-    int device_init(openair0_device* device, openair0_config_t *openair0_cfg) {
+  /*! \brief Initialize Openair USRP target. It returns 0 if OK
+   * \param device the hardware to use
+   * \param openair0_cfg RF frontend parameters set by application
+   */
+  int device_init(openair0_device* device, openair0_config_t *openair0_cfg) {
+
+    LOG_D(PHY, "openair0_cfg[0].sdr_addrs == '%s'\n", openair0_cfg[0].sdr_addrs);
+    LOG_D(PHY, "openair0_cfg[0].clock_source == '%d'\n", openair0_cfg[0].clock_source);
+
 #if defined(USRP_REC_PLAY)
       paramdef_t usrp_recplay_params[7];
+      struct sysinfo systeminfo;
       // to check
       static int done = 0;
       if (done == 1) {
@@ -914,6 +969,11 @@ extern "C" {
       } // prevent from multiple init
       done = 1;
       // end to check
+      // Use mmap for IQ files for systems with less than 6GB total RAM
+      sysinfo(&systeminfo);
+      if (systeminfo.totalram < 6144000000) {
+	use_mmap = 0;
+      }
       memset(usrp_recplay_params, 0, 7*sizeof(paramdef_t));
       memset(&u_sf_filename[0], 0, 1024);
       if (trx_usrp_recplay_config_init(usrp_recplay_params) != 0) {
@@ -953,7 +1013,8 @@ extern "C" {
         device->trx_set_freq_func = trx_usrp_set_freq;
         device->trx_set_gains_func   = trx_usrp_set_gains;
         device->openair0_cfg = openair0_cfg;
-	std::cerr << "USRP device initialized in subframes replay mode for " << u_sf_loops << " loops." << std::endl;
+	std::cerr << "USRP device initialized in subframes replay mode for " << u_sf_loops << " loops. Use mmap="
+		  << use_mmap << std::endl;
       } else {
 #endif
         uhd::set_thread_priority_safe(1.0);
@@ -965,8 +1026,30 @@ extern "C" {
         // Initialize USRP device
         device->openair0_cfg = openair0_cfg;
 
-        std::string args = "type=b200";
-        uhd::device_addrs_t device_adds = uhd::device::find(args);
+      std::string args = "type=b200";
+
+      char *addr_args = NULL;
+      // Check whether sdr_addrs is set in the config or not
+      if (openair0_cfg[0].sdr_addrs != NULL) {
+	if (strcmp(openair0_cfg[0].sdr_addrs, "0.0.0.0") != 0) {
+        // Check whether sdr_addrs contains multiple IP addresses
+        // and split and add them to addr_args
+          if (strstr(openair0_cfg[0].sdr_addrs, ",") != NULL) {
+            char *addr0 = openair0_cfg[0].sdr_addrs;
+            // Replace , with \0
+            strsep(&openair0_cfg[0].sdr_addrs, ",");
+            char *addr1 = openair0_cfg[0].sdr_addrs;
+            // Allocate memory for ",addr0=,addr1=\0" and the addresses
+            size_t addr_args_len = sizeof(char)*(15 + strlen(addr0) + strlen(addr1));
+            addr_args = (char *)malloc(addr_args_len);
+            snprintf(addr_args, addr_args_len, ",addr0=%s,addr1=%s", addr0, addr1);
+            args += addr_args;
+            LOG_D(PHY, "addr_args == '%s'\n", addr_args);
+	  }
+        }
+      }
+
+      uhd::device_addrs_t device_adds = uhd::device::find(args);
 
         int vers=0,subvers=0,subsubvers=0;
         int bw_gain_adjust=0;
@@ -980,12 +1063,17 @@ extern "C" {
         LOG_I(PHY,"Checking for USRPs : UHD %s (%d.%d.%d)\n",
               uhd::get_version_string().c_str(),vers,subvers,subsubvers);
 
-        if(device_adds.size() == 0)  {
-            double usrp_master_clock = 184.32e6;
-            std::string args = "type=x300";
+      if(device_adds.size() == 0)  {
+
+        double usrp_master_clock = 184.32e6;
+        std::string args = "type=x300";
+        
+	if (addr_args) {
+          args += addr_args;
+        }
 
-            // workaround for an api problem, master clock has to be set with the constructor not via set_master_clock_rate
-            args += boost::str(boost::format(",master_clock_rate=%f") % usrp_master_clock);
+        // workaround for an api problem, master clock has to be set with the constructor not via set_master_clock_rate
+        args += boost::str(boost::format(",master_clock_rate=%f") % usrp_master_clock);
 
             //    args += ",num_send_frames=256,num_recv_frames=256, send_frame_size=4096, recv_frame_size=4096";
             uhd::device_addrs_t device_adds = uhd::device::find(args);
@@ -1175,12 +1263,14 @@ extern "C" {
             }
         }
 
-        for(int i=0; i<s->usrp->get_tx_num_channels(); i++) {
-	  ::uhd::gain_range_t gain_range_tx = s->usrp->get_tx_gain_range(i);
-            if (i<openair0_cfg[0].tx_num_channels) {
-                s->usrp->set_tx_rate(openair0_cfg[0].sample_rate,i);
-                s->usrp->set_tx_freq(openair0_cfg[0].tx_freq[i],i);
-                s->usrp->set_tx_gain(gain_range_tx.stop()-openair0_cfg[0].tx_gain[i],i);
+      LOG_D(PHY, "usrp->get_tx_num_channels() == %zd\n", s->usrp->get_tx_num_channels());
+      LOG_D(PHY, "openair0_cfg[0].tx_num_channels == %d\n", openair0_cfg[0].tx_num_channels);
+      for(int i=0; i<s->usrp->get_tx_num_channels(); i++) {
+        ::uhd::gain_range_t gain_range_tx = s->usrp->get_tx_gain_range(i);
+        if (i<openair0_cfg[0].tx_num_channels) {
+          s->usrp->set_tx_rate(openair0_cfg[0].sample_rate,i);
+          s->usrp->set_tx_freq(openair0_cfg[0].tx_freq[i],i);
+          s->usrp->set_tx_gain(gain_range_tx.stop()-openair0_cfg[0].tx_gain[i],i);
 
                 LOG_I(PHY,"USRP TX_GAIN:%3.2lf gain_range:%3.2lf tx_gain:%3.2lf\n", gain_range_tx.stop()-openair0_cfg[0].tx_gain[i], gain_range_tx.stop(), openair0_cfg[0].tx_gain[i]);
             }
@@ -1282,33 +1372,60 @@ extern "C" {
 	memset(ms_sample, 0, u_sf_max * BELL_LABS_IQ_BYTES_PER_SF);
       }
       if (u_sf_mode == 2) {
-	// use mmap
-	mmapfd = open(u_sf_filename, O_RDONLY | O_LARGEFILE);
-	if (mmapfd != 0) {
-	  fstat(mmapfd, &sb);
-	  std::cerr << "Loading subframes using mmap() from " << u_sf_filename << " size=" << (uint64_t)sb.st_size << " bytes ..." << std::endl;
-	  ms_sample = (iqrec_t*) mmap(NULL, sb.st_size, PROT_WRITE, MAP_PRIVATE, mmapfd, 0);
-	  if (ms_sample != MAP_FAILED) {
-	    nb_samples = (sb.st_size / sizeof(iqrec_t));
-	    int aligned = (((unsigned long)ms_sample & 31) == 0)? 1:0;
-	    std::cerr<< "Loaded "<< nb_samples << " subframes." << std::endl;
-	    if (aligned == 0) {
-	      std::cerr<< "mmap address is not 32 bytes aligned, exiting." << std::endl;
+	if (use_mmap) {
+	  // use mmap
+	  mmapfd = open(u_sf_filename, O_RDONLY | O_LARGEFILE);
+	  if (mmapfd != 0) {
+	    fstat(mmapfd, &sb);
+	    std::cerr << "Loading subframes using mmap() from " << u_sf_filename << " size=" << (uint64_t)sb.st_size << " bytes ..." << std::endl;
+	    ms_sample = (iqrec_t*) mmap(NULL, sb.st_size, PROT_WRITE, MAP_PRIVATE, mmapfd, 0);
+	    if (ms_sample != MAP_FAILED) {
+	      nb_samples = (sb.st_size / sizeof(iqrec_t));
+	      int aligned = (((unsigned long)ms_sample & 31) == 0)? 1:0;
+	      std::cerr<< "Loaded "<< nb_samples << " subframes." << std::endl;
+	      if (aligned == 0) {
+		std::cerr<< "mmap address is not 32 bytes aligned, exiting." << std::endl;
+		close(mmapfd);
+		exit(-1);
+	      }
+	    } else {
+	      std::cerr << "Cannot mmap file, exiting." << std::endl;
 	      close(mmapfd);
 	      exit(-1);
 	    }
 	  } else {
-	    std::cerr << "Cannot mmap file, exiting." << std::endl;
-	    close(mmapfd);
+	    std::cerr << "Cannot open " << u_sf_filename << " , exiting." << std::endl;
 	    exit(-1);
 	  }
 	} else {
+	  iqfd = open(u_sf_filename, O_RDONLY | O_LARGEFILE);
+	  if (iqfd != 0) { 
+	    fstat(iqfd, &sb);
+	    nb_samples = (sb.st_size / sizeof(iqrec_t));
+	    std::cerr << "Loading " << nb_samples << " subframes from " << u_sf_filename
+		      << " size=" << (uint64_t)sb.st_size << " bytes ..." << std::endl;
+	    // allocate buffer for 1 sample at a time
+	    ms_sample = (iqrec_t*) malloc(sizeof(iqrec_t));
+	    if (ms_sample == NULL) {
+	      std::cerr<< "Memory allocation failed for individual subframe replay mode." << std::endl;
+	      close(iqfd);
+	      exit(-1);
+	    }
+	    memset(ms_sample, 0, sizeof(iqrec_t));
+	    // point at beginning of file
+	    if (lseek(iqfd, 0, SEEK_SET) == 0) {
+	      std::cerr << "Initial seek at beginning of the file" << std::endl;
+	    } else {
+	      std::cerr << "Problem initial seek at beginning of the file" << std::endl;
+	    }
+	  } else {
 	    std::cerr << "Cannot open " << u_sf_filename << " , exiting." << std::endl;
 	    exit(-1);
+	  }
 	}
       }
 #endif	
-        return 0;
+      return 0;
     }
 }
 /*@}*/
diff --git a/targets/ARCH/tcp_bridge/tcp_bridge_oai.c b/targets/ARCH/tcp_bridge/tcp_bridge_oai.c
index ba6d96db93372c3407d0d1c41ff666e3a2a85606..4d7d49d9c7836c800430afc56d033a9fb8a921cd 100644
--- a/targets/ARCH/tcp_bridge/tcp_bridge_oai.c
+++ b/targets/ARCH/tcp_bridge/tcp_bridge_oai.c
@@ -253,7 +253,7 @@ int tcp_bridge_ue_first_read(openair0_device *device, openair0_timestamp *timest
   tcp_bridge_state_t *t = device->priv;
 
   uint32_t b[t->samples_per_subframe * 12];
-  memset(b, 0, nsamps * 4);
+  memset(b, 0, t->samples_per_subframe * 12 * 4);
   int n = fullwrite(t->sock, b, t->samples_per_subframe * 12 * 4);
   if (n != t->samples_per_subframe * 12 * 4) {
     printf("tcp_bridge: write error ret %d error %s\n", n, strerror(errno));
diff --git a/targets/COMMON/create_tasks.c b/targets/COMMON/create_tasks.c
index 391e448deb590584e9a4b917edd4a6210b1fa1a5..df3ce8992fefbf09db20590c01bd77050d470df7 100644
--- a/targets/COMMON/create_tasks.c
+++ b/targets/COMMON/create_tasks.c
@@ -22,7 +22,7 @@
 #if defined(ENABLE_ITTI)
 # include "intertask_interface.h"
 # include "create_tasks.h"
-# include "log.h"
+# include "common/utils/LOG/log.h"
 
 # ifdef OPENAIR2
 #   if defined(ENABLE_USE_MME)
@@ -31,6 +31,8 @@
 #     include "nas_ue_task.h"
 #     include "udp_eNB_task.h"
 #     include "gtpv1u_eNB_task.h"
+#   else
+#     define EPC_MODE_ENABLED 0
 #   endif
 #   if ENABLE_RAL
 #     include "lteRALue.h"
@@ -59,8 +61,8 @@ int create_tasks(uint32_t enb_nb)
       return -1;
     }
   }
-
-#   if defined(ENABLE_USE_MME)
+# if defined(ENABLE_USE_MME)
+  if (EPC_MODE_ENABLED) {
       if (enb_nb > 0) {
         if (itti_create_task (TASK_SCTP, sctp_eNB_task, NULL) < 0) {
           LOG_E(SCTP, "Create task for SCTP failed\n");
@@ -84,8 +86,8 @@ int create_tasks(uint32_t enb_nb)
         }
       }
 
-#      endif
-
+  } /* if (EPC_MODE_ENABLED) */
+#endif
     if (enb_nb > 0) {
       LOG_I(RRC,"Creating RRC eNB Task\n");
 
diff --git a/targets/COMMON/create_tasks_ue.c b/targets/COMMON/create_tasks_ue.c
index db531b0e9ddd73294530a337909d04c8878039fd..20b5979f31ee1c5829aee774739c4095afe50a49 100644
--- a/targets/COMMON/create_tasks_ue.c
+++ b/targets/COMMON/create_tasks_ue.c
@@ -22,7 +22,7 @@
 #if defined(ENABLE_ITTI)
 # include "intertask_interface.h"
 # include "create_tasks.h"
-# include "log.h"
+# include "common/utils/LOG/log.h"
 
 # ifdef OPENAIR2
 #   if defined(ENABLE_USE_MME)
diff --git a/targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.calisson.conf b/targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.calisson.conf
index 09406d98cf534b27fd1abe11b54562c086be25b7..7ec670d5686e889e589444f2ec7d9b62831c602c 100755
--- a/targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.calisson.conf
+++ b/targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.calisson.conf
@@ -47,6 +47,9 @@ eNBs =
 
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.13.10/24";
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.13.10/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
   }
diff --git a/targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.memphis.conf b/targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.memphis.conf
index 47c12a79266b8ff907c3d26e75fe9a12ce7d5005..e3a0ea3c56f8d9513c47116c84de41a5746a9c10 100755
--- a/targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.memphis.conf
+++ b/targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.memphis.conf
@@ -59,6 +59,9 @@ eNBs =
 
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.13.10/24";
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.13.10/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 # available options for level:   error, warn, notice, info, debug, trace
 # available options for verbosity: none, low, medium, high, full
diff --git a/targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.nord.conf b/targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.nord.conf
index 4360884c1db1bcb6f1ca30a5b275e1e1938deedc..591257ff713003544f33bb4f6c7a388267509b51 100755
--- a/targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.nord.conf
+++ b/targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/CONF/enb.centos.nord.conf
@@ -46,6 +46,9 @@ eNBs =
 
         ENB_INTERFACE_NAME_FOR_S1U               = "eth1";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.13.10/24";
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.13.10/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
   }
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.100PRB.usrpx310.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.100PRB.usrpx310.conf
index 73da2a8b3f37c65507ef1994f930021d7bacfd29..bec9c2c6ddc9c573a4a9a329d6f7a69c0a523588 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.100PRB.usrpx310.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.100PRB.usrpx310.conf
@@ -151,6 +151,9 @@ eNBs =
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.111/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.111/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     log_config :
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.usrpx310.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.usrpx310.conf
index bd0503a4669b698fc568a782272a99571c76b6e8..834b6cf044177eb27d4569c12b96ada46e68aa0c 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.usrpx310.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.usrpx310.conf
@@ -151,6 +151,9 @@ eNBs =
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.111/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.111/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
     log_config :
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf
index 3064a29c698ababb992a6fc3562efcd262a02276..6b3614f490bb35c4317c9a7d07c82fd3d965f429 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf
@@ -33,7 +33,7 @@ eNBs =
       tdd_config_s            			      = 0;
       prefix_type             			      = "NORMAL";
       eutra_band              			      = 7;
-      downlink_frequency      			      = 2685000000L;
+      downlink_frequency      			      = 2680000000L;
       uplink_frequency_offset 			      = -120000000;
       Nid_cell					      = 0;
       N_RB_DL                 			      = 100;
@@ -149,12 +149,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth6";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.111/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth6";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.111/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.111/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
   }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpb210.replay.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpb210.replay.conf
index 99df987b43797da367931ff5f08f2583bb1523e0..fb184549c54eb67ce7e63ca62a85c9cc09778b5c 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpb210.replay.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpb210.replay.conf
@@ -183,12 +183,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "lo";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.13.10/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "lo";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.13.10/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.13.10/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
   }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210-d2d.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210-d2d.conf
index 7d73e55c6c8e494e556bfb508eb6c9cd28ad81ef..c6ace3b68fa396c9b87c5a357c0b250d20e108c7 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210-d2d.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210-d2d.conf
@@ -183,14 +183,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "lo";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "127.0.0.2/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "127.0.0.4/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
-        
-        
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "127.0.0.2/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
   }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
index 69166672d79298d91ff605d5fa2fbf21b5cc6515..c2f10e20aebd768bfdb47271763d0c4f226ae8ba 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
@@ -183,12 +183,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.111/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.111/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.111/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
   }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210_ue_expansion.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210_ue_expansion.conf
index 1197c4ad937638de4825c6ac99237438bb7f18e6..e46467598ee5f1a207562226e81864271fab827f 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210_ue_expansion.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210_ue_expansion.conf
@@ -150,12 +150,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.19/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.19/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.19/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
   }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band38.tm1.if4p5.50PRB.lo.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band38.tm1.if4p5.50PRB.lo.conf
index c4d23bac42b3a9bb8f0be3ad40f14b64a0834be5..a6efe742834a27904e4b39d4a998b96b6a0209cb 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band38.tm1.if4p5.50PRB.lo.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band38.tm1.if4p5.50PRB.lo.conf
@@ -152,12 +152,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "lo";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "127.0.0.2/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "lo";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "127.0.0.5/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "127.0.0.2/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
   }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.50PRB.nfapi-STUB.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.50PRB.nfapi-STUB.conf
index 71a163209ded9e16fd01ac56ad8b0d73491dc11f..fefb4b11def94013d1efc34ba79c617f0e03aead 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.50PRB.nfapi-STUB.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.50PRB.nfapi-STUB.conf
@@ -153,12 +153,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "vboxnet0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.56.1/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "vboxnet0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.56.1/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.56.1/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
 
   }
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.50PRB.nfapi.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.50PRB.nfapi.conf
index a6da42c2f563cbed744420b8f4832c81da5079c0..cd21fb935e44f8529457a66448dcac1159976c44 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.50PRB.nfapi.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.50PRB.nfapi.conf
@@ -183,12 +183,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "lo";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "127.0.0.2/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "lo";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "127.0.0.5/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "127.0.0.2/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
   }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.if4p5.50PRB.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.if4p5.50PRB.conf
index 550de4e1a2c5a56b846a8d5bf296a08f2ddaabad..581012d7d315f1f8ba9c3e02b2edaa75006e7bc5 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.if4p5.50PRB.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.if4p5.50PRB.conf
@@ -152,12 +152,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.19/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "127.0.0.5/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.19/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
   }
 );
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.if4p5.50PRB.lo.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.if4p5.50PRB.lo.conf
index 2b5a0ca68469eae11ba2587f9aae402a8dba7fc5..5f9f8c4d7b6a1321ef12112f59c76612f26230a5 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.if4p5.50PRB.lo.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.if4p5.50PRB.lo.conf
@@ -151,12 +151,14 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-
         ENB_INTERFACE_NAME_FOR_S1_MME            = "lo";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "127.0.0.2/24";
         ENB_INTERFACE_NAME_FOR_S1U               = "lo";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "127.0.0.5/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "127.0.0.2/24";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
     };
   }
 );
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index 57f6f9f56909b0ae86d63abef469e97bb3ebb2a5..a2f255d4d890fd295552016c55469afac7b7b6d0 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -223,7 +223,7 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
   }
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER , 1 );
 
-  if(get_nprocs() >= 8){
+  if(!eNB->single_thread_flag && get_nprocs() >= 8){
     if(wait_on_condition(&proc[1].mutex_rxtx,&proc[1].cond_rxtx,&proc[1].pipe_ready,"wakeup_tx")<0) {
       LOG_E(PHY,"Frame %d, subframe %d: TX1 not ready\n",proc[1].frame_rx,proc[1].subframe_rx);
       return(-1);
@@ -245,7 +245,7 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
   /* CONFLICT RESOLUTION: BEGIN */
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER , 0 );
   if(oai_exit) return(-1);
-  if(get_nprocs() <= 4){
+  if(eNB->single_thread_flag || get_nprocs() <= 4){
 #ifndef PHY_TX_THREAD
     phy_procedures_eNB_TX(eNB, proc, 1);
 #endif
@@ -558,7 +558,7 @@ int wakeup_rxtx(PHY_VARS_eNB *eNB,RU_t *ru) {
   eNB_proc_t *proc=&eNB->proc;
   RU_proc_t *ru_proc=&ru->proc;
 
-  eNB_rxtx_proc_t *proc_rxtx0=&proc->proc_rxtx[0];//*proc_rxtx=&proc->proc_rxtx[proc->frame_rx&1];
+  eNB_rxtx_proc_t *proc_rxtx0=&proc->proc_rxtx[0];
   //eNB_rxtx_proc_t *proc_rxtx1=&proc->proc_rxtx[1];
   
 
@@ -847,7 +847,6 @@ extern void init_td_thread(PHY_VARS_eNB *);
 extern void init_te_thread(PHY_VARS_eNB *);
 extern void kill_td_thread(PHY_VARS_eNB *);
 extern void kill_te_thread(PHY_VARS_eNB *);
-//////////////////////////////////////need to modified////////////////*****
 
 static void* process_stats_thread(void* param) {
 
@@ -856,20 +855,23 @@ static void* process_stats_thread(void* param) {
   wait_sync("process_stats_thread");
 
   while (!oai_exit) {
-     sleep(1);
-     if (opp_enabled == 1) {
-       if (eNB->td) print_meas(&eNB->ulsch_decoding_stats,"ulsch_decoding",NULL,NULL);
-       if (eNB->te)
-       {
-         print_meas(&eNB->dlsch_turbo_encoding_preperation_stats,"dlsch_coding_crc",NULL,NULL);
-         print_meas(&eNB->dlsch_turbo_encoding_segmentation_stats,"dlsch_segmentation",NULL,NULL);
-         print_meas(&eNB->dlsch_encoding_stats,"dlsch_encoding",NULL,NULL);
-         print_meas(&eNB->dlsch_turbo_encoding_signal_stats,"coding_signal",NULL,NULL);
-         print_meas(&eNB->dlsch_turbo_encoding_main_stats,"coding_main",NULL,NULL);
-         print_meas(&eNB->dlsch_turbo_encoding_waiting_stats,"coding_wait",NULL,NULL);
-         print_meas(&eNB->dlsch_turbo_encoding_wakeup_stats0,"coding_worker_0",NULL,NULL);
-         print_meas(&eNB->dlsch_turbo_encoding_wakeup_stats1,"coding_worker_1",NULL,NULL);
-	   }
+    sleep(1);
+      if (opp_enabled == 1) {
+        if (eNB->td) print_meas(&eNB->ulsch_decoding_stats,"ulsch_decoding",NULL,NULL);
+        if (eNB->te)
+        {
+          print_meas(&eNB->dlsch_turbo_encoding_preperation_stats,"dlsch_coding_crc",NULL,NULL);
+          print_meas(&eNB->dlsch_turbo_encoding_segmentation_stats,"dlsch_segmentation",NULL,NULL);
+          print_meas(&eNB->dlsch_encoding_stats,"dlsch_encoding",NULL,NULL);
+          print_meas(&eNB->dlsch_turbo_encoding_signal_stats,"coding_signal",NULL,NULL);
+          print_meas(&eNB->dlsch_turbo_encoding_main_stats,"coding_main",NULL,NULL);
+          print_meas(&eNB->dlsch_turbo_encoding_stats,"turbo_encoding",NULL,NULL);
+          print_meas(&eNB->dlsch_interleaving_stats,"turbo_interleaving",NULL,NULL);
+          print_meas(&eNB->dlsch_rate_matching_stats,"turbo_rate_matching",NULL,NULL);
+          print_meas(&eNB->dlsch_turbo_encoding_waiting_stats,"coding_wait",NULL,NULL);
+          print_meas(&eNB->dlsch_turbo_encoding_wakeup_stats0,"coding_worker_0",NULL,NULL);
+          print_meas(&eNB->dlsch_turbo_encoding_wakeup_stats1,"coding_worker_1",NULL,NULL);
+       }
        print_meas(&eNB->dlsch_modulation_stats,"dlsch_modulation",NULL,NULL);
      }
   }
@@ -950,30 +952,19 @@ void init_eNB_proc(int inst) {
     //    attr_td     = &proc->attr_td;
     //    attr_te     = &proc->attr_te; 
 #endif
-    //////////////////////////////////////need to modified////////////////*****
+
     if(get_nprocs() > 2 && codingw)
     {
       init_te_thread(eNB);
       init_td_thread(eNB);
     }
-    //////////////////////////////////////need to modified////////////////*****
-	//pthread_create( &proc_rxtx[0].pthread_rxtx, attr0, eNB_thread_rxtx, proc );
-
-	//pthread_create( &proc_rxtx[0].pthread_rxtx, attr0, eNB_thread_rxtx, proc_rxtx );
-
-
-    //Should we also include here the case where single_thread_flag = 1 ?
-	if(nfapi_mode!=2){
-		pthread_create( &proc_rxtx[0].pthread_rxtx, attr0, eNB_thread_rxtx, proc );
-		pthread_create( &proc_rxtx[1].pthread_rxtx, attr1, tx_thread, proc);
-	}
 
 
     LOG_I(PHY,"eNB->single_thread_flag:%d\n", eNB->single_thread_flag);
 
-    if (eNB->single_thread_flag==0) {
-      pthread_create( &proc_rxtx[0].pthread_rxtx, attr0, eNB_thread_rxtx, &proc_rxtx[0] );
-      pthread_create( &proc_rxtx[1].pthread_rxtx, attr1, eNB_thread_rxtx, &proc_rxtx[1] );
+    if (eNB->single_thread_flag==0 && nfapi_mode!=2) {
+      pthread_create( &proc_rxtx[0].pthread_rxtx, attr0, eNB_thread_rxtx, proc );
+      pthread_create( &proc_rxtx[1].pthread_rxtx, attr1, tx_thread, proc);
     }
     pthread_create( &proc->pthread_prach, attr_prach, eNB_thread_prach, eNB );
 #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index da4f28c499be8e02b5577b037816873ba03d36c4..578b647d96b33a479147e1678a5cd0477066380f 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -120,7 +120,8 @@ extern volatile int                    oai_exit;
 extern int emulate_rf;
 extern int numerology;
 extern int fepw;
-
+extern int single_thread_flag;
+extern clock_source_t clock_source;
 
 extern void  phy_init_RU(RU_t*);
 extern void  phy_free_RU(RU_t*);
@@ -714,6 +715,11 @@ static void* emulatedRF_thread(void* param) {
   wait_sync("emulatedRF_thread");
   while(!oai_exit){
     nanosleep(&req, (struct timespec *)NULL);
+    if(proc->emulate_rf_busy )
+    {
+      LOG_E(PHY,"rf being delayed in emulated RF\n");
+    }
+    proc->emulate_rf_busy = 1;
     pthread_mutex_lock(&proc->mutex_emulateRF);
     ++proc->instance_cnt_emulateRF;
     pthread_mutex_unlock(&proc->mutex_emulateRF);
@@ -1016,7 +1022,6 @@ void wakeup_slaves(RU_proc_t *proc) {
   wait.tv_nsec=5000000L;
   
   for (i=0;i<proc->num_slaves;i++) {
-    //printf("////////////////////calling for slave thrads\n");////////////////////////********
     RU_proc_t *slave_proc = proc->slave_proc[i];
     // wake up slave FH thread
     // lock the FH mutex and make sure the thread is ready
@@ -1252,13 +1257,14 @@ void wakeup_eNBs(RU_t *ru) {
   LOG_D(PHY,"wakeup_eNBs (num %d) for RU %d ru->eNB_top:%p\n",ru->num_eNB,ru->idx, ru->eNB_top);
 
 
-  if (ru->num_eNB==1 && ru->eNB_top!=0 && get_nprocs() <= 4) {
+  if (ru->num_eNB==1 && ru->eNB_top!=0 && (get_nprocs() <= 4 || single_thread_flag)) {
     // call eNB function directly
   
     char string[20];
     sprintf(string,"Incoming RU %d",ru->idx);
     LOG_D(PHY,"RU %d Call eNB_top\n",ru->idx);
     ru->eNB_top(eNB_list[0],ru->proc.frame_rx,ru->proc.subframe_rx,string,ru);
+    ru->proc.emulate_rf_busy = 0;
   }
   else {
 
@@ -1270,8 +1276,9 @@ void wakeup_eNBs(RU_t *ru) {
       eNB_list[i]->proc.ru_proc = &ru->proc;
       if (ru->wakeup_rxtx!=0 && ru->wakeup_rxtx(eNB_list[i],ru) < 0)
       {
-	LOG_E(PHY,"could not wakeup eNB rxtx process for subframe %d\n", ru->proc.subframe_rx);
+        LOG_E(PHY,"could not wakeup eNB rxtx process for subframe %d\n", ru->proc.subframe_rx);
       }
+      ru->proc.emulate_rf_busy = 0;
     }
   }
 }
@@ -1404,7 +1411,8 @@ void fill_rf_config(RU_t *ru, char *rf_config_file) {
   cfg->num_rb_dl=fp->N_RB_DL;
   cfg->tx_num_channels=ru->nb_tx;
   cfg->rx_num_channels=ru->nb_rx;
-  
+  cfg->clock_source=clock_source;
+
   for (i=0; i<ru->nb_tx; i++) {
     
     cfg->tx_freq[i] = (double)fp->dl_CarrierFreq;
@@ -1490,12 +1498,11 @@ int setup_RU_buffers(RU_t *ru) {
 static void* ru_stats_thread(void* param) {
 
   RU_t               *ru      = (RU_t*)param;
-
   wait_sync("ru_stats_thread");
 
   while (!oai_exit) {
      sleep(1);
-     if (opp_enabled == 1 && fepw) {
+     if (opp_enabled) {
        if (ru->feprx) print_meas(&ru->ofdm_demod_stats,"feprx",NULL,NULL);
        if (ru->feptx_ofdm) print_meas(&ru->ofdm_mod_stats,"feptx_ofdm",NULL,NULL);
        if (ru->fh_north_asynch_in) print_meas(&ru->rx_fhaul,"rx_fhaul",NULL,NULL);
@@ -1529,6 +1536,7 @@ static void* ru_thread_tx( void* param ) {
   //wait_sync("ru_thread_tx");
 
   wait_on_condition(&proc->mutex_FH1,&proc->cond_FH1,&proc->instance_cnt_FH1,"ru_thread_tx");
+  
 
   printf( "ru_thread_tx ready\n");
   while (!oai_exit) { 
@@ -1722,7 +1730,6 @@ static void* ru_thread( void* param ) {
           ru->do_prach,
           is_prach_subframe(fp, proc->frame_rx, proc->subframe_rx),
           proc->frame_rx,proc->subframe_rx);
- 
     if ((ru->do_prach>0) && (is_prach_subframe(fp, proc->frame_rx, proc->subframe_rx)==1)) {
       wakeup_prach_ru(ru);
     }
@@ -1775,7 +1782,7 @@ static void* ru_thread( void* param ) {
     if (ru->num_eNB>0) wakeup_eNBs(ru);
     
 #ifndef PHY_TX_THREAD
-    if(get_nprocs() <= 4 || ru->num_eNB==0){
+    if(get_nprocs() <= 4 || ru->num_eNB==0 || single_thread_flag){
       // do TX front-end processing if needed (precoding and/or IDFTs)
       if (ru->feptx_prec) ru->feptx_prec(ru);
       
@@ -1787,6 +1794,7 @@ static void* ru_thread( void* param ) {
         
         if (ru->fh_north_out) ru->fh_north_out(ru);
       }
+      proc->emulate_rf_busy = 0;
     }
 #else
     struct timespec time_req, time_rem;
@@ -1803,10 +1811,12 @@ static void* ru_thread( void* param ) {
 
   printf( "Exiting ru_thread \n");
 
-  if (ru->stop_rf != NULL) {
-    if (ru->stop_rf(ru) != 0)
-      LOG_E(HW,"Could not stop the RF device\n");
-    else LOG_I(PHY,"RU %d rf device stopped\n",ru->idx);
+  if (!emulate_rf){
+    if (ru->stop_rf != NULL) {
+      if (ru->stop_rf(ru) != 0)
+        LOG_E(HW,"Could not stop the RF device\n");
+      else LOG_I(PHY,"RU %d rf device stopped\n",ru->idx);
+    }
   }
 
   ru_thread_status = 0;
@@ -1872,13 +1882,13 @@ void *ru_thread_synch(void *arg) {
 
 	LOG_I(PHY,"Estimated sync_pos %d, peak_val %d => timing offset %d\n",sync_pos,peak_val,ru->rx_offset);
 	
-LOG_M_BEGIN(RU)	
-	if ((peak_val > 300000) && (sync_pos > 0)) {
-	   LOG_M("ru_sync.m","sync",(void*)&sync_corr[0],fp->samples_per_tti*5,1,2);
-	   LOG_M("ru_rx.m","rxs",&(ru->eNB_list[0]->common_vars.rxdata[0][0]),fp->samples_per_tti*10,1,1);
-	exit(-1);
-	}
-LOG_M_END
+        if (LOG_DEBUGFLAG(RU)) {	
+	  if ((peak_val > 300000) && (sync_pos > 0)) {
+	     LOG_M("ru_sync.m","sync",(void*)&sync_corr[0],fp->samples_per_tti*5,1,2);
+	     LOG_M("ru_rx.m","rxs",&(ru->eNB_list[0]->common_vars.rxdata[0][0]),fp->samples_per_tti*10,1,1);
+	  exit(-1);
+	  }
+        }
 	ru->in_synch=1;
       }
     }
@@ -2076,6 +2086,8 @@ extern void feptx_ofdm_2thread(RU_t *ru);
 extern void feptx_prec(RU_t *ru);
 extern void init_fep_thread(RU_t *ru,pthread_attr_t *attr);
 extern void init_feptx_thread(RU_t *ru,pthread_attr_t *attr);
+extern void kill_fep_thread(RU_t *ru);
+extern void kill_feptx_thread(RU_t *ru);
 
 void init_RU_proc(RU_t *ru) {
    
@@ -2183,7 +2195,7 @@ void init_RU_proc(RU_t *ru) {
   if(emulate_rf)
     pthread_create( &proc->pthread_emulateRF, attr_emulateRF, emulatedRF_thread, (void*)proc );
 
-  if (get_nprocs() > 4)
+  if (!single_thread_flag && get_nprocs() > 4)
     pthread_create( &proc->pthread_FH1, attr_FH1, ru_thread_tx, (void*)ru );
 
   if (ru->function == NGFI_RRU_IF4p5) {
@@ -2211,8 +2223,8 @@ void init_RU_proc(RU_t *ru) {
   }
 
   if (get_nprocs()> 2 && fepw) { 
-    if (ru->feprx) init_fep_thread(ru,NULL); 
-    if (ru->feptx_ofdm) init_feptx_thread(ru,NULL);
+    init_fep_thread(ru,NULL); 
+    init_feptx_thread(ru,NULL);
   } 
   if (opp_enabled == 1) pthread_create(&ru->ru_stats_thread,NULL,ru_stats_thread,(void*)ru); 
   
@@ -2223,6 +2235,13 @@ void kill_RU_proc(int inst)
   RU_t *ru = RC.ru[inst];
   RU_proc_t *proc = &ru->proc;
 
+  if (get_nprocs() > 2 && fepw) {
+      LOG_D(PHY, "killing FEP thread\n"); 
+      kill_fep_thread(ru);
+      LOG_D(PHY, "killing FEP TX thread\n"); 
+      kill_feptx_thread(ru);
+  }
+
   pthread_mutex_lock(&proc->mutex_FH);
   proc->instance_cnt_FH = 0;
   pthread_cond_signal(&proc->cond_FH);
@@ -2261,10 +2280,10 @@ void kill_RU_proc(int inst)
   pthread_cond_signal(&proc->cond_asynch_rxtx);
   pthread_mutex_unlock(&proc->mutex_asynch_rxtx);
 
-  LOG_D(PHY, "Joining pthread_FH\n");
+  /*LOG_D(PHY, "Joining pthread_FH\n");
   pthread_join(proc->pthread_FH, NULL);
   LOG_D(PHY, "Joining pthread_FHTX\n");
-  pthread_join(proc->pthread_FH1, NULL);
+  pthread_join(proc->pthread_FH1, NULL);*/
   if (ru->function == NGFI_RRU_IF4p5) {
     LOG_D(PHY, "Joining pthread_prach\n");
     pthread_join(proc->pthread_prach, NULL);
@@ -2284,28 +2303,6 @@ void kill_RU_proc(int inst)
       pthread_join(proc->pthread_asynch_rxtx, NULL);
     }
   }
-  if (get_nprocs() > 2 && fepw) {
-    if (ru->feprx) {
-      pthread_mutex_lock(&proc->mutex_fep);
-      proc->instance_cnt_fep = 0;
-      pthread_mutex_unlock(&proc->mutex_fep);
-      pthread_cond_signal(&proc->cond_fep);
-      LOG_D(PHY, "Joining pthread_fep\n");
-      pthread_join(proc->pthread_fep, NULL);
-      pthread_mutex_destroy(&proc->mutex_fep);
-      pthread_cond_destroy(&proc->cond_fep);
-    }
-    if (ru->feptx_ofdm) {
-      pthread_mutex_lock(&proc->mutex_feptx);
-      proc->instance_cnt_feptx = 0;
-      pthread_mutex_unlock(&proc->mutex_feptx);
-      pthread_cond_signal(&proc->cond_feptx);
-      LOG_D(PHY, "Joining pthread_feptx\n");
-      pthread_join(proc->pthread_feptx, NULL);
-      pthread_mutex_destroy(&proc->mutex_feptx);
-      pthread_cond_destroy(&proc->cond_feptx);
-    }
-  }
   if (opp_enabled) {
     LOG_D(PHY, "Joining ru_stats_thread\n");
     pthread_join(ru->ru_stats_thread, NULL);
@@ -2670,7 +2667,7 @@ void set_function_spec_param(RU_t *ru)
   } // switch on interface type
 }
 
-extern void RCconfig_RU(void);
+//extern void RCconfig_RU(void);
 
 void init_RU(char *rf_config_file) {
   
@@ -2841,6 +2838,24 @@ void RCconfig_RU(void) {
 	    RC.ru[j]->num_eNB                           = 0;
       for (i=0;i<RC.ru[j]->num_eNB;i++) RC.ru[j]->eNB_list[i] = RC.eNB[RUParamList.paramarray[j][RU_ENB_LIST_IDX].iptr[i]][0];     
 
+      if (config_isparamset(RUParamList.paramarray[j], RU_SDR_ADDRS)) {
+        RC.ru[j]->openair0_cfg.sdr_addrs = strdup(*(RUParamList.paramarray[j][RU_SDR_ADDRS].strptr));
+      }
+
+      if (config_isparamset(RUParamList.paramarray[j], RU_SDR_CLK_SRC)) {
+        if (strcmp(*(RUParamList.paramarray[j][RU_SDR_CLK_SRC].strptr), "internal") == 0) {
+          RC.ru[j]->openair0_cfg.clock_source = internal;
+          LOG_D(PHY, "RU clock source set as internal\n");
+        } else if (strcmp(*(RUParamList.paramarray[j][RU_SDR_CLK_SRC].strptr), "external") == 0) {
+          RC.ru[j]->openair0_cfg.clock_source = external;
+          LOG_D(PHY, "RU clock source set as external\n");
+        } else if (strcmp(*(RUParamList.paramarray[j][RU_SDR_CLK_SRC].strptr), "gpsdo") == 0) {
+          RC.ru[j]->openair0_cfg.clock_source = gpsdo;
+          LOG_D(PHY, "RU clock source set as gpsdo\n");
+        } else {
+          LOG_E(PHY, "Erroneous RU clock source in the provided configuration file: '%s'\n", *(RUParamList.paramarray[j][RU_SDR_CLK_SRC].strptr));
+        }
+      }
 
       if (strcmp(*(RUParamList.paramarray[j][RU_LOCAL_RF_IDX].strptr), "yes") == 0) {
 	if ( !(config_isparamset(RUParamList.paramarray[j],RU_LOCAL_IF_NAME_IDX)) ) {
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index 3cb9f4f0b83370a73f9d7179c98b1b88e10f8d2d..2d5f04d38680846c0b252373dbe74e6174644d16 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -107,6 +107,10 @@ unsigned char                   scope_enb_num_ue = 2;
 static pthread_t                forms_thread; //xforms
 #endif //XFORMS
 
+#ifndef ENABLE_USE_MME
+#define EPC_MODE_ENABLED 0
+#endif
+
 pthread_cond_t nfapi_sync_cond;
 pthread_mutex_t nfapi_sync_mutex;
 int nfapi_sync_var=-1; //!< protected by mutex \ref nfapi_sync_mutex
@@ -129,11 +133,11 @@ volatile int             start_UE = 0;
 #endif
 volatile int             oai_exit = 0;
 
-static clock_source_t clock_source = internal;
+clock_source_t clock_source = internal;
 static int wait_for_sync = 0;
 
 unsigned int                    mmapped_dma=0;
-int                             single_thread_flag=1;
+int                             single_thread_flag = 0;
 
 static int8_t                     threequarter_fs=0;
 
@@ -513,7 +517,7 @@ void *l2l1_task(void *arg) {
 #endif
 
 
-static void get_options(void) {
+static void get_options(unsigned int *start_msc) {
  
   int tddflag, nonbiotflag;
  
@@ -547,11 +551,9 @@ static void get_options(void) {
       set_glog(glog_level);
   }
   if (start_telnetsrv) {
-     load_module_shlib("telnetsrv",NULL,0);
+     load_module_shlib("telnetsrv",NULL,0,NULL);
   }
 
-
-
   if ( !(CONFIG_ISFLAGSET(CONFIG_ABORT)) ) {
       memset((void*)&RC,0,sizeof(RC));
       /* Read RC configuration file */
@@ -787,7 +789,7 @@ int stop_L1L2(module_id_t enb_id)
   oai_exit = 1;
 
   if (!RC.ru) {
-    LOG_F(ENB_APP, "no RU configured\n");
+    LOG_UI(ENB_APP, "no RU configured\n");
     return -1;
   }
 
@@ -900,7 +902,16 @@ static  void wait_nfapi_init(char *thread_name) {
   
   pthread_mutex_unlock(&nfapi_sync_mutex);
   
+  /*
+   * Raphael Defosseux: temporary workaround for CI
+   * -- Repeating the message thrice to make sure
+   * -- it is present during flush.
+   */
+  printf( "NFAPI: got sync (%s)\n", thread_name);
   printf( "NFAPI: got sync (%s)\n", thread_name);
+  printf( "NFAPI: got sync (%s)\n", thread_name);
+  fflush(stdout);
+  fflush(stderr);
 }
 
 int main( int argc, char **argv )
@@ -915,6 +926,7 @@ int main( int argc, char **argv )
 #if defined (XFORMS)
   int ret;
 #endif
+  unsigned int start_msc=0;
 
   if ( load_configmodule(argc,argv) == NULL) {
     exit_fun("[SOFTMODEM] Error, configuration module init failed\n");
@@ -932,7 +944,7 @@ int main( int argc, char **argv )
 
   printf("Reading in command-line options\n");
 
-  get_options (); 
+  get_options (&start_msc);
   if (CONFIG_ISFLAGSET(CONFIG_ABORT) ) {
       fprintf(stderr,"Getting configuration failed\n");
       exit(-1);
@@ -957,22 +969,19 @@ int main( int argc, char **argv )
 
 #if defined(ENABLE_ITTI)
 
-  printf("ITTI init\n");
+  printf("ITTI init, useMME: %i\n" ,EPC_MODE_ENABLED);
+
   itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info);
 
   // initialize mscgen log after ITTI
+  if (start_msc) {
+     load_module_shlib("msc",NULL,0,&msc_interface);
+  }
   MSC_INIT(MSC_E_UTRAN, THREAD_MAX+TASK_MAX);
 #endif
 
   if (opt_type != OPT_NONE) {
-    radio_type_t radio_type;
-
-    if (frame_parms[0]->frame_type == FDD)
-      radio_type = RADIO_TYPE_FDD;
-    else
-      radio_type = RADIO_TYPE_TDD;
-
-    if (init_opt(in_path, in_ip, NULL, radio_type) == -1)
+    if (init_opt(in_path, in_ip) == -1)
       LOG_E(OPT,"failed to run OPT \n");
   }
 
@@ -1121,13 +1130,6 @@ int main( int argc, char **argv )
   
   rt_sleep_ns(10*100000000ULL);
 
-  if (nfapi_mode) {
-
-    printf("NFAPI*** - mutex and cond created - will block shortly for completion of PNF connection\n");
-    pthread_cond_init(&sync_cond,NULL);
-    pthread_mutex_init(&sync_mutex, NULL);
-  }
-  
   if (nfapi_mode)
   {
     printf("NFAPI*** - mutex and cond created - will block shortly for completion of PNF connection\n");
diff --git a/targets/RT/USER/lte-softmodem.h b/targets/RT/USER/lte-softmodem.h
index d8689b9ffb79447de6e6a536879b5424e0758f34..4728dce18ac6a1eb1ad05d9bd0116b6a1b2964d7 100644
--- a/targets/RT/USER/lte-softmodem.h
+++ b/targets/RT/USER/lte-softmodem.h
@@ -65,7 +65,7 @@
 #define CONFIG_HLP_UELOOP        "get softmodem (UE) to loop through memory instead of acquiring from HW\n"
 #define CONFIG_HLP_PHYTST        "test UE phy layer, mac disabled\n"
 #define CONFIG_HLP_DMAMAP        "sets flag for improved EXMIMO UE performance\n"  
-#define CONFIG_HLP_EXCCLK        "tells hardware to use an external clock reference\n"
+#define CONFIG_HLP_CLK           "tells hardware to use a clock reference (0:internal, 1:external, 2:gpsdo)\n"
 #define CONFIG_HLP_USIM          "use XOR autentication algo in case of test usim mode\n" 
 #define CONFIG_HLP_NOSNGLT       "Disables single-thread mode in lte-softmodem\n" 
 #define CONFIG_HLP_TADV          "Set timing_advance\n"
@@ -161,9 +161,9 @@
 {"phy-test",                CONFIG_HLP_PHYTST,      PARAMFLAG_BOOL,         iptr:&phy_test,                     defintval:0,                    TYPE_INT,       0},                     \
 {"usim-test",               CONFIG_HLP_USIM,        PARAMFLAG_BOOL,         u8ptr:&usim_test,                   defintval:0,                    TYPE_UINT8,     0},                     \
 {"mmapped-dma",             CONFIG_HLP_DMAMAP,      PARAMFLAG_BOOL,         uptr:&mmapped_dma,                  defintval:0,                    TYPE_INT,       0},                     \
-{"external-clock",          CONFIG_HLP_EXCCLK,      PARAMFLAG_BOOL,         uptr:&clock_source,                 defintval:0,                    TYPE_INT,       0},                     \
+{"clock",                   CONFIG_HLP_CLK,         0,                      uptr:&clock_source,                 defintval:0,                    TYPE_UINT,      0},                     \
 {"wait-for-sync",           NULL,                   PARAMFLAG_BOOL,         iptr:&wait_for_sync,                defintval:0,                    TYPE_INT,       0},                     \
-{"single-thread-disable",   CONFIG_HLP_NOSNGLT,     PARAMFLAG_BOOL,         iptr:&single_thread_flag,           defintval:1,                    TYPE_INT,       0},                     \
+{"single-thread-enable",    CONFIG_HLP_NOSNGLT,     PARAMFLAG_BOOL,         iptr:&single_thread_flag,           defintval:0,                    TYPE_INT,       0},                     \
 {"threadIQ",                NULL,                   0,                      iptr:&(threads.iq),                 defintval:1,                    TYPE_INT,       0},                     \
 {"threadOneSubframe",       NULL,                   0,                      iptr:&(threads.one),                defintval:1,                    TYPE_INT,       0},                     \
 {"threadTwoSubframe",       NULL,                   0,                      iptr:&(threads.two),                defintval:1,                    TYPE_INT,       0},                     \
@@ -192,8 +192,9 @@
 }
 
 #define CONFIG_HLP_FLOG          "Enable online log \n"
-#define CONFIG_HLP_LOGL          "Set the global log level, valide options: (9:trace, 8/7:debug, 6:info, 4:warn, 3:error)\n"
+#define CONFIG_HLP_LOGL          "Set the global log level, valide options: (4:trace, 3:debug, 2:info, 1:warn, (0:error))\n"
 #define CONFIG_HLP_TELN          "Start embedded telnet server \n"
+#define CONFIG_HLP_MSC           "Enable the MSC tracing utility \n"
 /*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 /*                                            command line parameters for LOG utility                                                                                        */
 /*   optname                     helpstr                paramflags                      XXXptr                  defXXXval                            type           numelt   */
@@ -202,6 +203,7 @@
 {"R" ,  		  	 CONFIG_HLP_FLOG,	0,                uptr:&online_log_messages,		defintval:1,			   TYPE_INT,	  0},			   \
 {"g" ,  		  	 CONFIG_HLP_LOGL,	0,		  uptr:&glog_level,			defintval:0,			   TYPE_UINT,     0},			   \
 {"telnetsrv",    		 CONFIG_HLP_TELN,	PARAMFLAG_BOOL,	  uptr:&start_telnetsrv,		defintval:0,			   TYPE_UINT,     0},			   \
+{"msc",    		         CONFIG_HLP_MSC,	PARAMFLAG_BOOL,	  uptr:start_msc,		        defintval:0,			   TYPE_UINT,     0},	                   \
 }
 #define CMDLINE_ONLINELOG_IDX     0 
 #define CMDLINE_GLOGLEVEL_IDX     1
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index ab84249f9fe660bf0af91c6434396f4519da00dd..66107d79a42c5e88b613451c1c5f4458ea2c48d4 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -446,7 +446,6 @@ static void *UE_thread_synch(void *arg)
   int freq_offset=0;
   char threadname[128];
 
-  UE->is_synchronized = 0;
   printf("UE_thread_sync in with PHY_vars_UE %p\n",arg);
 
   cpu_set_t cpuset;
@@ -522,11 +521,6 @@ static void *UE_thread_synch(void *arg)
 
   printf("Started device, unlocked sync_mutex (UE_sync_thread)\n");
 
-  if (UE->rfdevice.trx_start_func(&UE->rfdevice) != 0 ) {
-    LOG_E(HW,"Could not start the device\n");
-    oai_exit=1;
-  }
-
   while (oai_exit==0) {
     AssertFatal ( 0== pthread_mutex_lock(&UE->proc.mutex_synch), "");
     while (UE->proc.instance_cnt_synch < 0)
@@ -755,7 +749,6 @@ static void *UE_thread_rxn_txnp4(void *arg) {
   UE_rxtx_proc_t *proc = rtd->proc;
   PHY_VARS_UE    *UE   = rtd->UE;
 
-  proc->instance_cnt_rxtx=-1;
   proc->subframe_rx=proc->sub_frame_start;
 
   char threadname[256];
@@ -1457,20 +1450,25 @@ void *UE_thread(void *arg) {
   int sub_frame=-1;
   //int cumulated_shift=0;
 
+  if (UE->rfdevice.trx_start_func(&UE->rfdevice) != 0 ) {
+    LOG_E(HW,"Could not start the device\n");
+    oai_exit=1;
+  }
 
   while (!oai_exit) {
+#if BASIC_SIMULATOR
+    while (!(UE->proc.instance_cnt_synch < 0)) {
+      printf("ue sync not ready\n");
+      usleep(500*1000);
+    }
+#endif
+
     AssertFatal ( 0== pthread_mutex_lock(&UE->proc.mutex_synch), "");
     int instance_cnt_synch = UE->proc.instance_cnt_synch;
     int is_synchronized    = UE->is_synchronized;
     AssertFatal ( 0== pthread_mutex_unlock(&UE->proc.mutex_synch), "");
 
     if (is_synchronized == 0) {
-#if BASIC_SIMULATOR
-      while (!((instance_cnt_synch = UE->proc.instance_cnt_synch) < 0)) {
-        printf("ue sync not ready\n");
-        usleep(500*1000);
-      }
-#endif
       if (instance_cnt_synch < 0) {  // we can invoke the synch
 	// grab 10 ms of signal and wakeup synch thread
 	for (int i=0; i<UE->frame_parms.nb_antennas_rx; i++)
@@ -1661,12 +1659,7 @@ void *UE_thread(void *arg) {
 
                     proc->instance_cnt_rxtx++;
                     LOG_D( PHY, "[SCHED][UE %d] UE RX instance_cnt_rxtx %d subframe %d !!\n", UE->Mod_id, proc->instance_cnt_rxtx,proc->subframe_rx);
-                    if (proc->instance_cnt_rxtx == 0) {
-                      if (pthread_cond_signal(&proc->cond_rxtx) != 0) {
-                        LOG_E( PHY, "[SCHED][UE %d] ERROR pthread_cond_signal for UE RX thread\n", UE->Mod_id);
-                        exit_fun("nothing to add");
-                      }
-                    } else {
+                    if (proc->instance_cnt_rxtx != 0) {
                       LOG_E( PHY, "[SCHED][UE %d] UE RX thread busy (IC %d)!!\n", UE->Mod_id, proc->instance_cnt_rxtx);
                       if (proc->instance_cnt_rxtx > 2)
                         exit_fun("instance_cnt_rxtx > 2");
@@ -1717,6 +1710,8 @@ void init_UE_threads(int inst) {
 
   pthread_mutex_init(&UE->proc.mutex_synch,NULL);
   pthread_cond_init(&UE->proc.cond_synch,NULL);
+  UE->proc.instance_cnt_synch = -1;
+  UE->is_synchronized = 0;
 
   // the threads are not yet active, therefore access is allowed without locking
   int nb_threads=RX_NB_TH;
@@ -1728,6 +1723,7 @@ void init_UE_threads(int inst) {
 
     pthread_mutex_init(&UE->proc.proc_rxtx[i].mutex_rxtx,NULL);
     pthread_cond_init(&UE->proc.proc_rxtx[i].cond_rxtx,NULL);
+    UE->proc.proc_rxtx[i].instance_cnt_rxtx = -1;
     UE->proc.proc_rxtx[i].sub_frame_start=i;
     UE->proc.proc_rxtx[i].sub_frame_step=nb_threads;
     printf("Init_UE_threads rtd %d proc %d nb_threads %d i %d\n",rtd->proc->sub_frame_start, UE->proc.proc_rxtx[i].sub_frame_start,nb_threads, i);
diff --git a/targets/RT/USER/lte-uesoftmodem.c b/targets/RT/USER/lte-uesoftmodem.c
index 90503409187ca5d934f60a356879d0a1143d9ff3..2efcb496ac1ba8d399971bea9ff8486715885284 100644
--- a/targets/RT/USER/lte-uesoftmodem.c
+++ b/targets/RT/USER/lte-uesoftmodem.c
@@ -135,7 +135,7 @@ volatile int             start_UE = 0;
 #endif
 volatile int             oai_exit = 0;
 
-static clock_source_t clock_source = internal;
+clock_source_t clock_source = internal;
 static int wait_for_sync = 0;
 
 unsigned int                    mmapped_dma=0;
@@ -470,7 +470,7 @@ void *l2l1_task(void *arg) {
 
 extern int16_t dlsch_demod_shift;
 
-static void get_options(void) {
+static void get_options(unsigned int *start_msc) {
   int CC_id;
   int tddflag, nonbiotflag;
   char *loopfile=NULL;
@@ -505,7 +505,7 @@ static void get_options(void) {
       set_glog(glog_level);
   }
   if (start_telnetsrv) {
-     load_module_shlib("telnetsrv",NULL,0);
+     load_module_shlib("telnetsrv",NULL,0,NULL);
   }
 
   paramdef_t cmdline_uemodeparams[] =CMDLINE_UEMODEPARAMS_DESC;
@@ -770,6 +770,7 @@ int main( int argc, char **argv )
 
   int CC_id;
   uint8_t  abstraction_flag=0;
+  unsigned int start_msc=0;
 
   // Default value for the number of UEs. It will hold,
   // if not changed from the command line option --num-ues
@@ -797,7 +798,7 @@ int main( int argc, char **argv )
   printf("Reading in command-line options\n");
 
   for (int i=0;i<MAX_NUM_CCs;i++) tx_max_power[i]=23; 
-  get_options ();
+  get_options (&start_msc);
 
 
   printf("Running with %d UE instances\n",NB_UE_INST);
@@ -830,21 +831,6 @@ int main( int argc, char **argv )
   //randominit (0);
   set_taus_seed (0);
 
-
-    set_log(HW,      OAILOG_DEBUG,   1);
-    set_log(PHY,     OAILOG_INFO,    1);
-    set_log(MAC,     OAILOG_INFO,    1);
-    set_log(RLC,     OAILOG_INFO,    1);
-    set_log(PDCP,    OAILOG_INFO,    1);
-    set_log(OTG,     OAILOG_INFO,    1);
-    set_log(RRC,     OAILOG_INFO,    1);
-#if defined(ENABLE_ITTI)
-    set_log(SIM,     OAILOG_INFO,   1);
-# if defined(ENABLE_USE_MME)
-    set_log(NAS,     OAILOG_INFO,    1);
-# endif
-#endif
-
   cpuf=get_cpu_freq_GHz();
 
   pthread_cond_init(&sync_cond,NULL);
@@ -858,18 +844,14 @@ int main( int argc, char **argv )
   itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info);
 
   // initialize mscgen log after ITTI
+  if (start_msc) {
+     load_module_shlib("msc",NULL,0,&msc_interface);
+  }
   MSC_INIT(MSC_E_UTRAN, THREAD_MAX+TASK_MAX);
 #endif
 
   if (opt_type != OPT_NONE) {
-    radio_type_t radio_type;
-
-    if (frame_parms[0]->frame_type == FDD)
-      radio_type = RADIO_TYPE_FDD;
-    else
-      radio_type = RADIO_TYPE_TDD;
-
-    if (init_opt(in_path, in_ip, NULL, radio_type) == -1)
+    if (init_opt(in_path, in_ip) == -1)
       LOG_E(OPT,"failed to run OPT \n");
   }