diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000..84a85d033a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,34 @@
+# customization files
+build-custom.gradle
+build-custom-buildscript.gradle
+build-custom-allprojects.gradle
+
+# eclipse parts
+bin/
+gen/
+src-gen/
+.metadata
+.lck
+.classpath
+.project
+.settings/
+
+# intellij parts
+*.iml
+.idea/
+*.ipr
+*.iws
+
+# gradle parts
+.gradle/
+
+# Build artifacts at all
+*.class
+build/
+*.jar
+*.log
+*.bak
+*.zip
+#*.json
+#!sechub.json
+
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000000..e56c6e7403
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,40 @@
+
+# Contributing
+
+This document explains how to contribute to this project.
+By contributing you will agree that your contribution will be put under the same license as this repository.
+
+## Table of Contents
+- Communication
+- Quick start
+- Contributions
+- Quality
+
+## Communication
+For communication please respect our [FOSS Code of Conduct](https://github.com/Daimler/daimler-foss/blob/master/CODE_OF_CONDUCT.md).
+
+The following communication channels exist for this project:
+- Github for reporting and claiming issues: https://github.com/daimler/sechub/issues
+
+Transparent and open communication is important to us. Thus, all project-related communication should happen only through these channels and in English. Issue-related communication should happen within the concerned issue.
+
+
+## Quick Start
+Please look at [First steps Wiki page](https://github.com/Daimler/sechub/wiki/First-steps)
+
+## Contributions
+If you would like to contribute code you can do so through Daimler GitHub by forking the repository and sending a pull request.
+
+When submitting code, please make every effort to follow existing conventions and style in order to keep the code as readable as possible.
+
+If you are new to contributing in Github, [First Contributions](https://github.com/firstcontributions/first-contributions) might be a good starting point.
+
+Before you can contribute, you will need to sign our [CLA](https://github.com/Daimler/daimler-foss/blob/master/CONTRIBUTORS_LICENSE_AGREEMENT.md) and send the signed CLA to foss@daimler.com
+
+## Quality
+Please ensure that for all contributions, the corresponding documentation is in-sync and up-to-date. All documentation should be in English language.
+
+Please look into [Quality Wiki page](https://github.com/Daimler/sechub/wiki/Quality) for more details.
+
+We assume that for every non-trivial contribution, the project has been built and tested prior to the contribution.
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000..661a4dcf4e
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 Daimler TSS GmbH
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000..8e41d71ee2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,38 @@
+
+# SecHub
+
+
+## Indented Usage
+
+SecHub represents a mechanism to integrate diverse security products like
+- static code analysis tools
+- web scanners
+- infrastructure scanners
+- ... maybe more in future
+
+by just using one simple API/client
+
+## Installation
+
+Please visit for detailed information.
+
+## Contributing
+
+We welcome any contributions.
+If you want to contribute to this project, please read the [contributing guide](CONTRIBUTING.md).
+
+## Code of Conduct
+
+Please read our [Code of Conduct](https://github.com/Daimler/daimler-foss/blob/master/CODE_OF_CONDUCT.md) as it is our base for interaction.
+
+## License
+
+This project is licensed under the [MIT LICENSE](LICENSE).
+
+## Provider Information
+
+Please visit for information on the provider.
+
+Notice: Before you use the program in productive use, please take all necessary precautions,
+e.g. testing and verifying the program with regard to your specific use.
+The program was tested solely for our own use cases, which might differ from yours.
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000000..53d4298b25
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,6 @@
+
+It is Daimler’s goal to offer its customers the best and most secure products such as connected cars and other services. Daimler values the work of security researchers and whitehat hackers who spend time and effort helping us to achieve this goal.
+
+For further Information please visit our [Vulnerability Reporting Policy](https://www.daimler.com/whitehat/)
+
+
diff --git a/apply-headers.sh b/apply-headers.sh
new file mode 100755
index 0000000000..ec99d9cee9
--- /dev/null
+++ b/apply-headers.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+# SPDX-License-Identifier: MIT
+
+RED='\033[0;31m'
+LIGHT_RED='\033[1;31m'
+LIGHT_GREEN='\033[1;32m'
+BROWN='\033[0;33m'
+NC='\033[0m' # No Color
+
+
+#
+# apply spdx template to given file type
+# param 1: fileending (e.g "yaml")
+# param 2: template filename, will use templates inside sechub-other/spdx/template/$filename
+function applySPDXonFirstLine {
+ fileEnding=$1
+ spxTemplate=$2
+
+ echo -e "${LIGHT_GREEN}$Scanning '*.$fileEnding' files${NC}"
+ find -iname \*.$fileEnding | while read file ; do
+ if [[ -d $file ]]; then
+ echo -e "${BROWN}$file${NC} - ${LIGHT_GREEN}ignored because directory.${NC}"
+ elif ! grep -q SPDX-License $file
+ then
+ echo -e "${BROWN}$file${NC} - ${LIGHT_GREEN}appending copyright.${NC}"
+ cat sechub-other/spdx/template/$spxTemplate $file >$file.new && mv $file.new $file
+ fi
+
+ done
+}
+
+function infoAboutManualParts {
+ echo -e "${LIGHT_GREEN}Manual parts:${NC}"
+ echo -e "${BROWN}- Bash files must be handled manual${NC}"
+ echo "Reason?"
+ echo " This must be done in second line because of the #! string"
+ echo " Because apply-copyright-info.sh itself is a bash script and"
+ echo " also having only a small amount of bash scripts, we do not"
+ echo " automate this, so developers must add spdx info manually."
+ echo "Why second line?"
+ echo " This is the exact way done by linux kernel project and so a good "
+ echo " approach, see https://lwn.net/Articles/739183/ :"
+ echo -e "${BROWN} \"... For kernel source files, the decision was made that the SPDX tag"
+ echo -e " should appear as the first line in the file (or the second line for"
+ echo -e " scripts where the first line must be the #! string)...\"${NC}"
+
+}
+
+function infoAboutIgnoredParts {
+ echo -e "${LIGHT_GREEN}Ignored parts:${NC}"
+ echo -e "${BROWN}- json files must be ignored${NC}"
+ echo "Reason?"
+ echo -e " ${LIGHT_RED}Comments are not part of official syntax${NC}, see https://www.json.org/json-en.html"
+ echo " So many tools and libraries often have problems with javascript comments"
+ echo " inside JSON. Having declared MIT license also everybody is allowed to remove"
+ echo " an SPDX enry without licence conflict ... so we decided to add no spdx"
+ echo " entries in json files."
+
+}
+
+function startAutoApply {
+
+ applySPDXonFirstLine "java" "spdx_template_doubleslash.txt"
+ applySPDXonFirstLine "groovy" "spdx_template_doubleslash.txt"
+ applySPDXonFirstLine "gradle" "spdx_template_doubleslash.txt"
+ applySPDXonFirstLine "go" "spdx_template_doubleslash.txt"
+ applySPDXonFirstLine "adoc" "spdx_template_doubleslash.txt"
+
+ # for plantuml we assume these files are starting with a @startuml
+ # so we add as first enry the //
+ # if there is a need to change this in a file where no @startuml is
+ # used, change manual to ' at the beginning and commit change manually
+ applySPDXonFirstLine "puml" "spdx_template_doubleslash.txt"
+ applySPDXonFirstLine "plantuml" "spdx_template_doubleslash.txt"
+
+ applySPDXonFirstLine "properties" "spdx_template_hash.txt"
+
+ applySPDXonFirstLine "yaml" "spdx_template_hash.txt"
+ applySPDXonFirstLine "yml" "spdx_template_hash.txt"
+
+ applySPDXonFirstLine "md" "spdx_template_md.txt"
+}
+
+echo "*******************************"
+echo "* Apply copyright information *"
+echo "*******************************"
+echo
+infoAboutManualParts
+infoAboutIgnoredParts
+echo -e "${LIGHT_GREEN}Automated parts:${NC}"
+echo "When you continue next step the automation will start:"
+
+read -n 1 -p "Continue ?(y/n):" continueSelect
+
+echo
+echo "--------------------------------------------"
+echo "Start applying missing copyright information"
+echo "--------------------------------------------"
+echo
+if [ "$continueSelect" == "y" ]; then
+ startAutoApply
+else
+ echo "Canceled"
+fi
+
diff --git a/build-eclipse.gradle b/build-eclipse.gradle
new file mode 100644
index 0000000000..f1461d6405
--- /dev/null
+++ b/build-eclipse.gradle
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: MIT
+/* ============================================================================
+ This file contains the configurations for
+ Eclipse settings
+ ============================================================================
+
+ Included from: "${rootProject.projectDir}/build.gradle"
+ ============================================================================
+ */
+
+ /* ensure eclipse source folders are always created, even when not inside GIT */
+ def eclipseJavaSourceFolders=[
+ 'src/main/java',
+ 'src/main/resources',
+ 'src/test/java',
+ 'src/test/resources'
+ ];
+
+ subprojects {
+ if (! projectType.eclipseProjects.contains(project)){
+ return;
+ }
+
+ apply plugin: 'eclipse'
+
+ if (! projectType.javaProjects.contains(project)){
+ return;
+ }
+ tasks.eclipse.dependsOn << {
+ if (projectType.javaProjects.contains(project)){
+ for (String sourceFolder: eclipseJavaSourceFolders){
+ def resourceDir = new File(project.projectDir, sourceFolder)
+ if( !resourceDir.exists() && ! resourceDir.mkdirs() ) {
+ logger.info("Not able to create eclipse resource dir: %1",resourceDir);
+ }
+ }
+ }
+ }
+
+
+ /* To have javadocs in eclipse added - where no source are available - we need these lines:
+ * see https://docs.gradle.org/current/dsl/org.gradle.plugins.ide.eclipse.model.EclipseClasspath.html
+ */
+ eclipse {
+ classpath {
+ downloadSources = true // default: true
+ downloadJavadoc = true // default: false
+ }
+
+ }
+
+
+
+ /* setup eclipse with project encoding as UTF-8 (for editors) */
+ eclipseJdt.doLast {
+ if (projectType.javaProjects.contains(project)){
+ File f = file('.settings/org.eclipse.core.resources.prefs')
+ f.write('eclipse.preferences.version=1\n')
+ f.append('encoding/=utf-8')
+ }
+ }
+
+}
diff --git a/build-java.gradle b/build-java.gradle
new file mode 100644
index 0000000000..8ef60c6e18
--- /dev/null
+++ b/build-java.gradle
@@ -0,0 +1,80 @@
+// SPDX-License-Identifier: MIT
+/* ============================================================================
+ This file contains the configurations for
+ Java settings
+ ============================================================================
+
+ Included from: "${rootProject.projectDir}/build.gradle"
+ ============================================================================
+ */
+
+if (JavaVersion.current().isJava8Compatible()) {
+ allprojects {
+ tasks.withType(Javadoc) {
+ // turn off doclint
+ options.addStringOption('Xdoclint:none', '-quiet')
+ enabled = false
+ }
+ }
+}
+subprojects{
+
+ if (! projectType.javaProjects.contains(project)){
+ return;
+ }
+
+ apply plugin: 'java'
+
+ /* Setup UTF-8 for compile AND test compilation*/
+ [ compileJava, compileTestJava ]*.options*.encoding = 'UTF-8'
+
+ sourceCompatibility = '1.8'
+ targetCompatibility = '1.8'
+
+
+ def wireMockHttpPortValue = 8180;
+ def wireMockHttpsPortValue = 8143;
+
+ /* Per default GRADLE stops the build if one single test fails. We want to have all tests executed. */
+ test {
+ ignoreFailures = true
+
+ def wireMockHttpPortProperty="sechub.test.wiremock.http_port";
+ if ( project.hasProperty(wireMockHttpPortProperty)){
+ wireMockHttpPortValue = project.getProperty(wireMockHttpPortProperty)
+ }
+ def wireMockHttpsPortProperty="sechub.test.wiremock.https_port";
+ if ( project.hasProperty(wireMockHttpsPortProperty)){
+ wireMockHttpsPortValue = project.getProperty(wireMockHttpsPortProperty)
+ }
+
+ environment 'SECHUB_TEST_WIREMOCK_HTTP_PORT', "$wireMockHttpPortValue"
+ environment 'SECHUB_TEST_WIREMOCK_HTTPS_PORT', "$wireMockHttpsPortValue"
+
+ }
+
+ /**
+ * Task to create source jars
+ */
+ task sourcesJar(type: Jar, dependsOn:classes) {
+ classifier = 'sources'
+ from sourceSets.main.allSource
+ }
+
+ /**
+ * Task to create javadoc jars
+ */
+ task javadocJar(type: Jar, dependsOn:javadoc) {
+ classifier = 'javadoc'
+ from javadoc.destinationDir
+ }
+
+ /**
+ * Define artifacts
+ */
+ artifacts {
+ archives sourcesJar
+ archives javadocJar
+ }
+
+}
\ No newline at end of file
diff --git a/build-maven.gradle b/build-maven.gradle
new file mode 100644
index 0000000000..2dbbf56ccd
--- /dev/null
+++ b/build-maven.gradle
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: MIT
+/* ============================================================================
+ This file contains the configurations for
+ Maven settings
+ ============================================================================
+
+ Included from: "${rootProject.projectDir}/build.gradle"
+ ============================================================================
+ */
+
+subprojects {
+
+ apply plugin: 'maven'
+ apply plugin: 'maven-publish'
+
+ group = "com.daimler.sechub"
+ /* Continous integration part - use build number in version when 'ci.buildNumber' is set*/
+ def buildNr = System.getenv('ci.buildNumber')
+ if (buildNr != null && ! buildNr.isEmpty()){
+ version= version + "_"+buildNr
+ }
+
+}
\ No newline at end of file
diff --git a/build-spring.gradle b/build-spring.gradle
new file mode 100644
index 0000000000..56a9c4e0db
--- /dev/null
+++ b/build-spring.gradle
@@ -0,0 +1,82 @@
+// SPDX-License-Identifier: MIT
+
+subprojects {
+
+ if (! projectType.springBootProjects.contains(project)){
+ return;
+ }
+
+
+ logger.info("found spring boot relevant project:$project")
+ apply plugin: "org.springframework.boot"
+ // see https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide
+ apply plugin: 'io.spring.dependency-management'
+
+ dependencies {
+
+ testCompile(library.springboot_starter_test)
+ compile(library.springboot_starter_json)
+
+// only when using JDK >=10:
+// compile(library.jdk_missing_jaxb_api)
+// compile(library.jdk_missing_activation)
+
+ if (projectType.springBootAdapterProjects.contains(project)){
+ // next line: compile only, because spring boot does add android-json on test compile as lightweight imp
+ //compile(library.openjson)
+
+ /* REST */
+ compile(library.jackson_JDK8)
+ compile(library.springboot_starter_web)
+
+
+ if (! project.name.equals('sechub-adapter')){
+ compile project(':sechub-adapter')
+ }
+
+ testCompile library.wiremock
+ testCompile project(':sechub-testframework')
+
+ }
+
+ if (projectType.springBootSecHubServerProjects.contains(project)){
+ compile(library.springboot_starter_web)
+ testCompile project(':sechub-testframework')
+
+ /* when not the kernel project we add kernel testframework as test dependency */
+ if (! project.name.equals('sechub-shared-kernel')){
+ testCompile project(':sechub-shared-kernel-testframework')
+ }
+
+ /* REST */
+ compile(library.jackson_JDK8)
+
+ /* database */
+ compile(library.database_postgres)
+ compile(library.database_h2)
+ compile(library.springboot_starter_data_jpa)
+ //compile(library.springboot_starter_actuator)
+
+ /* security */
+ compile(library.springboot_starter_security)
+ testCompile(library.springframework_security_test)
+
+ /* develop */
+ // currently deactivated: compile(library.springboot_devtoolssf)
+ }
+ if (projectType.springDocProjects.contains(project)){
+ compile(library.springboot_starter_web)
+ }
+ if (project.name.equals('sechub-server')){
+ bootJar.enabled = true
+ bootRun.enabled = true
+ springBoot.buildInfo() // create build.properties in META-INF
+ // println ("boot jar enabled for $project")
+ }else{
+ bootJar.enabled = false // https://spring.io/blog/2017/04/05/spring-boot-s-new-gradle-plugin
+ bootRun.enabled = false
+ //println ("boot jar NOT enabled for $project.name")
+ jar.enabled = true
+ }
+ }
+}
diff --git a/build-versioning.gradle b/build-versioning.gradle
new file mode 100644
index 0000000000..0322503d55
--- /dev/null
+++ b/build-versioning.gradle
@@ -0,0 +1,175 @@
+// SPDX-License-Identifier: MIT
+import groovy.time.TimeCategory
+import groovy.time.TimeDuration
+
+/* ============================================================================
+ This file contains tasks doing versioining
+ Also 'buildVersionFiles' is executed for EVERY gradle call, which is
+ necessary to have allways exact same version in scope, even when calling
+ multiple times. As long as code does not change it will be same vesion...
+ ============================================================================
+
+ Included from: "${rootProject.projectDir}/build.gradle"
+ ============================================================================
+ */
+
+/*
+ * We do always build the files. See description in headline comment.
+ */
+buildVersionFiles()
+
+allprojects{
+ // normal gradle build is for server so we use server image version
+ // go client uses generated version.go file for runtime info
+ project.version=VersionData.getServerVersion()
+}
+
+
+def buildVersionFiles(){
+ println("BUILD versioning")
+ def start = new Date()
+ // See more details about versioning definition in issue SECHUB-172
+ // This file contains some logic for calculation of the version number
+
+ def gitTags = git.tag.list()
+
+ def commitTags = gitTags.findAll { it.commit == git.head()}
+ def versionCommitTags = commitTags.findAll {it.name.startsWith("v")}
+
+ // we got vX.Y.Z-server and vX.Y.Z-client tags
+ def serverVersionCommitTag = versionCommitTags.find{ it.name.contains("-server") }
+ def clientVersionCommitTag = versionCommitTags.find{ it.name.contains("-client") }
+
+ def unstagedChanges = git.status().unstaged
+ def stagedChanges = git.status().staged
+
+ def noUnstagedChanges = unstagedChanges.getAllChanges().isEmpty()
+ def noStagedChanges = stagedChanges.getAllChanges().isEmpty()
+ def hasChanged = !noUnstagedChanges || !noStagedChanges
+ def buildNumber= getBuildNr()
+
+ // ------------------------
+ // - Client
+ // ------------------------
+
+ // write version code for go client
+ String clientGoVersionTemplate = new File('./sechub-cli/src/daimler.com/sechub/cli/version.go.template').getText('UTF-8')
+ String clientVersion = buildVersionString(clientVersionCommitTag, hasChanged,buildNumber)
+ String clientGoVersionCode = clientGoVersionTemplate.replaceAll("__version__",clientVersion)
+ def clientVersionFile = new File('./sechub-cli/src/daimler.com/sechub/cli/version.go')
+ clientVersionFile.write(clientGoVersionCode)
+
+ /* write version info also as asciidoc file*/
+ def clientVersionAsciiDocFile = new File('./sechub-doc/src/docs/asciidoc/documents/gen/client-version.adoc')
+ clientVersionAsciiDocFile.write("// SPDX-License-Identifier: MIT\n"+clientVersion)
+
+ // ------------------------
+ // - Server
+ // ------------------------
+ def serverVersion = buildVersionString(serverVersionCommitTag, hasChanged,buildNumber)
+ /* write version info also as asciidoc file*/
+ def serverVersionAsciiDocFile = new File('./sechub-doc/src/docs/asciidoc/documents/gen/server-version.adoc')
+ serverVersionAsciiDocFile.write("// SPDX-License-Identifier: MIT\n"+serverVersion)
+
+ def reducedServerVersion = simplifiedVersion(serverVersion);
+ def reducedClientVersion = simplifiedVersion(clientVersion);
+
+ /* we use a simplified version for build artifacts-reason:
+ * there were multiple problems. E.g. a user downloading
+ * a client in version 1.0.0 does not want a folder called 1.0.0-b75..
+ */
+ VersionData.setServerVersion(reducedServerVersion);
+ VersionData.setClientVersion(reducedClientVersion);
+
+ def stop = new Date()
+
+ TimeDuration td = TimeCategory.minus( stop, start )
+ println("- Server :"+VersionData.getServerVersion()+" ["+serverVersion+"]")
+ println("- Client :"+VersionData.getClientVersion()+" ["+clientVersion+"]")
+ println("- Time elapsed for versioning:"+td)
+}
+
+/*
+ * Simplifies given version string . e.g. 0.4.1-b74 will be reduced to 0.4.1
+ */
+def simplifiedVersion(String fullVersion){
+ if (fullVersion==null){
+ return "0.0.0";
+ }
+ int index = fullVersion.indexOf('-');
+ if (index==-1){
+ return fullVersion;
+ }
+ return fullVersion.substring(0,index);
+}
+
+/**
+ * Builds version string. When commits are dirty they will be marked addtionally
+ * with "-dirty-$timestamp" so its clear there has been changes. commits having
+ * a dedicated version tag will lead to reduced version info, when no tag defined but
+ * only commit id version will be "0.0.0-$abreviatedCommitId"
+ * also build id is added. For local builds build number starts with l and continues
+ * with timestamp. Server builds will have a b and buildbumber
+ * Examples:
+ *
+ * All committed:
+ * local
+ * tag "v1.0.0-client" will be lead to "1.0.0-l20181108071705"
+ * tag "v1.1.0-server" will be lead to "1.1.0-l20181108071705"
+ *
+ * commit:"aebcd" will lead to "0.0.0-aebcd"
+ * build server (BUILD_NUMBER set)
+ * tag "v1.0.0-client" will be lead to "1.0.0-b123"
+ * tag "v1.1.0-server" will be lead to "1.1.0-b123"
+ *
+ * commit:"aebcd" will lead to "0.0.0-aebcd-b123"
+ *
+ *
+ * Additional change:
+ * local (no BUILD_NUMBER set)
+ * former tag "v1.0.0-client" will lead for example to "1.0.0-dirty-l1540999578066"
+ * former commit:"aebcd" will lead for example to "0.0.0-aebcd-dirty-l1540999578066"
+ * build server (BUILD_NUMBER set)
+ * former tag "v1.0.0-client" will lead for example to "1.0.0-dirty-l1540999578066"
+ * former commit:"aebcd" will lead for example to "0.0.0-aebcd-dirty-l1540999578066"
+ *
+ */
+def buildVersionString(commitTag, boolean hasChanged, buildNumber){
+ def calcversion = ""
+ if (commitTag == null) {
+ calcversion="0.0.0-${git.head().abbreviatedId}"
+ } else {
+ calcversion = commitTag.name - 'v'
+ // remove identifiers for server, client, ..
+ calcversion=calcversion-"-server"
+ calcversion=calcversion-"-client"
+
+ }
+ if (hasChanged){
+ calcversion="${calcversion}-dirty";
+ }
+ calcversion="${calcversion}-${buildNumber}";
+ return calcversion
+}
+
+def getBuildNr(){
+ if (getServerBuildNr()!=null){
+ return "b"+getServerBuildNr()
+ }else{
+ if (project.hasProperty('sechub.build.timestamp')){
+ if (project.getProperty('sechub.build.timestamp')=="false"){
+ return "latest"
+ }
+ }
+ return getLocalBuildNr()
+ }
+}
+
+def getServerBuildNr(){
+ return System.getenv('BUILD_NUMBER' )
+}
+
+def getLocalBuildNr() {
+ return new Date().format('yyyyMMddHHmmss')
+}
+
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000000..d85c8a4a17
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,55 @@
+// SPDX-License-Identifier: MIT
+buildscript{
+
+ apply from: "${rootProject.projectDir}/libraries.gradle"
+ apply from: "${rootProject.projectDir}/projects.gradle"
+
+ def customMavenRepoURL4plugins = System.getenv('CUST_MVN_URL_PLUGINS')
+ if (customMavenRepoURL4plugins!=null){
+ repositories {
+ maven { url "${customMavenRepoURL4plugins}" } // e.g. a corporate nexus or artifactory...
+ }
+ }else{
+ repositories {
+ mavenCentral()
+ jcenter()
+ }
+ }
+
+ dependencies{
+ classpath gradleApi()
+ classpath "org.springframework.boot:spring-boot-gradle-plugin:${libraryVersion.springBoot}"
+ classpath "org.asciidoctor:asciidoctor-gradle-plugin:1.5.3"
+ classpath "org.asciidoctor:asciidoctorj-diagram:1.5.4.1"
+ classpath "org.asciidoctor:asciidoctorj-pdf:1.5.0-alpha.16"
+ classpath "org.ajoberstar:grgit:2.1.0" // necessary for version calculation
+ }
+
+}
+
+ext {
+ git = org.ajoberstar.grgit.Grgit.open() // necessary for version calculation
+}
+
+allprojects {
+
+ def customMavenRepoURL = System.getenv('CUST_MVN_URL')
+ if (customMavenRepoURL!=null){
+ repositories {
+ maven { url "${customMavenRepoURL}" } // e.g. a corporate nexus or artifactory...
+ }
+ }else{
+ repositories {
+ mavenCentral()
+ jcenter()
+ }
+ }
+
+
+}
+apply from: "${rootProject.projectDir}/build-versioning.gradle"
+apply from: "${rootProject.projectDir}/build-java.gradle"
+apply from: "${rootProject.projectDir}/build-spring.gradle"
+apply from: "${rootProject.projectDir}/build-maven.gradle"
+apply from: "${rootProject.projectDir}/build-eclipse.gradle"
+
diff --git a/buildSrc/src/main/groovy/CmdExecutor.groovy b/buildSrc/src/main/groovy/CmdExecutor.groovy
new file mode 100644
index 0000000000..60139df0a4
--- /dev/null
+++ b/buildSrc/src/main/groovy/CmdExecutor.groovy
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: MIT
+import org.gradle.api.*
+
+class CmdExecutor{
+ List command = new ArrayList();
+ int timeOutInSeconds=-1;
+
+
+ /**
+ * Executes given command list in given working directory. When started process
+ * does not return 0 as exit code a gradle exception is thrown which will break the build.
+ * The origin gradle exec process will always wait until no spawned processes are left.
+ * For e.g. the test integratino start this is an unwanted behaviour, because the process shall
+ * run and the next task (integration test execution) must proceed...
+ */
+ public void execute(File workingDir){
+ /* why next lines so extreme ugly code (for next .. and get(x) )?
+ becaus using just the list or converterting to array in standard
+ java way ala "cmdArray= list.toArray(new String[list.size])" does
+ not work in groovy!!!! */
+ String[] cmdarray = new String[command.size()];
+ for (int i=0;i> execute:" + command)
+ /* create process */
+ ProcessBuilder pb = new ProcessBuilder();
+ pb.command(cmdarray);
+ pb.directory(workingDir);
+ pb.inheritIO();
+ /* start */
+ Process p = pb.start();
+ if (timeOutInSeconds >-1){
+ p.waitFor(timeOutInSeconds, java.util.concurrent.TimeUnit.SECONDS);
+ }else{
+ p.waitFor()
+ }
+
+ /* handle errors */
+ int result = p.exitValue();
+ if (result!=0) {
+ throw new GradleException("Script returned exit code:$result");
+ }
+ }
+}
diff --git a/buildSrc/src/main/groovy/MinGWConverter.groovy b/buildSrc/src/main/groovy/MinGWConverter.groovy
new file mode 100644
index 0000000000..5ed1edf21a
--- /dev/null
+++ b/buildSrc/src/main/groovy/MinGWConverter.groovy
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: MIT
+class MinGWConverter{
+ public String convert(String path){
+ if (path==null) {
+ return "";
+ }
+ String replaced = path.replaceAll("\\\\", "/");
+ if (replaced.indexOf(':')==1) {
+ StringBuilder sb = new StringBuilder();
+ sb.append('/');
+ sb.append(replaced.substring(0,1));
+ sb.append(replaced.substring(2));
+ return sb.toString();
+ }
+ return replaced;
+ }
+
+}
diff --git a/buildSrc/src/main/groovy/OSUtil.groovy b/buildSrc/src/main/groovy/OSUtil.groovy
new file mode 100644
index 0000000000..8c468852d5
--- /dev/null
+++ b/buildSrc/src/main/groovy/OSUtil.groovy
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: MIT
+class OSUtil{
+ public static final boolean isWindows(){
+ String osName = System.getProperty("os.name").toLowerCase();
+ return osName.contains("windows");
+ }
+}
+
diff --git a/buildSrc/src/main/groovy/VersionData.groovy b/buildSrc/src/main/groovy/VersionData.groovy
new file mode 100644
index 0000000000..e710d8a37a
--- /dev/null
+++ b/buildSrc/src/main/groovy/VersionData.groovy
@@ -0,0 +1,7 @@
+// SPDX-License-Identifier: MIT
+class VersionData{
+ /* we initialize with undefined */
+ static String serverVersion = "undefined-serverversion"
+ static String clientVersion = "undefined-clientversion"
+ static String websiteVersion = "undefined-websiteversion"
+}
\ No newline at end of file
diff --git a/continous-integration-multibranch-pipeline.jenkins b/continous-integration-multibranch-pipeline.jenkins
new file mode 100644
index 0000000000..b07ece734b
--- /dev/null
+++ b/continous-integration-multibranch-pipeline.jenkins
@@ -0,0 +1,259 @@
+// SPDX-License-Identifier: MIT
+
+// Continous integration build pipeline script for jenkins
+// -------------------------------------------------------
+// Please define a new "multibranch pipeline" job and use this jenkinsfile there
+// Master branch is never build by this script - this branch is build by "release-pipeline.jenkins"
+// But all other branches use this as CI build pipeline
+// For details please refer /sechub-doc/src/docs/asciidoc/documents/buildserver/jenkins-pipeline.adoc
+
+def sechubGitBranch ="unknown"
+
+pipeline {
+ agent any
+
+ environment {
+ SECHUB_TRUSTALL= "true" // necessary for integration tests
+ }
+
+ stages {
+
+ stage('Initialize') {
+ steps {
+ script{
+ sechubGitBranch = sh(returnStdout: true, script: "git branch | grep \\* | cut -d ' ' -f2").trim()
+ echo "Branch is $sechubGitBranch"
+
+ if( sechubGitBranch == "master" ) {
+ echo "Cancel build , because master is build on by release-pipeline.jenkins!"
+ currentBuild.result = 'SUCCESS'
+ return
+ }
+
+ }
+
+
+ }
+ }
+
+ stage('Build Server') {
+ environment {
+ /* against build race conditions - See TestPortProvider.java */
+ SECHUB_TEST_WIREMOCK_HTTPS_PORT = getJenkinsExecutorPort(8143)
+ SECHUB_TEST_WIREMOCK_HTTP_PORT = getJenkinsExecutorPort(8180)
+ }
+ steps {
+ script{
+ echo "SECHUB_TEST_WIREMOCK_HTTPS_PORT=${env.SECHUB_TEST_WIREMOCK_HTTPS_PORT}"
+ echo "SECHUB_TEST_WIREMOCK_HTTP_PORT=${env.SECHUB_TEST_WIREMOCK_HTTP_PORT}"
+
+ /*
+ * we do NOT build sechub-integrationtest
+ * Reason: because we do NOT want to have the integration tests executed, otherwise gradle will not execute them
+ * on integration phase again (because nothing has changed, so gradle will cache the results which are ignored ...
+ */
+ callGradleWrapper("clean ensureLocalhostCertificate build -x :sechub-integrationtest:test -x :sechub-cli:build -Psechub.test.wiremock.https_port=${env.SECHUB_TEST_WIREMOCK_HTTPS_PORT} -Psechub.test.wiremock.http_port=${env.SECHUB_TEST_WIREMOCK_HTTP_PORT}")
+
+ }
+ }
+ }
+ stage('Build CLI') {
+ steps {
+ script{failed
+ callGradleWrapper(':sechub-cli:buildGo :sechub-cli:testGo')
+ }
+ }
+ }
+ stage('Integration tests') {
+ environment {
+ /* against build race conditions - See TestPortProvider.java */
+ SERVER_PORT= getJenkinsExecutorPort(8243)
+ }
+
+ steps {
+ script{
+ callGradleWrapper("integrationtest -Psechub.integrationtest.serverport=${env.SERVER_PORT}")
+ }
+ }
+ }
+
+ stage('Build Documentation') {
+ steps {
+ script{
+ callGradleWrapper('documentation')
+ }
+ }
+ }
+
+ }
+
+ post {
+ failure {
+ emailext (
+ subject:"[ BUILD FAILED ] Build:${env.BUILD_NUMBER}, branch: $sechubGitBranch",
+ body:"CI build for branch '$sechubGitBranch' failed.\n"+
+ "${env.BUILD_URL}",
+ to: '$DEFAULT_RECIPIENTS'
+ )
+ }
+ fixed {
+ emailext (
+ subject:"[ BUILD FIXED ] Build:${env.BUILD_NUMBER}, branch: $sechubGitBranch",
+ body:"CI build for branch '$sechubGitBranch' has been fixed.\n"+
+ "${env.BUILD_URL}",
+ to: '$DEFAULT_RECIPIENTS'
+ )
+ }
+ always {
+ archive '**/integrationtest-server.log'
+
+ junit '**/build/test-results/*/TEST-*.xml'
+
+ }
+ }
+}
+
+// --------------------------------------------------------------------------
+// - Script helper methods
+// --------------------------------------------------------------------------
+
+/* Gives back port number increased by executor number, so different between
+ jenkins executors (at least on same node) */
+int getJenkinsExecutorPort(int originPort){
+ int executorNr = "${env.EXECUTOR_NUMBER}"
+ return originPort+executorNr
+}
+
+void callGradleWrapper(String gradleCommand) {
+ jdk = tool name: 'JDK_8'
+ env.JAVA_HOME = "${jdk}"
+
+ if (isUnix()) {
+ sh "./gradlew ${gradleCommand}"
+ } else {
+ bat "gradlew.bat ${gradleCommand}"
+ }
+}
+
+/**
+ * This class is necessary because jenkins - at least in version 2.150.2 - does not correct handle
+ * GIT tags and branches. Multi pipeline builds do not even checkout the tags. Normal pipeline builds do checkout the tags,
+ * but "when {tag pattern:'myPattern', comparator:'REGEXP' } does not work at all - no comment...
+ *
+ * To get the possibility to use tags for versioning this helper class was created
+ * At the begining of the pipeline there is a global variable defined which is also available inside build stages
+ * So we do init with git tags on head as array and use getter methods (not groovy but normal java getter, otherwise sandbox problems OMG!)
+ */
+class SecHubBuildContext{
+
+ boolean clientVersion
+ boolean serverVersion
+
+ boolean clientBuildDone
+ boolean serverBuildDone
+
+ String releaseInfoString
+
+ public SecHubBuildContext(){
+ }
+
+ public boolean isStartEmailNeeded(){
+ return isAnyRelease()
+ }
+
+ public boolean isFailEmailNeeded(){
+ return true;// always
+ }
+
+ public boolean isSuccesssEmailNeeded(){
+ return isAnyRelease()
+ }
+
+ public void setClientBuildDone(boolean done){
+ this.clientBuildDone=done
+ }
+
+ public void setServerBuildDone(boolean done){
+ this.serverBuildDone=done
+ }
+
+ public void setWebsiteBuildDone(boolean done){
+ this.websiteBuildDone=done
+ }
+
+
+ /**
+ * Returns true when client or sever deployment.
+ * Interesting for interdepent deployment tests.
+ * E.g.
+ * - a server deployment should have integration test + client build before.
+ * - a client deployment should have also integration test - means server build before
+ * to have a working local integration test server
+ */
+ public boolean isClientOrServerRelease(){
+ return isClientRelease() || isServerRelease();
+ }
+
+ public boolean isAnyRelease(){
+ return isClientRelease() || isServerRelease();
+ }
+
+ public boolean isSuccessFul(){
+ if (! isAnyRelease()){
+ return false
+ }
+
+ if (isClientRelease()) {
+ if (! this.clientBuildDone){
+ return false
+ }
+ }
+
+ if (isServerRelease()) {
+ if (! this.serverBuildDone){
+ return false
+ }
+ }
+
+ return true
+ }
+
+ public boolean isClientRelease(){
+ return clientVersion
+ }
+
+ public boolean isServerRelease(){
+ return serverVersion
+ }
+
+ public void init(String[ ] commitTags){
+ def versionCommitTags = commitTags.findAll {it.startsWith("v")}
+
+ // we got vX.Y.Z-server and vX.Y.Z-client tags
+ def clientVersionCommitTag = versionCommitTags.find{ it.contains("-client") }
+ def serverVersionCommitTag = versionCommitTags.find{ it.contains("-server") }
+
+ releaseInfoString = "Release(s):"
+ if (clientVersionCommitTag == null || clientVersionCommitTag.empty){
+ clientVersion=false;
+ }else{
+ clientVersion=true;
+ releaseInfoString=releaseInfoString+" " + clientVersionCommitTag
+ }
+
+ if (serverVersionCommitTag == null || serverVersionCommitTag.empty){
+ serverVersion=false;
+ }else{
+ serverVersion=true;
+ releaseInfoString=releaseInfoString+" " + serverVersionCommitTag
+ }
+
+ }
+
+ public String getReleaseInfo(){
+ return releaseInfoString
+ }
+
+
+}
+
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000000..c19f805d80
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: MIT
+# =============================================================================
+# Specific gradle setup for project 'sechub'
+# =============================================================================
+replacePlaceholders=true
diff --git a/gradle/wrapper/.gitignore b/gradle/wrapper/.gitignore
new file mode 100644
index 0000000000..63b7142f43
--- /dev/null
+++ b/gradle/wrapper/.gitignore
@@ -0,0 +1 @@
+!gradle-wrapper.jar
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000000..5c2d1cf016
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000..c1ab449471
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: MIT
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
new file mode 100755
index 0000000000..b0d6d0ab5d
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,188 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000000..9991c50326
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,100 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem http://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/libraries.gradle b/libraries.gradle
new file mode 100644
index 0000000000..bd34837717
--- /dev/null
+++ b/libraries.gradle
@@ -0,0 +1,64 @@
+// SPDX-License-Identifier: MIT
+/* ============================================================================
+ Library definitions for project 'sechub'
+ ============================================================================
+ Define here library dependencies and use them inside your build.gradle
+ files in sub projects.
+
+ Included from: "${rootProject.projectDir}/build.gradle"
+ ============================================================================
+
+ */
+ext {
+
+ libraryVersion= [
+ springBoot: "2.0.4.RELEASE"
+ ]
+
+ library = [
+ /* spring */
+ springboot_starter_thymeleaf: "org.springframework.boot:spring-boot-starter-thymeleaf",
+
+ springboot_devtoolssf: "org.springframework.boot:spring-boot-devtools",
+
+ springboot_starter_data_jpa: "org.springframework.boot:spring-boot-starter-data-jpa",
+ springboot_starter_data_mongodb: "org.springframework.boot:spring-boot-starter-data-mongodb",
+ springboot_starter_data_rest: "org.springframework.boot:spring-boot-starter-data-rest",
+ springboot_starter_security : "org.springframework.boot:spring-boot-starter-security",
+ springboot_starter_web: "org.springframework.boot:spring-boot-starter-web",
+ springboot_starter_test: "org.springframework.boot:spring-boot-starter-test",
+ springboot_starter_batch: "org.springframework.boot:spring-boot-starter-batch",
+ springboot_starter_json: "org.springframework.boot:spring-boot-starter-json",
+ springboot_starter_actuator: "org.springframework.boot:spring-boot-starter-actuator",
+ springboot_starter_mail: "org.springframework.boot:spring-boot-starter-mail",
+
+ springframework_restdocs: "org.springframework.restdocs:spring-restdocs-mockmvc",
+ springframework_security_test: "org.springframework.security:spring-security-test",
+
+ wiremock: "com.github.tomakehurst:wiremock-standalone:2.16.0",
+
+ database_h2: "com.h2database:h2", //:1.4.196",
+ database_postgres: "org.postgresql:postgresql:42.2.2",
+
+ jackson_JDK8: "com.fasterxml.jackson.datatype:jackson-datatype-jdk8",
+
+ webjars_jquery: "org.webjars:jquery:2.2.4",
+ webjars_bootstrap: "org.webjars:bootstrap:3.3.7",
+
+ apache_httpcomponents_core: "org.apache.httpcomponents:httpcore:4.4.9",
+ apache_httpcomponents_client: "org.apache.httpcomponents:httpclient:4.5.5",
+ apache_commons_validator: "commons-validator:commons-validator:1.6",
+ apache_commons_io: "commons-io:commons-io:2.6",
+
+ openjson: "com.github.openjson:openjson:1.0.10",
+
+ flyway: "org.flywaydb:flyway-core:5.2.1",
+
+ // JDK 10 build problems handling
+ // https://stackoverflow.com/questions/43574426/how-to-resolve-java-langnoclassdeffounderror-javax-xml-bind-jaxbexception-in-j
+ jdk_missing_jaxb_api: "javax.xml.bind:jaxb-api:2.3.1",
+ jdk_missing_activation: "javax.activation:activation:1.1.1",
+ jdk_missing_jaxb_impl: "javax.xml.bind:com.springsource.javax.xml.bind:2.2.0",
+ ]
+
+}
diff --git a/projects.gradle b/projects.gradle
new file mode 100644
index 0000000000..d0b03e7284
--- /dev/null
+++ b/projects.gradle
@@ -0,0 +1,81 @@
+// SPDX-License-Identifier: MIT
+ext {
+projectType = [
+
+ goProjects: [
+ project(':sechub-cli'),
+ ],
+
+ javaProjects: [
+ ],
+
+ /* any project using spring parts but not already in other spring boot group must be defined here*/
+ springBootProjects: [
+ project(':sechub-testframework'),//we use same mockito and junit as in other projects, so a spring boot project...
+ project(':sechub-shared-kernel-testframework'),//we use same mockito and junit as in other projects, so a spring boot project...
+ project(':sechub-scan-testframework'), //we use same mockito and junit as in other projects, so a spring boot project...
+ project(':sechub-integrationtest'),
+ project(':sechub-developertools'),
+ project(':sechub-test'),
+ ],
+
+ /* adapter projects - have simple spring dependencies, but know only sechub-adapter as base */
+ springBootAdapterProjects: [
+ project(':sechub-adapter'),
+ project(':sechub-adapter-netsparker'),
+ project(':sechub-adapter-nessus'),
+ project(':sechub-adapter-checkmarx'),
+ ],
+
+ /* server projects, all contained inside server */
+ springBootSecHubServerProjects: [
+ project(':sechub-server'),
+ project(':sechub-schedule'),
+ project(':sechub-authorization'),
+ project(':sechub-administration'),
+ project(':sechub-notification'),
+ project(':sechub-sereco'),
+ project(':sechub-shared-kernel'),
+
+ project(':sechub-scan'),
+ project(':sechub-scan-product-netsparker'),
+ project(':sechub-scan-product-nessus'),
+ project(':sechub-scan-product-checkmarx'),
+ project(':sechub-scan-product-sereco'),
+ ],
+
+ /* documentation projects */
+ springDocProjects: [
+ project(':sechub-doc'), // we use this project for doc generation so msut be java and also with spring dependencies
+
+ ],
+
+// springBootFrontentProjects: [
+// project(':sechub-frontend-user'),
+// project(':sechub-frontend-admin'),
+// ],
+
+ /* 'eclipseProjects' defines projects which will be automatically generated by eclipse gradle task
+ * all spring projects are automatically added to this and must NOT be added manually!
+ */
+ eclipseProjects: [
+ project(':sechub-doc'),
+ project(':sechub-other'),
+ ],
+
+ asciiDoctorProjects: [
+ project(':sechub-doc'),
+ ]
+ ]
+}
+/* dynamically define java projects */
+projectType.springBootProjects.addAll(projectType.springBootSecHubServerProjects)
+projectType.springBootProjects.addAll(projectType.springBootAdapterProjects)
+projectType.springBootProjects.addAll(projectType.springDocProjects)
+//projectType.springBootProjects.addAll(projectType.springBootFrontentProjects)
+
+projectType.javaProjects.addAll(projectType.springBootProjects)
+
+/* dynamically add all java projects as eclipse projects:*/
+projectType.eclipseProjects.addAll(projectType.javaProjects)
+projectType.eclipseProjects.addAll(projectType.goProjects)
\ No newline at end of file
diff --git a/release-pipeline.jenkins b/release-pipeline.jenkins
new file mode 100644
index 0000000000..b3395e8eeb
--- /dev/null
+++ b/release-pipeline.jenkins
@@ -0,0 +1,355 @@
+// SPDX-License-Identifier: MIT
+
+// Release pipeline script for jenkins
+// Please define a new "pipeline" job and use this jenkinsfile there
+// (DO NOT use a "multibranch pipeline job" here! Reason: This job type makes problems
+// with tagging - also we want releases only from master branch and tags shall be here as well)
+// Only master branch is build by this script - other branches are build by "continous-integration-multibranch-pipeline.jenkins"
+// For details please refer /sechub-doc/src/docs/asciidoc/documents/buildserver/jenkins-pipeline.adoc
+
+def context = new SecHubBuildContext();
+def sechubGitBranch ="unknown"
+
+pipeline {
+ agent any
+
+ environment {
+ SECHUB_TRUSTALL= "true" // necessary for integration tests
+ }
+
+ stages {
+
+ stage('Initialize') {
+ steps {
+ script{
+ sechubGitBranch = sh(returnStdout: true, script: "git branch").trim()
+ echo "Branch is $sechubGitBranch"
+
+ def sechubGitTagsArray = sh(returnStdout: true, script: "git tag -l --contains HEAD").split()
+ echo "HEAD has following tags: $sechubGitTagsArray"
+ echo "WORKSPACE is ${env.WORKSPACE}"
+
+ context.init(sechubGitTagsArray)
+
+ echo "RELEASE info: "+context.getReleaseInfo()
+
+ if (context.isAnyRelease()){
+ releaseInfo = context.getReleaseInfo()
+ emailext (
+ subject:"[ STARTED ]Release - Build:${env.BUILD_NUMBER}",
+ body:"Continous integration build for release started.\n$releaseInfo\n\n"+
+ "${env.BUILD_URL}",
+ to: '$DEFAULT_RECIPIENTS'
+ )
+ }
+
+ }
+
+
+ }
+ }
+
+ stage('Build Server') {
+ environment {
+ /* against build race conditions - See TestPortProvider.java */
+ SECHUB_TEST_WIREMOCK_HTTPS_PORT = getJenkinsExecutorPort(8143)
+ SECHUB_TEST_WIREMOCK_HTTP_PORT = getJenkinsExecutorPort(8180)
+ }
+ steps {
+ script{
+ echo "SECHUB_TEST_WIREMOCK_HTTPS_PORT=${env.SECHUB_TEST_WIREMOCK_HTTPS_PORT}"
+ echo "SECHUB_TEST_WIREMOCK_HTTP_PORT=${env.SECHUB_TEST_WIREMOCK_HTTP_PORT}"
+
+ /*
+ * we do NOT build sechub-integrationtest
+ * Reason: because we do NOT want to have the integration tests executed, otherwise gradle will not execute them
+ * on integration phase again (because nothing has changed, so gradle will cache the results which are ignored ...
+ */
+ callGradleWrapper("clean ensureLocalhostCertificate build -x :sechub-integrationtest:test -x :sechub-cli:build -Psechub.test.wiremock.https_port=${env.SECHUB_TEST_WIREMOCK_HTTPS_PORT} -Psechub.test.wiremock.http_port=${env.SECHUB_TEST_WIREMOCK_HTTP_PORT}")
+
+ }
+ }
+ }
+ stage('Build CLI') {
+ steps {
+ script{
+ callGradleWrapper(':sechub-cli:buildGo :sechub-cli:testGo')
+ }
+ }
+ }
+ stage('Integration tests') {
+ environment {
+ /* against build race conditions - See TestPortProvider.java */
+ SERVER_PORT= getJenkinsExecutorPort(8243)
+ }
+
+ steps {
+ script{
+ callGradleWrapper("integrationtest -Psechub.integrationtest.serverport=${env.SERVER_PORT}")
+ }
+ }
+ }
+
+ stage('Build Documentation') {
+ steps {
+ script{
+ callGradleWrapper('documentation')
+ }
+ }
+ }
+
+ stage('Publish release artifacts') {
+ when {
+ expression { context.isAnyRelease() }
+ }
+ steps {
+ script{
+ if (context.isClientRelease()){
+ callGradleWrapper(':sechub-cli:publish')
+ }
+ if (context.isServerRelease()){
+ callGradleWrapper(':sechub-server:publish')
+ }
+ }
+ }
+ }
+
+ /**
+ * How to handle this in your build ?
+ * See /sechub-doc/src/docs/asciidoc/documents/buildserver/jenkins-pipeline.adoc
+ */
+ stage('Trigger server released') {
+ when {
+ expression { context.isServerRelease() }
+ }
+ steps {
+ // trigger other pipeline job :
+ build job: 'sechub-server-released',
+ propagate: true,
+ wait: false,
+ parameters: [string(name: 'SERVERVERSION', value:"${context.serverVersion}")]
+
+ }
+ }
+ /**
+ * How to handle this in your build ?
+ * See /sechub-doc/src/docs/asciidoc/documents/buildserver/jenkins-pipeline.adoc
+ */
+ stage('Trigger client released') {
+ when {
+ expression { context.isClientRelease() }
+ }
+ steps {
+ // trigger other pipeline job :
+ build job: 'sechub-client-released',
+ propagate: true,
+ wait: false,
+ parameters: [string(name: 'CLIENTVERSION', value:"${context.clientVersion}")]
+
+ }
+ }
+
+
+ }
+
+ post {
+ failure {
+ script {
+ if (context.isAnyRelease()){
+ releaseInfo = context.getReleaseInfo()
+ emailext (
+ subject:"[ FAILED ]Release - Build:${env.BUILD_NUMBER}",
+ body:"Continous integration build with release publish failed.\n$releaseInfo\n\n"+
+ "${env.BUILD_URL}",
+ to: '$DEFAULT_RECIPIENTS'
+ )
+ }else{
+ emailext (
+ subject:"[ FAILED ]CI - Build:${env.BUILD_NUMBER}",
+ body:"Continous integration build failed.\n$releaseInfo\n\n"+
+ "${env.BUILD_URL}",
+ to: '$DEFAULT_RECIPIENTS'
+ )
+ }
+ }
+ }
+ success {
+ script {
+ if (context.isSuccesssEmailNeeded()){
+ releaseInfo = context.getReleaseInfo()
+ emailext (
+ subject:"[ SUCCESS ]Release - Build:${env.BUILD_NUMBER}",
+ body:"Continous integration build with release publish sucessfully done. Triggered additional jobs.\n$releaseInfo\n\n"+
+ "${env.BUILD_URL}",
+ to: '$DEFAULT_RECIPIENTS'
+ )
+ }
+ }
+ }
+ always {
+ archive '**/integrationtest-server.log'
+
+ junit '**/build/test-results/*/TEST-*.xml'
+
+ }
+ }
+}
+
+// --------------------------------------------------------------------------
+// - Script helper methods
+// --------------------------------------------------------------------------
+
+/* Gives back port number increased by executor number, so different between
+ jenkins executors (at least on same node) */
+int getJenkinsExecutorPort(int originPort){
+ int executorNr = "${env.EXECUTOR_NUMBER}"
+ return originPort+executorNr
+}
+
+void callGradleWrapper(String gradleCommand) {
+ jdk = tool name: 'JDK_8'
+ env.JAVA_HOME = "${jdk}"
+
+ if (isUnix()) {
+ sh "./gradlew ${gradleCommand}"
+ } else {
+ bat "gradlew.bat ${gradleCommand}"
+ }
+}
+
+/**
+ * This class is necessary because jenkins - at least in version 2.150.2 - does not correct handle
+ * GIT tags and branches. Multi pipeline builds do not even checkout the tags. Normal pipeline builds do checkout the tags,
+ * but "when {tag pattern:'myPattern', comparator:'REGEXP' } does not work at all - no comment...
+ *
+ * To get the possibility to use tags for versioning this helper class was created
+ * At the begining of the pipeline there is a global variable defined which is also available inside build stages
+ * So we do init with git tags on head as array and use getter methods (not groovy but normal java getter, otherwise sandbox problems OMG!)
+ */
+class SecHubBuildContext{
+
+ String clientVersion
+ String serverVersion
+
+ boolean clientRelease
+ boolean serverRelease
+
+ boolean clientBuildDone
+ boolean serverBuildDone
+
+ String releaseInfoString
+
+ public SecHubBuildContext(){
+ }
+
+ /*
+ * Simplifies given version string . e.g. v0.4.1-client will be reduced to 0.4.1
+ */
+ public String getSimplifiedVersion(String fullVersion){
+ if (fullVersion==null){
+ return "0.0.0";
+ }
+ String result = fullVersion;
+ if (result.startsWith("v")) {
+ result=result.substring(1);
+ }
+ int index = result.indexOf('-');
+ if (index==-1){
+ return result;
+ }
+ return result.substring(0,index);
+ }
+
+ public boolean isStartEmailNeeded(){
+ return isAnyRelease()
+ }
+
+ public boolean isFailEmailNeeded(){
+ return true;// always
+ }
+
+ public boolean isSuccesssEmailNeeded(){
+ return isAnyRelease()
+ }
+
+ public void setClientBuildDone(boolean done){
+ this.clientBuildDone=done
+ }
+
+ public void setServerBuildDone(boolean done){
+ this.serverBuildDone=done
+ }
+
+ public void setWebsiteBuildDone(boolean done){
+ this.websiteBuildDone=done
+ }
+
+
+ /**
+ * Returns true when client or sever deployment.
+ * Interesting for interdepent deployment tests.
+ * E.g.
+ * - a server deployment should have integration test + client build before.
+ * - a client deployment should have also integration test - means server build before
+ * to have a working local integration test server
+ */
+ public boolean isClientOrServerRelease(){
+ return isClientRelease() || isServerRelease();
+ }
+
+ public boolean isAnyRelease(){
+ return isClientRelease() || isServerRelease();
+ }
+
+ public boolean isSuccessFul(){
+ if (! isAnyRelease()){
+ return false
+ }
+
+ if (isClientRelease()) {
+ if (! this.clientBuildDone){
+ return false
+ }
+ }
+
+ if (isServerRelease()) {
+ if (! this.serverBuildDone){
+ return false
+ }
+ }
+
+ return true
+ }
+
+ public void init(String[ ] commitTags){
+ def versionCommitTags = commitTags.findAll {it.startsWith("v")}
+
+ // we got vX.Y.Z-server and vX.Y.Z-client tags
+ def clientVersionCommitTag = versionCommitTags.find{ it.contains("-client") }
+ def serverVersionCommitTag = versionCommitTags.find{ it.contains("-server") }
+
+ releaseInfoString = "Release(s):"
+ if (clientVersionCommitTag == null || clientVersionCommitTag.empty){
+ clientRelease=false;
+ }else{
+ clientRelease=true;
+ clientVersion=getSimplifiedVersion(clientVersionCommitTag)
+ releaseInfoString=releaseInfoString+" " + clientVersionCommitTag
+ }
+
+ if (serverVersionCommitTag == null || serverVersionCommitTag.empty){
+ serverRelease=false;
+ }else{
+ serverRelease=true;
+ serverVersion=getSimplifiedVersion(serverVersionCommitTag)
+ releaseInfoString=releaseInfoString+" " + serverVersionCommitTag
+ }
+ }
+
+ public String getReleaseInfo(){
+ return releaseInfoString
+ }
+
+
+}
+
diff --git a/sechub-adapter-checkmarx/README.md b/sechub-adapter-checkmarx/README.md
new file mode 100644
index 0000000000..d8a8e760c7
--- /dev/null
+++ b/sechub-adapter-checkmarx/README.md
@@ -0,0 +1,9 @@
+
+About this project
+==================
+
+This an adapter project to access product NETSPARKER.
+It has no dependency to any sechub part and can be used as a single command line program too (for test purpose).
+
+A product executor can use this adapter to access the product.
+The adapter itself is pretty dumb and does only now the product stuff...
\ No newline at end of file
diff --git a/sechub-adapter-checkmarx/build.gradle b/sechub-adapter-checkmarx/build.gradle
new file mode 100644
index 0000000000..a8fbf6ebc6
--- /dev/null
+++ b/sechub-adapter-checkmarx/build.gradle
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: MIT
+ /*============================================================================
+ * Build file for subproject
+ *
+ * Root build file: "${rootProject.projectDir}/build.gradle"
+ * ============================================================================
+ */
+dependencies {
+
+ compile project(':sechub-adapter')
+}
+
\ No newline at end of file
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapter.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapter.java
new file mode 100644
index 0000000000..dc4b5b2de6
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapter.java
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+import com.daimler.sechub.adapter.Adapter;
+
+public interface CheckmarxAdapter extends Adapter{
+
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterConfig.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterConfig.java
new file mode 100644
index 0000000000..6876948443
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterConfig.java
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+import com.daimler.sechub.adapter.AdapterConfig;
+
+public interface CheckmarxAdapterConfig extends AdapterConfig {
+
+ String getTeamIdForNewProjects();
+
+ String getPathToZipFile();
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterContext.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterContext.java
new file mode 100644
index 0000000000..cd4fa80b64
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterContext.java
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+import com.daimler.sechub.adapter.AdapterContext;
+import com.daimler.sechub.adapter.checkmarx.support.ReportDetails;
+
+public interface CheckmarxAdapterContext extends AdapterContext {
+
+ long getScanId();
+
+ ReportDetails getReportDetails();
+
+ long getReportId();
+
+ CheckmarxAdapter getCheckmarxAdapter();
+
+ void setReportId(long reportId);
+
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterV1.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterV1.java
new file mode 100644
index 0000000000..76f3b4c66e
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterV1.java
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
+
+import com.daimler.sechub.adapter.AbstractAdapter;
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.AdapterProfiles;
+import com.daimler.sechub.adapter.checkmarx.support.CheckmarxFullScanNecessaryException;
+import com.daimler.sechub.adapter.checkmarx.support.CheckmarxOAuthSupport;
+import com.daimler.sechub.adapter.checkmarx.support.CheckmarxProjectSupport;
+import com.daimler.sechub.adapter.checkmarx.support.CheckmarxScanReportSupport;
+import com.daimler.sechub.adapter.checkmarx.support.CheckmarxScanSupport;
+import com.daimler.sechub.adapter.checkmarx.support.CheckmarxUploadSupport;
+
+/**
+ * This component is able to handle results from
+ *
+ *
Checkmarx V8.8.0 HF1
+ *
+ * @author Albert Tregnaghi
+ *
+ */
+@Component
+@Profile({ AdapterProfiles.REAL_PRODUCTS })
+public class CheckmarxAdapterV1 extends AbstractAdapter
+ implements CheckmarxAdapter {
+
+ private static final Logger LOG = LoggerFactory.getLogger(CheckmarxAdapterV1.class);
+
+ @Override
+ public String start(CheckmarxAdapterConfig config) throws AdapterException {
+ try {
+ CheckmarxContext context = new CheckmarxContext(config, this);
+ context.setFullScan(context.isNewProject());
+ CheckmarxOAuthSupport support = new CheckmarxOAuthSupport();
+ support.loginAndGetOAuthToken(context);
+
+ /* ensure project and get project context*/
+ CheckmarxProjectSupport projectSupport = new CheckmarxProjectSupport();
+ projectSupport.ensureProjectExists(context);
+
+ handleUploadSourceCodeAndStartScan(context);
+
+ CheckmarxScanReportSupport scanReportSupport = new CheckmarxScanReportSupport();
+ scanReportSupport.startFetchReport(context);
+
+ return context.getResult();
+ } catch (Exception e) {
+ throw asAdapterException("Was not able to perform scan!", e, config);
+ }
+
+ }
+
+
+ private void handleUploadSourceCodeAndStartScan(CheckmarxContext context) throws AdapterException {
+ try {
+ uploadSourceCodeAndStartScan(context);
+ }catch(CheckmarxFullScanNecessaryException e) {
+ LOG.info("Full scan necessarye bcause of checkmarx message: {}",e.getCheckmarxMessage());
+ context.setFullScan(true);
+ uploadSourceCodeAndStartScan(context);
+
+ }
+ }
+
+ private void uploadSourceCodeAndStartScan(CheckmarxContext context) throws AdapterException {
+ /* upload source code */
+ CheckmarxUploadSupport uploadSupport = new CheckmarxUploadSupport();
+ uploadSupport.uploadZippedSourceCode(context);
+
+ /* start scan */
+ CheckmarxScanSupport scanSupport = new CheckmarxScanSupport();
+ scanSupport.startNewScan(context);
+ }
+
+
+ @Override
+ protected String getAPIPrefix() {
+ return "cxrestapi";
+ }
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxClientHttpRequestInterceptor.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxClientHttpRequestInterceptor.java
new file mode 100644
index 0000000000..584ddf83cf
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxClientHttpRequestInterceptor.java
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+import java.io.IOException;
+
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpRequest;
+import org.springframework.http.client.ClientHttpRequestExecution;
+import org.springframework.http.client.ClientHttpRequestInterceptor;
+import org.springframework.http.client.ClientHttpResponse;
+
+public class CheckmarxClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
+
+ private CheckmarxContext context;
+
+ public CheckmarxClientHttpRequestInterceptor(CheckmarxContext context) {
+ this.context=context;
+ }
+
+ @Override
+ public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
+ throws IOException {
+ if (context.isOAuthenticated()) {
+ /* login done ...*/
+ HttpHeaders headers = request.getHeaders();
+ headers.remove("Authorization");
+ headers.add("Authorization", context.getAuthorizationHeaderValue());
+ }
+ return execution.execute(request, body);
+ }
+
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxConfig.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxConfig.java
new file mode 100644
index 0000000000..d3f9c74cd4
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxConfig.java
@@ -0,0 +1,74 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+import com.daimler.sechub.adapter.AbstractCodeScanAdapterConfig;
+import com.daimler.sechub.adapter.AbstractCodeScanAdapterConfigBuilder;
+
+public class CheckmarxConfig extends AbstractCodeScanAdapterConfig implements CheckmarxAdapterConfig{
+
+ private String teamIdForNewProjects;
+ private String pathToZipFile;
+
+ private CheckmarxConfig() {
+ }
+
+ @Override
+ public String getTeamIdForNewProjects() {
+ return teamIdForNewProjects;
+ }
+ @Override
+ public String getPathToZipFile() {
+ return pathToZipFile;
+ }
+
+ public static CheckmarxConfigBuilder builder() {
+ return new CheckmarxConfigBuilder();
+ }
+
+ public static class CheckmarxConfigBuilder extends AbstractCodeScanAdapterConfigBuilder{
+
+ private String teamIdForNewProjects;
+ private String pathToZipFile;
+
+ /**
+ * When we create a new project this is the team ID to use
+ * @param teamId
+ * @return
+ */
+ public CheckmarxConfigBuilder setTeamIdForNewProjects(String teamId){
+ this.teamIdForNewProjects=teamId;
+ return this;
+ }
+ public CheckmarxConfigBuilder setPathToZipFile(String pathToZipFile){
+ this.pathToZipFile=pathToZipFile;
+ return this;
+ }
+
+ @Override
+ protected void customBuild(CheckmarxConfig config) {
+ config.teamIdForNewProjects=teamIdForNewProjects;
+ config.pathToZipFile=pathToZipFile;
+ }
+
+ @Override
+ protected CheckmarxConfig buildInitialConfig() {
+ return new CheckmarxConfig();
+ }
+
+ @Override
+ protected void customValidate() {
+ assertUserSet();
+ assertPasswordSet();
+ assertProjectIdSet();
+ assertTeamIdSet();
+ }
+
+ protected void assertTeamIdSet() {
+ if (teamIdForNewProjects == null) {
+ throw new IllegalStateException("no team id given");
+ }
+ }
+ }
+
+
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxContext.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxContext.java
new file mode 100644
index 0000000000..1d52f30ed2
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxContext.java
@@ -0,0 +1,126 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+import org.springframework.http.client.ClientHttpRequestInterceptor;
+
+import com.daimler.sechub.adapter.AbstractSpringRestAdapterContext;
+import com.daimler.sechub.adapter.checkmarx.support.CheckmarxOAuthSupport.CheckmarxOAuthData;
+import com.daimler.sechub.adapter.checkmarx.support.QueueDetails;
+import com.daimler.sechub.adapter.checkmarx.support.ReportDetails;
+import com.daimler.sechub.adapter.checkmarx.support.ScanDetails;
+
+/**
+ * Context for checkmarx execution.
+ *
+ * @author Albert Tregnaghi
+ *
+ */
+public class CheckmarxContext extends AbstractSpringRestAdapterContext
+ implements CheckmarxAdapterContext {
+
+ private CheckmarxOAuthData oAuthData;
+ private CheckmarxSessionData sessionData;
+ private QueueDetails queueDetails;
+ private ScanDetails scanDetails;
+ private ReportDetails reportDetails;
+ private boolean fullScan;
+ private Boolean newProject;
+
+ public CheckmarxContext(CheckmarxAdapterConfig config, CheckmarxAdapter adapter) {
+ super(config, adapter);
+ queueDetails = new QueueDetails();
+ scanDetails = new ScanDetails();
+ reportDetails = new ReportDetails();
+ }
+
+ public CheckmarxAdapter getCheckmarxAdapter() {
+ return super.getAdapter();
+ }
+
+ public QueueDetails getQueueDetails() {
+ return queueDetails;
+ }
+
+ public void markQueueRetry() {
+ queueDetails = new QueueDetails();
+ }
+
+ public void setSessionData(CheckmarxSessionData sessionData) {
+ this.sessionData = sessionData;
+ }
+
+ public CheckmarxSessionData getSessionData() {
+ if (sessionData == null) {
+ throw new IllegalStateException("Session data is not initialized/set!");
+ }
+ return sessionData;
+ }
+
+ public boolean isOAuthenticated() {
+ return oAuthData != null;
+ }
+
+ public void markAuthenticated(CheckmarxOAuthData data) {
+ this.oAuthData = data;
+ }
+
+ public boolean isIncrementalScan() {
+ return !fullScan;
+ }
+
+ public boolean isFullScan() {
+ return fullScan;
+ }
+
+ public void setFullScan(boolean incremental) {
+ this.fullScan = incremental;
+ }
+
+ @Override
+ public long getScanId() {
+ return getSessionData().getScanId();
+ }
+
+ @Override
+ public long getReportId() {
+ return getSessionData().getReportId();
+ }
+
+ @Override
+ public void setReportId(long reportId) {
+ getSessionData().setReportId(reportId);
+ }
+
+ @Override
+ protected ClientHttpRequestInterceptor createInterceptorOrNull(CheckmarxAdapterConfig config) {
+ return new CheckmarxClientHttpRequestInterceptor(this);
+ }
+
+ public String getAuthorizationHeaderValue() {
+ if (!isOAuthenticated()) {
+ return "";
+ }
+ return oAuthData.getTokenType() + " " + oAuthData.getAccessToken();
+ }
+
+ public ScanDetails getScanDetails() {
+ return scanDetails;
+ }
+
+ public ReportDetails getReportDetails() {
+ return reportDetails;
+ }
+
+ public boolean isNewProject() {
+ return Boolean.TRUE.equals(newProject);
+ }
+
+ public boolean isNewProjectInfoAvailable() {
+ return newProject != null;
+ }
+
+ public void setNewProject(boolean newProject) {
+ this.newProject = newProject;
+ }
+
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxRESTFailureException.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxRESTFailureException.java
new file mode 100644
index 0000000000..8763307ea5
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxRESTFailureException.java
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+import org.springframework.http.HttpStatus;
+
+public class CheckmarxRESTFailureException extends RuntimeException {
+
+ private static final long serialVersionUID = 6448794893494468643L;
+ private final String body;
+
+ public CheckmarxRESTFailureException(HttpStatus status, String body) {
+ super("Checkmarx REST failed with HTTP Status:" + (status != null ? status.name() : "null"));
+ this.body = body;
+ }
+
+ public String getResponseBody() {
+ return body;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + "\nBody:\n" + getResponseBody();
+ }
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxSessionData.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxSessionData.java
new file mode 100644
index 0000000000..6ec766a145
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxSessionData.java
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+public class CheckmarxSessionData {
+ private long projectId;
+ private String projectName;
+ private long scanId;
+ private long reportId;
+
+ public void setProjectId(long projectId) {
+ this.projectId = projectId;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public long getProjectId() {
+ return projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+
+ public void setScanId(long id) {
+ this.scanId=id;
+ }
+
+ public long getScanId() {
+ return scanId;
+ }
+
+ public void setReportId(long reportId) {
+ this.reportId=reportId;
+ }
+ public long getReportId() {
+ return reportId;
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxState.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxState.java
new file mode 100644
index 0000000000..86fbd96765
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/CheckmarxState.java
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+public enum CheckmarxState {
+ COMPLETE("completed"), CANCELED("canceled");
+
+ private String id;
+
+ private CheckmarxState(String id) {
+ if (id == null) {
+ throw new IllegalArgumentException("id may not be null!");
+ }
+ this.id = id;
+ }
+
+ public boolean isRepresentedBy(String state) {
+ if (state == null) {
+ return false;
+ }
+ return id.equals(state);
+ }
+
+ public static boolean isWellknown(String state) {
+ for (CheckmarxState value : values()) {
+ if (value.isRepresentedBy(state)) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/MockedCheckmarxAdapter.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/MockedCheckmarxAdapter.java
new file mode 100644
index 0000000000..77e178cd39
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/MockedCheckmarxAdapter.java
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
+
+import com.daimler.sechub.adapter.AdapterProfiles;
+import com.daimler.sechub.adapter.mock.AbstractMockedAdapter;
+
+@Profile(AdapterProfiles.MOCKED_PRODUCTS)
+@Component
+public class MockedCheckmarxAdapter extends AbstractMockedAdapter implements CheckmarxAdapter {
+
+ /**
+ * Check config data is as written in yaml file! This will check that all params
+ * are really given to the mock - means e.g. no data missing or accidently using
+ * defaults
+ *
+ * @param config
+ */
+ protected void validateConfigAsDefinedInMockYAML(CheckmarxAdapterConfig config) {
+ if (! isMockSanityCheckEnabled()) {
+ return;
+ }
+ /*
+ * the token is for the apiToken'nessus-api-token' and user id
+ * 'nessus-user-id' from application-mock.yml!
+ */
+ if (!"checkmarx-password".equals(config.getPassword())) {
+ throw new IllegalArgumentException(config.getPassword());
+ }
+ String productBaseURL = config.getProductBaseURL();
+
+ boolean baseURLAsExpected = "https://checkmarx.mock.example.org:6011".equals(productBaseURL);
+ if (!baseURLAsExpected) {
+ throw new IllegalArgumentException("Checkmarx base url not as expected:" + productBaseURL);
+ }
+ }
+
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxFullScanNecessaryException.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxFullScanNecessaryException.java
new file mode 100644
index 0000000000..3026fb0465
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxFullScanNecessaryException.java
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+public class CheckmarxFullScanNecessaryException extends RuntimeException {
+ private static final long serialVersionUID = 1L;
+
+ public CheckmarxFullScanNecessaryException(String checkMarxMessage) {
+ super(checkMarxMessage);
+ }
+
+ public String getCheckmarxMessage() {
+ return getMessage();
+ }
+}
\ No newline at end of file
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxOAuthSupport.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxOAuthSupport.java
new file mode 100644
index 0000000000..2342e00e08
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxOAuthSupport.java
@@ -0,0 +1,79 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestOperations;
+
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxAdapterConfig;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxContext;
+import com.daimler.sechub.adapter.support.JSONAdapterSupport;
+import com.daimler.sechub.adapter.support.JSONAdapterSupport.Access;
+
+// https://checkmarx.atlassian.net/wiki/spaces/KC/pages/202506366/Token-based+Authentication+v8.6.0+and+up
+// having version 8.8.0 at installation we use the token base auth and no cookie approach
+public class CheckmarxOAuthSupport {
+
+ public void loginAndGetOAuthToken(CheckmarxContext context) throws AdapterException {
+ CheckmarxAdapterConfig config = context.getConfig();
+
+ // example:
+ // CxRestAPI/projects?projectId=myProject&teamId=00000000-1111-1111-b111-989c9070eb11
+
+ String url = context.getAPIURL("auth/identity/connect/token");
+
+ RestOperations restTemplate = context.getRestOperations();
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+
+ MultiValueMap map = new LinkedMultiValueMap<>();
+ map.add("username", config.getUser());
+ map.add("password", config.getPassword());
+ map.add("grant_type", "password");
+ map.add("scope", "sast_rest_api");
+ map.add("client_id", "resource_owner_client");
+ map.add("client_secret", "014DF517-39D1-4453-B7B3-9930C563627C"); // client secret just ensures it is a checkmarx instance - so public...
+
+ HttpEntity> request = new HttpEntity<>(map, headers);
+
+ // Endpoint example:
+ // http://:/cxrestapi/auth/identity/connect/token
+ ResponseEntity response = restTemplate.postForEntity(url, request, String.class);
+
+ String json = response.getBody();
+ CheckmarxOAuthData data = extractFromJson(context.json(), json);
+
+ context.markAuthenticated(data);
+ }
+
+ CheckmarxOAuthData extractFromJson(JSONAdapterSupport support, String json)
+ throws AdapterException {
+ CheckmarxOAuthData data = new CheckmarxOAuthData();
+ Access rootNode = support.fetchRootNode(json);
+ data.accessToken=rootNode.fetch("access_token").asText();
+ data.tokenType=rootNode.fetch("token_type").asText();
+ data.expiresIn=rootNode.fetch("expires_in").asLong();
+
+ return data;
+ }
+
+ public class CheckmarxOAuthData{
+ private String accessToken;
+ private long expiresIn;
+ private String tokenType;
+ public String getAccessToken() {
+ return accessToken;
+ }
+ public long getExpiresIn() {
+ return expiresIn;
+ }
+ public String getTokenType() {
+ return tokenType;
+ }
+ }
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxProjectSupport.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxProjectSupport.java
new file mode 100644
index 0000000000..2c4ac1025d
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxProjectSupport.java
@@ -0,0 +1,97 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.springframework.http.HttpEntity;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.HttpStatusCodeException;
+import org.springframework.web.client.RestOperations;
+
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxAdapterConfig;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxContext;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxSessionData;
+import com.daimler.sechub.adapter.support.JSONAdapterSupport;
+import com.daimler.sechub.adapter.support.JSONAdapterSupport.Access;
+
+public class CheckmarxProjectSupport {
+
+ public void ensureProjectExists(CheckmarxContext context) throws AdapterException {
+ CheckmarxAdapterConfig config = context.getConfig();
+ String projectName = config.getProjectId();
+ String teamId = config.getTeamIdForNewProjects();
+
+ Map map = new LinkedHashMap<>();
+ map.put("projectName", projectName);
+ map.put("teamId", teamId);
+ String url = context.getAPIURL("projects", map);
+ RestOperations restTemplate = context.getRestOperations();
+
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/814285654/Swagger+Examples+v8.8.0+-+v2
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/564330665/Get+All+Project+Details+-+GET+projects+v8.8.0+and+up
+ // example:
+ // CxRestAPI/projects?projectName=myProject&teamId=00000000-1111-1111-b111-989c9070eb11
+ try {
+ ResponseEntity response = restTemplate.getForEntity(url, String.class);
+ context.setSessionData(extractFirstProjectFromJsonWithProjectArray(context.json(), response.getBody()));
+ context.setNewProject(false);
+ return;
+ } catch (HttpStatusCodeException e) {
+ if (e.getRawStatusCode() != 404) {
+ /* only 404 - not found is accepted */
+ throw context.asAdapterException("Unexpected HTTP status error", e);
+ }
+ }
+ /* 404 error - okay, lets create */
+ context.setSessionData(createProject(context));
+ context.setNewProject(true);
+ }
+
+ private CheckmarxSessionData createProject(CheckmarxContext context) throws AdapterException {
+ CheckmarxAdapterConfig config = context.getConfig();
+ String projectName = config.getProjectId();
+ String teamId = config.getTeamIdForNewProjects();
+
+ Map json = new TreeMap<>();
+ json.put("name", projectName);
+ json.put("owningTeam",teamId);
+ json.put("isPublic","false");
+
+ String url = context.getAPIURL("projects");
+ String jsonAsString = context.json().toJSON(json);
+ RestOperations restTemplate = context.getRestOperations();
+
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/222265747/Create+Project+with+Default+Configuration+-+POST+projects
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/814285654/Swagger+Examples+v8.8.0+-+v2
+ MultiValueMap headers = new LinkedMultiValueMap<>();
+ headers.set("Content-Type", "application/json;v=2.0");
+
+ HttpEntity request = new HttpEntity<>(jsonAsString,headers);
+ ResponseEntity response = restTemplate.postForEntity(url, request, String.class);
+ return extractProjectFromJsonWithProjectCreationData(projectName, context.json(), response.getBody());
+ }
+
+ CheckmarxSessionData extractFirstProjectFromJsonWithProjectArray(JSONAdapterSupport support, String json)
+ throws AdapterException {
+ CheckmarxSessionData data = new CheckmarxSessionData();
+ Access rootNode = support.fetchRootNode(json);
+ Access first = support.fetchArray(0, rootNode.asArray());
+ data.setProjectId(first.fetch("id").asLong());
+ data.setProjectName(first.fetch("name").asText());
+ return data;
+ }
+
+ CheckmarxSessionData extractProjectFromJsonWithProjectCreationData(String projectName,
+ JSONAdapterSupport support, String json) throws AdapterException {
+ CheckmarxSessionData data = new CheckmarxSessionData();
+ Access rootNode = support.fetchRootNode(json);
+ data.setProjectId(rootNode.fetch("id").asLong());
+ data.setProjectName(projectName);
+ return data;
+ }
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxScanReportSupport.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxScanReportSupport.java
new file mode 100644
index 0000000000..6d2c29f0da
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxScanReportSupport.java
@@ -0,0 +1,107 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.HttpStatusCodeException;
+import org.springframework.web.client.RestOperations;
+
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxAdapterContext;
+
+public class CheckmarxScanReportSupport {
+
+
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/223379587/Register+Scan+Report+-+POST+reports+sastScan
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/563806382/Get+Report+Status+by+Id+-+GET+reports+sastScan+id+status+v8.8.0+and+up
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/222101925/Get+Report+s+by+Id+-+GET+reports+sastScan+id
+ /**
+ * Starts new scan - means : Will create an entry inside QUEUE! And wait until
+ * processed
+ *
+ * @param context
+ * - if scan is started, the corresponding queue id will be set to
+ * context
+ * @param sessionContext
+ * @throws AdapterException
+ */
+ public void startFetchReport(CheckmarxAdapterContext context) throws AdapterException {
+ triggerNewReport(context);
+ waitForReport(context);
+ fetchReportResult(context);
+
+ }
+
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/222101925/Get+Report+s+by+Id+-+GET+reports+sastScan+id
+ void fetchReportResult(CheckmarxAdapterContext context) throws AdapterException {
+ ReportDetails details = context.getReportDetails();
+ try {
+ RestOperations restTemplate = context.getRestOperations();
+ ResponseEntity queueData = restTemplate
+ .getForEntity(context.getAPIURL("reports/sastScan/" + context.getReportId()), String.class);
+ String body = queueData.getBody();
+ if (body == null) { // NOSONAR
+ body = "";
+ }
+ int index = body.indexOf(" 0) {
+ body = body.substring(index);
+ }
+ context.setResult(body);
+
+ } catch (HttpStatusCodeException e) {
+ if (HttpStatus.NOT_FOUND.equals(e.getStatusCode())) {
+ /* ok just no longer in queue / or never existed */
+ details.notFound = true;
+ return;
+ }
+ throw e; // rethrow
+ }
+ }
+
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/563806382/Get+Report+Status+by+Id+-+GET+reports+sastScan+id+status+v8.8.0+and+up
+ void waitForReport(CheckmarxAdapterContext context) throws AdapterException {
+
+ WaitForScanReportSupport support = new WaitForScanReportSupport(context.getCheckmarxAdapter());
+ support.waitForOK(context);
+
+ ReportDetails reportDetails = context.getReportDetails();
+ if (reportDetails.isNotFound()) {
+ throw context.asAdapterException("The report cannot be found!", null);
+ }
+
+ }
+
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/223379587/Register+Scan+Report+-+POST+reports+sastScan
+ void triggerNewReport(CheckmarxAdapterContext context) throws AdapterException {
+
+ Map json = new TreeMap<>();
+ json.put("reportType", "XML");
+ json.put("scanId", context.getScanId());
+
+ String url = context.getAPIURL("reports/sastScan");
+ String jsonAsString = context.json().toJSON(json);
+
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_JSON);
+ HttpEntity request = new HttpEntity<>(jsonAsString, headers);
+
+ RestOperations restTemplate = context.getRestOperations();
+ ResponseEntity result = restTemplate.exchange(url, HttpMethod.POST, request, String.class);
+ if (!result.getStatusCode().equals(HttpStatus.ACCEPTED)) {
+ throw context.asAdapterException("Response HTTP status not as expected: " + result.getStatusCode(), null);
+ }
+ String body = result.getBody();
+
+ long reportId = context.json().fetch("reportId", body).asLong();
+ context.setReportId(reportId);
+ }
+
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxScanSupport.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxScanSupport.java
new file mode 100644
index 0000000000..46ca7f894f
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxScanSupport.java
@@ -0,0 +1,105 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestOperations;
+
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxAdapterConfig;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxContext;
+
+public class CheckmarxScanSupport {
+
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/563806540/Create+New+Scan+POST+sast+scans+v8.8.0+and+up
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/563806540/Create+New+Scan+POST+sast+scans+v8.8.0+and+up
+ // next: important: v1 -because only there are SAST scans!!!!
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/814121878/Swagger+Examples+v8.8.0+-+v1
+
+ private static final Logger LOG = LoggerFactory.getLogger(CheckmarxScanSupport.class);
+
+ /**
+ * Starts new scan - means : Will create an entry inside QUEUE! And wait until
+ * processed. If checkmarx queuing fails because of full scan is necessary a
+ * automatic retry will be done. If another failure occurs the scan will fail.
+ *
+ * @param context
+ * - if scan is started, the corresponding queue id will be set to
+ * context
+ * @param sessionContext
+ * @throws AdapterException
+ */
+ public void startNewScan(CheckmarxContext context) throws AdapterException {
+ LOG.info("Start new checkmarx scan for: {}", context.getSessionData().getProjectName());
+ triggerNewEntryInQueue(context);
+ waitForQueingDone(context);
+ checkScanAvailable(context);
+
+ }
+
+ private void checkScanAvailable(CheckmarxContext context) throws AdapterException {
+ WaitForScanStateSupport support = new WaitForScanStateSupport(context.getCheckmarxAdapter());
+ support.waitForOK(context);
+
+ }
+
+ private void waitForQueingDone(CheckmarxContext context) throws AdapterException {
+ WaitForQueueStateSupport support = new WaitForQueueStateSupport(context.getCheckmarxAdapter());
+ support.waitForOK(context);
+
+ QueueDetails queueDetails = context.getQueueDetails();
+ if (queueDetails.hasNeverRun()) {
+ throw context.asAdapterException("The queuing has never been run ?!!?", null);
+ }
+
+ if (queueDetails.hasFailed()) {
+ String failureText = queueDetails.getFailureText();
+ if (failureText == null) {
+ failureText = "";
+ }
+ if (context.isIncrementalScan() && failureText.toLowerCase().contains("full scan")) {
+ throw new CheckmarxFullScanNecessaryException(failureText);
+ }
+ throw context.asAdapterException("The queuing has failed:" + failureText, null);
+ }
+ }
+
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/814121878/Swagger+Examples+v8.8.0+-+v1
+ private void triggerNewEntryInQueue(CheckmarxContext context) throws AdapterException {
+ CheckmarxAdapterConfig config = context.getConfig();
+ long projectId = context.getSessionData().getProjectId();
+
+ Map json = new TreeMap<>();
+ json.put("projectId", projectId);
+ json.put("isIncremental", context.isIncrementalScan());
+ json.put("isPublic", false);
+ json.put("forceScan", false);
+ json.put("comment", "sechub job:" + config.getTraceID());
+
+ String url = context.getAPIURL("sast/scans");
+ String jsonAsString = context.json().toJSON(json);
+
+ HttpHeaders headers = new HttpHeaders();
+ headers.set("Content-Type", "application/json;v=1.0");
+ HttpEntity request = new HttpEntity<>(jsonAsString, headers);
+
+ RestOperations restTemplate = context.getRestOperations();
+ ResponseEntity result = restTemplate.exchange(url, HttpMethod.POST, request, String.class);
+ if (!result.getStatusCode().equals(HttpStatus.CREATED)) {
+ throw context.asAdapterException("Response HTTP status not as expected: " + result.getStatusCode(), null);
+ }
+ String body = result.getBody();
+
+ long scanId = context.json().fetch("id", body).asLong();
+ context.getSessionData().setScanId(scanId);
+ }
+
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxUploadSupport.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxUploadSupport.java
new file mode 100644
index 0000000000..ddae6401aa
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxUploadSupport.java
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+import java.io.File;
+
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestOperations;
+
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxAdapterConfig;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxAdapterContext;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxContext;
+
+public class CheckmarxUploadSupport {
+
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/223313947/Upload+Source+Code+Zip+File+-+POST+projects+id+sourceCode+attachments
+ // POST /projects/{id}/sourceCode/attachments and upload the zipped source code
+ // https://www.baeldung.com/spring-rest-template-multipart-upload
+ public void uploadZippedSourceCode(CheckmarxContext context)
+ throws AdapterException {
+ CheckmarxAdapterConfig config = context.getConfig();
+
+ FileSystemResource sourceCodeFile = fetchSystemResource(context, config);
+
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.MULTIPART_FORM_DATA);
+ MultiValueMap body = new LinkedMultiValueMap<>();
+ body.add("zippedSource", sourceCodeFile);
+
+ HttpEntity> requestEntity = new HttpEntity<>(body, headers);
+
+ String url = context.getAPIURL("projects/" + context.getSessionData().getProjectId() + "/sourceCode/attachments");
+
+ RestOperations restTemplate = context.getRestOperations();
+
+ ResponseEntity result = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
+ if (! result.getStatusCode().equals(HttpStatus.NO_CONTENT)) {
+ throw context.asAdapterException("Response HTTP status not as expected: "+result.getStatusCode(), null);
+ }
+ }
+
+ private FileSystemResource fetchSystemResource(CheckmarxAdapterContext context, CheckmarxAdapterConfig config)
+ throws AdapterException {
+ String pathToZipFile = config.getPathToZipFile();
+ /* currently we only provide file pathes... */
+ File file = new File(pathToZipFile);
+ if (!file.exists()) {
+ throw context.asAdapterException("File does not exist:" + pathToZipFile, null);
+ }
+ return new FileSystemResource(file);
+ }
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/QueueDetails.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/QueueDetails.java
new file mode 100644
index 0000000000..41041aa05e
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/QueueDetails.java
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+public class QueueDetails {
+
+ String stageValue;
+ boolean newQueueEntryFound;
+ int checkCount;
+ String failureText;
+ boolean done;
+
+ public String getStageValue() {
+ return stageValue;
+ }
+
+ public boolean isRunning() {
+ return isStillProcessing() && !hasFailed();
+ }
+
+ public boolean hasFailed() {
+ return "Failed".equals(stageValue);
+ }
+
+ public int getCheckCount() {
+ return checkCount;
+ }
+
+ public boolean isStillProcessing() {
+ return !done;
+ }
+
+ public boolean isNewQueueEntryFound() {
+ return newQueueEntryFound;
+ }
+
+ public String getFailureText() {
+ return failureText;
+ }
+
+ public boolean hasNeverRun() {
+ return ! newQueueEntryFound;
+ }
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/ReportDetails.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/ReportDetails.java
new file mode 100644
index 0000000000..efd3c62bfa
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/ReportDetails.java
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+public class ReportDetails {
+
+ String status;
+ boolean notFound;
+ public boolean isNotFound() {
+ return notFound;
+ }
+ public boolean isRunning() {
+ return isCheckPossible() && !isReportCreated();
+ }
+
+ private boolean isCheckPossible() {
+ return ! isNotFound();
+ }
+
+ private boolean isReportCreated() {
+ return "Created".equals(status);
+ }
+
+
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/ScanDetails.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/ScanDetails.java
new file mode 100644
index 0000000000..77a62b65be
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/ScanDetails.java
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+public class ScanDetails {
+
+ String statusName;
+ boolean notFound;
+ public boolean isRunning() {
+ return !notFound && !hasFinished();
+ }
+ private boolean hasFinished() {
+ return "Finished".equals(statusName);
+ }
+
+}
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/WaitForQueueStateSupport.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/WaitForQueueStateSupport.java
new file mode 100644
index 0000000000..5b4125683e
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/WaitForQueueStateSupport.java
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.HttpStatusCodeException;
+import org.springframework.web.client.RestOperations;
+
+import com.daimler.sechub.adapter.Adapter;
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.WaitForStateSupport;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxAdapterConfig;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxContext;
+import com.daimler.sechub.adapter.support.JSONAdapterSupport.Access;
+
+class WaitForQueueStateSupport extends WaitForStateSupport{
+
+ public WaitForQueueStateSupport(Adapter> adapter) {
+ super(adapter);
+ }
+
+ @Override
+ protected boolean isWaitingForOKWhenInState(String state, CheckmarxContext context) throws Exception {
+ return context.getQueueDetails().isRunning();
+ }
+
+ @Override
+ protected String getCurrentState(CheckmarxContext context) throws Exception {
+ fetchScanQueueDetails(context);
+ return null;
+ }
+
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/334332174/Get+Scan+Queue+Details+by+Scan+Id+-+GET+sast+scansQueue+id+8.7.0+and+up
+ private void fetchScanQueueDetails(CheckmarxContext context) throws AdapterException {
+ QueueDetails details = context.getQueueDetails();
+ try {
+ RestOperations restTemplate = context.getRestOperations();
+ ResponseEntity queueData = restTemplate.getForEntity(
+ context.getAPIURL("sast/scansQueue/" + context.getSessionData().getScanId()), String.class);
+ String body = queueData.getBody();
+ Access stage = context.json().fetch("stage", body);
+ String value = stage.fetch("value").asText();
+
+ details.stageValue =value;
+
+ switch (details.stageValue) {
+ case "New":
+ if (!details.newQueueEntryFound) {
+ details.newQueueEntryFound = true;
+ }
+ break;
+ case "Failed":
+ details.failureText=context.json().fetch("stageDetails", body).asText();
+ break;
+ case "Finished":
+ details.done=true;
+ break;
+ default:
+ break;
+ }
+ details.checkCount++;
+ }catch(HttpStatusCodeException e) {
+ if (HttpStatus.NOT_FOUND.equals(e.getStatusCode())) {
+ /* ok just no longer in queue / or never existed */
+ details.done=true;
+ return;
+ }
+ throw e; // rethrow
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/WaitForScanReportSupport.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/WaitForScanReportSupport.java
new file mode 100644
index 0000000000..f59cc41a1c
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/WaitForScanReportSupport.java
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.HttpStatusCodeException;
+import org.springframework.web.client.RestOperations;
+
+import com.daimler.sechub.adapter.Adapter;
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.WaitForStateSupport;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxAdapterConfig;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxAdapterContext;
+import com.daimler.sechub.adapter.support.JSONAdapterSupport.Access;
+
+class WaitForScanReportSupport extends WaitForStateSupport{
+
+ public WaitForScanReportSupport(Adapter> adapter) {
+ super(adapter);
+ }
+
+ @Override
+ protected boolean isWaitingForOKWhenInState(String state, CheckmarxAdapterContext context) throws Exception {
+ return context.getReportDetails().isRunning();
+ }
+
+ @Override
+ protected String getCurrentState(CheckmarxAdapterContext context) throws Exception {
+ fetchScanDetails(context);
+ return null;
+ }
+
+// https://checkmarx.atlassian.net/wiki/spaces/KC/pages/563806382/Get+Report+Status+by+Id+-+GET+reports+sastScan+id+status+v8.8.0+and+up
+// https://checkmarx.atlassian.net/wiki/spaces/KC/pages/814121878/Swagger+Examples+v8.8.0+-+v1
+ private void fetchScanDetails(CheckmarxAdapterContext context) throws AdapterException {
+ /* FIXME Albert Tregnaghi, 2018-10-10: the versioning of the rest API must be made fix, currently we do not send the version! this could lead
+ * to problems in future, so we should define them explicit in headers! */
+ ReportDetails details = context.getReportDetails();
+ try {
+ RestOperations restTemplate = context.getRestOperations();
+ ResponseEntity queueData = restTemplate.getForEntity(
+ context.getAPIURL("reports/sastScan/" + context.getReportId()+"/status"), String.class);
+ String body = queueData.getBody();
+
+ Access status = context.json().fetch("status", body);
+ String value= status.fetch("value").asText();
+ details.status =value;
+
+ }catch(HttpStatusCodeException e) {
+ if (HttpStatus.NOT_FOUND.equals(e.getStatusCode())) {
+ /* ok just no longer in queue / or never existed */
+ details.notFound=true;
+ return;
+ }
+ throw e; // rethrow
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/WaitForScanStateSupport.java b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/WaitForScanStateSupport.java
new file mode 100644
index 0000000000..cbb1bd28da
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/main/java/com/daimler/sechub/adapter/checkmarx/support/WaitForScanStateSupport.java
@@ -0,0 +1,57 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.HttpStatusCodeException;
+import org.springframework.web.client.RestOperations;
+
+import com.daimler.sechub.adapter.Adapter;
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.WaitForStateSupport;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxAdapterConfig;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxContext;
+import com.daimler.sechub.adapter.support.JSONAdapterSupport.Access;
+
+class WaitForScanStateSupport extends WaitForStateSupport{
+
+ public WaitForScanStateSupport(Adapter> adapter) {
+ super(adapter);
+ }
+
+ @Override
+ protected boolean isWaitingForOKWhenInState(String state, CheckmarxContext context) throws Exception {
+ return context.getScanDetails().isRunning();
+ }
+
+ @Override
+ protected String getCurrentState(CheckmarxContext context) throws Exception {
+ fetchScanDetails(context);
+ return null;
+ }
+
+ // https://checkmarx.atlassian.net/wiki/spaces/KC/pages/569442454/Get+SAST+Scan+Details+by+Scan+Id+-+GET+sast+scans+id+v8.8.0+and+up
+ private void fetchScanDetails(CheckmarxContext context) throws AdapterException {
+ ScanDetails details = context.getScanDetails();
+ try {
+ RestOperations restTemplate = context.getRestOperations();
+ ResponseEntity queueData = restTemplate.getForEntity(
+ context.getAPIURL("sast/scans/" + context.getSessionData().getScanId()), String.class);
+ String body = queueData.getBody();
+
+ Access status = context.json().fetch("status", body);
+ String statusName = status.fetch("name").asText();
+ details.statusName =statusName;
+
+ }catch(HttpStatusCodeException e) {
+ if (HttpStatus.NOT_FOUND.equals(e.getStatusCode())) {
+ /* ok just no longer in queue / or never existed */
+ details.notFound=true;
+ return;
+ }
+ throw e; // rethrow
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterTestApplication.java b/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterTestApplication.java
new file mode 100644
index 0000000000..c559d501a4
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterTestApplication.java
@@ -0,0 +1,79 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+import java.io.File;
+import java.io.FileWriter;
+
+/**
+ * This is a simple test application for checkmarx
+ * @author Albert Tregnaghi
+ *
+ */
+public class CheckmarxAdapterTestApplication {
+
+ public static void main(String[] args) throws Exception {
+ System.setProperty("log4j.logger.org.apache.http","ERROR");
+ System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http","OFF");
+
+ dump("https.proxyHost");
+ dump("https.proxyPort");
+ dump("https.nonProxyHosts");
+ dump("http.proxyHost");
+ dump("http.proxyPort");
+ dump("http.nonProxyHosts");
+ dump("javax.net.ssl.keyStore");
+ dump("javax.net.ssl.trustStore");
+
+ String user = System.getProperty("test.sechub.adapter.checkmarx.user");
+ if (user==null || user.isEmpty()) {
+ throw new IllegalArgumentException("user not set in system properties!");
+ }
+ String password = System.getProperty("test.sechub.adapter.checkmarx.password");
+ if (password==null || password.isEmpty()) {
+ throw new IllegalArgumentException("password not set in system properties!");
+ }
+ String baseUrl = System.getProperty("test.sechub.adapter.checkmarx.baseurl");
+ if (baseUrl==null || baseUrl.isEmpty()) {
+ throw new IllegalArgumentException("baseurl not set in system properties!");
+ }
+ String projectname = System.getProperty("test.sechub.adapter.checkmarx.projectName");
+ String teamId = System.getProperty("test.sechub.adapter.checkmarx.teamId");
+
+ String pathInOtherProject = "zipfile_contains_only_test1.txt.zip"; // leads to FAILED in queue
+ pathInOtherProject="zipfile_contains_only_one_simple_java_file.zip"; // should work
+ pathInOtherProject="zipfile_contains_sechub_doc_java.zip"; // should work
+
+ File zipFile = CheckmarxTestFileSupport.getTestfileSupport().createFileFromRoot("sechub-other/testsourcecode/"+pathInOtherProject);
+ /* @formatter:off */
+ CheckmarxAdapterConfig config =
+ CheckmarxConfig.builder().
+ setUser(user).
+ setProjectId(projectname).
+ setTeamIdForNewProjects(teamId).
+ setPassword(password).
+ setPathToZipFile(zipFile.getAbsolutePath()).
+ setTrustAllCertificates(true).
+ setProductBaseUrl(baseUrl).
+ build();
+ /* @formatter:on */
+
+ CheckmarxAdapterV1 adapter = new CheckmarxAdapterV1();
+ String data = adapter.start(config);
+ File file = File.createTempFile("checkmarx-adaptertest-result", ".xml");
+ FileWriter fileWriter= new FileWriter(file);
+ fileWriter.write(data);
+ fileWriter.close();
+
+ System.out.println("-----------------------------------------------------------------------------------------------------------------");
+ System.out.println("- RESULT:");
+ System.out.println("-----------------------------------------------------------------------------------------------------------------");
+ System.out.println(file.getAbsolutePath());
+
+ }
+
+
+ private static void dump(String systemPropertyName) {
+ System.out.println(systemPropertyName + "=" + System.getProperty(systemPropertyName));
+
+ }
+}
diff --git a/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/CheckmarxTestFileSupport.java b/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/CheckmarxTestFileSupport.java
new file mode 100644
index 0000000000..56e82545a2
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/CheckmarxTestFileSupport.java
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx;
+
+import com.daimler.sechub.test.TestFileSupport;
+
+public class CheckmarxTestFileSupport extends TestFileSupport {
+
+ private static final CheckmarxTestFileSupport TESTFILE_SUPPORT = new CheckmarxTestFileSupport();
+
+ public static CheckmarxTestFileSupport getTestfileSupport() {
+ return TESTFILE_SUPPORT;
+ }
+
+ CheckmarxTestFileSupport() {
+ super("sechub-adapter-checkmarx/src/test/resources");
+ }
+}
diff --git a/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxOAuthSupportTest.java b/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxOAuthSupportTest.java
new file mode 100644
index 0000000000..1f07a58181
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxOAuthSupportTest.java
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+import static org.junit.Assert.*;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.checkmarx.support.CheckmarxOAuthSupport.CheckmarxOAuthData;
+import com.daimler.sechub.adapter.support.JSONAdapterSupport;
+
+
+
+
+public class CheckmarxOAuthSupportTest {
+ private CheckmarxOAuthSupport supportToTest;
+
+ @Before
+ public void before() throws Exception {
+ supportToTest = new CheckmarxOAuthSupport();
+ }
+
+ @Test
+ public void test_data_can_be_extracted() throws AdapterException {
+ /* prepare */
+ String data = "{\"access_token\":\"12345MeUdnk6O_-EEp93I1e8rsdlHvBg\",\"expires_in\":86400,\"token_type\":\"Bearer\"}{Cache-Control=[no-store, no-cache, max-age=0, private], Pragma=[no-cache], Content-Length=[1786], Content-Type=[application/json; charset=utf-8], Server=[Microsoft-IIS/8.5], X-AspNet-Version=[4.0.30319], X-Powered-By=[ASP.NET], Date=[Tue, 25 Sep 2018 13:29:26 GMT]}";
+
+ /* execute */
+ CheckmarxOAuthData result = supportToTest.extractFromJson(JSONAdapterSupport.FOR_UNKNOWN_ADAPTER,data);
+
+ /* test */
+ assertNotNull(result);
+ assertEquals("Bearer",result.getTokenType());
+ assertEquals("12345MeUdnk6O_-EEp93I1e8rsdlHvBg",result.getAccessToken());
+ assertEquals(86400,result.getExpiresIn());
+ }
+
+}
diff --git a/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxProjectSupportTest.java b/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxProjectSupportTest.java
new file mode 100644
index 0000000000..2fd1a5d06b
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxProjectSupportTest.java
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+import static org.junit.Assert.*;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.checkmarx.CheckmarxSessionData;
+import com.daimler.sechub.adapter.support.JSONAdapterSupport;
+
+
+
+
+public class CheckmarxProjectSupportTest {
+ private CheckmarxProjectSupport supportToTest;
+
+ @Before
+ public void before() throws Exception {
+ supportToTest = new CheckmarxProjectSupport();
+ }
+
+ @Test
+ public void test_data_can_be_extracted() throws AdapterException {
+ /* prepare */
+ String data = "[{\r\n" +
+ " \"id\": 1234,\r\n" +
+ " \"teamId\": \"xxxx-aax7-45asdf-b194-c736b605700d\",\r\n" +
+ " \"name\": \"TheName\",\r\n" +
+ " \"isPublic\": true,\r\n" +
+ " \"customFields\": [],\r\n" +
+ " \"links\": [\r\n" +
+ " {\r\n" +
+ " \"rel\": \"self\",\r\n" +
+ " \"uri\": \"/projects/113\"\r\n" +
+ " },\r\n" +
+ " {\r\n" +
+ " \"rel\": \"teams\",\r\n" +
+ " \"uri\": \"/auth/teams/\"\r\n" +
+ " },\r\n" +
+ " {\r\n" +
+ " \"rel\": \"latestscan\",\r\n" +
+ " \"uri\": \"/sast/scans?projectId=12213&last=1\"\r\n" +
+ " },\r\n" +
+ " {\r\n" +
+ " \"rel\": \"allscans\",\r\n" +
+ " \"uri\": \"/sast/scans?projectId=12213\"\r\n" +
+ " },\r\n" +
+ " {\r\n" +
+ " \"rel\": \"scansettings\",\r\n" +
+ " \"uri\": \"/sast/scanSettings/1234\"\r\n" +
+ " },\r\n" +
+ " {\r\n" +
+ " \"type\": \"local\",\r\n" +
+ " \"rel\": \"source\",\r\n" +
+ " \"uri\": null\r\n" +
+ " }\r\n" +
+ " ]\r\n" +
+ " }\r\n" +
+ "]{Cache-Control=[no-cache], Pragma=[no-cache], Content-Type=[application/json; charset=utf-8], Expires=[-1], Server=[Microsoft-IIS/8.5], api-version=[2.0], X-AspNet-Version=[4.0.30319], X-Powered-By=[ASP.NET], Date=[Tue, 25 Sep 2018 14:06:42 GMT], Content-Length=[725]}";
+
+ /* execute */
+ CheckmarxSessionData result = supportToTest.extractFirstProjectFromJsonWithProjectArray(JSONAdapterSupport.FOR_UNKNOWN_ADAPTER,data);
+
+ /* test */
+ assertNotNull(result);
+ assertEquals(1234L,result.getProjectId());
+ assertEquals("TheName",result.getProjectName());
+ }
+
+}
diff --git a/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxScanReportSupportTest.java b/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxScanReportSupportTest.java
new file mode 100644
index 0000000000..8488c88add
--- /dev/null
+++ b/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/support/CheckmarxScanReportSupportTest.java
@@ -0,0 +1,74 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.checkmarx.support;
+
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestOperations;
+
+import com.daimler.sechub.adapter.checkmarx.CheckmarxAdapterContext;
+
+public class CheckmarxScanReportSupportTest {
+ private CheckmarxScanReportSupport supportToTest;
+ // FEFF because this is the Unicode char represented by the UTF-8 byte order mark (EF BB BF).
+ public static final String UTF8_BOM = "\uFEFF";
+ @Before
+ public void before() throws Exception {
+ supportToTest = new CheckmarxScanReportSupport();
+
+ }
+
+ @Test
+ public void fetchReportResult__support_does_use_result_as_is_when_empty() throws Exception {
+ /* prepare */
+ CheckmarxAdapterContext context = prepareContent("");
+
+ /* execute */
+ supportToTest.fetchReportResult(context);
+
+ /* test */
+ verify(context).setResult("");
+ }
+
+ @Test
+ public void fetchReportResult__support_does_remove_existing_byte_order_marks() throws Exception {
+ /* prepare */
+ CheckmarxAdapterContext context = prepareContent(UTF8_BOM+" entity = new ResponseEntity<>(content, HttpStatus.OK);
+
+ RestOperations restOperations = mock(RestOperations.class);
+ CheckmarxAdapterContext context = mock(CheckmarxAdapterContext.class);
+
+ when(context.getRestOperations()).thenReturn(restOperations);
+ when(context.getAPIURL(any())).thenReturn("path");
+ when(restOperations.getForEntity(eq("path"), eq(String.class))).thenReturn(entity);
+ return context;
+ }
+
+}
diff --git a/sechub-adapter-nessus/README.md b/sechub-adapter-nessus/README.md
new file mode 100644
index 0000000000..d8a8e760c7
--- /dev/null
+++ b/sechub-adapter-nessus/README.md
@@ -0,0 +1,9 @@
+
+About this project
+==================
+
+This an adapter project to access product NETSPARKER.
+It has no dependency to any sechub part and can be used as a single command line program too (for test purpose).
+
+A product executor can use this adapter to access the product.
+The adapter itself is pretty dumb and does only now the product stuff...
\ No newline at end of file
diff --git a/sechub-adapter-nessus/build.gradle b/sechub-adapter-nessus/build.gradle
new file mode 100644
index 0000000000..a8fbf6ebc6
--- /dev/null
+++ b/sechub-adapter-nessus/build.gradle
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: MIT
+ /*============================================================================
+ * Build file for subproject
+ *
+ * Root build file: "${rootProject.projectDir}/build.gradle"
+ * ============================================================================
+ */
+dependencies {
+
+ compile project(':sechub-adapter')
+}
+
\ No newline at end of file
diff --git a/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/MockedNessusAdapter.java b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/MockedNessusAdapter.java
new file mode 100644
index 0000000000..7795a67fbb
--- /dev/null
+++ b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/MockedNessusAdapter.java
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
+
+import com.daimler.sechub.adapter.AdapterProfiles;
+import com.daimler.sechub.adapter.mock.AbstractMockedAdapter;
+import com.daimler.sechub.adapter.mock.MockedAdapter;
+
+@Profile(AdapterProfiles.MOCKED_PRODUCTS)
+@Component
+public class MockedNessusAdapter extends AbstractMockedAdapter implements NessusAdapter, MockedAdapter {
+
+ protected void validateConfigAsDefinedInMockYAML(NessusAdapterConfig config) {
+ /*
+ * the token is for the apiToken'nessus-api-token' and user id
+ * 'nessus-user-id' from application-mock.yml!
+ */
+ if (!"nessus-password".equals(config.getPassword())) {
+ throw new IllegalArgumentException(config.getPassword());
+ }
+ if (!"nessus-default-policiy-id".equals(config.getPolicyId())) {
+ throw new IllegalArgumentException("Nessus policy not as expected:" + config.getPolicyId());
+ }
+ String productBaseURL = config.getProductBaseURL();
+
+ boolean baseURLAsExpected = "https://nessus-intranet.mock.example.org:6000".equals(productBaseURL);
+ baseURLAsExpected= baseURLAsExpected || "https://nessus-internet.mock.example.org.com:6000".equals(productBaseURL);
+ if (!baseURLAsExpected) {
+ throw new IllegalArgumentException("Nessus base url not as expected:" + productBaseURL);
+ }
+ }
+
+
+}
diff --git a/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapter.java b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapter.java
new file mode 100644
index 0000000000..1bd5c84250
--- /dev/null
+++ b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapter.java
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import com.daimler.sechub.adapter.Adapter;
+
+public interface NessusAdapter extends Adapter{
+
+
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapterConfig.java b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapterConfig.java
new file mode 100644
index 0000000000..5556a746d6
--- /dev/null
+++ b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapterConfig.java
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import com.daimler.sechub.adapter.AdapterConfig;
+
+public interface NessusAdapterConfig extends AdapterConfig {
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapterContext.java b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapterContext.java
new file mode 100644
index 0000000000..af28235ba6
--- /dev/null
+++ b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapterContext.java
@@ -0,0 +1,26 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import com.daimler.sechub.adapter.AdapterContext;
+
+public interface NessusAdapterContext extends AdapterContext {
+
+ String getNessusPolicyUID();
+
+ void setNessusPolicyId(String nessusPolicyUID);
+
+ void setNessusSessionToken(String token);
+
+ String getNessusSessionToken();
+
+ void setNessusScanId(Long scanId);
+
+ Long getNessusScanId();
+
+ String getHistoryId();
+
+ void setHistoryId(String id);
+
+ String getExportFileId();
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1.java b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1.java
new file mode 100644
index 0000000000..5ed0efd8ec
--- /dev/null
+++ b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1.java
@@ -0,0 +1,461 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import static org.springframework.http.HttpStatus.*;
+
+import java.text.MessageFormat;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Profile;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.RestOperations;
+
+import com.daimler.sechub.adapter.AbstractAdapter;
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.AdapterLogId;
+import com.daimler.sechub.adapter.AdapterProfiles;
+import com.daimler.sechub.adapter.WaitForStateSupport;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+
+/**
+ * This component is able to handle NESSUS API V1
+ *
+ * @author Albert Tregnaghi
+ *
+ */
+@Component
+@Profile({ AdapterProfiles.REAL_PRODUCTS })
+public class NessusAdapterV1 extends AbstractAdapter
+ implements NessusAdapter {
+
+ private static final Logger LOG = LoggerFactory.getLogger(NessusAdapterV1.class);
+ private static final String APICALL_LOGIN = "/session";
+ private static final String APICALL_LOGOUT = APICALL_LOGIN;
+ private static final String APICALL_GET_POLICIES = "/editor/policy/templates";
+ private static final String APICALL_ADD_NEW_SCAN = "/scans";
+ private static final String MSG_APICALL_GET_HISTORY_IDS = "/scans/{0}";
+ private static final String MSG_APICALL_LAUNCH_SCAN = "/scans/{0}/launch";
+ private static final String MSG_APICALL_EXPORT_SCAN = "/scans/{0}/export";
+ private static final String MSG_APICALL_EXPORT_SCAN_STATUS = "/scans/{0}/export/{1}/status";
+ private static final String MSG_APICALL_EXPORT_SCAN_DOWNLOAD = "/scans/{0}/export/{1}/download";
+
+ @Override
+ public String start(NessusAdapterConfig config) throws AdapterException {
+ try {
+ NessusContext context = new NessusContext(config, this);
+ NessusWaitForScanStateSupport waitForScanDoneSupport = new NessusWaitForScanStateSupport();
+ WaitForExportStatusSupport waitForExportDoneSupport = new WaitForExportStatusSupport();
+
+ loginAndFetchToken(context);
+ updateContextWithNessusPolicyUUID(context);
+ /*
+ * FIXME Albert Tregnaghi, 2018-04-03:ask tim and daniel about creating always new scans
+ */
+ addNewScan(context);
+ launchScan(context);
+
+ waitForScanDoneSupport.waitForOK(context);
+
+ startExport(context);
+ waitForExportDoneSupport.waitForOK(context);
+
+ logout(context);
+ return context.getResult();
+ } catch (AdapterException e) {
+ throw e;
+ } catch (Exception e) {
+ throw asAdapterException("Was not able to perform scan!", e, config);
+ }
+
+ }
+
+ private void updateContextWithNessusPolicyUUID(NessusContext context) throws AdapterException {
+ String nessusPolicyUID = resolvePolicyUID(context);
+ if (nessusPolicyUID == null) {
+ NessusAdapterConfig config = context.getConfig();
+ throw asAdapterException("There exists no nessus policy UUID for title:" + config.getPolicyId(), config);
+ }
+ context.setNessusPolicyId(nessusPolicyUID);
+ }
+
+ private void startExport(NessusContext context) throws AdapterException {
+ NessusAdapterConfig config = context.getConfig();
+ AdapterLogId adapterLogId = getAdapterLogId(config);
+ LOG.debug("{} started scan result export", adapterLogId);
+
+ String apiUrl = createScanExportApiURL(context);
+ String json = "{\n" + " \"history_id\": " + context.getHistoryId() + ",\n" + " \"format\":\"nessus\"\n" + "}\n"
+ + "";
+
+ MultiValueMap headers = createHeader(config);
+
+ HttpEntity request = new HttpEntity<>(json, headers);
+
+ ResponseEntity response = context.getRestOperations().postForEntity(apiUrl, request, String.class);
+ if (!OK.equals(response.getStatusCode())) {
+ throw new NessusRESTFailureException(response.getStatusCode(), response.getBody());
+ }
+ String fileId = context.json().fetch("file", response).asText();
+ context.setExportFileId(fileId);
+ LOG.debug("{} fetched export data, fileId={}", adapterLogId, fileId);
+
+ }
+
+ protected String ensureHistoryIdInContext(NessusAdapterContext context) throws AdapterException {
+ String historyId = context.getHistoryId();
+ if (historyId != null) {
+ return historyId;
+ }
+ context.setHistoryId(resolveHistoryId(context));
+ return context.getHistoryId();
+ }
+
+ private String resolveHistoryId(NessusAdapterContext context) throws AdapterException {
+ String traceID = context.getConfig().getTraceID();
+ LOG.debug("{} try to fetch history id", traceID);
+
+ String apiUrl = createGetHistoryIdsApiURL(context);
+ ResponseEntity response = context.getRestOperations().getForEntity(apiUrl, String.class);
+ if (!OK.equals(response.getStatusCode())) {
+ throw new NessusRESTFailureException(response.getStatusCode(), response.getBody());
+ }
+ String content = response.getBody();
+ String historyId = resolveHistoryIdByUUID(content, context);
+ LOG.debug("{} found history id {}", traceID, historyId);
+
+ return historyId;
+ }
+
+ private void launchScan(NessusAdapterContext context) throws AdapterException {
+ NessusAdapterConfig config = context.getConfig();
+
+ MultiValueMap headers = createHeader(config);
+
+ HttpEntity request = new HttpEntity<>(headers);
+
+ String apiUrl = createLaunchApiURL(context);
+
+ try {
+ ResponseEntity response = context.getRestOperations().postForEntity(apiUrl, request, String.class);
+ /* resolve token from response */
+ String body = response.getBody();
+ LOG.debug("{} resulted response body was '{}'", getAdapterLogId(context), body);
+ String scanUUID = extractScanUUID(context, body);
+ context.setProductContextId(scanUUID);
+
+ } catch (HttpClientErrorException e) {
+ throw asAdapterException("Problems with url:" + apiUrl + ":" + e.getResponseBodyAsString(), context);
+ }
+ }
+
+ String extractScanUUID(NessusAdapterContext context, String body) throws AdapterException {
+ String scanUUID = context.json().fetch("scan_uuid", body).asText();
+ LOG.debug("{} resulted scanId uuid '{}'", getAdapterLogId(context), scanUUID);
+ return scanUUID;
+ }
+
+ String createGetHistoryInfoApiURL(NessusAdapterContext context) {
+ return createGetHistoryIdsApiURL(context);// same url
+ }
+
+ String createGetHistoryIdsApiURL(NessusAdapterContext context) {
+ String part = MessageFormat.format(MSG_APICALL_GET_HISTORY_IDS, Long.toString(context.getNessusScanId()));
+ return createAPIURL(part, context);
+ }
+
+ String createLaunchApiURL(NessusAdapterContext context) {
+ String part = MessageFormat.format(MSG_APICALL_LAUNCH_SCAN, Long.toString(context.getNessusScanId()));
+ return createAPIURL(part, context);
+ }
+
+ String createScanExportApiURL(NessusAdapterContext context) {
+ String part = MessageFormat.format(MSG_APICALL_EXPORT_SCAN, Long.toString(context.getNessusScanId()));
+ return createAPIURL(part, context);
+ }
+
+ String createScanExportStatusApiURL(NessusAdapterContext context) {
+ String part = MessageFormat.format(MSG_APICALL_EXPORT_SCAN_STATUS, Long.toString(context.getNessusScanId()),
+ context.getExportFileId());
+ return createAPIURL(part, context);
+ }
+
+ String createScanExportDownloadApiURL(NessusAdapterContext context) {
+ String part = MessageFormat.format(MSG_APICALL_EXPORT_SCAN_DOWNLOAD, Long.toString(context.getNessusScanId()),
+ context.getExportFileId());
+ return createAPIURL(part, context);
+ }
+
+ void addNewScan(NessusAdapterContext context) throws AdapterException {
+ NessusAdapterConfig config = context.getConfig();
+ String jsonAsString = createNewScanJSON(context);
+
+ MultiValueMap headers = createHeader(config);
+
+ HttpEntity request = new HttpEntity<>(jsonAsString, headers);
+
+ String apiUrl = createAPIURL(APICALL_ADD_NEW_SCAN, config);
+
+ try {
+ ResponseEntity response = context.getRestOperations().postForEntity(apiUrl, request, String.class);
+ /* resolve token from response */
+ String body = response.getBody();
+ LOG.debug("{} resulted response body was '{}'", config.getTraceID(), body);
+ long scanId = context.json().fetch("scan", body).fetch("id").asLong();
+ LOG.debug("{} resulted scanId is '{}'", config.getTraceID(), scanId);
+ context.setNessusScanId(scanId);
+
+ } catch (HttpClientErrorException e) {
+ throw asAdapterException("Was not able to add new scan", e, config);
+ }
+
+ }
+
+ String createNewScanJSON(NessusAdapterContext context) {
+ NessusAdapterConfig config = context.getConfig();
+ /* @formatter:off */
+ return createNewScanJSONBuilder().
+ uuid(context.getNessusPolicyUID()).
+ name(config.getTraceID()+"_"+config.getTargetType()).
+ description("SecHub scan "+config.getTraceID()+" for target type "+config.getTargetType()).
+ targetsURIs(config.getTargetURIs()).
+ targetIPs(config.getTargetIPs()).build();
+ /* @formatter:on */
+
+ }
+
+ NessusAdapterV1NewScanJSONBuilder createNewScanJSONBuilder() {
+ return new NessusAdapterV1NewScanJSONBuilder();
+ }
+
+ private String resolvePolicyUID(NessusAdapterContext context) throws AdapterException {
+ String content = fetchPoliciesBody(context);
+ String searchedPolicyTitle = context.getConfig().getPolicyId();
+ return resolvePolicyUIDByTitle(content, searchedPolicyTitle, context);
+ }
+
+ String resolvePolicyUIDByTitle(String content, String searchedPolicyTitle, NessusAdapterContext context)
+ throws AdapterException {
+ try {
+
+ ArrayNode templatesArray = context.json().fetch("templates", content).asArray();
+ for (Iterator elements = templatesArray.elements(); elements.hasNext();) {
+ JsonNode node = elements.next();
+ String title = context.json().fetch("title", node).asText();
+ if (searchedPolicyTitle.equals(title)) {
+ return context.json().fetch("uuid", node).asText();
+ }
+ }
+ return null;
+ } catch (Exception e) {
+ // JSON errors are marked as adapter exceptions and all others too...
+ throw asAdapterException("Was not able to resolve policy uid", e, context);
+ }
+ }
+
+ String resolveHistoryIdByUUID(String content, NessusAdapterContext context) throws AdapterException {
+ String uuid = context.getProductContextId();
+ if (uuid == null) {
+ throw new IllegalStateException("No nessus uuid available!");
+ }
+ return context.json().fetch("history", content)
+ .fetchArrayElementHaving("history_id", Collections.singletonMap("uuid", uuid)).asText();
+ }
+
+ /**
+ * Try to login with user credentials and fetch session token from NESSUS. The
+ * token is stored in context.
+ *
+ * @param context
+ * @throws AdapterException
+ */
+ void loginAndFetchToken(NessusAdapterContext context) throws AdapterException {
+ NessusAdapterConfig config = context.getConfig();
+ String traceID = config.getTraceID();
+
+ LOG.debug("{} start login at {}", traceID, config.getProductBaseURL());
+
+ MultiValueMap headers = createHeader(config);
+
+ Map json = new TreeMap<>();
+ json.put("username", config.getUser());
+ json.put("password", config.getPassword());
+
+ String jsonAsString = context.json().toJSON(json);
+
+ HttpEntity request = new HttpEntity<>(jsonAsString, headers);
+
+ String apiUrl = createAPIURL(APICALL_LOGIN, config);
+ try {
+ ResponseEntity response = context.getRestOperations().postForEntity(apiUrl, request, String.class);
+ /* resolve token from response */
+ String token = context.json().fetch("token", response).asText();
+ LOG.debug("{} resulted token is '{}'", traceID, token);
+
+ if (token == null || token.isEmpty()) {
+ throw asAdapterException("Login failed, no token returned!", config);
+ }
+ context.setNessusSessionToken(token);
+
+ } catch (HttpClientErrorException e) {
+ throw asAdapterException("Was not able to login by url:" + apiUrl, e, context);
+ }
+
+ }
+
+ String fetchPoliciesBody(NessusAdapterContext context) throws AdapterException {
+ NessusAdapterConfig config = context.getConfig();
+ String traceID = config.getTraceID();
+
+ LOG.debug("{} start scanning for list of policies at {}", traceID, config.getProductBaseURL());
+
+ String apiUrl = createAPIURL(APICALL_GET_POLICIES, config);
+ try {
+ RestOperations restTemplate = context.getRestOperations();
+ ResponseEntity response = restTemplate.getForEntity(apiUrl, String.class);
+
+ /* resolve token from response */
+ return response.getBody();
+ } catch (HttpClientErrorException e) {
+ throw asAdapterException("Was not able to fetch policies body by url:" + apiUrl, e, context);
+ }
+
+ }
+
+ void logout(NessusAdapterContext context) {
+ String apiURL = createAPIURL(APICALL_LOGOUT, context.getConfig());
+ context.getRestOperations().delete(apiURL);
+ context.setNessusSessionToken(null);
+
+ }
+
+ private MultiValueMap createHeader(NessusAdapterConfig config) {
+ MultiValueMap headers = new LinkedMultiValueMap<>();
+ return headers;
+ }
+
+ String dumpPolicies(NessusAdapterConfig config) throws AdapterException {
+ try {
+ NessusContext context = new NessusContext(config, this);
+ loginAndFetchToken(context);
+ return fetchPoliciesBody(context);
+
+ } catch (AdapterException e) {
+ throw e;
+ } catch (Exception e) {
+ throw asAdapterException("Was not able to perform scan!", e, config);
+ }
+ }
+
+ @Override
+ protected String getAPIPrefix() {
+ return null;
+ }
+
+ private class NessusWaitForScanStateSupport extends WaitForStateSupport {
+
+ public NessusWaitForScanStateSupport() {
+ super(NessusAdapterV1.this);
+ }
+
+ @Override
+ protected boolean isWaitingForOKWhenInState(String state, NessusAdapterContext context) {
+ return !NessusState.isWellknown(state);
+ }
+
+ @Override
+ protected void handleNoLongerWaitingState(String state, NessusAdapterContext context) throws AdapterException {
+ NessusAdapterConfig config = context.getConfig();
+ if (NessusState.COMPLETE.isRepresentedBy(state)) {
+ LOG.debug("{} completed", getAdapterLogId(config));
+ return;
+ }
+ if (NessusState.CANCELED.isRepresentedBy(state)) {
+ LOG.debug("{} canceled", getAdapterLogId(config));
+ throw asAdapterCanceledByUserException(config);
+ }
+ throw asAdapterException(state + " is wellknown but not handled by adapter!", config);
+
+ }
+
+ @Override
+ protected String getCurrentState(NessusAdapterContext context) throws Exception {
+ String historyID = ensureHistoryIdInContext(context);
+
+ String body = "{\"history_id\":\"" + historyID + "\"}";
+ AdapterLogId adapterLogId = getAdapterLogId(context.getConfig());
+ LOG.debug("{} try to fetch history information for '{}'", adapterLogId, historyID);
+ String apiUrl = createGetHistoryInfoApiURL(context);
+
+ /* strange but necessary for NESSUS: a HTTP GET with a body... */
+ MultiValueMap headers = createHeader(context.getConfig());
+ HttpEntity entity = new HttpEntity<>(body, headers);
+
+ ResponseEntity response = context.getRestOperations().exchange(apiUrl, HttpMethod.GET, entity,
+ String.class);
+ if (!OK.equals(response.getStatusCode())) {
+ throw new NessusRESTFailureException(response.getStatusCode(), response.getBody());
+ }
+ String status = context.json().fetch("info", response).fetch("status").asText();
+ LOG.debug("{} found status {}", adapterLogId, status);
+ return status;
+ }
+ }
+
+ private class WaitForExportStatusSupport extends WaitForStateSupport {
+
+ public WaitForExportStatusSupport() {
+ super(NessusAdapterV1.this);
+ }
+
+ @Override
+ protected boolean isWaitingForOKWhenInState(String state, NessusAdapterContext context) throws AdapterException {
+ return !"ready".equalsIgnoreCase(state);
+ }
+
+ @Override
+ protected void handleNoLongerWaitingState(String state, NessusAdapterContext context) throws Exception {
+ String apiUrl = createScanExportDownloadApiURL(context);
+
+ ResponseEntity response = context.getRestOperations().getForEntity(apiUrl, String.class);
+ if (!OK.equals(response.getStatusCode())) {
+ throw new NessusRESTFailureException(response.getStatusCode(), response.getBody());
+ }
+
+ String result = response.getBody();
+ context.setResult(result);
+ LOG.debug("{} fetched export status, result={}", getAdapterLogId(context), context.getResult());
+
+ }
+
+ @Override
+ protected String getCurrentState(NessusAdapterContext context) throws Exception {
+ String apiUrl = createScanExportStatusApiURL(context);
+
+ ResponseEntity response = context.getRestOperations().getForEntity(apiUrl, String.class);
+ if (!OK.equals(response.getStatusCode())) {
+ throw new NessusRESTFailureException(response.getStatusCode(), response.getBody());
+ }
+
+ String state = context.json().fetch("status", response).asText();
+
+ LOG.debug("{} fetched export status, fileId={}, state={}", getAdapterLogId(context),
+ context.getExportFileId(), state);
+
+ return state;
+ }
+
+ }
+
+}
diff --git a/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1NewScanJSONBuilder.java b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1NewScanJSONBuilder.java
new file mode 100644
index 0000000000..65d44f599b
--- /dev/null
+++ b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1NewScanJSONBuilder.java
@@ -0,0 +1,79 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import java.net.InetAddress;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.springframework.util.StringUtils;
+
+public class NessusAdapterV1NewScanJSONBuilder {
+
+ private String uuid;
+ private String name;
+ private String description;
+ LinkedHashSet targetURIs = new LinkedHashSet<>();
+ LinkedHashSet targetIPs = new LinkedHashSet<>();
+
+ public NessusAdapterV1NewScanJSONBuilder uuid(String uuid) {
+ this.uuid=uuid;
+ return this;
+ }
+
+ public NessusAdapterV1NewScanJSONBuilder name(String name) {
+ this.name=name;
+ return this;
+ }
+
+ public NessusAdapterV1NewScanJSONBuilder description(String description) {
+ this.description=description;
+ return this;
+ }
+
+ public NessusAdapterV1NewScanJSONBuilder targetsURIs(Set targetURIs) {
+ if (targetURIs==null) {
+ return this;
+ }
+ this.targetURIs.addAll(targetURIs);
+ return this;
+ }
+
+ public NessusAdapterV1NewScanJSONBuilder targetIPs(Set targetIPs) {
+ if (targetIPs==null) {
+ return this;
+ }
+ this.targetIPs.addAll(targetIPs);
+ return this;
+ }
+
+ public String build() {
+ String targets = buildTargetsCommaSeparated();
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("{");
+ sb.append(" \"uuid\":\"").append(uuid).append("\",");
+ sb.append(" \"settings\":{\n");
+ sb.append(" \"name\":\"").append(name).append("\",\n");
+ sb.append(" \"description\":\"").append(description).append("\",\n");
+ sb.append(" \"text_targets\":\"").append(targets).append("\"\n");
+ sb.append(" }\n");
+ sb.append("}");
+
+ return sb.toString();
+ }
+
+ private String buildTargetsCommaSeparated() {
+ List simpleTargetList = new ArrayList<>();
+ for (URI uri: targetURIs) {
+ simpleTargetList.add(uri.toString());
+ }
+ for (InetAddress ip: targetIPs) {
+ simpleTargetList.add(ip.getHostAddress());
+ }
+ return StringUtils.collectionToCommaDelimitedString(simpleTargetList);
+ }
+
+}
diff --git a/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusClientHttpRequestInterceptor.java b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusClientHttpRequestInterceptor.java
new file mode 100644
index 0000000000..6d2039af60
--- /dev/null
+++ b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusClientHttpRequestInterceptor.java
@@ -0,0 +1,34 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import java.io.IOException;
+
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpRequest;
+import org.springframework.http.MediaType;
+import org.springframework.http.client.ClientHttpRequestExecution;
+import org.springframework.http.client.ClientHttpRequestInterceptor;
+import org.springframework.http.client.ClientHttpResponse;
+
+public class NessusClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
+
+ private NessusContext context;
+
+ public NessusClientHttpRequestInterceptor(NessusContext context) {
+ this.context=context;
+ }
+
+ @Override
+ public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
+ throws IOException {
+
+ HttpHeaders headers = request.getHeaders();
+ headers.remove("content-type"); // strange, but sometimes there was a content-type (plain-text already added)
+ headers.remove("Authorization");
+
+ headers.add("content-type", MediaType.APPLICATION_JSON_VALUE);
+ headers.add("X-Cookie", "token=" + context.nessusSessionToken);
+ return execution.execute(request, body);
+ }
+
+}
diff --git a/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusConfig.java b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusConfig.java
new file mode 100644
index 0000000000..e3d260d79d
--- /dev/null
+++ b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusConfig.java
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import com.daimler.sechub.adapter.AbstractAdapterConfig;
+import com.daimler.sechub.adapter.AbstractAdapterConfigBuilder;
+
+public class NessusConfig extends AbstractAdapterConfig implements NessusAdapterConfig{
+
+ private NessusConfig() {
+ }
+
+ public static NessusConfigBuilder builder() {
+ return new NessusConfigBuilder();
+ }
+
+ /* FIXME Albert Tregnaghi, 2018-03-26: cleanup! it was copied from netsparker... */
+ public static class NessusConfigBuilder extends AbstractAdapterConfigBuilder{
+
+ @Override
+ protected void customBuild(NessusAdapterConfig config) {
+
+ }
+
+ @Override
+ protected NessusAdapterConfig buildInitialConfig() {
+ return new NessusConfig();
+ }
+
+ @Override
+ protected void customValidate() {
+ assertUserSet();
+ assertPasswordSet();
+
+ }
+
+ }
+
+}
diff --git a/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusContext.java b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusContext.java
new file mode 100644
index 0000000000..4974790922
--- /dev/null
+++ b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusContext.java
@@ -0,0 +1,80 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import org.springframework.http.client.ClientHttpRequestInterceptor;
+
+import com.daimler.sechub.adapter.AbstractSpringRestAdapterContext;
+
+/**
+ * Context for NESSUS execution.
+ *
+ * @author Albert Tregnaghi
+ *
+ */
+public class NessusContext extends AbstractSpringRestAdapterContext
+ implements NessusAdapterContext {
+
+ String nessusSessionToken = "";
+ String nessusPolicyUID;
+ Long nessusScanId;
+ private String historyId;
+ private String exportFileId;
+
+ public NessusContext(NessusAdapterConfig config, NessusAdapter adapter) {
+ super(config, adapter);
+ }
+
+ @Override
+ protected ClientHttpRequestInterceptor createInterceptorOrNull(NessusAdapterConfig config) {
+ return new NessusClientHttpRequestInterceptor(this);
+ }
+
+ @Override
+ public String getNessusPolicyUID() {
+ return nessusPolicyUID;
+ }
+
+ @Override
+ public void setNessusPolicyId(String nessusPolicyUID) {
+ this.nessusPolicyUID = nessusPolicyUID;
+ }
+
+ @Override
+ public void setNessusSessionToken(String token) {
+ this.nessusSessionToken = token;
+ }
+
+ public String getNessusSessionToken() {
+ return nessusSessionToken;
+ }
+
+ @Override
+ public void setNessusScanId(Long scanId) {
+ this.nessusScanId = scanId;
+ }
+
+ @Override
+ public Long getNessusScanId() {
+ return nessusScanId;
+ }
+
+ @Override
+ public String getHistoryId() {
+ return historyId;
+ }
+
+ @Override
+ public void setHistoryId(String id) {
+ this.historyId = id;
+
+ }
+
+ public void setExportFileId(String fileId) {
+ this.exportFileId = fileId;
+ }
+
+ public String getExportFileId() {
+ return exportFileId;
+ }
+
+}
diff --git a/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusRESTFailureException.java b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusRESTFailureException.java
new file mode 100644
index 0000000000..daa49f20ec
--- /dev/null
+++ b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusRESTFailureException.java
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import org.springframework.http.HttpStatus;
+
+public class NessusRESTFailureException extends RuntimeException {
+
+ private static final long serialVersionUID = 6448794893494468643L;
+ private final String body;
+
+ public NessusRESTFailureException(HttpStatus status, String body) {
+ super("Netsparker REST failed with HTTP Status:" + (status != null ? status.name() : "null"));
+ this.body = body;
+ }
+
+ public String getResponseBody() {
+ return body;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + "\nBody:\n" + getResponseBody();
+ }
+}
diff --git a/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusState.java b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusState.java
new file mode 100644
index 0000000000..a93f8462a3
--- /dev/null
+++ b/sechub-adapter-nessus/src/main/java/com/daimler/sechub/adapter/nessus/NessusState.java
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+public enum NessusState {
+ COMPLETE("completed"), CANCELED("canceled");
+
+ private String id;
+
+ private NessusState(String id) {
+ if (id == null) {
+ throw new IllegalArgumentException("id may not be null!");
+ }
+ this.id = id;
+ }
+
+ public boolean isRepresentedBy(String state) {
+ if (state == null) {
+ return false;
+ }
+ return id.equals(state);
+ }
+
+ public static boolean isWellknown(String state) {
+ for (NessusState value : values()) {
+ if (value.isRepresentedBy(state)) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusAdapterTestFileSupport.java b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusAdapterTestFileSupport.java
new file mode 100644
index 0000000000..ec740c911b
--- /dev/null
+++ b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusAdapterTestFileSupport.java
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import com.daimler.sechub.test.SechubTestComponent;
+import com.daimler.sechub.test.TestFileSupport;
+
+@SechubTestComponent
+public class NessusAdapterTestFileSupport extends TestFileSupport {
+ private static final NessusAdapterTestFileSupport TESTFILE_SUPPORT = new NessusAdapterTestFileSupport();
+
+ public static NessusAdapterTestFileSupport getTestfileSupport() {
+ return TESTFILE_SUPPORT;
+ }
+
+ NessusAdapterTestFileSupport() {
+ super("sechub-adapter-nessus/src/test/resources");
+ }
+
+}
diff --git a/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1NewScanJSONBuilderTest.java b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1NewScanJSONBuilderTest.java
new file mode 100644
index 0000000000..662d973a47
--- /dev/null
+++ b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1NewScanJSONBuilderTest.java
@@ -0,0 +1,112 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import static org.junit.Assert.*;
+
+import java.net.InetAddress;
+import java.net.URI;
+import java.util.Collections;
+
+import org.json.JSONObject;
+import org.junit.Before;
+import org.junit.Test;
+
+public class NessusAdapterV1NewScanJSONBuilderTest {
+
+ private NessusAdapterV1NewScanJSONBuilder builderToTest;
+
+ @Before
+ public void before() throws Exception {
+ builderToTest = new NessusAdapterV1NewScanJSONBuilder();
+ }
+
+
+ @Test
+ public void standard_setup_with_one_url_build_is_json_and_has_expected_content() throws Exception{
+
+ /* execute */
+ /* @formatter:off */
+ String result = builderToTest.
+ description("description1").
+ name("name1").
+ uuid("uuid1").
+ targetsURIs(Collections.singleton(URI.create("http://www.example.com"))).
+ build();
+ /* @formatter:on */
+
+ /* test */
+ JSONObject asJson = new JSONObject(result);// so valid json..
+ assertEquals("uuid1", asJson.getString("uuid"));
+
+ JSONObject settings = asJson.getJSONObject("settings");
+ assertEquals("name1", settings.get("name"));
+ assertEquals("http://www.example.com", settings.getString("text_targets"));
+ assertEquals("description1", settings.get("description"));
+
+ }
+
+ @Test
+ public void standard_setup_with_one_ip_build_is_json_and_has_expected_content() throws Exception{
+
+ /* execute */
+ /* @formatter:off */
+ String result = builderToTest.
+ description("description1").
+ name("name1").
+ uuid("uuid1").
+ targetIPs(Collections.singleton(InetAddress.getByName("192.168.1.1"))).
+ build();
+ /* @formatter:on */
+
+ /* test */
+ JSONObject asJson = new JSONObject(result);// so valid JSON..
+ assertEquals("uuid1", asJson.getString("uuid"));
+
+ JSONObject settings = asJson.getJSONObject("settings");
+ assertEquals("name1", settings.get("name"));
+ assertEquals("192.168.1.1", settings.getString("text_targets"));
+ assertEquals("description1", settings.get("description"));
+
+ }
+
+ @Test
+ public void standard_setup_with_one_url_and_another_IP_build_is_json_and_has_expected_content_uris_first() throws Exception{
+
+ /* execute */
+ /* @formatter:off */
+ String result = builderToTest.
+ description("description1").
+ name("name1").
+ uuid("uuid1").
+ targetIPs(Collections.singleton(InetAddress.getByName("192.168.1.1"))).
+ targetsURIs(Collections.singleton(URI.create("http://www.example.com"))).
+ build();
+ /* @formatter:on */
+
+ /* test */
+ JSONObject asJson = new JSONObject(result);// so valid json..
+ assertEquals("uuid1", asJson.getString("uuid"));
+
+ JSONObject settings = asJson.getJSONObject("settings");
+ assertEquals("name1", settings.get("name"));
+ assertEquals("http://www.example.com,192.168.1.1", settings.getString("text_targets"));
+ assertEquals("description1", settings.get("description"));
+
+ }
+
+ @Test
+ public void nothing_set_results_simply_in_valid_json_but_without_any_text_targets_and_field_as_null() throws Exception{
+ /* execute */
+ String result = builderToTest.build();
+
+ /* test */
+ JSONObject asJson = new JSONObject(result);// so valid json..
+ assertEquals("null", asJson.getString("uuid"));
+
+ JSONObject settings = asJson.getJSONObject("settings");
+ assertEquals("null", settings.get("name"));
+ assertEquals("", settings.getString("text_targets"));
+ assertEquals("null", settings.get("description"));
+ }
+}
+
diff --git a/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1Test.java b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1Test.java
new file mode 100644
index 0000000000..dcbfc709c7
--- /dev/null
+++ b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1Test.java
@@ -0,0 +1,254 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import org.json.JSONObject;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.support.JSONAdapterSupport;
+
+public class NessusAdapterV1Test {
+
+ private NessusAdapterV1 adapterToTest;
+ private static String NESSUS_7_0_2_GET_POLICIES_RESULT_JSON;
+ @BeforeClass
+ public static void beforeClass() {
+ NESSUS_7_0_2_GET_POLICIES_RESULT_JSON = NessusAdapterTestFileSupport.getTestfileSupport().loadTestFile("nessus_7.0.2.get_policies_result.json");
+ }
+
+ @Rule
+ public ExpectedException expected = ExpectedException.none();
+ private NessusAdapterContext context;
+ private NessusAdapterConfig config;
+
+ @Before
+ public void before() {
+ // System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "debug");
+ adapterToTest = new NessusAdapterV1();
+
+ context = mock(NessusAdapterContext.class);
+ config = mock(NessusAdapterConfig.class);
+ when(context.getConfig()).thenReturn(config);
+ when(context.json()).thenReturn(new JSONAdapterSupport(adapterToTest, context));
+ }
+
+ @Test
+ public void a_scan_uuid_can_be_extracted() throws Exception {
+ /* prepare */
+ String data = "{\"scan_uuid\":\"8b0e5c15-7958-0480-28d9-7c5a7069a9f892b6b6880a8600b5\"}";
+
+ /* execute */
+ String scan_uuid = adapterToTest.extractScanUUID(context, data);
+
+ /* test */
+ assertEquals(scan_uuid,/*NOSONAR*/"8b0e5c15-7958-0480-28d9-7c5a7069a9f892b6b6880a8600b5");
+ }
+
+ @Test
+ public void when_context_has_scanid_123456_the_createLaunchApiURL_returns_host_slash_scans_slash_123456_slash_launch() {
+ /* prepare */
+ when(context.getNessusScanId()).thenReturn(123456L);
+ when(config.getProductBaseURL()).thenReturn("https://localhost:666");
+
+ /* execute */
+ String result = adapterToTest.createLaunchApiURL(context);
+
+ /* test */
+ assertEquals("https://localhost:666/scans/123456/launch",result);
+ }
+
+ @Test
+ public void when_context_has_scanid_123456_the_createScanExportApiURL_returns_host_and_123456_export() {
+ /* prepare */
+ when(context.getNessusScanId()).thenReturn(123456L);
+ when(config.getProductBaseURL()).thenReturn("https://localhost:666");
+
+ /* execute */
+ String result = adapterToTest.createScanExportApiURL(context);
+
+ /* test */
+ assertEquals("https://localhost:666/scans/123456/export",result);
+ }
+
+ @Test
+ public void when_context_has_scanid_123456_fid_789_the_createScanExportStatusApiURL_returns_host_and_123456_export_789_status() {
+ /* prepare */
+ when(context.getNessusScanId()).thenReturn(123456L);
+ when(config.getProductBaseURL()).thenReturn("https://localhost:666");
+ when(context.getExportFileId()).thenReturn("789");
+
+ /* execute */
+ String result = adapterToTest.createScanExportStatusApiURL(context);
+
+ /* test */
+ assertEquals("https://localhost:666/scans/123456/export/789/status",result);
+ }
+
+ @Test
+ public void when_context_has_scanid_123456_fid_789_the_createScanExportDownloadApiURL_returns_host_and_123456_export_789_status() {
+ /* prepare */
+ when(context.getNessusScanId()).thenReturn(123456L);
+ when(config.getProductBaseURL()).thenReturn("https://localhost:666");
+ when(context.getExportFileId()).thenReturn("789");
+
+ /* execute */
+ String result = adapterToTest.createScanExportDownloadApiURL(context);
+
+ /* test */
+ assertEquals("https://localhost:666/scans/123456/export/789/download",result);
+ }
+
+ @Test
+ public void when_context_has_scanid_123456_the_createGetHistoryIsApiURL_returns_host_and_123456() {
+ /* prepare */
+ when(context.getNessusScanId()).thenReturn(123456L);
+ when(config.getProductBaseURL()).thenReturn("https://localhost:666");
+
+ /* execute */
+ String result = adapterToTest.createGetHistoryIdsApiURL(context);
+
+ /* test */
+ assertEquals("https://localhost:666/scans/123456",result);
+ }
+
+
+ @Test
+ public void createScanJSON_creates_validJson() throws Exception {
+
+ /* prepare */
+
+ /* execute */
+ String json = adapterToTest.createNewScanJSON(context);
+
+ /* test */
+ JSONObject jsonObject = new JSONObject(json);
+ assertNotNull(jsonObject);
+
+ }
+
+
+ @Test
+ public void adapter_has_no_api_prefix() throws Exception {
+ /* test */
+ assertNull(adapterToTest.getAPIPrefix());
+ }
+
+ @Test
+ public void resolvePolicyUIDByTitle_null_throws_adapterexception() throws Exception {
+
+ /* prepare */
+ expected.expect(AdapterException.class);
+
+ /* execute */
+ /* test */
+ adapterToTest.resolvePolicyUIDByTitle(null, "x",context);
+
+ }
+ @Test
+ public void resolveHistoryIdByUUID_no_uuid_set_illegal_state_is_thrown() throws Exception {
+
+ /* prepare */
+ expected.expect(IllegalStateException.class);
+ when(context.getProductContextId()).thenReturn(null);
+
+ /* execute */
+ /* test */
+ adapterToTest.resolveHistoryIdByUUID("{}", context);
+
+ }
+ @Test
+ public void resolveHistoryIdByUUID_empty_obj_throws_adapterexception() throws Exception {
+
+ /* prepare */
+ expected.expect(AdapterException.class);
+ when(context.getProductContextId()).thenReturn("uuid");
+
+ /* execute */
+ /* test */
+ adapterToTest.resolveHistoryIdByUUID("{}", context);
+
+ }
+
+ @Test
+ public void resolveHistoryIdByUUID_non_existing_uuid_throws_adapter_exception() throws Exception {
+ /* test */
+ expected.expect(AdapterException.class);
+
+ /* prepare */
+ String content = "{\"history\":[{\"uuid\":\"my-uuid\", \"history_id\":\"666\"}]}";
+ when(context.getProductContextId()).thenReturn("unkown-uuid");
+
+ /* execute */
+ adapterToTest.resolveHistoryIdByUUID(content, context);
+
+ }
+
+ @Test
+ public void resolveHistoryIdByUUID__existing_uuid_myUUID_returns_history_id_666() throws Exception {
+ /* prepare */
+ String content = "{\"history\":[{\"uuid\":\"my-uuid\", \"history_id\":\"666\"}]}";
+ when(context.getProductContextId()).thenReturn("my-uuid");
+
+ /* execute */
+ String result = adapterToTest.resolveHistoryIdByUUID(content,context);
+
+ /* test */
+ assertEquals("666", result);
+ }
+
+ @Test
+ public void resolvePolicyUIDByTitle_empty_throws_adapterexception() throws Exception {
+
+ /* prepare */
+ expected.expect(AdapterException.class);
+
+ /* execute */
+ /* test */
+ adapterToTest.resolvePolicyUIDByTitle("", "x",context);
+
+ }
+
+
+ @Test
+ public void resolvePolicyUIDByTitle_empty_obj_throws_adapterexception() throws Exception {
+
+ /* prepare */
+ expected.expect(AdapterException.class);
+
+ /* execute */
+ /* test */
+ adapterToTest.resolvePolicyUIDByTitle("{}", "x",context);
+
+ }
+
+
+ @Test
+ public void resolvePolicyUIDByTitle_origin_nessus_file_with_advanced_scan_title_returns_uuid() throws Exception {
+
+ /* execute */
+ String uuid = adapterToTest.resolvePolicyUIDByTitle(NESSUS_7_0_2_GET_POLICIES_RESULT_JSON, "Advanced Scan",context);
+
+ /* test */
+ assertEquals("ad629e16-03b6-8c1d-cef6-ef8c9dd3c658d24bd260ef5f9e66",uuid);
+
+ }
+
+ @Test
+ public void resolvePolicyUIDByTitle_origin_nessus_file_with_not_existing_title_returns_null() throws Exception {
+
+ /* execute */
+ String uuid = adapterToTest.resolvePolicyUIDByTitle(NESSUS_7_0_2_GET_POLICIES_RESULT_JSON, "Not existing title",context);
+
+ /* test */
+ assertNull(uuid);
+
+ }
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1WireMockTest.java b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1WireMockTest.java
new file mode 100644
index 0000000000..61b876339e
--- /dev/null
+++ b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusAdapterV1WireMockTest.java
@@ -0,0 +1,330 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.*;
+import static com.github.tomakehurst.wiremock.client.WireMock.verify;
+import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.*;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import java.net.URI;
+import java.util.Collections;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.springframework.http.HttpStatus;
+
+import com.daimler.sechub.adapter.IcrementalAdditionalPrefixAPIURLSupport;
+import com.daimler.sechub.adapter.support.APIURLSupport;
+import com.daimler.sechub.test.TestPortProvider;
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+
+public class NessusAdapterV1WireMockTest {
+
+ private static final String TARGET_TYPE = "theType";
+ private static final String SECHUB_TRACE_ID = "sechub-trace-id";
+ private static final String EXPECTED_NAME_IN_DATA = "sechub-trace-id_"+TARGET_TYPE;
+ private static final String APPLICATION_JSON = "application/json";
+ private static final String APPLICATION_XML = "application/xml";
+
+ private static final int HTTPS_PORT = TestPortProvider.DEFAULT_INSTANCE.getWireMockTestHTTPSPort();
+
+ private static final int HTTP_PORT = TestPortProvider.DEFAULT_INSTANCE.getWireMockTestHTTPPort();
+
+ private static final String PASSWORD = "12345BASE64_PWD";
+
+ private static final String TARGET_URL = "http://example.org";
+
+ private static final String NETSPARKER_BASE_URL = "http://localhost:" + HTTP_PORT;
+
+ private static final String POLICY_ID = "12345POLICY_ID";
+
+ private static final String POLICY_UUID = "12345UUID";
+
+ private static final String USERNAME = "sechub-user";
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(HTTP_PORT).httpsPort(HTTPS_PORT));
+
+ private NessusAdapter adapterToTest;
+
+ private NessusAdapterConfig config;
+ private IcrementalAdditionalPrefixAPIURLSupport apiURLSupport;
+
+
+
+ @Before
+ public void before() {
+ // System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "debug");
+
+ apiURLSupport = new IcrementalAdditionalPrefixAPIURLSupport("nessustest");
+
+ adapterToTest = new NessusAdapterV1() {
+ @Override
+ protected APIURLSupport createAPIURLSupport() {
+ return apiURLSupport;
+ }
+ };
+ config = mock(NessusAdapterConfig.class);
+
+ when(config.getTraceID()).thenReturn(SECHUB_TRACE_ID);
+ when(config.getUser()).thenReturn(USERNAME);
+ when(config.getTargetType()).thenReturn(TARGET_TYPE);
+ when(config.getPassword()).thenReturn(PASSWORD);
+ when(config.getTimeOutInMilliseconds()).thenReturn(1000*5);
+
+ when(config.getTargetURIs()).thenReturn(Collections.singleton(URI.create(TARGET_URL)));
+ when(config.getProductBaseURL()).thenReturn(NETSPARKER_BASE_URL);
+ when(config.getPolicyId()).thenReturn(POLICY_ID);
+
+ }
+
+ @Test
+ public void start_scan_returns_returns_result_when_using_agent() throws Exception {
+ /* prepare */
+ String sessionToken = "token-returned-by-nessus";
+
+ JSONObject loginJson = new JSONObject();
+ loginJson.put("username", USERNAME);
+ loginJson.put("password", PASSWORD);
+
+ String loginJSONBody = loginJson.toString();
+ /* @formatter:off */
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ login ....................................+ */
+ /* +-----------------------------------------------------------------------+ */
+ stubFor(post(urlEqualTo(apiURLSupport.nextURL("/session")))
+ //.inScenario(chain.getScenario()).whenScenarioStateIs(chain.getStateBefore())
+ .withHeader("X-Cookie", equalTo("token="))
+ .withHeader("content-type", equalTo(APPLICATION_JSON))
+ .withRequestBody(equalToJson(loginJSONBody))
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody("{\"token\" : \""+sessionToken+"\"}"))
+// .
+// willSetStateTo(chain.getStateAfter())
+ );
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ get all policies .........................+ */
+ /* +-----------------------------------------------------------------------+ */
+ JSONObject policyTemplatesBody = new JSONObject();
+ JSONArray policyTemplates = new JSONArray();
+ for (int i=0;i<10;i++) {
+
+ JSONObject policyTemplate = new JSONObject();
+ policyTemplate.put("title", "title"+i);
+ policyTemplate.put("uuid", "uuid"+i);
+
+ policyTemplates.put(policyTemplate);
+
+ }
+ JSONObject policyTemplate = new JSONObject();
+ policyTemplate.put("title", POLICY_ID);
+ policyTemplate.put("uuid", POLICY_UUID);
+
+ policyTemplates.put(policyTemplate);
+
+ policyTemplatesBody.put("templates", policyTemplates);
+ String shrinkedPolici = policyTemplatesBody.toString();
+
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ fetch templates ..........................+ */
+ /* +-----------------------------------------------------------------------+ */
+ stubFor(get(urlEqualTo(apiURLSupport.nextURL("/editor/policy/templates")))
+ .withHeader("X-Cookie", equalTo("token="+sessionToken))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+ //.inScenario(chain.getScenario()).whenScenarioStateIs(chain.getStateBefore())
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.CREATED.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody(shrinkedPolici))
+// .
+// willSetStateTo(chain.getStateAfter())
+ );
+
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ fetch scan id..........................+ */
+ /* +-----------------------------------------------------------------------+ */
+ int scanId = 3281;
+ stubFor(post(urlEqualTo(apiURLSupport.nextURL("/scans")))
+ //.inScenario(chain.getScenario()).whenScenarioStateIs(chain.getStateBefore())
+ .withHeader("X-Cookie", equalTo("token="+sessionToken))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+ .withRequestBody(equalToJson("{ \"uuid\":\""+POLICY_UUID+"\", \"settings\":{\n" +
+ " \"name\":\""+EXPECTED_NAME_IN_DATA+"\",\n" +
+ " \"description\":\"SecHub scan "+SECHUB_TRACE_ID+" for target type "+TARGET_TYPE+"\",\n" +
+ " \"text_targets\":\""+TARGET_URL+"\"\n" +
+ " }\n" +
+ "}"))
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody("{\"scan\":{\"id\":"+scanId+"}}"))
+// .
+// willSetStateTo(chain.getStateAfter())
+ );
+
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ launch scan...............................+ */
+ /* +-----------------------------------------------------------------------+ */
+ String scanUUID="6048780b-ff64-db35-5f96-dfc9a2a371b9c0c1bf76077ee30e";
+ stubFor(post(urlEqualTo(apiURLSupport.nextURL("/scans/"+scanId+"/launch")))
+ //.inScenario(chain.getScenario()).whenScenarioStateIs(chain.getStateBefore())
+ .withHeader("X-Cookie", equalTo("token="+sessionToken))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody("{\"scan_uuid\":\""+scanUUID+"\"}"))
+// .
+// willSetStateTo(chain.getStateAfter())
+ );
+
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ get history id for scan id ...............+ */
+ /* +-----------------------------------------------------------------------+ */
+ int historyId = 3282;
+ stubFor(get(urlEqualTo(apiURLSupport.assertCheck(5).nextURL("/scans/"+scanId)))
+ //.inScenario(chain.getScenario()).whenScenarioStateIs(chain.getStateBefore())
+ .withHeader("X-Cookie", equalTo("token="+sessionToken))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody("{\"history_id_variant_comphosts\":[],\"hosts\":[],\"notes\":null,\"remediations\":{\"remediations\":null,\"num_hosts\":0,\"num_cves\":0,\"num_impacted_hosts\":0,\"num_remediated_cves\":0},\"vulnerabilities\":[],\"filters\":[{\"operators\":[\"eq\",\"neq\",\"match\",\"nmatch\"],\"control\":{\"readable_regex\":\"TEXT\",\"type\":\"entry\",\"regex\":\".*\"},\"name\":\"hostname\",\"readable_name\":\"Hostname\"},{\"operators\":[\"eq\",\"neq\"],\"control\":{\"type\":\"dropdown\",\"list\":[\"AIX Local Security Checks\",\"Amazon Linux Local Security Checks\",\"Backdoors\",\"Brute force attacks\",\"CGI abuses\",\"CGI abuses : XSS\",\"CISCO\",\"CentOS Local Security Checks\",\"DNS\",\"Databases\",\"Debian Local Security Checks\",\"Default Unix Accounts\",\"Denial of Service\",\"F5 Networks Local Security Checks\",\"FTP\",\"Fedora Local Security Checks\",\"Firewalls\",\"FreeBSD Local Security Checks\",\"Gain a shell remotely\",\"General\",\"Gentoo Local Security Checks\",\"HP-UX Local Security Checks\",\"Huawei Local Security Checks\",\"Incident Response\",\"Junos Local Security Checks\",\"MacOS X Local Security Checks\",\"Mandriva Local Security Checks\",\"Misc.\",\"Mobile Devices\",\"Netware\",\"Offsec Plugins\",\"Offsec Plugins Disabled\",\"Oracle Linux Local Security Checks\",\"OracleVM Local Security Checks\",\"Palo Alto Local Security Checks\",\"Peer-To-Peer File Sharing\",\"Policy Compliance\",\"Port scanners\",\"RPC\",\"Red Hat Local Security Checks\",\"SCADA\",\"SMTP problems\",\"SNMP\",\"Scientific Linux Local Security Checks\",\"Service detection\",\"Settings\",\"Slackware Local Security Checks\",\"Solaris Local Security Checks\",\"SuSE Local Security Checks\",\"Ubuntu Local Security Checks\",\"VMware ESX Local Security Checks\",\"Virtuozzo Local Security Checks\",\"Web Servers\",\"Windows\",\"Windows : Microsoft Bulletins\",\"Windows : User management\"]},\"name\":\"plugin_family\",\"readable_name\":\"Plugin Family\"},{\"operators\":[\"eq\",\"neq\",\"match\",\"nmatch\"],\"control\":{\"readable_regex\":\"NUMBER\",\"type\":\"entry\",\"regex\":\"^[0-9, ]+$\"},\"name\":\"plugin_id\",\"readable_name\":\"Plugin ID\"},{\"operators\":[\"eq\",\"neq\",\"match\",\"nmatch\"],\"control\":{\"readable_regex\":\"TEXT\",\"type\":\"entry\",\"regex\":\".*\"},\"name\":\"plugin_name\",\"readable_name\":\"Plugin Name\"},{\"operators\":[\"eq\",\"neq\",\"match\",\"nmatch\"],\"control\":{\"readable_regex\":\"TEXT\",\"type\":\"entry\",\"regex\":\".*\"},\"name\":\"plugin_output\",\"readable_name\":\"Plugin Output\"},{\"operators\":[\"eq\",\"neq\",\"match\",\"nmatch\"],\"control\":{\"readable_regex\":\"80\",\"type\":\"entry\",\"regex\":\"^[0-9]+$\"},\"name\":\"port\",\"readable_name\":\"Port\"},{\"operators\":[\"eq\",\"neq\"],\"control\":{\"type\":\"dropdown\",\"list\":[\"tcp\",\"udp\",\"icmp\"]},\"name\":\"protocol\",\"readable_name\":\"Protocol\"}],\"history\":[{\"alt_targets_used\":false,\"scheduler\":0,\"status\":\"running\",\"type\":\"local\",\"uuid\":\"6048780b-ff64-db35-5f96-dfc9a2a371b9c0c1bf76077ee30e\",\"last_modification_date\":1523527046,\"creation_date\":1523527046,\"owner_id\":4,\"history_id\":"+historyId+"}],\"compliance\":[],\"info\":{\"acls\":[{\"permissions\":0,\"owner\":null,\"display_name\":null,\"name\":null,\"id\":null,\"type\":\"default\"},{\"permissions\":128,\"owner\":1,\"display_name\":\"SecHub robot\",\"name\":\"sechub\",\"id\":4,\"type\":\"user\"}],\"edit_allowed\":true,\"status\":\"running\",\"alt_targets_used\":null,\"scanner_start\":1523527046,\"policy\":\"Advanced Scan\",\"pci-can-upload\":false,\"hasaudittrail\":false,\"scan_start\":1523527046,\"user_permissions\":128,\"folder_id\":null,\"no_target\":null,\"targets\":\"http://localhost\",\"control\":true,\"timestamp\":1523527046,\"object_id\":"+scanId+",\"scanner_name\":\"Local Scanner\",\"haskb\":false,\"uuid\":\"6048780b-ff64-db35-5f96-dfc9a2a371b9c0c1bf76077ee30e\",\"hostcount\":0,\"scan_type\":\"local\",\"name\":\"FALLBACK_TRACE_ID#593858262630564\"}}"))
+// .willSetStateTo(chain.getStateAfter())
+ );
+
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ fetch history information for history id + */
+ /* +-----------------------------------------------------------------------+ */
+ simulateCheckScanState(sessionToken, scanId, historyId, "running",6);
+ simulateCheckScanState(sessionToken, scanId, historyId, "running",7);
+ simulateCheckScanState(sessionToken, scanId, historyId, "completed",8);
+
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ trigger export ...........................+ */
+ /* +-----------------------------------------------------------------------+ */
+ int fileId=1455461011;
+ String resultExport = "{\"token\":\"bd92bd4a297fcae1f9e3a7a18d9fec9269d9ab997c5e58d9fe00ade4ecf5ecb0\",\"file\":"+fileId+"}";
+
+ stubFor(post(urlEqualTo(apiURLSupport.assertCheck(9).nextURL("/scans/"+scanId+"/export")))
+ //.inScenario(chain.getScenario()).whenScenarioStateIs(chain.getStateBefore())
+ .withHeader("X-Cookie", equalTo("token="+sessionToken))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+// .withRequestBody(equalToJson("{\"history_id\":\""+historyId+"\",\n" +
+// " \"format\":\"nessus\"}")) // see todo inside simulateCheckScanState about WireMock problems with requestBody in GET methods...
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody(resultExport))
+// .
+// willSetStateTo(chain.getStateAfter())
+ );
+
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ fetch status of export ...................+ */
+ /* +-----------------------------------------------------------------------+ */
+ simulateServerRepsonseForFileExportStatus(sessionToken, scanId, fileId, "loading",10);
+ simulateServerRepsonseForFileExportStatus(sessionToken, scanId, fileId, "loading",11);
+ simulateServerRepsonseForFileExportStatus(sessionToken, scanId, fileId, "ready",12);
+
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ Download report ..........................+ */
+ /* +-----------------------------------------------------------------------+ */
+ String xml = ""
+ + "";
+ stubFor(get(urlEqualTo(apiURLSupport.assertCheck(13).nextURL("/scans/"+scanId+"/export/"+fileId+"/download")))
+ //.inScenario(chain.getScenario()).whenScenarioStateIs(chain.getStateBefore())
+ .withHeader("X-Cookie", equalTo("token="+sessionToken))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody(xml))
+// .willSetStateTo(chain.getStateAfter())
+ );
+
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ DELETE session ...........................+ */
+ /* +-----------------------------------------------------------------------+ */
+ stubFor(delete(urlEqualTo(apiURLSupport.assertCheck(14).nextURL("/session")))
+ //.inScenario(chain.getScenario()).whenScenarioStateIs(chain.getStateBefore())
+ .withHeader("X-Cookie", equalTo("token="+sessionToken))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withHeader("Content-Type", APPLICATION_XML)
+ .withBody("{Connection=[close], Cache-Control=[], Pragma=[], Expires=[0], Content-Length=[0], Server=[NessusWWW], Date=[: Thu, 12 Apr 2018 10:30:31 GMT], X-Frame-Options=[DENY]}"))
+// .willSetStateTo(chain.getStateAfter())
+ );
+
+ /* @formatter:on */
+ /* execute */
+ String result = adapterToTest.start(config);
+
+ /* test */
+ verify(postRequestedFor(urlEqualTo("/nessustest_1/session"))); // login
+ verify(getRequestedFor(urlEqualTo("/nessustest_2/editor/policy/templates"))); // fetch templates
+ verify(postRequestedFor(urlEqualTo("/nessustest_3/scans"))); // fetch scan id
+ verify(postRequestedFor(urlEqualTo("/nessustest_4/scans/3281/launch")));// launch scan
+ verify(getRequestedFor(urlEqualTo("/nessustest_5/scans/3281"))); // get history id
+ verify(getRequestedFor(urlEqualTo("/nessustest_6/scans/3281"))); // get information
+ verify(getRequestedFor(urlEqualTo("/nessustest_7/scans/3281"))); // ..
+ verify(getRequestedFor(urlEqualTo("/nessustest_8/scans/3281"))); // ..
+ verify(postRequestedFor(urlEqualTo("/nessustest_9/scans/3281/export"))); // start export report
+ verify(getRequestedFor(urlEqualTo("/nessustest_10/scans/3281/export/1455461011/status"))); // get status (running)
+ verify(getRequestedFor(urlEqualTo("/nessustest_11/scans/3281/export/1455461011/status"))); // get status (running)
+ verify(getRequestedFor(urlEqualTo("/nessustest_12/scans/3281/export/1455461011/status"))); // get status (completed)
+ verify(getRequestedFor(urlEqualTo("/nessustest_13/scans/3281/export/1455461011/download"))); // download content
+ verify(deleteRequestedFor(urlEqualTo("/nessustest_14/session"))); // logout by delete session
+
+
+ assertEquals(xml, result);
+ }
+
+
+ private void simulateCheckScanState(String sessionToken, int scanId, int historyId,String state, int expectedCheckNr) {
+ /* @formatter:off */
+// String jsonBody = "{\"history_id\":\""+historyId+"\"}";
+ stubFor(get(urlEqualTo(apiURLSupport.assertCheck(expectedCheckNr).nextURL("/scans/"+scanId)))
+ //.inScenario(chain.getScenario()).whenScenarioStateIs(chain.getStateBefore())
+ .withHeader("X-Cookie", equalTo("token="+sessionToken))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+// .withRequestBody(equalTo(jsonBody)) // TODO Albert Tregnaghi, 2018-04-13: Maybe change when WireMock supports it...
+ // WireMock has currently the problem that only post requests are checked by
+ // withRequestBody. It seems to be defined in stubMapping but not on find method...
+ // so we use the apiUrlSupport to create unique urls and do the mapping as expected...
+
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody("{\"comphosts\":[],\"hosts\":[],\"notes\":null,\"remediations\":{\"remediations\":null,\"num_hosts\":0,\"num_cves\":0,\"num_impacted_hosts\":0,\"num_remediated_cves\":0},\"vulnerabilities\":[],\"filters\":[{\"operators\":[\"eq\",\"neq\",\"match\",\"nmatch\"],\"control\":{\"readable_regex\":\"TEXT\",\"type\":\"entry\",\"regex\":\".*\"},\"name\":\"hostname\",\"readable_name\":\"Hostname\"},{\"operators\":[\"eq\",\"neq\"],\"control\":{\"type\":\"dropdown\",\"list\":[\"AIX Local Security Checks\",\"Amazon Linux Local Security Checks\",\"Backdoors\",\"Brute force attacks\",\"CGI abuses\",\"CGI abuses : XSS\",\"CISCO\",\"CentOS Local Security Checks\",\"DNS\",\"Databases\",\"Debian Local Security Checks\",\"Default Unix Accounts\",\"Denial of Service\",\"F5 Networks Local Security Checks\",\"FTP\",\"Fedora Local Security Checks\",\"Firewalls\",\"FreeBSD Local Security Checks\",\"Gain a shell remotely\",\"General\",\"Gentoo Local Security Checks\",\"HP-UX Local Security Checks\",\"Huawei Local Security Checks\",\"Incident Response\",\"Junos Local Security Checks\",\"MacOS X Local Security Checks\",\"Mandriva Local Security Checks\",\"Misc.\",\"Mobile Devices\",\"Netware\",\"Offsec Plugins\",\"Offsec Plugins Disabled\",\"Oracle Linux Local Security Checks\",\"OracleVM Local Security Checks\",\"Palo Alto Local Security Checks\",\"Peer-To-Peer File Sharing\",\"Policy Compliance\",\"Port scanners\",\"RPC\",\"Red Hat Local Security Checks\",\"SCADA\",\"SMTP problems\",\"SNMP\",\"Scientific Linux Local Security Checks\",\"Service detection\",\"Settings\",\"Slackware Local Security Checks\",\"Solaris Local Security Checks\",\"SuSE Local Security Checks\",\"Ubuntu Local Security Checks\",\"VMware ESX Local Security Checks\",\"Virtuozzo Local Security Checks\",\"Web Servers\",\"Windows\",\"Windows : Microsoft Bulletins\",\"Windows : User management\"]},\"name\":\"plugin_family\",\"readable_name\":\"Plugin Family\"},{\"operators\":[\"eq\",\"neq\",\"match\",\"nmatch\"],\"control\":{\"readable_regex\":\"NUMBER\",\"type\":\"entry\",\"regex\":\"^[0-9, ]+$\"},\"name\":\"plugin_id\",\"readable_name\":\"Plugin ID\"},{\"operators\":[\"eq\",\"neq\",\"match\",\"nmatch\"],\"control\":{\"readable_regex\":\"TEXT\",\"type\":\"entry\",\"regex\":\".*\"},\"name\":\"plugin_name\",\"readable_name\":\"Plugin Name\"},{\"operators\":[\"eq\",\"neq\",\"match\",\"nmatch\"],\"control\":{\"readable_regex\":\"TEXT\",\"type\":\"entry\",\"regex\":\".*\"},\"name\":\"plugin_output\",\"readable_name\":\"Plugin Output\"},{\"operators\":[\"eq\",\"neq\",\"match\",\"nmatch\"],\"control\":{\"readable_regex\":\"80\",\"type\":\"entry\",\"regex\":\"^[0-9]+$\"},\"name\":\"port\",\"readable_name\":\"Port\"},{\"operators\":[\"eq\",\"neq\"],\"control\":{\"type\":\"dropdown\",\"list\":[\"tcp\",\"udp\",\"icmp\"]},\"name\":\"protocol\",\"readable_name\":\"Protocol\"}],\"history\":[{\"alt_targets_used\":false,\"scheduler\":0,\"status\":\""+state+"\",\"type\":\"local\",\"uuid\":\"6048780b-ff64-db35-5f96-dfc9a2a371b9c0c1bf76077ee30e\",\"last_modification_date\":1523527046,\"creation_date\":1523527046,\"owner_id\":4,\"history_id\":"+historyId+"}],\"compliance\":[],\"info\":{\"acls\":[{\"permissions\":0,\"owner\":null,\"display_name\":null,\"name\":null,\"id\":null,\"type\":\"default\"},{\"permissions\":128,\"owner\":1,\"display_name\":\"SecHub robot\",\"name\":\"sechub\",\"id\":4,\"type\":\"user\"}],\"edit_allowed\":true,\"status\":\""+state+"\",\"alt_targets_used\":null,\"scanner_start\":1523527046,\"policy\":\"Advanced Scan\",\"pci-can-upload\":false,\"hasaudittrail\":false,\"scan_start\":1523527046,\"user_permissions\":128,\"folder_id\":null,\"no_target\":null,\"targets\":\"http://localhost\",\"control\":true,\"timestamp\":1523527046,\"object_id\":"+scanId+",\"scanner_name\":\"Local Scanner\",\"haskb\":false,\"uuid\":\"6048780b-ff64-db35-5f96-dfc9a2a371b9c0c1bf76077ee30e\",\"hostcount\":0,\"scan_type\":\"local\",\"name\":\"FALLBACK_TRACE_ID#593858262630564\"}}"))
+// .willSetStateTo(chain.getStateAfter())
+ );
+ /* @formatter:on */
+ }
+
+ private void simulateServerRepsonseForFileExportStatus(String sessionToken, int scanId, int fileId,String status, int expectedCheckIndex) {
+ String resultExport = "{\"status\":\""+status+"\"}";;
+ stubFor(get(urlEqualTo(apiURLSupport.assertCheck(expectedCheckIndex).nextURL("/scans/"+scanId+"/export/"+fileId+"/status")))
+ //.inScenario(chain.getScenario()).whenScenarioStateIs(chain.getStateBefore())
+ .withHeader("X-Cookie", equalTo("token="+sessionToken))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody(resultExport))
+// ).
+// willSetStateTo(chain.getStateAfter())
+ )
+ ;
+ }
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusConfigBuilderTest.java b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusConfigBuilderTest.java
new file mode 100644
index 0000000000..8e87196f42
--- /dev/null
+++ b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusConfigBuilderTest.java
@@ -0,0 +1,28 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import com.daimler.sechub.adapter.AbstractAdapterConfig;
+import com.daimler.sechub.adapter.AbstractAdapterConfigBuilder;
+import com.daimler.sechub.adapter.nessus.NessusConfig.NessusConfigBuilder;
+
+/**
+ * Name handling is tested here because its very important when using NETSPARKER (each name produces costs)
+ * @author Albert Tregnaghi
+ *
+ */
+public class NessusConfigBuilderTest {
+
+ @Test
+ public void configBuilder_is_child_of_abstract_adapter_config_builder() {
+ assertTrue(AbstractAdapterConfigBuilder.class.isAssignableFrom(NessusConfigBuilder.class));
+ }
+ @Test
+ public void config_is_child_of_abstract_adapter_config() {
+ assertTrue(AbstractAdapterConfig.class.isAssignableFrom(NessusConfig.class));
+ }
+
+}
diff --git a/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusConfigTest.java b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusConfigTest.java
new file mode 100644
index 0000000000..24e59402fd
--- /dev/null
+++ b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusConfigTest.java
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import com.daimler.sechub.adapter.AbstractAdapterConfig;
+import com.daimler.sechub.adapter.AbstractAdapterConfigBuilder;
+import com.daimler.sechub.adapter.nessus.NessusConfig.NessusConfigBuilder;
+
+public class NessusConfigTest {
+ @Test
+ public void configBuilder_is_child_of_abstract_adapter_config_builder() {
+ assertTrue(AbstractAdapterConfigBuilder.class.isAssignableFrom(NessusConfigBuilder.class));
+ }
+
+ @Test
+ public void config_is_child_of_abstract_adapter_config() {
+ assertTrue(AbstractAdapterConfig.class.isAssignableFrom(NessusConfig.class));
+ }
+
+}
diff --git a/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusStateTest.java b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusStateTest.java
new file mode 100644
index 0000000000..7eba4af71f
--- /dev/null
+++ b/sechub-adapter-nessus/src/test/java/com/daimler/sechub/adapter/nessus/NessusStateTest.java
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.nessus;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class NessusStateTest {
+
+ @Test
+ public void is_wellknown_return_true_for_Completed() {
+ assertTrue(NessusState.isWellknown("completed"));
+ }
+
+ @Test
+ public void is_wellknown_return_false_for_Unknown() {
+ assertFalse(NessusState.isWellknown("unknown"));
+ }
+}
diff --git a/sechub-adapter-nessus/src/test/resources/README.md b/sechub-adapter-nessus/src/test/resources/README.md
new file mode 100644
index 0000000000..b212e8580b
--- /dev/null
+++ b/sechub-adapter-nessus/src/test/resources/README.md
@@ -0,0 +1,6 @@
+
+About this folder
+=================
+You will find nessus outputs from real world scans!
+
+Some of the files are used inside tests to ensure the format can be imported/used.
\ No newline at end of file
diff --git a/sechub-adapter-nessus/src/test/resources/nessus_7.0.2.get_policies_result.json b/sechub-adapter-nessus/src/test/resources/nessus_7.0.2.get_policies_result.json
new file mode 100644
index 0000000000..b6908e176c
--- /dev/null
+++ b/sechub-adapter-nessus/src/test/resources/nessus_7.0.2.get_policies_result.json
@@ -0,0 +1,236 @@
+{
+ "templates": [
+ {
+ "unsupported": false,
+ "desc": "Approved for quarterly external scanning as required by PCI.",
+ "subscription_only": false,
+ "title": "PCI Quarterly External Scan",
+ "is_agent": null,
+ "uuid": "cfc46c2d-30e7-bb2b-3b92-c75da136792d080c1fffcc429cfd",
+ "manager_only": false,
+ "name": "asv"
+ },
+ {
+ "unsupported": false,
+ "desc": "A simple scan to discover live hosts and open ports.",
+ "subscription_only": false,
+ "title": "Host Discovery",
+ "is_agent": null,
+ "uuid": "bbd4f805-3966-d464-b2d1-0079eb89d69708c3a05ec2812bcf",
+ "manager_only": false,
+ "name": "discovery"
+ },
+ {
+ "unsupported": false,
+ "desc": "Remote and local checks for MS17-010.",
+ "subscription_only": false,
+ "title": "WannaCry Ransomware",
+ "is_agent": null,
+ "uuid": "861a8b95-f04c-40b0-ece6-263b1bec457c09cfc122c9666645",
+ "manager_only": false,
+ "name": "wannacry"
+ },
+ {
+ "unsupported": false,
+ "desc": "Remote and local checks for CVE-2017-5689.",
+ "subscription_only": false,
+ "title": "Intel AMT Security Bypass",
+ "is_agent": null,
+ "uuid": "3f514e0e-66e0-8ea2-b6e7-d2d86b526999a93a89944d19e1f1",
+ "manager_only": false,
+ "name": "intelamt"
+ },
+ {
+ "unsupported": false,
+ "desc": "A full system scan suitable for any host.",
+ "subscription_only": false,
+ "title": "Basic Network Scan",
+ "is_agent": null,
+ "uuid": "731a8e52-3ea6-a291-ec0a-d2ff0619c19d7bd788d6be818b65",
+ "manager_only": false,
+ "name": "basic"
+ },
+ {
+ "unsupported": false,
+ "desc": "Authenticate to hosts and enumerate missing updates.",
+ "subscription_only": false,
+ "title": "Credentialed Patch Audit",
+ "is_agent": null,
+ "uuid": "0625147c-30fe-d79f-e54f-ce7ccd7523e9b63d84cb81c23c2f",
+ "manager_only": false,
+ "name": "patch_audit"
+ },
+ {
+ "unsupported": false,
+ "desc": "Scan for published and unknown web vulnerabilities.",
+ "subscription_only": false,
+ "title": "Web Application Tests",
+ "is_agent": null,
+ "uuid": "c3cbcd46-329f-a9ed-1077-554f8c2af33d0d44f09d736969bf",
+ "manager_only": false,
+ "name": "webapp"
+ },
+ {
+ "unsupported": false,
+ "desc": "Scan for malware on Windows and Unix systems.",
+ "subscription_only": false,
+ "title": "Malware Scan",
+ "is_agent": null,
+ "uuid": "d16c51fa-597f-67a8-9add-74d5ab066b49a918400c42a035f7",
+ "manager_only": false,
+ "name": "malware"
+ },
+ {
+ "more_info": "http://www.tenable.com/products/nessus/nessus-manager",
+ "unsupported": false,
+ "desc": "Assess mobile devices via Microsoft Exchange or an MDM.",
+ "subscription_only": false,
+ "title": "Mobile Device Scan",
+ "is_agent": null,
+ "uuid": "8382be4c-2056-51fe-65a3-a376b7912a013d58cfc392e0fac5",
+ "manager_only": true,
+ "name": "mobile"
+ },
+ {
+ "more_info": "http://www.tenable.com/products/nessus/nessus-manager",
+ "unsupported": false,
+ "desc": "Audit the configuration of mobile device managers.",
+ "subscription_only": false,
+ "title": "MDM Config Audit",
+ "is_agent": null,
+ "uuid": "fbcff9e6-0c8c-e6a9-4d8a-a43a6ee7c04b3fa5e24c0fc81b34",
+ "manager_only": true,
+ "name": "mdm"
+ },
+ {
+ "unsupported": false,
+ "desc": "Audit system configurations against a known baseline.",
+ "subscription_only": false,
+ "title": "Policy Compliance Auditing",
+ "is_agent": null,
+ "uuid": "40345bfc-48be-37bc-9bce-526bdce37582e8fee83bcefdc746",
+ "manager_only": false,
+ "name": "compliance"
+ },
+ {
+ "unsupported": false,
+ "desc": "Perform an internal PCI DSS (11.2.1) vulnerability scan.",
+ "subscription_only": false,
+ "title": "Internal PCI Network Scan",
+ "is_agent": null,
+ "uuid": "e460ea7c-7916-d001-51dc-e43ef3168e6e20f1d97bdebf4a49",
+ "manager_only": false,
+ "name": "pci"
+ },
+ {
+ "unsupported": false,
+ "desc": "Audit the configuration of network devices.",
+ "subscription_only": false,
+ "title": "Offline Config Audit",
+ "is_agent": null,
+ "uuid": "1384f3ce-0376-7801-22db-a91e1ae16dea8d863e17313802b1",
+ "manager_only": false,
+ "name": "offline"
+ },
+ {
+ "unsupported": false,
+ "desc": "Audit the configuration of third-party cloud services.",
+ "subscription_only": false,
+ "title": "Audit Cloud Infrastructure",
+ "is_agent": null,
+ "uuid": "97f94b3b-f843-92d1-5e7a-df02f9dbfaaef40ae03bfdfa7239",
+ "manager_only": false,
+ "name": "cloud_audit"
+ },
+ {
+ "unsupported": false,
+ "desc": "Audit systems using SCAP and OVAL definitions.",
+ "subscription_only": false,
+ "title": "SCAP and OVAL Auditing",
+ "is_agent": null,
+ "uuid": "fb9cbabc-af67-109e-f023-1e0d926c9e5925eee7a0aa8a8bd1",
+ "manager_only": false,
+ "name": "scap"
+ },
+ {
+ "unsupported": false,
+ "desc": "Create a scan using a previously defined policy.",
+ "subscription_only": false,
+ "title": "Custom Scan",
+ "is_agent": null,
+ "uuid": "ab4bacd2-05f6-425c-9d79-3ba3940ad1c24e51e1f403febe40",
+ "manager_only": false,
+ "name": "custom"
+ },
+ {
+ "unsupported": false,
+ "desc": "Remote and local checks for CVE-2014-6271 and CVE-2014-7169.",
+ "subscription_only": false,
+ "title": "Bash Shellshock Detection",
+ "is_agent": null,
+ "uuid": "65d5b7ce-8d3b-d0df-f473-40633bb6122108a510a44374a167",
+ "manager_only": false,
+ "name": "shellshock"
+ },
+ {
+ "unsupported": false,
+ "desc": "Local checks for CVE-2015-0235.",
+ "subscription_only": false,
+ "title": "GHOST (glibc) Detection",
+ "is_agent": null,
+ "uuid": "f10bc363-deb5-7218-b4ae-e08c85f84aa089ba9aa631170429",
+ "manager_only": false,
+ "name": "ghost"
+ },
+ {
+ "unsupported": false,
+ "desc": "Remote checks for CVE-2016-0800.",
+ "subscription_only": false,
+ "title": "DROWN Detection",
+ "is_agent": null,
+ "uuid": "b9e01ede-c502-a064-cbca-e0f75d7743549709aaa0d800a65e",
+ "manager_only": false,
+ "name": "drown"
+ },
+ {
+ "unsupported": false,
+ "desc": "Remote and local checks for CVE-2016-2118 and CVE-2016-0128.",
+ "subscription_only": false,
+ "title": "Badlock Detection",
+ "is_agent": null,
+ "uuid": "94077f40-5408-f59f-07b1-658c66bed20e1a2c8dfd7bf7c12a",
+ "manager_only": false,
+ "name": "badlock"
+ },
+ {
+ "unsupported": false,
+ "desc": "Scan for vulnerabilities disclosed in the Shadow Brokers leaks.",
+ "subscription_only": false,
+ "title": "Shadow Brokers Scan",
+ "is_agent": null,
+ "uuid": "2e823751-74a7-4d93-8067-ae301b2523037a8a9aaabacadaea",
+ "manager_only": false,
+ "name": "shadow_brokers"
+ },
+ {
+ "unsupported": false,
+ "desc": "Remote and local checks for CVE-2017-5753, CVE-2017-5715, and CVE-2017-5754",
+ "subscription_only": false,
+ "title": "Spectre and Meltdown",
+ "is_agent": null,
+ "uuid": "5dd44847-3c6a-412c-b916-6cc21dd80785df97ab44910aceee",
+ "manager_only": false,
+ "name": "spectre_meltdown"
+ },
+ {
+ "unsupported": false,
+ "desc": "Configure a scan without using any recommendations.",
+ "subscription_only": false,
+ "title": "Advanced Scan",
+ "is_agent": null,
+ "uuid": "ad629e16-03b6-8c1d-cef6-ef8c9dd3c658d24bd260ef5f9e66",
+ "manager_only": false,
+ "name": "advanced"
+ }
+ ]
+}
diff --git a/sechub-adapter-nessus/src/test/resources/nessus_7.0.2.result.xml b/sechub-adapter-nessus/src/test/resources/nessus_7.0.2.result.xml
new file mode 100644
index 0000000000..5bddb6c690
--- /dev/null
+++ b/sechub-adapter-nessus/src/test/resources/nessus_7.0.2.result.xml
@@ -0,0 +1,8394 @@
+
+
+Advanced Scan
+plugin_set
+84316;36080;93635;32809;87560;61117;35292;75260;83156;103773;12899;61271;82513;60338;56376;56763;77796;85655;99304;90783;79951;102224;94560;74778;36701;24927;75947;79410;77675;80304;31254;56940;77913;52488;71507;34562;56031;20067;101840;105154;20870;36729;58411;28203;91796;74090;79571;51613;68598;14866;14848;84756;77682;15647;34014;63001;78239;49989;34382;80895;59433;37168;73673;104650;13697;36153;52647;18318;106660;48778;32133;12946;71529;27680;55108;82334;84972;50808;96632;85689;89197;66586;13585;55264;45589;78979;69778;19888;63394;61082;68681;92042;71451;24796;54754;78797;97572;20066;64490;73861;58989;60381;90416;51169;11828;14404;103210;51771;106645;63800;40222;26457;53891;23960;94614;56689;79865;79937;38632;76254;72826;20479;106141;105708;102496;91390;51258;57118;41336;11789;62383;32146;88711;99970;41530;42354;79216;58362;60475;39496;52013;72329;24105;96180;78288;63152;41573;20742;88842;90837;68542;86053;52424;22965;52429;10296;68524;88703;34171;20131;24704;87941;35303;93121;101830;19200;21498;41079;70704;106480;67992;78686;31983;53047;79190;41085;84790;40959;63055;50835;82047;41852;82769;104881;19237;60258;19694;51128;40576;55697;94139;94327;96363;13571;24755;13911;11536;99638;46250;84063;66357;83845;51201;89950;52859;103177;75526;11227;105158;79803;24288;52686;27519;105046;72543;42195;72304;73184;35521;63414;11745;72527;99117;92656;12560;90040;54739;86206;101586;86011;101984;40328;64581;87506;32294;73664;54520;38341;48283;104594;105489;71371;96800;41688;69092;106507;107130;81053;14453;68600;10085;64446;27789;84646;80794;91360;68001;13881;53175;79680;106283;82138;62395;66812;66821;95861;11617;25005;16995;88098;43794;63475;12966;69623;77530;27682;64993;59207;96518;96996;41706;65994;95041;59649;95491;78159;49464;102401;102774;52182;95771;87804;44665;75134;18089;18960;76163;46719;85050;53243;13767;76250;31322;25099;102634;55097;61992;23884;32377;44575;39879;78587;56722;78189;103992;47090;30467;74826;56701;10602;101706;101004;46728;87568;103561;56323;66428;101568;62929;92547;45822;64611;52575;64733;50071;32122;91057;73038;56386;87112;85406;76147;15083;54795;29461;76677;94061;47319;68303;20475;81366;104862;21029;43236;87921;101296;94876;72279;34733;95724;42116;99431;30201;65318;47594;86082;30833;25158;68881;77211;79915;38446;11975;74456;37368;61584;31688;85855;50789;54347;65682;52980;15105;11864;28144;49120;78054;46974;95986;73573;17037;83326;43030;88899;36981;90443;81723;91026;48477;84906;30375;65457;30447;22463;30348;100635;11542;74263;21575;95916;34886;28943;95764;59569;37817;18754;65871;37710;95526;48738;44222;13497;75101;94865;28546;70247;74326;41022;86294;61089;90906;21176;69303;33628;63735;49964;86594;84228;13465;85631;44491;83705;93145;35340;84553;13822;56062;70713;14443;91832;30432;48840;16616;10495;66749;64831;86437;10918;65575;64786;90593;63377;77089;68134;82363;106176;60503;36591;45174;55243;10322;60104;37757;21679;72223;30381;82487;89334;63097;39886;47410;15106;67425;80830;31131;10756;34157;15176;37351;75324;52727;45723;11184;22209;28822;52230;14433;76573;72382;47185;43674;24673;45684;91954;100870;96705;92786;99286;26409;70233;60930;47230;10269;67861;69989;76502;72045;40473;101768;71597;66450;100409;75917;85230;84219;49304;99192;50916;72107;103159;86070;20155;67378;103426;75282;17112;73484;89383;15084;36410;28769;88944;85817;99115;71818;76339;100259;28540;62426;102140;106666;69150;62085;64033;56652;75146;73715;97946;48634;46723;83265;66777;100072;89341;81677;89665;83108;46973;85321;60971;79551;36909;17776;47727;41240;83467;85263;24525;97182;71922;27897;67905;74764;58305;102034;21571;104584;100527;91992;35406;96111;85889;43423;49266;71719;26633;21455;106938;71422;55963;96789;96415;72121;64834;60377;86180;15253;52091;81907;15920;16290;46192;89447;77899;19655;68515;29849;105462;50272;57869;12098;93437;61004;106864;93446;15545;14951;32922;56279;40100;36415;91866;37263;38871;86137;36106;55701;27545;50317;91588;72772;16592;43243;20859;46496;73347;71250;34135;84252;43780;101193;53250;80077;68144;80192;23637;12400;105035;47798;89959;18123;72774;13855;105133;39953;64015;62876;84349;40141;62160;35027;75305;71604;47271;36485;30251;18858;73263;87025;93753;58780;86447;35857;79061;45095;72064;19945;102648;65368;75510;41220;20960;64443;83233;45407;45778;61044;47350;15932;21234;39979;53035;38477;28140;76241;77227;46932;12514;43645;65034;13751;52213;82922;74608;103848;61350;14920;49498;75971;27657;66740;72665;31481;64133;60327;23938;48620;46813;49804;13037;65343;66469;82302;64987;99969;72571;51712;61024;43791;66990;26082;30236;53183;32115;17543;25512;105138;22720;13231;91798;14650;38867;93800;72277;82747;27242;100936;46746;11635;99114;78595;27534;42047;35435;71257;95676;76868;36982;29018;94289;17620;66848;67885;49009;11335;59481;55362;42049;75934;32450;83214;22807;72550;92613;14591;62908;25768;81374;41480;80688;68545;67148;83669;49976;26898;100857;54562;89356;102448;11729;12823;38738;100371;71155;28322;51530;42653;77814;54707;85876;31799;13695;88758;85396;47542;73591;20481;32046;29033;83356;35300;29103;40251;25598;91059;64346;63883;31035;19154;92737;63270;77905;14899;42649;33218;88949;89520;102423;16621;101109;73776;104185;99092;105553;21532;14933;41819;95617;99634;22396;64290;34847;19203;87306;19193;24705;82096;45688;95452;21088;13973;13666;43666;78113;55851;57908;22956;14344;82876;47500;86511;47163;82000;81700;19480;52856;45212;87198;48159;72624;37834;101823;86651;23112;39528;12264;61059;73048;30536;86363;95626;32490;80826;47583;35790;105377;106042;99084;60911;87937;62803;106346;13777;105295;77632;90382;49897;55618;91232;16850;39376;101922;104710;53615;25940;15521;15091;85564;60901;31619;44047;70990;21982;53319;72557;101280;102026;44290;18901;53694;32965;21135;93761;31513;54904;26841;81211;65105;63104;53452;76779;88536;16086;67307;33647;95016;70294;47312;19771;34024;21085;76098;57814;22338;18727;97768;61985;107077;90421;66961;22194;74081;106138;22600;39208;76880;19925;87864;78605;83971;12397;23646;18933;102819;36706;78955;45403;73713;46436;99642;14723;77645;36724;53439;51175;16602;71123;89582;79702;32257;73417;100229;100895;10896;87820;69694;48836;72935;100904;82039;24310;105216;22661;49454;89109;60256;83494;79718;46514;35362;62955;70251;29792;91492;23857;64307;106499;79756;20552;96584;44158;75519;74626;35358;42800;71874;55965;83045;67889;91410;26411;83348;47190;68493;12536;18566;80685;69131;54304;45252;53329;18302;30870;80472;20810;77781;85801;13475;37833;12249;91373;102996;58171;21965;95284;96683;38462;103010;44527;13185;90923;64931;106352;93904;39621;63387;10963;37639;103228;89824;43982;67933;12599;34313;40268;80744;42963;95363;46603;102228;28136;26645;105693;66737;27656;48884;63920;64363;29887;82033;102810;16078;10371;10849;101910;49402;49801;77088;103680;80956;66152;26288;93244;82883;22564;102322;50786;18527;26126;56773;89233;22606;55245;77411;16462;80702;33853;16245;87130;44188;82338;96642;28214;53494;41571;74348;18556;55459;52467;34422;97088;67180;59159;15871;15604;94691;78044;97349;17482;106017;45863;30439;97625;97460;30887;20664;84950;100537;37827;67574;10802;54167;30753;55119;46625;104354;21366;97929;38876;54051;82846;50290;72988;69790;37121;97199;81537;46096;40939;43154;92922;106854;43715;33438;64690;93875;78726;55670;69573;105461;75290;32594;61572;104319;48907;76953;78132;54301;60748;79206;47356;49515;32988;52605;75346;52588;56830;22558;12973;15384;60908;100852;46168;84110;102051;94300;65217;12555;59827;41223;58724;64186;87695;32362;69982;17113;23986;97382;57717;56699;72472;51564;87677;27215;58475;72670;71927;63186;55467;12835;82649;84149;93027;29862;34547;99279;23497;76645;67427;77289;83221;47049;22431;58572;49018;45902;25547;20104;68541;65037;85951;83579;41468;102987;24653;71376;73614;82558;41854;28127;93910;72447;72449;102040;71404;16704;86805;18122;49282;10413;77694;36689;56961;76288;26362;93754;54286;58004;65769;36349;58162;31234;85007;72083;87295;101603;20323;54667;81080;16833;69886;33147;52926;62482;21319;85388;25909;100941;81498;35656;21378;95569;59565;81471;24441;38929;106905;104997;87048;37122;44824;99902;65152;57741;32587;58605;39494;77669;94708;26806;99920;18267;41002;36600;60356;55643;26718;58879;48735;35895;42881;42961;51054;57336;12482;96183;11995;36888;31209;105415;19407;96062;58936;20662;40905;91630;72561;94198;82850;83683;72993;30362;49954;37047;44707;42634;69318;30944;24399;27569;36605;105047;87744;51214;38442;103643;90754;79380;58298;89143;45967;54335;46044;28080;13804;25162;72340;24168;89746;83967;83294;94186;37321;42953;68488;96802;28422;23411;47457;83658;53868;74672;28406;47330;52482;34320;60618;16080;40914;87146;200105;86114;15618;62511;22966;86365;85271;47147;12861;78522;93780;16070;15260;58948;66972;72661;11553;82295;78286;11248;65117;60707;17458;92675;29225;68906;200119;43167;17406;97538;100163;72906;95812;18939;64778;53349;104224;78750;85047;11925;62385;17765;45409;15393;73271;73295;37976;38877;22963;10547;34136;78671;102486;87903;42105;44869;36486;56482;85086;106691;46426;40924;19084;19739;96604;10038;85902;29831;68810;92898;52136;23638;73670;53196;72970;15683;93055;64305;20413;12608;90901;94615;78829;96951;93195;102494;17668;68882;25408;23413;12697;60402;75922;79589;13961;22274;56513;10984;26594;35269;102175;13153;55123;41795;43461;20017;79201;72708;91158;60847;56962;51098;43452;16329;53784;37609;60133;37217;69119;17376;99145;43660;34098;81204;22493;54784;27884;51507;71087;41835;75944;97657;90892;26721;38181;74205;29194;89417;82200;102374;40253;32364;93782;51219;43859;61075;59620;56351;64271;83946;91809;10073;102977;65897;94568;33172;36345;59383;17649;39778;35156;28971;28372;12320;31213;42114;71130;19978;86211;43299;88792;81319;102844;24732;64856;15292;19850;36262;63045;28491;36658;84942;59405;32686;12999;61109;97911;91037;19837;20439;30742;57641;103141;79444;32131;53958;32772;78568;93567;90629;45702;102222;104855;53721;97059;64029;46135;75557;56686;84460;41207;50222;81897;101207;15606;47366;69913;53705;97435;74520;50153;90085;86989;81946;83113;36336;22085;15838;25052;21412;10285;61120;35946;20374;38827;72333;20207;25403;16710;13235;78864;86203;68002;101932;64651;51686;42409;52674;33269;14221;102605;73532;68593;81357;36752;78715;20821;35405;107119;100093;83654;49286;25244;57910;106920;32874;72769;87274;69712;11332;51869;95261;30896;39553;78535;89235;55239;52476;94653;88031;54705;104961;23223;76209;14935;18410;17663;83051;99356;82932;93182;83025;99440;62282;21605;15705;79914;41747;99473;19890;18552;72456;11414;16003;49426;77492;80752;100338;88581;49022;76778;45641;60641;80110;28218;58686;70978;64142;28533;80693;34816;96226;105975;90118;54365;14769;101189;52227;80594;49385;96400;89712;53127;38343;105244;20929;92988;80060;64317;56718;28591;68875;23159;70404;53932;99725;13271;12360;44093;30249;45410;21161;15258;99275;31199;75776;80952;36794;79903;93864;91818;84301;10622;100439;92954;23115;61251;60518;28767;28646;71159;21553;31830;56540;101002;96589;66145;54241;96088;72811;63595;29968;28639;45619;79617;80245;79830;50274;67441;65822;48350;40848;53834;84372;93617;100795;73334;37687;89107;45531;59796;22287;89008;41113;19889;11520;40961;40472;73100;87752;94493;64982;106415;43776;42201;25881;37616;46500;53234;96135;81938;23774;33025;23163;35952;102517;17123;31443;25726;78733;13923;99132;43014;13713;29256;23655;85882;35580;75351;57150;57611;24435;75829;89391;33047;74653;62122;26040;53841;44576;66315;72161;80461;27027;73485;48507;29370;29974;100451;83907;32589;30433;40157;83406;38945;62590;46259;53030;31781;13556;39814;26338;67277;93897;62314;23311;53535;44583;32535;21798;36857;100497;57345;75589;12843;66800;62032;58991;84100;49041;32627;11475;106387;77631;94518;33464;100827;106583;78004;18975;89851;54646;54480;20279;26350;87595;103069;81084;97065;86488;24583;63684;78056;46448;102952;39793;64507;84249;63815;18217;29391;76367;12126;53609;60547;10633;91099;93833;70054;103465;82292;56162;84863;39301;61298;60780;86845;41030;47268;77282;97467;52127;90039;55610;85012;57219;100016;35410;63888;75184;59661;80166;77653;35870;12727;87045;73935;82369;89882;30900;29505;45023;50775;71605;21536;36067;93093;95400;62974;67337;85042;23812;13720;74862;59448;101487;18708;38848;92001;20140;81108;34358;92377;43831;102289;12206;56172;87717;16521;39729;41965;37173;69177;67056;45972;65450;60945;18950;29279;53426;105507;11681;33086;51835;77479;53630;26112;35464;49619;104008;106518;67334;57082;96430;23152;18418;45044;43295;24460;101028;29034;43160;72415;71300;33384;73642;87576;22650;102863;84244;45748;20076;49483;51604;66694;82072;76060;57134;63034;53052;59890;39049;18140;33051;80575;46510;48921;40382;31958;25790;34124;82524;93726;24809;32456;69633;16560;49090;58497;51460;55008;52276;28454;75508;31757;102916;64312;86207;42998;63215;19625;61926;23664;21973;100117;84720;22562;50218;45025;48817;22545;102800;21335;53146;95911;97761;79704;93714;68475;53056;57685;30096;32672;71749;74969;50382;39240;60501;11810;63616;51912;51030;42569;39747;64108;31376;70642;52694;59771;91285;89082;33284;67595;40697;73877;54396;32663;74752;20589;30888;87617;51242;31940;28458;100295;22934;64964;103028;55657;37423;82286;67267;15467;101597;69207;14565;10700;84159;80081;31182;61803;77793;38599;36671;85803;79338;72087;20478;91266;19755;69211;52825;56205;102056;35098;54417;54611;19809;22055;97472;52286;69869;45114;62518;36911;22868;40999;14244;23958;32958;48856;11485;61049;19474;89857;69991;59231;12095;97857;87041;87685;26031;66787;40807;94624;22266;100602;58663;58300;50335;71327;63685;19886;51334;15892;49134;79415;73701;79863;84117;85975;18170;76935;13538;61116;11352;99427;29930;71759;43788;101658;86076;35918;88116;92806;59577;28141;50929;86734;24408;46833;19985;59369;21120;103438;93526;105863;94885;47635;94178;105915;103548;105878;64841;48412;37807;72229;28032;53703;96767;89975;74984;19330;57508;78873;66600;45825;11568;23553;64973;29214;56182;62684;27402;34167;75512;69422;42754;29390;91693;48505;97160;39741;23255;97365;101199;104928;19580;61339;105717;43077;56069;93915;36315;11347;26154;26761;94745;60749;106225;15375;102241;27135;13295;17578;76839;38875;93342;39578;31253;88408;23671;79950;104627;99961;74434;80497;60720;71482;64806;105894;45990;31396;40273;100886;59701;56936;78281;97179;55469;85149;62188;27520;61012;102404;92243;78363;49988;38124;78280;10822;82048;22347;56557;49694;22229;93299;65699;91687;35166;42316;14152;58420;99851;94427;102709;92426;100034;59487;91012;16583;82682;81918;54354;28401;23217;25083;107093;39901;41178;60681;24867;82629;40209;23680;58260;70837;102530;89386;62863;24021;99650;62172;88987;68339;67416;99259;48388;45934;77714;93166;27804;85175;86319;96050;67529;77109;42319;90494;105815;97224;19957;52029;79169;54509;50717;44460;30305;29465;79553;26878;15333;13702;200027;49681;45167;38318;71302;84798;50165;19768;35011;27918;96351;34902;23151;97282;82627;107131;53678;63402;69123;85342;106498;61210;83850;12948;15702;65732;97277;43756;12440;66143;48181;82596;48771;85195;86694;79193;102281;81142;53213;22130;106720;100449;106695;81293;70350;107021;64411;49196;28396;13591;80097;68816;21604;73258;87132;55992;97595;94705;24535;25222;93894;99285;72544;102249;27588;41904;93154;11589;21341;94113;78260;13177;55287;50806;101455;46881;86383;50028;24670;43093;82721;36898;32829;82895;42620;106860;30118;77144;72271;86667;57320;85630;20085;16380;103858;105051;33806;89695;66375;93454;26038;75739;63922;11267;18947;65001;54673;64560;52556;43384;55651;92275;25590;105312;12594;105899;12040;82289;28034;26524;10409;75354;65448;19859;68464;99001;37658;55910;62126;82995;11159;58152;99170;42680;16513;71608;42983;20903;15456;46793;100128;89344;51650;43426;53010;20580;92952;65334;73054;91544;23443;105645;95501;19737;67256;65681;19670;91904;26477;102923;78064;33851;53376;73663;95783;58414;11934;89750;35600;55462;21559;45639;38969;17328;64594;95934;65057;59840;21291;64218;91198;62620;40524;88575;62836;99147;42451;78199;93665;34104;29758;40439;20964;36683;44231;57483;35278;25872;26931;96191;91900;76292;12378;18600;67878;86602;83506;27979;84786;71788;59144;75856;87368;15803;63603;19609;82220;38004;80345;45672;69156;58322;32178;97278;80300;72481;33939;81628;66235;50661;58617;71408;70312;51678;45193;39056;34871;24047;53979;18889;27632;42650;74369;60176;10575;63833;71556;47023;34575;25342;86278;33065;28585;63046;15125;39521;33033;92727;99368;74424;56255;58783;32719;30518;86189;11796;66258;63238;95488;32767;83064;63763;45052;84362;94385;14818;15062;27555;24922;58567;82527;50823;63980;105860;88518;32180;89090;92061;67248;40095;93472;68389;12955;68702;90422;82593;33073;31412;90611;65802;106426;37940;92041;38911;16645;92341;28029;73906;50116;69169;25973;12803;25028;54585;13183;79275;70427;20024;77187;102148;36584;75999;12949;105638;55378;49600;21065;38974;37052;79658;81694;70953;20644;93097;77993;29681;82005;33174;34085;82022;50828;26118;91363;65918;103744;95291;18300;75117;84229;28333;32204;40878;85784;51932;28836;78025;11801;57304;77582;71332;91302;39598;82381;77331;73262;28402;40881;105364;78497;73976;59096;81952;18026;90925;91053;45333;95755;67393;20932;85430;97645;13119;97057;55270;33709;32320;60067;24177;73709;48237;97576;70691;36050;51944;58464;53474;46670;86174;39511;10999;34771;28600;63779;85464;65711;27109;104809;84780;18859;52008;65584;95784;91117;67892;44886;33932;23176;93856;76412;20668;50918;46861;22518;60732;60220;58552;99918;27502;38128;99108;94021;59829;14532;95039;84773;94681;71271;45243;51238;74354;41397;35972;72063;64976;71714;26025;38044;12838;67037;105189;55979;16191;48713;85510;59680;76877;10084;32588;47689;63957;41188;65225;36834;93820;103360;44391;92862;13587;19183;25910;48585;86540;39555;28198;12529;31543;88927;96179;95661;58541;52240;50545;47116;61617;85740;78121;71094;35645;99957;19021;63862;104770;73965;103400;57580;13707;96602;43883;31834;70824;25588;39810;81383;43212;69189;65506;19864;27875;96353;74388;29949;82623;82533;27923;26634;81096;82935;29539;92783;94766;41998;28073;14397;34241;81634;35210;51453;76646;104835;49101;86632;15539;51220;29023;39038;68826;49046;14429;37185;94184;46073;90506;51679;64709;58995;29179;54296;31177;59919;17189;13618;83775;22136;45915;31423;71693;65549;85316;93384;101198;21130;92370;93538;34061;88497;44147;75623;106906;100658;28316;83854;75941;93678;76099;30423;200026;77356;92329;88599;10420;35419;74379;35761;43177;33588;85221;62559;32652;76768;85937;97554;29293;21802;13788;103192;90751;93006;101635;15099;94899;32254;88834;78402;22865;104748;75081;22096;25882;86662;73952;78001;52107;42679;41796;58615;69833;75403;11263;11297;32313;85099;103673;101380;45134;65432;91221;78717;63209;57875;41809;23409;60848;28470;106329;94554;48711;69551;83923;67388;18097;83087;100554;105565;97352;88386;41655;82256;68575;29013;24744;59428;100976;30863;66013;86735;19137;78770;41719;94264;75156;97220;103795;103818;37203;14925;83739;85879;19727;81749;14247;65968;82777;64884;68271;61638;32887;13342;21348;16434;14419;102480;86312;50210;74001;51580;66239;14999;50712;101583;85747;70223;66806;61201;62846;55390;32255;33793;101266;93046;27230;22033;18488;104828;47246;28251;103642;57790;72342;26489;100657;70180;85355;84408;50774;67013;76853;57953;57009;22202;38060;104390;11665;13511;75315;28394;87312;52932;28324;85701;23818;63552;82318;17136;48680;90661;69367;12613;59485;76882;67752;33102;20548;36031;84447;57801;25635;100855;48690;11046;51437;87842;89808;70171;24202;40529;63398;57278;14312;63278;25166;69988;34598;80968;28718;55514;20197;53499;46588;90144;16670;35115;60637;10128;59901;28433;54283;54219;105679;99163;57784;59432;29455;104226;74341;17022;47377;54239;47731;51646;49156;45810;87019;29902;93594;60638;58610;17026;44713;36406;47645;50409;55392;48540;101192;99699;18909;77936;35242;92800;63531;65995;96048;83112;76593;67457;63272;53178;90821;105771;91111;67379;45783;39502;105028;106486;84398;74796;23019;10184;84417;101858;64805;75866;58979;69611;75709;39924;84702;105810;49477;65324;29916;77325;27219;68847;92684;103269;28012;102015;56676;88146;91487;87821;105619;31356;104711;85854;31124;103880;97384;68384;47764;22125;64550;58699;33409;39472;39567;31642;104382;10946;49124;52321;20136;47518;16469;36879;30344;87464;33784;89892;105027;68240;78186;68335;20126;40245;38730;35228;28952;200019;99639;45701;41736;38429;86254;78867;99922;44879;20703;27462;28262;47270;10392;48910;77274;62345;27249;26394;67962;34474;83495;29640;69511;52495;62861;33415;38522;66659;53918;59787;22212;51887;38327;21048;97783;31534;90081;54105;41938;27187;72625;36503;31852;76155;78552;80941;69324;11358;58859;67535;85004;93614;71151;49590;41572;13806;10974;41869;62177;95706;27849;96099;88593;17822;83993;89736;78501;85218;78384;73542;101013;82481;101846;19430;24344;19683;99692;56782;26621;58671;91115;75244;74800;50881;85335;83523;65193;31583;23480;40300;40197;77896;104664;26667;70229;61086;45995;44216;28455;97975;10758;40393;78455;89913;41804;29634;31326;43445;41335;60694;51537;76103;51466;32135;101891;10786;66026;10131;30343;48368;71315;96488;103733;23428;67435;20027;57676;75223;58878;99211;21416;80084;101234;89532;70161;67877;20501;36368;28852;33632;41260;97636;17056;104611;90953;43092;85793;84851;77948;99382;88452;45184;43215;90537;63726;36560;106266;72899;42040;87362;72450;21296;44769;33031;10597;103013;71839;14828;87195;61405;54184;68020;19288;87794;86172;70086;66119;56155;75697;91931;96498;95354;72578;84491;48526;42455;102907;15424;70227;49119;71969;16951;49450;18204;47534;60878;15779;89169;90896;13064;66571;30751;55154;66018;17680;25375;47079;81823;106780;67079;34638;52087;48372;14452;39719;93700;103300;86126;18744;49697;55937;15931;99457;24128;101406;84882;25324;80023;97309;12310;97567;41478;68947;63334;37127;25449;62388;40964;71870;70360;73278;14660;74346;87361;57719;90673;35793;32172;99591;50690;34538;28690;13842;73105;43529;18387;93969;52354;101518;53869;26403;89947;21326;31692;31864;66048;33200;37174;106719;96366;35456;36269;66580;80618;44418;14750;27547;100813;23193;69962;38638;29079;57742;78160;96594;19285;38211;92237;90688;63868;67413;66131;73358;46147;60036;20802;35138;66869;103549;104470;16501;51705;68873;99568;95673;94340;22876;55167;101516;32234;72341;93024;90368;35933;57362;85575;50909;74669;57651;15175;83947;77532;91150;70736;62022;85358;96794;20622;63870;50286;63737;73104;106818;94000;21705;92906;43497;79954;67230;73537;40400;71983;106830;89163;43283;14706;40545;103967;17433;19603;20961;43963;51628;60007;11697;25834;101506;103544;69735;27253;100002;86077;90560;63441;27662;34883;57314;64013;23968;79654;54380;79616;19162;89333;32529;57449;17410;10816;65903;84861;30065;70249;31693;47131;52262;99044;79692;57929;48247;18112;79138;95883;58814;105631;58163;81711;65505;10616;17248;15933;14363;105074;49254;97699;31671;101005;88421;35259;10081;101097;96855;70550;44620;89751;76604;64705;36627;10182;56779;57906;94349;72110;14827;64059;40509;17334;45952;50704;43890;58646;34489;104604;15318;82227;29376;13214;18142;99953;35051;55808;50795;71121;101329;102720;88986;43677;67708;106963;81232;46759;64526;42663;47165;13075;25317;46815;66493;56019;54833;39109;71227;76918;12819;31081;29875;64919;55351;61365;66087;80361;26973;54926;101184;29942;85891;52355;100557;74217;57394;23430;88158;39894;94979;30571;66046;18922;105706;77100;18485;52657;76548;95013;14293;91416;67620;28070;63840;55801;16502;87605;57297;76360;80850;29868;89070;102100;86937;78456;103618;103151;102607;22759;65453;74011;22945;78432;74274;46718;40958;68482;52726;54530;61944;63265;89479;36811;59174;72644;60597;70287;103654;70474;54767;20923;24478;91933;92804;70764;59582;66198;69535;33841;102825;96798;78149;76248;26042;66620;99782;90402;74422;75659;38048;23342;23236;74250;28189;48299;68638;61962;84315;101700;22980;94798;70735;32509;75520;23562;38861;15530;73724;59768;25780;46110;90845;105022;28675;42805;20448;71593;83989;52018;46768;45613;46472;34472;76153;101152;32020;61937;51622;89979;36915;105252;85340;95475;89763;78875;37959;103288;76503;58536;34814;14217;34280;104188;22838;54278;53101;24010;88405;34173;77751;71340;102327;70431;75719;99447;44809;90078;62306;27016;87384;24099;32358;64233;54625;44800;16280;77183;101588;94241;43622;102609;80085;30807;106160;89924;23627;80326;40883;44402;33315;43891;87488;42440;70707;101031;89949;19517;89041;57529;46960;54771;39984;48232;27837;23554;102671;82650;66799;89377;91366;43451;76507;67397;77840;84243;63121;24501;92226;57446;29232;91923;95814;104161;82864;105542;71517;93387;64556;38707;77188;55190;56332;80626;59662;19216;25280;21492;35284;60990;97411;47835;81284;29497;78236;70779;42421;11928;87311;50682;60531;14403;13548;41849;105579;106422;43918;31221;76787;31734;44354;107078;93202;48343;21992;49830;23613;82818;69454;33472;83896;85130;24789;71115;94223;51798;19127;55405;24024;32858;12806;100402;47870;34979;86289;40479;13796;22443;17041;28974;46790;90391;88689;68472;74717;58520;82199;33383;10197;73188;103386;17502;31100;45420;103689;35214;89711;71252;70005;33660;93467;14852;82999;45903;107103;42882;79623;46959;27887;51730;72145;71134;57265;64151;68761;53448;17576;71476;85545;17975;34713;103114;49580;17133;65512;13589;60964;81518;10132;19520;42129;10658;16954;23950;96508;39604;23036;14412;81032;92668;86403;93560;75964;63935;16749;26039;66815;28563;71557;96516;91051;54570;38311;104036;79062;50780;49509;30952;44622;14078;24476;71810;30117;73816;105494;38453;106637;71851;52089;24020;21428;106045;92692;32316;73290;57094;41300;91116;75075;89927;13817;72729;95004;34151;18816;95496;92661;84273;34159;57437;82128;51449;57177;61685;69724;86687;19729;33062;106970;13124;60500;56565;79427;74572;39692;55640;58568;63804;31307;61634;72435;67294;92014;19025;69512;62309;11164;17412;23018;59720;40930;103931;39206;37787;200118;72894;29765;40264;78289;23933;85480;53149;46343;11303;57477;66015;36713;65358;78483;36516;87423;49789;93465;50925;52683;97196;60927;10931;80865;27098;57567;26730;102680;11523;61413;92244;51821;23697;33561;84944;10968;74570;84992;101125;101740;81265;47546;106626;13856;103758;63766;10588;40730;26026;34303;88458;99323;80416;28928;200114;64653;49436;40072;67519;17753;101819;89881;74397;86415;29853;50803;62483;67311;64270;40247;14503;50834;25905;44911;69470;74396;54923;68279;102467;53599;42828;53260;39065;104098;61129;59672;77612;43099;99779;26309;11564;64609;61131;104168;107034;14638;17484;80759;85110;67668;14747;91093;83377;92048;73827;61279;25255;40332;61142;73898;43705;54541;33605;51587;50558;100970;26011;87203;102954;55195;68529;24616;25621;63819;50613;20725;87186;105039;15989;11180;65803;88471;28832;18976;89484;50228;59654;96929;39755;18572;51539;62899;42174;72737;24539;63128;84044;79768;53170;41564;105889;59688;63951;12457;106305;37040;47011;65236;69859;42386;30346;86379;26680;67192;34969;69497;77228;101094;91559;79225;50472;38701;36837;42060;82541;28159;75344;57429;85808;72467;28013;83610;14164;38139;61135;24569;50399;51278;60850;55511;103441;38194;60738;32469;13081;105038;15957;52195;93399;23447;12295;95896;102776;91377;51534;87223;30256;68380;37294;50475;96561;99588;64646;106874;57881;86346;21430;76315;20499;91120;78084;100435;86073;70495;38777;87329;78336;74873;101021;67203;28276;54696;21609;91479;63240;18260;81507;81906;77045;15202;60339;106890;88919;33008;19704;97794;48173;37113;71165;37750;12337;30111;63681;13156;65012;22633;19926;58329;11838;77010;94180;24294;52500;55912;10045;58087;94843;23749;62344;70240;92710;29998;103240;85783;62726;47698;101954;65860;51663;48676;75131;69888;31866;18785;14201;64920;105953;84753;82183;41171;19838;102184;26049;24630;50073;26679;100849;91048;55369;90784;93626;78045;72239;75986;70791;36425;94486;65661;45569;16656;63357;84428;39992;60442;51707;81629;45441;10311;56908;58691;77280;83735;48855;24969;68518;95682;42561;13609;81410;51516;35235;47170;48552;20897;81975;60583;100856;71755;26205;41310;15078;93252;28709;12880;35432;91206;84430;64764;32485;105788;25413;51412;11863;85493;38229;59592;100204;12058;73839;10920;82827;55642;20159;106404;45305;24428;47568;26146;79255;75943;44424;88394;104300;41671;48338;20986;35694;49168;82727;87378;64989;47402;69446;46137;70675;81399;73628;85100;61732;65346;17204;73374;100303;47597;48811;44687;18996;47509;47316;51691;70144;79194;27501;93397;49916;57200;200001;77654;40255;106749;30136;60448;47486;44450;41194;31042;89526;87509;43801;17292;54854;86804;72491;49564;87892;73013;67521;34055;49319;31904;101407;45581;90618;33374;39656;86047;13878;39111;104784;75550;97193;36616;15661;93414;18794;18381;83078;22163;28869;106133;87189;46480;105546;61162;18671;40705;29333;57234;37229;96849;90377;33069;65799;10690;96221;15699;100967;23820;92070;78629;11818;18644;21781;21437;25903;69830;21888;97188;35367;79242;16760;65247;86981;51945;54937;81309;84598;65920;41187;19559;16454;41729;40040;70395;16009;58889;69046;89168;84088;15391;41391;16791;80104;43526;64209;26999;39875;28684;49866;77842;27827;89312;16289;104130;93609;72956;67140;71211;86457;70893;28907;27078;62305;20881;30056;38549;59331;93883;31313;46986;38265;18807;47122;106881;18871;45950;13401;53897;72832;58214;27911;76704;75818;60450;70769;25850;56507;25500;27476;70938;90852;64027;76843;102083;89891;62406;29229;69236;31405;59118;102576;29434;58687;70526;53798;50447;68116;95897;80722;45294;48923;92781;81220;54959;51028;35298;77106;44744;86425;92941;12065;60110;39451;51364;96177;26036;10447;75702;38672;33534;68984;101389;89323;31629;26606;106412;57777;29525;99149;21586;35254;48467;24791;94675;73219;71691;63513;47386;40867;36134;39209;100687;51339;74115;24172;17779;95424;60918;66771;86334;32951;49864;76813;47191;45189;46812;64375;106834;16333;84530;18936;38017;84380;74226;17020;57514;100428;69630;79382;31121;43635;73438;85207;45203;34534;91650;40103;96511;89278;73632;100130;59529;35760;33285;101833;71200;36227;88620;23666;27457;26637;92418;79357;55204;106807;64575;71230;85903;24839;75238;105627;86214;82547;106547;58345;39036;86147;25277;94142;32659;53395;61876;88470;84122;80737;104950;96882;54209;50133;17664;15660;76977;14190;19109;79391;51251;75622;34877;15415;22924;61702;94743;78293;42975;21149;42436;20077;14139;83077;44315;97298;68165;29905;23279;21453;47238;33058;43301;34897;75960;52578;88556;26463;35018;37081;69167;61224;103014;27723;52675;27797;56672;77564;42151;44516;36956;76525;79228;10685;19232;75483;58119;10781;75413;59197;72951;14811;30971;104930;20636;44612;35407;103729;22012;45464;106540;71443;79823;100611;77867;45241;14642;31076;52514;93964;83557;10543;105426;44487;85244;73907;93912;47595;92526;75300;69792;91769;99937;99858;19490;26280;76303;89434;15673;82916;57640;84468;53543;56812;49026;52112;65002;51134;26789;63277;31075;66346;60885;78787;81895;25930;103048;89256;40159;90699;92961;76700;30943;64817;63497;34386;93078;49783;66638;27310;19868;45747;39888;106922;26152;83793;40856;27673;77882;82837;13779;39890;47024;52421;30832;35663;46880;10858;75294;93371;80750;18662;35061;101714;86375;73069;74992;18487;68719;51011;45290;40391;37849;50141;51765;200089;43375;44750;14606;99478;97012;105781;39374;100512;58167;86224;99610;90809;92965;17015;17455;10301;83160;26517;79946;62218;17806;67434;44066;38644;78987;76640;17598;26378;28264;62141;92423;22792;89149;52643;45183;102975;33910;97528;104914;85533;80809;94569;18347;17423;76126;13650;63568;97727;87923;66088;25602;10375;32724;105687;11604;78449;69836;88124;101174;73282;15149;101494;71770;23205;26282;42453;66384;42706;23101;47789;65466;76715;57181;35196;16767;18060;31622;88141;96413;34301;22608;21891;51209;97810;92094;94231;34316;20234;73084;106473;107095;65261;41529;56572;11135;94307;82078;70685;92864;93721;106848;65159;39186;30452;14083;18946;89828;74771;78195;31359;68854;21826;10027;49550;46615;60937;97148;29417;86979;78413;36180;95748;62968;19356;106033;31290;15775;68272;63722;63943;66107;58741;80829;40219;12328;17058;75323;19767;31425;36669;26812;25458;30182;17300;56217;12624;44283;92841;32211;95619;102729;26728;23867;90470;88447;79000;34642;77832;75200;97244;82441;59258;87108;37231;73529;104466;43318;101850;77898;23741;69091;13379;30263;95556;74334;29335;61542;54049;85627;100339;36791;86471;94750;62911;18043;34825;51637;105848;69752;54094;22068;101715;30750;90824;59638;28235;61563;63690;50820;28167;55042;13210;36722;10401;22631;54815;57916;75217;86652;63688;58038;77119;88865;56784;80663;67869;81846;94762;32771;87238;40148;71111;73304;47780;84680;10062;86746;52435;54228;44554;43899;22035;41593;78591;63694;31954;95485;25119;23786;92375;103449;17261;84299;18721;68200;16732;70450;104380;31743;31122;20706;53348;22818;55366;49806;51964;73240;54936;48474;42943;25792;100770;73464;97421;96842;23742;23662;48859;72947;28575;78910;14345;19853;106306;57199;19950;92314;64181;44307;35105;19041;87970;66975;91119;100572;65206;62632;83842;103892;19056;33365;62879;73625;55706;96440;200115;54230;41499;74576;46711;87473;56419;102240;71832;90879;62568;57806;34745;90093;96521;19312;61564;93274;47782;31647;73186;25176;94660;22772;94707;33019;64334;18589;32895;59856;84724;59305;22927;82119;93535;90854;71661;60367;17405;86450;33314;71764;34900;21388;29414;87687;83388;56885;36264;94468;65778;99688;65268;96285;70975;58830;89905;47462;89000;78287;54331;67955;97330;42345;17314;51099;42979;29161;30041;60439;84525;54622;45067;52538;24852;91865;90935;24608;21387;56444;87152;22373;44416;16242;56728;82654;19141;37110;48328;86877;52837;91457;73787;45350;60242;56901;101038;30564;14424;91959;56501;19442;30606;32018;77792;16729;23914;33732;43380;61533;85779;21433;28346;104258;69762;69350;29116;80862;100298;75409;48978;43217;58799;95707;40355;100633;57998;82902;47683;59145;51226;94721;38005;70745;78578;105528;59841;34185;59929;55314;34009;10281;14857;48701;68922;93393;15178;70601;60038;96496;29081;52245;14092;50899;70751;35276;63706;46596;39702;49898;91831;36746;93242;14030;65333;68170;43814;90516;54913;53562;15603;57581;75470;50364;78646;63252;43499;75769;10248;72834;81117;53304;89457;70654;30400;80139;24682;86545;86064;100181;57458;53741;46840;54581;34400;16203;85192;45277;38556;44170;17737;72390;66510;10113;97419;21843;15743;81929;106307;49668;40783;12331;59925;10577;56150;44026;102196;43023;62607;102878;96876;59746;54608;79858;88479;96956;27044;25496;30665;66954;100937;68016;76198;39571;99666;44276;27039;71296;76736;68301;90771;92192;52520;86957;77639;41887;22303;20411;79775;33769;42144;78673;45099;38110;86962;26697;106445;46781;13927;20266;66657;71394;59712;57433;44192;59982;86107;23294;21621;79582;57036;105218;11870;64544;87477;13574;95810;52329;27617;100205;78451;45716;16959;76333;103116;100616;31355;62259;52606;56528;66563;23490;17229;91422;18550;51185;43032;107113;82474;46741;49139;78458;92385;31485;105395;78356;81140;75183;69810;32129;59122;92015;105874;80591;79648;71873;44696;43528;93652;70336;22996;40188;68422;74441;105061;92114;89259;89232;66627;11776;47380;53493;46513;39675;74159;94725;47196;100952;87193;54931;23767;43806;88862;35795;50810;88503;10862;26693;92336;42630;100538;87459;66472;35160;105977;103384;27358;49445;60108;16967;17255;19355;36040;63087;32476;80213;75863;14061;73541;79624;105082;100254;55830;77476;65809;74951;26087;52725;32559;20329;62535;73652;96178;68392;32680;80160;79821;15585;46618;81704;51024;28177;51424;103406;52607;20268;22146;25130;83939;90717;22142;77834;39218;63163;81306;36677;45742;80580;13936;30873;40580;13975;103469;24787;20592;34498;51040;11059;59494;26317;56221;20550;57137;92705;26971;101130;37306;15506;45393;47514;32227;66101;15784;62634;69585;63450;55486;42236;19570;71686;14908;80880;14018;19314;14218;38910;17708;46859;57826;84895;81539;88830;74648;30643;75747;92581;52148;36331;92482;106474;40301;13136;71710;58394;30950;23589;41956;93825;90011;97314;59389;71943;74076;77330;22103;103354;106502;79538;65953;64891;101689;61373;76814;68930;99976;67505;11809;99321;83114;43444;27294;90084;45147;45650;54576;85511;49836;42312;13908;81331;92622;65833;64864;35846;100145;57695;69723;49528;68843;68173;71067;19662;15313;69106;79849;19674;93448;75407;104217;34860;92881;14598;73550;33602;76489;26127;34417;67721;62250;39634;11937;101676;51224;23776;22313;10601;49624;38588;96039;59597;23898;63336;78196;76081;106301;52415;92759;53172;30694;66402;76345;90329;49201;101885;49658;28285;79733;102201;82636;14189;34174;83789;30963;78083;16115;50067;61588;105333;79805;84978;96049;75449;33126;48427;73612;95017;79459;48348;46620;39392;63079;97420;61005;18414;13394;16873;41523;90609;22276;81317;30712;41082;16071;42726;65945;14185;69875;79335;26273;62319;85708;70534;50797;62375;91663;15489;97221;66633;84314;14693;62200;10960;54760;17442;32256;49268;64183;86969;24801;84952;60221;105117;18073;28596;73912;73974;54122;41275;79827;44670;84051;70777;101749;25177;105141;32436;97362;59380;22435;10489;51076;39940;44983;57391;11993;47407;58393;37941;87627;37901;67273;40550;51403;78647;16519;27400;62774;87266;89660;36199;64110;51500;77453;41970;103911;50411;53050;38635;65777;47732;12484;36899;48271;39781;18164;72558;74596;89620;77668;42955;60416;64331;31460;23404;61282;43629;67867;46171;88085;39221;58425;87051;80881;96232;100466;13392;100174;106303;51659;49518;99346;86501;74392;61446;52166;99474;56956;83806;67974;64711;88739;20949;32935;33004;54993;23737;97413;36588;46899;20737;49065;88800;67468;34149;29104;91501;80949;21994;99174;107097;58016;69905;60341;47882;106799;86569;40451;87008;24223;27414;18372;91297;45520;44661;43393;67275;62599;86253;59291;19935;87575;60184;84948;32045;88427;86770;48601;46601;39677;29160;81085;71391;22131;67330;47834;62059;67262;69568;24862;100384;39792;68942;92199;28048;85499;106968;200116;44794;34618;31056;31049;53949;25502;96606;62738;19211;97647;78305;80943;12688;50052;43711;32280;73011;99015;56846;43869;53378;40865;27267;42967;93537;36200;58767;77296;28056;12879;42731;29097;10649;49858;86455;58117;103168;73689;99294;72026;43001;41069;101127;37769;38831;10885;57755;41749;70444;48443;10395;43552;95995;70498;52336;43518;106651;94959;14965;37794;46623;89642;41888;13396;13259;58959;30171;46582;48764;13786;22483;33078;97902;17575;67830;24750;93990;60395;64595;27848;82701;94362;60178;25325;81288;30923;32580;44959;65485;49718;75660;47413;43956;83574;22433;20160;30044;97367;26944;95664;82218;16841;78135;99187;101446;67215;61058;82361;16869;93321;75629;60980;53291;59344;19613;39285;22175;42279;29517;75148;58306;57976;86029;51049;13768;44393;102010;62917;58868;56299;60514;82517;86119;32804;101606;62148;60633;74051;30902;59459;26396;106612;49533;104633;26628;30674;101973;22913;91575;30365;68608;87419;10933;23309;12463;77314;41154;62324;100579;26882;21780;103617;94825;38760;65542;96320;89749;82960;73538;56344;71280;30970;72353;28918;23401;72275;91347;27640;72245;50159;39754;36383;13608;60684;79276;18537;68135;21981;81168;71189;89296;76307;63885;41799;73944;18496;12257;45347;25118;94253;30026;60783;69808;53701;103531;52752;96265;107017;100583;81870;26129;55457;57293;15502;31885;28841;61160;17120;106718;39489;92270;45674;44485;81354;94020;16178;31149;84247;19907;76461;91888;56937;19615;48709;29126;27954;80636;89033;104479;75640;96115;70930;91316;55523;26516;64472;88684;95687;43020;54439;90652;14817;75867;64188;33692;84523;65330;38733;100547;16799;89594;91524;93541;45035;50563;89854;96463;31807;24662;87587;81530;54242;32114;16939;100727;29096;23107;55802;50611;65543;39452;20658;27333;101213;30039;75735;21079;107120;63767;28271;22342;36212;38256;59783;57870;25535;80531;21738;15341;44954;12032;96052;77951;75518;41105;81212;18653;80376;50102;99249;84295;57696;92510;82956;74340;28672;31760;84788;90041;55870;49230;44676;10634;35581;24620;16851;65684;50360;12365;71919;10397;61821;11973;50138;43519;102670;82988;57729;100651;29274;104184;32317;11518;53964;104988;99438;92744;84300;21816;45488;58539;15291;71188;63529;101401;105794;21054;81352;51830;31431;97917;83246;82143;25038;43320;13554;66064;63198;26053;19089;66575;20218;16608;78370;56541;86786;71120;35810;102750;75129;84394;25471;95885;31665;23508;49556;30271;95990;70163;87482;82056;40225;93232;45122;54723;57062;29421;52214;71929;64828;44193;89933;77181;21310;83647;81941;68931;102024;69506;11121;95985;101538;87298;21021;104313;45434;83554;21859;13798;13256;57456;44755;92612;44070;83639;38003;64001;85948;52449;83860;32084;86783;66189;71577;49437;75718;16907;74067;90769;77398;52209;29040;42897;79480;33070;11074;73751;30254;106939;64542;33700;76034;96520;51715;75336;22503;69163;79487;13577;72764;11155;69104;25053;54329;42722;11705;12469;81452;70035;81143;84351;35006;71627;47685;83161;86051;25853;62898;15767;88627;57601;47144;46985;33659;27383;91495;82491;94147;10585;54751;66587;97205;54534;31255;93507;96390;10425;54531;47657;44263;85738;80234;50342;34341;25734;83441;51747;94267;91749;87739;102415;63563;51535;23529;17718;81987;50486;43911;10990;103128;81446;82532;33870;99992;96428;94813;13664;73635;105963;101311;41342;41261;60800;106550;26106;106484;91607;61249;27839;89537;82213;48556;15242;28606;39506;42007;49097;66752;20756;33600;77463;65191;26287;95957;33527;37845;80332;97486;43129;69135;28879;46825;13816;89020;31487;55322;85544;39831;65303;81643;44328;58820;51557;91922;16018;22638;77863;14618;83862;23307;34337;81840;87847;79559;45961;61696;74278;22002;65264;99764;30119;101718;13427;24765;23661;27417;75742;94224;47714;47264;104533;43802;29045;24781;16090;59438;45745;39146;15355;15419;31274;93159;70392;32359;41107;72442;44136;10541;84161;44280;51101;38868;73789;24042;42033;90670;101015;67917;12086;33961;26908;87161;58118;13013;95678;71358;83957;42401;43224;35885;95705;53165;71100;54117;36623;25793;82055;77343;42043;60553;53580;50072;106770;103061;23547;64038;25468;66840;100194;83035;62624;20387;83616;64107;105981;89831;49083;61278;80144;95323;94698;17411;64400;59540;64144;77295;84934;46559;90693;71220;14904;12676;17438;94752;84803;78440;102641;102114;16752;27599;66343;35872;92725;54594;20013;70110;17580;25515;99293;22224;96051;30605;14418;38036;37989;35213;18367;45561;28461;74156;81775;88738;57883;102292;60680;65437;35608;23161;68167;42124;95564;13325;75376;44835;15015;39690;103871;27050;68899;82954;30559;12906;32042;79728;14859;73592;41264;48331;47303;80411;40154;61125;68742;58574;99127;41347;51491;75757;85825;73381;35586;10080;50123;59646;49769;47660;25645;54649;20333;73733;79303;50056;47470;87899;56272;86280;65452;17738;50301;96235;89481;83834;37753;16988;44220;29685;59285;72186;23971;63123;92281;61259;71401;33940;47337;40076;78980;84096;48749;77868;75652;34841;66535;85483;32412;71940;66190;35266;64911;88110;25209;83931;87396;21534;63509;68506;90528;86898;101397;66498;27816;31179;95822;75809;106325;16534;31299;64917;15672;91225;30335;76015;42261;22310;94715;29311;40707;59011;19920;78811;44705;86785;56384;20938;91175;85457;83885;76145;23901;93497;86678;29615;93578;39509;94442;64063;37549;76979;42449;78779;65508;57652;92379;30764;10305;76636;37270;23648;58595;13479;60386;79470;73420;17137;92319;68522;42377;99804;97276;65632;54706;13907;71465;77455;58488;15108;17421;89893;37233;31673;61080;16142;81029;87860;71243;101815;56494;23694;67768;77095;40621;73466;67038;100661;42691;34512;32556;55505;48561;80551;53818;47334;72118;20798;95439;78427;93516;50571;87060;61644;43467;87532;62703;69780;75607;90326;60252;79490;59022;97186;20270;14842;52962;30828;63851;43432;76949;68234;94601;66999;104598;10837;100647;81831;39085;12361;45828;101310;29490;76003;25833;50688;11623;11674;65493;46365;44171;28821;73522;38642;48768;72425;86121;83103;79703;77627;10253;40127;77290;34188;30601;12853;60623;90114;81905;40097;96652;70606;52115;34655;87950;72004;87023;18675;19779;101349;30069;52282;51318;39052;82066;37414;33118;83122;82666;38471;78460;69270;105283;88006;53697;51438;27783;19555;80132;67217;63480;13848;13501;88071;52027;48693;40826;52973;95575;47039;84862;63330;49231;59972;50737;82741;64758;94930;99667;31404;22532;37605;85320;34698;37201;51476;104069;80007;105454;62466;78133;11146;87635;69992;46201;10679;87192;99951;101083;99501;17339;91255;34165;72991;80150;82892;15655;27924;49027;63836;96151;19126;71503;34828;72071;50032;27578;19293;65122;72942;31592;29122;75313;96119;25856;54390;45868;30457;33510;48445;79311;25826;17247;91132;35332;104210;63891;27327;79687;46981;44893;94071;26197;44956;17260;33797;80377;80259;25637;28940;41553;71349;29690;73316;96067;17465;21963;99822;23388;91408;45124;91762;28947;45361;29006;41606;99712;29575;63158;103917;22184;44481;72332;74463;61275;57286;57006;48562;87064;47385;17273;81276;44173;37651;25708;10687;27236;89328;38908;12509;77549;12811;82775;61229;47227;48582;23331;91829;27346;31414;15508;71550;32082;61133;63344;81997;18141;40293;35412;103806;29969;12004;13658;45135;100761;11076;38430;48322;39397;53965;80613;35462;74893;74849;78751;74464;18642;77699;96684;57524;45078;56691;23431;16194;103859;40016;60662;92435;94069;67145;78722;50693;107108;18469;94599;103656;101608;50587;105923;81999;88932;34511;90152;36534;19912;56287;37749;25228;10650;33780;89723;12430;13468;87354;90578;95894;91183;59843;31702;62870;54314;43492;62195;16916;74385;12875;93886;70361;20666;13769;25885;18838;63090;59480;73158;83466;54231;67707;77906;51492;68936;41642;36449;56411;39304;54519;93322;62382;61642;82566;46215;78053;48437;50014;72847;11972;24573;67030;39117;40045;25528;71496;28503;88814;86301;18834;102843;69731;80877;94976;51210;63985;44957;19990;34676;62246;62127;50937;87694;58308;31351;33382;54598;106833;18676;92350;85773;54453;13040;99968;72029;18773;10527;97889;89896;23871;41897;70256;47425;15540;63818;92294;46598;73523;102259;80171;76195;85592;91898;68055;59659;27891;41403;47488;22906;28956;103411;35192;16610;38458;29303;65836;27778;21267;92117;73465;49287;37354;19823;86012;37059;71393;86605;38098;16827;43993;29356;61648;90117;25107;27377;40815;68561;55750;45220;64362;97428;89135;53417;97117;89872;17476;104333;99236;20713;13360;23071;48504;88950;79918;95665;79270;61261;103824;82024;64863;23878;15856;25817;53351;103605;69620;60615;58261;70145;86112;40758;14506;74190;103076;59123;104698;68973;31096;107142;57802;13341;33657;13072;33297;72820;100861;82178;36779;85255;99820;95679;52731;59749;45649;32138;87245;19281;29488;71639;33179;99693;41708;29912;40665;61897;64708;10576;78033;102993;65649;53438;100648;91055;21978;52242;30244;104646;52917;11507;97721;51793;35312;38681;28848;55495;59059;22688;47864;10039;93768;40085;67265;19431;33710;28426;20526;75421;30089;76050;13561;89047;92948;71513;102472;74822;15490;84902;29762;25420;79609;103433;50550;49242;74338;35209;25690;97463;58804;42695;25238;76619;56143;63952;43829;15309;42204;34973;30961;43391;77641;83781;13187;42309;61447;24928;27337;10021;54845;17992;93101;48304;64899;19730;18054;59950;104465;54812;59553;80614;42904;90171;79141;96682;77798;43992;25896;30914;12742;94720;94119;84508;81546;49553;44523;33962;88566;29694;31764;93104;93241;30818;67119;80983;97152;44483;67862;40920;22132;42808;83320;78035;19222;52904;72135;59614;44464;85756;77327;30621;22236;97614;51112;74723;47524;22235;103929;86212;69468;37071;96926;94763;42542;30297;71928;48842;18745;46667;21181;57866;75814;53734;75062;65443;94218;44405;72522;14878;57168;35661;14923;74082;94777;97443;71670;84673;58764;28807;39278;18205;79943;35659;89369;65895;41580;48971;38610;30545;61823;70822;91331;49669;42918;80262;96352;49305;34037;34366;75695;84954;36391;83044;92726;102613;37633;101058;103123;59272;11889;66921;12694;67495;61424;69571;10800;91562;56647;60733;75118;29919;75350;27711;57522;29917;103452;36128;13684;23246;60172;20081;25560;38508;49172;32214;30504;90885;66942;21808;91768;52404;51033;30410;47532;41549;85910;105020;61392;38943;104301;38594;106314;53509;101801;26569;32600;47786;71867;39214;60436;19835;99070;43201;86629;74863;82168;18130;95757;37931;77218;90585;48706;38230;37832;79536;67965;66139;96275;94786;72679;22524;48187;95508;66191;102747;78276;17478;29570;45621;100234;17758;51426;76801;79371;86355;76624;91134;62497;20506;40434;60785;99442;13116;88119;18757;88101;52655;96739;56713;90869;81257;43999;51786;29435;34403;79681;47846;47674;59965;42990;86967;106114;99441;25948;56566;79102;44038;87639;11605;84226;60167;91484;61995;54290;73766;69429;63708;57215;11930;16221;50669;99339;11410;93629;63006;34633;101404;13924;92978;61470;79660;106584;40721;37114;88529;46674;59229;87682;76249;79633;104948;41710;83073;31428;27796;46124;90995;50225;85836;53034;38605;100408;82934;72622;24362;20242;29167;88935;78311;90919;44690;58621;19705;99208;24940;77093;101426;71855;58033;44823;106671;77275;49398;63061;75580;17185;81838;47596;64156;16230;56764;39129;22732;69870;56929;44807;63558;100275;77707;28327;84746;43081;66253;24826;73357;70554;59363;101810;52081;21359;16129;38603;23653;13547;100958;26602;51222;43231;59412;34963;40296;84039;37859;80572;11846;97491;50633;39761;52983;23949;69538;95659;90722;35847;35955;82796;84703;97332;16922;34778;75913;75611;19072;95905;46926;101970;27592;12581;78407;80371;18329;96809;49463;59727;53991;30670;104209;104585;31037;55308;52499;86723;73081;27053;19327;43252;27503;51287;100383;16973;78921;91430;29666;54873;13761;11376;58612;46640;78886;71879;68086;16147;83398;66500;79417;30090;106469;14252;49048;103965;28812;34323;104458;10521;74179;78810;50090;44912;94328;66873;99718;33559;64178;53001;101901;61836;58957;40530;67191;36203;68336;55194;48698;52745;36901;76150;42111;84427;71495;96069;96294;56286;95529;14681;51738;44039;24671;25140;14964;50243;15370;20993;12427;10369;18934;76643;18127;69505;87469;29893;104438;42004;49567;97986;106471;31347;99495;80204;36646;99838;82866;54397;75950;51358;72325;96348;58970;26164;12567;46965;68669;106188;68910;25354;97635;99385;101690;29880;78903;94284;67630;70305;105120;70160;103293;13481;85642;95332;53700;51298;35587;105223;14099;60490;97368;14745;64882;37936;49750;85438;44507;22654;21303;31698;21011;60362;78085;45071;105561;71553;96536;64171;21642;34772;27777;59510;25803;25781;85011;47129;36035;36905;97776;97517;41166;20172;45575;57937;72752;99841;75565;94929;25741;11239;89267;22032;34830;26953;93369;10247;85926;39283;64895;29877;43898;51477;66262;70196;17040;54039;59139;51544;33857;11290;21063;18074;99067;24166;54193;53927;32541;84588;82406;15406;95378;90202;75415;24966;60223;86200;87591;11772;94167;102278;32494;99974;76083;79667;33361;32372;81652;106337;95795;41497;38209;63668;24846;59691;46079;74191;27379;13212;74480;21390;79646;11427;34747;33722;86163;49820;25531;99813;20839;29377;97019;32013;97178;15290;30962;40212;40728;25503;81379;24456;49145;95633;91224;100490;39128;60042;74110;44400;42171;88450;87784;52826;29660;61286;92917;43675;45240;35698;106054;35171;72395;69537;25002;101450;55435;101668;20453;29200;53607;44031;100530;70432;44756;67097;28197;42915;32073;78895;52816;46132;93461;92332;100189;83635;82868;47611;107082;85490;34460;53554;60737;96144;25006;70266;64393;74639;35938;57047;105085;38520;86199;43728;21155;106423;30264;102333;70718;17984;25520;20367;59104;85742;81415;24229;55246;22074;26358;80978;62825;30499;21696;83754;75870;53189;46999;60688;26454;106789;29240;14281;93670;80493;28308;55379;29523;24475;72541;90895;90161;16061;26277;42214;51430;33080;104054;33511;94436;106910;51326;54376;13348;46961;46452;85716;59706;21634;45843;39198;106365;96014;49520;48687;27003;14168;99318;11336;11715;89838;79546;48194;33517;86293;25457;15918;23672;90014;52036;49752;57348;69320;82004;19482;45194;24734;75904;57913;50660;67884;14572;49179;29042;13157;92367;38583;12923;38965;104625;57697;105149;62459;69158;13981;93247;24375;35343;97972;90400;26905;79985;31605;78377;86888;49034;53533;47556;68511;18561;106333;99487;34377;51522;91493;92878;17628;92021;57366;104440;43507;39242;57132;69253;38949;93133;62431;82413;88744;70927;81110;78743;96970;19073;63310;19658;26480;50320;92587;52247;11175;18331;20707;20554;21952;97076;46990;63814;82310;34438;77111;19447;64280;56256;22445;39091;32979;28022;64538;39949;100896;60819;81618;99723;13458;52534;91332;38924;68788;11254;40073;25068;24894;104867;60313;24612;69310;62509;24094;33085;84278;94070;46523;63338;101544;47115;24017;105358;64231;79714;28199;11476;79043;20180;81901;55606;59492;27552;50316;85900;21747;40527;68459;85607;15785;25729;21419;89202;92720;28648;16023;39564;99853;13261;76324;37298;12824;16844;12583;100334;51327;73643;69469;25348;83424;24601;69529;65239;26271;30210;73937;94853;83928;12774;56894;57371;57385;53505;32677;70489;86782;64468;48788;16825;83076;29987;36484;73074;68594;84455;15045;28206;22898;104765;59699;93841;99086;29220;42797;77347;43211;58813;35241;87593;54862;63882;88754;49163;94871;90619;27696;78227;58455;53240;94915;48308;14209;30215;96524;73899;90725;32236;60440;56730;49622;47124;105754;35505;23329;15101;61715;75396;16887;15685;81790;83272;92190;10327;61730;90185;70677;41591;77136;81927;100875;69682;31915;57464;22139;100743;72785;60727;10628;10799;90612;92431;47637;104794;69934;104118;73802;20629;45388;91854;45528;62611;105827;56692;81533;96816;41943;45366;34941;23114;80274;44294;72682;16548;82887;51317;49490;64247;42859;61066;24523;84576;27951;81872;67540;69124;66622;30123;68171;81146;91160;13612;83282;37320;57545;86095;12029;96158;59940;91020;76631;39177;17368;30179;85145;21080;105688;40193;59189;104916;52580;83796;89130;77018;35178;74693;64335;37379;20953;78232;46158;41446;40648;75398;72380;15213;69817;67658;72152;89342;66385;47566;58690;46274;70133;84814;90832;35974;39862;65374;86910;97026;56170;25762;17429;100679;62958;63578;24364;93060;92111;46413;28789;35943;55188;91499;63013;86581;45758;35877;59971;67172;57432;86727;28975;94150;39616;34278;42540;81532;71722;85202;67750;72012;71210;39915;90529;77400;46122;45600;43597;21617;42490;28650;57149;28959;55096;56144;34252;106876;30169;22332;90049;102872;28416;106564;75473;35444;41668;14877;34894;35380;97237;99991;84475;22823;94686;51740;23708;10088;29427;93119;17648;30058;16793;29738;50872;74029;49987;43420;97574;12055;67459;95818;93773;99272;81774;39335;72023;16412;29076;104273;35328;64470;19135;14589;84048;24048;55330;44462;75836;39919;56836;38934;12828;12241;38486;103938;12635;70749;12314;19122;56869;73099;14072;22582;52229;37077;84937;51498;73083;33862;86388;43376;88704;92234;71381;83878;83502;66835;75224;11609;72562;24978;15342;50208;25618;60957;82187;56508;75698;69110;26416;60048;75089;103146;45244;50941;200141;23876;24297;88837;87256;85371;86042;63646;78589;70000;20386;10398;27645;67523;74853;28457;69326;68315;24640;12019;65869;35758;67233;64242;94718;101826;97798;101528;54886;87093;36657;100508;47059;51016;69893;43843;87869;90808;32306;17589;16453;93265;29582;23350;80767;72968;19710;102270;71699;102339;91823;70192;84168;13355;25423;100045;61864;35022;88504;102195;23219;25349;14496;92006;14342;74494;86215;93848;72227;106002;41454;60123;27647;37462;14042;18920;62603;38080;78486;200058;77587;104330;75213;35975;30933;64421;25467;41915;68750;25132;19121;96707;82026;47153;100211;61550;50732;52075;56994;89895;67898;69610;53112;50678;42104;88143;71293;89574;15557;12373;90927;28601;27194;66939;55157;69709;57207;97581;62776;55430;66007;29978;70538;28184;93139;83995;83740;25011;23700;43613;25698;28166;95297;35091;65380;34022;53271;47283;44748;103693;58188;91084;48715;29305;85843;17326;90804;69705;32228;101231;77490;99823;27882;16487;58124;60586;15179;37224;93715;62775;80277;96410;86467;106092;11979;101967;91554;103030;57365;66542;75993;13509;23887;42170;69463;71268;62943;15903;56545;32143;32975;46444;87300;75412;93569;46606;56640;83382;75496;24855;81727;18005;80425;77020;36026;15177;78702;77201;18131;86288;72902;91590;26896;100461;84710;76790;107117;23827;24650;81705;63789;13634;86966;77859;105123;95623;80857;41318;73185;78865;43641;20553;50387;80086;102159;51131;41677;102190;23559;94998;70206;24882;82571;21272;21601;14938;106427;85357;37371;49240;35589;43261;10294;96772;42612;42396;16874;79969;33421;57842;17012;21481;28730;29176;103022;72359;46372;45527;21012;24145;84184;60134;74061;79671;67218;102802;75232;105651;66798;19310;58792;23383;22256;62586;96984;70904;19341;17195;64318;60215;100399;102393;67067;44224;106548;102082;10760;56054;82120;54208;50766;44445;38864;64668;18874;54419;36989;87264;80698;42058;33656;64832;78090;22288;17722;25874;82967;15556;97011;36770;28212;51823;70553;13791;67645;46420;31570;34302;58203;24534;22815;68862;44557;14534;15123;32308;11231;16053;48195;72368;36110;15064;68554;90847;28881;69019;75684;60987;86439;93034;21671;49246;91811;78958;59340;85760;94123;15152;87983;65271;27341;94274;48215;90077;88164;39493;62972;88873;39945;14816;90142;81434;95827;45966;41176;104423;96886;25045;43595;48695;68122;67440;49780;66652;11538;74753;103260;55894;102174;51953;79246;24207;30843;43151;67993;14542;32371;47301;72855;103194;21991;33850;40426;17669;75566;55723;80126;101887;91794;90610;53129;48406;60682;32235;23725;76809;30922;72542;26198;44963;65631;14234;30229;45146;43246;99897;13628;70793;87487;43019;20877;34210;70808;105122;26001;21395;37443;76637;51271;28664;70191;12739;64044;40879;77370;20316;43049;49546;29170;14982;31800;53830;91966;83699;94679;69340;28557;27418;99453;35947;99753;95948;71415;77744;27335;18311;38626;97271;74657;43706;32532;27408;60963;105567;28364;82323;48773;60564;53542;53931;37797;56543;90700;45782;89591;19075;47343;106689;35368;65048;101721;45889;68923;29472;61525;90983;99181;64237;17180;26916;67342;47564;22728;54483;47620;101387;83463;58102;62474;91459;29253;78201;69030;76665;23667;100013;78703;78154;26035;30847;76737;56752;67017;42404;62192;41858;104427;50964;96822;44854;39002;87629;44551;38677;59286;92263;90633;28922;23196;56509;56898;78341;45545;20055;48415;78416;47314;41744;18762;18511;13747;72400;47256;71442;54404;46688;25563;14576;66748;75803;41080;105264;73793;46767;94402;76343;18447;33883;78124;69082;99724;94155;10426;87447;26493;36882;52481;22082;38434;66214;60466;80902;81627;29935;56679;100604;15688;46375;106950;72616;22489;50883;99471;30816;65788;85616;106199;97890;21502;43403;72585;102192;35840;80771;68300;36525;27513;87090;48387;60199;66406;79473;28319;44456;28903;51551;21584;99891;78499;105425;40243;102812;32945;69114;70872;58263;25059;85468;91047;90362;45123;28793;43397;63404;69065;69781;24357;20530;28500;24269;13490;55683;72684;55126;12243;61399;66804;92632;21210;60851;67586;94848;52779;97668;28067;20402;88923;48176;72767;63141;100481;50765;59563;83769;52277;85158;76679;62874;30879;70321;43729;103307;11340;77994;64150;84312;63635;43928;29976;31279;64804;99353;16928;90091;49749;79552;67387;84563;67219;101489;69126;94702;10418;21204;40676;66736;25236;33183;92653;24610;101298;14402;29283;78881;42942;71618;92861;62204;83938;44279;99952;79055;92531;52874;12128;89263;33405;24141;22856;49333;27929;59170;37427;80338;65371;28916;63202;93016;81923;100351;81104;18093;104823;11741;106559;94836;15222;58596;42064;52357;66365;19870;35515;78661;55760;21749;44058;11316;80281;19936;20162;38846;20984;56073;54024;43834;84374;34824;49019;54824;37500;51860;46847;105503;71284;11833;86870;56222;101391;89438;44435;68655;66395;21118;55023;21865;51052;35675;38836;90027;73870;33413;56238;106575;35404;31073;49356;48448;24418;60539;80267;58967;67835;62770;93427;95459;95447;84915;22457;52746;48515;42472;101554;78046;37097;45116;68602;69861;18465;90032;65779;70353;101445;11029;66184;72188;23808;21918;89683;81447;87543;64997;28023;17285;83238;87069;66589;86001;90721;52869;39059;96565;101547;53605;36075;42186;64777;10150;15986;37525;105308;11664;10980;106490;46204;92441;19223;82857;85985;93050;77438;28137;19465;59824;58095;68991;39441;65555;55791;37463;35215;81807;74727;20031;26762;97033;85938;35660;105513;96529;61153;91521;79146;46995;56281;50624;32711;56348;38825;22941;22030;59217;87277;66801;44789;78951;28353;84653;81024;96079;68432;26163;70118;23418;64522;105969;83375;47755;64306;23558;70778;59256;94639;66172;16644;52951;61753;39512;25641;58273;18428;26733;35348;11200;17336;25626;103367;59101;30227;60437;67911;91998;23990;85595;93959;12298;91960;13097;18491;104724;48158;94902;15180;34202;10320;42246;87579;58902;20541;69330;91088;72202;103279;80406;64598;56667;22195;86815;11488;80314;33364;70254;24530;29714;43624;96136;28267;35736;88636;39845;76310;66505;71939;55109;65958;94758;72086;61655;106636;97069;83346;94522;33618;97378;41690;10572;73875;38026;26285;83005;104119;88989;69949;45452;56253;36687;104607;104725;77580;106925;76328;103837;26214;38357;12683;91214;97739;35458;31912;91009;51056;31709;78170;15020;89862;85632;100621;53093;10995;61522;100078;81215;47003;28407;74508;27477;14731;40902;24050;60390;47094;84971;76325;46654;39112;29745;71834;94011;54922;45139;105143;29276;84045;36215;22461;74501;89573;45352;91767;87714;80246;52051;14910;44536;105577;60292;38726;105658;57891;87652;104560;105522;81086;77562;52592;16095;30493;34322;83015;17788;65487;10152;58151;49169;103691;41424;40651;13583;21439;63502;27497;23169;14107;50811;94234;41337;72908;64499;67873;96370;45895;77417;42913;19143;41755;24228;27531;13130;31370;92033;84604;88492;42546;24326;79939;77238;91997;50722;89759;76118;70705;78788;45555;52632;101100;93698;106014;69001;24879;62212;33612;31259;48239;56063;11142;100640;63748;30116;75551;80822;56819;45728;75000;63549;69944;63958;50603;63675;26337;50233;54425;40770;88535;78037;42825;36453;81381;100195;58626;57625;61450;76046;53738;24483;11902;92990;88104;100703;45579;82409;26155;103850;37042;94470;99619;75450;84585;46487;93589;56135;73760;75528;12812;97716;83244;99301;40746;16901;200002;14034;68685;64448;67296;59203;91682;53670;102245;75504;11399;49764;73393;22887;21874;39833;33012;16843;76844;34000;28658;39970;35796;45987;99616;49343;90982;101746;83021;79642;96236;92570;79315;12345;18346;22828;93209;47633;79352;26381;78191;31740;97507;74559;22470;73972;19187;91471;29501;97058;102563;13120;57408;34645;64612;107038;55512;63299;46186;99030;20019;23752;200143;93022;94075;85108;54887;84699;34307;97800;30180;101988;43881;55371;41269;13281;92976;95671;44359;57495;81358;10245;17145;65893;33355;31899;74017;49180;69637;30854;50600;72815;25632;67381;100387;51340;97405;101639;36994;91775;10594;77036;97438;106759;13875;51488;99954;12761;37775;82917;73460;104723;79119;17073;43332;103025;58451;81956;16246;94076;45415;13063;73829;81427;64501;99328;64744;64368;84256;54835;59060;46801;93660;97168;50863;84384;24514;104337;14792;49221;12669;47494;19298;100456;71909;96337;64933;96200;58390;39330;81836;31877;96701;93462;50166;60283;93545;48888;72960;16306;10705;11477;83672;12914;53369;26509;92296;42462;36586;92608;73497;54616;41583;70620;100596;101377;64664;104477;103615;28380;99913;51330;35277;101123;81848;91094;99395;59668;88642;85968;87479;81794;23788;43995;71695;21403;81912;96526;10108;18734;12983;78693;73335;52380;92519;85741;39068;68751;86655;59279;49493;29639;57858;21529;30142;19505;24615;76508;57169;54659;105243;65004;12005;92468;10548;69455;37477;90522;40497;100107;37349;92648;21410;67291;106722;15912;58326;12486;49312;71481;49576;83713;65730;57393;46013;90425;46469;43942;34601;39765;97811;26985;56225;74092;66295;86479;74702;77037;46408;50705;16934;103118;22849;31488;62079;66691;26153;49714;30134;57716;42938;33941;96702;80628;26694;85552;10481;24519;77404;64974;51006;53287;88755;91702;45036;76822;55424;102091;85113;40938;82791;106889;94997;81854;18741;94507;55704;77160;85233;38913;93216;39131;67747;66364;58825;48558;37329;77249;39199;88983;70964;38441;52099;89664;20599;55092;34719;68785;68128;85235;65722;102870;46003;33292;60171;103664;43034;86342;50948;68734;25799;106630;34276;72496;30156;22628;90248;38406;45419;103620;18119;87931;79046;101625;53858;77567;78470;22864;91298;83992;101342;65845;94407;18654;82584;71052;71047;15881;88481;53756;41267;41532;47590;36864;100672;84023;26986;96962;48890;57663;38885;57756;24877;48871;12123;17348;84761;30307;101102;95744;99694;41898;74614;17740;34805;62500;91625;34178;33164;59711;46772;88576;64793;17687;69047;99581;35028;24464;23078;60469;95389;55942;59395;94823;81304;24840;15488;45852;29136;58718;44036;81052;38534;55738;67082;30708;30284;85370;52189;46977;65352;56615;51601;14250;57214;25935;27144;44683;49281;14356;101648;105620;47664;19606;21510;33027;14645;93598;32773;85907;24434;72263;92038;42175;39312;77809;38164;19487;42069;23885;63189;63624;70760;91857;82725;45735;24908;15758;53878;94571;79286;61126;17636;68337;19722;33982;64905;60701;67078;14583;48397;81582;46277;103130;105941;101935;70252;34517;24178;36626;36404;57229;57161;67971;32390;62203;69696;20064;103560;97028;71702;99110;16396;64908;100346;35640;53665;58486;80106;85988;17156;66269;88437;92328;104915;51062;61885;83929;21824;70754;90559;24439;67983;100082;92348;29503;99397;74007;89887;92256;85291;70230;82211;65718;97512;94462;16801;64649;51058;18035;72356;27057;58530;39668;73118;36198;21769;27625;89502;85672;63223;31118;28568;34945;83622;23748;101567;17201;94238;99317;72751;100457;34834;33340;41172;103209;200044;10759;21585;54642;74462;31284;103941;50488;17065;85360;64279;78385;91292;96497;45685;45164;33603;36710;89804;44729;93903;96469;67283;59249;64700;88505;51521;95339;66382;24657;17754;93337;69146;95937;88523;65249;11070;93932;91473;103083;31057;24993;46892;91081;70273;103787;83024;70050;15166;41927;45042;43389;26492;44938;99993;20177;66676;33271;87621;46702;63220;25478;94933;35719;66684;63749;70792;37493;77006;83641;96375;80224;103633;104876;96141;37776;65824;91817;100398;87653;94491;106915;42383;24691;83355;90420;104985;95643;26462;105823;19229;106578;60939;80923;65921;34170;18796;56243;41221;79015;33682;56919;60877;82447;85770;70112;79883;54299;32831;75261;52529;32176;81299;90493;17365;27878;81599;78790;32226;70946;45133;33459;28114;57101;76566;48863;90589;13770;38208;13333;106063;39164;33220;25090;32202;46633;29543;47713;87304;68822;102562;66378;33849;70546;47456;106454;28200;22925;102041;42582;35170;70131;58935;81885;33890;42971;68474;24467;88697;26696;39865;29838;52400;17394;82587;99797;97521;80048;14068;102501;95028;61654;52857;43581;30625;55013;76279;53806;23769;104667;92046;43124;87243;85621;26527;45228;58955;22625;73487;99058;67882;37580;97488;93919;51553;42645;28667;30420;10851;75296;71900;88855;93074;27250;43052;91378;70149;89732;80113;49998;77947;75463;40023;67850;74665;48385;19385;84926;73698;14874;79845;38651;42136;106735;64956;34131;33216;83708;75486;25870;45819;30380;86664;31839;89146;103637;58666;21183;35020;79435;74922;16835;15565;32800;75804;23027;76883;51665;48854;40937;60936;87622;47836;86673;96668;65886;45197;32912;58067;68062;99943;20393;33896;69018;58578;85619;91174;56694;56445;97747;65831;28338;21983;77911;29733;14580;62526;58518;66425;36232;23126;99456;96942;95746;33690;20876;16293;37013;51834;57382;48442;56044;69883;59173;48862;33599;11487;68536;69641;93439;38371;87731;57405;14233;42460;87313;23976;73494;92212;20914;13088;63144;94521;35537;26190;56875;39483;60836;19604;78209;35534;103023;66459;76273;80374;57823;105078;73168;12239;44186;23677;62945;33134;68794;38986;16603;15135;30231;39910;42624;29032;97350;55289;21225;25911;97541;63047;38725;88094;18343;63645;91489;17682;103058;37220;93794;102441;54004;11847;23301;90524;93079;35485;74427;68944;104513;99334;94411;49082;88531;65607;63801;44399;57250;82760;68674;62120;75431;95559;14005;104156;62531;75642;106371;87720;82655;81428;59322;17503;66065;18953;48694;37363;65226;12630;90334;24067;36010;40044;23440;60596;19329;90945;102589;42924;40143;73969;57643;97862;34964;57020;72756;106503;101283;34019;33687;104744;49008;19255;35045;81228;40691;15122;76121;44360;28201;22176;12287;79726;28138;96752;13835;38906;53763;80148;69657;15941;81048;70459;45695;103198;46339;61206;59584;44180;20334;82947;30790;23805;101459;97142;25419;103111;55971;88588;38066;93492;78309;42821;55408;106240;96858;39869;27240;81124;13276;15067;23039;16295;73019;44518;99941;99450;20807;72898;20608;22801;11011;13772;80683;78676;42555;73325;62087;27228;41248;13082;57427;67837;74991;31480;88905;35806;36678;61952;70997;83932;63739;79309;53887;46183;102275;94827;27668;87034;72257;56806;65659;95473;45591;51911;28244;102514;26060;31634;31560;26540;68675;38032;51737;95843;39740;65354;76916;61169;49123;19966;95333;29217;92593;68985;49535;74545;57327;23576;102935;56026;18036;100660;49189;37187;17172;73477;80486;77235;91551;23518;61300;82805;65269;38888;67912;95959;23904;16447;54339;30685;40630;32091;91082;12702;69039;96161;72845;85537;20433;103851;64137;78127;39026;85571;94646;55044;41779;14476;59065;86201;92198;91314;28800;49971;89640;60781;44695;11879;32717;28915;34783;65109;28128;47785;75094;93356;70109;100553;83289;38650;53502;78988;12643;94028;13739;30061;41368;97115;76945;91238;56590;42052;100670;17118;80242;83975;95384;72469;16098;14993;53166;15433;96541;61647;68514;74123;69865;90490;34384;16170;33467;39235;96444;60567;101134;10702;105599;55551;38215;36916;70914;50954;45607;80808;78925;85835;99613;76059;27411;33443;85121;54921;80384;97674;92295;16390;49190;81081;97189;17318;69373;19681;33238;19459;89966;46966;27616;28742;64897;91032;40942;23080;40622;101966;47724;74038;80196;100261;34369;71802;18373;90150;24829;45812;24227;50564;16467;52118;82471;89993;10897;22034;35787;105606;65514;54743;52120;18680;48703;75628;50461;92141;53923;44292;52157;48927;97826;75468;91441;20935;102463;39750;24120;100463;96846;96189;44179;92818;103348;50714;61511;30045;14873;28803;99363;95808;27263;20494;84337;20146;19545;96777;81224;79054;87343;72611;63279;60159;53546;103342;66628;101530;18124;76888;34605;24697;82977;30820;13915;91278;83012;62733;35729;93312;93826;51803;13441;42654;47193;90880;34728;100987;67281;65433;102593;56831;29091;30766;86973;22702;105538;67978;13896;22904;58772;17428;58479;58296;77779;26324;28068;96773;27573;90928;45604;52028;42687;100830;45315;34261;35158;49833;34954;82463;45691;69882;36365;31949;80658;72397;43323;87344;84584;56216;30729;75896;63871;11881;74881;86917;90178;45182;56976;105674;48780;29606;60209;47851;75844;59407;84687;51602;62077;36546;23278;84955;50989;92640;102737;104716;26281;27304;61255;80433;95561;94953;96787;36421;57398;59386;87076;73728;19743;71321;62670;25931;13141;87658;99932;22522;58777;65440;53731;94905;59915;75382;21245;56318;52551;59751;68680;101897;62979;63064;78505;83220;23173;22955;81740;12369;27815;96319;91464;105366;88382;71413;12458;91503;96796;14867;32777;100882;40872;94669;95799;45070;104303;38524;74560;36205;82853;31753;77588;92704;12500;52258;41464;19115;56818;35723;13765;94956;104363;75873;45803;19253;88822;46709;22066;70619;11228;50639;16725;93087;23642;58720;101985;34818;104782;14788;70179;66950;59321;90097;104843;77642;35146;29630;60337;74667;55677;42572;93092;70232;20860;29732;76453;105369;106382;87758;83614;106492;82821;42213;70882;24597;92638;105683;40334;22141;94663;53579;20098;76815;96396;29899;27127;93781;25740;101402;103537;18215;70071;31814;88592;97741;18197;34495;81129;102242;58385;69918;20524;99585;102532;25094;11421;33960;75766;65162;56413;59989;22127;93417;41511;62031;91717;73108;24764;33305;76562;71642;19032;12576;27258;63393;77257;23807;23210;18129;12422;56568;96472;90695;101405;13579;67467;82826;69632;44268;36851;64061;92188;57141;83370;97710;44107;60647;79466;58154;78650;18489;64683;95742;91108;65420;70702;38705;30189;45698;107098;67999;20587;54554;96698;48949;87399;92432;93443;53557;68664;57326;10734;78023;47905;51179;32828;20767;37586;10157;53322;80554;31490;24459;56821;96057;51431;64688;88746;31020;81355;71199;45060;67486;74783;89085;53207;19660;52231;69616;45001;76855;57144;54575;40674;42416;93732;83155;37459;46352;96522;36100;101412;56360;69692;54764;99901;104142;80586;43836;84908;11051;74543;15284;90614;18820;18199;55733;50484;44234;86606;57516;86290;80611;52466;72011;69014;14106;13982;78487;32794;102851;53520;58204;87651;10427;60818;63325;42027;67201;45150;31211;25736;102396;52553;62716;15959;84961;66769;86420;50683;44207;103095;38226;36191;41169;23861;54032;13575;28194;28357;55880;53635;60020;32675;60565;18374;54322;27014;68331;60603;91890;36744;84201;13307;68649;62731;80972;66560;90179;37054;85666;27528;105639;75162;18289;28173;103153;83324;86442;63850;91905;78892;71084;30341;101418;69069;58798;79874;49771;21475;103694;13056;84421;93196;58884;102422;200040;48553;38373;70804;83890;59332;48985;29019;84403;57230;96715;38195;44459;46218;35247;84134;26115;104486;40092;65905;70075;34182;31291;37667;79765;41394;59859;102407;23167;93972;29628;59854;105864;78304;91918;84422;76743;73794;47675;23845;67943;89362;41644;99367;23414;61551;59718;103026;69849;102600;66202;37152;62897;49499;99805;81803;48660;94731;66685;56231;105194;16202;102156;49974;61798;56918;24081;31360;74824;46028;34920;46092;31194;22407;10246;80137;63288;105277;15823;44842;62962;25138;93630;58836;61556;29824;77845;68254;92397;31036;77553;40363;12094;60420;24792;40338;54756;30292;31833;106742;49443;48600;55282;41472;63895;16041;70007;36277;13954;43465;42535;38336;68243;47839;18575;103601;65483;106580;56871;83003;99544;42746;24947;92097;47112;101218;27743;35306;92072;83314;106328;96369;96411;48740;104281;91943;85927;74574;63167;95862;94818;71149;21334;10250;103121;105871;66573;44597;17825;14481;20691;75645;38950;102685;80191;25133;14881;105583;77270;33650;28783;53994;12953;19893;79697;18764;71304;43079;33228;74079;62719;86373;78570;45505;76086;27727;64537;82908;86794;60655;47032;20774;52682;47617;23031;86526;100322;64504;105865;84222;76076;30646;104641;86893;73346;53017;80372;74561;29903;21975;14310;87596;27239;85489;55232;50363;65611;46798;24904;91065;40558;11362;73355;25226;95344;42507;16736;78015;70772;94339;34685;43663;76048;100595;10087;82838;38454;44181;52756;102187;75385;29744;66324;77773;80059;66255;100368;94528;74014;16891;37276;79285;87737;67753;104314;47068;18276;29755;78884;31198;72926;86449;60736;80930;76878;77333;47578;37119;33744;24777;42586;20459;100444;45631;42985;57995;42161;91151;95634;47738;68838;68633;15359;34553;87401;20994;25549;34457;33090;39969;23486;22227;61881;101158;65294;13112;23023;200080;89469;101630;64523;21391;13758;18828;85006;48867;39666;20525;106497;74843;55278;40013;49888;22187;50003;80320;71664;68457;26301;50234;39046;107090;74312;68094;56726;26523;102231;21393;77382;63717;20505;62640;26284;89569;90252;76079;87123;30155;28754;51189;11749;82070;104083;26303;42083;28806;16375;29794;23974;90344;66034;17516;29619;54910;52948;31774;52006;42152;50224;42937;97016;67823;70174;51916;30707;28817;55155;33003;106556;97208;86340;87688;87129;45539;57154;85543;57677;77563;85965;93976;15474;97745;17709;26342;96187;97836;62241;81576;22426;19007;65956;106984;69580;67003;49051;103124;67904;82242;30744;91191;13238;19964;96084;13596;71720;99984;94461;23727;58207;13722;81076;88737;61811;106100;19602;16186;65475;56835;38414;59506;27595;33503;62893;48153;32250;99251;91648;97407;68700;82974;55016;22822;31413;20299;54326;40071;16174;29037;62365;16772;14552;57051;18925;55200;14737;86905;24006;104669;81932;16930;103602;81613;13642;90099;43682;64687;73973;56696;107091;44648;74610;94781;89311;42364;38251;79712;46802;15472;90731;32564;86608;29945;42223;62639;46818;22044;26549;45093;52151;22985;33768;75627;100169;48323;46855;200123;29233;43755;36565;10712;72134;79272;92549;82973;93345;101228;101772;56805;85934;78659;83666;102651;75241;77462;55513;92543;60868;81977;27826;53988;32518;20765;12253;19319;79867;20491;57347;42910;28582;103329;67833;90910;86045;75360;29814;21774;33116;73131;73196;89935;49376;72760;43681;105422;49290;35445;11433;100340;57078;56201;27189;19240;45460;74674;39566;90647;36109;19228;43779;80860;64519;26354;46112;80844;17004;62838;68390;34239;41186;10950;107104;76088;38507;18616;72836;16496;73112;62362;72460;43703;20532;94489;64083;97520;97708;33105;62232;95987;43751;44078;85062;11556;37923;97444;55455;81623;54125;46440;28456;44109;97950;31104;87644;68358;95405;83889;60343;200084;92371;85521;44861;63168;21736;29860;75395;31066;31011;58892;18070;105191;37855;72343;81203;21635;17005;76484;87289;73180;75879;38711;20011;91849;21051;71002;81699;99690;75039;90232;71221;37748;45487;48737;90306;99012;37905;73868;25074;62493;78443;78862;26204;31019;101834;74569;85518;84594;99062;36017;81440;64336;23123;54066;65412;48755;92184;56076;76105;55039;23905;95653;40625;57315;29609;75689;16565;81414;105398;75722;11712;25081;12587;92722;62301;16128;84904;42545;35168;58131;79257;52110;29562;23647;88558;15913;47394;15895;69495;69230;93489;14219;13373;27825;88432;63207;84886;41718;25296;103526;13708;73247;27975;12905;100454;87772;48915;11234;12960;104623;57288;101566;104576;13469;43954;27001;90446;25748;42036;67550;21514;79784;17375;43155;100968;93542;62702;34856;68748;56166;10715;48213;43632;37005;26168;96774;93267;20590;90293;35131;36992;16270;37474;38000;63693;95418;55558;11637;15681;11668;91691;38552;58846;65614;97605;70715;56145;45654;31922;32531;28669;18458;100590;20243;14753;95343;62516;87836;91797;70028;65868;32466;30402;71205;90206;74499;37181;18724;42867;91697;24237;61237;12416;101535;33138;88685;67408;11071;67496;106354;23437;88868;42581;70543;67221;56512;94594;50831;19277;73462;43746;86682;68258;70384;13903;70655;57813;44752;97516;46762;43795;26760;77470;85398;75040;92852;71563;101291;95397;23450;26219;46850;24387;70267;40043;94062;41528;78262;83653;44118;29886;59679;64418;93849;22680;54963;97022;75572;13038;106430;74920;93713;82984;19344;54374;85279;46108;57805;85641;88066;86153;76075;93391;26299;40912;65484;20495;53888;43100;66053;55961;79477;100380;58328;99148;46917;44134;86542;78155;99788;90139;18856;83826;40398;35545;37789;78724;94845;103301;69002;88065;59401;74927;69643;105166;97039;90468;71544;64085;44062;96176;69609;24956;89092;29723;106230;39193;51731;104370;66144;101587;39349;92603;65743;84719;70665;12981;20265;67551;82034;47019;64658;93128;45256;28924;19414;38971;89807;91527;12318;51620;64118;88171;100732;93021;33117;21846;18818;94769;38946;80621;57474;64957;22756;94684;38484;12497;104668;86176;43276;61241;17209;50844;15628;31327;58693;87952;14245;104075;11722;58500;19099;42618;37978;70202;34989;47043;15586;101980;85055;55319;73601;49605;55619;40442;60621;37199;55161;92351;86265;86824;105071;55749;25776;29585;18534;23419;11300;17594;21564;42076;26408;59936;25709;41657;83033;38191;13951;70648;81657;65546;96658;22340;44955;85957;10817;87549;14929;82174;16950;48300;51032;43190;80093;33337;17587;74469;77207;71386;48796;61272;61032;90696;62717;61839;19815;48790;87891;105153;16735;64800;82426;46736;43222;31724;55771;94176;56632;51140;18656;31235;101132;50296;99096;89936;50953;49071;65851;63527;63362;75239;19591;100929;28240;107036;15011;50252;80640;77688;89576;76481;64718;105958;60855;96216;23165;55634;37104;62243;85137;104348;10867;66863;85837;24625;74004;53361;62100;88698;66379;24243;17370;81301;21990;74171;80463;35691;34568;33254;68705;62334;42302;56086;89199;105733;75987;43369;25114;66401;46827;58750;97870;20192;27479;105922;16741;100603;62326;29536;62751;52952;44364;52844;100963;27648;10342;77897;73781;74042;73183;19647;64024;14357;70533;68382;32043;83119;60758;69006;38897;16205;93861;13504;41312;20676;73483;103847;67360;70119;72165;37645;77391;82590;35504;73023;104401;68643;44349;70403;46862;75598;14329;54389;51703;33204;33371;29457;40397;15503;83839;38919;54375;94326;79682;75248;70226;53174;99338;68238;66244;102995;83530;43684;31919;99691;16783;70776;80922;104926;39803;35685;42514;85485;64663;34987;43385;38671;53124;74268;83040;27744;68993;94132;31097;14969;45805;101710;78752;88866;39736;30556;93509;75532;24547;21351;18543;42441;95590;25839;34659;36243;64756;104752;38011;31695;82467;71313;91906;78240;39681;36933;83477;26528;52146;65188;50747;76658;63989;66311;71913;48747;34340;90762;79796;49130;66175;30417;56542;50367;15960;68476;66305;40845;13275;99539;60426;17665;90369;40004;28149;66826;60249;85885;18256;52878;92020;57705;104818;77724;60207;75905;11643;29717;67091;35973;67637;69083;49484;18449;91676;67755;106545;88494;76818;41012;64536;31525;85870;78917;91443;66160;73890;28510;38691;75377;17386;15053;25301;31777;69844;34177;45171;95525;105501;37863;28621;44343;94412;20624;64731;13084;92955;92325;69590;10249;79260;30866;13500;74170;101456;61107;51097;68941;32557;97888;26211;23966;10580;62575;31706;24482;34840;35583;88138;52886;71918;38238;80431;90649;50672;66561;20603;75420;73300;89835;40269;67131;88845;102664;55594;31437;28810;74696;52539;85651;43268;30851;41772;43966;76856;20401;17600;44028;38253;55921;37448;36062;43378;100442;92712;49199;87288;87933;45768;38487;17820;52304;53594;69405;12489;45257;44258;33664;35999;72871;56251;65054;70060;27061;82717;67319;54139;58481;78241;29088;25278;62020;103564;24545;16522;73618;20531;58943;10482;16867;62063;17840;90138;26326;49291;38218;30288;26410;93010;87409;90573;64770;38293;24857;60354;16491;53563;78741;23509;92160;95022;53539;63197;42310;102323;66770;40898;27748;105946;62828;55868;55837;68452;73876;96812;82308;80145;83866;84567;74877;29900;83013;47670;26975;45151;58682;60498;65605;68768;11353;26636;104807;21170;85503;34331;55586;67726;105268;80069;50406;30679;51901;51060;35184;36479;58732;91449;78581;58504;51022;30448;41418;83460;74292;82560;95655;48812;39917;72788;42028;18171;62993;34235;106762;51928;47507;70572;71223;73603;76282;68569;104468;83605;73418;14742;89426;44633;18908;69152;54216;27761;13420;12035;85660;48333;11710;106871;30880;105795;51092;37921;101435;103639;22092;43643;52389;95751;18062;63178;82862;62343;86857;106648;103883;100418;50059;99041;31733;45788;29223;26422;60989;14677;24494;51635;32370;95868;77002;45179;103462;32461;50119;28411;20492;81483;67738;69994;81933;26233;36829;71897;33401;34561;28482;46475;44539;35888;57342;80114;49930;30146;23582;16176;42959;58387;60056;58510;29251;74444;43603;14974;78874;30723;100568;72337;19544;87610;37085;60076;36054;59956;25868;34579;97522;55353;28421;103763;101609;24541;49815;60695;66464;50658;67516;85081;73159;48152;23673;94337;68199;102078;102386;50254;94357;80010;93494;62849;70329;87013;46341;99255;42760;81371;81334;26319;105363;72128;105593;52130;41705;79004;78524;55663;43113;30387;24392;24708;14179;74801;44675;80518;37620;102468;69162;66004;106692;48464;32948;30955;99659;82691;107076;22536;93846;66981;38046;31732;52689;79133;97498;14914;37243;68015;40740;68072;81858;104643;53355;17646;20429;66307;27768;52795;11669;51656;79886;22419;83558;72484;30894;18772;102410;88542;62034;27488;52819;88049;103236;81586;84175;35398;30572;52516;29563;53650;79262;90580;55799;13239;93142;91025;16002;22213;68891;69287;57595;71536;19812;82255;67881;84532;66149;15140;10315;38268;101053;50709;72702;104245;14797;28699;87370;52057;100637;85374;35002;200052;50029;64177;53757;105927;30067;70581;71971;102045;81279;93938;101655;80985;15449;90685;29961;13253;51888;52438;43256;20709;57934;62672;104925;61796;42224;65697;40756;106697;37036;23980;32631;25089;48666;41334;79347;52156;50713;28725;61333;61955;57940;52912;72636;50942;75754;14708;36789;68029;24315;26877;83351;79574;100125;91926;62817;92247;21588;78106;49667;24678;52045;105676;12642;26599;102653;42606;21157;84957;62818;12796;63159;62222;96953;40112;10356;41909;95341;35310;96489;70786;20847;46150;22206;50533;96162;29671;90395;53683;57492;21525;28232;75287;74912;92110;55174;26846;106356;45860;28732;86631;52314;68736;46240;45483;42429;90162;18106;47512;50992;38328;85159;14836;14629;46757;46554;42675;84202;79300;84238;39226;90759;20861;68671;20023;39842;103574;68932;78729;60999;75236;28075;14025;26727;22106;99655;46869;64695;38405;74430;15948;20931;87830;46391;36907;22351;73422;47850;86866;59179;63315;105219;45644;79460;62146;63456;12066;55968;106725;42207;75509;12121;84277;16047;32640;59304;31943;32549;95560;88585;69704;46787;41785;18271;21379;58950;34005;99307;69607;58723;89717;14017;63747;81645;62780;102135;40317;99225;97021;60443;42431;37467;97202;75063;33235;37908;97981;80913;28211;102985;46551;102587;12748;88036;89980;105898;71436;46118;43471;46742;17464;93902;102830;18451;104045;73377;72589;87411;59970;86384;54775;47058;10365;97200;14562;91517;74160;88573;85272;51624;11458;40608;79637;64852;92056;87930;80222;97722;55121;96258;87405;36564;25410;93269;32601;18695;33573;44614;84743;39988;14712;14478;103460;67494;35391;16307;42934;46811;40267;58760;60347;57820;68929;63604;73072;89420;65167;48423;29252;13044;35194;25884;26006;90177;22613;44808;91309;36012;105978;99689;19860;97327;64374;53242;76523;35072;39673;59490;101600;94426;95580;83218;54421;99119;11683;83247;104746;50117;84157;86718;85668;45024;32063;64676;76661;10924;77702;80211;94257;30639;24463;53637;34284;16391;22168;40505;54452;44394;65892;74037;107053;61541;32644;62367;40091;97611;43570;77054;64740;65633;84593;51138;24876;69234;31508;68140;99254;34312;15148;69858;13783;23773;29977;54742;22297;13976;67020;87258;51770;54901;77219;63212;92586;76158;60336;69062;19418;55316;77507;29153;71233;57534;106047;75433;99005;82146;32960;87032;10129;89147;44473;35262;100423;30414;45622;46319;12332;91842;73094;49248;10061;70537;24002;27292;28057;87516;90257;69881;18808;75651;43198;45416;105355;52015;81222;33968;100061;11942;96299;29997;15089;102499;12859;15349;100549;96930;42771;11719;95912;101994;84641;83414;51159;67935;65503;37422;97666;69656;71209;56421;54357;44004;13523;40561;73798;55813;29829;54746;45737;46036;45143;31861;87033;86533;68477;76497;90051;25963;56746;75946;87641;10525;83099;48534;41913;106091;87489;79047;81605;57323;62095;33639;27372;85744;101664;56218;76189;24339;96578;32554;85647;52960;21108;56077;87170;29297;12520;17151;39586;46200;70621;83833;69398;29586;53387;88753;103555;105418;36691;65253;59033;34223;39371;102304;10641;83930;84880;35803;58360;89517;53456;38264;31783;36754;17625;52633;56757;35188;96678;62248;54078;85234;81747;21723;68634;78269;30928;19069;63848;77886;76223;49010;46531;63934;15320;53150;18768;33122;13834;14778;106870;26748;24110;25972;75682;78998;79493;78727;97151;75595;46273;17971;27738;13478;80625;57400;43991;28528;78645;15860;21699;61306;63039;46404;64432;105906;102454;59007;62914;88839;40272;62996;90830;87131;89667;52701;42922;68787;91135;77265;54934;78931;93658;36065;79679;81130;85650;59811;23130;29203;93479;65274;15922;83058;18879;19291;38928;54537;39029;89442;48511;32833;74547;43161;34908;82018;57570;62706;70323;92008;100269;47673;64915;72349;71409;44803;36443;67456;22050;102817;13610;16571;51027;91228;26836;33146;30086;37961;75875;38947;39009;72797;81122;104170;22936;86484;23918;83927;86482;39090;95522;29021;28802;54802;99332;103908;79701;28399;100272;82579;47265;20190;76432;48640;46879;17046;65238;24503;106989;26029;55234;63080;21196;45671;23429;61968;52501;43753;36344;13163;52872;51692;12582;53804;105705;62329;56108;41906;30730;43096;25668;14365;12734;104562;79226;79919;27412;26066;55696;73294;73571;73987;17834;48492;77900;106696;76820;50489;50982;49200;102760;74620;20396;57669;105322;45522;68322;41924;60946;83893;77629;61245;80455;49439;51433;91215;88169;101828;49417;11000;79525;95417;69911;100004;57561;200020;93361;18096;76749;21550;43764;101355;50326;89669;84936;14766;32897;86177;97030;54916;93054;13581;47784;34336;41631;43602;34309;95477;58440;26270;78975;40515;47627;32791;27231;100979;88132;68087;58220;93934;87699;33705;85677;100869;18446;79709;55774;66024;61025;85526;55984;99373;24666;92342;81861;55554;74039;87133;81166;56531;49098;55524;33513;76140;82198;22731;106619;72853;65390;70325;103608;15171;96165;13222;18362;66882;103276;72132;64671;82860;65164;80560;76860;49700;73310;100864;70703;103366;56015;71589;70322;87126;25863;70659;37163;87199;53843;78099;25321;25135;79948;103361;60399;83999;35128;33059;25326;50076;66887;10819;80631;80485;14540;58050;56354;44779;94788;96262;18072;76799;46088;51963;65415;33649;103479;14764;12757;16861;57720;44908;71569;79832;48222;52181;86813;66329;76959;11085;61841;89645;68903;62960;11066;83224;16141;32187;34988;41381;24317;92489;81158;56215;45331;29015;26437;104316;69741;76871;32229;12957;48751;93837;41126;26830;73833;34928;24319;45984;29385;68357;67780;24474;81824;99141;28630;60686;58447;106161;18212;96596;64130;77585;21972;68678;16500;89289;14320;107105;60032;20686;49285;78179;85998;28678;50882;51908;64811;18059;85805;48502;80378;88648;10790;92552;35065;10818;31911;70960;68447;62193;80417;106901;50355;31248;17330;58569;40224;74935;91200;62123;33846;70275;77362;84269;81578;43747;97670;67657;70132;45578;59575;30191;42926;78954;41461;72802;102567;33547;36061;92039;39116;24068;26998;94793;63771;17280;18972;47352;36461;40521;91368;41272;25293;66735;49314;16682;11709;61065;42477;94733;94432;42909;58215;90394;53525;65216;42747;81812;57632;64426;70996;14746;92196;55446;39150;82359;37024;30501;61658;35342;11434;38618;54885;52525;53357;54567;52167;55494;32405;31554;101499;15018;73458;84927;52203;103777;83241;67222;17642;60131;76865;21033;14978;74297;67998;29712;102804;77998;79885;47902;100868;34972;81685;92900;59350;65119;63448;63599;57791;14458;42593;11265;58461;106809;105052;82697;55441;43372;13673;23907;93478;57485;60180;95719;22764;54147;23237;45082;93607;105822;33773;36253;68552;21763;30651;39974;12894;60413;105002;45238;62865;16107;73250;91568;36313;35397;66913;93455;56173;48217;99157;87911;83213;29645;45498;53638;105739;105851;81855;83307;26826;16392;21327;40606;78772;16217;46669;25828;23626;18984;79766;56363;49418;33970;55372;51726;81425;103049;54543;88455;62475;91540;60530;47694;86367;68876;59921;19858;40974;10894;21460;77866;60892;73068;89441;50113;93619;64682;68343;51794;82714;34885;57375;103239;36489;53970;72067;26022;80256;49574;60097;63652;50168;68809;18983;85336;52943;49532;81373;96671;89080;61748;69970;35030;38006;55024;49828;50961;13244;54578;16992;47492;44864;95803;86483;99036;69758;90581;19401;72036;29594;29551;13599;77057;62080;43350;79030;91681;64238;104116;11236;89708;84098;50395;27284;63995;99112;94485;91283;103782;65156;74500;92073;31416;38789;89133;95968;16131;34419;45883;59397;55987;29574;12513;83226;40026;32365;84848;14393;102012;24654;62181;49269;87999;22776;71871;31937;20902;61411;85383;16539;17100;34011;104277;12201;65220;80904;74978;51202;85681;63927;12625;94916;74606;51722;16238;97462;42786;48606;52504;37105;94580;22016;69601;62263;52927;92010;48719;10138;22171;106847;66358;73924;61294;88115;99479;64203;58066;28496;65087;10640;56515;41620;52789;76993;75841;29663;48288;51129;18528;97222;66562;44312;80729;53342;101948;53805;56700;65840;70238;20510;95850;33585;102566;24938;54952;106408;38205;23291;21003;64288;84411;16356;17196;78036;12431;86932;27558;55175;40335;66157;41855;28386;12359;43363;67477;97689;72486;31975;45242;36302;73757;66223;59842;66333;68977;84342;11204;50898;53950;83067;93275;102428;70555;57014;42445;49102;11673;80214;103651;75457;12971;83229;11185;44043;102466;64853;11922;25297;86528;84704;34376;36881;40577;67186;85437;77317;68960;25908;105982;89192;46136;38144;82442;87345;18533;28292;77804;57299;27375;17650;34826;12041;68548;94911;106908;86262;89131;70817;101395;56554;84871;46350;54737;59525;39231;17011;71195;25750;81461;15353;48739;51710;80427;70625;66123;88952;103507;95440;82057;48946;81165;77061;101432;57099;63643;31218;29056;40216;50334;100833;58410;15567;85955;27075;27836;53241;28530;11540;18274;40757;42873;41946;78111;70122;79012;101628;54420;86961;54607;89973;15188;30198;86461;61001;107051;72520;59766;58743;105288;36587;63274;64727;83399;85227;49033;102131;20212;19762;97908;94480;14890;39819;23013;62732;50205;100696;20272;27829;30719;40236;99956;27047;31720;14919;13135;74972;35658;74736;14514;53748;33425;12357;56091;107022;58053;91072;50849;72623;93309;22267;50031;47848;74370;56192;14830;85992;101791;20033;43117;75220;83243;29306;93858;92828;58778;61455;18895;18200;32025;83676;71031;91763;49542;26256;48613;11648;70255;82614;106741;14483;20089;47065;30257;94438;76442;101348;102712;60952;21521;34147;83685;13161;20831;55917;58184;86386;70318;67036;32291;84865;38989;94341;52385;23288;91658;47052;57121;104503;31738;73024;91637;94920;63977;25318;81799;33953;14548;23469;101844;53160;55598;105776;21944;81326;31882;58922;86657;82479;30472;105791;60742;36809;103015;72116;25424;49430;58027;33529;84293;57224;71193;59784;60340;100715;17830;84050;71431;64240;69940;72464;102739;53824;102638;50446;30630;27076;61212;36513;105926;40488;30173;27566;53090;107046;84066;10555;32378;22905;46946;55864;90914;92036;36945;48901;17361;97504;46082;33485;107032;99097;53846;106109;70967;15337;85517;48880;32040;83061;40734;14373;45834;73123;31385;92985;85180;72258;94626;24866;43511;43170;81535;35734;81472;38768;100863;104381;38581;90057;56548;19798;13206;46302;56377;81149;30187;13858;78207;28902;82405;37076;100109;83773;84320;90346;13566;45517;103626;83745;72075;42936;24267;106852;59926;46405;12026;43830;36927;72212;52348;72370;66653;10549;34770;19967;86675;101413;91739;26407;21057;60811;95820;37494;23780;13328;68155;45041;90558;22091;64250;33498;45928;11279;78769;43556;13814;57552;31167;20002;17772;68994;77281;69033;94838;80812;73583;14888;54159;99140;100414;21407;86008;32482;66166;81951;86345;84109;81006;52922;38817;102684;77919;31986;12766;76438;95408;105256;63449;99915;24363;20236;27551;77502;39657;93412;16507;22797;80465;82751;42785;91385;85442;103971;73984;63073;82067;35038;37313;45120;100186;59294;10957;60261;31007;65367;43750;60771;97748;71860;21935;58816;58662;21515;38294;18551;29348;15343;99674;105272;13898;22089;42907;94970;76947;87279;23439;81349;50181;43260;104674;86883;44617;61087;58441;105314;89436;73363;36545;62393;37208;99327;39779;36318;30332;75007;59632;96460;33002;32820;88054;66181;103711;34231;80795;90565;94465;27084;91188;42200;86854;34206;40841;18592;96776;96143;72335;96015;28827;85183;16573;89901;56904;89160;65919;101350;82514;94447;91015;89151;41692;60160;32685;80190;56506;87278;20258;43136;16882;16881;17490;101089;66446;63660;49934;29737;76798;59377;65389;33746;93458;53253;60375;20376;72819;92920;31815;89871;78446;96029;13381;73863;52323;48875;30988;68911;17110;101066;77739;66473;35904;60001;21423;67446;84330;101977;90424;82615;47544;24858;19828;48147;49566;31896;34477;40465;33239;88764;103035;90120;53933;101733;77559;93725;48461;30855;61009;20443;46063;55708;29964;105765;58697;80849;43227;30609;71471;57450;104504;38337;95845;71368;105456;74731;100625;49011;44201;87270;74006;29835;21195;80091;66518;51009;75608;49045;99358;99510;67032;59158;85598;43896;25239;70164;93012;34821;17435;72254;103094;99185;52153;49387;30565;68900;35549;36848;73843;74719;37447;56174;42510;87940;58749;21293;103972;95568;56511;54687;87049;42886;22601;28038;64926;56199;92479;56635;85711;107123;80307;32510;62947;52522;75605;53389;71114;92666;34204;14207;31645;82262;58178;77589;28418;26955;71137;24991;58059;80776;82622;53139;29856;38663;45885;46131;58265;70041;97191;104441;55043;101460;94719;20955;56132;11625;99401;69518;55081;39558;58735;28269;81174;104376;78933;80969;27133;72150;17191;96231;79763;35443;14509;74339;61526;13820;58523;20105;91994;29786;68391;80569;14675;44762;84014;99975;21619;97031;37011;31755;68686;10942;39872;53133;28569;62971;48498;88007;12858;75334;22632;71357;48375;34530;56959;51172;90981;102294;102334;81784;33410;76884;11440;33979;74987;90430;30342;13775;22152;75530;39577;67527;30094;75649;101126;82903;92826;23578;17148;31844;57085;97846;46837;105797;39662;48298;41322;55991;36384;45923;33339;102636;87098;52264;69241;49645;89097;16857;72417;96689;51651;27130;66116;16510;63459;93411;16590;16765;104346;63363;47414;54722;13466;12892;72976;74634;103868;35712;23146;102035;61211;84664;12662;68378;10382;96783;34476;19060;19057;77790;11515;87839;18691;82620;61801;78599;63177;52465;39399;15285;106167;20705;88015;13180;24836;14594;63843;84718;33199;37057;53037;49931;41163;36660;27386;101145;48941;81466;35937;71183;100519;16516;47904;47799;56207;56769;24253;13416;77644;36350;22575;23504;64749;44698;102426;95504;90303;80018;68344;92899;84037;85496;72523;71361;40612;40163;61042;33832;18579;94754;40830;10843;24736;41429;82814;33190;20731;25042;81739;25250;42560;44907;92170;84121;71655;17445;54362;27190;78859;41409;54337;66537;92355;45364;36418;13442;74996;48192;87614;62829;106558;102721;89528;20757;67509;58233;33454;74356;80934;48615;42684;67501;34837;15000;72662;50381;74697;69543;62842;55329;19955;103670;52915;99209;96209;56337;71760;57986;52116;80244;31879;28945;62169;44261;11527;33101;19457;14632;10105;38597;18023;29382;21694;60407;85917;57702;38082;80805;16159;89003;50647;24647;46066;84984;26713;87485;25229;83432;90727;42367;62425;85051;16067;70440;64928;63592;89917;103592;45609;79195;19738;71006;94531;74866;66933;53849;25625;102475;11849;74129;35186;20163;40201;96120;58786;28599;29258;37281;91236;13179;104081;38277;27216;34359;12252;44299;102518;39413;12442;72546;99716;106506;38799;48221;83861;63828;58826;82776;75202;95828;103604;51311;54029;40221;89987;19328;52821;53046;81968;42132;25615;76906;25210;23979;52040;14569;55422;83493;66925;86515;35424;52092;38233;28552;51572;100077;50378;23098;43488;63712;104294;13619;58065;25534;28586;76109;81936;62386;40786;79056;64010;92641;30578;93153;75560;60545;54850;48926;75013;101114;84321;41936;34113;68038;75355;62423;16627;63256;72518;62636;66012;85548;106786;55449;62098;23105;85495;81474;90361;77064;86649;102141;87333;81608;23701;52478;85176;87097;12050;63452;44728;75602;56061;15692;69240;44308;62561;103337;66006;80529;11687;39037;74799;63234;30582;97064;68491;104792;45213;55710;79572;106196;62387;33202;21263;86411;45706;78608;35856;65874;77777;42317;29017;84963;86958;21429;81253;40483;45199;96939;53202;27683;45743;86258;60027;37784;31549;27871;86208;22336;33378;60893;18687;61587;84692;39805;89404;66565;42877;102271;67715;15839;106013;17288;18245;84875;19207;92895;63566;80474;79824;33876;51133;45612;59543;72293;75352;58542;48282;25003;44849;30188;35699;26586;58099;66732;51441;19395;55197;50549;73710;71062;83065;30995;10888;18237;87514;97969;29262;27113;15068;92827;23092;41722;72918;68999;100358;81441;39470;23088;77577;78049;77390;72049;64803;49859;64149;88397;60977;72157;48774;73468;34330;97795;101378;51043;67199;13249;84333;66829;13611;38781;99061;67632;99528;11408;15902;80797;99500;25720;34809;30810;105049;90850;25185;68860;35789;43699;16665;26426;99360;97475;81565;83433;94029;32844;23493;103149;62295;20718;18021;25764;76547;36821;84552;62627;25869;83961;77307;46536;36170;25947;55432;87671;31446;79746;28602;81900;42656;55897;16929;50740;83633;24330;56028;79987;92970;104662;58888;101837;87774;82007;78494;75664;38884;61578;77727;26250;99184;45501;26365;70486;84391;73070;92393;85250;12209;52296;74766;97082;46584;68203;70966;78294;93977;89021;68429;47451;73018;10360;26798;87010;94315;62231;23212;26963;26743;23705;22024;87855;19042;69814;47517;94519;14802;87946;51469;70210;45245;20504;74846;59705;42849;13288;15247;27008;43510;106053;22232;95374;73866;103704;13077;200120;28693;68428;54502;36711;74910;79008;66662;41875;78687;25597;17108;103613;93930;30869;29965;13974;69526;65290;84642;24884;57090;95838;54338;32692;43027;12300;85982;71389;37636;59054;79414;65906;34465;68660;78515;57031;95728;88810;15453;21903;105999;27500;42464;23170;68817;44741;105209;55074;25724;62981;31977;25707;105330;52615;102409;104234;33036;63714;19403;93555;27042;31344;97703;29192;69629;33955;78967;103734;39594;56493;54912;87763;75912;105359;59675;99162;74580;106813;56495;43649;37436;96040;52414;30500;68273;40449;67783;93477;16759;16406;59151;101944;88465;73811;57905;39642;94359;27454;42549;32656;88011;66415;43796;90024;68738;70183;45311;50896;76267;83973;86221;44733;20095;55361;24543;55721;46195;73067;49460;91719;42055;63284;91839;102716;99340;96972;89718;63550;55732;105062;82069;58845;29720;106011;89123;21837;86122;11235;80218;49758;61248;78366;94156;49591;31312;19022;82113;77189;78100;44154;104279;26925;102777;76819;10583;83408;14537;75430;31047;78843;41893;24421;53649;42850;88136;34970;40860;39909;27119;103557;55948;82639;67197;16379;81009;87709;35941;33448;50323;32737;64259;67774;61700;36889;70684;21501;60394;71638;67338;22665;37796;103530;91465;41165;89298;40113;38034;51071;27952;38745;76714;70877;38545;102865;27095;101965;87740;41683;22951;15012;53744;75044;57701;77615;55433;89081;14337;66894;49640;68221;32883;13198;101452;11315;89346;21047;93457;103946;15659;92842;23921;92753;82710;78684;95285;29416;31029;18158;45797;52667;67799;14558;48743;83258;48341;62357;99113;24461;27104;13078;23912;101064;72958;63832;93447;35173;106808;20716;40231;60889;40544;33604;88806;63227;105498;106641;85090;73211;90262;55050;59061;38925;90820;89747;83292;63553;21102;42446;14913;27985;77167;40738;89565;77705;86527;55615;99948;28263;63533;57706;13530;78837;33083;15403;53874;83936;15274;36566;93929;47554;54058;97801;25198;56856;35873;54736;44980;35716;100757;58551;83142;70166;78364;54510;28145;18137;57262;99152;63707;18514;96318;87874;26187;61663;71541;62440;50167;79869;87582;79212;15572;74281;65177;77601;75703;72663;92217;33711;33348;84486;50100;20239;35507;62661;59931;104678;25571;42973;95278;92200;20951;79334;59900;92535;52200;13567;31756;21595;15316;59161;53244;22723;96082;85722;51444;57307;52842;106134;31127;61963;83926;54987;88861;81209;79313;50922;52706;41181;90156;61225;54603;56656;37814;80424;49403;70800;96196;32095;32944;56944;83465;27694;82651;74781;79989;15052;54797;67711;64405;69245;13297;84940;25695;41045;19186;21343;79896;12306;61548;85256;84052;65817;91755;55624;59142;91307;99826;43145;43578;97740;18254;75314;62851;24917;13174;65502;52121;19839;58815;105550;92697;77558;62928;80443;90833;26021;12908;63218;72392;10704;66830;29383;106360;37659;44054;74036;61889;103098;41589;62510;11781;31689;62351;48896;22027;100778;84856;31924;35494;40671;84191;20340;89240;82692;81737;39881;73551;67479;87997;81712;38019;26943;21442;43538;71498;101722;46512;80280;73817;90363;106295;88771;70165;89363;100429;91451;54940;58110;52646;57179;106942;103954;56400;39693;56975;70462;64692;76213;81264;17043;60716;95592;21290;44958;77283;24743;11739;68193;61911;90325;46593;47479;14930;101105;86549;19549;106243;96747;36042;95030;33787;72318;17165;77242;26869;24111;65315;24828;101650;52599;21032;102058;77766;102314;16362;71783;58582;19361;39602;96012;69625;79923;99008;30222;14524;60718;100485;74645;11585;105616;52597;44385;52408;62931;61057;68572;39248;41622;44204;27452;101943;49300;67389;66629;47665;38227;91384;97884;102302;58277;43737;29124;18478;17475;105446;85420;25775;61369;23830;32154;58938;83551;31054;34726;88156;87686;65203;34290;67329;84285;73714;52170;28142;86925;74378;99649;22863;50261;50173;87715;65551;29131;15452;105021;23771;34832;84407;103176;26897;63918;89187;89023;91252;72515;69910;82136;52338;33653;92112;85095;43223;93805;51825;15657;45551;106231;70527;21321;68192;51542;50035;69574;102548;47859;57269;88904;89647;59348;33672;40218;57368;54315;27344;34214;41081;42005;12881;22069;78040;75258;48151;79778;35087;62798;74144;79191;31973;63471;95357;13065;35570;25987;44486;21725;90059;82733;22733;10410;17109;65850;93928;53366;77060;32361;64054;91274;22516;22279;94773;79395;106158;58032;87764;11726;57205;14075;50092;75687;71277;34208;85581;70388;47273;40600;101458;91256;17802;11800;83943;19040;90210;70366;21212;44015;64241;15469;73578;38210;87236;50528;90503;74998;26849;28388;101421;61637;48886;37771;31010;62628;105261;53835;70136;100299;94445;76108;67766;90679;86261;91334;10099;58636;83606;66874;41741;72556;15133;90703;78322;63986;51824;41886;44175;14296;89261;39075;30469;27471;12338;64416;72367;57463;106837;51667;32170;81002;105076;76469;106386;26780;20264;27808;70544;86622;55295;30579;44986;56516;28752;60934;81233;14114;22109;80270;57658;61290;50055;35859;29848;64383;104128;52820;99848;73717;42629;99886;85874;100150;71331;68283;27775;27631;15069;83561;12668;40049;35983;53900;29923;11151;70574;83288;18019;52758;93184;74999;69928;25469;90454;18504;56832;42638;82461;48383;67002;60859;17509;32267;28790;52723;19873;100007;20889;89602;16674;23296;90287;30471;101057;24167;58598;58665;49875;72619;101667;51397;25766;25334;92679;19814;66918;79399;15035;106926;60467;81942;17000;26385;83127;38332;18506;94148;96451;38329;34046;36073;33495;61857;16663;54129;67770;72002;103714;48592;45820;18524;73986;96276;85164;45062;22734;99333;76719;50255;61154;62647;88023;66738;17160;59717;66043;19182;19566;100914;71998;14297;51568;83924;77917;101890;51799;62051;44827;51013;73615;72602;40412;20282;23615;97564;91028;78182;48532;44642;104806;45300;19039;87468;71614;61238;92713;57163;56284;78971;44386;79403;97107;74890;105834;47066;18657;95632;10406;22543;46272;38457;105102;16884;51068;48549;79044;58435;83597;19962;29921;73296;45730;35346;77107;56264;67399;11063;82981;26402;35393;41040;40048;53281;16937;15968;72347;67463;25525;35915;38201;36009;13570;74091;67543;64099;33766;72217;37585;65170;88914;11320;29573;82980;46666;102337;36561;33733;102188;49962;91885;99534;48714;51216;58640;31670;41842;85189;96384;16417;49527;67975;77942;11445;38338;57539;33742;69503;26481;73735;104540;40627;14858;56799;88888;105589;44270;69745;53646;74772;83211;52431;17363;85101;36126;15373;105497;20836;57249;83903;23066;26984;73815;21962;29826;16337;43540;105313;93432;104175;72626;64839;70919;104944;37207;81148;70095;59368;61520;10979;104248;106513;82968;58229;23393;48662;86875;82503;26704;70992;70510;43614;89587;89226;58752;85412;60203;81230;42165;68151;41493;94042;72617;41540;34978;45824;38217;43061;60588;60494;40395;90549;90228;67984;87518;200014;40178;34801;11816;44137;85567;100887;75065;31643;34620;21884;11659;19982;37617;14973;92419;24057;75753;87809;76897;59034;13620;200051;85249;40551;67966;76669;15958;92967;73087;38466;27539;81049;72849;92741;72728;104653;69823;46403;66823;52971;33792;46037;44548;70836;62555;12626;75853;22984;67727;53565;60023;30133;61088;25539;55021;46286;75333;16130;95334;25575;24595;20271;58083;78174;95457;94541;23710;45780;106440;11101;46507;77674;89543;72698;15421;58312;94444;35928;11756;28228;100716;17042;30286;31577;46687;56789;34021;40105;77890;90231;64056;78557;50016;71326;88053;45438;30379;55438;34044;87059;70029;35609;70714;56232;22658;91947;106157;67208;16646;59591;53123;56193;52491;99752;14892;42714;84670;74112;10516;94019;31495;91756;87226;15079;36305;70348;33771;59512;82189;105181;78518;105617;51585;94177;103067;81752;25886;16804;84331;82117;38331;29058;61091;88617;15954;40410;94404;76386;81995;34689;16451;53066;43858;27015;102129;54717;41850;15021;102663;60404;17477;84174;80230;15833;86871;53503;69553;41902;40414;74443;65571;78989;101155;69041;62422;67285;43025;78610;51373;82907;60254;73375;36855;103663;73311;33290;10386;53256;23068;10958;61599;29962;41585;81039;72566;81965;26682;101739;69713;46656;44900;15764;37241;63100;32503;97508;15364;35117;51641;25895;57506;39277;37411;95804;55727;58402;36900;27336;95263;48596;88515;43757;23326;80763;18214;28196;99871;96484;100111;36861;102646;13922;100828;18902;35095;70896;84140;50607;24189;24161;62115;85286;81050;63857;17183;61220;91491;27178;83447;51123;59094;80914;10009;27197;57939;26884;26867;102535;38419;104489;69049;74210;91585;48599;37141;35788;96949;65492;57048;83394;89494;43485;57750;37370;51420;81375;58299;62397;94652;73780;53483;55373;100343;67644;14796;53816;20194;29513;59518;48334;100794;69280;53566;83687;36152;65667;63669;77447;105801;41175;97121;95855;16366;11017;29068;101394;23087;36348;17592;64703;12025;90327;106265;78544;18126;77402;15184;62199;17583;87009;30701;73015;48430;104085;84186;72814;96126;60509;73135;26618;48685;20484;103785;26593;80428;99160;49042;49991;81023;101728;87222;49155;94319;25104;50418;58462;62244;22753;22649;10025;82274;77875;86677;73885;44599;43542;102434;55825;11370;59271;48357;42864;94004;84602;58722;56451;60517;80065;87660;13818;43362;97995;28988;99153;102328;40511;57329;50616;102556;101968;93212;44353;104657;16910;47418;18914;57328;99302;10092;58841;79604;100818;73891;80339;50626;75932;64696;30004;79150;28543;23574;92425;49111;53495;30663;49214;87837;58670;30038;13160;80643;74290;29873;85074;10936;20158;82058;51864;47235;55189;68123;18725;75576;15582;81348;54019;32132;87338;21219;74150;94124;62113;49212;31257;58391;18555;64503;26075;41307;48937;63941;40542;72129;97923;70847;94724;94590;22402;13055;84064;48932;51141;42501;62724;30860;31085;92839;84015;75110;59216;63316;89899;74166;13603;63865;22809;91109;15120;23939;78851;21960;106846;85239;65085;93656;81227;29092;43365;87235;55375;105224;101704;68640;74481;35816;27136;102902;102998;104239;12014;104192;28714;73883;63433;72289;35506;58765;67825;16989;73923;92210;72378;87521;76705;63267;63432;16653;58024;24266;66420;65787;94087;20191;19969;20943;44605;63863;79267;15039;84495;42667;44232;93513;41249;91952;96182;65693;38622;46943;83634;10177;99963;96164;51506;44568;85525;101112;49396;39682;11221;94557;74997;84675;50966;90491;76063;87225;29271;48508;13740;104324;27068;67057;46661;31889;71350;80928;20342;62895;22656;62691;59789;86609;102324;21544;19320;43218;102067;40997;77754;78089;84141;94703;41948;45750;60777;99511;54481;16909;72974;106676;95383;10259;72861;62048;10544;65074;34706;12990;61951;59758;55355;38389;29470;60309;30287;99885;51833;72431;81004;25091;64158;41308;106512;80798;58762;26883;16250;25265;106419;71739;12380;14097;15288;65640;65023;78421;101264;62985;12304;16703;33420;25974;103283;94202;35157;66716;40793;67579;30477;30267;68026;88410;96573;74395;64998;22253;93113;76177;94354;99025;80916;50140;45011;100680;26753;99191;81173;65928;30737;79629;29140;60614;73390;24757;49909;12619;51393;67306;10883;35927;24138;52799;55567;93689;84834;54424;104307;35635;16774;105065;97876;95974;59803;73419;88854;74414;78391;26879;85319;89231;78210;89663;16567;55828;76362;93115;56160;48311;15911;84387;42327;88948;71082;69210;29138;102854;23398;58583;66338;58544;62448;11190;73737;53917;34315;40520;102826;53496;100890;15518;45978;63751;27210;11469;38551;18297;75783;82248;20822;73840;51493;10711;93925;93189;46318;86151;28620;53282;67184;33353;93606;59823;53778;13657;69501;57071;100095;29263;10686;99311;102014;18837;25433;25486;15964;45914;53581;92935;69999;80716;78237;85125;11260;104545;95503;71256;77202;17340;68399;27949;33222;10057;87456;49879;41330;39443;71294;67754;83565;90302;41611;69683;58122;103834;57271;84541;51217;63718;96815;65527;74077;55007;29979;80198;104602;89002;82115;55076;33868;94941;32263;30661;82505;105104;27910;24701;94409;37018;43588;13106;23181;102793;47167;68897;36960;42265;73509;60422;36294;18846;24080;73744;101022;56462;89409;29713;91673;53606;46070;79866;90276;70721;22817;42744;65642;78833;67074;21985;30186;87341;53707;68077;45446;52903;55203;67391;28728;24587;45113;28654;26316;51457;104654;57114;100416;96807;70738;89422;89121;54427;90200;66391;93363;62952;14807;102069;100373;38437;61366;104480;16292;47203;32925;79846;82060;73426;72784;69017;77035;80929;88160;17374;26207;51264;91680;73741;38558;28735;52254;38568;91419;55320;33023;65246;64060;12436;56468;76485;91239;29952;82555;30112;31547;30317;22098;62170;22428;65101;80645;76112;62571;45872;44203;40153;64147;11552;87470;79109;16530;66309;52392;79443;54332;69520;100101;52474;61701;62722;95338;51296;39251;33805;78404;45382;15866;48382;38088;89801;13937;55110;44223;99847;100980;11224;35643;49881;67599;53032;53984;82531;27137;68461;44065;90121;89538;34103;69739;82985;68244;23952;72274;62787;32007;32984;20743;80305;48892;44112;14271;105830;56921;26948;69136;37621;73033;83757;84359;13933;10107;95307;88643;60602;92865;67522;55321;107146;23967;105389;73455;46641;26635;22923;53134;53344;39205;44984;59244;19357;50559;20128;78318;28615;70887;80350;25254;49838;64297;86913;29787;27637;19679;13872;39596;94989;27939;92649;54344;33918;33234;39943;30427;88056;33432;106887;47221;72838;57092;106721;66458;73651;101428;58331;61295;21101;28580;65766;37599;32709;28356;67106;33447;73429;65411;49351;33074;76784;52492;42358;16837;80333;58660;54187;54587;34806;66400;29448;86798;86142;16137;65628;72547;78860;10839;83919;72205;78181;37009;100042;78644;34398;16569;31909;17564;17064;52911;78619;80540;23841;103417;42463;10464;92777;33643;52541;64449;51065;23942;94170;40249;35637;83060;83420;15390;67206;42553;12401;53268;73928;55844;92724;73324;106606;91819;55518;19420;33196;92776;87418;24675;89137;30464;100762;11115;27703;15252;82233;12574;39288;34796;20911;38031;79167;70747;65175;29955;43008;16235;84118;36567;54221;107085;99282;62786;16986;14520;105962;15596;90227;42128;43493;67484;81763;59609;64080;47876;95747;53307;71004;12937;47379;43770;106336;51764;41136;50577;102803;67066;57135;75001;74850;14049;10723;67336;97558;88804;60425;45396;85941;41198;82082;50306;101531;27387;80742;61529;84542;53461;15014;33633;77689;90521;34283;83183;50383;96625;14647;66347;34468;43430;52452;81125;66044;43287;68486;73785;55725;26581;54107;57930;38213;93283;22204;106510;29436;94478;62071;24725;83431;57468;82009;69699;101122;14944;106857;52145;70264;92262;77354;86680;40430;34931;87577;55676;99403;20500;65926;55364;28074;60487;56744;56126;77570;61517;31998;21418;87580;27450;23214;12677;93430;93736;101671;35678;44346;83070;64264;55508;89549;87781;52851;46628;20556;60913;99618;72652;80911;66462;101629;70157;44798;105541;86371;60719;74691;101937;76472;39435;52840;80823;77812;80405;95047;31589;33992;20383;83290;65547;78688;17786;45749;36274;29779;89652;69900;56941;35382;53791;23755;33043;27366;50465;12781;24337;16376;101116;99874;80168;77666;41024;44133;67717;49245;94466;37154;58981;45856;33885;35103;88784;16136;24027;80673;70726;16920;86729;25464;31517;70344;33924;97339;106621;80758;91633;26665;13434;10699;74404;63392;54836;83079;76526;77213;97432;90055;97724;73546;66566;43395;67333;100469;73008;66584;17403;10059;35664;81757;60462;46704;74153;48887;57475;99629;72091;43743;73410;32152;42538;38319;71516;18333;65515;53072;45218;103718;38748;77961;70087;17210;27356;51689;77683;84600;99467;100056;81684;97956;91438;16712;81746;103893;66276;83609;62589;62805;55358;55686;23175;74154;57351;102089;84962;53171;10306;33386;57469;54072;28727;74788;23641;56890;36785;89929;96555;90626;70309;50993;34518;28844;48332;57562;31080;61274;75341;74071;102452;57535;88137;18270;88662;53159;22379;34266;86032;56645;30478;55530;19491;38863;32972;80135;102039;53934;65200;83285;87347;25418;41458;44143;68718;37627;10390;16898;44767;94655;80163;51852;84517;91321;28118;76721;56005;84025;73405;81573;66291;15822;83905;96734;47104;96098;47760;102877;64480;50046;93878;86419;90548;70297;43593;40590;82240;90354;81336;102044;32796;25767;87383;65310;36874;91406;24537;22694;40345;86563;18419;97960;72062;20739;67050;97912;43619;13267;59773;61994;20820;61301;92801;87373;86787;82991;94536;82550;70781;27273;89025;57231;52711;62070;38428;47604;70461;90733;35744;17666;92313;90383;105506;39384;46626;14608;103119;95495;95376;82203;28584;32910;92369;54688;52771;39431;47791;38598;55935;47600;103031;99802;55088;14950;57833;99889;65714;52614;99934;67841;67161;15937;89171;106873;105160;87672;50939;61742;68894;57845;14133;94015;65079;37132;86274;104844;62004;89460;46699;25636;93296;56362;85251;46769;105414;102137;63454;92815;76023;73684;87645;83680;31424;99705;71535;23696;53629;89742;45019;95760;103332;66454;61724;10293;95571;106251;106118;67994;79388;80054;45130;47725;88903;21852;77442;55283;60955;46784;12790;100505;37806;87786;31159;33755;105493;35297;77908;26736;17440;76074;50509;29587;48436;63899;68320;67019;38795;32445;99767;42089;66073;44303;35950;74127;62508;47263;101841;93165;54806;10961;41513;86620;46828;78430;76660;102023;106529;59611;47896;56828;99605;102229;31744;89004;41305;32347;16374;66486;35125;53301;45566;83504;67087;40408;76725;81584;95984;86736;30443;90915;12666;83844;94259;70138;24719;55751;61557;28036;83043;35651;33696;69127;19197;105030;92633;32683;101857;23681;81758;27504;29491;93674;58369;56822;45030;75846;68797;29798;12319;17443;27740;44571;86670;83899;44836;102357;85288;41390;37502;89155;42627;68920;31729;70802;84943;50128;53840;87611;86459;68798;88917;86123;40976;31361;46308;73305;103148;49331;58443;30830;83133;104207;82346;93057;86684;11663;62292;27835;92007;13689;52979;70672;67327;93565;30357;72997;62567;53063;28539;18937;43239;97138;37900;81062;34449;70286;105947;20403;51552;79573;20507;94604;73931;25000;60368;14295;100821;30071;39822;75444;83534;21665;59978;16931;37691;40115;76062;80839;15243;89730;17716;102303;21107;45286;41900;59385;31004;52023;34097;11492;40481;32838;106715;40876;68166;73384;15967;56237;52651;11270;13647;51473;18472;104299;55359;49208;58404;54401;26150;69906;68235;52183;95345;30509;11887;91460;32869;54898;69021;87104;73453;14561;99143;73307;101346;19970;49047;106867;88652;67819;67351;85569;33620;35433;42456;72471;44072;86491;21954;79145;81808;67555;25281;93442;65741;46962;34296;60838;10660;15889;16144;78125;41649;48429;68841;61320;68359;37058;78802;66430;35995;18612;34715;29464;45493;12069;91496;59228;76256;56399;106467;64169;43065;97156;101120;85823;105439;78143;25382;82979;99814;27917;88930;21519;86829;21702;64163;65008;55159;80208;62037;31190;64498;76708;74632;42098;13894;96181;82740;72987;92761;63672;47815;37194;89219;67270;32688;90782;100482;43731;21929;42911;41908;18973;62600;47302;26178;74016;84932;66275;24343;61143;18835;59941;88055;85190;52600;22112;69527;67263;35820;61167;76692;104927;84947;95597;80559;64367;10595;39655;84378;44063;75168;29970;95494;16099;100517;41735;51753;100459;23608;13546;13039;41346;73463;97047;40248;16346;75539;69284;64082;52913;24436;13498;12770;95051;57994;28245;103872;16748;51929;72358;59851;81150;63365;103171;81175;51329;83576;33151;101735;49247;96494;59759;32030;97002;31635;13447;12977;79964;25518;18234;100858;40326;99454;96999;72133;38968;26095;21424;55895;76903;19887;19653;29705;53643;65954;17251;11499;38944;74704;72189;27757;59954;26870;105386;52207;53768;50462;50060;71499;43058;42229;70697;27612;99532;91679;105986;104220;29440;14517;35511;92428;99378;41204;64435;66766;11182;37574;55085;74040;17531;18515;39718;29613;30007;85560;37030;71365;65676;32784;50448;77680;15674;76132;52875;88125;94487;42222;76396;100239;85173;93975;30899;34967;24644;32208;90447;13774;95733;61610;83748;49091;32551;26222;103055;89797;57897;99770;96506;42185;102861;25583;79489;56203;37230;75429;26294;57547;40459;25845;101069;20689;55069;51985;74216;10898;57256;68385;89286;23588;88690;43269;80341;99344;62534;81686;48636;48303;40887;58096;101522;64593;33997;59115;103166;26612;44497;49500;10546;59713;24713;54769;47537;103692;20634;72827;49719;49762;83691;90083;87006;99072;52732;11060;74798;72586;106700;40798;22301;58070;19043;61757;62247;57901;31874;29213;75635;77195;85625;15909;54477;55714;39556;100473;83871;63638;82632;55814;34704;95960;47367;72061;46219;31871;23862;53975;60103;23271;105156;95551;22362;23315;104567;92715;62718;97542;41266;80802;96397;73878;67449;65574;63949;16779;92069;49244;22531;35059;14289;12044;96479;70561;48779;33096;94949;93435;23850;64190;67709;91365;11769;21726;76606;68084;89529;64372;28697;33166;89496;52402;30840;11426;96354;54036;40433;47369;62376;20568;25270;19301;71552;30495;92362;75546;52237;45829;45668;78512;77459;61537;93215;72762;44300;99756;61312;80541;10606;96474;10267;78447;83310;44913;21578;39266;32968;16693;78896;27432;99748;91322;25415;61357;31980;71135;104457;90851;90794;85421;74400;65599;106037;89553;63826;60960;10513;66079;45657;27965;83240;49354;27963;65719;71809;39678;55423;25447;106845;64698;57223;96519;104165;27070;103619;89516;45726;43278;87029;55485;26296;34603;102620;62678;21287;40399;61817;59099;33993;84326;97254;45292;57839;38658;53441;41200;80821;68368;97840;15893;72093;42685;40156;36690;17214;53335;83725;57088;102060;74101;63503;82016;69967;23044;64551;89381;102571;70811;56288;53190;67694;89141;43214;102799;62573;47172;62269;32473;59047;58060;70208;59297;69955;57749;61170;20018;11694;91580;103742;101343;64366;56158;57098;83914;74617;86135;45273;74449;72019;80366;31805;61234;59345;40356;82687;102929;15115;79202;105816;76514;56563;21228;25673;10450;85842;75806;60269;77747;88166;30872;92513;29324;49176;61185;26243;102683;77681;20701;76829;60795;22659;71881;30937;12636;27493;13600;24496;51857;83223;69368;69717;75548;50640;24053;25504;65030;90034;16008;34550;35566;61868;16864;92615;75779;84819;55980;101947;57378;30275;91771;72054;26589;39108;103731;64886;28981;75892;38476;58336;27784;15378;92610;58829;29646;53892;14037;13929;65740;93983;58073;14183;42792;87951;91591;24114;66838;63760;66448;73411;26307;69600;79645;49394;63663;21551;33834;57272;79007;76649;59561;35475;102400;31545;28914;27438;52585;16776;100112;93449;23095;100400;55925;106571;48156;67029;50436;64932;71999;61946;42509;41988;31024;30534;106897;80926;75888;24169;30720;73646;101869;79855;24689;63462;58842;91712;46910;55020;39975;61196;25034;80173;18101;35711;64726;90840;66508;103318;79737;48196;47145;32086;90146;62745;100744;67936;61819;54686;66274;19244;12334;106652;11282;100164;56607;71101;46807;56500;71328;52662;59682;90423;40993;41974;68423;34855;31400;51743;97519;34559;13780;96333;28248;58822;46671;86395;78039;46223;84393;68393;97455;100311;82568;46093;30425;78963;51694;87358;55788;89472;62671;24810;61843;84180;41940;46749;104589;73228;90871;52815;49798;58139;56538;63809;37080;83841;53147;30454;101430;61812;26267;51191;39727;97856;80581;17170;78883;17701;43120;41846;92123;67027;14684;76615;72427;46864;44052;79296;76278;18135;100403;44214;43191;46344;83378;92662;52439;12393;21238;70479;59314;91626;87233;50836;32346;55694;105691;101788;14323;39978;60995;30462;85795;97694;65094;25679;104060;89313;51347;68684;67661;41152;18001;19734;106947;31803;67472;79182;105850;42925;21255;38933;14833;49825;80995;79130;89350;82897;93491;105392;45532;47900;21076;41588;45469;40166;14780;78270;90398;40298;76696;12452;91850;95688;53008;28572;41093;35650;31219;94396;16452;47134;91972;92442;89336;73164;17986;96657;107102;26157;105524;76374;29458;83712;57824;15283;19638;97951;106601;65832;57836;68404;82165;86816;44363;102350;22820;19461;41768;54908;38422;24390;68074;33519;33724;81187;56301;13527;48727;97374;93702;86117;25706;103356;85073;61802;76629;106151;74202;58502;32221;29611;106293;12526;16103;31627;53126;101964;18028;93926;73194;74421;20869;28095;30652;105517;54261;41489;61473;12266;94732;95348;39533;86361;80721;69876;103860;103455;12439;58454;48294;94840;83385;24157;97785;15230;82139;53511;21381;63308;34675;37821;49274;21720;10932;24208;79944;58280;18439;96272;63540;20391;10063;96742;82609;44469;42295;50638;11068;34560;11419;46805;75096;57369;97027;51543;84829;100961;43617;49958;35722;86596;49968;96512;55065;39643;100041;16007;12605;54145;32676;28859;95736;81448;103856;51368;61761;26203;14536;79608;69968;23336;44535;12340;67899;10529;96202;84828;94561;62311;52375;72088;19128;102866;58346;44178;69171;60393;105833;59761;30062;93723;76491;53031;88567;99834;74047;32090;70727;79210;90012;58121;81676;30771;53706;28268;63715;49992;18898;104743;31309;30170;88587;69145;48326;10815;79613;77097;46461;18899;95445;59451;60559;52030;41992;19163;38797;54432;12115;75554;23421;68479;92163;92091;78042;67816;95576;23517;41752;58580;57624;67665;24238;106534;77656;79401;86069;50332;14928;78433;92859;77194;55000;54568;30283;94888;79362;67138;70013;74577;12839;24756;65615;11672;20129;18454;94562;44709;73319;70925;21722;77876;40455;22166;96095;104013;53680;84418;67539;47376;28414;56971;66129;104821;65070;35668;71122;72852;96863;76914;13140;50620;68190;107001;40713;60696;50345;59899;42783;35476;35981;11626;11755;36101;99420;32697;94439;18712;45599;22722;100297;63483;32625;67718;99633;29796;59581;43575;97493;85106;57958;88907;64802;87704;83963;33871;76332;21897;103650;94271;41141;21239;91394;10319;102457;83333;104949;62125;29415;68494;62657;33263;82131;72965;104005;90417;39705;39648;30895;45457;37025;29607;39004;36771;53758;99556;61490;26145;51103;90718;92540;80655;100816;28370;92082;60201;35575;106614;102057;105472;33233;63386;29065;63820;85350;76862;25567;52299;94498;51204;65123;21663;71420;99252;67559;10158;84482;45195;93758;73141;79151;28545;90535;78736;75320;18508;92477;86110;84850;19553;54160;97669;55437;86292;18298;84636;77543;50972;37193;82873;16811;33954;42815;71674;61769;32067;56986;24334;105152;58863;65347;94390;97832;54633;25143;27207;66651;84825;70258;10313;97212;37139;64881;35868;105037;91376;59951;20625;89348;16977;38086;27603;16096;57960;40079;53386;55959;95939;57313;52548;52256;28680;93943;47465;48889;48578;74762;29175;59164;103869;26425;35386;80401;31228;101842;56914;75050;100162;102961;53794;61363;69464;70298;23417;91738;47655;34616;48262;88997;66859;83675;14367;105533;15906;40653;38881;74374;68871;25208;46544;50077;97583;76032;99123;87381;97852;84995;32707;34944;69074;48624;49344;34906;11862;25470;62073;94607;102063;76093;42885;96797;18970;26086;60997;72053;34957;87321;45571;79184;48684;43251;28505;61197;94799;43550;39942;32785;77568;24700;94903;54781;50017;69566;46506;51187;51161;46925;36978;29654;53582;105237;82888;96547;44442;86230;72013;38282;94972;53486;48593;91091;93013;54099;87201;31961;62959;80385;81648;20545;81172;97480;39412;95754;106639;102460;34434;59302;99031;33532;65351;20699;86599;76574;86683;54571;20371;14720;54472;74296;62134;101442;22783;17331;87928;82042;70712;55672;52225;52813;12778;29433;71890;47197;106260;40070;12681;36972;57724;79075;43778;69996;84390;45389;30128;55856;14470;10060;45963;49226;84009;61356;80225;100120;87175;80229;26004;80899;78481;25564;101106;96727;82577;31357;15553;51727;33137;63727;69499;52719;55541;24546;85060;92502;10996;30637;47056;25098;38540;28808;28997;106724;37020;12072;16361;27064;19220;82169;41764;100805;91553;91381;79398;49817;63318;49374;19941;71486;97955;93797;88415;45544;14635;51658;75881;15612;27247;21264;34410;10144;45821;44289;106104;33050;107107;42011;106898;37808;23466;30166;34262;23533;42141;96253;102702;78373;100920;87761;49829;102656;68207;14165;85875;15221;76357;16173;13062;16169;77221;85410;105735;81294;94025;89395;51680;50154;65428;86947;67590;82241;28721;40128;12315;77012;15225;41812;42240;24954;86104;41968;42962;79006;92211;55388;30277;40271;32413;82299;61619;42427;18954;56881;49409;12738;13578;95832;87334;34504;30016;20480;81486;42439;55911;30355;52644;63271;84424;36074;35301;67470;66243;16301;90005;30347;14439;35680;103528;89911;58566;97539;80646;89069;85155;56786;80412;11916;101300;81587;24307;35512;77019;28320;14023;80362;47619;31379;49570;44734;55648;100498;41748;87524;29166;105748;95998;64463;11415;74536;72877;53737;56585;38679;74342;102215;27977;33435;84674;81560;21560;54152;39838;38611;99904;100610;104153;46411;86326;94064;52233;64068;95511;61485;90617;103487;13004;25248;62221;12900;103125;20249;21790;103230;89790;27214;60384;99755;104322;33909;20354;36146;30529;67712;25738;76149;76428;32483;43549;23371;74911;77210;50946;45100;40998;103513;16252;100278;16120;52391;51695;21483;84030;53902;43967;13623;76982;35299;28890;76297;34990;61653;45912;94960;93666;46979;15577;36023;38408;92655;41049;12475;104982;60063;28061;94434;17092;17320;86778;86604;72959;31841;53364;11805;75515;89610;94143;66321;106980;59817;21124;88700;13748;13406;75347;20688;40575;35313;40467;49414;89314;91217;55450;96290;11691;78284;75711;14756;90044;25783;14298;89650;11885;72878;43717;85633;24825;86851;94265;38401;49367;97744;80820;83426;46608;50821;54291;34064;100141;21838;75643;89551;76089;29635;62293;90745;83438;60145;93017;30990;68201;18596;34755;26151;18798;18145;64662;93533;54880;60833;42046;69873;49401;85971;97892;22850;39249;95024;34259;95448;50198;99214;90838;42633;38105;21751;65773;21901;36408;81937;92140;29608;13503;101978;29393;93131;36188;53109;50523;11767;53518;48807;92109;65311;20712;50412;96771;14531;76452;62739;28156;101552;64105;68997;101227;102963;100840;74141;53188;75895;73590;24029;61592;94078;30323;102928;81295;49689;12329;85274;106457;80873;102105;20338;44480;94251;58062;51560;97238;33162;47436;52322;68808;100486;59923;62112;18493;37966;13117;56525;61680;53292;77389;50276;97713;91581;22500;42812;96709;103339;18730;104296;39834;23200;72532;42257;102084;60239;44233;78616;92146;66367;104622;68059;21561;94879;68446;67776;77401;32183;71338;55311;16673;70408;52511;67084;30468;24558;106694;43303;76967;65814;45377;103299;83389;35801;49497;83539;96782;103990;20281;72306;30759;106760;13557;66086;46957;75567;92189;79927;58917;42636;10785;74554;24592;71228;22684;43458;11706;56446;15527;58014;38363;28567;31955;97470;44437;95428;58590;68979;58987;22337;33317;80169;21289;80964;83464;21545;84083;40343;23455;85205;87327;22973;100786;48226;25851;15437;200133;89306;31504;11610;77177;18120;28460;30690;81940;106075;61600;200085;26590;33322;16224;53551;96978;48917;23795;15587;42556;87320;86915;54679;11611;32720;10939;43901;86397;17001;88476;66380;57210;13237;82778;101287;51295;11324;68375;74194;95272;66705;48571;76027;14733;40464;54750;54378;92854;53534;27799;38467;75478;91421;103865;102796;61111;29339;35849;28577;31779;20650;17972;68630;72020;33854;39337;24909;43305;57226;70094;79924;45233;13227;23926;30304;49923;105997;67372;23239;51969;60477;52187;21066;40229;56638;51116;53414;64184;23410;38525;80546;71105;26542;27535;35142;73385;86295;47693;90182;73333;79595;46023;105343;92383;102482;15462;44025;45264;59378;106859;15346;60346;59537;62883;42527;46014;18138;20937;49438;41428;75787;16549;88909;103296;66935;102119;19201;31086;35627;19123;22326;68168;51246;41389;13354;103515;104757;85395;99050;32637;82485;16076;31134;79931;16640;69767;80924;60057;15491;63343;38244;61309;46591;15988;105373;95715;20331;46398;39667;31334;87380;30806;63591;104621;82350;56353;27803;25561;103099;92493;30514;94701;68597;54141;57894;85846;19350;62528;55277;54313;37686;200074;83770;28889;34081;83836;59477;100395;64666;32031;28256;102743;72346;69375;13892;22727;10037;33627;52961;22607;72269;99173;82763;66136;85283;96732;29851;26997;44492;41766;71652;57979;18290;57543;75850;24818;30010;34767;89614;65442;33811;97958;61746;102431;64892;97777;51884;103311;58209;92503;106292;48284;40559;87039;73122;96293;33175;55583;10383;35773;106956;32369;80175;19307;83277;81769;94921;23290;51404;81429;35123;33837;14276;77039;39804;100907;41977;16647;100624;43736;13555;106248;56433;92597;82458;74058;104799;21449;80735;68866;101513;94210;22220;62784;51486;91267;62843;32842;45418;64901;24041;21822;100160;34004;105600;42745;88547;75211;91387;85477;43793;96719;12998;70243;63884;59635;13949;67271;23435;62354;55022;88097;66811;39958;61966;51333;92305;28392;90665;93091;75494;83188;24078;44814;48478;15880;15254;78621;14697;50843;102414;52630;57097;102055;16114;37137;82215;104186;88538;85384;103754;41743;81266;65636;53916;24624;88820;37889;66504;67300;66946;44167;28277;70796;15925;70584;72137;103949;104817;46845;93706;19270;76782;25141;93616;36491;67151;99680;15677;93365;59242;68386;36645;34869;74429;105628;70514;90472;104331;34365;44693;76400;31902;68295;67133;63004;51562;76154;90331;84146;61039;22079;36599;49613;30767;11218;14661;19170;97311;62946;66678;28944;47095;58589;55748;90449;85579;41086;107045;47259;33232;72984;52959;103267;44887;28723;50636;26649;23389;34186;14898;102786;14206;34243;73255;87349;46748;103136;59460;64488;43026;66332;22971;13846;65620;19796;16457;60230;33414;22570;51714;47454;69559;67023;103759;34463;74534;33589;97129;65028;32548;30650;40733;89134;43013;33416;53947;66318;13902;37049;36822;52792;41738;76970;102362;34464;30228;22578;42181;102043;60978;47391;14808;56381;54272;85721;89486;32811;80448;83301;59905;28391;29000;58931;43277;59587;88122;12978;56434;71632;84566;82885;55545;32197;38206;24234;59742;30367;11718;70940;89076;60168;96542;47222;91572;51654;30533;33141;105362;65691;92991;95953;78474;91613;14283;83358;106702;106744;95544;104109;42707;97304;11526;75357;62540;46958;101179;69565;40892;103875;79239;65326;83046;22544;64357;76408;22158;87183;63445;73599;69382;56096;21971;80764;64078;80238;101732;68728;16993;20220;35540;39561;63522;92050;43943;25386;103314;79124;49364;63864;79515;65806;22335;69395;69391;55883;90112;26500;40011;90463;40615;14299;72348;52298;53104;33057;90101;64524;20905;63350;16593;106598;89564;66151;58854;38234;77599;67796;16716;60668;106460;26940;96574;64512;22404;107023;71989;12553;102086;42515;36862;92436;20462;69804;102579;21197;76352;78697;22889;89176;62760;33929;90113;10040;96694;18282;96321;50152;20228;20989;24300;14975;59472;57440;106756;48560;54930;25124;68224;75046;24538;102958;75817;84537;92833;85915;104705;101787;50312;71030;14406;17816;61925;62296;14625;37805;64945;25183;105660;59036;74167;66376;104895;41879;54702;24996;20121;72158;66720;17997;60400;74945;44763;90788;35364;62074;74917;89405;48783;102919;26028;53014;91086;64121;94474;91945;87414;59446;49625;37668;97711;52784;38161;97430;41035;23168;87394;43326;54590;62276;48210;89066;54247;68589;73341;74525;62537;52191;93249;74813;36818;32443;93323;87929;40926;44674;50289;50163;33321;10937;91356;55488;28139;56587;27059;48185;106747;11603;90312;99783;41402;61358;51809;82929;56408;25240;96824;31827;62629;50110;32825;15405;50839;56127;33951;36356;10540;18571;69941;64840;61988;26429;19103;66549;80444;64261;20693;49850;91632;96862;83790;67497;38420;103272;43988;72799;94348;105790;86775;58824;45830;73838;57691;102004;11250;86809;82790;46419;28744;25918;35638;44621;73930;104971;45887;39013;105165;88008;53230;90792;96859;13823;82427;35056;17599;15030;30549;50508;46053;106272;87493;73433;26987;65917;67128;27814;24070;102785;81346;48236;54288;38533;79557;51644;104422;69289;53652;13103;70130;27589;18817;69818;25880;68217;75172;38445;97204;103874;56315;65908;53724;58714;96343;88549;85419;45811;83462;100074;54980;49012;89983;74851;75885;45269;75930;105406;29509;89122;87105;44458;11331;77196;60598;43328;21486;55958;88971;35871;44455;31891;58808;64007;35046;59850;107101;73647;45847;31802;79040;69348;62801;16970;105490;75613;66437;82368;83291;52976;21038;54966;48664;45989;43582;27244;12092;46794;96667;46573;39885;70400;90729;21999;55238;11787;83411;55186;17677;78677;47844;51208;28740;82063;78306;70023;37374;84987;18206;29342;77118;17789;84911;45529;40804;100785;36680;87559;33120;41954;60867;97535;56311;42879;99989;86040;57817;38750;39113;100923;56849;103840;100999;10611;68534;61846;104108;85044;58221;56734;20305;61054;99702;88401;77294;102430;72863;39893;57349;96801;53077;94317;67476;106003;21620;61190;37488;73566;104735;77854;88001;35109;14465;77655;94456;14270;55622;26018;35442;79534;90189;74175;61217;25453;46258;27343;13164;97261;50819;43752;51256;104736;45626;57383;100430;38059;24970;79550;21997;51136;14361;71744;51183;65040;100426;69768;38334;53727;93258;34569;66371;21647;63076;32610;68709;49370;65187;95917;35012;49516;97095;66005;28434;41042;88443;37377;12301;48536;52660;69542;104129;91571;86468;93551;49985;18006;55665;77341;20099;97437;54384;34859;94965;42940;25304;22611;80942;14460;37484;82605;33912;51163;16493;101613;21835;56161;83096;99940;60170;40446;94749;53121;17751;26672;37846;63964;53564;44850;39445;40142;41285;78297;104291;51421;75155;45106;96150;13595;49432;39617;34904;57125;12377;80051;24204;88466;32914;12736;62065;33300;75777;81094;72320;95042;85658;28117;102109;66847;75547;52169;76612;14251;68403;22329;79438;58944;52025;42272;37577;48253;91869;32188;27666;56582;97114;79921;70389;21452;19497;23856;94602;50874;97403;84231;106098;70195;93876;66297;35611;84981;31082;90527;53639;93807;55394;18674;34428;37871;101033;47042;77175;28021;102983;33034;37956;24327;52946;15780;16814;100656;18995;75726;97621;81385;93874;12621;86273;30487;42000;66074;100327;63745;59152;92088;22739;10827;54506;59980;27742;20392;27922;77236;95860;50473;57592;11243;50894;23260;83066;46866;44142;102451;89998;43208;75332;62220;91790;24123;39424;50266;83802;100932;64546;33097;71984;59993;95667;90862;36366;22367;10455;78172;49522;30757;23096;10847;16433;32878;75977;96219;96027;81864;69522;88831;21367;92202;82842;90265;31491;99121;75366;85767;92120;57174;15949;46572;22537;103521;21823;47091;27451;69096;37192;31532;96552;40413;101098;72065;96691;106638;73588;95675;83974;69576;49345;35695;30512;43819;44581;28665;57462;83998;30956;26175;41400;14983;71397;104802;20328;19878;48516;85198;61604;61783;37390;72920;44253;106270;20503;82261;14705;69670;40376;36249;100669;73478;69677;19282;58269;11407;26844;57792;94895;28176;31002;12590;53164;40051;96287;33366;46637;62605;26684;65410;93717;45841;11286;67925;48708;11992;74550;72790;14763;63010;65265;82231;53544;52261;10500;93325;86628;63534;92346;43596;85930;67006;17397;57442;25004;14041;102211;60100;29402;71857;59730;101915;97361;42482;29388;26961;67297;21870;37705;27933;41557;46785;27360;36226;14008;24660;14268;79750;33671;89062;52394;30635;60051;28234;65976;91924;45661;87044;74477;60397;72193;70551;27550;54388;80037;75760;11326;51920;64543;47428;32701;87813;95713;83088;96153;41483;94355;16657;64610;95463;60595;99749;86054;60061;94500;10239;20796;105452;13969;100808;50857;72659;47829;53447;88707;86421;23284;104937;53661;50598;17453;78038;52417;51871;27229;42418;44609;105197;106335;81403;84489;56276;104474;100352;65900;82578;53644;64656;61179;77495;34500;74012;102237;28359;66251;29936;50280;29052;24962;95714;83365;96170;89406;19189;89762;101059;33937;30668;80347;72493;61650;62900;34679;39990;86456;93996;105887;51229;35842;29653;91543;72497;89382;99305;94225;72712;65197;16572;94297;31289;68901;33823;66650;22648;43656;25401;52244;61293;40308;15487;52931;62315;44671;82293;25371;49664;38790;12235;91847;38542;32584;56137;33006;97187;44071;31067;31095;74275;67852;26047;89303;15220;10181;68163;35728;33545;83575;86714;74744;97250;19132;90898;36246;26851;73046;95774;44451;59489;50630;71445;74380;61704;12405;68252;34849;28738;11566;12003;67624;72800;54236;15273;81953;85685;80953;58998;31243;65291;66146;61661;14868;43695;73903;43599;24512;34924;34117;80478;25437;36121;103213;75198;22438;17002;50376;30008;85188;93134;30129;13874;54218;93464;53819;57873;36333;33606;93343;11799;76465;75477;59987;38490;57143;59312;93403;13175;92855;26262;39820;32283;44991;102991;96923;59828;18316;26857;69546;106573;92755;53002;86993;75790;101164;86075;28834;32514;35193;24131;52773;91757;86517;18406;87187;97799;102757;62364;86697;31529;42408;51907;34844;106763;83293;23860;21064;16273;48575;19372;48419;34589;44104;63137;64779;76675;40814;64848;79755;16941;76773;37858;33725;33644;85261;105226;75242;83532;54047;26349;54645;99831;105162;37995;74209;100156;86558;95750;47447;31028;100273;90009;16607;52031;82928;56046;39229;69100;39340;56458;74136;86300;34492;33389;105016;22319;50053;97310;88676;61878;104899;18499;33072;26453;67225;35047;48652;81521;50514;20598;50283;30746;86020;59085;60147;92658;76305;11951;45283;64531;71117;56906;76611;57672;29157;56660;104902;73396;25200;11095;51349;100472;12473;38284;36872;66052;47723;96013;69570;47672;43083;27085;85116;70916;47143;71458;56259;92286;83900;46692;60843;39034;106268;100592;71043;99881;100729;43913;94358;35676;23552;35971;90825;97360;35567;53042;47891;20805;56364;26816;94656;45734;14194;86725;23684;52197;58039;77316;79181;73114;31308;40358;15037;41874;32166;21119;19952;10186;41703;66193;13506;74848;79135;61431;60815;105743;32348;42167;14191;55804;29314;86644;37112;34946;65526;41057;86755;76709;93266;80082;79912;59263;16051;90322;65133;89463;16274;49792;48964;24761;43088;53959;105290;22054;76734;66041;57704;39010;33291;18494;51900;10908;102588;64195;15324;27405;27152;79567;45922;30449;102540;13643;13877;40504;83364;16687;97971;68961;93041;57931;21570;18340;74886;32565;73249;90187;68484;45278;34292;59710;89251;61990;65528;39487;40609;93035;100710;12107;61538;19703;22063;64652;28775;41304;22523;88396;74944;99549;94057;40390;59076;94089;93728;44182;41426;44113;73796;52564;48983;18715;104526;63327;45740;93906;82464;19648;74215;26380;59734;43118;73508;22586;101611;41672;93174;70337;61590;102867;54726;33665;40444;40053;71815;74575;58545;106823;52604;47378;63229;67462;41907;18786;49258;65213;86541;25286;78658;39017;87801;79144;53140;19209;64122;75237;90607;39300;104236;19863;33798;14623;79355;11966;87691;61371;68216;71527;57312;37435;13456;47893;54309;28874;100930;73505;83163;55580;39018;47137;57594;92049;60972;56409;37588;52695;60291;79345;60458;68865;47234;70501;39937;73552;15082;34709;56583;97927;100966;52371;41669;11420;70399;54091;28381;53746;60217;32499;90743;62441;106441;86583;29527;86570;100582;50493;65591;43760;38248;36225;86546;96500;46085;51200;87606;24372;81662;46495;10004;34486;27838;92387;95972;86194;55062;52937;20891;37409;104583;11257;93157;10429;84512;29169;41423;90601;14105;76628;57767;68421;64753;79523;83763;90942;68043;89904;85572;67284;50026;30510;91423;49030;44150;105656;75436;19448;102668;41989;20920;75830;12872;11460;62642;92252;19799;52749;78360;14718;41442;39575;61826;31594;11391;70894;43291;60734;94281;17798;25190;87134;32786;36357;71224;51484;104999;78995;33949;15420;65617;59390;84500;16319;101805;67433;16368;74670;44704;39926;66016;64949;53928;20490;78822;78452;31537;59125;81683;11489;99996;26102;23328;86968;32896;20600;29520;63293;19908;70485;20447;76688;11377;79147;11168;64098;79386;42537;44724;27868;68850;53111;30977;76280;13651;86033;105480;94260;53880;43973;25446;49947;17181;11882;43952;101766;60360;81243;11730;50001;22410;34927;15904;25838;43244;36465;26158;50560;22015;74700;27261;91912;91504;89024;15962;50552;26323;81459;46945;85794;94897;75060;84582;11452;39404;79159;55176;64285;17030;69477;66248;28190;77817;50959;33803;91617;26194;16979;51977;69366;64146;65933;90511;106228;104630;26822;30768;57936;46857;50108;106396;27602;50885;70008;28191;21248;104100;26094;59603;27441;36656;91555;40965;65486;24544;57322;32491;93374;81881;55420;15666;45251;25956;12865;67907;53595;26235;40684;39035;51563;55493;14791;28526;14009;91189;81480;36820;59137;90724;48177;106515;57386;37998;91153;42355;94628;20673;35081;100787;36697;22795;31273;30453;43279;36576;31711;29057;57274;89825;103748;55419;85428;22434;27515;49334;25427;29473;23729;34683;91030;33523;73980;22295;55173;60881;90336;99341;19994;73968;26161;79528;53944;39821;97098;84635;91325;97786;28550;103302;53882;16984;34122;10494;32210;87640;77047;71342;63955;100942;73457;82416;50188;14117;59623;71372;31386;104536;87372;17127;82336;31141;76144;88089;93032;61953;79142;62135;65511;77262;101651;55533;91780;29304;82528;36563;86164;47467;69749;30877;41212;38173;23006;22843;37364;103045;80568;63584;69754;61313;41625;14689;75637;20996;64896;32694;92137;15372;21743;62000;11597;70690;49778;15853;17044;80453;42041;44868;96819;58364;24745;83110;97296;12893;102727;68115;57556;103150;36726;89115;53767;15757;39853;86812;21097;17609;26885;101861;45867;99003;28860;103750;73807;71355;16152;23890;99850;91660;104766;56349;28724;25701;86028;48439;20690;105605;44758;11384;60693;52413;64469;72146;59650;86451;102403;94212;15910;103775;75054;73818;36006;92363;65460;41475;71937;97751;86476;76837;39698;42613;83540;21027;87975;55162;103953;105127;37763;74858;40661;100005;91833;45091;70117;55857;92797;54870;49895;61240;91995;100559;99625;80868;38425;43856;65689;27168;11435;25064;27755;33988;31914;60250;88176;83298;96641;81325;53141;10287;76255;65998;44883;32669;17653;21768;30486;40477;75157;97067;72919;14069;82397;85753;75115;74929;25289;47157;106644;50527;12831;70711;63369;40922;20215;67290;30349;74530;50586;35129;28558;55779;28437;35821;13801;70332;63122;30194;54542;23015;106078;71112;79019;79980;62392;31105;67169;15102;53696;23875;33624;27256;49844;47321;55735;76156;89277;13580;22495;85713;86731;100522;46875;20284;12545;47099;105460;75840;31600;13186;59194;32304;93081;33127;74324;91896;75422;70246;34488;59421;49296;25443;20113;23957;57544;26531;16285;76026;80615;88649;71081;70003;69007;21075;39003;22007;25080;28082;73273;100927;83287;58766;89686;18604;30850;103614;66003;99081;18411;62933;60521;33461;15150;53219;25722;70789;70279;18315;34032;91608;105966;66442;71016;44212;40817;16084;73222;11356;87932;104454;75337;102359;21950;32934;57444;106201;74938;101524;64225;28501;73499;23915;91761;48441;87261;104731;68281;87314;18081;34128;103432;99418;60148;33180;42762;80719;10589;22078;82252;82247;101653;20310;36396;70848;90497;64564;42659;64607;71542;54856;105643;74631;63069;40528;17544;10091;86554;106085;89327;70605;90938;200011;104347;78257;35599;43885;11073;60493;63443;86380;71005;106385;81571;97259;21530;38493;81697;47593;22512;67931;99284;81948;65819;18483;64086;81043;101131;28799;97985;78261;52021;33741;82573;31907;62238;62885;103607;74426;84369;31233;95891;16643;10857;23718;26804;55428;95359;49846;57537;85078;24388;61166;11590;103323;36805;19247;42389;12001;35594;33765;45056;49763;90628;83115;38224;28062;105647;34470;56623;43353;73020;87558;92177;91921;34875;72777;101624;44027;51936;43080;53530;13050;92004;81337;87002;54373;25968;38697;46632;29189;100231;93893;99430;10692;76917;101952;17703;73440;79715;90268;69361;51094;36190;26030;36500;71509;22861;26110;87271;58634;74509;97731;51151;89662;35615;47481;43586;33016;71856;17086;25659;90247;91220;71565;104849;89164;29627;50618;92921;78350;25624;29108;28041;87413;74330;76555;93791;76184;20875;47077;63118;99475;25928;103896;85649;46127;36533;34497;31148;81732;56234;18639;40081;61621;92924;34446;29866;78250;42126;49924;57575;20884;31270;37262;16185;52320;16172;88473;54848;93731;18495;42776;57025;16335;86903;22414;85322;59795;53523;51570;63923;82671;70127;40656;59498;104889;19701;12477;68105;23932;38273;78821;29729;70673;44329;56122;34181;34525;73595;59589;50627;12089;13604;94088;74683;92300;41407;26956;105907;97136;37184;34692;90396;26105;86689;71730;56591;68004;103292;50621;84360;21347;84822;26766;94794;85185;45985;17725;85565;99669;21211;22350;33280;14002;59648;17274;96208;86260;76208;61747;27285;19528;102325;12056;100576;96823;30926;69315;60045;62711;78489;49371;31990;77471;47293;22581;24788;35923;37839;35286;61267;56082;95689;69998;57796;69961;18356;91470;27278;44304;18241;14290;64716;11337;58048;24844;19409;44799;38563;90985;31331;92902;10994;27913;14059;39829;27312;19034;71546;11598;105951;40893;40436;28649;57532;26794;76168;76487;100962;39962;97283;44681;82633;20795;25383;36539;18864;105961;10988;56966;18186;54641;92743;75266;74433;99677;73356;83235;44719;87461;74164;73345;73445;57653;35936;16133;25852;38721;82739;13024;96617;54176;29844;20879;64198;38172;68585;93073;25578;99194;74613;71406;96267;24834;103572;45499;96741;64180;12755;83522;35238;64028;39322;47018;23207;45543;16421;59259;85750;46367;47082;38715;19523;54149;35118;28037;102367;36529;59813;79993;67813;66011;24726;13649;15139;16872;78465;27223;94896;63466;104512;32662;40064;59429;43958;95316;105458;23569;103541;51674;40012;51489;54729;21193;39076;44389;79224;105812;99602;42738;100460;78754;80195;59765;103256;63543;66996;62428;25245;45615;83143;69224;60460;26552;13274;36847;42428;79797;14678;75666;83130;16262;38535;65257;93651;82689;63632;84258;15615;101641;84769;59736;23763;63110;66182;50285;46459;18037;61352;66585;22677;77659;51734;51480;19960;45328;10559;103457;22011;89317;59973;63295;83810;104201;21139;86043;79318;29569;45391;30101;72207;28439;82122;80583;14063;22892;93487;86766;102254;103603;26200;24941;99158;102182;71059;73784;94294;47872;55739;59570;11510;99231;86992;61618;28352;22156;42840;102834;65746;74351;55614;72675;10917;63116;95982;70954;29975;69052;86613;43262;30483;21786;101827;11559;69449;41028;68078;16628;31580;95530;81194;90681;92087;68373;105637;41226;63968;13925;57572;15819;89051;95656;55602;10056;40614;57251;46622;88159;66810;15005;32148;91396;38782;87546;75811;43865;31855;18993;71835;60315;31573;56327;39552;62153;56295;42665;99303;94460;91970;26058;79341;38530;69879;24313;93107;49366;28113;51408;105500;71925;86315;46942;11108;101056;58857;73556;27371;35739;31717;38665;94125;19801;55106;79686;67209;25906;64799;68251;33229;84765;96123;63938;14177;31018;84264;96406;84339;76805;72887;50089;63612;63286;84647;50773;30788;59130;91867;89799;12271;46569;39473;15766;36473;13010;85382;46374;11464;66314;78982;50445;76493;30640;73371;17257;75741;69816;42847;104187;65176;18057;16344;64422;59326;74523;62288;89206;17208;89716;16551;16697;96106;36719;74459;56326;39603;22366;25587;60030;42395;36036;100997;30600;61758;47252;19699;80778;200012;81520;26729;80292;64984;103580;72597;47634;40239;58315;72184;58602;14149;62089;36032;41791;30686;17689;52717;105445;44002;101825;61465;18366;106380;51850;52094;14291;94609;48280;60265;87096;68229;76096;53521;32572;60062;55695;10821;87200;58993;47826;61076;82384;82349;18877;33113;94583;38574;68264;93248;62415;100609;54719;100379;75028;92013;27449;99212;66301;51878;49755;13059;106991;62841;52448;72241;16122;25384;69498;61664;70907;86943;46773;27764;60387;52123;49835;70694;74438;63625;12653;67488;19177;81329;37088;64909;71011;19572;31638;102210;43798;50957;22947;101870;35026;60003;36940;27491;66313;96102;21618;51868;75079;54434;60285;23657;49841;63983;63630;87724;15867;33429;102388;75723;87745;19305;21664;70955;57961;69243;55581;96064;37247;61978;67918;104969;11360;57113;97348;58219;47562;13109;13087;46029;104581;103169;42415;60445;81585;103310;20527;27618;89863;37153;94643;74491;100745;77506;51035;74641;88140;24342;15602;64906;83486;12693;89065;57740;50858;57772;11214;33538;28825;96597;95817;72224;45773;42725;51422;83517;61543;89535;103579;28301;94410;38601;54790;56206;29825;89379;52831;94567;70687;104255;13356;63960;99053;100307;47335;81911;92751;91973;51649;47845;76793;70084;47429;50061;62994;51950;74105;16049;101233;44120;72743;52838;33788;77635;63609;13827;32641;41159;21683;53345;38356;35279;58107;22192;83897;86642;35585;46394;31585;52616;71725;66765;25452;79897;105759;47763;41621;94058;92227;70939;20882;85856;44206;60741;14564;21796;75746;42286;46876;76191;14685;47506;78365;54996;96869;79080;69462;13703;15055;100329;86767;75231;39650;36435;34033;45786;10001;39241;22755;13584;77671;40003;16923;14849;81387;93968;12857;62833;20399;83138;25170;49205;49115;51915;50287;54454;29579;86819;53631;19995;44564;85405;84813;69203;61412;97677;58370;104957;65796;75800;16448;78488;32540;44978;36692;80644;90375;56104;49373;78536;86732;101248;56425;31241;45764;100083;71384;31237;49907;29312;91477;86381;74168;30162;55978;52381;10645;100268;72658;16888;94450;96890;86948;20574;68712;34508;92795;44700;43098;27580;19142;15774;46049;49238;103032;105742;90255;106361;82849;91063;26611;44537;54251;30999;106792;16877;56702;105436;67828;23366;12495;43373;67257;35815;28360;60228;13380;58259;39610;72874;25481;104342;52205;105069;106961;105713;15799;103888;16239;63077;19746;26286;48277;14957;58683;72209;56520;50656;106894;83902;84246;21316;35010;87342;51157;68890;100689;27986;61355;85520;44373;100872;103752;59257;62790;80239;99406;52419;54666;30761;100240;51677;97110;38287;77901;103959;11519;14505;55560;77153;104251;67251;17732;29359;53622;84292;95773;44588;60569;72514;90283;32909;54928;64859;81892;50804;40387;94932;70338;10484;89523;82232;58627;47253;32762;86401;57941;105242;78059;85465;51235;95615;15266;15169;11105;77297;29938;72478;81467;74827;19637;10846;84824;100597;81360;71620;43533;66287;12997;55481;94824;61383;36836;103018;81813;14019;49341;44685;84864;74283;14970;38228;62987;23373;70470;68413;101781;92703;18778;66022;72885;24175;44813;96185;60054;72236;57645;96019;64049;32636;71636;65419;26777;96323;66695;20361;81966;105802;46084;84573;17315;19911;57372;20562;86006;79751;50007;34519;81272;41056;89841;32859;60870;63368;69779;54426;36708;50576;57354;60747;28233;10277;97379;46226;35161;30857;63068;38747;24843;83023;25014;53685;13311;41912;97865;54217;56228;100737;47505;60107;91304;106383;76283;90050;20278;24880;94352;16622;58710;99106;100534;104066;77345;97631;46263;68802;25991;50293;104955;91618;63657;20072;52344;38340;55918;81457;86637;82500;17581;64123;103630;70244;92780;21246;48879;54006;18804;95368;40989;87795;102888;60552;72315;70284;64471;92107;83337;40532;48590;43637;70524;34451;35898;94372;61744;63070;76651;81465;94805;92987;42413;20261;97505;103480;14865;104053;36543;80149;62832;81656;70667;26341;58966;103551;59138;52020;99366;81291;12629;24349;81342;99482;86941;45270;75967;95421;33055;66078;104738;64211;84903;11424;96429;93298;37561;100458;61310;96449;46871;103090;96950;14108;16598;58951;54021;84016;31985;21600;20127;32021;58698;53265;32066;73116;90300;84106;62050;40564;70465;20102;45809;68418;19113;81135;67255;49874;57597;101923;70150;61496;52370;90174;34661;20053;71072;85757;26254;70239;50854;67345;43216;51254;51574;27105;39906;57699;21875;80958;71063;42637;88490;36655;45345;101478;52957;72964;95308;32464;30011;86874;79705;70153;92672;39394;47695;28055;53708;71133;17549;33864;76285;24405;25360;14521;101748;48675;101883;50401;44114;105818;83228;37026;97476;23781;12793;34456;104779;75093;55997;52143;24822;21841;22070;83509;59665;52284;12947;81226;52822;73956;76699;70477;66898;33825;100287;56235;52829;23016;97726;94592;84131;65581;102128;11061;41239;61960;48454;58862;30230;47747;83215;69308;44584;32275;27184;40270;54670;66439;92782;37809;19062;85811;75676;46542;20227;29778;21254;85021;61924;102912;79123;85709;86846;80861;93582;94451;14989;33813;27712;78894;52133;92996;16945;22852;21020;91893;101578;101326;15235;35542;79990;71758;91560;103558;80909;10430;82851;65241;11308;46676;58135;22258;71325;87119;37401;94152;44979;55026;40427;44404;70748;25372;87472;11808;75561;69708;71756;71625;65336;66341;42694;105239;25129;106177;54753;41861;68367;106669;73351;38570;25061;40588;90148;19323;45660;83177;12795;18350;105824;69186;49381;41164;13652;99037;18722;27270;87255;81765;105335;105803;93966;66839;67612;81536;79881;78540;87224;69791;105258;71020;30206;10508;65454;51386;47029;50884;106667;16826;104178;100681;85505;30091;86148;14798;32646;37420;36949;74407;94158;54612;11211;89414;70152;12931;14695;22788;97465;85776;35460;88641;36970;11851;53211;40353;37078;58051;65513;68268;102332;92128;94589;70168;62013;22363;37206;97588;18505;45335;57721;83553;38628;57844;57281;94887;25733;26056;34998;61893;17017;65830;60563;24723;20434;55009;61763;77204;48913;70842;82592;65683;49013;43974;54233;99821;23135;84735;43229;43825;49839;81013;22857;91287;37343;14213;92735;65598;20477;56361;39746;77561;59027;42384;102505;77517;69687;81902;89923;89605;85240;73454;77873;40005;94636;94034;44600;45556;24082;58339;27785;101477;77278;33242;41985;75620;46976;59551;101565;52159;34251;51387;46312;36181;56837;86507;17294;106632;105096;79389;12062;67014;26969;106841;36133;50245;44946;22309;89731;75116;80770;56177;85077;73604;96317;23975;24988;18193;102469;103524;90551;38388;94201;99458;80327;79292;50482;24109;31655;58564;86924;61158;87484;84696;66298;94971;21805;97585;76077;45000;23543;71216;43109;93287;53280;73056;88099;37341;16570;15132;49803;24561;77784;21969;96703;21871;101443;105315;60648;54917;37014;73852;91635;41067;56845;49559;64062;91445;15622;38125;68938;11764;93914;100826;52241;53257;41474;97040;13204;68825;31368;29789;82339;42362;80200;33506;81286;75022;11323;21304;45896;69195;48725;21328;42816;68340;75277;22675;88060;105499;46938;18790;84805;62556;46151;35707;78977;19049;61586;23936;70557;67008;35427;51308;104022;59775;30779;72398;29783;55406;12395;78871;103698;66096;35203;80398;80661;26828;87073;45965;104580;83286;53907;44833;59155;68753;16966;70548;87894;24515;43204;85724;84433;54308;55590;61905;45921;100892;79066;41441;11133;56230;14891;106316;87895;64561;63050;21205;53674;72511;48847;67705;11644;104704;91627;51879;82600;64822;63096;68563;10812;106459;71545;80393;86994;76727;83912;104885;16359;105214;75956;61041;96952;78701;11905;76327;73627;88103;54445;57222;57172;27073;50588;12716;50706;53198;96184;74970;16197;77154;106974;27319;52868;69329;54349;35863;39361;66479;17033;93558;40195;96296;41894;13449;64660;106562;54257;17533;90996;82759;91989;86277;20571;86352;78569;14961;69174;94550;96112;94517;54547;104872;12733;96692;66122;34571;18281;80707;79738;64032;99916;16277;59985;105684;90980;80678;71754;55035;54876;105811;38606;42179;74948;93234;46776;36320;71706;49227;40324;69299;13734;15244;30413;40305;36585;70586;35484;71646;37520;63228;96224;58251;82522;81915;58757;89184;99824;87317;49526;57583;53797;50521;92509;97372;70974;42414;81960;99817;70370;42183;64748;34065;19074;56275;46043;100662;59131;105677;53206;101517;26893;26404;30333;104558;77759;62121;77134;52593;13011;82519;21911;20256;79180;90999;24115;90536;70108;52889;10981;25672;95513;91050;42341;11954;101540;101129;57648;57661;87455;39850;44586;61478;87282;30338;107143;59579;86014;87355;106414;29943;91837;34362;16296;84781;45507;67831;76590;58432;105230;35980;84835;89668;66756;45321;34155;23128;30494;26992;74237;53142;70558;35357;64702;78292;43584;200139;105621;80510;200099;45678;56036;91599;84478;87742;40106;41975;49950;40359;58952;28797;22791;93691;48528;73990;102908;87535;105574;26258;81090;57091;58103;96122;97397;32986;60329;107005;97109;66334;58350;49310;81591;84388;25086;100086;24144;90434;49209;61671;33352;81572;49267;97949;88157;82322;58090;91509;67007;68956;70491;84132;11098;78747;18637;71908;36463;104030;63979;49747;56905;54678;59442;68704;55257;75942;60982;70767;91619;94417;67355;86567;33892;99926;61862;92533;104339;99819;68024;93207;49683;25465;40047;25876;85435;61967;96087;10657;44534;69305;38372;57151;76817;71647;57550;63179;74151;77874;85547;53980;63135;91146;18262;105532;90656;71162;50543;33040;68804;17426;14869;81672;31461;105896;78107;18064;63434;62225;32731;73889;48240;91354;62223;83821;12974;60471;102904;21034;11854;20609;73576;70242;19462;55833;105813;79787;58226;106865;42225;15928;79910;59201;47355;94534;69531;87871;17512;25305;54280;68212;67664;81424;76341;89056;99126;41863;63370;61734;49068;32880;100807;22284;39258;60533;11998;48404;92449;17391;35911;89453;14717;54225;62039;85210;41641;17437;43721;28676;19138;75891;101240;41754;91774;52061;84498;31294;40055;60791;68498;13958;23779;95641;86387;70708;94556;63916;42215;103378;73220;103904;25230;87927;88178;10424;62815;86156;106576;69825;26074;85105;11599;49289;104720;25846;11503;29326;57949;20046;67811;96690;62882;79337;50047;79113;12498;85114;30085;15927;99128;14557;30890;101229;40968;28610;106761;13262;25041;38858;80732;33377;11733;56838;38301;77673;74649;17164;52139;99908;63535;41508;43130;10998;40104;32177;55607;102659;81630;70172;41602;86362;102932;100926;83027;97236;24453;40240;64479;50991;91016;68609;22469;21482;42485;62910;66027;62937;25604;104606;23735;86143;29235;57536;34272;61514;92911;53158;85586;11031;91570;55033;93818;19721;32894;71837;75235;18927;65859;53069;67499;74779;57912;85027;54076;81969;94179;69415;25477;10701;88025;44244;102667;32123;68211;35325;76580;17501;45276;31264;22657;45166;11814;45894;22291;15850;82454;103343;66102;28210;60306;10884;45086;39480;52830;59308;101367;17371;25550;66892;38243;40161;102886;102061;26823;82750;106686;77879;65715;64850;59532;102740;67942;72466;49113;92678;51223;73527;47735;15400;79308;70049;99010;20022;86238;43024;34484;87481;26609;22200;93671;42981;22750;44646;64508;200092;18391;63469;53558;65075;48450;106707;104951;101904;30786;102395;87324;16190;51772;55967;104252;67963;15804;65149;32957;100683;32117;22622;96616;45344;36745;13849;53909;54164;105303;83327;30898;63251;101153;103211;51464;59154;53215;21714;43255;100153;105804;51051;79281;95519;103050;21465;12456;10370;79940;27941;23531;73317;27248;66094;16903;71472;74116;93339;97687;67238;22190;62371;39676;101356;65110;29510;61152;16446;67264;32964;58553;63125;47135;43156;29228;26755;72525;100110;53857;29499;72549;65748;95775;83129;45744;102161;12850;59444;29973;101320;32795;88912;47204;28856;28574;23591;24398;14013;68149;96718;77272;55855;101620;59772;49301;61027;62011;45559;21976;87881;58314;88067;104366;103431;46528;91096;13959;34890;22205;80056;67651;62444;55302;105072;34756;100832;66009;41210;49730;32706;97573;83601;12488;50500;14782;47901;29479;65569;40227;50088;87792;106557;68679;101764;25366;99570;29576;16097;93382;99371;25778;46433;23654;11432;42002;68210;71888;83344;58381;53463;55275;30748;80906;81879;76553;11631;11918;73942;49465;48296;60153;15616;38297;85807;95335;32980;101408;102315;90086;82626;58013;52887;28706;40916;40579;60244;20482;95793;72131;104827;70504;101371;67205;84152;76886;31607;60556;99553;103059;49222;19718;53411;96198;87435;77367;29749;44415;67134;25188;39796;83603;33881;70148;57376;38554;69416;54056;105006;85479;46432;89671;23204;81574;44990;43364;25213;83395;74722;65280;18541;52691;99074;19923;85678;63195;59240;19869;15272;21215;34852;42398;94992;33469;60421;14630;22882;46679;16153;96933;36221;88463;27349;56254;92505;53922;42517;86902;10030;33631;29422;66879;57722;96060;40866;42740;16649;16032;17158;89098;103499;29702;83774;59631;27390;48314;97579;105939;77806;15772;85216;56100;74289;71880;38692;78783;15934;91928;91425;101509;42009;71899;84968;18620;61437;63078;74314;99563;27139;26603;33408;37746;13542;14510;97174;48509;45865;13219;95977;74507;97343;100168;106706;68148;200126;59336;59981;31503;106817;44664;44890;52930;60330;73261;45057;27330;18988;39459;78872;64624;80105;47843;55815;17684;93711;55789;23817;101249;59745;49913;56071;32579;27298;96432;71743;68996;96778;11802;94874;17469;74474;35709;85527;90035;11394;89091;31661;52341;46392;38280;31276;99778;36714;65763;77348;11084;37909;27590;76766;105783;58759;89136;25779;61892;49607;97914;38623;200111;97167;57334;96785;45955;99432;71088;81834;63710;86895;67820;43296;65398;53488;34392;53222;43055;90480;64433;40262;67855;12564;27984;75630;70311;45694;65655;69161;79507;68437;74676;57638;69954;42101;68073;100992;26559;15595;106425;36540;20588;77165;82236;105428;38569;32803;13123;73918;82870;40581;93009;30989;42012;70728;71876;19843;91606;95394;85523;42639;100471;28814;74219;13741;46563;12448;81386;42948;64257;85949;79026;29948;48992;23406;72768;28986;80396;14136;21160;22226;81077;70785;18897;30644;101352;44589;63790;11153;105888;43310;59276;56710;12487;84254;93834;28104;96581;43072;49759;78632;104090;28241;17535;60066;54475;29239;44168;76995;52652;56703;10160;70852;67683;77096;78882;90465;54473;59779;12068;31703;50066;54559;33139;38826;80039;92913;77075;23948;34234;99349;89815;78577;58911;47245;31239;23083;97897;54104;72278;58477;80469;102953;25900;64986;82815;40570;71967;78553;83158;21711;34450;22686;54256;75918;60664;77520;63917;14339;86765;10381;64844;102381;67328;79299;75690;83330;28290;63133;59323;61378;96758;68774;99739;86155;86498;76509;73142;48832;80015;74707;89262;72715;57176;76836;89264;40831;97242;44655;58058;66631;35104;11842;11843;55018;60981;45608;57759;86921;21324;53612;15197;67662;62623;10881;93320;54632;22643;16842;92065;60401;29051;90088;56448;66576;58810;37310;19002;38303;18152;10167;50351;59237;36242;31511;22300;28286;69300;67100;93785;36004;16890;66236;67808;35557;49784;22653;35543;34108;13178;81069;46257;104543;38953;16615;69321;42989;10695;35280;80283;97928;22871;36875;68819;90645;61979;78120;35632;20164;17608;25024;95870;67104;100026;17542;50551;87992;46889;83598;93315;32333;30987;104377;44324;27629;74497;71491;105210;83838;66032;14762;41130;85566;104164;36996;75364;58448;104760;86106;99855;72117;90937;102699;70382;65498;81547;80882;68063;79077;65716;82021;31950;89960;41365;63180;88058;80513;84577;26764;42297;71863;88552;94022;64030;70761;22099;16325;90624;65826;51015;49322;102031;63631;46652;23438;45596;60764;90671;60905;38400;20535;77743;23254;23235;21885;45904;74208;61297;84255;104191;57512;49473;43307;100302;33380;95741;100363;99399;69539;79065;63478;77555;27007;81875;55660;76020;65737;26605;49087;27165;94559;67478;62155;49003;25164;11600;54093;15051;67258;47855;20790;45103;76789;21996;25243;104877;68919;71286;38716;11578;71872;29767;53340;37766;94654;66594;82210;86406;12084;28475;90547;89416;25934;14347;29481;10461;93395;25719;59918;41552;12744;68433;40371;21060;102889;39929;75230;16914;60031;28761;33544;49560;17253;84305;103563;18161;42723;71753;79425;29790;79136;81197;34552;26818;39262;58337;34254;23844;38578;23920;16671;85356;88135;18065;44694;17321;86864;24532;87172;63493;54755;80959;22678;20564;93289;55125;75030;66057;21784;16557;65785;94013;56056;96621;106203;51180;55266;22869;60492;26419;93263;75388;76479;105273;39799;69390;95540;84876;64912;105083;101297;100969;10195;55506;24250;19065;91234;69966;24433;91977;90123;58287;63837;77482;93591;41156;83953;76923;48251;79158;60331;81171;26027;45115;87205;86842;82469;34427;35900;19166;71551;85578;43873;77127;18634;54535;92284;28513;64341;29739;76575;26450;80364;30235;42035;93362;21500;76133;23732;100865;106192;34440;82280;51586;21690;105056;103206;26510;41880;90584;68237;43205;37116;12670;59947;32506;21594;59519;19880;71877;54271;91758;32671;24551;82945;30025;47828;102097;54381;46456;43892;54579;80066;89789;33749;69051;44858;50739;99833;50441;85278;82927;11699;73904;103636;97359;83981;89890;47553;106971;88748;29221;29107;66747;41793;23532;22929;90827;67234;41586;69026;83435;18261;29819;36827;83254;18518;102498;51299;97302;85334;20283;26244;84324;25533;60630;15541;44992;61079;70999;90165;54379;38073;53633;85858;22183;11803;103056;27227;60976;90340;88963;15544;42574;106442;50888;53471;11395;33013;53073;38993;29972;72782;45107;18992;90961;18319;10035;100420;47282;82103;89919;85401;15648;92132;15475;103204;103275;48851;65752;28303;106829;24052;10041;57491;74681;60174;86781;80564;49677;87156;38324;60958;26978;81896;99939;103914;103152;97308;10556;18450;101146;29288;14527;97803;84536;59488;53324;71866;34549;22097;100010;89623;48931;22692;39878;58736;79560;22958;94387;77299;75980;22182;47759;49692;13143;82987;103207;57718;36979;87824;54361;89930;61063;35641;54323;20660;34699;62207;11188;38637;35516;94242;100991;45190;91685;86595;54298;49067;26182;76372;17993;87140;11861;51411;73575;68625;70460;90640;38344;31527;101789;83206;93305;50079;73913;89329;42715;27960;86286;75405;14942;79419;61360;34293;81713;57764;60319;93796;100404;93308;26625;19354;16870;18113;87305;97081;66059;99048;46196;75978;24527;84260;22010;53985;101480;16034;71208;36422;23721;40348;20080;65844;57675;76745;74809;30532;83755;93466;79248;47113;14173;91981;19697;104990;91699;60482;53370;91382;93637;43630;10944;60560;84034;73239;30557;90405;33920;12589;93576;103712;54111;22930;83442;12525;101868;55988;42804;41590;27506;60704;87681;71951;15362;102629;102543;44637;19384;64992;68725;77062;59959;86072;75034;40855;50996;68615;101082;77548;105663;91017;46908;80714;84739;32310;81238;81206;57184;78498;89055;47016;41108;20983;26367;76941;34257;38904;22324;24092;24517;99359;20419;10054;92374;36123;89999;94967;46275;87293;57395;75995;77465;66642;50862;85193;69393;56321;93364;44658;22308;60449;75027;61712;55537;101905;18474;37764;78392;93653;25331;90746;47651;42146;67703;106861;49075;46217;85470;71587;63730;81152;67377;66968;56012;15241;103994;75865;58532;78635;20293;73144;37604;95433;38728;13134;103335;20071;30337;106211;26218;54444;39951;56120;63860;56544;44489;11914;104253;23179;12848;89034;94873;80803;106538;82141;102152;72660;14998;43800;17226;87507;82829;62997;86565;75884;65068;62533;36929;77310;15455;81051;32414;71241;59673;63400;35991;11588;13006;33056;79384;55383;54650;84429;54684;44967;95537;40275;24900;48255;33431;94938;95683;59081;30132;84136;24824;87844;59791;96416;90505;61215;99929;21703;93085;13012;68248;59630;101920;84839;105054;99856;14369;41293;58949;26652;88509;86768;107145;88572;44048;88539;73064;36071;96868;50952;67928;70709;18855;67249;101959;35037;76087;40496;14916;103021;12502;13893;54973;19359;10684;44105;36947;93331;38103;16082;75759;56179;22509;103886;46655;10509;99683;61674;20735;100071;81075;62965;64640;82253;71024;76037;72931;90166;36762;78634;15746;53925;83567;11506;33466;63420;93989;94868;39854;60307;66316;94463;34118;51390;19992;104436;78789;38399;106812;96964;73545;10604;40956;96350;25379;46578;55060;49572;28968;73005;77231;45248;30165;54599;84785;45588;63808;69720;17150;33902;28024;28205;93042;32251;71318;19988;64810;21331;48905;51991;33391;26274;69364;23156;100115;76687;13022;59634;80874;97921;74018;77504;64057;81914;35642;85276;104117;90381;84751;86611;16664;27517;65775;103879;88522;20511;15694;15580;107122;93413;94966;22449;60286;51064;37404;14255;104032;45944;44521;63345;41202;25505;95328;46441;56020;102080;101632;72405;19650;54995;93710;68195;21001;105064;17657;80107;77815;71240;102497;101269;45648;12816;67745;97563;79544;70810;36942;60037;56721;69742;88994;25445;92938;40028;63191;51089;44051;52881;95725;101881;70032;67567;23751;93654;23382;53019;93536;59366;102018;63772;12557;104485;43805;27993;46782;42861;100788;63408;85422;70618;92447;52295;57239;68309;80000;92972;103381;56313;29620;27220;45808;39704;99877;93988;40107;56659;45977;74941;27936;102833;74588;27801;93683;93860;32903;53295;50667;87712;44172;30610;78527;99829;44115;82992;26479;28829;11390;100455;41047;53163;66114;92166;54813;31602;79274;76148;56620;61705;39453;52854;72776;88640;73525;97591;57142;78782;30397;58588;44699;59092;27364;41422;70327;20170;106560;22048;16442;23392;47535;43336;21344;18048;23283;96042;73264;39599;10689;72868;72123;47792;30070;30687;28773;64429;27846;95337;46912;83595;82251;15765;89239;10570;10465;69562;49335;32113;72816;86790;27695;56213;86298;61850;29985;30841;53723;100357;85366;89343;12682;35639;54106;42844;96656;31722;104435;80143;32324;35336;106060;104162;31068;86303;45161;52427;27091;83750;38912;43090;57856;104205;63572;44467;55082;96761;95401;43184;23243;31101;42226;63515;10720;76240;39275;32799;74308;27362;20294;80318;97431;97105;101032;31528;27643;29368;16702;93254;51997;36044;102413;23585;65863;76988;11019;97051;11731;43504;50932;44860;87765;10691;70668;60585;69323;86841;61477;48965;99129;105481;55418;55149;54946;22566;61202;55632;74643;81405;18136;62258;65348;67763;75169;26655;89450;90766;88608;58045;50416;82269;104675;50767;60014;74629;18844;74860;18244;80492;103685;36251;14070;39158;82761;57957;68179;89497;36233;106769;63516;15085;53681;104070;101495;80147;66599;30077;49826;50870;79890;43927;22349;27031;91701;43192;13539;80269;51818;76304;60699;47827;30258;75813;37624;101048;63138;54181;97143;27741;63919;106290;12013;38025;61148;16475;24596;10002;25203;90108;99391;99410;86590;58250;30528;72731;29353;54828;87517;78720;79086;67341;66257;87066;97773;58006;20213;63285;71511;23713;81616;49519;76379;75440;57013;21188;82094;66630;81529;28213;56471;28100;64389;79238;83772;12548;18321;44736;86516;54014;15894;72194;97671;22646;55291;71637;66036;50305;46430;79134;57004;34442;99446;66906;33319;64861;35591;93523;35377;57276;16926;37695;47511;90028;79383;86761;54203;77435;34864;41481;92396;50456;94472;82602;25628;91324;45656;28982;22023;17051;73436;81756;79598;50605;26234;79900;51922;77713;27287;26808;95692;65468;46535;56212;36324;41990;83656;32127;63699;103726;42281;62826;61945;41543;26555;53051;38478;51759;96298;70699;58028;27906;104651;72028;33302;42210;15404;92071;82746;13792;41456;14563;75924;57975;105206;28851;51861;20375;34229;13521;68356;26787;16727;14431;23441;23040;25989;42988;34141;20653;77954;11456;56335;46041;63733;23362;52654;76170;81184;41094;89589;92053;59183;10419;97207;33439;61936;94834;24728;28899;16483;31383;91801;16818;99538;50231;28410;62219;48329;91262;87790;57370;91306;26034;51248;46046;10798;51113;26245;105625;19627;39900;77767;37897;79411;89590;61735;60141;105382;40874;49698;70670;104125;81178;31187;94667;77499;15538;44530;41923;92220;80087;75914;88077;56537;15745;106631;26651;43446;28430;19724;65350;28647;94360;15924;48249;18055;77736;50829;47688;56412;20800;105235;17530;47205;86350;29589;84914;41213;19634;32239;99798;25995;71677;59687;39123;58773;85967;63507;93719;79379;83510;49922;65192;38935;19294;27583;105384;92259;41544;68898;63650;50034;55117;16025;37619;72082;70146;62018;83172;57443;50389;72220;54821;46248;73739;54073;74659;76564;96365;13704;46434;59728;67874;12114;16690;41866;105603;64768;25241;67252;80974;70031;90498;31712;105041;72554;101079;38703;66020;74488;70077;36270;65862;99006;25268;15013;100555;47885;40194;22424;26192;89593;46621;15504;90970;80692;16781;16792;101796;61722;65362;67309;105136;89489;88928;23832;83764;87389;19105;47515;105319;91735;71307;13512;20208;29800;23073;11388;71836;54826;103566;15891;23155;23766;57531;80709;60805;15945;58072;32039;86222;88128;69602;49551;56426;85361;77616;13672;46032;78916;96074;14485;12941;53412;29951;48682;101926;73994;89238;12326;56922;45234;82068;73769;17534;45129;12829;105700;51643;76204;40074;25926;22154;56067;84308;22222;26459;85290;19636;86771;63060;63374;62650;79361;69138;11116;27574;87910;101593;25691;63661;84392;77070;55187;27112;16642;74502;70652;21803;16091;89540;31809;41137;74611;82913;100155;40589;101361;105092;41826;87768;49292;34576;65400;30607;52001;14823;104238;25808;64227;24064;43835;31168;86965;26554;76706;94753;18861;102732;68884;45239;42855;35291;56653;95370;74060;78878;73232;60008;21257;72943;19781;58325;23144;68194;74658;103346;74952;86952;49323;78870;92278;12856;58894;64492;35147;106613;99518;26613;43442;45368;70908;28593;49878;94312;44565;87181;17436;58906;18650;71540;43435;46649;30197;56370;19529;51720;87862;44961;56080;100614;101045;56742;74725;30218;70809;20708;42841;79033;27786;93872;27788;31524;65877;105828;31925;42810;34125;76642;83102;37987;14495;105101;34351;102945;88422;61398;42588;95616;14771;20738;21892;58395;97489;50223;34431;17126;75579;68683;20815;77071;91269;86116;89332;42034;61377;57410;68907;26571;38751;65753;43763;75327;104407;55456;34831;53145;34594;17076;56013;16050;87359;99377;63532;55178;58285;40294;64961;62257;50700;77308;55235;11790;24833;62835;29959;36122;45341;93230;26008;59232;33980;94368;51375;104496;29911;12363;85766;40679;106074;80905;25982;10161;80549;42133;90658;37735;35514;28671;28522;34324;45414;94512;62923;18466;62854;39130;88747;70492;17045;24360;83582;72136;45669;36749;21036;87757;84688;78126;55380;27029;59318;31658;86980;21435;68913;85790;50813;41153;24584;100620;40346;42534;62813;44396;16365;80525;55158;15376;59610;69445;42293;41034;67792;34670;76130;88657;57084;56553;103696;73955;72219;79307;73172;95259;70414;66686;23526;50361;97613;61489;35031;86914;30052;28925;19851;55400;63328;52634;78006;76329;93175;89310;82239;102735;97887;100760;73470;49686;79628;12596;47177;62756;19820;48501;75025;85238;26405;88929;43018;82226;26976;88106;43574;42084;59238;26162;17174;11183;42807;87071;31916;75938;75427;42198;36853;39419;80907;99862;75524;82536;105070;33772;105789;38192;37820;22552;67554;93086;55464;105661;25029;45909;88616;86435;51863;84993;54697;43977;48844;54484;15652;14477;104491;59176;91021;49529;33306;86707;27034;78247;29947;78889;47035;104984;41824;95289;15412;37219;74891;62515;100593;105760;25125;57316;10071;85387;18025;64760;15605;97266;28651;41295;55047;57735;15048;21042;36515;50331;69951;87147;74096;34938;70559;88072;68749;96599;89095;31454;56526;25165;56684;91863;32258;97855;55899;57127;93135;93746;45145;93082;75621;97370;77935;32855;49705;37159;65178;87145;48455;100063;56112;23903;35738;50148;93862;101543;90950;28581;15561;71048;22225;58563;46884;103003;14021;93519;88590;100173;73052;15354;35174;42461;79988;82588;41930;55565;53388;19510;31668;63382;45693;24139;102956;88981;61822;26640;55649;62729;82673;15352;15817;65904;21350;58018;12339;87475;84890;21438;44768;67022;64985;35378;33226;85339;41268;36332;16533;63371;63806;91350;101790;22705;104680;65495;41006;69457;80584;41051;96888;21167;30969;15458;53597;25150;106124;102692;72594;94926;79632;41538;25333;96291;62374;103928;22914;96743;84511;90483;10468;15550;78424;35948;101286;17232;69598;46407;97743;106659;32819;100375;21284;106656;76435;96225;59626;75933;16251;43481;64776;35327;51413;44566;41399;41383;61692;84099;82586;12313;36360;80743;30905;64224;17730;70880;48154;50132;28464;103945;92559;102287;85860;51181;54391;21695;105457;74811;19469;100678;68138;49469;99787;61316;14086;50519;60869;74985;84006;81913;200024;70922;15953;48952;46694;90770;31151;52114;73014;60874;80459;89019;11210;35891;18615;54406;14391;24181;87976;63280;12077;54143;40567;43625;87510;92939;19558;13803;96071;100876;81489;16036;26663;102495;23147;57332;60921;67886;97246;19402;51952;35763;42721;43409;65014;58405;41084;79675;33260;75564;83479;63082;43116;97837;26257;105843;46024;28368;84830;74262;14760;15307;99583;105566;62401;65507;73101;87452;101252;25152;34203;19867;84214;68703;61984;61891;97534;72401;23077;25857;54101;81308;60365;12432;37444;96814;63105;18979;28919;103322;55532;31719;96124;57518;32740;29001;36454;37093;96609;63203;22341;35230;94114;21596;67011;54586;17309;37001;85758;88895;28642;37065;62402;56291;62266;47715;59671;87968;106959;71040;94336;63812;100023;64228;38024;104887;72114;75706;41277;61094;42697;12627;76350;26751;96201;45473;75831;23269;59696;34076;91284;88460;21633;40061;48554;63740;70993;23150;11873;68503;55216;89853;38899;32539;78909;89953;106522;90816;39222;50212;71212;38764;19657;85904;103316;97684;82272;12780;39770;61493;91730;34959;39256;45394;48370;50910;48165;105003;80287;32160;47607;92592;100256;96906;104995;93276;99525;42379;78180;31223;13474;35982;14024;84172;48781;42652;96600;60548;66178;60299;103160;84770;14728;43337;99668;99063;49981;12844;106107;42720;28566;37089;78941;95918;58782;39971;20885;76134;58457;54699;74835;73791;89619;61631;50479;70105;11628;107124;48485;37380;96118;15181;39713;21650;103897;54962;29117;100915;90675;92983;75005;43128;65254;62565;76448;84881;69120;53087;51232;18422;101845;71609;38844;16503;87966;38176;96947;103262;13350;40075;63020;35781;45153;45447;25092;23321;30003;47433;102299;21385;57235;47187;45557;24015;80184;21487;103988;72288;65666;14669;55754;27962;90216;65645;93008;39707;86918;54866;19844;85423;95776;64140;104850;76246;87767;50238;29667;47086;14751;70635;92011;44680;88654;92236;88521;29603;103294;49216;102284;12122;44321;101682;22774;17211;11682;69737;27728;26670;93627;83918;37428;88826;26255;35984;96174;21716;63008;36033;60558;75057;27932;56009;18955;54370;88059;67213;67891;34397;40337;101251;43428;41603;64467;81338;11404;72509;94045;53668;21986;57650;45017;99665;43902;20862;72761;43876;101423;27470;93895;10261;17333;59313;78510;94101;73681;76269;10903;25055;59044;11217;48209;49342;39178;69813;61624;81249;25178;15427;69528;67785;32072;46929;33963;51546;12722;89720;40709;42563;105839;100781;33877;17745;71640;96288;37151;81088;88667;51228;35054;60344;41807;56189;97229;11208;86475;48324;22242;83095;40518;95025;87190;92745;15340;31146;82107;46989;42958;88891;92144;103416;73451;21854;54857;75965;40297;52037;50241;60270;46238;78158;80535;73029;82457;97904;83242;13018;69256;102959;27097;33848;79372;17215;83832;58146;74460;94587;34947;72656;55724;26435;105972;18337;53321;50827;30137;90073;66656;106056;39753;47100;21792;84497;23299;95644;36393;106674;43616;62069;44892;101647;44267;58674;72072;73039;64808;55409;52688;76807;47686;103538;27274;75743;88687;90990;74566;82890;63139;87285;57267;106593;73301;80514;104755;52361;35316;20474;101872;103553;101585;34010;42682;23218;66353;36781;32528;26686;88886;32602;24758;90212;24711;103079;93398;36773;34087;30553;84548;12692;20417;83935;88564;16149;58847;61932;70219;88900;53802;55769;90668;72018;76413;101555;100888;20988;31377;90687;32781;28465;81119;91326;66229;48617;87945;78048;34111;31051;200029;45979;34930;100335;84726;65337;19782;12994;68451;84386;27556;92534;45187;78841;99449;61518;48541;32573;28561;22248;91205;60089;71995;45296;30835;64930;99002;79879;56820;68516;11201;96446;22245;63925;75088;33807;93504;77670;37545;90450;54682;63866;97883;71500;81989;44249;30623;33215;67471;58801;71348;68468;10788;55612;85947;15187;103245;26096;103409;20724;102291;46975;29197;44238;37830;35839;80031;101375;103309;102244;37853;23473;45357;26582;21503;29369;104138;63528;46971;40555;62949;12354;81012;92628;78369;28431;104499;63617;89309;24932;24055;75491;84629;89015;59262;65558;17422;76426;73387;52772;96612;14314;64355;94361;16210;16087;83578;24953;22071;12389;28938;30588;94581;44770;52812;32281;101866;66681;71526;68208;61776;87850;71817;72711;50762;47071;33855;47865;69626;30710;92754;100076;19790;80223;33564;42504;81779;37068;79501;43678;61474;21249;37676;56052;105134;35662;40478;58984;10677;104816;49171;105280;31680;20944;57277;40896;38894;19598;94543;75141;38654;81493;26850;76263;51394;14445;65987;46412;18359;76720;105840;70417;30366;84493;26368;24257;20828;39457;63742;74425;27035;105375;19107;47031;31009;51382;63027;84967;94678;28788;93703;37618;15226;82173;69925;12633;100673;21581;27157;14837;26912;76622;29031;41393;101288;31420;93854;18928;60118;20216;14378;94787;37875;44840;54990;93160;49142;73506;13668;104462;14130;28538;20922;15883;96733;41876;34909;60312;30114;43709;89189;62872;97805;69773;56800;53041;103051;71945;19067;82373;22805;48182;27613;29772;95947;73752;80660;101204;90819;56294;96195;32613;67840;88570;55562;64730;68111;31225;21825;63965;96495;52847;69488;47771;17810;97827;50366;87713;62889;48928;61554;29781;92734;65747;11929;102490;69775;43576;105750;34160;44643;58954;103796;43107;12993;61407;74485;17711;24406;64026;61394;74057;90836;38010;12048;85568;27046;59071;87957;42422;93471;87719;61920;82628;89943;43157;67498;82408;25338;59694;58198;65960;60891;14539;15849;87291;49514;33208;91478;40425;47166;86410;39813;12845;55078;94637;97213;14143;35440;105431;85539;97176;57841;12554;91391;34874;61379;57634;94931;36735;33115;50970;33865;106355;54665;45032;36362;77542;93550;41457;90172;33433;19478;81435;55928;77810;46714;40158;39546;26805;97072;52034;76071;27956;65606;77941;43123;12661;18320;95809;45683;42666;63796;48241;46474;55687;60317;32797;80588;53194;83022;39184;42010;60724;79965;40660;66323;46134;45858;80083;72234;84883;12940;90419;81297;46846;59008;82304;46242;33071;31176;82737;73139;87364;80579;10654;71523;100332;52513;13086;19440;14358;46061;13838;68790;80235;91043;81363;86249;70542;103899;63351;10120;34415;46099;18314;72235;80116;85529;26614;26810;22353;27374;86503;65849;86205;83379;54972;43792;50913;27973;10292;80779;90313;69153;72721;77203;34546;36772;62850;67493;44811;72667;93909;97510;60570;17169;84652;79087;79877;80181;18643;48518;73555;76823;23412;57674;24199;78067;79118;68035;100301;86332;105808;30984;80475;64295;11827;64096;38137;82273;59268;86368;26656;91670;15265;82076;32593;37271;11561;95420;47342;92573;54801;54220;53742;61231;60213;55509;67687;63311;29155;96865;87089;59516;80285;59148;58828;107096;52307;64101;60472;68188;42806;87428;44431;20577;70615;17177;74792;21656;37996;34599;79722;68877;49232;20576;23826;77893;54825;65754;69703;29327;93340;38480;78942;14144;61688;80033;71291;64849;50699;10925;27766;46643;99085;60410;34443;52043;91640;91929;105186;86659;47434;15248;10803;56853;17681;36913;47833;92125;78014;74458;68806;53057;15930;86978;105944;52033;27776;63924;55832;12524;101590;72516;76690;51524;67537;37851;92520;23335;76169;82990;106232;43638;84985;84744;55932;46140;65690;23581;12846;97537;39976;35199;37623;81098;29566;66635;48625;65308;19387;97561;47576;55836;68952;78104;65669;104475;88461;89527;19797;38497;27841;16297;99589;79256;58880;57730;100350;88730;28868;19454;94303;55163;95342;103304;41357;44333;81917;41721;56584;97920;70608;16407;85574;47168;99386;58890;26427;103353;40929;18285;14435;20561;23793;11350;64047;57582;84767;62848;65361;27204;11569;99260;21898;20915;46320;55129;30339;57157;71973;57381;60398;18408;47070;99292;36705;92463;38451;13491;67883;75288;58324;70194;20602;26774;52665;59013;28495;20972;97404;68242;75216;82400;84062;46660;26332;21750;71044;39286;39252;85615;68934;55985;103671;102873;54513;67648;59731;41411;87806;77305;79549;26752;29850;70945;73539;106957;78537;60257;16014;78667;69969;53083;51026;90296;78521;24730;15942;28042;76041;21567;21821;78116;35271;55656;37079;41578;81695;104618;71801;58980;28215;43620;71449;88553;87922;25674;94367;81800;79264;77486;61723;11276;67991;26076;93744;48922;34799;25197;52098;104318;60476;19983;26276;56356;28178;89636;25958;28479;80854;16244;72537;55293;29983;17539;53154;42344;25078;106642;81455;85591;89606;87541;55137;89794;32837;77650;15868;102787;105698;64854;11093;80915;42994;43104;62574;20049;58092;44163;48354;100464;105404;101893;43240;39089;73148;42056;66917;65952;79426;55772;45342;55120;51919;16012;87310;49338;50494;82556;84905;68293;62477;23824;94128;66509;58607;55034;29419;80710;59818;99793;83640;60409;93712;75758;93639;54115;56697;31402;68049;51104;74353;21368;52622;101550;75713;12800;55478;13979;71319;60155;60364;105904;28893;97793;86704;23465;44919;34225;79333;79024;100511;39624;56661;58562;83668;44103;51481;18997;78905;88953;88622;26901;102459;39592;30981;40171;66405;80947;35616;23719;96128;88586;22942;101761;101133;57145;20414;85995;41392;38972;73558;12634;31795;36131;39051;56934;38670;11581;36921;85186;70700;62853;40322;97664;95411;15098;46244;83164;19693;45937;46387;105094;96076;38689;95681;27749;58383;73109;38489;76908;82742;69474;103427;83261;82012;22878;57776;85318;105556;46455;61186;91209;31200;103662;84748;17835;24652;49472;42508;90775;52082;71838;39742;26007;29797;94448;47010;79428;34310;36248;104753;87467;57285;53184;10416;90921;42468;22193;70541;44615;39097;85942;18463;47432;25975;40290;17254;90164;16695;72350;42862;53408;23452;99082;75271;64867;31147;51269;79505;70120;17262;56492;56957;29550;64104;63131;16427;75571;70528;59606;55115;103768;15255;41769;38100;75799;83448;61877;97355;24452;23813;34308;52434;28275;48621;27012;44068;17369;88425;54733;38788;77173;62740;92119;72950;50887;13367;79349;73030;34746;40861;104773;85482;90800;61409;60725;105249;48495;15642;17077;28157;46357;32352;36502;23238;69978;53487;103458;75937;62918;79302;48367;30711;106062;59068;60757;84949;88582;29118;101465;77050;74711;49561;37664;16829;37696;104690;62844;83883;13440;87773;29698;200015;16079;27048;15058;61949;18963;40680;38773;88726;22314;32248;42015;30345;89446;95777;61627;43920;26904;15417;39320;71305;62216;91843;11563;55805;101549;94440;32300;76174;23571;58356;13763;67299;35334;41836;37158;53407;56473;103578;103516;31796;62692;19687;49077;29162;93279;70724;62130;49865;57853;10123;51428;92631;82680;70234;50455;96345;49161;10551;21113;95898;52670;86024;46634;102424;72492;11256;93049;68370;96662;25680;19882;88766;58057;68829;26604;45301;25648;18240;16328;37043;13942;36993;105976;41158;97933;58056;62587;19000;34146;43121;79339;62443;63821;102554;40517;74212;60357;71009;96388;24186;68815;59754;69674;39350;68061;66028;48874;38392;26224;101999;66980;90307;76652;30234;71402;59934;83544;47852;53013;83709;90912;78880;55745;68737;84385;48486;19081;14977;96883;49623;48994;104660;14810;15321;52003;18443;94697;92430;21504;101344;105438;88955;17144;54118;45971;16171;18163;102263;91301;40181;23289;25983;88438;34800;82271;15446;79063;80818;96593;68811;63521;75203;52589;49297;102925;59910;64278;70686;17591;100280;43687;65157;35681;70658;93981;95684;56709;93185;66228;25737;99734;34596;96476;67979;70520;19338;56947;78491;36206;61016;58756;65613;78223;18560;62186;50010;93669;38604;36055;31678;27496;100523;105867;43455;61454;85772;78263;38869;20762;29748;69896;47281;72437;87148;102502;77258;22972;61098;67466;27066;53739;85262;68710;24550;80096;59319;42547;30901;11345;27324;26120;40832;44311;28992;30419;40155;99727;70147;87702;76541;10970;51300;101454;70352;36103;99087;81074;73862;91054;22701;71657;10886;30654;40447;40794;53773;23324;52486;32658;85273;66552;70813;52346;45211;33608;99508;66133;26745;46161;97915;48327;32826;83274;38145;28908;75552;19849;73943;16039;75348;52888;23103;23865;86887;21314;60835;92266;79994;92769;15877;86169;93132;82085;29618;35309;60095;92066;82966;39259;93288;14994;49043;38474;64201;23109;20052;17540;78017;54031;89836;81682;99362;47107;81658;34305;34626;21061;56343;12674;95604;11310;14528;77085;15857;100448;101996;89365;16692;90899;31214;27313;96307;93357;37279;51001;45427;52968;87103;94532;66140;86002;21862;45729;62307;77395;54027;31497;92606;14122;79471;83415;93028;43847;102937;37773;69197;24347;73655;89733;32501;18500;89210;79189;89086;36279;86976;82534;40490;16562;74155;23802;13412;72429;103225;83682;66932;63170;15425;38370;21172;10895;26829;45980;71798;55570;88890;35532;41488;103751;92605;33810;88816;101971;35399;71073;48977;37338;80356;34535;80761;65616;73238;39749;94356;95437;36636;74685;15310;44030;39591;66646;97754;61849;36476;95729;34435;63984;101577;59205;62779;70316;95798;72937;72693;77124;50126;13912;44284;75544;107116;19592;20457;23864;83197;51519;21904;32812;39422;34067;66502;71086;20450;46020;28121;67536;97336;48377;94501;35183;49235;78478;72727;74553;106561;91911;72573;62694;29980;88134;42717;15477;56139;75555;25893;81957;52845;28770;106699;34253;27093;76760;76859;46893;101429;44131;46310;22944;60653;26449;49579;72221;75962;57284;82559;38887;32350;34951;78807;93515;92055;63007;100180;32076;36337;88775;82059;84817;99533;58644;78809;61855;32068;101683;69984;42173;47156;24685;99878;102710;89531;46541;15547;86314;24063;23678;77748;96237;50980;25300;101957;68372;15929;38693;78217;14571;67115;59447;30517;92025;15706;70840;12215;52754;13158;43702;13340;11684;13127;25506;92315;85512;68722;84210;88691;105157;77977;18379;76094;53654;93390;48733;19948;41430;95045;83580;14804;47636;55829;70390;60654;46706;57917;59102;60948;19905;31074;11338;200046;25428;60058;25829;21549;99558;93389;47697;59083;105666;72032;102442;82126;52283;28164;45704;39317;34502;54206;27131;13193;25789;84983;27480;93506;87007;104882;51810;26226;36824;63610;97043;20043;20845;87721;96063;29216;91944;64441;12088;57589;52223;73879;70058;22133;18751;42237;40846;66019;51671;103713;83956;85906;36086;102489;102471;93499;20823;11834;52994;28247;100948;59431;26903;26502;79812;103887;83650;29909;21667;76946;64857;84912;83106;66179;10106;85810;24911;92309;22370;93778;28954;86536;44606;21447;89512;35481;79488;16689;63825;70177;47663;66940;66120;72441;69824;59288;24881;101698;28948;53754;11057;17495;96504;89396;38382;102725;86578;99094;106795;36419;80699;59374;92267;36252;45550;22416;10142;76300;103679;37637;97734;84071;94520;100480;57156;25311;80252;99306;82943;46160;44619;87777;80986;24570;16083;94140;83620;105633;70380;86302;60303;66272;100044;95800;15727;44340;55063;34656;90992;53890;23567;52762;68659;35258;47290;25979;13398;70363;63547;81760;41711;85001;20803;35347;50230;93246;60669;84818;39479;72483;97190;11097;68628;87624;29684;28325;41348;75084;26873;55334;41647;42392;34114;85775;70921;66949;15936;100355;42657;64583;81513;43864;47274;40252;83458;50866;64332;23476;75222;93485;51081;18558;33436;90488;45332;33312;81877;26639;68466;56749;65107;56603;45463;41004;57413;49706;53208;64587;63486;40991;104442;55588;42075;49628;75383;40007;31791;21414;19661;93935;59423;16601;95581;74601;62926;61085;26412;41787;74005;67967;28884;73993;71713;17729;91060;106740;83154;50719;88574;24664;25971;60232;83343;44372;62845;102748;87241;41845;38242;104556;19691;38938;78034;32489;12855;62224;106250;100560;46113;33324;34350;104488;42655;42397;41339;25018;81332;25323;15315;49054;42543;67865;95790;29386;73066;76812;85739;51125;11339;18617;27430;49476;43247;39276;33668;22153;43605;41640;103598;18257;101955;59264;25743;72645;37369;65098;70245;101798;31403;68953;63641;54999;70717;97841;70367;42434;43884;43700;10486;87046;51804;80174;26353;47008;70758;64114;38391;54875;12528;59858;66723;99463;36831;89217;82703;102076;35924;67085;73481;19826;103776;12718;104795;91103;68289;78664;36136;57505;42334;10072;93722;64489;94552;34574;30176;74597;60237;67135;52523;73205;50324;19910;103825;46786;59192;104552;82244;80248;35314;38165;64255;69595;33819;16636;52315;64605;49165;32928;10840;32626;104293;84371;28950;40063;99498;37419;77460;92897;55465;58803;35510;86949;64741;19640;21546;81192;70570;22382;16372;70186;99204;70069;80286;43241;42880;106796;78760;102341;62653;58554;94943;38991;22724;22425;44506;73582;58730;99023;39318;22095;64885;45173;35708;48212;16758;103761;81356;21831;57637;72448;56320;15650;14334;58355;93570;54803;104147;83868;67939;81216;43783;44162;47109;88783;54305;72396;86335;13132;34288;68308;44296;67196;69193;12230;48506;52591;81111;25937;61403;87365;75073;32481;16151;76939;31851;48193;25941;67677;69973;96461;96005;31494;46712;81549;56636;10975;105155;106007;86811;89458;80092;18480;29872;66468;83275;71525;105087;105168;39105;54942;90492;105629;10714;51439;96105;79278;39870;52096;106743;40411;63395;31763;69406;15003;104718;51048;32592;65251;83444;11770;63671;41597;46094;16912;49651;51263;45401;13068;99297;36625;102897;80817;69532;19446;99354;29133;80782;100288;10989;48386;48420;44195;27279;52567;30178;72757;96399;15921;29046;63741;12986;16468;81092;51885;106198;45232;28779;24268;74715;10814;22415;62284;46431;33066;102419;93628;75910;94737;103659;93033;75789;12045;25542;21112;82153;46476;106526;14328;30330;78119;51000;30318;34008;59290;82328;18686;89786;80553;89359;36125;62562;58795;44251;56191;97297;73519;14257;28749;91728;62118;88604;10752;65409;61283;74889;74816;69475;52574;21251;84677;28815;91783;96531;85826;44549;69331;49620;95993;48688;29025;61177;27693;75462;31422;91442;24510;33719;61292;63347;89148;59544;73486;33928;86907;72301;29120;50049;11480;102379;57367;44625;65592;34716;11919;89596;37318;99459;46307;39230;25285;94109;31350;40918;77090;64072;14246;105512;49487;20359;10569;63588;15575;72789;24982;79991;102507;22061;14287;34317;13228;36284;69899;18393;42024;32891;16925;90690;48459;59441;73721;50020;105918;32394;17347;75461;55809;100122;65284;96791;28792;32237;12376;18433;41857;101461;78962;75206;103894;29858;97054;104749;55196;91247;38757;14082;30098;15189;69434;56514;87237;86742;87018;42433;35019;82036;100073;54416;93112;94120;58397;35320;20036;70385;24688;21111;40077;96481;40352;58557;94394;22970;61269;104406;85659;29282;42607;46663;23992;18545;93991;88778;41634;22740;79732;38439;47862;60296;94927;15473;55451;106070;89511;36520;58071;17444;104655;45037;66456;27745;41883;27885;41551;41286;61303;23674;48826;85506;73149;71887;68010;37964;57963;75479;100902;14959;67944;18361;33246;15970;65190;66938;101558;33581;12920;93149;94875;94041;96515;15899;42642;48307;21311;13269;86658;13960;77448;52934;35683;55603;39115;105340;31207;37603;43852;71853;104057;86985;17522;26133;38779;54763;36639;60113;76971;23633;71272;40574;74068;71247;59215;103196;95650;85502;22912;85474;59930;54470;37339;43175;75074;30861;63770;41453;83944;89418;82197;38196;57646;57693;73922;75340;74739;55715;83679;23625;83840;77768;102681;93740;81134;43710;95570;99361;72563;69290;30106;69418;95869;21276;36843;56488;45291;77970;30908;105024;23874;52401;46067;83485;74524;42131;82544;65137;64565;89100;53060;75770;63849;23883;15496;37309;104929;62211;30669;89250;44108;67132;22120;15389;52563;47814;18987;78567;35068;99736;73749;24306;65811;72825;21467;16948;78368;49239;42044;37844;48211;14040;48246;18042;73210;72453;106400;65634;12415;11412;51010;86473;84327;59352;16127;11003;14016;47034;36936;50065;78680;99706;59114;91795;18748;13061;94314;102625;18424;47772;50083;101687;40678;76090;64710;89577;70762;49302;23339;96145;10286;24304;97414;64014;16011;21889;66820;18885;50438;91723;47148;32725;48166;18353;21258;68291;104336;46119;46686;73777;100575;25684;101800;73259;28311;19883;49508;40172;78594;79495;104706;53987;81083;86318;41997;71982;65282;101084;86615;68505;94309;18448;19087;55705;99837;59188;21040;77125;41945;31798;91080;50404;18854;92254;69513;61740;15134;23607;29837;55934;33613;33428;65020;99239;51701;84547;49127;22911;70740;90311;45497;37440;45541;82961;96635;50878;60538;31816;53792;55996;22757;94422;21613;84620;15345;53044;63397;92981;14633;15901;11716;53561;12883;100238;57008;62275;45537;93333;58639;52124;89039;86744;95002;55267;38121;101400;58522;21306;37950;62950;36291;22695;53810;87796;11840;37096;42701;66943;38659;28627;53122;74982;16932;96466;71780;55872;32841;85296;15534;54572;35389;18974;105179;18190;81343;64207;89072;16957;49108;35538;25685;64518;17332;54523;58225;68263;58380;19656;23566;71463;22563;77598;75212;50220;54877;88043;94711;50763;57034;21133;39863;56312;31479;91006;18085;15584;32851;30428;71468;22526;74224;23017;11048;80379;96648;19536;93072;61064;25508;72232;75108;26820;86519;73150;27988;91218;105641;64916;54809;81185;28031;27591;22355;66668;86712;56437;67588;88475;50511;106711;95557;22487;74903;15207;86021;55258;16553;105935;45850;52071;103034;41450;93907;87441;91431;49109;104516;39475;30434;42020;44659;67089;11548;30673;28259;37876;61913;99742;35126;66920;89692;81860;41818;73665;37703;62983;60844;28511;12988;71721;77959;66173;85229;23919;64124;25287;73001;81679;47179;25380;74126;81828;54100;85390;20087;88495;14936;96654;93292;19205;24160;40983;54897;73474;18275;51940;27623;92889;102047;59273;86049;41811;74892;40852;101821;61498;61370;97441;91641;22149;89860;14490;80971;99893;20007;94961;94658;45799;105442;92022;53180;65587;36089;41686;91310;45031;49545;24639;58278;11513;44844;30438;74169;30376;31457;75142;74073;11136;76678;100421;95320;200088;17102;52703;106976;40032;65029;36702;73921;49337;45280;73404;52802;60275;47038;78043;103182;100526;34381;103077;38153;41380;73696;36894;30889;101942;105211;21463;22556;68172;70423;64539;92321;77319;33915;31311;73634;91674;104371;78554;65529;85981;32065;55994;44499;26488;103436;105762;69219;13687;30760;74551;57373;51038;200022;15549;34297;47277;45813;35509;32615;64347;101246;52678;19789;70741;24888;91268;83217;39140;22565;50037;16625;85963;53356;69053;19168;62414;46005;18843;47903;77336;14174;77387;67696;77677;63136;75008;89637;67114;90137;75345;27604;13298;70365;64077;69822;21096;105401;89661;84711;93366;21589;85364;92285;94145;46689;58029;70487;62907;81046;67485;84811;23965;89198;48520;94441;71369;86196;28994;45500;57467;24455;41451;103591;67394;103661;79907;52134;26923;106523;106628;49678;33264;20063;23323;59732;17559;95899;93739;96193;37856;79655;18083;13968;29644;65056;20637;66416;32274;21701;62602;88020;28713;27388;80756;56662;30736;56181;57683;83642;51119;48414;39187;51846;23319;12746;84466;84524;90464;34053;23035;38762;61900;97070;88615;35689;57785;40279;73406;18884;53080;36514;31306;21109;14701;100203;80454;22377;20174;30470;12390;105680;77752;75581;68697;38892;57191;27150;16512;96895;64034;59353;66168;58807;83858;26088;80920;69729;54116;99843;21285;86170;60295;103915;69281;41782;62389;40610;57419;105050;62546;14765;52503;86930;16820;70221;12262;20070;82148;52327;102719;21329;83303;58412;104785;38736;65781;20641;58616;103242;77212;14492;29675;102476;49219;25377;63415;16291;52372;86220;104492;12546;35994;54630;77214;64438;55053;38859;29878;80622;85943;104763;66040;104218;79323;20930;21912;62764;80284;73207;56664;44366;23464;97939;39465;72680;26575;16885;11309;85702;37334;80717;35245;96314;55244;46038;60589;92178;82719;46401;21677;41610;28548;51847;19435;17635;81060;60144;106896;13302;61390;67675;73764;100565;18631;81177;68262;83279;102118;79424;90941;35337;49933;23022;37312;79279;19649;24397;73722;63623;37860;15573;53132;46095;90676;68574;61669;104444;63910;81766;21637;47420;87286;88881;38366;99623;21806;51550;17590;14055;25954;83970;83201;31365;11090;44237;83615;49284;82570;81180;73251;12054;97936;46730;104308;25461;10024;24049;84419;74442;32323;19251;76535;50735;39053;61218;42085;51767;34042;20981;38184;87005;84706;21953;93036;40331;105338;102213;35921;13543;83200;24019;85624;104932;59469;41224;78529;95909;10404;72151;73488;83873;60549;75617;85160;102506;92707;95763;15264;21946;60380;93995;19906;43951;79095;96637;31640;10034;10499;72639;59095;51096;18507;77498;93574;75733;23063;93198;14480;88532;28871;71156;104956;53656;56430;89617;80404;69209;28923;35223;47766;38699;38035;65835;23799;45314;55303;99118;27370;26363;50190;95734;22339;53972;66908;57268;27257;86056;57771;45940;27853;73103;40765;63500;44556;89774;15598;77858;80130;90484;62503;87972;61689;85409;105911;56102;100296;90275;33385;89491;30634;76274;48364;20074;21748;19506;96592;14499;22813;11792;18660;17398;62264;20719;46747;35605;77480;77509;97600;46228;75406;96680;93664;47225;88741;85718;23897;77456;23186;22494;75342;92232;28828;74528;79788;43727;105253;24563;55596;79058;57667;30276;23365;38438;32545;11333;13906;100824;18665;71528;45951;93045;89392;45198;67737;42119;80859;47691;91612;51277;41386;87578;106267;52126;40309;12928;88879;11736;88153;37934;97401;31500;95037;97052;28782;33267;12375;80966;35066;102248;80460;99091;68473;78321;105301;92358;34260;39565;14484;70571;43516;81163;12918;55182;45892;45180;19396;82625;72381;33453;20727;15726;68546;14085;81688;73107;79175;75921;22981;100839;103882;72983;59715;22392;74542;13534;39345;46529;49994;76729;33948;54770;91689;41760;59411;89955;68460;71606;15571;74638;93720;70435;50221;38532;25494;42320;92611;97607;67428;75326;43531;66203;30164;107081;42992;58893;83908;18266;96401;97210;15711;11856;56792;15081;31459;62061;66779;83484;96372;92171;79076;24233;54398;88454;17652;87460;70865;32860;88961;57390;33369;74134;61121;36455;27474;61784;76711;96477;57578;52918;66746;75032;59221;16495;81850;39082;36568;19542;78564;52426;102266;67690;67914;54232;44848;56631;41728;74364;85381;51309;31278;60728;103066;29605;69874;94806;39110;93514;26360;101052;28027;30747;52542;81207;100841;87385;100912;26330;55679;83730;93071;66083;36430;89129;55641;22647;65342;59440;27780;34558;36311;44638;39807;44896;71061;42590;15812;96490;39167;79984;57389;39219;79558;12889;25616;80885;15103;65436;86944;69478;12499;33279;66877;52433;85734;24552;73366;92784;23762;74932;18308;90016;69673;99083;74654;54816;87197;24831;12367;83205;84239;46570;51749;49889;78307;102016;87169;27080;44245;81543;50581;101575;34285;41648;90586;83391;33427;106108;79179;91468;95915;10185;74825;96768;79935;45722;23377;43495;53899;18033;50125;44022;44198;60277;15646;53658;25332;29756;49259;70211;106650;100500;89928;57896;26809;10451;39816;50236;42544;57023;18977;65000;97697;32492;22345;35466;22844;46505;78795;76517;29710;22808;57245;13286;25195;19366;55841;50815;99697;99400;23789;106565;84913;40187;19394;51471;13868;56115;96699;44624;103437;34956;72172;14479;92956;90159;73339;68023;92136;57635;77720;26473;85352;83759;23937;43997;32843;71405;10820;93955;21615;89500;96256;55962;57494;94229;22907;73323;55888;19610;11632;27609;76007;11129;43366;100910;80703;70734;42858;57039;17519;47358;40320;94138;95500;101759;97863;32215;38315;23172;105897;89283;56018;50599;105744;75149;77922;52332;62685;99794;61147;60415;83222;96240;65734;50030;83628;52757;75815;66529;43845;17070;105737;34494;10518;44205;54933;10893;89390;25330;80437;97391;55998;38316;51192;24863;71910;92235;82230;47063;94384;67062;103178;16463;56920;23403;50541;102136;24293;75256;68747;25341;89207;78710;69343;59969;23908;37848;106783;65971;18800;78543;49357;39253;77966;26799;73645;61673;36871;39935;59039;43947;85178;76321;11794;13516;66370;10251;83922;49871;95636;13726;101272;50227;89704;102557;54695;67165;26535;92180;25630;80089;54525;70445;74644;81362;70928;38802;80790;45029;70918;49554;104268;41822;68926;93285;15460;64506;36852;36210;75375;106609;53120;77960;99632;38314;74319;62467;42616;68079;22228;51396;91357;83711;42352;11466;92742;61539;41651;70988;32732;21244;23293;71683;27584;68756;97789;65725;50130;100147;61785;43688;52086;53786;61977;72249;62852;23273;65128;77721;36756;78817;16575;59175;33028;34082;105635;23736;64392;42944;35243;54950;61214;10411;44057;40140;74562;25020;10794;41280;99016;25192;21794;20395;53808;103912;103523;95907;88462;76067;80898;28336;89875;55946;15209;44447;63769;35250;94881;79363;48589;77301;27052;79601;65031;27099;13145;90145;33092;41237;18471;47867;69675;20954;97226;28007;78163;45303;36613;66135;48629;72387;87366;80407;87778;46909;81105;14368;87483;22090;41075;82340;27541;45336;31875;13790;23379;97288;84922;40327;75710;103174;51504;72677;67671;14885;42770;29373;97181;82940;83359;14544;22304;97787;63907;79486;48145;16715;58733;106132;85069;97532;80441;51167;72513;55919;61606;92484;81624;105477;83696;53200;82216;10005;86878;94389;82867;91194;35270;105568;97784;102876;51215;38266;94055;97766;66612;31014;80888;84193;68416;94333;58534;21354;88828;14318;65106;32567;40637;95515;100791;103243;85541;59165;96312;78902;46467;85351;80807;52073;28583;85726;32879;95621;45879;35848;27200;79603;69380;59200;20754;40934;31090;22501;53420;57254;51933;65739;47098;51188;103071;40241;66715;35565;48297;10352;77055;83280;20560;21218;76893;68590;87771;91475;11774;47199;107067;53094;37008;37416;20942;14012;94990;10519;101782;24524;105667;100447;42848;68091;75310;44673;54223;45975;54044;64175;92421;82331;58715;47044;21995;32550;51059;35740;72706;72200;77857;73836;99203;92834;77679;86236;47549;44229;78801;14313;60546;102966;31603;41092;91707;61970;70419;37631;86748;44094;81100;57628;100328;73596;58138;54820;103195;102206;36027;57041;89380;37924;69225;58168;41515;25643;47718;29164;64185;62969;32002;99896;42301;46328;58785;30542;87755;64226;53998;66495;30907;91715;85328;87416;16300;28873;40948;23575;88650;100492;64197;60091;58482;64600;15314;97899;70607;97848;26180;91317;75402;38686;95978;86281;79396;83308;33683;63585;50096;61773;62210;102300;24549;27128;18442;93260;46050;15513;54521;30936;78411;84126;62093;15944;97623;106208;50915;29270;28108;41271;24383;31261;100262;51927;71380;34858;13365;79851;68715;43114;29529;89613;104958;59674;48250;62142;50668;105618;37544;82878;32037;72299;92169;101913;73078;23194;78767;33859;21220;49932;38822;64058;51814;72735;81397;37038;43984;24997;10929;66218;37955;95386;52969;33191;82448;35053;81982;65674;40762;84195;74473;42067;65544;100035;105613;58613;20038;64327;72605;71865;52581;73275;99370;44587;90752;50845;38455;34585;106436;83648;69943;64324;90758;13999;88956;13391;76348;16691;76586;53404;41301;73934;100475;30667;56442;41492;80998;103341;37265;60798;60562;42176;19841;104400;61764;69296;23482;57523;13234;56735;54392;28054;67647;33761;92711;57417;35967;85017;74413;47458;95923;105118;58876;37125;63142;76811;52403;49565;36147;58581;97980;87083;82677;63259;63757;42837;16899;58232;75137;61828;62261;57260;79157;66693;41253;106068;35622;104364;97771;77830;72327;71633;78509;36068;35764;71991;45611;20486;27466;67464;14240;24351;83128;68766;29766;54052;59524;34078;77013;62625;85038;85730;27649;54793;82466;42999;96085;89172;51156;96514;54725;52505;62975;25704;103819;28085;74897;16802;66252;13891;96502;19635;27587;28096;60506;47889;29907;53006;33301;51755;47033;21099;17691;63482;43566;45137;58304;25831;96131;94975;15629;32041;55861;21728;77660;83236;107065;36778;89865;12890;86837;38937;87858;100845;32856;43841;91260;39936;24979;65154;25739;65104;77800;93381;19816;89167;94023;40175;72792;100438;91282;68653;59048;84792;72310;52984;39607;71008;73600;55237;60287;92173;16354;51736;91601;76742;89810;22690;81626;12470;54982;50746;106753;55055;31932;49904;100765;78547;46311;17153;64678;49768;39989;91494;79200;26315;47072;96149;13339;92384;20182;71203;27269;75812;75599;74956;100820;33551;56065;36538;85715;95796;27813;67524;51787;97604;76450;67538;57887;66964;71400;38509;76892;46963;86617;96194;11206;29508;105988;72763;34554;45878;45664;45227;13362;71301;17707;105745;16613;44772;44433;76910;40118;32081;16623;31887;22321;102583;21305;91270;76689;106932;84929;48665;77693;10070;61476;82900;51126;19424;84754;55783;35396;20000;103610;59354;14266;62660;19504;57338;30310;14421;48380;105336;41262;78233;56719;75485;51122;20274;72501;85610;33565;70591;35765;76353;94118;31868;99480;63396;93326;84456;73370;45324;21630;72273;49936;86543;95658;33185;15095;55143;94495;64714;26650;38061;44660;41019;88863;38286;33358;79092;77306;100998;85556;16220;64131;53584;64667;37919;85676;94059;45931;20200;105697;31060;94047;47816;68409;82749;37770;68969;22837;34023;16652;76654;18338;29774;26356;74027;83412;20044;93724;30755;101449;101279;79360;58173;46243;25100;51661;42813;61901;86081;51021;70019;20058;70125;62075;42752;60524;93931;61468;35550;100304;81733;19412;79773;52171;28614;63537;26584;16422;50532;42735;60652;47027;63484;75906;56171;29583;104875;105774;35646;72298;30929;16624;32966;23400;71485;12837;72386;15528;90495;48312;15898;19561;62047;54512;20346;97569;104309;33735;64637;69946;34194;11039;17658;29066;93344;67153;18382;48347;101580;69770;60164;80429;26691;89672;104286;88824;59739;46210;42360;104088;56715;73803;77403;86706;57318;74662;21383;94688;106921;96899;48208;80036;60739;51336;104612;48306;103247;10567;99064;40582;99268;96928;45874;56627;21425;60486;60297;85136;62894;83496;55118;21217;16591;62103;83245;58483;94511;48823;39961;67266;87150;104903;60013;64552;74592;50999;34879;62707;91748;29864;103265;40101;49002;19145;62105;76681;60259;89029;17698;43352;25355;35624;76600;53552;25746;96344;106129;75737;37878;102772;88635;54124;13852;71681;96756;74541;39828;104788;41190;73160;50565;102964;81726;91389;28231;33607;64520;52451;30356;55631;92875;37303;26740;50114;24638;79139;64969;105702;27967;62347;87900;106259;104861;38427;99864;96445;64924;73960;17699;17115;23593;21988;77041;97812;76033;85593;79882;21037;10935;26579;91964;56892;21420;62615;84997;31731;19391;45968;23058;16677;32993;30602;69113;53812;73102;96103;14176;95543;104789;40050;74730;58291;50397;105655;71034;88571;96728;85429;90239;95292;74089;25581;34881;71467;27404;38645;100764;91597;88628;18147;14370;36176;39181;94174;105309;91915;102308;69112;44358;12279;20812;56865;30078;41567;76898;15848;45898;102580;23344;72097;95541;91187;59793;79977;30678;13582;105370;43377;69533;101767;72495;90069;83180;11630;20154;52715;35953;69915;70307;21143;29182;72574;72506;24212;10978;19079;47159;44906;84344;71092;88436;87785;29638;68723;71382;54034;60573;39179;27529;67347;33418;101409;99522;95331;32981;58679;29424;99265;25566;103932;97673;105948;69151;58768;36512;55404;51286;33304;17651;83083;96857;54269;40546;74742;36363;39438;76834;19144;65678;35568;27385;95966;29318;62159;72934;84163;55368;49707;65561;10578;26506;42699;87219;93231;103188;200055;17066;74276;65148;30931;43456;74555;65911;104709;43522;58986;51616;59707;32196;37268;57736;55835;66780;47061;19651;106953;43980;52012;106214;75855;99965;34961;32070;26389;50204;55150;103968;59128;37626;26891;40629;54210;75880;78622;103556;18833;105353;25898;97436;52005;31374;85585;41471;42139;42314;81229;45526;92940;14048;37426;77200;14145;23760;103219;22403;52496;64665;87259;101137;38838;23183;39764;55132;82257;92538;11100;38361;33475;88732;89397;33455;99202;28328;87666;68109;94565;85687;35626;106983;99536;52907;35517;80690;73626;18296;34673;79199;93599;72633;95970;34433;45340;23828;48547;32538;106345;17466;86795;106358;82003;93425;32716;34295;103450;94940;44185;59147;101873;94867;62668;13764;25854;83374;58891;85399;16209;77150;59025;15191;100569;45045;78534;103728;76358;81217;26010;25522;71215;43636;65256;82386;66601;41788;30918;79353;103403;20318;10566;62507;15840;32952;86624;24419;27055;70929;34139;80080;39611;25688;66331;47790;53278;71641;52641;37899;66591;53865;87594;77378;27915;76119;101867;75633;35211;88745;46756;43402;80112;58852;64453;91114;80071;54577;19212;83062;42519;75748;70787;65865;77007;65522;47625;38550;95318;72198;47520;72568;100079;12272;78757;42669;85728;88742;83268;97937;27495;66782;30394;38987;58186;74180;54083;103723;36000;12100;50279;54008;58424;66554;87890;68419;105767;36197;81487;104917;96775;19148;29777;200035;35176;39653;41535;21496;20297;45338;24554;35112;28608;99246;42868;13919;29053;28493;66712;89879;24925;68889;104172;20936;81347;56270;19976;73530;55202;46062;27241;82410;104478;96708;56716;32240;95034;70331;50903;95380;75330;73272;64661;14821;104332;39913;86336;22299;34352;52617;81245;97750;79529;64440;33981;97584;85450;85041;15100;48970;28774;83471;11678;18284;57942;81972;14620;85080;89067;24285;53114;64865;44420;60920;55036;22730;54214;55881;17439;57100;22590;55304;29633;104020;65883;36920;30372;93684;99466;17179;81729;84094;29070;18432;78110;27653;14628;34602;102311;102703;26537;25395;83150;65673;40454;36876;34952;86152;48576;39671;34933;56345;36441;36085;27762;62988;19902;60298;69045;75072;39504;23215;55866;62450;55931;90245;47155;46415;26260;104007;12417;96991;83321;34880;47373;33842;22916;14567;24823;81161;57070;95723;68538;101656;71803;27655;10912;106018;81759;55755;89811;34144;82152;85514;17807;22546;70315;52761;50681;93409;39889;70913;14126;63501;62176;76058;87204;100144;102569;51459;100281;49809;87718;89581;99232;46842;54774;66543;93694;55794;27597;80833;76794;90318;44124;87120;82084;47726;82958;78654;102733;54517;62496;72113;94613;32642;11820;104393;29112;65891;102673;14767;47214;42193;86443;26959;61781;86248;29703;100636;23528;85309;21058;38397;27548;50095;52527;21043;68740;38708;77087;78475;102121;85663;23142;70397;21528;82182;61368;13853;68654;10561;22270;44318;100521;94835;49812;57569;68438;105610;35772;45715;30589;102693;39581;10922;75644;13718;104734;24974;94551;92074;54364;83227;28772;29480;97524;69426;77607;45208;106099;64194;73895;90082;17389;19093;56938;88765;54749;14511;31821;52175;102608;89112;74363;26947;45417;24370;107011;21760;59624;14413;49926;21740;11795;33500;36914;68566;84183;94226;26565;99791;26541;82195;75306;106083;72291;89330;62868;49397;44604;22147;86407;56857;93018;45104;91594;33944;20141;28449;104610;34870;33897;34372;94244;46355;17526;69442;43349;12867;57305;49609;10019;17630;53651;44810;35463;58914;34503;58470;101774;18732;31677;103854;82764;96501;19333;85129;23231;18860;18080;69473;44528;90710;37825;99125;66062;102042;11166;77628;97715;100514;48805;42512;15639;102643;20187;22685;101802;103816;62327;93512;37915;92963;54834;73034;61113;35356;13418;72734;78242;55497;50452;77691;90883;82455;101425;47510;38127;30715;23900;66055;14112;63160;107109;83439;65446;12717;70201;47132;46167;47677;35074;78993;10730;85528;78611;13730;19795;23280;84082;41467;80845;47767;90749;33878;89539;74375;94477;51527;104910;78464;83976;81030;44792;65499;43547;104497;69583;38573;77926;17312;14555;91698;38193;83057;68924;105779;55711;78009;99600;87379;96229;63961;55502;26174;23317;99927;66285;88625;35655;13660;49860;13565;90571;21340;72840;106043;61880;35365;31087;10750;92596;56839;19577;83508;17193;81324;46042;35833;101475;25756;85376;41698;103244;26876;24301;15024;58275;13525;45329;10156;37587;29735;80892;87346;84618;19583;72896;95888;106127;87988;51931;52705;13041;42900;59282;57874;42099;97447;28955;97316;57606;82744;19234;87504;69338;36740;68567;87502;105965;25127;83038;59770;65771;43904;77732;12927;43797;39933;15739;16520;69249;70737;47102;60970;75197;104918;46324;76447;24802;34903;65325;63875;59427;88512;27628;77413;60175;85815;57904;14714;19001;24039;48522;89384;78712;13184;80494;39378;73009;104198;59513;24815;48235;62473;79198;89211;96443;61643;67159;94945;72938;83997;41398;70545;45651;43464;39061;48903;76828;28613;14372;27102;91500;28340;38818;42277;36817;22093;57501;67058;104733;83234;78467;105271;40565;89474;72379;93518;22191;44796;78824;24437;91983;36309;16609;70638;60537;100701;89242;10366;52249;22292;44882;12281;24385;104685;83053;60540;39048;47001;30093;49788;21129;106256;66097;17079;22492;50590;74335;33704;94547;91067;97590;105176;18548;28051;69157;45177;33636;18404;76387;40987;63324;10307;90116;104343;106159;94168;58164;89120;102969;32681;90072;104171;22244;12451;34580;104317;106215;102276;45064;22987;11910;70476;51414;42702;79127;31987;99707;76657;54170;29395;46051;40890;95306;68495;102017;94185;103382;94428;103475;106516;39175;77831;45880;27158;100983;40708;82357;83737;42734;64342;41509;106261;97875;48379;95900;71370;30019;89159;22468;53997;61771;62592;77740;67950;42192;71234;84445;46922;53920;83186;89988;27069;53836;24088;87770;62349;45784;21134;79973;83199;59550;62582;23399;39848;102687;19483;68099;96688;45081;70126;102319;92307;39088;20783;100465;35035;50955;95895;55263;54446;64812;52738;62795;41805;33648;29626;29238;38793;64070;92487;101484;12925;16383;45920;104954;45265;103722;43679;10860;83917;81141;74680;96961;28934;21313;103830;76981;88870;31444;100017;73957;59463;16482;72869;91369;92916;54694;84317;40088;74949;97183;35884;50561;31931;65980;12330;81464;45655;69386;27670;91577;25087;32468;56974;17809;39606;31477;85869;21010;58832;105995;53089;28674;92322;89068;46777;101711;13785;43321;77600;70923;24641;58330;96066;19894;48376;54540;16708;36466;15965;70516;53508;82861;104180;62662;70947;79906;70863;59335;57162;23349;103649;43787;20217;45754;13205;76214;81778;49455;75619;82333;41016;102209;54728;66951;65195;27378;13020;13017;57747;19546;74222;87961;11329;85119;87633;102048;95441;39907;78853;78685;14946;30506;66025;85706;19763;51494;16353;29132;42857;27736;13727;104216;50388;45378;62304;60973;19830;82451;10625;20263;104797;64385;16016;80153;100792;74936;72536;43785;100814;37135;33087;88768;52443;64938;26938;100364;70236;100274;53084;37935;87965;101584;49599;60385;48407;30865;51536;72954;89803;18568;74231;59903;37437;11299;15303;76416;80311;42484;38893;28135;46685;96557;75179;40812;90004;17081;16105;100179;45842;34333;100344;84451;69679;71245;64573;75246;74138;37673;57726;65240;76671;71116;71074;50011;56034;24400;35069;16611;18546;41967;30033;73660;49647;31926;45468;34227;96636;24382;86660;93210;54060;35063;60205;81806;67280;76128;97872;67558;101262;80272;19379;18201;71891;75498;12917;35910;21093;13034;60700;18104;69248;21840;54924;61404;94612;19411;75053;36792;31455;51360;12408;47584;85111;82912;30175;87561;93136;53895;14790;56803;66606;39087;57232;39791;26352;34143;78528;76137;63044;84836;41117;200078;101992;46613;102398;34861;11583;30386;20857;64557;83105;82798;91249;23427;71014;62675;31621;40093;38927;19064;38566;46947;87667;53262;39295;75677;65625;43449;33333;24425;94107;36984;106794;97816;85935;97235;39646;82073;25393;71198;85707;100822;84377;49945;12962;45223;48362;58925;11627;36953;106237;101181;32867;28777;97540;63768;38737;60810;102488;53363;11041;50379;17710;18913;20188;91939;19024;79462;67414;100709;99923;20992;60060;73284;73021;15073;34540;86139;29363;61221;104443;85690;90433;67735;57631;81718;105289;71447;63231;75467;99627;76693;56967;43808;93317;55220;13400;83736;60441;100388;14770;25184;99196;42611;30973;75778;67686;40593;54114;58800;91469;100698;38083;55224;49206;100692;59337;22709;44598;71267;37906;92687;52326;18577;14726;12882;79037;36472;19645;51293;37267;13824;12083;18498;10436;21476;91450;85337;16440;58276;73851;89996;34367;49037;23651;14253;50498;73315;55274;85761;85179;103958;65205;37751;62019;22397;69118;88584;73265;53457;60083;81118;52669;21591;52206;17726;52399;45580;50648;28224;86695;97123;79413;31432;56388;103933;85899;94193;59371;52132;64064;100029;65706;25513;26678;72648;24767;88595;30772;29785;24217;40842;30125;26251;19686;54507;73846;66998;49406;32493;87692;10736;12842;66126;78153;53689;26726;86430;52409;17216;59636;95293;50040;41444;63470;92860;80009;66743;55719;90010;85151;85491;83219;85913;44441;13480;80819;66460;42156;18326;88046;77069;67915;40638;85030;100988;60267;91722;43370;46386;84586;100046;40966;36803;63734;60888;17615;11656;73244;105757;66581;33827;67028;12698;93194;76066;56851;46720;106535;37944;87655;25984;85035;68604;64253;94199;103435;66775;104450;29347;75221;41290;83985;22718;105075;49422;48273;20097;31242;94249;24907;29224;61829;66271;74186;94668;60102;10053;88496;51017;40066;91275;45610;17284;70549;106433;92455;95052;92530;25370;79452;46504;74678;90393;21641;12797;36162;14487;22519;28833;27209;26090;41325;36260;54451;74355;19380;43817;77366;18629;45956;72778;16345;30795;39928;49740;20319;101175;41740;41256;41619;39569;41780;106776;75553;35823;40330;13338;90909;28442;14027;19668;18767;64239;54925;101383;94308;60526;84698;71010;57783;80253;68176;105178;47046;42929;63323;57837;12533;62501;71831;72352;93070;10475;50921;73408;77761;96315;18003;62166;82661;62403;13343;60879;64384;60029;13225;71708;35604;85354;12519;42596;101290;71534;24600;67348;37147;73213;35172;81036;48803;24851;92928;89194;60006;13336;92130;43903;103167;15444;26119;61503;105990;37675;76172;50761;38553;68954;75541;47873;82362;41282;75247;10444;17528;61566;88853;60139;53919;72810;62584;84171;65854;33535;32933;83480;106343;73395;68056;56889;25096;49177;70970;13384;95583;63933;15973;76480;64296;97944;43929;104041;105139;28397;11981;73680;32164;67719;79259;12959;94014;71147;51783;62116;58332;31410;20009;42323;80197;12989;102321;87810;96398;34872;79304;101610;19509;41548;42112;32695;27206;200140;15158;69103;67113;106286;32886;30121;13199;86625;74063;20776;104989;22137;66649;75793;35623;84297;102738;84420;26872;18400;42846;42531;25705;63854;87726;88770;42496;65610;10415;74737;66266;51795;41100;81318;19608;67571;90984;17619;30724;74630;13897;12527;80063;49819;49980;52902;99507;106298;59093;80070;25274;94203;46393;70845;85104;77474;36493;12598;61000;14210;52797;64248;77696;82722;36810;51838;47142;45094;54088;23085;35617;92738;80835;64477;82809;103925;67129;31467;59135;33441;91271;57768;15806;25732;12961;53247;57798;29795;76235;99448;90654;52199;40469;84318;76275;22151;19046;25699;46285;68517;61886;39289;23839;103418;24783;69140;49486;35880;44055;42140;90386;56682;11037;19740;89997;50886;19297;19829;92752;79397;86400;94291;101514;91466;87074;84233;87398;68853;62006;102204;99221;103419;54583;63127;35220;49218;44490;36961;92084;82147;66640;103655;45384;23577;23495;76975;61813;99244;38135;12895;103250;62476;81070;16196;19325;15842;20343;73202;40108;79326;51875;66071;90876;87037;19989;40668;12530;55290;40587;77789;54703;54449;86341;57282;19728;18455;96355;76571;77145;86508;79154;50302;100289;24955;50340;19742;35431;58266;13656;35853;97660;84867;66366;39860;28867;15979;96948;20975;17393;34462;49845;36819;97675;93741;77795;93137;89182;69586;51244;61731;70679;89042;25374;60665;44780;15442;45504;83625;63428;19811;38092;24520;70303;45003;91308;92483;18554;52794;45796;22948;80146;86504;44250;103770;91101;13513;73676;69599;61101;22624;82477;32238;10982;18287;87822;22787;51041;11289;29507;66312;36893;69820;86055;51817;70167;55550;25110;34452;77606;55636;77205;39738;63835;19239;73706;17826;78230;90198;20901;19584;104202;104040;89560;34281;38247;93217;81742;39491;64036;78786;91824;36390;103817;52288;75839;40722;25514;54657;46004;65866;68769;29330;83080;32560;101462;69187;38932;52447;70663;22713;74086;95507;71206;106748;25711;54792;23356;81641;34221;96376;25836;99541;96835;66931;65855;14939;63816;79481;44317;84700;38450;80210;101864;38769;69491;34888;27465;23357;87208;18230;18911;74437;92847;17097;102742;72268;12353;35189;101876;63746;49753;46206;22144;32341;11368;40235;19026;95305;54407;42591;104283;93734;65321;36130;37717;19537;44550;14886;99947;36088;44227;82027;16146;36392;14667;90605;55871;37903;77049;75991;96311;16418;83121;52444;46370;21271;68000;26731;66204;100361;21208;68189;82030;91312;76356;51282;26186;21148;101124;85284;29944;22793;45254;106820;33478;89271;99383;52350;13166;10533;56596;34445;44867;76070;60866;60828;95756;106389;86733;50178;54130;31091;45412;55936;16423;48929;71173;41661;82099;31913;107055;63430;51796;68859;100695;29449;67513;56380;45785;35459;86186;12450;15635;31174;33666;105250;200062;99313;38619;102560;33471;30822;77364;36703;40313;97738;96168;80480;34441;41482;37948;80011;16338;31229;41283;57977;41355;93610;56811;32845;59913;68225;71161;65009;25193;44202;59619;17693;13268;53374;103477;48678;12671;11841;94606;10164;38113;102280;29896;64907;58082;84504;104302;38547;56456;86935;88477;16535;54788;76359;16754;84617;94729;18213;81654;43285;105451;93311;92657;104522;88624;61834;47284;78357;31052;63765;48161;71261;38131;40312;42622;95563;86763;56441;85226;17359;25830;16985;105125;46155;71932;81484;76576;62693;60464;16810;55878;10316;94351;19713;25046;86897;60323;25797;21203;52216;74204;16397;32815;42778;62715;104921;93302;17217;95738;76394;52193;35686;49277;32882;43297;43525;34031;24492;32480;13963;39570;92740;42269;73841;18682;97691;57451;69854;10351;103235;28309;66706;74867;29357;84599;89084;74100;92392;80321;39789;75919;34057;19267;85222;48661;27397;70614;90122;71237;17712;10115;49682;23180;11346;84073;42095;51558;37366;86269;74628;10804;19819;19807;70933;37953;41872;93470;71424;26418;79099;86724;12382;20296;52832;47081;65794;72584;59150;21266;78450;83811;75302;97763;59693;65488;39701;35883;70632;62713;43970;96669;80128;75717;74345;69890;92411;95785;97843;15809;48476;19498;35096;30217;45913;103930;38786;11652;83624;58653;18339;15282;99517;102438;25521;24591;91145;92536;95901;72591;76957;18530;89545;31687;61138;51992;85163;76662;64739;34950;84236;96139;67594;106112;85821;85634;41626;95317;80598;72267;21828;65805;81500;59658;73336;52412;72794;84334;25076;27831;27819;93663;101373;77027;92732;54199;64352;63412;95743;89213;91328;72747;59069;71142;59821;38580;73842;20528;60149;48968;23962;16564;101209;75734;32159;52879;10631;26688;41794;74361;73398;102836;103935;41020;14198;49724;90301;10646;34286;19155;84909;44254;67157;65665;14801;45170;97251;34138;33748;32064;68387;58001;86728;88864;74887;27544;25676;33188;99120;75514;23287;49125;52751;76178;24642;85946;10042;26781;37595;96338;83563;26701;43225;79385;55746;72793;56847;49717;43234;72685;94942;36581;31389;72226;63504;22862;70454;35055;49288;32729;94097;21077;44578;56580;40790;46645;11181;100396;11793;41029;12372;20339;68450;48717;32278;88708;25344;75593;62995;77216;68443;53214;61136;63994;74682;45997;102894;104998;99599;57055;42921;27624;74287;48489;64106;66091;23954;81481;60366;18128;18467;77685;72477;25463;91518;69718;71139;58098;11524;81922;96259;60820;28291;43168;102691;54710;81248;21448;92728;10761;80177;57321;54911;19956;18510;70235;103855;14383;10644;46539;88896;82808;104434;94247;32158;41333;60832;11759;57766;90873;51203;50269;80275;81420;45404;102624;101029;103109;19684;33714;44930;63067;104029;71949;59426;91745;59143;15728;99320;33591;42147;102990;106428;48401;25613;14288;92551;49404;54874;62005;65369;18172;82685;62944;97638;36002;80975;45964;66130;53337;21759;51529;86487;15182;14971;96907;67244;30213;82079;37109;58933;33598;64431;64378;91371;24231;41763;51958;16743;29093;37965;83516;93376;102758;62187;75435;15551;13867;47504;106137;30205;24939;17571;84130;49614;94476;75568;61132;49797;84579;64968;19252;67793;64376;79367;65755;100894;37654;54761;52817;33286;82964;74403;96215;26545;59199;25234;48659;33076;21895;46533;46896;85497;77443;86702;68587;89812;106218;66108;101602;34878;31470;32750;34373;27116;17536;33675;56214;45397;10208;85365;62189;57983;76228;82394;46428;69332;39001;62010;104154;51170;22626;103375;12749;24883;52583;25155;69048;15908;101854;62695;102869;51294;78678;35371;105786;57649;83204;38239;43668;22004;18303;13934;54847;87825;66522;100799;94780;34677;93676;101596;10510;58427;61334;34592;35841;91718;44408;92799;69365;15046;59554;17766;22343;61247;100810;15281;73501;85534;50879;33257;51178;92364;105379;43532;29110;100365;100200;83591;17838;18822;19732;39721;64798;102655;47384;41569;86306;101140;76336;27523;104531;29727;55236;20969;90195;36087;26383;89268;20347;23178;57012;97639;59700;13699;25174;85225;26807;35329;40215;41144;73872;81664;105809;104398;20161;18253;16764;78662;43953;94096;85771;96931;75254;70965;21444;35058;71757;49362;75872;63587;34013;29571;94642;32022;72640;49105;54311;19426;59497;35021;86333;63275;42029;56463;29674;31859;55453;23104;33641;31256;71950;11692;60993;47536;40909;99402;59119;70012;18259;78118;64809;90359;83743;53358;25194;76207;25350;104228;28588;104857;92717;59735;14467;65026;61325;20722;57343;97982;57707;14679;95823;64377;26632;89546;61436;27297;88537;100285;18964;15500;63971;48353;200144;83225;35180;96988;97596;55326;106831;56289;52470;68196;30721;55073;68721;53790;43147;45186;25328;84494;17322;25442;79306;65204;69231;43704;69399;38830;103658;56924;42402;12958;56001;26825;76299;103823;83593;38669;71778;51121;69314;51014;22230;60824;49451;27235;80108;105549;73197;79928;34133;52331;49659;36192;91163;38625;37248;55933;85126;31794;11537;10136;85134;30430;106777;27948;12758;69903;71427;100382;49571;44667;105695;102102;61820;12805;19346;97086;57739;23360;66403;21256;84345;77080;13002;55645;46931;90913;45777;67964;97503;15066;100124;100059;90033;63997;64669;26497;102896;79393;29399;55818;24171;29706;44649;45096;87791;83319;95696;53957;30546;53690;67512;36046;35492;99290;101305;86325;15755;102669;60854;81728;29299;31884;32520;83413;41559;78146;38289;68605;38828;13738;94947;13930;30993;68726;73057;52722;84415;43648;37576;53332;39106;64527;75404;66534;43038;67302;34654;51528;32265;51069;34164;52672;81008;67051;71466;58076;37292;65201;87730;75255;17311;104691;37640;24576;17538;74282;67160;23009;75349;87426;58869;77835;91428;78932;15738;93278;77980;81010;10137;49188;97454;66362;63556;69078;94190;49318;88858;44240;87592;18185;17497;85925;68834;91815;46329;103867;102029;42692;101474;78148;104826;47300;22617;60047;51597;96945;92918;200071;92195;67611;104764;71347;87466;93239;38250;60710;29881;75672;20230;70917;86115;88434;54712;60814;95019;69084;33969;45553;53334;68489;90972;36867;16414;81302;55454;52765;56738;42150;85277;92490;15480;44904;80299;74775;15808;46984;103298;44616;67167;99069;96675;34992;72475;25169;100415;21908;106955;44044;82501;60138;65652;99154;88021;19180;92086;32198;10833;70369;17733;61108;80800;83363;11143;15038;39031;66426;49946;16675;19428;51606;101972;84481;91576;17241;32522;19275;100476;29467;89817;87118;26642;66625;90622;52122;42865;91529;100193;20786;44241;47626;69213;59496;23924;86462;24772;43165;30991;72697;81561;46629;29559;14947;87570;99347;106919;104215;89902;103085;12433;33011;14282;101720;95943;30567;37498;64167;40256;77769;103471;14410;53729;67670;69212;16357;85458;27494;11880;104976;30611;66413;67565;69408;76771;65742;59482;58919;84265;101961;48643;11305;103861;30285;53399;74417;18417;91941;72208;69003;37926;17660;72098;24322;92224;52044;54644;36257;96163;47310;30080;75798;96507;54958;22652;13641;63698;65563;81663;29102;104924;51510;66923;49657;47332;55526;100513;19322;28957;56393;29396;101023;84605;106163;17019;54409;53586;58953;81785;32375;53096;46713;56094;61890;43148;33417;31337;16010;81344;35216;56698;68559;83212;35097;45935;91318;17973;77989;10199;79590;52324;34016;84545;90001;17720;40761;71478;69254;59019;57291;37177;103668;105410;41401;93799;86525;16698;66211;40971;23964;61751;24493;53303;52640;52970;102988;65199;66497;70198;65887;96661;96806;48679;37027;88629;51975;21288;82553;52716;43579;50460;83085;84858;33541;52993;85380;46198;15127;20539;50987;75973;92936;11402;85407;58974;77431;90600;105018;69217;35465;102920;46555;12455;106321;93718;34237;100245;36580;83537;22365;71701;105332;104754;60505;17492;96167;96336;59040;101067;36335;68835;24192;99772;90115;19766;18962;38600;63164;96944;65767;65621;87642;40120;19784;32029;52768;106739;86067;17488;59677;81469;72081;37760;72424;96334;61284;94815;59391;79727;57108;45399;81844;12423;81132;78861;13321;14442;100349;42799;39485;20470;16558;82223;38536;104297;38959;40210;68577;42875;31993;43329;13686;30628;44092;38850;77776;54377;30645;93156;83311;13266;60185;90452;104271;78555;22211;42079;87522;25316;16962;25495;52250;21081;84095;31181;64972;106347;44376;80725;45379;102335;49137;35965;11240;41044;48400;53462;91323;41570;32209;40954;76978;18156;56378;60953;89956;13653;103970;11575;22579;84341;13133;33586;82601;41490;42443;72535;75209;97529;79219;97394;32083;66070;27160;31963;79085;99485;91168;23249;66929;87350;105148;87218;16999;72376;87182;36761;48345;69987;46891;20726;82401;49411;46599;55898;33165;71665;61528;20614;23094;68895;31144;53896;59236;67367;26050;38680;83780;74789;58886;33750;21945;58189;59324;28237;17622;67059;25173;41101;97926;32569;18513;59413;53075;106166;89775;62778;33727;33964;90620;84540;76478;93688;20521;14805;14985;43571;79456;31447;31005;104884;105275;101738;27926;20109;38381;87433;55336;43921;104140;95994;73782;103389;46490;49831;66407;73369;69410;79003;55365;56643;81887;49099;30692;18831;50457;14730;36673;14170;92080;82431;47669;81416;58347;91694;93866;99537;39695;40460;100756;100310;52364;49457;30735;78785;48885;76175;78010;41414;22508;83600;88860;88926;39659;104573;24415;26592;105368;90298;90102;43045;11654;83964;11997;90677;68500;103647;95301;19692;48447;84896;88418;61463;20616;36142;27037;69466;11258;34059;26889;84897;87494;72533;18810;90392;36429;79725;83257;61193;77626;26783;54495;70692;24122;61883;62007;71050;49295;43642;106595;86175;47254;22569;79450;77371;21317;39311;76891;87762;99167;15298;102764;51227;41814;30705;59307;80561;32261;16199;88080;83518;67475;97577;56761;82807;55145;73227;95893;76707;93201;60181;36800;32863;69803;96943;34587;104358;21006;52266;52108;30149;103393;94864;68267;93433;102273;51462;86931;33140;56948;61266;44098;39080;29547;90240;66989;38479;18066;39309;83507;51055;91686;100032;26714;38882;38491;48782;30403;87067;99726;27389;97366;12002;41934;31813;79859;54123;45549;45383;66550;43609;73340;76735;40784;42299;78086;32760;33809;24972;57773;13719;16485;45268;83596;65791;63266;20198;44569;100964;87168;33265;82869;19548;31714;101008;106568;74228;33678;36098;84878;83548;73022;38617;87964;84081;16859;82820;77765;37968;87797;74919;43000;63523;82132;90018;89385;41991;82287;51095;34846;61462;74223;34901;78418;19055;34287;85267;59753;104104;43103;17303;60373;15633;102901;60489;46197;42818;52095;99710;75578;70944;99405;76718;54045;45079;27420;67672;58630;66574;101553;49016;36604;34735;63704;97850;84496;42960;59414;87648;13655;66326;15742;96913;72719;79064;31303;97025;75951;49471;63731;89725;26629;93750;51549;40652;87476;52974;54172;18793;52502;96035;96046;37397;83386;39507;88998;51607;100644;33255;64153;80824;78169;47858;20621;73690;47121;48944;74510;34521;37984;72946;61693;16785;36617;34734;66655;71752;91860;99832;55094;20999;27779;50904;76889;57903;61630;93100;60692;101385;67676;28604;95726;23973;79476;74512;46385;28930;62358;37643;48374;88723;70869;47120;70391;90553;74386;54013;105586;35273;33685;69372;38761;22507;95768;99201;50143;46844;87680;13887;19194;70768;54515;54343;94706;92931;103422;15386;49328;95965;49586;30951;84237;49577;83371;90562;26196;16119;49537;89108;83986;90603;15163;93122;77527;83665;18824;70070;10954;93083;80392;90886;53762;39999;83808;35799;76323;60907;77603;34531;73569;30108;24871;27888;48480;69871;85472;25713;72366;29533;55111;39244;30408;35023;90286;89300;19652;63349;17220;66639;58309;46755;15365;69591;100973;40677;66698;42467;10550;92813;28105;75087;74785;93787;95552;106010;96537;91273;46722;42050;27512;95876;102234;23346;78526;87538;57301;47749;29178;74447;51896;100330;61884;65924;106234;20778;32504;63353;84363;52535;14556;15331;56459;25260;35602;41495;24333;87949;105225;58669;95997;15205;33601;89719;99972;100401;10097;84069;77304;91642;77944;12769;90432;103803;82490;39328;106815;22798;78283;20015;70508;50984;45360;25552;32402;93348;88052;23338;24358;25225;37928;79930;56868;61093;76496;17364;77512;10807;95625;73901;90796;104449;94523;92454;23787;84804;39050;59225;106487;36060;32769;70991;51292;11021;24709;65624;43665;51236;96482;12782;79247;43313;24130;94666;104979;105622;103964;16839;42736;28047;62819;77477;25966;65227;19599;33032;82044;77529;105648;40643;104590;90013;94892;73657;23923;42239;92589;105604;67474;86577;75373;69898;70932;18990;41716;35127;72875;74284;10783;23969;77365;52666;86165;102101;47629;107012;92240;69099;29892;26892;14847;66372;57877;65698;68318;79783;19033;66683;32515;90316;59376;53038;42801;48317;24934;53116;50928;48395;27800;47897;28570;64450;96664;17805;36505;89850;69260;38411;18894;33577;36049;40261;51906;90653;59664;59338;89721;37195;97144;89010;96848;16968;53613;69755;89158;69584;56827;53394;90249;49340;88655;37535;68917;100877;63269;40437;90180;19676;94779;46668;81260;70775;38079;55045;54074;23171;101196;68249;66374;68341;61139;26520;95443;100617;52850;55608;48244;68096;99596;10200;103158;74451;32620;66477;29062;40037;100943;82175;69567;28643;61308;26089;36172;22605;46751;94538;61558;48148;100393;96686;31759;38988;99924;14795;34529;94648;86740;50837;47110;99554;54441;72925;36165;46907;29986;41217;37792;25730;102351;62108;85341;26291;99758;95391;76284;36892;69283;20426;42149;106281;85471;41417;23614;93978;87432;51144;42567;95806;47326;72718;70579;52549;93052;64243;100921;49589;22381;15410;70661;47200;46624;39228;86970;67856;15614;75416;53347;92810;14820;81531;45084;99491;51213;103001;82631;85939;61353;99124;37706;21869;34218;88488;15151;32271;57854;16116;56208;68845;15810;88075;24778;81091;48577;28634;61140;82567;102871;46395;83470;82780;54478;28147;25398;22899;20829;27398;48272;19185;71775;67042;45282;73871;39623;43555;87092;71410;70328;105615;27920;24971;77990;62033;48793;32643;35282;39938;84727;43356;52383;102478;39078;72975;30960;51149;85071;70113;26871;101663;42159;77786;64413;37552;52929;27117;78711;30827;81369;104163;56608;64229;13445;91552;48765;200053;67508;77775;58373;15237;77469;102741;36381;101306;41316;75119;35353;48758;100524;85245;17686;77355;85751;105190;19045;38803;92850;13735;14000;32537;105777;17832;100283;14846;16403;87956;20950;23265;87335;101712;74046;39790;90278;83478;19565;72326;29310;19612;87974;58838;107072;91826;90701;70372;39672;34595;43390;91231;16108;20952;51831;35080;25163;60717;104865;71441;88107;100881;66039;45916;29677;101727;22467;100157;81139;11277;64870;67438;11125;68880;38102;30740;40657;39326;19019;91358;71666;12586;35838;99809;103699;60418;73302;104689;89737;58643;29442;92577;70425;54180;106111;33491;45236;97742;84823;97680;90519;13630;87157;22919;26091;82926;66156;76987;73461;53522;62710;105901;99390;73312;82824;60698;59362;47175;41527;49868;20809;22057;23955;72190;66444;55938;96965;27687;53620;87505;25021;47375;62619;71335;15494;92708;33244;91344;43462;82053;69307;39930;13675;85014;39296;63154;39144;57175;85635;82799;40596;81517;54648;50434;200101;68992;14305;73624;44971;94778;53137;29325;104481;82396;37218;18022;105646;103383;97813;97233;92077;19236;37638;70290;17800;96892;96257;81417;52345;33473;85723;18194;81853;20437;101930;96921;75624;11629;14279;89557;75966;84631;68470;51324;18235;33634;38872;50057;82049;64434;32495;13945;65231;69766;45899;56668;97153;55972;39932;71813;72035;19364;36643;86580;102307;71732;25827;89813;47322;62267;77422;93709;13910;22138;36923;44331;15570;92095;18409;55496;44008;105876;78122;105411;96140;30084;30915;89358;55068;53232;102565;27610;57852;10542;73712;43916;41691;105478;27376;88871;15671;54302;28979;33163;64684;24559;73121;15875;90095;46188;11430;53571;80890;96503;48484;59012;45714;102781;38069;44653;10744;79961;103877;85878;42235;16852;75835;39488;96377;35648;12437;67795;22076;79416;28033;38856;105291;11650;40760;16020;85914;11544;38204;24655;78244;64513;46560;35544;60592;76291;63373;100064;10731;104111;25221;32014;93633;49852;61180;57528;54128;11246;65837;100479;42189;75749;59163;19714;75099;92964;22520;77943;81408;36325;33921;69942;37945;64545;45275;33328;64436;42258;99560;100693;53255;12480;88942;76969;88142;12394;79320;74950;72056;40069;59406;76199;26290;30102;80408;64762;16605;63208;23557;53856;85432;60088;49857;66755;106148;55759;52041;53809;46235;56057;106110;100266;12779;99757;96280;78329;60238;81478;24690;56085;14815;19365;81275;50920;61991;20176;60481;91068;45981;30270;24422;68051;75189;100654;63109;75428;67857;91871;23956;97685;45514;104762;95349;105636;76340;103866;81777;36918;33674;20835;49635;80021;71761;90638;33923;45482;68565;101363;36448;62564;23143;65051;42781;10882;36135;78387;69076;46997;51626;105644;100306;29343;52897;41700;24376;72709;38639;70941;10127;94917;105518;61941;78766;62002;39987;102707;91379;79844;72593;12713;76152;78408;71626;80582;86181;102761;52566;56678;97746;29544;63929;96799;93901;29036;25573;49642;66772;79669;12076;104141;31027;39377;103913;74387;17639;12705;62042;63561;60154;40493;35290;24154;93786;57985;67629;76919;22221;79454;83937;29196;48440;75558;21770;100198;89227;67246;30586;97228;56611;35448;40726;62614;64830;30741;93950;31346;16722;53421;69508;65150;88947;31548;19760;17724;59568;45720;74784;84946;93228;29273;87969;58366;52733;47498;42728;44266;20680;80430;19184;80896;36971;43357;50861;86385;77928;47459;97085;52602;71423;38413;41643;15609;51956;44831;57574;55093;13150;57253;42305;100432;62437;32026;75015;51436;14141;90213;100769;88168;36407;99497;69111;104891;80273;92880;59437;52853;24384;29004;18806;69125;83203;33844;29301;69201;55426;19415;87876;76620;39513;74836;56418;102220;53813;28130;18344;70807;48987;90905;25186;106466;11213;43621;96549;26490;46193;44370;39434;59410;17373;104544;77633;24423;96795;24607;21110;106946;104523;86472;40911;59500;17675;87159;30834;71567;18395;65517;10532;102464;63359;56129;41319;23361;23263;31639;15851;24959;106392;47233;13550;84555;44407;22796;71071;90330;60186;37684;71906;78438;82209;13296;42871;12539;103631;103721;19150;74368;38202;70539;24215;10111;32568;91044;46696;60374;21406;55153;93483;11938;48463;71747;46348;75095;58703;102546;92017;43821;88133;53300;77180;18436;65721;40585;70513;58161;55563;87548;68129;99295;30319;73287;103220;62228;28653;38182;16940;18252;81528;26924;60096;60405;53870;30802;75600;68377;82845;23302;24571;34786;77155;81805;86796;29378;32877;81241;55671;105601;90373;104737;87754;22094;38063;60127;26580;80422;16409;74333;43659;11380;85908;84991;71007;31139;64642;88835;90686;35136;97905;86900;65589;56464;82774;35179;56704;46830;31518;32231;59316;64706;23951;11086;29876;67460;107010;39274;74819;12046;72051;86015;57525;41837;43813;101420;104715;41562;107049;68918;89046;17595;102930;77914;50393;30612;55414;83853;42353;43042;70324;71960;90413;85440;33035;34070;19443;88908;79799;57804;82946;38433;42006;36557;70818;65784;47541;55784;75679;68601;91522;51447;61605;55906;74390;58403;83848;24504;62052;99601;29722;32655;28008;69073;26431;96093;35992;94585;32684;104566;46287;24162;12963;200095;82955;80973;12116;99324;33740;13871;34794;61163;48200;78224;94682;60196;90812;62532;95770;75362;16505;96955;53828;19666;16470;23250;58398;62337;19552;43314;72104;38339;16059;77808;57457;85215;53224;42576;73306;49144;94746;21273;88399;83396;56302;99998;83148;22803;22894;59578;44684;24814;11163;11636;30839;27280;36559;19422;99206;39077;41041;91868;66986;53193;37275;100632;32134;102344;76618;12617;13363;12658;81127;71041;16862;16584;82898;56880;107079;104742;56183;97822;50394;12935;15794;62736;96851;80278;44380;95586;88911;83446;17566;102277;57538;12111;101236;34077;40789;78065;89849;23838;49272;18989;101138;53266;16370;61954;19589;12631;64568;44438;61666;90094;79665;20464;64415;68564;38488;55100;87811;76927;16255;82734;33099;21357;94851;79741;83592;12810;18389;92480;101742;38001;50856;87003;88660;48422;15679;44482;29329;55847;94213;47469;70270;73792;61228;72882;79412;46902;14665;84307;93203;200032;95539;94676;71282;79223;101898;75439;53712;55812;45767;47641;34591;29476;50880;81497;46803;74808;58701;61441;42664;86078;79764;48586;28468;73063;28964;91979;59998;83345;103980;14038;44889;79745;19949;106421;11754;61576;32430;31965;80505;83872;67426;50425;69743;78714;35005;75671;51938;33546;19644;79446;36935;68614;93865;30450;96418;34624;23106;66533;27526;54279;104404;32269;29588;64214;78758;103974;20488;32136;22991;57280;26831;75501;80948;77514;20241;69066;72154;105328;10526;84054;60200;76577;13102;71690;30874;79437;65091;76395;79878;53470;53316;15219;67422;33863;26213;17291;67489;103387;96279;71091;38775;87440;91634;52367;57185;44053;19741;54464;81783;62361;65024;80342;100908;72201;75143;27981;87512;26970;93802;74883;94880;86486;87663;76763;30300;26779;50075;100706;99234;34513;26720;90378;55568;99033;64654;62396;27436;83673;94243;25824;41118;26747;92731;28597;31320;82335;49062;15269;31526;28476;91793;53269;39548;84343;78476;57945;76533;80484;106006;80483;17756;20421;27472;85332;71077;41851;14264;79265;35906;20311;38412;16276;12602;54889;39526;90613;66201;18673;15236;25298;49467;101006;102539;16871;42755;38354;72022;100685;13317;32259;101519;10863;57751;19173;54945;49751;66511;53821;50341;22517;106156;90440;20005;89821;12628;34378;59043;90444;26464;62597;58196;36459;73640;83216;47837;42826;89666;81313;72948;92090;29218;74239;14927;48514;105119;42730;63914;79971;30911;78668;91251;61385;20409;81673;82151;34993;28344;103977;86358;51556;33943;17413;86955;76610;52464;47491;43033;106654;23487;95402;31598;34995;46576;40102;76723;13255;55122;35251;82348;40899;50557;49548;64937;90616;76231;31345;10966;81867;29992;63258;52947;61754;78008;76061;106958;101488;31606;104845;74238;82191;44905;80736;100048;53480;23983;60984;50124;71196;20684;19179;84656;15185;88063;105213;74230;44865;17783;102268;45871;53675;66441;74015;40847;12720;81020;41155;60212;103532;90911;55947;10823;97291;24944;53306;44285;94112;83994;60308;26536;85920;43181;34795;37300;65184;18435;34895;70283;15121;37129;11874;19348;78457;77894;14990;74842;82972;34882;94898;68417;47648;35777;41689;13895;23185;60657;21237;102104;83519;83760;41384;72686;30819;103007;24707;33372;79514;55141;22241;83797;105817;92614;36712;29409;83791;104786;74279;18787;44754;99931;81674;105270;23198;10394;84539;66831;91112;10573;60004;51145;30803;18943;91199;53753;59330;42966;74777;70859;15063;40191;64970;61523;50770;99052;76216;91825;33370;78026;67189;93705;13953;57551;90518;96021;91846;101328;19245;102635;39329;19857;65096;69837;29519;64360;51407;27004;12826;24950;94822;63447;58573;49704;80814;97487;106263;86229;73088;105240;33950;48580;106585;105348;106892;77819;91254;102574;70473;89126;44121;58737;39784;64679;42933;68739;91772;19061;69202;99131;25252;74432;57847;60358;40688;36041;54201;75533;40486;101645;11657;59848;68885;77995;64021;95255;42287;71768;61993;33488;15087;43860;80601;73730;27024;60887;100152;71727;101336;69697;61171;86669;38962;38539;82453;57911;29444;92748;24804;101736;91392;86351;89753;102559;100711;46744;74048;70151;24036;55251;64900;59861;90807;43438;32598;93673;57923;28616;87676;26585;71359;106435;87042;86481;38443;35690;70076;29145;79836;12622;12854;57946;80545;64720;22306;25985;86233;51257;11989;53067;51618;41191;84752;23734;30321;42065;89504;105202;104365;66610;105592;99218;26221;96302;92730;41561;76528;87981;44973;63464;85911;71854;74325;13782;53136;13247;38423;100834;66128;78598;64672;34226;13700;82640;26391;58823;72006;14389;63674;43554;85324;60761;35520;104759;88699;11447;103464;11045;21966;43249;12351;102978;53043;45861;90273;46149;100605;24741;51625;87571;65044;36610;88121;52728;96278;22505;76419;52921;17585;81780;31917;101889;76239;102633;15576;102440;48982;28624;94386;95811;38529;78826;18189;43971;100244;62021;67163;18360;69853;42564;11247;76120;51262;78922;100800;25292;96493;46819;62209;59281;45272;66409;27272;58926;32253;73887;37461;200130;69089;101814;65305;107073;99979;12468;39726;76741;13941;18429;50175;65088;62484;46034;71952;14026;19210;12787;33908;97821;68543;39136;64835;43140;100237;95759;86237;24443;16369;30064;84346;87526;102199;99207;17052;40282;62927;16435;103540;40008;56066;103665;43433;37342;81579;102783;79762;16778;86129;75889;64017;74558;72175;34758;49468;53976;69360;105519;55463;34839;39639;40196;105554;77117;77638;101734;52873;79474;40461;106733;53955;32682;16840;19437;41664;36598;96439;61632;97965;27499;95444;34753;61656;16473;82648;102981;100462;101737;89299;63332;42876;94413;101257;47405;99281;84930;70962;95438;51768;78471;41827;62111;10226;57922;33108;29101;51745;75939;105111;99950;19217;62984;21755;99256;47700;82040;79834;35106;104350;62379;78214;24058;57510;15004;100446;92673;62348;44388;85712;75026;75245;73933;75801;20461;88728;99673;88717;32755;74856;71042;58302;19136;67667;52152;68580;86576;58485;53285;56435;57481;37283;87257;12383;45065;91288;66219;70377;55214;90680;11608;52559;37536;72601;93823;61837;61254;21023;94111;94268;34379;46126;51685;89345;76870;77833;90531;77376;107114;48466;65320;60793;11535;76398;20858;90341;22664;102806;60434;52587;19875;103331;15216;74975;18342;68069;14249;23474;91807;16830;61203;65728;37913;48275;62316;103937;18220;61662;26692;22598;38515;35099;82181;44647;86347;40727;96007;104714;64045;105383;45682;64315;91520;45945;35524;76594;97662;42906;42125;54016;31282;101148;106374;10719;26624;16517;95498;18335;76861;94756;19070;68972;91759;88175;43074;78997;26557;79698;105459;60856;14996;87886;21602;66733;67304;47317;28239;79995;26666;86860;18924;75907;92778;40696;91090;13318;15684;107137;101359;67654;78466;60480;96998;36224;38270;95026;29172;32989;73162;62529;72338;54009;33619;200009;65476;37828;106121;74313;77176;65705;26261;55201;10279;40054;68290;59499;56970;27017;79060;65772;47555;57840;42242;29307;105447;60797;24747;59839;31197;67227;61906;70856;64623;76602;92969;48612;52769;96598;53911;82324;73579;96631;50421;104399;35322;79340;58787;41638;83039;102232;75911;46835;85147;88551;74472;28708;74814;104157;56780;24290;90674;33791;45577;61397;29332;59275;27179;106673;100088;70588;26712;97756;49475;74959;107064;71265;68448;89833;55669;50575;60446;36275;63057;20843;46659;32521;57089;63035;63713;66162;44782;66834;90169;89832;38199;19855;86953;53822;103490;32153;61464;99801;64873;91110;59009;40090;105741;41922;39965;104004;18143;74108;52568;40150;100378;58560;25818;56551;10345;12258;73012;20302;107136;52808;89990;21555;75976;35825;85507;27192;72829;56485;31867;26926;75177;24634;17498;32459;30409;28125;75434;106494;36322;94110;90715;34219;14175;101216;73256;37657;83165;50157;42947;25823;31691;43701;76518;53381;64041;16980;16638;48482;96409;43657;31923;84619;106521;71624;35717;65464;12877;83771;45343;27266;23834;32351;29494;27511;15978;21603;80639;22635;54724;25266;78596;16260;19972;30455;83758;10149;12585;71479;18490;88513;105397;61415;39709;30608;64792;16102;100216;65797;79116;67518;86912;88968;106765;89961;35070;56858;105325;17134;20358;18849;91395;86564;35272;88773;26382;95829;59666;54471;49117;96510;82983;97552;74232;72252;46429;25933;54961;15542;43594;40285;67634;102943;51582;34710;16110;55698;55930;35094;49057;46515;31287;27861;27021;73167;13601;97496;32616;51359;65181;87743;36700;103042;83093;79177;70222;37930;90664;43111;91887;96786;14216;47286;81868;76436;16936;37727;18663;52084;78699;19560;77992;41251;79129;89729;37542;10558;58776;86522;40311;96455;26390;85729;61384;25965;69569;101832;12270;55770;22998;24613;35932;13169;62380;25981;71519;44517;32817;75740;34467;31251;69009;18840;91902;13313;19987;101750;101576;50975;83677;102762;44475;29451;91741;21757;45840;94499;39679;94424;63211;24136;11065;12870;49510;26170;48745;90576;66342;33338;27937;70017;38704;31659;23053;96037;25801;11298;101441;100319;76337;72668;67194;96925;89795;43672;55535;31694;31737;15239;15593;81384;93752;67136;80282;71170;38188;95884;26100;47823;68874;23054;65841;33186;84040;77359;84977;48157;74056;93109;41072;58158;53833;87387;81320;51291;61124;95914;44572;30593;87537;25102;65344;79569;95479;104471;74483;102652;103552;84713;40406;46843;95512;106542;99144;52221;49395;99521;102815;69476;47644;92760;46750;35578;68354;24556;21000;51432;94914;15831;21230;55582;42831;12725;69077;90154;47572;21320;35233;105584;93459;17812;81839;53179;63940;72714;10176;57576;58985;57095;102243;29450;102154;69216;68523;76293;27821;101912;33335;97775;106339;93657;67400;87978;73726;43610;87207;100639;83952;54028;40823;17841;73372;53403;12547;66408;83483;26868;97053;97772;92282;32810;35673;55332;42187;82756;59799;12701;69719;107139;47396;50535;79197;35197;92470;44260;21569;65780;87113;71182;83376;55384;57164;49823;102561;31033;83325;34300;90250;90986;31705;10671;79018;41017;76013;67650;24196;32661;106868;34453;53569;87661;43606;44512;37277;77120;46579;90320;86929;100146;24832;88962;87987;77946;35754;105344;18363;35376;56917;30168;89410;69071;70878;75805;58157;64759;17417;21864;28549;18752;65111;87880;10905;103155;75663;88416;50851;104096;40777;43317;35508;24341;72434;69428;54186;103853;73459;102371;76375;10368;27212;39916;57473;60600;101743;33211;12951;68760;103156;26772;71894;18944;69439;88875;91062;78312;85362;105263;69765;86492;34289;75771;18736;29555;93188;47854;41962;53465;46698;84682;83865;55957;21682;49187;106399;83131;67720;48171;76466;63233;62117;90023;37289;55689;89064;80990;27817;78396;92844;76085;14325;73896;99461;86535;12707;71186;77971;94077;40620;18918;65759;37600;47779;46865;82296;11698;71176;34344;12967;69821;50994;99730;38847;79620;77170;57294;105514;83607;21812;101762;73201;38931;52741;17227;30260;34094;28354;74977;28373;89629;35153;13126;18630;50229;76378;32190;58340;19776;64699;10378;66546;27879;10796;15815;15129;97305;44476;86244;12956;52676;18431;75780;44362;35960;36310;46964;76900;40716;106551;79322;93939;15588;54505;54356;100753;99516;45546;104121;90884;26475;90269;28622;71882;20057;28310;49015;42137;28060;104841;82642;44785;65103;27213;22114;100773;92599;49775;88095;90372;82931;28535;18377;63569;36469;104869;44264;97381;83416;53331;20195;74428;61840;26491;17780;50727;11140;102957;25543;38089;28160;22645;54954;39712;91089;64967;56817;41160;81244;42191;71169;53326;39280;97083;103062;39794;92127;26848;30672;40114;95600;81391;52101;44448;30561;63300;73298;29610;29400;62941;72322;19594;65776;84156;27300;57324;56564;100974;72870;25507;99860;25320;39560;69561;38039;75160;71807;77244;60813;97116;80836;51828;77369;60351;37660;30794;24710;71933;45092;69606;13799;60043;37240;78682;26179;99216;103201;97644;77982;66849;89477;19765;28377;13731;22100;34026;63255;12711;106998;18228;82483;15703;37517;52163;104768;25875;96238;85379;39912;25654;87036;17605;52990;23306;55131;21434;73283;100714;25536;30749;23332;73897;48392;22851;78623;103862;92445;13408;104269;79038;51980;42488;35710;11174;77408;71886;16031;59453;71849;56987;51239;44119;103546;80606;96587;54235;100779;47397;13188;58855;54461;23481;18981;42711;40882;65577;45927;75549;66142;38977;18576;83782;44151;18100;85883;19262;13588;51909;21660;14184;100060;32354;80466;104919;68256;45570;49965;88637;45390;17561;16489;88591;97695;103017;59966;20965;90563;29127;12368;75078;55886;18873;79605;96441;25075;100199;17277;92272;59963;15294;69958;60136;55354;84439;61847;88898;76756;66807;80040;105835;86328;38151;107111;88869;59133;43846;67005;101259;49744;13885;41576;41358;11763;92339;14704;20817;17149;50800;56141;85743;82608;46740;41910;97551;19265;56843;89506;60414;26216;94991;39263;63972;59904;29354;65399;45477;26819;26562;92929;22573;13405;24394;68362;91901;76561;104353;43351;47336;57374;27086;12728;101141;63762;27898;103802;52055;43071;54033;54906;42480;32700;70662;41820;86372;84116;52066;47448;48801;85165;58837;76583;97395;82123;104211;25097;63842;87011;24683;50890;65929;39931;33867;72171;79829;92156;87914;96934;23110;75285;90543;78725;92324;57871;55288;92057;76852;21250;33626;52638;77197;77709;100649;50242;20615;80637;50410;11872;50505;40318;48426;69312;52388;25859;105685;85270;78815;50971;102674;66776;92044;90266;76056;52294;15916;86643;12232;106046;61902;96830;57292;36633;59020;19100;45066;68036;88544;57876;89834;84845;29999;89316;80665;81063;97682;19434;102765;59601;40598;77240;61017;20314;89119;43271;91566;80668;91603;57217;60787;58449;71018;70899;24963;88543;86588;94738;67617;90194;48702;93373;96792;62709;99978;31135;15259;19202;72210;92677;86402;85719;24499;64738;60079;80831;34977;88013;10014;41289;103205;76127;27614;59594;23556;79814;106302;59169;25633;66282;59311;15408;22926;78102;85945;100407;100889;70820;20309;20345;105856;64401;63193;38629;61929;58631;84809;10350;66875;89360;44247;32185;51074;86026;50139;57788;31462;64707;91587;71154;88498;85745;83979;78342;46906;92028;78349;29074;55999;18890;91196;49582;15788;26248;66104;36629;83617;46449;32973;27453;91733;51972;35175;26534;31077;52834;54346;21590;65713;63656;33189;13586;20269;96328;32156;67139;21031;97385;53173;28900;49173;22081;55574;48603;30327;81744;14826;72302;69298;43331;71705;70603;38586;103641;88076;95674;38109;99099;53619;10907;80014;59798;84694;70123;88832;87437;94331;71148;87602;22474;89229;31171;54080;53519;73376;54412;72345;90339;95956;61575;18570;48604;47075;16360;15305;14945;45721;14715;43139;67542;75127;36120;67566;83876;53973;86404;62460;20125;78266;33198;99754;86477;25425;73254;101360;70330;29418;63354;33936;77829;52119;51806;53197;62743;54631;78504;32028;25050;11725;89060;92583;102392;34402;84859;96438;12863;67773;16253;68699;104616;99715;71163;94797;87583;91213;67631;22037;91643;47528;46241;71795;61948;37613;81675;46911;62479;49131;70129;19117;97963;75453;94335;91142;33007;46008;102631;50273;77910;101860;86241;63485;14317;61577;80382;90186;13724;84596;69523;46327;100853;104460;30689;31106;87429;31908;13514;14203;41278;99557;54843;61337;17507;28527;91806;13016;80537;78264;58371;17777;106969;99561;61614;19622;63906;76104;104663;45775;43568;106899;33913;63844;39007;102736;64126;10574;73687;72831;59984;91098;30867;21719;80186;46438;22466;10648;77429;64320;66688;43735;35827;96532;87700;53039;34750;11638;74125;44255;67452;70478;12037;84853;53789;74085;57737;23375;10055;77636;92334;27650;21169;76786;66570;96839;13031;93038;14781;97158;80310;74121;82065;57765;69239;20687;87497;55591;99504;101745;69481;69563;42328;22223;61745;88787;33630;91125;93105;34115;29198;37607;57558;35556;97910;19929;21007;102899;24261;22710;16886;89433;22962;49608;67000;75069;73495;62753;49309;43959;67681;32488;35454;62237;90285;52608;86548;83819;19633;57497;14812;24258;85897;16506;80793;11178;55800;56872;26858;37197;43936;54863;47409;81505;93877;78324;30131;99868;39315;39613;29054;84742;41789;48902;14822;28317;57626;58793;61406;96223;104968;77182;99330;81287;39633;82618;76091;94582;70364;47847;57542;19299;29890;18557;85492;31378;24188;60577;59434;32398;96392;15383;76069;69877;83000;13142;36717;56449;91852;75090;40507;16261;60126;60120;100132;16154;102397;70354;80664;86963;19111;25960;55272;74624;82313;11359;89440;40685;42304;94283;45692;23859;96963;46998;51630;75460;72403;101638;62045;51110;104420;58282;59826;68727;26756;71978;46630;59049;17755;65135;81037;62492;72517;78030;51873;16921;51288;84060;14080;83126;51866;67286;59392;37017;50478;62183;15463;71672;97363;78032;105354;95567;81544;29430;54240;35893;64132;17573;46125;17202;43812;29897;24752;72770;61659;28162;30281;81164;51615;42216;30246;58834;32060;14696;17520;19047;94821;101312;10662;104034;22826;78330;52977;10391;36437;29050;99248;40801;97185;24873;25570;65986;19303;65500;30200;82658;56523;89867;56365;45632;18876;16341;77279;54713;57021;106186;70860;104537;37156;44117;41995;21150;60711;85806;50877;36553;94194;62447;62486;68744;74880;38978;31845;105721;68778;61679;24121;96458;26675;18272;96081;82305;43484;20549;76018;91803;91482;84068;65909;37910;73161;24468;31646;79406;88050;65975;55876;94381;55572;74757;83942;61427;81234;29811;63581;35876;75527;73124;18672;18667;67666;88022;104800;63967;26669;82440;88029;19006;102079;95640;86872;85886;94048;16580;31750;99189;90866;106774;87551;79108;91737;82949;38849;47055;40445;51479;75972;87799;47508;59520;89234;66762;58840;50695;28655;61444;100309;46342;66711;34808;66844;97622;99250;96283;106754;58472;54526;20551;55807;53851;20028;40189;39967;99977;43837;84075;101755;43335;31952;64929;15524;58912;20669;53883;64875;78904;90826;66045;67293;65469;10172;44873;22736;39299;28929;106269;91541;14032;28151;14535;91417;60044;51323;45882;41717;79321;66246;49660;97942;84632;35630;77116;95270;56341;45362;12356;101167;50892;94416;64382;48912;34007;75055;96471;50593;23600;89697;88507;75915;101598;76572;38295;77198;68864;85508;65692;77246;27255;81970;78018;34163;101049;32089;94516;89726;53513;59548;80038;18250;65580;69229;61931;12904;40636;27732;12411;52060;25669;95614;76100;24766;46194;102054;86890;103611;93716;15773;60188;93760;36386;52965;70493;64075;16896;87838;19750;19318;15090;100470;93756;65313;61660;95430;56861;52828;37451;11023;89499;67045;81254;97263;43707;10493;40131;78819;33905;61497;85242;16066;68275;25548;28716;87888;105924;91835;54437;62137;32699;96957;66763;56900;40485;24819;86009;65491;43179;88977;61670;26495;69143;51039;83010;51150;13461;76439;36288;15994;27129;13888;49848;104182;64073;102682;99733;91880;68676;64872;92846;15278;99243;61872;76909;58026;71104;34348;105361;85184;42021;96147;27840;43774;25082;77912;45512;64724;48899;31736;40990;31501;72551;85509;48681;91190;50967;80624;37060;57549;47298;65873;59621;97530;49382;93517;22031;69588;65431;106687;37606;18766;85764;64814;35048;52273;55003;73401;67053;63605;65972;70281;78316;60011;47382;15032;83366;57001;11005;105671;105034;77015;32162;53024;20406;65273;39902;80188;84279;58751;95831;24183;44582;39800;94625;11782;102895;88972;45266;11157;96342;42057;47083;28906;23530;63954;47895;40584;64012;27307;38784;62938;50111;51166;58075;10941;39882;37892;58538;76431;62665;41650;33681;10563;79261;48800;33989;10474;51993;33154;48281;68814;21142;99274;24774;92652;31203;71669;62821;22778;28931;12776;60561;96171;99443;86393;96676;83342;51415;18526;101539;38267;18756;69037;91203;71538;88400;70176;72963;15940;102028;72724;38033;100089;66132;66643;71483;70022;22271;26504;37028;14341;73218;66369;11241;60253;59388;46477;70393;60857;53872;65263;24739;65124;67340;14488;35572;93921;100935;29072;73016;86886;78423;27809;31770;16465;26208;27894;83468;75304;103951;84833;84216;13224;23050;64627;41753;61144;32003;104811;55909;68966;60491;92915;81193;85812;23777;14845;81269;51511;33888;12374;23946;86638;200090;200003;64359;78532;12467;18842;48953;73908;90747;14512;68333;102429;30360;89174;54157;100171;54621;77215;33169;104549;52767;48428;36342;92216;36452;27429;50365;63838;66440;69802;88701;28260;94968;106409;17518;43692;58130;24402;99571;66368;99404;95954;94429;72614;31103;80502;75763;102892;37700;35473;14786;35811;65219;72710;38263;47777;67216;67143;88769;10323;54131;38627;90193;89609;90814;84832;52192;50257;33694;24698;20083;52318;19038;82675;40699;103822;38463;13047;89325;46454;21373;61996;104289;12124;83966;74815;90466;77870;100702;75493;42764;21932;93644;106727;69294;89858;100634;71145;70906;10859;94127;22949;77092;97900;76244;82598;25580;28544;27606;29398;80695;64950;52693;88440;45367;54151;38854;106044;78986;74928;34100;92499;19943;102689;60111;31767;68332;99298;63129;11947;17774;39952;87613;30404;61118;87004;78453;47788;48588;24770;56586;66525;10771;100320;25159;31831;30791;11032;27940;51957;12641;72339;69654;57708;88459;94869;34388;21896;68126;50694;82831;76885;101417;79463;55172;15592;29852;53430;41437;90750;61793;92685;72779;73163;13435;85191;99493;64509;89604;47275;45558;57573;10490;101983;38690;59341;63038;14905;88409;50632;31595;68342;77239;70101;94657;19614;103173;48267;97553;60507;15747;43673;72841;33311;16773;11676;73093;85924;79580;49004;28448;24905;79835;46919;32956;61103;67563;103588;73725;41098;88506;80470;44974;79816;54762;99784;55101;17517;77760;103827;28978;11570;50370;19846;11868;61980;37254;47223;24040;35090;33131;94207;100598;83577;33109;101813;70099;12327;78415;34612;105180;60762;100028;61035;82515;29743;77983;92429;17425;27747;41517;87319;99336;71948;12570;67335;82260;13883;22488;77938;54957;24085;65944;71083;45334;83124;36886;77952;38207;21809;80620;72305;78899;73948;100067;53070;67549;39316;82011;80240;32107;64391;69923;24860;91558;51345;46100;25710;105806;43400;76685;105298;82201;41577;26068;102749;56644;17449;200138;96889;72967;40310;26065;26329;87849;24806;31161;29014;77618;25697;93058;57935;90508;22891;91526;104374;33210;104813;62855;46934;59361;44242;47679;100103;68458;73835;73873;104058;26269;53156;79053;61923;60279;17252;60388;50068;91490;21844;11969;91705;34682;62254;87788;26108;85554;67175;50195;99355;60536;100123;26351;16982;72635;93089;88988;48705;100723;83632;200132;46592;75047;22521;28656;65583;19377;38660;33121;27100;103581;65537;18581;22994;52088;42836;26434;32145;45807;73805;14178;75791;94330;14188;29231;59091;40087;63597;72206;55006;44884;38776;83977;24811;31870;73253;67980;74636;86108;29008;23679;106055;43639;54655;43315;12384;38720;69785;30662;78129;15334;91458;23298;97141;49644;39314;18269;86679;11457;69788;49975;46267;77518;12341;101691;81054;76143;19444;43862;36222;96246;33556;71917;37558;83082;66340;94200;74183;44392;25923;94673;67010;74478;18714;41354;40900;46639;76016;39908;94605;17763;76318;28003;68672;65902;34910;32708;76911;39343;70926;64100;70490;89986;36300;59505;94277;85871;10520;36096;27440;36003;39119;77264;93500;31426;28662;42142;55136;69728;71987;48340;25353;52456;46673;43374;32583;97097;36495;94795;16981;86556;104546;29067;10163;52125;67240;22918;62953;94222;83747;32931;47186;43379;33531;102838;57152;40303;27025;38767;19169;51363;94405;71603;91349;78830;56450;106914;94846;76369;106623;85862;38015;56220;54146;27161;99217;66843;53642;101036;17167;24617;103724;74053;50005;52565;84976;103224;42559;71440;31375;94638;56154;74329;104467;36589;29496;15947;47383;15583;61727;75335;78314;28265;16399;48274;11272;62325;78742;100584;80565;13025;78571;87474;24133;74937;74527;70140;24658;15330;42130;41077;99925;13715;90502;38016;46753;78708;47496;104936;69945;75227;44543;86140;106364;36958;87180;26417;63673;52787;11127;101987;50753;34789;84893;101332;85010;99577;66124;69642;29937;29614;56093;71735;10717;80151;89241;99139;69726;29629;40281;53476;60772;57045;32384;58491;61011;53842;10921;64003;66153;96156;19481;86849;89630;23837;33103;95945;12802;44924;94473;22712;82278;71901;74465;45131;22316;75321;50711;60579;45548;28611;16942;70411;68955;60674;58877;47176;86356;36256;40836;37381;24320;88474;106608;42631;99660;36330;83427;48868;53948;49348;38041;31553;33266;83581;47860;20196;105587;105746;75438;16976;19258;27997;93191;15719;54393;60649;100308;58142;75343;85599;45574;102858;25957;26311;15464;13876;54623;92674;81607;11238;75794;80653;38940;64386;28863;20939;17670;59546;83786;60383;93540;12645;81061;20171;105128;52552;47308;99047;73055;24309;35134;95906;20041;80616;15543;104574;12612;103520;95001;11734;52155;86245;66667;71734;69013;75165;22880;87115;39651;99531;31125;97284;97624;59172;106120;26654;54275;41919;99842;39517;29190;84544;83661;89258;65379;11747;55884;76968;74033;34002;47618;36458;92923;69328;11690;92481;10488;59260;77969;26448;82882;23652;63169;92937;10855;99857;71827;55281;37140;13997;61676;71785;28640;51638;39827;80052;21731;92950;12518;85315;76391;64407;59475;76867;30846;45117;62043;32421;84150;104879;36414;87873;26209;48974;19371;58055;105881;73586;12348;55716;26617;41829;28111;95385;49873;51675;74504;22691;103979;28066;20837;105200;67083;77807;12494;49728;104334;88611;58185;22001;99936;26002;81577;78643;71966;80843;104152;46586;102227;15335;17661;96628;77988;21883;89586;52462;36609;106768;93593;86141;17034;93552;28886;105287;37210;81971;100233;102296;33935;11504;26300;79743;17235;29757;96977;13526;39658;16058;63574;66294;38511;28419;47878;20867;87444;104684;90251;50522;99547;79089;15363;40703;22928;30622;70021;103410;37490;58903;47706;81632;11824;57445;102250;16893;14710;100735;65322;106280;22673;30296;88931;36321;24892;72031;59153;31681;60262;58719;26263;34693;67875;79656;38152;27275;97387;84211;49204;27468;23809;83295;62957;88630;65127;45481;94600;44046;27957;32818;89655;56374;87542;99039;29186;91346;76740;29011;20092;41238;82976;92034;37161;42268;63146;91155;95413;70854;33157;36208;13052;40839;87211;47452;57678;46202;88605;28504;76673;51078;29114;90517;66220;31793;56524;22464;84104;61804;57069;37082;57287;55819;63222;18110;42949;24251;102829;70209;62915;55858;103769;15434;10766;42863;103926;71953;40972;45525;53576;45306;44496;103029;107084;70271;31186;70082;33482;49363;38219;11249;85888;83054;27903;19997;92516;45439;49442;71750;39562;92598;65582;34729;61997;73297;62110;10095;101464;65818;12929;67940;11483;62991;82562;27850;25060;76625;15740;104978;68896;82380;96793;16415;89044;106985;18069;23010;67868;93923;32801;102383;68925;97286;58379;15865;63506;45680;25201;21146;97132;78849;91248;25051;28492;22022;30014;93889;66241;63686;24424;44337;54859;76381;34169;54262;103415;32689;12995;104942;27771;17773;45993;104411;105144;23852;107150;11397;22413;72000;100030;11096;85400;44686;50431;107080;75540;63858;69594;34542;34069;90458;27473;10801;18224;68031;83109;46799;51425;45625;25057;104626;75452;74965;38387;103082;26092;51352;14102;101497;24100;91814;79420;96214;32936;91045;25607;67775;78749;41823;96533;40207;91474;46653;79082;91740;38641;48216;65687;28473;95879;93324;99542;67086;91400;22322;96847;24278;76258;71266;53095;63931;11532;49710;19522;24748;96513;30569;24118;65461;39432;104640;66029;74671;83193;65429;79710;48551;24282;14522;97219;35692;86017;22763;30361;39559;43882;23849;28760;77161;62303;73224;32470;30407;91752;103906;96056;57829;103011;86977;85710;104110;99389;10166;104231;36149;39282;62205;97720;35330;71676;37516;79240;35408;47709;105247;31828;55261;89272;40599;40306;16165;43440;38379;76000;59595;74749;99040;70277;20732;80774;97566;81115;35961;15190;70851;68720;39225;93605;46491;84526;34867;106653;102000;52068;12954;78406;72317;75410;77040;77094;32353;94776;69200;57011;105231;25962;17419;89765;28447;62557;96759;79327;11113;12071;16956;50731;21002;35786;29879;13076;26546;77267;67303;54671;75456;60353;87631;16492;92064;45363;12836;17551;16508;41206;10635;57954;85232;29468;85612;56395;74078;61417;66155;14010;71789;67287;85791;68803;21325;70220;44465;89906;76545;35255;54529;12655;81866;28398;92565;63326;68795;86575;17091;55211;81438;45479;49632;44477;57893;33181;69763;34696;13909;97608;74214;96564;18207;91980;99477;21144;92012;73503;86321;15724;58467;42884;81251;48524;106672;105602;103766;33060;101579;90966;85083;15682;83765;13639;99075;105222;82093;28014;97499;80034;75175;44330;91243;86909;82125;49776;52916;26508;36107;21582;67693;51405;44277;31505;40234;21984;58000;58494;21554;10784;58712;24170;20325;24346;66517;81680;74277;21858;93701;72862;96289;22561;39100;42077;83335;37788;60928;73849;28404;10610;88114;75729;64011;31373;80852;73567;82229;65218;93181;47603;27005;20179;82663;37538;79729;28508;33089;35071;56261;78005;74344;45048;23855;70237;99656;105005;52863;100347;83404;104233;59070;15963;106320;30758;20517;58113;80687;82001;99505;78631;13737;54418;24187;68793;56042;14050;41978;47269;42391;65930;51139;48963;96364;96624;21409;11154;87616;47368;94272;34479;31742;94258;52923;46109;39706;12234;69188;42289;88484;16432;50122;91914;67170;90017;48967;31581;35017;21993;15712;95721;87906;101087;46937;51371;103054;17643;107025;44838;65299;64337;77968;102885;45508;62196;89981;96712;20924;39846;84506;46834;17446;97357;99530;30796;84560;20262;69952;49147;63570;23351;12672;21927;70228;10380;67164;105476;26138;41068;105728;97873;93227;82797;87898;48877;75893;56113;100924;106549;103089;43078;100704;66852;11052;14631;57201;99990;69313;30619;66050;50487;77139;30268;92600;91610;97155;85725;93687;58988;32734;102279;52016;34110;36460;78254;17624;66264;10505;24445;14707;60557;105448;64328;22246;48989;87779;61194;66245;37916;65966;50619;32742;61591;43288;31164;78166;66233;69541;17095;103421;80530;49369;107133;23516;104672;102052;25915;102305;37949;70590;57033;73970;82953;18134;86928;101171;93623;15454;24848;39532;34364;30097;21712;68974;11304;74583;92873;43508;33394;102481;104870;44795;100142;30034;81597;80154;16072;67556;63689;27421;21408;42986;38095;61942;38123;30696;28816;64263;33595;82258;46166;102197;80324;86623;76366;56263;75761;74103;68513;70429;40767;55529;86553;86127;74323;34629;66909;35986;81468;78937;51653;89128;64031;90989;29632;34819;67060;87122;89877;33637;66424;91950;84679;28378;57565;22059;90048;67072;103629;82504;26754;63463;97792;106468;71080;32517;62964;69311;24296;105246;48980;32846;65062;50322;44342;18625;46982;104553;42768;37693;57414;11837;106811;89575;89188;66579;21949;31945;31876;91097;95505;12591;94298;39202;85289;18479;57044;22352;36258;39876;106254;68724;73946;27011;46292;70317;24895;16848;70351;14292;102744;12483;27071;47315;64311;81669;103794;45156;56328;20575;85692;68623;43978;90064;106752;11047;19224;82097;10452;100213;13404;106814;26795;50329;45142;49427;92424;17094;31392;23189;36157;42267;22604;63666;103442;85919;77613;23848;34651;18776;53752;31421;70731;62802;17084;55019;60082;100809;65153;41526;24449;66597;46829;55213;50199;57412;19981;95018;35239;17828;33947;54738;44446;106381;80604;70314;53719;59219;88485;82529;63172;47387;33663;99899;36904;37533;68047;93108;87307;19672;11806;70598;19917;70743;18427;90046;87400;64388;11273;44829;55854;50039;63151;21887;43345;40766;40344;33880;16180;79880;55268;12732;93037;75594;67301;73514;102290;72612;87184;34166;61917;22888;82311;29452;90660;58858;67047;33205;92545;36807;32387;30924;24667;26842;69564;89049;21639;67684;34994;20793;78469;106172;30785;63709;42892;26455;49276;92359;93993;75283;102759;29007;60609;68093;28497;37713;55601;19278;91784;68270;79837;21524;94484;66758;27620;18999;100607;11296;77963;36681;27283;32429;12392;105238;15360;29676;88966;91724;52664;48555;53398;40957;77537;41148;62462;76024;82415;22902;51084;83178;35471;67350;19053;17142;19023;86806;56602;40018;12919;10951;93924;17390;79266;35903;99646;45900;30435;75316;24579;91864;89536;93973;30864;17987;61974;63764;14180;79968;93776;45073;49960;106255;57952;81278;45005;28088;54205;49702;27303;66911;62799;29534;24411;27111;97241;100170;31178;13572;60349;41124;24391;37016;44815;38517;60363;39383;45592;50253;17797;84072;56498;36373;54860;23594;37679;104044;52533;15143;37333;13009;90460;36786;65142;88603;59778;22514;49229;76750;49984;74206;77126;96655;72323;91413;15907;80330;73320;87527;90848;53517;15531;63683;77433;83784;69515;67678;49429;60554;105826;54837;46427;55134;96960;78142;91773;56829;62277;52105;59907;20863;73152;31433;40647;87701;45779;51337;11572;71057;102938;28409;14806;61856;59667;54488;84160;104656;90036;54194;16411;63496;24095;65278;85983;106252;81961;65585;90793;57816;61625;97796;12269;61457;76316;68185;94831;10485;71968;19605;18968;105968;26079;20440;72312;78566;104906;99653;100184;29813;25916;29289;47552;102046;78651;91497;32391;85128;53684;105387;63476;106432;21127;75268;50258;11400;59445;35808;70001;87109;26595;22502;35958;40525;24965;94841;57503;44000;62680;65588;15845;17268;18649;54555;99930;30221;37836;106709;100353;57104;40325;102236;15951;68228;56487;19532;91426;28250;87402;20178;43754;60429;96832;24232;61021;69056;103044;103589;49024;45998;97249;30597;17420;22621;94006;70415;11361;50309;31438;62727;77953;16895;58789;49059;48789;52217;27276;49672;88782;32108;95955;49005;34263;56121;38143;75727;103966;93685;81439;66300;11512;69917;54636;67176;52804;102038;13326;35966;61961;105921;94018;37405;23899;19892;40601;55207;37785;16543;25302;99543;31468;69010;65619;70979;100525;68592;87689;73526;40133;26951;96904;104155;39899;57899;30054;58600;82662;105547;46874;99816;40162;27403;55867;30017;96790;102030;105799;47567;100137;17514;18926;27635;37136;63822;38734;36720;14749;31823;39239;34631;106746;40639;32092;54711;16875;95460;82957;78020;56893;49164;56989;67429;81837;63187;31092;85056;39135;85515;33938;21563;29846;24061;101809;101255;66077;102792;94036;59063;63648;82643;72080;48207;69842;55810;76765;16556;70184;69403;29313;104699;95908;34017;26960;106077;19500;95605;99417;71506;15380;28444;47215;43415;103624;14590;20344;73926;90944;53078;38714;59521;66021;105694;23765;45298;33684;13332;12751;103127;66704;67034;74252;15729;94054;60550;106139;37868;78248;31340;101816;96239;75688;84169;82538;23847;33142;54085;38431;62742;82825;68528;11056;90922;66672;31959;34482;60116;76242;33563;50304;71573;61972;46726;81832;67178;25961;91498;18180;68319;76579;15047;33754;67541;84837;19556;30642;12207;69407;59922;87996;60723;101061;74537;57793;93020;42822;101101;68311;18567;15033;35007;53312;82816;20252;76821;92977;94751;90648;79606;59424;82306;95355;89077;41142;18370;51981;29020;76298;106885;89592;10560;13048;39874;52019;36487;29026;21106;38212;27348;40824;90230;51766;84894;17114;42548;100217;94790;101055;50950;86557;200030;92962;27671;37709;37678;35206;49772;12102;97079;80509;13904;78597;43726;67641;15554;41091;79478;86284;79942;101222;68394;20472;90218;63356;28011;42369;69218;67568;21552;92337;84885;33838;87573;92376;104683;24920;41844;90260;59949;62762;90321;101940;71308;75720;44301;37084;66692;21587;62470;13940;101697;66794;87422;34132;104338;21771;70085;53714;14469;56723;92297;78353;103936;22938;71773;82716;27912;104464;23444;13015;58501;16744;69494;39168;18364;69465;43327;72985;62178;75390;84980;68314;70111;29437;75752;99337;100090;42739;30294;36361;76188;29721;86452;89071;64256;63492;65458;81412;32585;46856;50437;29227;34520;44544;40644;66355;17130;50094;28839;10198;92953;48677;46101;45787;31498;101485;63626;90684;89598;100806;25665;19011;38958;63973;69678;54796;38118;18799;66017;34833;69914;31188;40476;56195;80945;24284;21713;64473;66632;100708;30185;104837;77276;91448;102247;51959;22594;10537;58216;20114;66238;102724;84970;57420;27720;27690;103193;64095;75076;26837;94849;50174;103134;59056;43176;34035;31170;23436;55826;20898;90894;88777;102778;20714;44410;20685;44933;23927;21041;82486;56980;43407;30787;23639;92584;53653;18175;65847;67235;81042;94164;60019;16705;89631;88954;11746;96434;73824;22174;93843;15482;81473;50536;54693;97755;99867;106797;67636;23337;79757;77233;77554;62175;68639;93960;100410;70124;74102;90385;65052;24522;55011;55048;35331;26702;24352;10130;42241;49956;61307;59089;96714;67126;33720;69884;63406;67417;64403;99906;47830;76361;64613;69908;90244;60190;26308;57289;50852;31786;93099;69172;13251;36417;38074;14451;38999;38575;47886;80006;18633;59802;45160;33927;91129;24103;48692;71298;43851;51132;35036;20940;18334;29625;28984;36271;62179;59087;29857;92474;91169;86497;69863;42442;68848;83512;87265;22072;64971;22450;40799;38647;67480;19848;26373;70418;30498;68912;31332;39722;65121;95535;11955;20665;96330;38418;34913;34935;64089;100484;33451;53155;30329;35706;61230;32303;76220;32241;97096;66536;26193;27767;56124;83034;16983;80801;49787;54491;32078;81170;57422;99595;62544;60294;58052;58519;86124;74976;46417;41714;46693;35560;100763;94542;38613;60852;55798;105299;11924;46732;89247;64704;88918;11160;44319;92029;200048;91716;107062;47690;25745;106728;25253;80608;72433;18512;103529;89218;47431;40664;79970;45009;74410;46916;20559;66700;55179;80030;15879;96539;43125;51496;78320;76354;78854;62279;99652;30298;71124;69581;73771;14087;93208;53045;47696;74531;21931;75106;84296;39390;94632;16766;14954;38358;25387;84395;26928;82388;28633;33753;87643;69458;52328;75379;65961;90582;106891;69396;90859;90868;43312;12754;72211;105758;33826;63823;49827;44274;36532;102695;46249;107052;68435;34974;30465;77535;24108;96874;14120;101541;76879;90127;25483;48858;61983;59651;74656;101521;102798;77999;84666;57192;68121;90207;31918;66288;69485;87121;84013;40633;34256;28435;64868;52397;64999;53750;41298;75328;20425;80319;49882;97970;80357;29158;83562;58317;41252;38794;16436;85735;84209;20619;36962;84084;16661;59342;11261;87678;46252;75701;18111;27717;91361;17473;28887;13409;56481;34757;46359;68014;101467;84869;24369;19564;38241;93219;101369;92558;64273;89030;85704;13648;89205;22957;104077;15888;54948;66984;36481;81367;73441;100848;51775;85433;57146;99238;51037;38409;11171;15704;28009;11467;84708;79049;10188;77098;34887;51366;56075;106757;72308;76559;97239;66030;92438;63102;31061;101166;36158;89597;99997;71501;76857;35979;39730;73432;100535;60606;72105;77986;29950;53016;93602;96386;82812;37324;22436;20353;18670;47587;33042;85224;56277;105819;23454;76550;95415;15215;102696;11423;43095;45455;14265;70106;73905;38823;97140;54103;24395;22018;86324;44730;56747;26875;43284;102934;105526;89982;88982;89572;103047;90902;101582;59576;91330;67839;94527;68789;19358;89260;54162;42673;29598;96387;16326;94366;64819;54919;86636;87194;78226;30913;83801;68092;88978;76958;26859;66553;64205;101621;86480;102708;82937;19788;54704;63333;12952;91856;10682;28776;23609;24507;85217;16918;67359;18477;54408;28804;11280;88387;37425;58407;67702;16340;59716;24457;38631;15597;53578;38812;48900;63889;64935;14504;41720;106994;51700;75325;61914;49339;29883;90079;68150;101186;42411;21294;39752;28717;38719;45002;61870;44872;63620;14140;72404;88389;58685;31675;100719;64923;46996;28743;36814;32330;91197;94400;34490;58335;86560;36860;14662;43064;10196;84667;57591;41010;22135;40152;56131;100390;67092;43961;32147;21454;81454;79998;39670;92311;67116;85000;85536;40583;36398;91087;32087;36069;76623;28077;87723;46295;21415;103261;38657;63025;50671;15040;13226;81310;73277;30590;104628;26436;14425;34153;78613;77643;45521;78885;36959;81418;15256;11470;76659;15643;62157;43968;55780;82170;50043;79366;93668;105582;105044;20456;88562;54669;83716;69603;37689;31205;26062;31653;99574;14776;16662;35288;44187;90596;32862;24255;25530;60438;86821;64116;14193;35714;59187;83686;12975;55415;76609;45339;68130;100608;100247;100629;27675;46547;41839;42038;75775;56164;96829;58289;93597;20522;33614;31933;12976;100097;50686;19574;19852;85123;93603;22042;99172;69706;27162;10472;21300;15791;37228;76232;84232;102906;84982;64172;48245;91351;56185;54748;103511;33840;35907;79081;92975;92147;67044;13314;92203;12399;20728;86579;50707;63052;84551;106525;86800;47130;62373;83695;89542;82177;27437;102914;73010;35256;55730;26932;70263;30551;96563;82495;101135;42516;104254;200007;58939;62758;94044;65011;31835;82345;101431;73413;97451;99183;64781;91204;83590;68837;86195;45289;78258;23549;25523;14497;97315;26406;105868;31820;27254;46340;67608;15667;42668;40226;67748;97426;61071;24060;83906;75925;60651;84784;82341;84877;87471;101527;106635;89038;83167;47093;55219;77916;15858;105772;18151;102857;60152;67492;96155;54474;100666;40180;80686;43513;65276;11367;13438;43489;75447;23201;33611;22385;106866;17750;27458;41982;68851;47248;32233;31624;80669;76200;72798;50701;27698;25782;13125;74590;40943;13507;63662;72914;95922;17190;76414;24827;74178;70484;47206;85661;64344;97658;85019;75358;53532;10653;80536;50353;19775;64922;81205;71021;93522;23252;73473;43003;100196;90597;22976;40438;19794;101024;82284;106949;14473;77884;93341;69710;81263;34123;10943;60702;27434;77493;24132;91240;57206;87496;48342;30359;100918;86353;80741;10945;86747;27553;84627;53693;40145;61227;102521;40487;49114;37837;40384;49912;32645;56665;52933;40788;65140;101719;31030;30976;29201;93821;95981;64466;59180;22758;55212;45994;83805;76253;14137;106597;56519;18705;17819;66484;66901;68011;48822;94526;76218;27475;34154;104801;13029;73597;74131;78338;69980;40038;101323;38276;102970;72553;92420;84590;99559;63437;66846;66519;73832;67253;15445;73775;32001;56785;91170;37345;75411;31780;100241;48559;76238;91940;106634;83934;38351;63950;71144;104791;51470;27533;66842;94082;21440;72044;65418;102775;19624;44502;12466;79802;29989;57885;82768;62416;25584;90943;82118;105473;21662;51259;28623;86128;24923;11980;77230;75229;32061;48986;79373;104696;61918;24821;74864;95577;71387;61927;77749;77426;105086;91185;56480;79719;16265;59764;45774;84270;68964;92601;99914;27950;34179;60224;50235;54096;29035;63687;25313;55315;24656;23768;64302;27877;23119;88129;72765;54681;13948;43263;101217;59794;81511;89220;55148;20515;45432;54177;24011;83741;46675;72324;105376;31302;90583;76270;47438;22804;25272;53409;83762;84480;10605;105484;71970;82365;62860;22496;47707;36659;91861;67490;94245;25594;36464;52610;105704;14422;39498;43894;82459;68861;35756;81524;90388;105342;65861;91925;39171;66470;62935;95273;88457;63367;60935;72384;58928;105276;104539;58635;63736;102780;36432;65230;40314;45461;90663;15257;91207;55031;29119;41302;40368;76322;79500;26939;63216;28745;102898;39538;49110;65720;67593;94250;85446;10093;56352;75851;93147;37482;79627;25606;50171;80748;26661;52347;100348;101076;63150;50343;17462;69278;92081;34936;68510;63306;50015;86710;28700;28587;58618;13122;77892;36922;84087;14430;99582;11038;32467;29803;25369;56536;45800;13552;95824;26306;45583;81526;19376;72865;22974;34040;84979;50926;83660;34258;90732;106690;69247;43897;20832;61574;42713;39584;21940;57571;92514;67187;57388;25509;85765;85327;78425;65441;36382;41114;86995;68799;38920;23117;21137;66985;92453;13553;22762;105279;53085;59254;15800;82939;83474;82109;55318;52365;13810;38824;104093;101925;63171;13162;43472;47446;103126;32015;102214;72351;51894;73479;62978;64818;45938;69226;99879;41952;21540;47530;36815;87600;80937;23596;70185;104515;61509;60474;49727;51253;36665;29202;73719;17631;48510;60137;87679;13749;39674;28636;55628;70578;40724;97406;33743;36167;47643;14622;68733;41021;32611;17221;105814;70480;94987;47299;18743;95429;32032;26788;54215;38349;35004;106788;104017;41371;79112;64051;26689;60183;93030;56748;100646;44678;60974;26232;20029;97992;97113;97165;32748;105768;49799;82952;63600;200056;33082;12807;11444;92113;74399;44775;56040;53838;57553;32575;30385;57056;26917;53435;96763;34487;77755;93096;57989;78220;43523;85923;62092;22458;15720;87337;36090;15625;100543;26981;31562;31778;104405;102022;63775;48384;64946;21651;14538;67173;65627;101095;24072;94529;16911;66207;36499;54574;74022;55084;33256;55072;59652;12565;42127;33422;63536;61052;75144;78656;105151;51990;46144;74769;46508;96570;59586;16371;65700;74054;93088;88815;50733;21082;86050;25499;49327;64319;76682;15203;91886;104208;66778;52530;82402;49347;44149;35571;22511;83701;97417;85606;55066;19862;68606;33782;20610;55531;64978;81198;46519;37729;104351;102811;72696;106205;45766;45628;90143;80508;49654;71477;78558;46382;63410;74479;29530;50645;12288;15107;96247;34187;95813;61070;51895;68089;48799;90787;28219;19167;42583;34328;101381;14588;43708;32923;21336;33889;31773;86776;84731;61639;93281;41439;13439;58320;34711;99846;46177;22506;24924;29408;71127;28261;35417;10967;74435;104756;90642;81411;69102;106649;33698;102365;66171;73177;88812;64927;19744;106495;92043;22881;51781;43459;104087;63442;19824;71555;23929;61842;26015;31362;103320;74301;100776;100507;11371;103271;22726;67769;63149;17345;89127;58279;72923;71066;62822;10647;103371;92716;78781;21987;46373;27318;55952;43036;22265;26132;15096;39336;103208;21337;82144;15601;66169;44832;93385;95826;28668;32285;20122;88720;51377;95361;82785;13495;37064;62139;25204;33052;54234;90019;26366;17372;14649;47540;32793;84801;60086;21666;92338;48839;28116;54941;20290;46077;35102;34637;89678;104391;81954;78929;34222;30568;44164;68182;50377;16139;34279;78315;20585;84261;77241;41996;27692;91083;71651;36403;104193;28467;71026;86532;49132;97445;93830;18423;106200;79848;68145;69087;64584;33843;19733;66564;79358;70900;91851;64878;60672;82424;34966;43460;101556;49031;54189;79394;65065;11533;77133;61770;81899;22513;33874;104771;47842;14854;96045;14871;100995;56998;24264;22239;64995;43394;46156;40333;87867;64795;58874;95446;44701;58576;90924;37898;43110;33144;52290;63615;32775;48821;52558;43441;15214;11252;69479;12884;32955;87882;58731;101822;34848;20186;88761;65293;28480;61318;90960;55151;15268;72876;41353;10227;71776;78900;74571;22477;17029;52343;59953;25031;91892;94973;83623;26503;37439;52405;23507;79052;103397;25032;66449;66496;91013;60712;24318;63003;24853;11999;40663;54553;38283;48309;36806;88123;40480;90205;31263;17679;86240;75371;26765;50838;76556;104349;38587;79828;10810;107118;78348;67190;103482;54037;52653;34686;71281;33250;58885;63855;15007;54745;91683;100755;15414;103497;81651;103846;28453;85252;90501;53469;46221;52893;20454;64847;71178;89656;83822;73276;52287;30893;65531;44323;19822;21494;72102;37035;80095;30917;40217;38661;72052;78091;30143;16441;78593;16494;66959;69027;11996;94555;59156;83409;34748;56671;45954;38220;77526;103702;105831;47014;57083;33484;29651;81542;15917;13978;47810;33723;88712;43535;41730;34627;31746;43245;54604;73331;36995;20997;89124;44474;49709;36319;69351;18782;53308;29715;94665;72854;57774;21480;100878;28043;74925;10169;75363;88040;52992;101871;45210;96717;54573;77424;48411;32605;23358;62404;51106;56863;57499;28520;83863;60884;14966;83646;61067;11893;97545;37301;57111;106729;84283;32783;91485;89339;16350;37780;24037;59527;39880;16445;93625;41484;17460;49538;26328;66596;34506;37857;43178;58861;104418;44452;30797;38770;82881;24749;59535;97568;78441;51780;72383;87014;40098;13840;86438;56873;44552;78696;93748;52129;15532;74557;18978;96784;71432;43768;76531;80853;79670;104396;75471;106000;106401;44219;53735;24593;61433;10126;83017;42748;19876;87215;76053;82265;96379;79958;106274;78762;69054;87244;77368;18904;89087;41699;32276;40737;55853;73731;80863;103774;23819;68791;92686;24200;20570;93546;93000;23057;104894;77556;23047;58958;55702;42774;68158;103481;81056;84831;96762;68039;104242;10949;69401;103097;64939;10036;21739;42321;19178;95514;20683;72740;50180;92779;37237;103498;79472;93584;96424;89485;94924;95649;16742;44759;63795;14732;32427;27065;59028;72125;55352;100325;79016;57019;41129;80869;101500;97075;30063;73945;44085;56454;72672;39145;61280;79376;200013;34172;95410;56058;105712;21468;12752;71729;67787;69489;59296;90031;69916;95690;93475;20364;48979;52093;25798;68351;73500;49695;84120;41110;91078;63291;56573;53108;31966;57846;43022;21745;10754;66033;101415;99235;101065;50237;45999;44344;24438;82437;64404;86013;10125;48203;47487;44313;36846;79806;13624;42290;51137;72750;31510;105570;73079;14267;90499;73607;81722;62524;55310;48493;80027;47818;29688;60059;17104;69205;17584;87388;64618;42001;89427;14643;34760;11104;69711;71033;44035;42118;99444;50997;13322;20035;28384;60635;40482;100105;32787;75077;74394;72736;77750;83788;55255;69431;90163;13100;84764;62954;42688;79870;13789;12419;79777;51378;25946;25202;105738;49899;16618;96108;105504;32674;85302;100326;86810;40557;103359;21692;95913;93918;35654;50006;27299;10096;74080;89580;32409;94301;42982;39060;15744;24353;74265;74503;58705;36166;62381;103222;86960;13750;46251;40448;23387;15409;14876;36104;97824;86378;88073;26854;11662;82901;65314;41994;106184;51012;42957;21700;26974;92316;65083;25546;22895;59329;97778;13667;53025;43558;18049;60128;37843;18792;74870;96634;30261;106221;56152;94050;44191;29926;68007;38254;46665;44356;62701;39174;106444;26900;74094;10190;64712;18368;70729;100885;20267;62245;54498;31314;59560;31853;70801;67954;66394;79978;90719;25843;17770;97092;94999;72222;51283;44567;97203;94739;21764;17401;58108;61410;73580;79211;66817;51007;70631;60488;93646;64387;76960;20047;17817;56422;72835;77872;52579;54965;19940;59719;101159;32206;63108;96556;52293;65027;46581;68846;39944;60760;102425;103280;82712;70977;23800;103849;104265;31165;102316;68579;11225;99312;70334;94306;21715;14036;34399;90507;86490;93816;102378;90977;32839;23149;86065;82342;101918;65768;16568;73809;99051;94469;77623;44995;93297;35191;26370;90279;17289;94608;88039;21520;41579;27769;31747;76632;59533;49152;96757;46421;38071;102617;106995;50556;106136;67012;62502;33251;65885;15398;74660;33509;54907;40041;95864;90599;13593;20143;77891;83230;87318;102848;27854;42689;42524;38518;12710;85411;31935;85605;65171;39265;103747;88439;31130;66729;19562;24742;61703;23510;88406;104062;92914;47650;70116;60214;106194;46664;84734;69639;30507;95283;100893;97947;99240;84626;45736;90657;11758;50990;21189;68297;35817;34327;92052;23840;73359;106375;76272;85639;27368;13043;87657;92822;106369;22150;75394;75029;29808;102177;36169;81504;12343;82283;34671;87993;72490;86422;75085;35086;67305;35483;75963;11373;12745;92261;81973;32648;106767;42249;23690;104139;64766;74093;57982;46230;46247;24614;69040;71621;33966;68070;39063;72982;86259;22553;34448;101927;80050;92476;90445;36863;41707;106384;200093;59301;53011;53490;96423;91653;60534;83425;85818;59274;31723;51629;61128;21495;61451;23111;102050;102770;89942;34739;40864;44466;70719;28590;55160;24629;24308;37055;43087;74072;103237;89945;93130;80570;70078;25117;77955;60611;59975;80279;71106;56167;12057;99195;92129;65179;48876;55128;61200;82352;64807;105300;68757;10683;59001;102723;46397;36389;31749;82502;15131;66699;23587;80806;104751;53248;23947;13095;103989;67109;95311;82404;46765;17617;32195;92624;71623;71658;39630;74994;79209;100381;27521;25993;95718;30105;22473;86257;33751;40409;35441;43989;97587;26371;29815;77252;22921;39348;104822;53460;10491;19078;28547;60276;78603;83252;14407;59398;68904;33904;23415;50002;15356;31590;52800;57190;12461;25358;72673;52785;33991;12772;10767;59220;65586;101149;80848;95390;96316;27611;52260;84732;86354;41636;12063;37674;84476;64620;82387;47614;80419;31829;53049;30967;80587;34126;37650;54179;28143;87508;50629;54588;33616;42022;35901;94393;81477;96769;52964;59016;23624;63759;40094;89584;62252;39661;102911;13691;103120;99078;75126;26994;17381;58972;85087;22088;66293;40354;70038;34255;74855;47278;46322;78115;23213;72099;35554;15218;72599;13168;89031;101665;90042;80322;49293;15128;69352;85705;16400;40381;45022;79650;37360;74616;105634;64880;39157;100022;61146;96917;71076;90234;86178;69919;94662;92283;85813;78343;103016;42437;60461;80962;56973;15110;36812;17524;92161;83721;91754;21199;105010;69432;90477;58156;46897;36457;28010;96346;67081;11549;48535;31637;102694;41036;10146;11653;104511;105103;79976;59538;57472;77602;67105;66237;51061;87564;49648;66483;39995;83813;94912;59108;14101;60659;58905;33688;30948;67981;42580;23426;83401;21558;99807;97934;17610;92960;33774;74188;100427;83059;20908;103727;94774;53588;34152;29591;23457;12245;43115;62970;70503;20657;27889;49893;27186;36551;70994;44515;65594;31058;57509;77243;22036;78317;14541;18982;92588;76565;104027;99277;55476;85754;55790;16775;27935;80605;84143;81003;29806;92665;66230;17472;92271;30368;92400;96751;37866;78983;22358;65384;16426;30519;95442;52730;55399;102288;91481;89437;54310;93822;64991;70576;106519;83309;66165;15344;53666;22113;93661;86063;39094;96901;73195;53541;29560;69233;14332;90978;53967;79121;103317;60099;71622;103793;96034;57519;92680;16193;46104;69828;82312;93486;64771;75151;90129;99247;32357;60419;99331;92101;32718;64343;36163;19192;26568;10159;53498;48925;83875;62094;100883;93662;62730;88420;54545;79051;60130;72283;30817;10830;53227;105259;47671;25474;76025;82516;89144;27765;102845;13277;89649;59299;88651;19787;17341;106893;33483;44948;67956;74760;74619;56834;92060;29669;64316;17586;38862;41767;103863;11926;92887;70637;102449;33971;46867;40366;19030;53930;29425;87857;59005;68872;78508;100376;103808;85317;47875;34420;71444;32447;21187;33009;29995;69258;12033;11321;15478;74913;71279;35201;12490;16958;61762;74538;90592;17508;95547;65572;80544;74544;39766;65593;31824;34245;101150;19315;48893;90570;15094;11465;11494;69194;38049;40257;88510;55226;80670;49911;24150;33946;18636;74381;25638;20647;78887;23821;32098;101848;24427;13104;46518;53662;105207;92702;56943;104642;69417;27615;74023;60622;15368;38249;75782;13213;71322;103488;10016;58030;41147;87599;19723;78660;105015;11640;104812;68839;81563;79407;23712;82891;38592;59355;49148;18291;54951;67346;95414;96877;88038;56118;53027;53898;32774;40862;42202;87843;54137;73128;25554;87896;48645;75293;74703;23889;81210;14601;29580;61155;54065;20763;33084;21517;83830;72860;81814;77031;28689;35964;105979;36119;59912;38914;87292;35828;46289;37434;57357;60236;106611;50185;66423;16788;71379;49996;82930;95927;92947;23312;21370;78463;99645;53353;77925;97797;41832;71698;82843;18317;72528;103783;21086;26388;32051;26572;52770;22946;24946;26265;58187;95054;87572;74257;106106;28002;42991;35101;101563;11386;22614;42082;66352;11437;65424;103008;16798;101482;20704;21926;65922;77349;64691;38664;103756;70784;57187;76047;69042;88969;48264;45515;17489;92891;95585;48712;71965;47591;20257;49183;18930;45869;81786;15939;92669;88606;29257;54109;63099;86591;106413;81596;69304;13815;75707;25279;106102;15836;70401;30020;56453;31041;14550;85696;27525;29957;56996;24889;89599;10552;18309;82418;36732;11262;78927;64586;94401;59470;45127;49641;79036;105204;49712;46602;47074;31739;21164;56385;46462;25079;67663;21880;82166;26202;69798;19927;64554;13690;31022;39998;73748;59943;15338;69921;49122;96054;82160;82412;90976;52590;69554;86158;101399;55620;38216;85768;48238;59202;24194;59820;68509;58684;86144;57263;96870;73996;62256;57834;24773;48648;102852;74747;102992;44977;39946;32425;12118;71131;34804;25568;23550;36742;28970;80682;52174;28819;80501;72230;79117;39393;63567;66216;106193;20747;46164;46022;70963;22080;102880;23032;15261;85466;37566;100224;43615;40868;61439;26456;14787;50729;56180;47806;85264;89471;88491;100257;68095;42530;32901;88395;66090;16648;88836;51773;103934;69960;57102;23692;11740;80840;68648;40827;102734;10018;64423;89028;42197;93193;42013;82420;16787;33038;92148;42787;38857;62291;73823;70532;20449;44611;60000;49761;57959;22388;96588;76670;69507;18208;42253;40533;17119;105208;38456;26466;52097;93958;80515;26264;63033;45246;54202;27586;21607;16182;77199;50074;106008;43338;44074;106130;61361;44001;20995;86646;19139;39700;92293;58318;43381;51851;68586;100736;45304;31283;96138;83521;64742;79271;50750;39294;49049;69530;74915;30618;85629;66617;94324;49674;62041;87831;89425;34717;101770;63468;90846;69435;42589;40769;99122;28363;61976;27332;82518;84485;43512;97560;61317;63869;10831;63457;91946;85628;46265;47752;76920;34701;34590;41095;30082;24283;61315;82332;51325;70565;55974;50013;66539;97272;35425;47349;58271;20370;41074;70853;72703;15411;71617;40723;68490;35830;14116;16226;76264;49365;58875;82475;94276;55547;44161;69514;19916;55623;53560;72732;74352;73147;100058;60542;64022;55990;41696;82176;16563;73617;30942;100450;97544;24016;37188;100767;18027;16699;15691;12285;59660;24026;75114;11974;53477;83768;79724;77704;59014;64577;105217;37421;40897;92792;74371;58081;41891;64657;101182;63716;33917;23686;101507;100742;39957;73368;82668;68083;92992;80476;26716;77108;55499;87323;64833;102893;89722;13176;87231;35335;97790;13115;66592;106590;57275;49869;38712;33168;93327;29365;104846;86847;89162;52841;51332;86885;80351;43572;43965;57116;67239;18593;47078;87710;62666;10003;92706;51275;84616;23617;101220;92930;55666;104315;24305;60140;10797;64775;43839;68282;83726;67695;104237;31183;46057;38252;41385;99492;101604;64862;17447;82250;25605;92623;22391;92617;55004;50468;10596;101267;20631;57723;61401;73754;97388;23645;100345;61112;100225;73828;51297;90797;14384;102132;101110;79020;10270;67723;57712;73929;32307;35552;56593;95014;105543;71533;89388;43772;81631;56527;45946;55758;41425;56079;37032;73700;52953;42448;81041;97225;47869;72313;35438;73062;86062;106076;33445;99342;91528;94878;49352;45284;42106;73978;93245;28663;65459;76406;64000;18348;99719;81863;101063;39625;30886;57511;56879;18473;26483;96169;84650;85459;54267;21653;21566;22504;58978;31224;22077;47856;62961;46189;87816;16724;47338;59755;62391;92909;13714;92764;13809;35195;59804;52340;38296;64120;97849;59346;92354;94001;49006;23941;50248;38723;52901;100209;88483;102194;87492;29346;78876;70500;29397;73967;78764;85576;69334;63937;15789;103424;43102;72598;37255;28861;10141;64686;30161;38177;56242;27320;105753;50796;29459;84074;44018;75292;86626;15086;75009;19573;83812;70339;21547;38886;62285;55345;43325;94159;89058;46604;27321;42750;93170;12119;70016;52554;51083;82159;32715;103132;46268;92000;44010;29971;99643;37242;48911;47160;101027;20987;19804;52509;22038;49921;49901;92625;80886;61719;35770;90130;84446;42623;68113;66327;81793;86711;24403;29719;28202;21333;72705;56681;49170;48488;57988;55475;61396;104745;20755;14359;74306;55229;100842;87589;39593;38796;51782;67314;76346;33037;90504;13916;22481;41757;56257;68745;80044;69689;46481;82696;74087;49786;25603;42117;44041;23479;13202;94074;87989;41628;86998;78891;82476;90053;26149;16978;57932;58085;90706;50440;58754;37842;41432;59616;19014;100360;29763;35634;19525;54994;74074;31886;20237;70858;51812;70909;50391;42662;53540;89914;83766;97227;62901;75432;17837;28185;30001;35990;65516;24126;27945;55699;45492;86187;40553;15634;37357;99348;84458;69147;33739;52475;29697;36207;43267;69845;74327;52944;32776;16770;18397;81817;99374;73678;78625;104256;58649;52781;84487;69250;80491;20446;62451;11237;67988;62873;54285;42332;68398;103720;88565;103088;36743;16659;31034;42518;30412;102143;31789;65518;56211;67765;105357;15008;66478;16858;100556;102665;100043;83347;24887;75489;13921;96826;12049;23720;71840;49656;70706;27188;75464;15887;37142;44570;69904;65482;31716;15820;89510;84453;83627;99059;15027;71075;34545;69852;64966;100436;106171;10325;58116;45061;84808;100037;41745;91029;32305;87523;73765;79041;19673;70141;59381;101562;62251;73820;91180;73585;20362;87431;14585;30095;54944;32112;34665;101190;59483;62338;59986;18462;56333;70515;106931;100782;200033;66328;37117;45653;73003;33450;58069;69261;84366;48539;19151;34523;20966;59141;75897;101376;57035;41899;76521;79555;20830;15665;81189;10592;103593;72215;78600;35107;84821;106349;97575;14294;24491;19736;93618;38593;39851;30172;20255;37407;18892;54268;40510;75019;81981;57818;37211;54983;97484;86190;84114;77684;62834;38983;106703;62545;99224;60324;93577;101688;51784;52100;106858;78799;35887;84758;83097;97543;21200;76421;52142;39195;34555;57396;64424;43406;55305;39227;35040;17301;44091;94900;59245;13905;74066;51266;46791;20761;41378;23118;44563;35577;83710;53550;27709;76073;22671;26017;51822;84241;50594;16044;59567;17224;93407;33318;20094;65795;30177;60779;76710;66654;79128;18218;21772;85079;64491;68206;70857;77697;60087;55087;42329;26515;35875;37985;99892;41033;56396;52064;55939;83232;50192;11285;56949;18114;67871;66261;91903;91563;72276;100441;106180;70830;22790;103274;95302;30336;11438;26393;63219;16109;87567;66665;88131;38814;83372;91969;28298;89140;67710;103800;14379;56758;15119;34625;95427;74548;27154;23522;55616;52432;99861;93642;47297;48831;42585;89994;95451;52806;54250;90720;56475;65704;72021;24529;64787;18010;73742;79045;42285;85088;97643;87287;46363;86863;23731;59612;67826;25786;102612;89585;70773;71790;71590;71246;69301;86923;36431;51621;106332;53048;103143;68965;87814;73561;61672;32331;92085;94481;78215;25897;85447;28755;31700;94939;57794;29261;48990;69370;33580;47219;73763;15422;71738;68662;51509;70529;77253;13781;38649;96437;80701;61428;40720;31160;104341;95635;86726;76251;14579;73654;70025;100664;33159;104614;97161;64330;12936;28685;23286;66373;25444;31166;74174;84507;87562;75214;83911;54192;37698;81921;70596;80152;52985;25397;102382;30653;40006;64572;65654;21721;18398;44024;45739;43454;36387;47108;27291;25115;41539;107140;42743;84806;25256;42615;39510;40329;77115;40955;35013;49631;38994;30373;21070;33125;80236;48369;32524;104410;32012;21083;79458;74062;43546;73000;37164;99696;70042;63467;24393;35962;43424;65703;40670;99895;61074;64459;36883;24201;104934;31690;32836;76831;27009;83984;13985;97495;91024;58844;24045;66429;50728;31038;19317;36854;72255;95404;28542;30144;62044;15837;11145;76197;49685;46209;69667;96061;87281;19059;89367;19965;47527;36019;37912;32451;54779;45942;28853;76201;22534;86971;43404;96725;26486;58623;103183;10067;79482;91692;76131;64113;35324;18388;82757;30299;81509;102840;12403;67018;53648;103102;20167;18293;70957;88520;69909;100012;77772;15263;56316;42568;23728;31089;77715;49760;59515;83500;97252;84956;92569;24891;43453;28554;99907;100734;67515;44019;75871;17240;39032;64165;66945;46006;40672;106843;93394;75397;76726;56534;36774;87080;69746;89767;102864;65872;42381;18994;54780;31043;60895;74032;85828;96070;81380;27689;87783;28901;101293;65242;85781;66299;88004;26063;73767;27844;25978;29548;100504;106773;76929;89319;93416;106088;46571;20452;82644;17685;83237;67362;50264;66878;14909;42920;33731;71532;13873;60222;63525;30060;46368;51623;69421;18459;106934;50244;68782;87833;78019;43761;72981;64486;94891;50470;22619;83559;90456;81692;99746;102185;87959;64067;49194;67090;38648;45206;41219;14883;33298;73288;90068;85248;57965;55276;58656;19268;76644;95274;58727;53577;50093;81600;73865;38741;58973;30005;51472;16780;19066;57812;28385;40321;71689;57022;82711;66185;11915;94716;55171;66387;45826;15786;57786;23396;94627;16614;19554;67923;105734;56045;104572;13110;23717;92464;42471;60411;50841;40702;86521;84396;81818;22784;38926;41524;76463;106025;75159;104726;53100;57763;104866;14530;89969;93271;87251;61304;72485;35420;37098;100091;77131;104670;97632;95648;13996;55444;42621;68306;78901;40536;99773;11642;15416;81047;87649;93553;33308;64069;62026;38624;38407;71864;94963;18412;101594;50785;43122;11807;25219;45757;43250;35920;12735;82017;35882;44357;105778;93358;54119;42617;55166;14734;42874;63575;97896;42425;42430;88167;18689;103440;54442;86698;39818;74895;107127;38791;89452;28516;75577;35122;29243;72892;21939;89302;66910;97723;68298;11871;30243;90959;16030;91141;22025;29047;43875;92458;35704;81026;29454;106924;26295;97478;85024;31626;87944;20221;58511;99000;46425;52472;53788;56175;84215;59283;15195;48150;19219;15059;49306;93557;37991;53904;66547;13863;24926;35307;39986;96723;69264;86691;74271;90577;86573;22180;64729;24992;10514;91035;13678;80792;84189;12615;74453;100159;101982;11167;106456;68136;53567;69635;47563;84570;60150;44560;28958;21312;27350;21386;102679;53709;14651;80352;91908;33945;84405;91462;34038;69425;65497;23959;20771;24450;65815;23381;62024;87000;29836;100468;99980;66515;29988;79294;51946;82330;49611;20248;11393;27830;17715;24244;20168;66354;42823;33925;24672;88112;15782;51660;64094;104329;27170;94067;61020;93884;46950;71979;48767;91956;49896;77084;82316;13756;49174;103982;104385;74181;55079;25067;44145;51212;74182;20633;76334;53553;57059;13451;105146;72806;46486;72646;18585;63953;68444;64725;77929;48686;16631;14423;94080;65545;48293;95510;18850;200129;94789;77163;40402;90482;34090;89142;22824;60225;70599;39303;50612;73279;59571;32854;51891;45760;83514;11002;13036;79227;81944;43134;76114;91104;31472;84227;49680;37326;91364;51002;49573;25771;17135;104115;92353;76630;44099;75391;75107;82392;69504;68690;77485;67437;26776;74316;106851;100668;66832;73707;25758;100143;64977;57778;72038;35246;47881;26177;64232;33779;103606;48741;41658;33891;104190;25682;94951;17450;79840;42495;70362;51348;46468;86310;41351;102965;19254;102578;41235;73608;67606;69063;57363;52577;19309;41921;60191;55112;17124;84844;17071;14482;80388;92925;85831;90791;61922;37086;72917;36261;52884;103625;30152;68731;31445;87803;94622;95040;94347;95936;100212;95382;85892;84907;43591;44488;22371;39836;66795;23367;21766;76021;68405;19535;19582;31790;29219;105502;32653;75597;69079;41914;30015;95282;88081;41174;21533;32840;14494;68626;37932;72199;23775;64370;19632;85462;33526;83524;104953;82045;52067;36931;38464;81701;74587;76797;22440;72050;76881;64655;74535;200109;53302;16846;96011;78323;94431;91375;73857;57384;21930;14331;78628;106745;91157;70308;26310;94785;41112;96875;79526;99205;95008;44856;48608;55850;84338;100659;14855;101907;102189;15319;77059;83373;96442;106602;16795;11110;97264;64442;29642;72357;102790;45930;79005;75166;11233;20748;20697;15991;73169;106944;72307;65568;60156;83777;72426;44017;51890;85646;33553;84873;43633;75374;17457;25070;63148;58201;31826;82161;10568;48512;31533;74357;52858;65360;64569;46337;39530;69404;84444;78484;93313;79833;21194;34034;26894;69715;57058;25394;63978;34394;32220;93733;45467;59458;57359;42026;17431;52279;27974;69975;33247;21919;19204;90281;46522;69664;14054;76390;38735;50012;84284;90119;20513;57171;18416;15358;45021;65789;38896;24931;47821;52958;63205;78816;90967;48824;104577;37888;87863;70589;58433;11620;23563;105983;61716;50271;76011;14006;63460;26109;29078;31649;61959;57213;106731;83419;66141;48550;36295;58672;36517;86500;70217;26902;58547;63341;12982;68945;60376;94619;38309;89295;62226;84870;25309;49415;92858;95902;87926;62097;68296;106862;106341;94709;32835;23676;20091;76824;66991;25950;72452;53969;89022;12821;49711;63268;81647;77383;64345;72503;13825;94641;24696;76841;106505;62353;65839;21956;95662;46378;60117;32356;81904;33343;93956;73403;79696;78969;63892;87087;102235;64176;67200;45436;83116;102009;30649;43112;63903;59555;73995;107089;63002;91729;28238;63498;63524;46761;46081;92903;67344;22354;17641;67276;80921;33049;60361;41817;32034;16924;18118;16455;57848;100580;14286;41270;33730;30350;79742;27045;79359;39585;40556;94962;83016;49377;103841;67317;86616;19581;24140;55542;102352;56624;32606;58964;90594;54270;34168;48830;45976;28132;89653;89050;89166;91415;42376;44968;77380;76160;93751;54853;49741;66674;102416;45072;86098;66928;91910;65099;10103;62016;80003;71845;94650;26121;104729;30897;101839;95591;95973;107129;76948;43195;69517;101050;101384;85139;92412;80654;19501;60109;92024;71290;74718;75935;25017;95367;39795;96172;24679;24676;24312;57455;77596;31230;200087;103036;55312;95863;99022;56423;40278;79967;22737;28523;105559;21090;73389;93620;37269;90345;95608;11215;76202;62837;26957;68770;60756;60248;97868;29165;14269;57602;25544;62755;104831;44826;87531;106618;106438;101807;91704;25479;74734;50591;24066;97015;13414;77939;14841;63126;100323;20059;14094;44608;10652;18203;25855;76972;52528;10504;67374;61562;93682;84124;34401;88161;75662;105405;69681;46566;38274;73966;28217;99264;78340;15440;64532;95646;82767;27422;78062;53628;15227;57615;20068;71821;17547;102447;27315;91295;83909;18540;17546;66616;44691;48529;34622;17441;99486;12924;51913;48908;89372;63156;65936;66974;90887;36751;49078;47280;27013;65210;102773;58771;33808;73075;71963;26583;79772;16381;82108;46442;102814;70774;64206;102094;29199;93066;49100;15301;25964;38481;82267;20595;20927;22627;90539;79610;105025;70560;90839;58170;79328;101529;102922;67802;48630;36878;33063;47480;51361;95872;31173;15296;84964;37273;97536;93974;14586;19757;37762;94734;99462;100021;107056;81559;100746;13564;88946;11935;18394;104068;44273;29664;37829;11948;32816;92462;83380;80072;36833;29141;81016;79561;77545;79084;74337;41230;35422;68285;72630;69841;12404;17527;31117;30660;99887;90481;88540;20034;105435;33646;69191;34751;64087;39373;76460;23376;102153;35774;57630;24098;20020;35968;100838;77033;48472;75636;83835;67510;90761;58396;26439;71816;34785;74854;65141;32996;81040;101786;54918;61521;53365;43202;76425;72428;85329;105031;36346;26622;70241;36286;18774;55982;29549;87555;58290;54095;103583;66816;37501;43057;76068;31390;105241;21018;84102;58155;42640;20913;104010;81903;50127;106291;58835;45857;95379;64633;200010;45373;89423;33836;45448;35797;57644;55002;39147;97477;41065;72078;37123;60300;105220;82704;38028;33015;38801;30047;56375;55626;62312;64816;56017;89761;35403;65456;38577;66636;79817;69484;19378;13014;59037;34694;42479;107040;43567;41815;53065;83357;79104;16545;16718;64549;83405;67410;105993;105057;104495;17621;59247;19349;87962;59627;61790;60310;68617;25432;39033;31210;56539;52220;104840;37697;47824;17242;50919;18078;92213;47406;19076;84581;36053;103810;35050;80700;52035;93019;65680;10852;20799;64965;75215;93575;35610;94796;90926;39302;36488;40571;91166;71324;65473;16140;86275;45354;99228;70562;53996;56387;27123;84683;24715;16632;21352;23934;67356;54007;60690;85802;51579;92765;15198;43811;63366;37774;91662;75852;53455;35620;80261;39446;91593;97548;85182;32660;93615;52069;71692;80522;101523;53591;93180;45466;36939;22398;67938;51645;27492;79672;76874;66348;29692;91372;52586;77384;66103;101232;90666;99499;95878;34298;87609;57620;12418;52423;47592;15632;16138;74431;96735;54026;84534;74362;94832;78253;92689;100108;25949;76035;82699;18900;51503;65793;10273;40960;51341;73386;39600;63322;25742;77412;91645;10603;104682;85873;47220;33359;81636;35944;25841;19708;87439;88967;34190;97073;63157;76265;51974;77114;24720;106962;56099;35108;81328;53510;49636;94866;11229;43281;72780;88762;25160;24717;105782;24180;78178;87375;47822;36906;88414;95351;52255;22411;66023;18384;101491;73166;13279;92274;74408;29254;106504;67679;77192;86349;81231;65449;71204;21115;47612;29380;45075;32411;29830;100588;13330;72986;27527;38506;56110;41801;102191;46795;87637;64836;78268;89844;85830;56420;30383;81580;36980;32929;13233;16330;81986;94003;79465;95044;105792;102722;21629;87024;68226;67788;59625;62781;12125;62638;69618;30491;60527;15956;26591;28318;78759;101990;29109;82188;32382;29709;67577;23888;24226;99565;53645;49716;74721;64202;75499;16812;62332;45159;46503;66443;75975;71310;93920;47761;67622;83707;49887;90428;92027;76294;57261;70216;26231;97690;29934;33030;36327;101900;87608;50902;102660;97893;87351;106376;52702;92771;76613;65298;30099;96026;53168;39160;59210;25943;21499;48997;104636;16471;105971;79749;44714;93543;21928;75669;79800;25814;72955;77864;47820;87367;85961;105228;80189;33568;43159;70582;27217;22157;106855;10074;40417;85980;19425;75176;71505;42753;102960;56567;26685;17016;78480;42660;101308;89934;102120;55221;28450;85613;66809;105053;102178;96601;15112;23770;16145;68066;91848;45317;68612;54465;55472;29552;103745;22525;56560;19108;27669;77102;74728;64735;31338;103517;72069;78445;81321;100721;39817;71829;71353;38037;83192;44804;35878;13092;37800;81423;43950;39743;85498;76500;40233;84514;10007;47817;28195;100860;30503;102146;39203;86018;95933;101142;39923;26965;10620;87656;90822;91986;20307;12679;89290;86839;105909;16478;49039;84587;64308;29447;23099;99055;72120;95866;68986;14186;15552;81107;63846;68440;94935;54971;39369;27063;15332;39590;83340;103096;73869;37977;105727;16542;101505;66682;11984;54627;36733;93040;81945;66644;57987;28343;28702;28670;49070;58781;72726;105029;67859;58293;17781;86059;58286;13537;62317;39233;13425;66767;61351;89819;55796;85504;84609;20431;78028;50106;68467;24635;79140;39064;18952;96825;74852;56690;86940;57819;18056;38307;87410;101205;62720;94378;53854;42278;25402;62015;68975;58827;17379;55718;100900;66118;86922;101502;105722;62930;82015;70682;50338;97102;79540;83449;28331;87851;50772;23512;27564;24599;61766;92265;60520;19233;55734;102599;15200;35496;13448;69251;73192;67108;60640;68665;75270;35263;31558;80102;55536;72303;56877;70156;76825;83026;25527;90343;63249;35285;35826;29215;66232;17082;61788;41633;37039;101180;70319;74244;50649;77260;39503;75680;12912;12052;76633;84097;48981;51019;69971;68137;81556;30245;11890;13988;61033;103039;58046;100951;19934;99156;76135;91827;21103;10506;29260;92219;40089;96860;92912;89243;30282;84572;103357;62892;60227;68230;35450;71337;88433;91787;71578;78614;19879;53022;103080;41932;18468;24182;65530;13347;95854;67596;14242;20717;32116;93056;95921;39536;62464;74874;33831;49662;32094;83753;69129;84889;82728;34889;28314;36164;100389;20184;10667;48276;92816;50298;13797;58008;21562;88673;90209;55722;89059;43448;68302;37927;24345;47119;45960;39703;97351;71649;66805;19924;13382;31310;48543;50400;37456;33423;68075;93672;82646;101161;103399;55528;50832;80627;79207;41215;80713;21147;60454;48966;85596;44760;45876;91126;95528;82309;27562;22177;59944;47313;44866;63791;64631;91002;75725;82167;32900;95393;84024;58115;83882;68406;18582;39180;34911;68668;72311;28741;16816;50420;48930;51063;59239;23650;55520;22917;66872;13033;18959;99223;90134;50776;106455;30442;67894;19027;79392;86566;77657;104042;85297;68717;26608;38832;48813;29648;95858;97139;53506;33288;41088;75195;48381;72913;96394;96577;38668;101160;14316;88887;65019;104033;35791;19629;61458;50677;35869;49690;44130;65097;61188;25820;61827;84026;63384;102955;62902;94584;49441;31266;85058;41860;91623;71430;18268;101894;50592;106472;89884;105784;88448;80597;17239;10154;28686;57147;50779;37597;86879;91437;40655;68323;67973;26529;36118;54490;63807;29662;88084;15429;18516;29345;94382;37350;53915;96896;96838;16525;88583;81145;67188;75827;16713;90636;21259;85530;48993;49539;54086;49313;68425;63678;46306;46594;27153;77113;63928;38002;59781;45970;73572;40274;59051;60496;40747;31541;44812;41234;17537;32416;42160;42368;103024;31766;53572;22441;46540;65408;76476;97847;83392;62847;103669;17163;33486;33911;99983;14582;24980;18390;34773;46087;18523;66421;85065;12932;106993;56804;75685;95645;75968;40714;14636;76222;75765;53780;50112;20544;104166;68050;42199;11775;71070;77871;70155;90070;61239;75010;99777;106142;67844;79196;47359;19476;55673;96653;72608;46416;29061;45837;20496;19588;62427;46684;26414;49969;61507;54624;12558;59233;86865;13477;55517;12551;14457;75952;31348;50503;54171;38119;28883;79825;106570;74309;55259;74791;85996;52759;78592;19825;106917;99095;88173;76549;200100;19484;31962;81619;29275;27171;13515;68132;37801;25488;63405;21957;54462;66512;81781;69178;32142;60022;88759;12685;97735;57310;82552;70976;26249;57131;48435;21461;48302;27237;76800;102731;68508;66100;14162;73041;28942;100206;69787;23354;23842;67358;62777;27122;49951;55452;14680;37972;17593;13483;81538;101416;78412;36194;83041;73795;55941;96322;80381;44209;90201;49531;31872;60392;28967;88884;47857;24077;30411;100356;34242;39021;46804;77973;17342;87581;51461;68434;73266;33533;62648;59974;78151;52259;56915;49138;26838;33900;53209;66350;22062;80045;11633;21799;70602;31546;92595;22465;50078;25269;87272;36583;24432;55756;106299;64265;29113;94371;52471;25480;59698;14932;20682;86990;94392;85413;88789;21610;96968;35274;60754;99280;19628;49492;48628;38053;55046;106726;15080;38262;45034;79316;64493;63908;12706;100341;67656;38138;52212;48462;59454;33273;39478;47754;78101;100850;10449;96693;29967;23998;97458;80358;30959;13201;102971;200047;74203;104695;49521;22990;20360;71884;84176;34570;11295;77621;83074;81450;27571;16305;65942;48167;51250;99890;97707;104587;44472;85036;105967;22848;59062;37670;97050;37145;41926;96726;34932;80623;62594;39826;43524;52165;18618;22285;70920;106204;61095;67818;99150;104832;52052;53627;30949;34430;12799;72567;19877;84589;61706;44334;69246;41806;58688;83729;40237;12566;62609;81924;101202;84058;15829;35428;28983;47804;45681;79619;65234;13828;63012;42350;66075;91343;27354;20946;70644;29861;39641;62560;93885;86408;91731;39141;101398;83895;48452;30904;75983;71138;53610;92758;57109;56184;37361;11194;10534;38541;70289;32349;87889;18091;81788;57991;68842;53288;92575;83555;33088;106705;106101;61875;94211;65323;96309;104212;29888;48234;23478;51859;43238;46727;22875;88960;46848;20397;105725;96249;70092;78847;57459;78626;28494;90678;60949;41958;63877;100804;24631;62114;53473;11355;20235;96349;42732;82641;105623;15199;95940;44208;39070;36634;103390;84148;66739;33041;91123;24386;97629;51343;80521;77324;30488;11714;60125;93595;75448;93378;55346;32052;41623;42090;59168;80316;21905;81659;33351;62436;45643;105569;102827;13805;90435;47468;102628;44531;81796;14948;88633;64174;74688;28786;96361;104708;42037;60713;46672;105920;96324;83547;80391;39471;102349;92287;24378;56923;34583;65102;78259;72195;86357;94364;79213;13459;65884;12407;25352;103833;16093;17074;69419;54273;48761;38257;77931;40925;30324;69015;22444;83818;103765;23139;79236;104819;78308;54110;81773;27198;74256;63074;84660;82145;12665;20427;74097;65392;32582;77579;36047;58268;103919;61173;46478;23568;93640;44157;46271;44641;93469;49400;50315;84304;91963;45802;94172;49917;72074;33026;10479;68103;92345;29498;34718;22922;29290;51046;15664;50781;86414;88686;82127;11689;48947;24416;25421;81845;73308;90933;28266;87697;79887;33680;101974;83637;31928;20880;40835;89301;102913;26019;60594;89874;19231;39363;11983;41031;105245;50265;66481;94837;105012;61736;40751;91556;57319;17047;16538;31486;78381;27758;49428;103313;52248;99598;96981;47267;63879;17486;80134;51777;45274;35208;10396;60846;28811;18613;74358;41274;59191;95455;73557;29106;15088;37939;71814;10145;82430;16579;84381;46162;29144;44942;53402;34643;89820;40749;19783;92832;33592;61002;36139;96843;104938;38653;46010;36624;68905;104275;56151;41313;80577;36416;37458;62147;105763;99027;47569;92882;30505;57484;37103;55350;26024;46458;22540;12200;45538;31730;81055;80563;57489;43282;81065;19097;69979;97080;28913;27199;62542;74233;34200;50680;65647;81072;87787;46545;104965;50596;39149;62463;40735;80585;41693;29086;83570;39955;79233;103252;50372;45349;62027;82179;22043;42374;77762;26176;23368;63065;81639;76115;90364;76895;97650;97615;84755;65277;82468;84257;21616;10276;82554;68957;55849;21535;51070;13926;97149;18457;57233;53711;72414;30369;70274;99912;83583;23611;75023;37505;100676;25215;103345;82841;65489;106879;87736;93076;92877;71180;72588;57665;62903;45136;80323;39456;69612;12791;84986;71924;88468;103333;32332;33171;88797;42997;55741;88148;54414;16863;66432;15983;83284;66431;17760;90229;76955;69149;47128;17487;27203;10349;103074;99672;85872;55519;94092;73230;17053;22768;96091;59178;70381;51147;33227;45974;30789;100474;72741;83263;29077;17061;35150;104666;14653;34393;48521;32507;26093;100069;61814;46901;99994;73770;53852;12825;51108;37092;53921;38132;52386;11364;78081;52714;12316;22401;39462;16763;89696;18621;44218;66713;40323;77338;53491;88126;50609;65618;13121;25122;73482;34551;96260;77081;67415;19611;19433;62082;47087;49928;24913;26596;97953;54504;60714;43823;94792;106407;28046;51724;75802;107048;51196;27041;91779;75795;40611;93792;34835;64364;40029;32097;34668;38097;75958;19489;96788;52339;54569;83069;19304;89889;84416;44365;23906;81566;17728;100197;11651;50940;103522;94802;107063;69557;91996;96117;65694;40232;34161;92248;65658;32994;51591;41139;13633;60348;66452;60430;54839;84459;30697;10523;77271;92709;46208;77043;20103;85991;32386;65943;92554;76733;73267;57072;63711;38175;200054;91455;52619;24893;58421;48785;41479;61887;54306;31530;97661;73958;102552;36926;30399;53343;21899;104550;81617;84515;73059;76835;103743;23489;25414;79975;57623;62171;80889;71262;25237;32224;28058;84614;29478;42203;51882;27507;37431;104389;28044;74286;13851;48960;83697;78948;45310;58011;87377;105323;13629;63000;25284;79651;55491;94683;13032;15626;50553;57607;85867;97765;44870;47045;29180;86369;100515;69977;75500;12409;12307;72508;97804;89495;106398;21925;93402;32802;30957;99393;42931;46187;81323;41512;101835;12322;17302;87210;41905;60625;101000;35613;58990;106403;60018;40768;97732;77473;71883;19897;14574;57781;46517;35478;36070;20111;17731;53589;68540;39133;60457;49687;49507;21128;30021;46951;19512;71977;48833;79071;82020;86612;68025;75192;54938;48321;89170;83719;25622;94722;70895;42995;50327;20695;103667;70093;49325;92998;73669;105709;43341;30481;35807;62053;72101;33479;45433;20130;81503;27106;87158;76832;22155;83767;80864;35759;94909;24495;56597;52919;57482;71575;83262;11621;71201;86614;67117;51655;23743;66717;25592;59534;38378;58079;93766;41340;80739;32297;103646;93380;35700;41323;31509;62410;49017;41838;25760;40421;87612;46075;65260;42172;90002;83009;11222;20628;25994;50423;10777;87012;100571;100014;22770;101838;21243;93233;65723;105980;41466;16490;51684;20435;90760;75612;104194;94175;67269;15492;71363;27281;41055;21644;33446;87127;77850;56003;21426;21872;53772;76603;24930;49249;46575;82360;21708;69064;58819;30717;95371;79809;85626;103108;93424;22993;50628;61975;89612;94100;48570;95672;74837;20093;38299;60906;86745;84203;91276;32071;96166;13344;45330;13431;45138;88546;63042;73517;86780;105455;86592;37690;35889;36730;13315;96764;47127;24028;22017;65283;17597;104014;87273;28293;94677;30523;102432;66465;17380;25694;15439;50525;37497;86263;23192;99512;48263;106217;57424;96041;34455;44635;20084;57513;83638;65480;97497;80728;19453;70629;91984;45413;73801;53793;16187;73834;14441;20681;62789;49060;73844;23416;105374;105740;63312;81562;26673;105879;41666;60789;48155;97802;76418;76106;73004;47638;28781;78638;71474;79186;96284;60206;89816;21543;28348;39189;12659;89153;44914;68781;61888;36704;61535;51540;105045;15279;99266;55292;31407;31944;100552;45162;45456;80997;60512;15277;63557;76028;20204;19719;88672;105945;19531;93508;15465;46390;24677;47653;28026;64670;72100;83384;50846;66902;94504;23685;97616;102126;13428;20415;65155;101453;42935;94169;84379;10836;70816;78520;72886;50495;10094;91968;102542;88688;24553;86041;29100;46261;85921;70506;32927;26054;52267;13939;100359;30858;67021;64464;27094;94995;102887;103091;104559;74303;87817;33276;89897;85667;86074;28850;31967;66905;41500;58818;76422;99104;44087;90090;60705;83313;71079;106554;44651;80842;85573;80099;87209;59409;90736;50842;58678;45126;80055;94883;46309;93855;18562;79343;95373;11291;62356;45673;88517;44381;34437;65653;94458;37879;65015;61022;24669;42903;23485;78940;102690;54120;79039;87086;32396;64877;37019;87442;23682;50544;49536;103065;27991;100433;13264;13171;71510;58910;76755;16385;92579;104135;99109;93738;69769;20547;92108;75587;22634;69734;46414;55787;68065;38562;46178;103164;83171;83473;97874;101016;23456;44077;19975;105388;13743;17283;30079;34039;69094;67511;91069;77690;55124;36141;32105;55385;18265;105938;50027;37314;64313;62272;27654;14953;34865;76399;70812;50025;47216;97434;86405;79093;44773;35294;41604;63224;67142;55391;78105;49264;93568;35151;73589;41556;105885;63143;88973;56767;70472;41607;74486;13928;94209;71935;21573;10891;101956;26977;95399;84771;106304;34983;99080;100599;35629;99042;91505;76290;70310;17357;49748;102363;101386;82480;101433;21269;36150;68730;43029;48904;35181;18606;102445;54496;89293;39448;50350;101096;50402;59891;32124;28146;85375;48653;77540;69548;19909;55863;59476;18008;87934;99785;75696;61882;31059;20078;51399;78516;63564;102461;44546;42705;49963;37894;92999;106941;57130;73447;51482;81614;19751;56074;73126;99949;86291;92984;102782;18236;27664;94345;24759;61084;14258;33557;67308;104133;81638;74743;71820;62432;15725;28382;66870;53826;44095;26724;101019;38185;50081;54289;18352;23863;15695;16431;40616;70443;54087;84204;96113;77930;36159;30120;26064;71885;48618;91955;40099;81290;68928;41665;72936;69011;93612;94455;85763;79819;53596;104026;60010;87498;96313;29812;63086;91339;86672;29655;95624;55973;58608;82317;61879;35149;60508;30159;60933;88716;54324;31842;102504;49489;75507;72174;101396;95350;91988;75164;106296;17793;61078;52764;64322;18821;101865;54190;96263;50430;89230;85898;101808;76193;11505;13364;68576;32125;84198;78193;105496;105365;32691;60523;34505;43138;97619;65735;100925;37387;31415;60858;74759;62763;52291;52620;29371;68981;38167;76281;105910;19272;32448;59372;17978;107009;52890;21632;25807;93548;24919;41445;58423;48538;83300;63181;38134;88646;81859;11723;56601;67888;29718;74259;62553;11886;32471;26786;55001;55765;47210;32049;17579;69655;27433;55447;90110;77734;65130;24497;70494;86774;75784;104769;76224;52285;32363;106863;50721;81018;78856;69184;90829;49684;35395;73200;104244;37021;89424;79843;29657;23209;17213;84059;50529;15980;38616;68909;97901;69831;21672;104037;31328;38903;11230;104298;59641;101831;51636;103870;52835;59365;96032;67948;26283;48763;42351;10017;16498;95296;65566;91280;81097;89340;35295;101607;59514;12562;91659;59042;61943;20135;76210;92968;99472;92762;52546;28532;102591;56754;10100;72939;45226;90355;38585;96304;50901;22806;101092;27301;86134;59902;18445;38621;33048;93352;93881;106737;53682;68305;13270;27863;47721;97126;76680;14015;63053;57500;78213;65501;30456;99606;44585;74758;77234;90608;39421;78655;47194;49513;12280;28171;26003;63495;43646;47118;23982;85196;51355;73383;24609;70272;19527;63998;92642;50091;59909;58850;55924;79022;68562;91056;25095;66195;49944;29208;80838;56404;91359;87107;58036;60943;92194;33560;11888;60024;42051;70253;54400;42708;23256;47427;69950;39267;87063;22218;50891;26140;79898;69175;26771;43871;56771;26312;92691;59417;56781;63728;58465;90805;105159;11555;69309;31053;76203;33388;50589;61459;92009;87528;50169;46525;49207;48857;29364;74143;63947;100585;28299;72003;77291;76943;12987;23011;74065;60316;77907;25810;102549;72372;57579;105855;66167;62378;93745;46451;18614;92040;65993;92059;89254;100085;11923;59852;20014;61314;97001;82354;18863;13635;37337;93120;74914;21114;70499;55882;90815;48772;65022;87544;64189;73962;105591;106616;100950;56149;13614;86279;96211;34684;96844;82089;29319;15644;46214;94859;23622;14224;31811;84728;50162;60914;92830;27661;12237;68400;103715;69756;35423;12379;49617;81271;104290;86019;49626;82417;102205;35705;62359;79602;79888;29156;12926;44894;83703;54263;81798;11835;49159;80650;60656;93450;15778;74750;36682;48254;10252;34275;106633;48587;93481;102158;42452;37826;91374;100374;44348;79769;56654;100265;66808;103648;82996;73999;24680;99079;39084;70936;95702;94890;14546;92695;51762;15267;76429;71797;64143;40700;100793;50663;54600;14261;80520;13194;15732;17695;74899;47076;88786;54878;38759;91561;56140;13071;80111;77288;75392;70609;44282;106310;75575;78002;74267;58866;17470;45443;49488;23432;82772;200146;36371;70190;13956;64614;105505;41183;55376;41659;100798;61250;102704;18603;106835;49790;32367;102512;10471;100825;94617;90641;27702;18323;11013;55827;55030;89679;47151;57296;30699;75762;84578;37227;29005;105292;87955;26757;97164;76830;60529;67312;52224;28405;102160;22019;23853;13284;17378;31666;79581;44064;83317;82439;72362;58434;63253;47218;80138;82909;43564;81044;78047;45196;64035;33044;73788;32295;60371;48399;56496;80061;81827;96898;58034;58049;47750;51499;67600;17384;70834;42276;57040;67575;66915;14824;39005;61482;73983;29177;39977;66992;82353;50540;62999;78803;40681;66568;101852;93051;105032;91870;79884;30440;11365;79831;35489;102623;57889;99380;39355;102818;60929;82694;53258;101969;16972;82581;34648;95931;68076;70892;93634;42457;97974;17513;57907;57441;33770;33419;59809;66286;45855;55099;35733;40204;61726;102558;95951;42227;46246;46059;104356;72928;34896;25217;88817;52696;14958;49855;14471;42419;104417;97216;60822;68110;20157;77300;43598;80708;100133;48939;97597;83101;40057;67368;78187;43306;91727;37779;23003;84185;29535;43607;52446;28126;77374;24314;74745;12227;64597;35860;90860;59552;23814;19753;38607;32913;52164;85929;25901;96646;103379;66061;24051;44950;32126;96697;19321;89713;104588;32230;41627;32757;27351;104250;15525;67278;99928;37355;17377;54714;103355;66467;61195;30842;94383;12851;56891;42784;57049;97063;20854;73860;77179;85673;84672;68647;27126;39430;99151;82871;92750;106477;56743;67829;100232;43712;45703;46716;78981;75303;74879;104452;60146;85200;56027;17761;200004;26259;74280;75686;27818;21506;37245;57298;10421;107110;106323;83690;89093;85367;32458;60894;34120;106245;200086;13965;51657;70795;90225;42450;15470;72162;101086;14434;88445;32335;104554;62163;34798;71986;13736;22510;30183;92618;55058;68161;32561;44132;23573;61289;68082;67908;46054;39073;64325;84230;40160;21140;56455;86933;76716;32705;87628;68280;84383;83664;60408;19778;68162;61835;78171;96255;71936;70453;53305;40951;79168;79348;90462;43720;85102;36143;34050;66841;73354;60729;86861;22760;53143;48627;30396;54629;22359;26802;31838;59339;68971;12898;14554;78792;53989;53131;81176;57971;102939;100336;30550;101263;60802;36234;82582;47430;61484;102070;55569;53036;11067;27652;93124;54457;12113;20008;79801;17762;34294;76371;51548;93735;90998;18464;102485;35682;86825;89216;54238;82135;36037;19832;89473;58638;64168;93798;63309;99766;37937;79541;87619;14074;72972;33726;72463;66796;44753;58109;84155;75024;52681;10651;19680;16723;27862;97851;60912;51841;68241;56790;46060;57861;31371;103599;79868;13159;37854;93774;49260;41595;100909;68622;60241;106508;43667;77025;90546;54252;54079;41184;91672;64784;16634;15211;58417;38713;97346;53117;65209;92541;94934;90380;36183;48806;53924;43275;14223;50118;88885;75100;40562;71599;23616;83410;66557;95536;62433;90730;91133;85931;70569;30315;89974;15407;67604;96711;97192;103104;24240;79455;23698;104227;83951;17471;18578;79162;55587;23248;20355;53864;37548;61938;62595;100972;45624;87708;49597;79721;16092;10457;40796;76490;39663;74305;60516;38731;66263;25953;29323;49746;106772;61336;12506;72330;22890;91668;63247;37280;26215;104219;43537;67958;74185;61034;27559;62840;29604;70568;17988;42097;70420;73736;66757;38410;23463;56669;45831;90756;23623;54423;87918;63389;19958;71098;87154;32543;106262;41296;65957;10656;49722;22637;79982;102262;91299;45038;88446;95492;23353;56592;58492;100846;101020;26703;66010;78335;47717;67757;62140;103218;92566;80073;15675;23220;103163;17049;77521;99065;12015;55104;101047;84003;58833;11539;26895;102882;31997;93172;24733;100098;90188;76123;58996;63577;52798;43824;95786;42073;43611;25774;59983;46048;75882;96551;35447;60826;24651;96264;31597;51165;70301;101111;103175;19068;65662;96811;88902;24451;25565;14051;61570;35257;83492;102860;56204;66947;23007;58680;66677;105310;56685;64602;27222;102085;44457;61435;74295;84361;39387;56489;50757;43200;56778;24952;70143;14123;31836;58641;81908;11877;84778;38590;38237;42566;96695;12820;103285;26933;106253;56693;93667;52914;38322;28441;10809;68426;13983;81116;27264;75860;69902;20065;95961;99506;62322;54476;38421;76002;99684;89253;39196;27393;27134;75476;70771;92974;94479;61930;42502;16938;77223;50696;50736;28098;95847;62593;14813;69460;87404;56505;25990;59830;59455;21685;58160;95781;82235;38595;39153;72857;62566;45982;88516;75826;60335;63841;64893;43131;105869;33296;32577;59493;27781;75574;52609;52269;44272;67615;86394;77028;51829;104073;19706;89280;62877;55945;49182;31469;26217;19003;43944;13309;12852;91245;34838;85671;49814;13640;90963;72654;51376;42883;100984;76532;99519;56156;22662;32987;20010;82771;23524;106154;80796;11014;75480;11624;34483;15142;61515;23703;31862;10870;52453;47501;21765;39694;10271;55474;15923;35402;93730;105837;39711;20145;92522;106552;83542;13693;67182;79280;68521;65421;84080;18437;61055;66035;54266;81920;14658;37992;96487;61544;71153;59948;55130;13869;13148;62201;60391;94957;93994;60158;82234;83174;69686;24034;57821;86305;46949;91077;80335;53621;105394;43521;36213;72296;101354;17574;80562;105535;84601;72470;48227;47661;24859;69956;47460;41440;35436;83162;76370;73810;56116;95574;51455;32426;77444;44504;99840;84470;25835;35798;38576;44668;80841;10835;60197;76664;48179;52024;31939;44361;74940;69271;40526;37554;99502;44731;68033;79668;44947;45454;41195;83187;73825;82612;101546;100823;64894;81570;83269;30591;54992;20368;89977;56637;10910;83960;57117;48759;87213;57662;45351;68976;58230;52173;79252;73911;35618;18703;23330;79241;78681;73745;14229;16509;46278;48770;93238;51281;23987;59531;97547;59422;56897;61047;27090;60839;16629;101537;77716;41133;96022;90328;36034;90075;94302;84855;65339;64127;57333;21777;99872;53290;17382;34810;23931;70521;56617;16225;102203;31162;54566;97652;55165;70169;90241;101304;57808;53433;60025;62708;99014;83296;29331;71947;102997;85148;68213;55417;30208;26817;47126;24221;87227;74176;99720;55680;19306;60080;104692;101564;54281;51718;36137;38147;53004;100501;79563;91557;45794;81341;65879;29278;54258;61265;15864;47565;82106;53664;30022;99503;27824;39482;11582;84659;84557;77261;78029;78410;15640;45844;66590;100903;68771;23796;48566;93127;92747;25944;70044;59920;36451;97325;54664;57795;68666;62527;43294;56628;86418;99220;26547;35226;19190;76674;77430;27953;45511;77979;78609;32730;18277;42681;97656;88449;71239;72408;64529;79981;30326;19015;21968;18669;68530;10467;19375;69286;45943;29146;104086;101829;37388;86641;16017;44737;71433;85143;105640;11724;103700;89554;18536;20824;84690;59738;104432;56642;103535;69777;21977;30752;96373;72583;39236;55593;74640;45059;26476;69381;96016;27487;97809;22585;18251;79685;70451;52978;39735;104099;104024;23051;73285;73953;49181;40185;99433;42741;28989;42866;75657;86621;31630;80773;31787;101169;69843;82551;13085;21191;92838;41099;99592;103263;82140;70335;71192;26111;42074;42426;92491;73289;99413;80446;55838;27391;45756;57153;26230;28506;28413;29918;47616;18041;32570;50960;37594;95849;65977;24500;99056;99849;96959;80078;13613;63963;104645;91355;77586;46733;56903;29641;69164;11743;82419;66721;91128;47684;24321;71774;56581;21686;15522;89710;55538;49321;11952;36541;56712;95256;65525;28785;88729;105334;82647;65451;32991;88074;32005;12006;77273;97506;20611;51844;76724;95470;91333;32536;28765;94321;88541;26430;46770;59430;83181;65573;95281;54899;64616;102068;38923;38186;56629;93806;105537;60788;57598;96813;54544;48827;38221;61640;96199;21793;69815;49141;13520;105293;53769;12768;42552;39098;72850;24084;29512;24417;30554;30422;100688;32477;55217;50751;40206;12226;65532;31979;72458;49023;106155;56855;94694;87620;92268;43509;56600;61007;67821;103509;67902;63637;29822;62816;93251;90991;74343;13966;100294;47390;106527;40046;25103;22616;95260;11126;93453;11779;83898;10940;83014;30769;86826;34405;101561;43690;22075;27793;94674;79661;77220;84028;77361;80360;54345;28877;39968;51446;38898;58873;24119;80638;59198;39216;83436;81499;75538;77791;17199;62057;50583;14474;45727;90305;34499;75631;55635;59702;69012;81606;81916;35809;78273;49837;66867;62185;32460;64284;11072;66988;67320;37824;57879;101191;104859;92785;85481;10536;52963;72678;22839;97364;73193;70912;62831;51445;63778;89048;57807;16964;93842;87798;17067;49167;44013;39137;29049;100286;64902;27642;89638;64445;80308;91291;36997;101044;14104;56666;53893;68583;104378;28985;75534;44367;85201;26631;39341;26147;15505;88511;47389;101794;82585;58961;42643;104327;13361;60463;56258;55873;22577;54871;77147;35954;22655;78327;64888;66880;90890;92546;29428;75037;84521;81345;71438;46163;86562;85531;22676;30885;10289;27927;23275;29375;60639;20313;15286;33155;56006;10428;11450;94889;50935;22528;42763;38758;82266;69257;31754;77950;67292;25048;30444;25718;29768;65401;28838;69957;104960;74609;79936;33514;86769;55597;85839;40514;89847;14671;78208;49708;29828;77997;54042;88809;10364;90233;79689;96137;101661;71214;29516;11454;82794;74861;91229;25904;69665;19675;101640;80298;34899;23785;97410;78235;92746;16681;81270;87301;14346;75104;58529;24076;94380;14809;35227;106688;94287;50347;76342;54900;43272;102103;74687;43861;29656;26052;73826;32200;104174;30436;104739;102493;57198;45753;48924;58571;51605;78472;29784;88560;20006;82499;88840;103616;62456;82112;86856;15844;97781;63894;84671;39638;38472;48473;41840;20250;90387;32337;55333;88841;54320;36395;34207;23442;13042;86572;97924;99622;29187;17099;97702;103223;37450;58982;47139;42827;71610;17245;53423;26983;97838;88423;68982;87062;58191;43330;44613;43886;56552;63633;53611;103736;94232;39806;43583;57682;104035;85850;12686;61982;92246;91636;32597;18075;105199;102769;65932;15697;32408;82681;33550;83270;46157;66349;23822;79599;78935;105177;80447;34949;11484;48574;48339;94775;51419;29105;70213;13502;22118;106447;46212;41060;83196;10688;49448;37259;94334;52239;77574;89012;21252;46236;87668;64109;63439;103821;86656;63431;25653;67560;63598;16831;35385;37023;28452;11319;28204;54430;60994;96233;94586;60671;68133;36693;94908;70383;16113;79793;59280;20542;97234;87136;36341;63048;99043;13505;87597;80810;71707;79269;20231;75317;27708;61429;45582;80612;71962;12650;102917;85588;68555;80325;29711;92303;25466;78936;42080;76052;85966;103998;21876;53875;24407;99515;72459;41856;68657;11266;72073;101793;93521;50518;35854;25703;62271;28715;97130;66503;97959;106662;96473;48631;48787;31601;82445;86105;54467;53359;38922;67758;54893;59031;84891;92083;49966;49851;16684;43626;86792;15834;50504;13030;41324;42605;42211;87815;41459;34727;34056;61607;59396;76347;29463;70827;59032;25315;68743;76437;51999;50653;102630;100102;41410;40119;30994;53704;37742;33976;51091;94490;30775;50427;52742;34660;18882;73353;30151;14774;78361;63190;40429;89467;91656;75170;60925;67635;53903;87554;85737;38231;32374;22549;60016;31297;72261;45356;35491;23043;97860;99636;44288;77634;13223;50771;44378;25553;32321;25271;31674;101037;79992;10116;59088;34563;33716;32552;56090;84303;39450;28107;62578;62696;20730;45088;87775;27367;69346;62290;75033;15693;40742;88990;44211;58274;75728;10626;48174;45355;102062;89782;77269;53977;77957;88047;39204;53275;32639;38099;82624;72191;36767;41882;58088;103790;78738;60455;38482;47080;36186;54829;64365;30823;101410;25883;94221;77452;87673;100665;43086;63360;73350;40626;31881;100483;49491;12822;29924;17803;88577;80674;32106;66551;33221;101007;42676;61319;62164;85197;99071;88607;92159;51711;103113;93351;69179;23081;87879;35894;13558;39372;40121;80477;82840;15017;56248;24155;48951;45426;80775;55889;11012;52373;27700;102534;106105;15846;66164;31948;56267;43551;105339;80226;52330;104904;50889;45285;62761;104852;90437;89588;78375;67323;32761;45402;28083;39832;58323;94748;71868;83273;45949;95287;102644;100750;72848;106555;88802;67407;82604;47408;102524;57948;16635;59052;85072;36020;93176;64192;57636;103443;37083;83566;25430;58579;87545;74133;48410;103185;22557;89338;76009;25753;21684;78846;81720;69727;84920;55776;21338;90568;102890;70178;70825;10480;64170;73360;43410;73216;55285;28666;68694;62124;21277;89880;25448;56911;101353;86096;94363;58508;92620;19968;61532;11455;16019;22422;59523;74923;30150;73427;39725;86103;50464;60417;69493;48756;105479;55489;35548;29328;58763;11124;83011;35569;71175;96614;35671;78212;57679;86338;30526;106379;18887;104107;87995;36228;75916;63206;106236;36296;38246;53688;11693;24807;96745;69887;25030;35232;19735;66544;82617;93729;92391;87427;76505;82075;85068;25346;48873;54327;94464;94996;55041;70193;75505;97376;90878;24526;29568;81734;51994;82051;61479;70292;18594;92368;70027;64732;68603;86426;81162;67926;72068;100933;80367;14605;81106;102462;90957;15322;65812;72897;103037;94611;79972;13728;97301;15234;52677;86329;54133;49320;19667;71213;29237;99116;50398;43683;106152;53677;58357;29060;52671;68878;93641;12203;44925;106664;66247;73096;83599;59136;64157;71673;78417;60643;100202;16789;71150;64199;80602;106954;54855;90406;57909;69362;28230;67094;19515;57017;20120;83728;104561;74294;94399;100663;61168;16813;66862;34063;13994;11193;38998;93307;54988;72833;66818;43067;18407;88170;35384;51316;73638;72095;34338;34640;23825;80834;60015;77082;85034;62109;96125;44711;28710;73031;51344;65894;97457;52079;32591;74088;40969;83533;46180;102474;85142;101756;103542;54620;51392;56070;41582;68453;91279;30778;32203;105675;48972;69285;38236;22348;60599;64578;24513;13358;56762;68198;62289;94457;96837;75570;81082;68068;79029;18002;102754;54805;41675;29456;24225;27886;92045;54333;43457;73594;73425;14568;47285;52908;49629;105719;104456;96967;49558;27968;75821;84137;23740;53879;63514;94086;87316;99369;78845;43189;58112;36902;44009;28921;104673;28274;83117;86647;85349;55146;84400;12730;65069;24260;39547;40117;12930;17690;17603;21126;85816;102706;93268;42811;101070;85214;200045;91480;22909;71923;86619;59327;13882;38973;38384;86454;49093;91261;59785;20378;93520;41363;49424;62700;92501;49568;99555;66731;47327;44160;83809;30174;200107;10357;42658;77454;69920;87425;34565;26847;65138;51673;63545;69772;91023;86246;40907;17354;70567;68454;50278;103142;78007;53328;40834;91263;22086;66105;58625;69433;52011;89570;38833;45659;53320;25136;53367;47472;91862;39474;63517;61013;12478;25288;19872;73212;87875;80136;53130;94670;68556;96900;17601;14039;56574;36676;87515;101243;30273;79856;42315;25660;30377;77972;40138;82904;71336;87173;40618;43004;24328;84000;93069;92333;40134;30527;93375;27268;13721;12561;100705;32885;106977;77434;41419;34334;69558;104962;104538;103347;86157;104072;94196;61916;19133;34827;73027;13794;61299;65913;62890;73900;95952;61092;56942;55413;87728;54852;37389;82782;35726;78730;97017;100139;101012;85266;11396;55116;107094;12080;49186;105659;14306;46065;24681;84147;62857;34335;60085;106119;14721;44791;29075;28872;11516;35472;40031;28334;106750;79160;12381;75059;59184;25752;80871;45770;100622;51723;72604;94553;12603;43253;13374;96550;103993;28840;31776;106278;82576;24102;53995;78588;65021;94659;10973;79214;52017;23484;42387;97817;35413;25609;88033;57038;33893;39856;16464;50292;34183;99898;17980;16054;14739;70187;17483;77565;102005;39121;28489;40624;36079;94129;26551;73085;30868;102219;64154;90973;94343;32279;102207;105847;48487;17025;69322;64409;72932;104232;11753;90765;34374;14280;10466;20872;85046;65045;62086;22160;90267;46810;51381;48668;50716;97494;22979;60666;95310;15413;21462;48513;52636;85643;96252;99020;47372;48197;38042;80179;50374;75312;27155;94090;43789;81754;27373;41993;62128;40385;59064;85582;44786;38930;82591;17295;25802;26130;52547;48564;84287;103425;80804;57633;76776;92723;13793;34416;24429;80574;91253;20745;36887;88958;81698;39994;91598;75269;38537;84723;45090;56342;37947;30340;104384;70611;86320;69801;91664;62888;94771;15430;11053;14090;86835;37920;88568;49349;68219;96116;66377;51633;13508;26920;66038;32120;38941;91802;52251;75705;80157;74470;11389;16726;102008;93503;10608;100541;19933;57392;67733;15771;16952;68054;105350;93303;41455;106277;76455;88921;17200;39492;50328;55052;91434;52196;89768;38513;28429;69797;26240;78388;76384;40001;12724;81068;84490;14303;27833;54023;48825;41485;25364;32440;73702;37037;56946;40136;65244;96380;87111;52140;88154;105849;78185;26139;16523;21441;107041;103903;22761;22612;89431;85759;91154;99958;26045;58297;89962;25171;83626;41193;63016;85880;57466;23491;67706;90461;91713;59815;53726;47276;14409;87232;67514;61755;105450;67380;97984;65172;44852;40315;92768;71222;29296;99090;33736;79028;78938;76599;100255;100258;53410;84197;50749;13745;91208;58709;77058;46968;30624;93759;74931;48198;42311;10075;86376;72438;46470;71956;18664;65100;79111;57703;47464;48792;21224;81725;52506;62992;26690;47705;82101;52117;29894;46585;56465;79351;16587;91881;51853;105169;53419;30829;57947;16597;83652;38448;13832;22529;50386;97294;45472;90795;82589;47140;47416;53603;101437;41476;80671;83331;41366;22666;46234;95680;59181;49104;38272;14793;42385;18188;57138;74484;97957;71786;38468;21776;51872;104419;46546;28389;25310;31650;75219;14124;37186;84928;57228;50045;49671;96864;37988;96077;105267;82411;76095;17155;82192;19181;101331;90777;63628;49505;46406;101685;82443;83489;15807;106297;26144;50267;78739;39124;75307;90006;91041;77967;11797;19616;25714;44368;25438;31216;33518;40667;83528;92356;17176;54260;30853;27880;43838;37061;12534;79752;57622;46754;82574;49777;73562;44468;67778;60074;36323;43043;78831;13091;61546;10663;82025;17596;26253;89771;96992;46056;46691;59443;73035;51512;15168;66768;64717;61031;75322;57803;38058;66418;95599;105912;68651;71099;34250;93102;22447;76999;106670;75071;78216;43358;33068;66876;45229;76656;27622;102626;94163;56383;15721;86762;50307;31155;66558;78918;99880;24323;40547;58111;90552;38548;78820;77965;20438;62913;10028;29742;55156;47811;96983;62369;93316;71396;65948;32044;50107;46482;24420;94130;21145;20871;49055;33914;91397;55184;92562;51721;23197;56371;31664;97858;58144;87877;22833;54720;23434;77614;88428;33379;74299;107047;16236;14228;81640;75171;97424;78913;92840;28187;61174;76364;49552;49496;52582;29736;69480;62229;19456;15426;53000;23343;86100;12346;100250;90264;21089;31201;29885;41327;35762;11187;57259;23174;78945;17048;58093;101678;41783;46905;46376;52659;19058;78027;102926;65462;81873;94760;104243;45386;56460;60071;69685;19470;13694;66965;71912;97256;14450;15117;90356;28618;61549;86391;53422;30485;56483;49675;30029;22708;65345;103060;30932;76913;24776;92567;26561;63546;87885;31762;86392;12296;71650;29776;56369;47807;106574;80488;20483;81372;59976;52390;15559;86997;15438;24632;78436;59021;66948;40931;76954;41023;78184;78778;20639;65077;107002;102217;37811;87149;23423;62399;19316;25772;70610;106464;63642;35237;34664;48149;100333;33776;22406;78238;69268;23630;62920;99635;20933;17662;34343;65554;45365;23042;70416;26361;58222;11026;76522;76730;79098;15113;35890;21353;72992;16559;70469;63098;28050;62236;102940;45585;46025;53284;90261;16112;45917;96566;91975;96544;65163;72690;73442;63375;55484;12798;46232;93532;50333;102036;71354;95053;96619;47849;48818;80933;92908;34426;69662;81101;58904;56429;45428;20700;43725;18619;44443;40307;89779;33549;79677;23911;51025;55429;14856;70442;46697;56955;99620;50537;56793;82705;78112;15483;16281;96130;47813;92327;103226;32080;88750;75185;16439;62064;66445;62728;59893;106987;12691;35453;31072;101163;51406;85378;43628;11128;96243;34873;17387;85960;65626;95419;91195;59834;13192;94338;105084;80032;39420;107013;45380;22897;70068;51265;20842;77756;57005;43762;84931;101358;88710;77008;38393;63608;55210;104565;68670;27482;75876;63606;84988;78296;100057;56283;93190;87601;101780;40484;103428;106790;56064;34975;51988;86808;103876;82347;21652;71574;39015;22051;27807;105423;39072;11099;59894;100167;93554;101705;31502;19388;69392;33679;77841;102500;56457;93571;22281;44573;57596;17558;26563;31812;72297;46083;56688;67990;35529;70866;50676;28619;69413;48530;93951;32008;39212;78825;94672;20543;76403;26357;60115;104065;80532;85028;89758;14673;26070;53338;31644;85444;101351;106089;31434;53237;65973;30647;36759;97649;77678;69036;63665;44881;71339;93844;69058;51158;81501;61749;39418;89439;62136;105469;69738;31727;37499;97938;58145;75868;93853;84794;27243;84465;103676;14241;70518;84529;92381;90709;19578;24089;90987;51369;15002;11607;106902;19571;28579;104787;106698;45149;30516;60350;99608;105089;84432;76757;53617;89011;53698;20948;60580;71772;10948;81822;70173;63583;85345;35075;84550;52782;60234;81609;92619;39255;37182;23580;10861;81762;69615;103772;80121;34815;33554;81491;58533;44903;43905;39238;59957;86939;92306;84127;66134;20781;106128;79448;75381;21753;23544;77522;106607;58515;56571;27543;13190;15636;93282;104524;72905;61342;95558;96006;39234;18685;75681;83913;39260;30773;49390;71791;53277;63988;80370;17674;67236;57470;22250;41964;68396;24203;72647;97037;57752;87178;102784;91706;32805;18758;82720;84207;70693;50602;20529;34268;79097;93899;80851;44332;81874;90184;32027;27532;81064;56648;84364;74695;33329;61046;59255;91092;17278;66967;43981;39993;25784;64221;14472;67064;37445;90436;28376;37813;72746;33278;34075;71662;10117;50344;19102;94955;44859;41314;66490;18627;37712;79622;63900;36083;72451;71645;80507;56410;87110;21655;51435;67716;24751;82429;52138;69237;102309;80101;15830;29413;91778;36001;10927;39269;41510;71684;71800;75808;92153;57664;107020;71019;88613;47006;81378;50458;26397;80787;15714;53446;67627;88612;18248;46338;21223;47037;72309;37365;32823;47097;53229;54165;57659;73773;33985;36527;10916;30992;101382;67730;104571;90802;69090;84768;18538;66607;36024;92997;68581;93214;20866;106802;84960;46701;71032;17069;53574;68646;100366;200125;90333;89480;48955;99836;77138;40422;43889;62138;55553;104430;74831;27731;54207;37372;64148;71029;10363;16800;54819;54680;15232;70481;26741;61506;106437;56657;62421;84166;92824;66270;26785;105171;19754;22497;21469;107007;42686;13280;34396;20787;93063;62585;91427;92352;26428;89903;73043;28896;86705;83643;48635;41405;42856;81281;82683;10511;27774;49361;102239;60823;200008;42380;99133;35062;33582;20444;63173;90155;20791;41228;66845;66727;34515;27224;13802;90939;31995;36716;16324;59403;24056;39786;57447;89111;24948;10850;104775;78966;97007;77597;81138;24065;93868;73761;100190;49243;60169;106615;27306;17057;102614;57799;97501;37041;11354;47051;90058;95731;48607;17833;48310;22393;46710;28595;106476;74605;93982;70052;30940;45046;57081;74298;25009;30598;85645;77788;54316;75646;32395;76012;106351;43498;52313;45169;88774;44650;39837;71930;13285;23240;24574;21842;67223;106657;103402;97111;51947;104395;46129;79356;42594;28295;60078;12042;64517;60478;70723;39183;39022;42217;101571;22584;13830;76634;97474;87729;33100;14456;15154;57760;64883;14984;54061;13457;99227;89556;93524;69068;35383;87465;61343;104048;87462;31456;47692;91420;102513;11939;11912;40164;106048;57112;25642;72707;101924;64547;24794;88464;53068;69427;88980;54635;72900;81370;69154;53212;45346;35535;71469;90109;47609;69095;19188;39568;37886;51744;102255;81154;56224;24090;93650;37491;56609;26958;91164;28904;92721;49713;22384;41122;19980;28733;89032;101254;86964;71039;16701;43412;71289;82784;64910;23634;106916;97948;45105;81564;77733;65910;100424;91684;64525;65935;70064;102697;54459;61156;36014;84738;12388;78912;85045;82810;16711;16073;45933;37958;19095;11990;93123;89689;53286;39605;69441;22952;64851;37553;39246;18090;51315;45884;60691;27899;105624;76499;103956;101662;54757;85156;103708;49236;66317;96966;59002;34066;92504;33638;41777;38094;92289;34923;28519;16075;45941;99942;23133;72664;12202;101335;69759;104860;65798;77472;78502;10020;62514;21229;76467;69357;30798;91436;30684;60053;27908;35224;94017;12358;66614;37593;32651;80642;49135;67957;91165;93767;23055;36111;43248;37524;46715;74664;18735;40613;42162;74833;29809;14976;11701;32702;94496;91106;101309;103377;82709;66781;13819;39122;29761;54727;104659;58177;24379;12454;89818;62909;76578;97646;58125;84510;102547;13485;72990;35503;34611;85563;39279;31341;87603;74416;19471;55501;41416;102117;200059;11449;50281;56770;42212;95015;100928;79527;104983;45699;58468;100993;57921;100070;10343;13944;102550;50197;90089;99408;43878;68245;36094;102611;79644;103009;22953;60280;68366;62550;41885;29316;23498;83921;64454;69867;83018;24030;89611;65063;89561;21015;51681;14364;71648;105536;90071;65248;22603;28424;58301;38687;101637;101080;36160;92215;76980;66249;100601;10262;85622;49094;51942;60799;48229;81980;41309;13493;90168;23471;51273;48999;105098;67728;67068;92494;32649;34742;96740;68759;82435;46279;45709;49058;70342;15709;62056;63622;68277;32512;74756;15777;84597;51769;69834;31921;59657;19010;65559;62294;99626;99210;34184;94051;41771;101256;97358;67876;70128;66310;32714;14838;56373;16258;45157;42513;42575;15855;91935;99762;41501;25800;61425;48444;104521;73686;51312;41525;22950;100062;11655;44470;30006;102368;59752;91709;41639;80368;57074;27992;86630;103627;75279;58769;41104;71242;13729;39040;77630;102949;21459;27707;48224;106093;34790;50840;74482;18569;76057;57526;24479;29990;57603;76382;58945;76854;52168;62242;28158;32186;89057;62233;70437;68800;79785;59724;48689;78745;77575;39402;105531;33309;51610;102516;29734;81928;51960;104856;19842;12664;57608;100802;67376;63932;20225;36865;18823;42854;100707;85181;96134;66412;34700;82391;45027;96452;58895;48808;97559;50934;96897;47346;19836;31366;51255;32942;33476;62598;31657;96720;38126;36433;31156;93561;90253;102246;79875;106869;65556;39631;101422;77725;72176;100033;47719;102575;66335;33390;72179;46564;99728;41008;88589;44453;39680;55049;78394;104003;73136;38503;14784;35029;19243;29477;104578;73939;74377;87248;15761;15781;16048;41352;28443;103255;64210;67404;84638;47585;55191;49466;41179;64701;53986;30531;54609;76122;73683;80182;39732;11784;54071;29207;51571;16315;78211;56887;104011;87808;78188;57397;41434;75796;24332;92330;52281;32033;51301;33512;21017;12592;61869;56469;92527;57835;17021;105440;43429;32381;30184;56382;58134;101677;80258;63091;23345;52455;105716;37874;73082;54634;89688;82393;99905;99701;49601;65407;47211;65224;39058;99296;74733;72216;10638;94533;29839;50270;30415;77820;31991;36267;42349;20106;56708;65539;27510;17244;63758;23643;87486;10722;39237;11738;45564;86859;28878;21236;61873;24817;71562;91272;89307;24005;72238;61971;44788;33303;50673;35666;26298;67237;75513;40489;88922;66389;27947;95603;53863;47341;48732;19382;91537;71596;33734;30083;90881;58399;51508;82783;41723;99314;69337;47226;87905;53218;60077;76582;25585;56309;99900;97300;92576;35252;104123;101778;104270;92401;21098;20804;84783;90453;45480;20777;22356;78572;55865;25275;38874;68028;21789;92812;50657;67580;57563;94102;83332;61134;85778;39468;27201;40304;80901;40603;75182;69273;76942;46933;71027;44449;76022;40223;23132;19160;80548;60909;88618;53226;99263;55522;59367;65307;66360;13246;61421;31906;20388;84697;92766;81273;94502;10459;47069;94578;71656;101103;43915;33158;78442;39463;44787;68959;29406;80715;62896;41987;53655;106511;61524;12874;56680;79614;17038;54402;14035;100731;36379;46121;72609;40466;54295;28515;40592;14840;76402;73639;64249;24000;60941;103527;14324;49666;103709;103737;18009;21937;65114;50362;30489;23425;91533;100277;89694;100777;90487;29933;36631;32595;14529;28980;33396;40701;90780;104892;51416;15802;101366;77077;94239;89788;97464;95366;46239;76351;82911;102212;23134;100140;92796;60068;38285;73759;96003;100862;74549;77337;96096;71035;103106;104445;30537;38652;65570;102256;57028;69889;92890;12023;53940;101849;10743;102947;21346;63682;13472;90682;28766;19745;52160;35350;105949;84436;27082;60582;56876;104596;70045;29752;27022;106798;12579;16275;88068;25492;66621;51005;48533;16768;14518;77933;51402;41955;50201;61593;62791;99155;17814;54978;83749;22681;67195;46595;29315;25417;82789;26131;15311;41750;30147;51725;51463;62144;85516;106309;26620;78080;32175;11123;51031;13114;61102;73187;42298;52243;19399;48496;50738;105482;41054;84884;82565;93997;35143;56300;85877;14215;75276;49977;73547;36108;57166;91149;95416;86299;40819;94135;23258;99721;18222;29643;89515;85675;14887;73028;40357;48969;45690;68607;52300;15993;104830;12074;63145;106461;88602;52849;37511;28207;95309;79813;39138;42313;104312;13346;87374;51243;102264;87662;11940;15448;50988;51596;95996;73658;26706;21678;25247;67613;75384;92896;101659;60919;38865;38694;92245;62601;19619;16282;80228;99219;36097;25686;74876;62055;21744;55575;45910;18805;101299;24104;43670;86696;40147;48344;69108;59805;54294;21174;48710;25199;16211;18045;85652;38386;96148;13191;27644;14716;27505;77439;90863;55843;81568;101896;91201;48269;65053;75299;37282;37327;22771;51776;52441;51735;15217;42775;86530;54927;61145;72017;80387;97782;84414;27557;56588;36151;89552;92242;103064;64721;64743;63245;17673;20223;50215;74962;104510;76686;15138;54330;43226;39287;80035;51976;93140;52308;50748;27326;82621;48658;96639;29191;32050;67729;60484;73352;49261;25363;78908;51182;12660;104893;21490;103344;33349;32822;25322;59819;30272;93062;64650;43544;88796;84022;63785;71388;37823;87607;44096;42601;46836;13716;69044;76049;40940;66971;92155;32558;50433;64138;31126;64217;13329;61939;16919;85031;55325;57787;102053;62622;62458;52562;22119;41276;79522;68578;49592;69414;11831;50407;97998;16472;43308;10811;16849;89487;78947;67853;13563;60345;86894;53299;12916;100626;90103;56202;99011;14454;59750;66559;59757;37328;71425;97878;104326;79864;40838;52625;29802;13390;49937;22311;46068;33800;21680;106288;90817;41775;13147;36990;14349;51475;90849;31771;76186;72866;81181;41413;68326;55824;92993;69075;61268;10347;39508;22282;35672;45437;100945;22831;25291;73060;74331;60954;35499;29799;48846;32657;28571;66857;64719;79957;70421;22041;82572;27289;25921;67026;55762;34051;71564;91216;73226;37885;12609;42407;49929;96982;12911;36018;69005;54672;38528;68818;53392;24471;59439;45835;105895;73044;52894;89735;67582;46970;25172;50262;76732;28063;36402;22766;30473;28097;37386;72043;37663;87547;26567;16208;90160;49810;85746;58338;100528;29255;38271;105296;68058;24626;81797;106661;23545;63627;11198;46530;31715;23285;94695;63204;65445;58181;19621;61527;52882;97253;101997;55806;22721;97390;105192;82064;47189;40683;66138;61928;15147;93295;99343;97003;48691;20572;42693;32119;71571;104151;37981;84354;36912;94782;39101;57290;11008;44652;26442;65964;62152;12578;71524;72391;67130;50325;28490;20646;34199;99164;68324;101099;84002;93218;81155;50150;83481;42802;100222;86634;29679;76483;42520;13310;56930;95596;48319;16134;65477;54435;54355;59790;53333;76464;92179;83050;16166;32940;95020;70815;32054;82222;14648;15578;29665;54410;28951;78698;41545;50917;30013;79011;78970;91985;70653;41673;26626;57627;69447;79761;92349;66417;34478;103227;84271;71643;85864;68689;35939;45617;65600;104285;71667;72730;62339;97854;68310;97940;21756;21878;58870;51008;87478;13837;40813;31663;33615;70617;87214;49796;89607;37755;60370;14621;47331;52378;43969;75625;16167;87503;24487;93692;19405;44525;71287;21548;84309;80207;41916;30566;65301;41364;79760;38133;12703;38020;72744;102487;19749;47123;106832;47702;72881;65463;23100;65146;100906;44915;58159;38449;56109;22173;99743;94370;66215;82925;100509;53699;90988;96362;52899;68160;80432;11557;55955;44398;56055;105090;32036;46915;78299;55737;65221;49143;79088;48815;43539;21030;96861;39000;66976;64635;88752;89190;19575;89852;57671;18150;27581;16001;69753;42954;80723;77140;72689;97502;39344;64006;36021;33444;18921;42984;78057;91233;68696;50203;19590;95903;12233;97612;35855;22811;29173;63783;94414;82054;83140;56068;85308;63184;59604;19998;42356;15507;93498;82548;22547;45217;64530;10431;86398;58872;23910;84741;17385;105933;65364;58484;40389;56945;40238;35558;29412;63991;53545;67910;86004;63130;49294;90672;22825;105100;80301;55540;35669;33397;28182;14100;96538;40857;96568;95545;91018;22716;75694;35470;34459;90335;82494;26845;30780;35976;19639;97044;102025;104815;14738;15649;89601;59486;21669;74402;25744;51923;89728;57962;31267;12696;64533;13492;66205;28556;103002;60967;95819;97170;57244;97008;19600;29163;100724;27538;96878;82523;37190;20189;18157;50601;18949;54508;80856;101548;46270;12573;30875;105106;14513;10615;82664;11661;55356;64644;41370;46281;10143;48456;44508;37464;71811;19630;74083;101783;11619;65289;11001;71515;106704;19896;56157;18719;45605;36099;77624;68632;82918;75721;44278;83248;36066;18484;46877;12120;64860;32487;85313;105510;79164;28632;38501;49894;43820;36549;11028;12085;85247;40706;92460;65648;77578;84027;75969;73409;25116;79811;72244;72828;90512;14578;92031;60281;32870;50947;70983;60670;58575;36255;38460;18492;19712;91071;28484;91362;76111;36544;42852;40462;40754;85124;87499;91987;41575;27684;41682;74119;51865;90835;20349;87283;32596;23994;60459;59462;51485;81588;60922;26887;37724;82858;103019;55652;104493;40800;85172;19159;51576;82208;68805;70096;13499;80435;19152;82941;57673;70547;71470;74993;39597;56476;61432;84951;37739;71276;19898;41231;30242;42912;30688;39514;77722;68821;21574;78300;75858;104848;79578;70814;11511;15486;89866;58619;92002;15828;69624;87884;21800;96884;29901;55646;44855;54662;17775;35603;10202;45881;33712;105872;67111;61326;40947;96932;79185;66702;54336;35370;15835;44265;93905;39332;45209;60775;36244;29649;61151;95670;70154;94910;66125;48218;74158;106581;80074;26136;88082;68641;97919;67260;90181;54352;79381;102573;89375;28004;103836;35696;53717;58190;85219;103092;88719;11461;28249;38615;81128;67096;68191;31822;15520;60740;67995;93474;34557;47493;79596;39527;20144;15568;94418;25526;96755;80558;86469;95740;51513;12915;68596;59526;58005;63088;34714;75542;39960;79048;84335;35926;84092;87690;30596;68317;30081;101322;43960;103315;60632;57605;89691;105129;60355;30825;68313;75339;47195;95657;64482;74140;31078;64349;85896;25168;102491;67009;87260;39622;90713;39191;25077;47345;40512;99222;73772;70406;37963;77091;20985;46894;89320;101557;28517;67179;13370;16971;12569;57478;28312;72818;15251;65867;90098;100811;85648;33231;31586;79192;99967;17496;103922;49821;34962;56059;99326;92239;72005;94375;63436;35461;30731;79794;96419;31152;39619;60572;95381;60745;71218;32418;97546;89191;30490;43174;25306;27251;96958;87369;83702;90510;21628;75365;90280;59726;46047;13992;77604;64639;25761;32603;17362;29823;36510;24262;55944;51939;97206;96623;27363;27196;93445;16686;97448;37056;83100;93896;77168;23075;87290;90404;105347;14570;103755;24340;77065;83001;74221;49085;60796;100713;70931;94233;36218;47730;46288;87028;68455;71448;78066;72754;32505;78746;67443;18942;73452;47262;11812;51702;90533;28842;80456;14426;64300;79492;10808;30664;51584;62576;99844;17743;99421;72592;38281;41534;88801;68629;57046;41015;91107;67033;96650;27259;35805;26469;33258;34526;42100;35573;94009;91011;67701;97112;93280;82225;36202;32982;69521;29426;33209;76287;57902;94205;88601;63792;12862;99436;90948;93171;24568;34240;84276;80026;76905;81947;99423;85463;101172;18729;17096;101753;11606;17023;65934;66485;52560;32920;57980;75378;37236;94964;71616;77110;92302;87897;97549;68329;34273;97842;19654;15111;89524;47519;11075;44006;84787;18912;33789;19513;26421;42153;70984;52928;75274;105886;46026;73076;60794;101339;29043;96986;24287;80523;97255;103199;45524;62906;100954;17338;18088;72439;44269;40034;77827;104274;93332;102221;73543;99088;67325;106678;101261;85391;17801;49938;92837;99780;86218;41947;31388;13645;20974;39172;42208;62481;64461;68568;83107;59643;21132;14575;85997;40030;77497;70971;27514;38870;104082;58015;41311;16081;80925;13597;23475;61645;30087;83778;42851;75632;75490;94452;80908;16688;42832;33994;71459;63511;18369;17263;26433;94936;94689;40569;78140;88791;12248;71352;33213;36597;49990;68052;94882;39156;27444;103246;94549;50008;32058;76785;89073;82619;89291;12712;85203;81476;34030;63093;42454;21190;88788;85577;89912;92102;32329;29350;60511;55335;38292;99863;55341;20573;23334;96558;89354;78382;102283;16714;71330;72090;77190;84070;18227;33376;76796;48852;35486;62771;59317;18862;67343;52149;38459;30594;21062;106470;68677;74823;44602;33123;103407;19374;102087;64145;200069;79114;100367;88979;97701;103093;30195;78386;47463;24271;93226;94187;17083;92279;73233;99100;78639;33530;30856;77825;94144;46172;74035;17266;80271;50655;50723;92410;77956;45222;86209;16706;18883;40903;17317;105703;31453;37274;49379;69098;75537;50170;64947;15447;23363;23225;97925;15070;11907;76166;94214;92124;89186;77393;42410;104591;10012;64380;29209;60273;52450;82196;64356;43842;35718;54740;94220;62637;106514;37714;45253;47906;93043;106216;83283;55222;88083;88639;44286;30334;69275;90427;73511;25878;16536;26313;105755;29294;29432;45201;63230;65082;15029;30583;55768;55482;51903;18280;76488;27811;52406;23784;80900;100489;28064;93857;88993;28898;38771;71295;85700;11446;10026;36736;65941;28698;86434;102632;81159;57619;29601;10433;18910;23348;106804;23166;56123;63874;12391;68469;48336;93359;69279;96562;79249;19817;34811;82184;79421;81179;69267;93888;40586;39310;23999;97877;47658;52410;46097;39092;75810;89705;49330;58252;18731;28092;71374;74490;74317;59924;105017;14491;53325;85084;84918;13970;36508;75445;58659;13685;76869;40025;26910;66926;58172;94651;86791;102577;76138;14967;105632;94094;21597;101633;92023;79841;12568;15072;70051;70626;102149;62519;93643;102389;37297;46076;70797;81962;92157;37100;47800;104702;101010;22814;41345;53205;80297;43900;75585;40002;14692;94248;103241;25791;41494;86428;29914;39125;33064;60165;48984;40513;51547;26968;69222;15535;16949;40441;37278;94579;67288;15707;56367;33360;94508;55205;35519;100080;19791;47105;81545;72823;82835;84628;28306;96212;25027;86022;88790;28818;78231;36884;71630;77103;22003;79758;36127;15701;54549;47853;56114;86271;46283;92495;22747;92851;41367;62543;25600;14338;71249;24279;45495;39380;43769;27546;53020;106680;22289;87228;91046;75767;85884;60900;87088;62072;12297;76694;70375;46256;86416;93690;37356;11092;29565;66970;22257;23029;74705;16889;22618;106952;18888;92803;39169;42054;26880;16320;74726;86690;63018;68856;71958;71680;94002;80212;106324;100533;103864;60208;15700;94621;94525;35083;103826;105033;87495;11813;20116;45110;16672;27518;103068;52650;38866;104023;80176;14405;103705;32472;64838;47296;55301;14711;31751;103147;69578;31676;73602;28081;37723;103820;59725;13531;68652;96274;88984;43053;95280;86079;34939;33957;103401;79740;10664;58097;52939;42757;28897;83704;104638;76397;70181;30279;104911;92693;74532;102942;21422;69771;45513;25373;20088;18173;106049;73720;56816;87102;72140;21979;54494;53667;12595;31936;60942;79666;16561;62420;76036;60834;102572;67572;76176;79634;66854;41066;10346;73444;33869;19153;90219;19587;16476;79748;40941;42333;100551;22623;35914;88674;81223;57086;40033;84281;74828;19110;47659;34680;91508;65931;32953;53779;22940;84242;95517;105996;13671;36498;10358;38050;17171;69192;106113;71766;64990;32977;27516;50310;16237;18179;79032;35628;63307;95882;29558;40743;48958;29673;46175;107059;18444;14154;31330;96292;40404;23733;33005;31942;72822;62673;94299;42737;35446;44351;86003;31408;27302;64794;90955;33153;16488;12027;55338;87917;37982;78907;104542;80813;99319;47192;45230;87909;45458;81820;16267;75693;43907;99852;57950;106022;70212;29724;41229;31728;35416;85476;38880;63670;84838;59078;66934;103910;73729;62583;106417;56405;50408;42154;33516;91808;67001;102795;32525;46205;62747;54011;26598;55822;66289;58348;65757;67370;58570;85865;47048;86896;90907;14754;61691;44943;39525;83139;20382;40540;69895;65032;23292;16660;15826;28657;103811;88019;102640;73938;68363;99271;46614;37332;102122;40833;54689;42554;64769;91991;44436;27401;50949;11020;74957;25157;80064;38288;66447;96004;24929;77072;70798;21339;54030;87856;83714;23261;28071;61010;31191;85103;31119;17430;14502;31325;48223;41792;45097;78479;13744;81522;43658;62076;65490;40820;82665;85097;68006;104931;70696;62372;62084;49191;26530;105588;70269;25683;20394;99911;13152;47439;87445;93613;72169;42032;80965;200073;85154;88721;17039;14844;94807;64736;64275;47424;47720;35530;55713;70765;61531;104858;104055;81736;61536;53246;81167;90903;92989;100165;28440;80957;67231;79899;28180;99647;48744;38359;63296;105805;85416;40771;97990;83440;76102;65978;63946;36823;86034;25312;48957;65416;74820;31641;11821;97562;71248;84275;70725;80738;18848;55559;103413;90900;77686;32670;93178;11418;93696;39308;68379;75161;102903;62982;84737;96750;77764;33645;69190;15431;47237;31895;45470;81033;102944;75372;65686;57242;31856;91007;33875;11226;88913;55703;12878;61043;103632;73732;58921;47422;107148;103812;62434;58548;17607;105297;65915;100175;81755;53573;74894;87832;84234;79148;83949;92904;72969;86309;39537;96836;56084;16947;85025;38166;39490;69228;29147;91874;52497;97834;80410;86703;25047;37967;32765;11223;57809;76938;81393;70746;20300;25462;86855;32452;80231;99741;14639;47631;23060;16900;97312;80993;26123;18869;92798;22305;36173;38305;84721;77066;13129;25727;200070;21095;35392;39194;19715;94904;71068;90410;60988;90856;35426;86111;38259;80825;80062;32420;63084;102862;78157;59838;77838;103277;76983;67583;81114;11111;82321;90096;70265;76890;65165;92627;84153;88489;55846;49107;59393;104502;20012;83560;74489;53187;30259;19930;16777;14444;91313;39099;42814;17637;33907;46389;61287;24849;19937;87391;50674;100911;14777;48584;47840;34922;100835;18169;45696;91414;70730;90149;47249;91219;16263;89700;102124;66361;77801;39455;20904;61440;102585;34820;73328;66853;16212;68246;19665;93789;31232;71345;53803;24692;39281;71914;97049;89276;52490;97396;56928;86441;39950;25436;97061;56619;24009;68483;80349;25671;64960;26101;89106;38873;35518;59120;21318;28288;97119;68987;71392;80496;63896;32534;91039;80503;67725;18590;103717;53484;12721;63416;65988;96483;35576;67742;26071;50058;16666;67261;60240;49096;29590;32992;48163;83549;31557;11416;97945;49383;45312;37291;100317;96025;92149;95767;43361;73392;27641;76921;26922;50979;42525;37150;68445;20285;21260;25816;58593;67534;95549;53598;13165;102745;99894;44374;80334;28762;58561;11593;77802;75854;70496;43047;34355;77329;43557;65134;43809;49416;45398;68376;30871;72843;15193;46646;14192;34015;105492;95466;101939;94765;28880;64626;89419;92626;44871;88772;16363;30974;64889;49136;49959;48918;19944;83940;44818;65565;70448;35000;18434;25611;80524;81406;54367;54012;89180;100166;66850;62438;88808;33077;58965;43210;10501;80251;81541;100369;58283;87141;23020;86089;11255;73951;69838;30776;77661;102343;68117;61675;88177;63876;74980;100558;97042;95534;53663;30160;46055;66803;49908;23798;84501;89822;82688;22539;73431;12597;57587;64566;93707;24365;94398;27944;57448;34617;27969;18183;26770;13335;66881;87082;75610;45762;72287;55339;15863;20335;64925;21643;74128;102274;60525;84712;83032;93199;37417;35493;30392;23916;17146;39307;88975;53413;65387;53529;15564;86080;67076;41895;30921;27980;19269;83390;50240;71520;93110;106065;37612;49729;25044;34636;20601;34230;32311;83125;60432;27409;99593;31515;29526;39798;13331;66666;87585;41000;84509;72559;85092;78695;57300;29708;22667;10298;101763;63276;22610;68927;53081;200061;34176;39956;200042;25450;92729;36436;31153;29267;22574;11173;79101;46494;74235;60093;88003;79009;100938;77991;35677;70039;45326;72978;13674;49358;45893;66819;38051;89157;72994;95660;101501;86494;92443;19810;87360;65118;27999;66783;18915;70911;59075;74859;69597;67458;18430;99774;76952;15172;38436;99760;26185;81884;50869;77326;90952;89294;39325;96426;42219;68347;69680;80762;43888;91052;28415;24159;32849;106531;37579;63508;80662;84568;43972;65095;12303;76764;91548;89357;56089;105067;48602;58166;94035;58676;87240;12034;14758;44176;70846;71333;17143;65356;104200;81883;47656;60021;51505;47289;11866;41942;13967;55681;47279;39132;27415;74595;58358;78565;53350;37336;34137;88102;30587;42294;101843;44239;57236;38695;37737;86520;65406;47125;10139;22854;97146;99476;10165;104061;80291;93836;29410;69297;21477;65762;79263;33525;46105;104681;63538;49512;45798;13278;54610;14007;78114;64590;60612;72334;94126;51862;56745;73677;57042;94388;77824;11920;27252;80875;33225;96152;54888;86911;63987;66531;87339;102065;51280;45776;103217;47711;93892;59349;64310;28258;25295;10470;70959;102603;89673;89125;84382;71360;24674;21233;106524;94332;62455;85170;69292;64267;39041;57520;16965;47320;65564;69716;106822;19974;55138;39983;80004;81214;32201;20289;82852;50196;70623;86285;73049;63132;20476;89007;47054;34971;30135;65003;89215;32908;76872;85487;19393;44654;85199;102537;74193;55786;104425;42331;95462;43766;40764;78354;89503;65774;79587;71118;75020;51754;86593;44634;91456;81710;62487;66281;54986;75263;29832;57843;70937;92829;52236;29704;27866;86760;58228;48292;43089;72070;44895;57194;54169;54140;102233;87536;65073;61741;51313;32974;34006;16537;106450;90865;40039;96065;19521;21323;22387;40806;41216;50623;84938;49112;54685;46410;96357;18263;104001;20199;20523;24964;68037;62235;53233;24316;53341;85584;36114;69302;49388;39739;94305;90167;50567;80336;96779;93293;21623;79754;20210;22725;72037;57136;68232;69451;33195;42230;62654;15044;48597;37914;30331;32023;40065;35319;64272;68527;106315;25837;25670;49410;55083;45102;87878;74563;77022;79652;28297;48816;32898;93476;80989;30713;20578;63664;52699;23756;102364;66037;36895;67436;64562;21355;42733;45204;73430;34669;54884;13389;11330;96146;100264;95802;102139;69221;101708;96670;72671;87819;44580;90351;13845;35351;72170;101034;40351;14115;69650;64128;25629;64425;106824;57734;27181;40816;102598;11196;51186;15481;89105;97318;93151;64790;87390;74650;57257;96630;58294;76110;76774;101151;46290;77405;96738;101581;40450;83706;74227;45451;57053;81307;16065;99722;55777;87392;14515;85138;86272;70884;67945;38403;62008;39905;64020;44275;76247;11528;39647;60767;37264;31565;12493;71343;93815;102369;13138;67623;43413;85260;79955;80343;15240;101427;74518;69004;80731;15769;106840;34937;50191;91258;103533;68048;24142;73909;87125;73830;15590;49217;62025;97681;42255;58696;33326;89743;73402;41774;81782;102751;97866;27233;97479;46224;75488;36841;70371;71064;84350;82164;93370;68371;85833;93401;69627;101643;33845;44199;31898;65396;64958;78806;92308;96407;76157;67903;25599;42444;36184;101237;72864;66864;37189;58667;51284;75011;16150;15065;80891;59831;18024;103043;99414;44138;53801;14377;51237;30558;22872;14960;96840;101319;86097;91951;24602;57775;104259;25205;53186;20811;25319;88545;30110;66645;58084;81109;28987;48897;78776;22572;28707;58721;23318;60040;82962;38879;23267;21915;88120;32383;83864;43199;12943;59373;96649;28150;67061;43289;29073;95835;40543;37130;14103;18299;10359;82472;90534;51174;50176;46752;75902;57974;15731;93529;97010;42094;92647;77763;43141;39539;19452;14596;77651;33275;46550;50876;13304;52009;35345;65084;89915;90431;42291;32302;76902;97267;66163;99799;68948;76554;82856;23750;100994;49703;10528;73214;41928;66231;64053;19213;89702;50512;72749;97603;45516;51398;92068;47304;103963;76876;66224;101411;71907;42045;19871;24740;99102;80389;13402;97270;30801;73242;102200;104473;71728;81633;61934;20244;41518;33496;96590;41279;78813;28270;49925;49035;72570;72507;72638;87100;89451;41247;43759;39535;72808;71461;36438;27490;15369;54020;29188;20785;106850;83434;53884;53373;73518;102037;78332;63802;44825;82130;91962;45731;68752;52228;43242;18184;97968;89185;15157;71462;26116;71434;47737;55180;18292;80676;36338;48315;31367;43784;77166;106872;69644;49802;94830;28193;77123;23598;64948;95425;84874;73998;33452;78559;71053;100619;87893;42759;107099;80452;37564;41554;17360;23227;73480;101073;18935;53107;90598;60808;76653;33738;95480;30024;39895;23355;103405;68424;43685;41053;88502;24059;75545;15943;88733;99013;47351;44644;36045;96270;69707;61899;54744;57435;36628;56392;30852;12350;72328;28933;101157;20612;82854;61219;58054;24916;69424;59416;64348;20498;36214;13258;39762;68570;15173;38317;102193;58860;54127;53978;38291;43186;20238;59895;89347;25959;28115;20630;63898;19847;99761;28481;41373;62151;61445;11401;91589;63544;97880;81856;50802;31016;70564;84933;104150;51517;88850;80706;78704;86109;96089;36177;24032;37316;77293;44196;46227;19400;25788;96994;99815;58606;66516;35231;81644;13243;67150;97736;83019;105437;70424;83497;14420;71487;37222;73758;75070;42072;99253;80672;77883;102092;47442;22185;21186;65332;13096;17836;22140;49767;86191;79440;65430;64350;106149;39505;93987;49578;33029;36347;65963;76992;24409;18038;77342;106903;87480;50524;89796;54450;54321;59580;50650;27456;41542;96528;10263;58704;86550;104433;54811;14428;87325;49805;63066;72461;52987;40549;57037;77964;68369;18380;25649;21670;61780;59562;51995;88725;67065;24780;59127;100847;95299;24590;93790;32270;40650;84145;46220;47550;77915;27413;104352;56414;74241;48883;62346;76991;79494;51797;89780;26979;81894;46611;24410;40715;12424;20766;72457;61442;11318;29149;67398;22859;86674;37480;106416;47365;59807;66788;67591;96627;40917;103885;12216;91246;73606;32465;26942;42677;72148;16118;51978;34891;20039;95780;94369;31579;200127;105485;103101;78326;30480;87138;48316;106979;39941;65965;96127;21830;51520;22056;32315;102538;94986;81889;54557;71493;60608;105372;10969;61264;59370;13316;95836;67749;54768;74420;59896;84310;94696;78454;89547;50263;44703;81751;95533;94310;65033;31910;75961;49089;31406;86975;104599;104292;66904;104412;100251;53695;95377;92701;39898;45560;29793;24949;15790;72354;97195;66199;82817;22247;24695;71580;83867;45906;11448;105710;32764;62469;52740;40927;36148;39728;85782;88162;62864;53450;46120;28696;68610;97807;75673;16582;52788;35133;30541;30280;20912;78756;69081;95049;84974;14466;82884;44988;55609;13463;52271;30859;93648;58495;56883;27460;102832;20957;45925;23811;100300;72996;25072;39587;101054;87128;11141;77887;94236;32103;55674;103249;95677;59474;24567;41957;36880;97831;102198;11899;59358;41654;82635;78245;39669;18746;97667;69020;107008;57380;28993;104644;102320;36782;23014;23021;52194;104717;79103;18683;25489;73716;64215;29111;20667;97523;92230;82806;39338;78924;63921;91483;33282;30938;45573;11732;37403;100956;59517;65660;93510;24575;30700;27317;103907;105845;86544;80498;41344;11531;56196;51687;94548;11462;54113;94635;18602;49639;38633;10586;87920;85800;18174;85461;66047;10153;53118;76985;37831;46817;74418;71629;86086;101702;68951;86188;18640;51559;32216;83816;104426;57052;81131;36039;52085;87859;104624;43431;39152;89681;40080;80527;41520;75984;87584;21178;96817;47523;21417;80659;102619;89043;21717;92670;64090;95032;91393;100630;72606;81829;57416;80827;23264;46738;37611;27938;66115;59574;33539;75609;63944;44350;10579;46988;58946;64824;62809;72883;80534;64164;13289;97879;16845;89639;84516;39843;47150;73181;63301;40316;51561;68159;35082;68958;93992;73309;49793;89244;62754;53092;14371;83693;45765;20534;105736;56613;84793;50260;28565;30325;19215;100131;26355;84286;72610;77745;39973;26647;106362;42824;63579;41598;51704;58940;84454;18306;54447;102282;50685;103473;103576;88061;39254;27857;81389;89053;50782;25759;41746;41196;65005;93757;100752;84484;82637;58747;28737;28524;88442;57710;34080;86603;84899;82285;32759;81667;45523;72159;35697;99496;64097;102686;29637;43316;75506;24302;11497;72388;91545;28638;53293;92452;103161;59995;33974;12699;18044;31324;25913;16865;81133;65955;62749;46824;60998;82432;93014;106629;89886;34180;60613;67736;72377;39066;34884;69482;97108;102545;80696;86574;68411;67688;89200;74926;102361;43237;63458;61595;95396;33701;53759;61376;100529;18165;58174;80464;39787;46225;99704;20422;96696;68732;25664;96018;82713;85670;32544;16387;89089;29089;65186;90774;28835;100377;78784;48945;53659;39207;90438;50373;103525;77340;84323;94759;70387;101725;89408;54823;60830;48748;14870;14239;74055;40463;65036;29624;90572;38168;101025;47805;33334;79532;55393;47450;47258;64591;54716;68067;37331;52735;86951;78337;48731;47047;82493;18775;35619;67254;53264;28039;72512;64152;15457;86999;101260;20959;49517;48707;11852;15787;94423;18402;28941;26723;28076;34311;79711;79566;52906;95919;15935;26913;30939;94173;74220;21761;58401;45983;102358;46771;67982;46651;82657;33129;97386;45370;30909;105167;59449;32327;27659;13617;80276;52629;65991;103286;74584;87935;107030;86926;72632;39151;32088;43872;78839;53466;46987;25747;49303;62723;102436;18586;83644;86600;79952;11463;29597;62465;72552;88867;97964;54861;40982;69263;200134;26521;22703;60678;60245;21783;69534;53059;69325;93679;50142;79431;34943;87078;23045;105682;89964;86722;17998;62308;91629;71748;85122;84613;49906;39756;10309;12293;80994;84686;40875;58761;16854;103586;33934;102354;52335;33398;59436;59003;97531;97217;52342;24236;63107;65590;13241;21810;56870;82813;17813;70680;23245;84311;77377;94010;87674;50018;50622;105221;50726;39347;105672;51541;46524;84019;21241;84994;86799;54891;21861;36991;74906;72251;47586;93400;34129;13698;36187;31329;64715;31493;81218;101769;66822;91019;10507;101934;70649;23995;55803;25652;90949;57731;106051;12336;86496;11292;28133;71718;60683;80047;82364;15975;77104;57609;14943;87139;65252;83055;32474;84709;43917;96651;94894;74439;15971;99812;67597;80578;52720;95353;53151;72479;55102;66092;56043;100503;26556;29780;31285;47106;93775;12446;79579;91582;54038;46040;39120;11077;86708;64953;45121;78976;37006;32813;25367;101511;38444;81456;69486;15654;85500;12714;26471;97045;91596;26914;65521;79941;52366;95303;68637;97377;16395;93007;55051;49389;11259;20275;63999;38223;70170;83170;40214;26832;90292;47907;84288;65761;31894;94153;11117;79404;106448;84941;47599;87202;101938;15987;16060;91841;52966;32924;28605;51619;19463;87707;73856;72344;94005;102484;32101;45192;103478;22885;81516;55664;20004;33972;88609;65923;61367;62145;26742;80418;93377;56296;74254;99177;60431;67864;72001;29115;59107;46017;92089;54766;42489;105530;42371;87280;103518;87835;87991;55367;65882;63852;16063;84200;21009;97194;63755;67310;10361;102666;62298;95717;52090;96918;27159;40423;44726;87973;22302;86668;20887;100270;49211;14468;103873;84840;78691;46627;58514;70347;93404;58460;26167;88793;66058;62046;85037;106738;48784;41624;31964;105285;11094;57686;103233;84435;68141;12255;76940;15347;69354;31696;61449;73071;85107;20473;35379;33543;10985;41608;19785;69827;88528;32758;91337;78346;21213;17427;88724;31989;88557;102293;102465;55834;12667;57054;18608;106058;18519;105724;35415;49581;48491;17741;76894;82243;59209;44941;104986;47311;105014;102610;81160;70188;12571;86772;92360;94046;49920;13051;59504;44513;84757;16184;37479;100018;69198;26059;61569;12352;34370;81186;86183;90844;58489;75990;82366;53999;46537;31772;56049;97533;30659;20148;14699;41222;81316;20696;13306;106367;80340;95938;41859;31358;54394;11819;103492;88934;93549;46766;49853;101695;94056;54455;93150;101627;43807;14652;43985;39396;44949;97630;26441;62525;62506;52862;102847;94735;53098;22263;68504;29984;34318;200108;84452;76848;91367;47344;99035;24245;74302;100126;39016;13529;80555;25151;81761;94471;21913;49197;78773;62158;34876;28973;43723;79174;82508;33677;81169;63677;60629;43470;97062;38891;93163;41132;75041;39185;95313;95841;63162;76746;51763;66661;92204;91027;104943;62766;83456;106238;62167;52724;83393;76196;16599;29532;83621;89212;105316;14597;41197;15793;99687;52855;104783;15514;52885;103628;78666;51531;25218;83552;82886;52998;48845;46031;40123;105929;19530;30328;44421;76791;68328;46826;13172;82450;78093;28302;80088;69159;39364;31281;74373;68849;52070;75531;61222;78405;44316;82282;53201;106500;20674;80158;92660;89378;83742;86537;43164;71572;89455;89236;39840;77421;46700;105443;89114;102582;74989;57997;95562;58064;81681;93559;73106;56622;104397;105950;90183;16880;95365;106810;93592;57919;50314;89922;60284;101862;73697;99483;54800;92561;97048;77816;88147;91388;43386;61045;35281;15795;47668;21698;27921;26668;38667;90801;69291;18000;15796;49073;74044;29754;47181;82638;85443;72687;56355;24025;100796;79643;77865;68102;44073;15984;73507;30975;41953;77298;80988;50087;15617;49885;60590;27353;66957;97180;69894;79735;100874;46371;42647;35479;92151;22589;22207;45890;45911;23113;84872;63199;37572;87371;79917;53217;86801;40792;85434;57221;33107;41637;59394;85386;17451;56808;39139;26137;44732;45634;52760;65804;61416;46658;87626;14125;22752;22901;34724;31971;54721;94191;74043;53298;34036;68292;61387;92175;79790;102874;48870;23540;40945;96228;101619;67386;49315;41652;72418;62676;59041;68497;71554;80917;50905;75674;56081;43006;27038;61743;68616;70924;58706;81748;31854;67039;22020;20193;83176;75647;93984;103133;106020;39771;75949;10440;49603;69029;56452;64510;96530;41109;27293;102347;82275;52557;97392;97582;86635;68046;97762;25368;99054;54062;72555;18068;90632;11080;78586;70475;64734;38225;87276;17186;22782;65829;49072;74025;55896;100817;45789;87035;82839;38800;101515;84250;89632;58652;54528;21198;106311;52022;51970;94197;61466;37608;13932;57415;96154;73378;10703;97423;95769;61807;105371;103779;53500;18198;45309;18733;53245;86661;77617;61311;71251;14147;106210;36400;92016;104451;97427;85057;82653;94435;82355;42359;32807;19308;48214;83459;31163;43986;93936;50530;77193;52302;29405;75923;26304;89693;79354;81635;92465;86125;97886;68618;82542;94183;105464;53231;39458;45791;32393;91654;76441;75278;73492;22437;10747;26484;30808;107033;64396;28637;37000;43514;32530;78533;12479;55421;20226;36783;86317;61048;56424;90455;10915;49983;49350;30709;33501;34429;93784;47608;106207;51270;71843;11138;87563;32990;41115;42526;30745;51490;97035;76584;81611;99381;61981;29063;105937;70593;40605;75423;24984;22490;15730;50069;68775;72962;46466;41096;43990;85868;52561;100372;36015;59214;37408;91916;41331;46181;29003;20893;32733;104335;38440;99866;68374;22159;94978;39096;41208;55970;88500;44005;51184;39324;33622;43401;40083;100675;104177;103321;27890;69166;70998;97815;79920;18007;87116;11192;47182;23738;51805;12604;24101;102570;36685;50976;62689;40977;12505;30706;11451;23160;52007;33156;81719;89760;25439;104367;71530;14348;74142;105073;89615;88596;88760;60266;42256;51827;82425;31682;61756;49610;72915;43382;24943;77516;57559;93755;80294;71504;33978;102841;38465;42895;74475;13105;50194;33757;61858;44851;14230;72025;100977;77423;51634;81280;18247;52311;45552;102986;66240;48446;18014;28691;53783;79083;84569;92098;100000;64304;57173;10971;104323;51698;12913;16302;16805;82221;40923;10844;84206;93649;101615;29915;88785;73362;95967;57165;41281;19601;12618;31707;73397;69335;79171;83611;107106;85141;47478;53317;21016;64008;50349;81650;106972;58587;24645;52698;15295;21873;35490;91875;22551;69402;79295;30698;42406;71096;65055;25093;88851;18016;49359;45741;89940;24566;38347;40548;29493;78506;81687;78052;44899;90889;11156;33775;91919;101258;46330;70468;68544;58281;76446;19986;12421;45763;13622;21661;105515;107003;74003;53942;60726;21232;88398;59351;12804;40710;31342;13914;52038;42670;39190;11645;102884;45936;68762;53169;28719;51639;88390;95910;33984;23090;50295;38939;19953;19342;93777;66997;88933;50754;99882;19302;71036;86627;36951;75021;18940;62823;13182;53297;21754;18759;56138;43355;73727;76703;78390;71602;23138;86891;35908;106122;95703;41254;58200;16232;39516;12934;23984;28870;56618;37865;18482;101185;55250;54108;72618;39079;89916;76512;37716;10387;52054;87598;25617;73065;51044;73117;75458;71141;42459;51555;15022;65707;49392;30196;91546;104463;81642;53855;53774;100642;106787;61389;88034;12521;54243;62737;51086;62445;57882;90158;82924;100965;42777;105302;11765;67598;63201;39327;16532;39660;35892;16192;26725;83874;39083;26538;56504;57830;35588;21572;23944;32566;63700;105563;75441;66453;36758;24960;68227;83004;29931;35130;89921;80751;101660;51478;66527;24218;65331;40431;92957;29750;30153;80473;74573;21489;50574;47089;104920;18601;54112;99469;93383;52058;46145;97060;20945;11895;97791;62119;73892;42927;39519;16094;31768;45020;19051;55483;97996;13935;86084;106081;94809;82959;31478;85683;12873;21008;29083;75495;27754;91690;43804;18690;82320;61178;92167;32109;104059;43640;96995;97013;100185;93011;46332;106736;51554;27961;20594;18648;67849;92932;105859;20617;67713;37515;89701;82023;13083;81821;54132;97509;85524;88419;41600;42163;82372;26815;27322;63847;40392;68796;79905;105400;21156;12091;89533;45859;78128;15299;93300;13784;52210;46882;103805;17796;74888;95694;70669;22696;91732;54386;96580;87268;67659;82748;43396;56753;71219;43037;48449;31930;80517;79125;82755;56707;61896;79962;57453;84450;95651;60616;30910;51608;78706;91958;93882;57754;14911;36925;25273;79106;21512;94503;42340;32739;73225;87615;15186;21867;89281;97570;55564;61452;22567;10308;13410;96766;16161;70158;42625;17683;38130;61233;10069;97177;37582;100520;24263;105408;22318;44495;33693;54896;11595;34062;52898;32053;31391;67531;101752;79068;51173;91130;30604;63829;66856;42473;59593;76534;14882;84860;73813;56359;49766;81089;75848;69176;61816;106219;43021;14526;54292;83231;29546;73981;66784;11385;75997;106350;31021;101414;83756;37728;67901;55249;46994;22405;51338;13107;86316;88751;97024;95647;71417;44618;53847;36298;101946;76588;83852;12349;103798;22533;63654;49420;99288;13879;56860;85780;33295;92142;47773;81926;32665;23049;62773;57493;105841;36077;22967;79283;79872;85070;35905;97820;45584;22832;55296;79217;93075;67004;44547;37883;62604;30683;44910;39763;100758;92497;54487;25399;13419;45392;29272;55747;24151;59479;39074;35653;76475;44484;105611;70006;96924;61665;48546;37721;31003;40573;66494;85940;65646;56979;92582;80019;22107;59723;36306;81886;49781;35200;24185;74359;10562;37413;85009;44479;78078;80415;37307;23610;39544;24124;30193;38774;25569;67851;47646;87865;53672;63106;104134;35275;43085;48188;29993;21788;39071;88678;41089;102649;96205;42370;45172;32048;39855;25631;10321;58848;67927;10121;103115;67445;27536;19012;69789;39620;45325;77851;46734;58175;45319;106800;66433;31442;26078;96936;104747;61127;51961;24031;34191;106289;94950;81235;105844;18047;75487;53429;62976;64837;87143;54808;43941;72115;25381;71049;57968;77799;66792;57970;103590;66750;99640;11815;14408;69847;93502;85644;62099;33508;18117;47729;42838;71119;88945;99416;33697;29168;50251;75887;64815;48898;82281;38996;102511;16946;101626;77148;52065;65182;40198;61904;73656;80938;23597;80734;41944;83430;81527;61213;105681;59086;86052;106779;43734;48591;84549;23385;22029;56428;34424;80730;101979;16348;70755;56407;49346;33548;89939;17272;20962;26861;99999;14396;39433;93608;23527;62652;64447;54500;21286;53176;52460;70394;61050;23879;96856;100075;65494;103595;106784;55317;64260;23234;100316;90338;71663;81991;27843;90979;31519;93562;47288;73975;74320;71475;80979;73208;20909;70585;41833;70600;35024;102915;93211;54976;20428;38739;66082;105873;19792;40386;76925;50216;26142;76912;57656;57454;76858;71497;54527;71583;91066;89178;73666;104896;48402;101075;31858;17290;41986;62253;13327;49032;79430;35369;21046;102408;53531;67673;80293;77381;34662;24277;60685;56823;50403;34454;45337;85177;78496;93941;11748;104652;26709;44020;73446;15750;102252;23525;200097;39683;59024;55425;86663;90789;74591;58899;74713;45215;91792;106308;73190;61683;69306;19524;20906;88991;45815;53318;71787;56023;40772;50542;59628;63103;14757;44793;50859;10492;40364;64496;14979;51739;20090;88675;26364;62489;40774;23689;15076;48891;56186;47306;32336;19419;78866;85774;30958;66960;79960;77441;81671;20856;32312;52469;44721;33402;51758;15998;91515;94449;53021;78000;33217;53716;55617;14761;56002;38956;46725;79188;41810;55831;82676;86036;29212;87848;69747;54660;30763;53941;103842;32047;80022;60806;57915;63407;56729;56760;57331;15548;42780;43466;95423;37881;90841;80632;64502;56724;36240;39720;93771;67951;57566;44413;87296;97295;16594;50356;18565;44969;12510;99481;44928;61540;34306;101434;35783;81255;37385;105718;34325;79600;75822;47838;29195;36223;62468;74661;99654;100397;26646;56888;33752;10659;60992;71013;47871;17024;14380;12614;51614;37433;100228;90128;80100;25142;38981;66963;45431;15841;99686;49743;96160;56219;34195;54253;102999;80747;95720;60624;26863;51840;53028;34012;100467;94316;27565;70950;106755;44777;10871;47652;47748;85844;94816;71559;70471;59420;47213;35477;32941;12321;71001;68041;38732;69227;101941;54964;11170;104973;29556;30167;55552;64625;26911;17225;19922;71812;67075;55377;43293;101646;35922;51354;80567;72183;95294;75154;14197;58106;47209;44155;34597;30964;62891;93186;20326;79010;94576;15579;96993;105126;37216;21222;88402;33781;87907;100545;68030;59126;64230;90291;55766;32435;17238;77958;40174;80980;77701;107115;13146;87308;86232;13073;12016;48178;37518;55227;65959;27195;60627;65749;72949;38591;36917;101463;55443;79107;97482;89246;55709;20276;80359;95737;61505;106424;70806;82569;92408;43342;78485;10324;92995;84410;69450;45962;28966;29234;101757;58969;22374;35942;85054;14350;29617;60650;17824;32638;45838;73893;17218;38112;80420;68415;14593;17982;102179;89269;100996;20654;45348;106509;56268;58372;83948;88653;68395;92791;63562;99790;59639;72700;69901;101666;89507;22568;88825;81935;10661;35649;80960;78563;45947;65560;78139;47666;67740;31063;49193;37134;105419;85976;93699;42337;81604;13795;78420;75280;73332;49332;94566;84365;20493;84079;83744;11641;54303;36849;21707;94039;42103;28703;42980;23191;73145;30792;60106;99049;99190;39920;23579;24224;47866;46948;34213;59599;60033;78800;30982;23687;16834;102700;17456;48976;52077;68921;82385;93580;20618;39574;68412;49316;63798;86633;48934;18295;91182;49069;13357;48318;34150;79432;79564;40109;22104;103815;67805;81963;10031;68410;94913;86193;79621;47158;25945;50064;70664;200038;105079;100027;58811;59452;16953;65842;68970;62942;20604;37862;71671;66802;22615;106366;21675;66514;12830;101128;34391;70949;80079;89152;80414;107006;99060;58779;79433;35730;71157;23707;35132;75249;72473;74955;95322;76684;69316;56305;86057;99135;22639;42070;60243;88965;18659;82375;40000;75125;55743;90723;52289;99810;45988;78763;26570;20303;32814;83678;84440;64516;52955;97329;69055;17269;24054;58775;45502;32628;30733;68824;17999;56244;66764;80828;89885;88426;45327;41765;56824;50631;15385;97655;84139;59958;95298;52301;54832;49854;39534;11750;105329;72164;36236;67842;31008;58493;70067;29725;21443;50768;44555;34991;23688;78607;94026;69805;21801;30320;63817;32432;100641;59026;21820;95920;12387;14825;51566;54090;65672;36385;80237;89976;36316;103325;24413;200117;52709;40704;51640;49220;86640;66953;105936;22170;78956;57956;75152;69345;17452;19541;77171;74905;35154;78848;99451;84332;84854;56995;83503;27461;63426;79369;65974;27959;71187;106826;29670;30378;101187;27790;84592;107141;49084;87574;75158;48162;32016;35119;36132;74902;105931;50454;83724;87294;77510;12127;68414;26578;97034;78448;42231;82822;102072;91879;46446;33786;11766;200005;72839;95924;40895;48189;72155;102260;13319;104050;58839;101986;99714;51289;93708;81350;50807;78285;17131;24484;39758;30563;49957;34691;31384;105596;105919;71781;80903;76401;105007;35338;103686;10162;63331;92910;106178;43922;84795;28990;11422;104278;12386;37165;70447;97232;73229;87916;70799;89373;103474;47374;41558;94649;51362;20301;100219;92646;39232;27455;75823;68032;64437;53839;99944;82264;50670;84649;26399;47183;23658;79839;85120;44802;74139;74031;14613;96935;88999;95766;21396;16215;45008;25036;82399;41961;99546;44291;78877;52275;27845;89430;40631;76804;70135;69807;95407;83619;21706;54953;11509;96527;80595;89842;21729;54985;75691;67628;77746;50662;51075;60342;86251;73648;22298;24771;14374;21778;65423;12871;15760;70888;75187;45307;66488;23395;49961;79847;14311;80306;97453;80970;18726;77594;52570;33767;52791;103582;90726;82603;78167;38475;32967;86738;55448;63166;54063;97338;86817;93141;54185;37391;21182;27416;72505;62409;103392;69864;42896;48160;27822;31208;92773;95027;74768;72837;55576;26443;90591;24961;23067;70248;81598;20040;95944;16213;50783;49384;34556;40871;61072;67424;78468;80161;12476;102373;95598;13701;97175;77023;45717;97456;29922;61598;40863;43676;70224;44011;35124;106805;74347;16745;66250;63732;64994;90530;50965;20001;61006;99019;26124;76780;55877;44014;10674;61488;105793;63976;84658;34390;89335;46610;99024;27359;68707;36654;104431;24246;101895;76846;65386;24627;19774;24230;21282;43339;61362;71207;10329;20061;46298;53440;89493;46557;42710;58205;13665;91259;89676;88444;58022;36695;79096;82142;10443;99513;47000;96760;59590;48144;56134;89659;74979;50134;89037;13631;72713;104148;104146;87569;71152;80295;81312;20886;92427;91883;61137;77250;37767;96879;18082;83362;21141;41014;96946;68449;61848;33552;18357;29982;34652;75204;65470;86934;93197;38261;16428;89353;29384;11366;87353;96700;94453;91721;93979;46409;22233;41359;51111;44927;82398;79570;57782;52063;81724;71848;90271;22595;29389;83925;31062;43232;12263;94081;95942;63026;73964;53686;37644;15733;69121;105097;32222;93953;74493;41939;65090;104080;100740;80791;88130;88127;71171;55667;40825;101863;47769;102020;101481;106348;104912;17106;33119;90712;87870;101372;102265;55198;50303;18159;66471;83587;11112;32703;63754;79230;28017;85478;33578;63721;89464;15847;69589;10986;72812;24716;66791;37629;10469;97839;40662;25689;81377;89270;85253;24489;26671;86586;97698;94437;70783;43425;42042;21626;67880;28888;43041;100550;18336;25073;72369;92694;19292;22959;57857;42939;42270;30382;43346;17175;15717;77924;74120;102879;49263;100391;25299;78768;14076;32433;84406;28965;27103;52967;30920;70915;91277;39715;92690;71344;20201;100879;94252;70753;18598;105930;28536;81019;46291;85959;79678;20958;19899;43068;10639;64427;105248;105669;18583;81396;48936;74714;23492;37512;96374;19174;71961;22785;11791;78325;38116;71329;59418;48828;56133;81202;12406;64942;88172;72237;99566;46878;78612;86753;103764;35997;46956;55209;50931;65208;70710;25806;33764;54341;48882;89800;64871;31563;30930;15653;106031;92241;19276;38148;40619;69388;61585;47639;19479;74724;18853;60143;24113;90270;45866;57588;42166;74968;33336;84049;41756;24604;34291;26927;93927;67282;43931;24412;100113;42843;94574;96030;19300;97056;77392;60246;89651;66641;47201;14889;19250;10078;106913;19568;100394;101669;88111;77451;20698;93808;75338;92361;45118;72929;43976;43948;11670;81950;99986;28787;96622;79731;93803;74720;25212;54499;35076;16655;32623;66690;64294;82438;37452;103253;39637;40062;40407;59218;40981;69385;40992;88645;43650;45839;18852;38129;76964;44069;40915;90867;44532;10295;23224;58531;101018;27146;92357;68236;103543;52550;54747;105164;97779;75389;67375;52900;41709;14196;43051;40432;94106;92347;59999;30266;49884;72371;84123;100148;53936;66540;25490;71703;47521;63335;68573;15519;83920;53259;49255;86136;61697;81426;54799;78439;77860;77665;40506;47654;20330;93572;31660;30391;10388;80479;104945;86645;75295;95697;16026;85023;33717;14438;47435;54786;48866;104500;66482;29295;47169;45148;39921;78855;21614;22812;60173;17974;34432;89558;63161;41046;70014;30163;45316;58907;23140;46553;50413;12542;87117;75240;107074;11757;79539;38483;55193;41681;49948;60406;72319;71412;58367;17286;47776;81035;45128;69939;100337;84178;43340;28866;72758;33177;28891;93334;11751;22855;23499;39588;78414;103162;83950;41533;41120;13421;45567;15401;38302;11717;19539;18886;62669;50853;87001;77940;21782;64277;85167;97979;10340;85066;47423;16033;78359;30576;73053;57073;65061;81488;74872;20819;50082;74947;38335;32782;71172;55862;30693;102705;59684;33449;26398;38729;74240;88938;62596;89116;103504;80745;57964;105352;41134;33830;21478;89466;32632;56021;73137;59190;69502;32011;18607;103512;78345;43627;81395;12747;97127;56051;10422;31901;24665;20941;62321;84615;60513;62704;65916;61725;27820;21624;51883;65510;19370;86424;39645;87275;94712;71102;11334;35513;49210;63192;16461;46381;63782;101899;84138;81764;62633;16234;26372;43266;32889;106933;59952;105925;67095;49732;32508;40503;67141;80705;24799;59547;47841;50791;41679;21505;15397;89859;14894;100290;103394;35049;71473;41438;28366;89769;24816;18958;11584;89054;16013;55736;91300;33001;32875;70733;100411;69924;104145;33054;42017;67870;67854;65969;40292;90056;82080;52519;44656;104555;14501;88105;97163;80940;79467;38717;12219;11081;92958;82511;31349;24890;86431;63580;38269;45996;60880;32292;71492;14566;79770;21906;13522;80681;77468;60827;100226;100149;79503;42696;37983;17178;33728;76772;74746;40042;104632;27812;67533;99679;54211;82670;55905;82506;37754;64245;84953;41062;70386;89078;103638;66268;49731;107112;69948;30836;67127;91938;63491;81437;11500;103305;78683;99971;32634;92093;43515;77726;47880;68701;61973;83423;25582;22672;20372;79365;21261;51221;89505;53859;58864;72766;28163;23519;16332;61161;69545;80183;16586;105730;90215;101275;33571;13399;104091;103430;97416;23472;67419;94984;10367;84634;72821;92026;99792;61830;85933;61568;101203;48199;67809;16524;69714;92404;87022;95527;89894;74236;28428;93890;16000;59121;86719;53873;82008;65113;95638;96618;103550;57984;28731;101949;84144;19669;59780;100589;75329;30725;50459;49265;105562;36247;56278;15136;70952;11203;15306;77723;49198;93813;15204;25497;67836;106411;42019;26037;27406;102112;63101;85662;67605;39161;107014;14243;17515;12689;61330;37529;59690;82498;20317;53765;81809;33462;82421;31050;71716;99322;101681;53516;67080;89715;57890;91512;75083;14516;75843;78267;50104;33695;96976;35732;42196;50368;67834;105657;68868;17256;43541;51926;25717;73292;77853;40474;73206;45827;66278;42363;72999;28427;73927;91786;106483;23506;91671;39449;84461;90716;89675;81776;66109;46384;64291;45111;10417;92399;24265;105184;84868;74679;36731;40059;74030;73605;76864;38114;73611;28225;81553;10618;85840;103306;58019;94053;38685;91655;73894;66995;80457;29486;87738;32019;39006;45593;11118;35487;41584;101877;103997;55067;105520;11857;39030;43348;95392;46128;200110;27681;92820;104541;92143;93863;28438;55700;71275;50794;33708;87326;96663;20813;75588;86699;50086;91965;49052;68869;85347;100066;85241;55242;74135;27020;89544;48285;105858;76847;78575;35354;76950;42749;80159;18181;102837;102905;44471;85293;97402;61571;61060;64677;31808;80124;29537;101284;64983;23005;19954;103170;93949;35434;62646;32830;88012;24324;43874;22121;80354;82019;18243;32397;41920;31114;62182;105172;59556;94091;65983;69702;46362;80680;89845;90630;53755;15392;99520;16027;82098;15379;77571;21851;51274;85694;59038;88041;38722;74637;26415;85848;72321;97280;82844;23881;101903;71229;23453;58426;11062;10829;13560;70507;106458;93998;86741;35363;100434;15348;14986;28553;55521;71765;76597;18501;68008;25840;33327;12964;80397;46255;69378;92409;44423;77222;66528;12496;24508;48791;104361;51379;74506;103038;67453;74049;62552;97628;86087;34425;46636;39379;19626;56859;48626;85797;81200;47531;103501;90256;53866;51190;29553;41214;200034;14799;85053;99226;38155;83671;19450;22860;94391;47477;46354;71097;32318;55342;104777;23757;70874;34628;82116;33362;79535;97483;29540;41243;59598;14110;80576;91920;20613;35702;51260;43188;100248;34458;75173;37492;59129;97676;78953;91405;73391;36607;11602;14794;32417;82137;48730;46980;10962;72607;16639;18868;54708;56210;82436;24164;89099;78992;22920;92451;55848;24782;63036;72423;86313;27983;87519;54881;66434;101271;63667;103749;86832;106189;81017;75331;10828;40725;87085;72945;13545;78383;96922;49562;18071;42218;80423;87142;69059;12474;40967;14172;73524;17231;34205;93338;93273;10193;65139;60009;106378;13057;73528;102002;94146;103212;42956;13324;54601;26461;35032;82836;31506;85414;53732;49307;11381;58377;49575;38070;104579;65089;84412;30479;28016;81621;44503;66404;41596;25389;56050;76449;60804;65729;26223;77385;34269;45823;55731;61919;84194;93420;66916;60996;93586;26886;41685;65413;106681;72139;32128;11102;72701;42424;43383;40176;78636;83823;52137;58023;106567;22698;99685;41427;71378;51902;96028;105527;85832;86639;81815;25149;65035;31113;76317;59224;36988;39723;43833;51057;54991;78812;50798;50614;82986;79774;78136;45806;99966;82758;80927;28801;35092;12868;12362;32207;51719;35088;57202;70488;51893;46000;45263;65394;26173;28089;32024;15756;53526;18061;14992;12224;83941;66532;63696;13836;81767;68181;73349;102891;44727;10545;88413;73475;53524;62690;31154;71364;25396;37555;26494;29940;92500;57124;10278;19295;65535;37362;77538;59942;22255;59333;74008;90857;29908;69132;37615;30862;106973;75298;71255;41420;28909;20514;26899;38091;83541;96055;44677;17006;69860;42252;99651;74028;24702;79583;96852;58126;57418;94598;85555;59277;91614;78624;51053;53660;91967;49808;88681;47573;92444;33587;23535;68539;27183;51696;82735;103157;101208;68177;64842;51515;54734;106372;23922;74113;13098;94826;105396;30691;40220;88078;18238;75883;22172;10902;90882;35667;32326;53592;24220;63867;41963;94919;97758;26384;95613;40829;22668;44339;51468;38394;78832;11671;103957;22670;44152;15165;96804;77360;31245;33437;23233;46814;72361;34741;70934;103408;25033;80961;16915;30548;26616;52942;31395;92814;48258;28462;27608;72804;103200;96110;72581;49905;102310;13998;70422;55306;18354;86179;87386;93737;53239;70889;41388;51617;13074;61866;28562;102176;92767;100392;63752;51669;28361;45790;76456;31093;80241;96820;69496;50725;18809;78640;58932;93695;32756;76775;82998;80450;47114;26460;57498;89840;32286;97103;94007;91286;61069;63930;96478;103923;85431;30278;88893;103801;36281;21608;63176;49939;88940;83111;95003;37315;38415;21177;104067;46918;49088;68186;200028;36526;83299;62129;24714;47621;60769;90284;56153;55764;22115;29672;87216;68741;29059;11976;71715;102675;87565;82678;95629;58354;50137;26246;89482;45225;61561;105525;75102;11165;24311;27145;11752;20806;70368;93954;72590;40168;34743;31752;102642;78576;96104;84199;10590;55761;79611;84556;59545;64103;105260;90037;53249;62096;61036;91932;34217;33756;25541;22588;84397;20073;91615;23314;19090;56985;91595;58604;102329;32497;60452;82894;77528;63810;96404;72476;74794;101747;73217;36084;61641;105564;84538;38367;21028;94812;76827;90140;38154;31039;63803;83305;42683;36642;29511;16419;29495;57120;58611;41724;40291;85819;30463;61328;21746;104592;62190;27706;69550;50300;44417;101483;76454;58499;44966;91602;97173;48683;102855;62977;87780;22576;49020;56249;55231;64430;80495;20928;70333;10997;82014;69885;55707;80203;81421;43421;88411;21280;86037;42742;103466;34792;102346;87711;20247;96059;77949;27339;19526;13808;93636;43035;85950;39922;77457;33729;34148;75128;65496;59588;90555;32340;89706;106981;13218;13977;42348;66089;20736;85294;66063;16991;31260;11534;68101;84998;22903;20967;83437;69282;11281;94292;43468;28015;95637;26098;73762;34249;39626;84119;97125;14640;28858;52736;89094;79945;53497;27787;61895;29277;22800;106775;23242;74225;35834;65702;68870;39069;100096;74884;52956;103547;32441;85067;49618;74795;73620;57828;58179;67395;62677;87550;57377;35959;76217;41574;87782;94171;82434;93940;51575;17556;89183;37323;75653;73235;56939;35163;101618;73037;17154;11372;19475;78744;91005;64534;46561;41225;25951;18878;67578;58382;93144;91750;26852;102846;33262;78344;24813;33430;85559;27058;106395;58867;69277;67070;65317;21693;63451;19383;58456;73090;62800;58546;52949;22273;79947;18624;45886;104455;35721;80141;22272;106517;79700;97468;38022;89027;46567;64559;14600;22049;22651;21855;93505;10913;85600;89628;93002;39782;77005;67801;52776;45851;22453;84170;52180;25459;60864;21209;76592;104701;87038;43302;15995;46590;23917;59776;104568;82702;84662;83350;78774;56841;26103;57780;34588;105321;41448;95432;81552;93587;25952;15109;92063;97398;72748;102875;69672;86219;29524;92398;48175;69936;100690;58442;67985;56733;56791;43561;83651;106806;100040;24605;51483;72695;63081;52935;11383;90352;50375;67447;28551;19939;94597;38805;10438;81693;76530;61597;59382;23815;89559;32917;74761;41773;57057;100884;66093;86601;83383;58264;24458;80855;85909;21735;28795;10015;69760;51848;21399;102453;56293;104501;29286;10066;68823;84921;22847;32296;91936;72402;81285;97393;78737;17059;92191;51910;91747;43469;89827;71696;68735;74878;35913;32599;92035;85265;35185;78601;59740;49596;41751;41362;35945;80041;13917;92298;60282;54932;105337;21877;90475;52991;24490;62682;13444;101104;26081;88145;19125;29266;99854;11811;67015;97036;62504;21917;37573;52334;50044;85762;73850;41157;87636;107128;82081;94730;30092;96540;91446;88740;13760;76101;92518;81550;75957;36552;47236;79808;102789;45089;93026;48935;85299;89138;22706;23069;27568;106116;49425;20037;53601;39815;31559;29129;53468;30076;82237;45958;30405;25416;105430;77918;49612;31335;35302;82371;16125;103234;31489;26046;16117;39612;93531;71895;91812;91760;65896;102125;106016;39243;78944;96335;81770;56304;20420;105488;34697;12205;91342;104880;88514;45358;95980;68990;38523;13833;99137;43264;69274;66922;101043;84575;81449;17192;86216;66008;85841;90173;39866;72363;43171;56265;52909;21068;70530;62626;96207;75233;13957;66427;55557;14427;91777;88487;30055;43853;44183;58794;94988;57999;25757;36117;53587;56766;64585;19261;59762;94275;36596;47474;105598;24086;66858;56390;46789;19534;39093;79657;16055;58392;34731;36531;15361;38816;22259;54297;82801;81311;47802;89727;39103;103396;21959;68792;84796;94886;97819;63805;12398;96383;62948;21762;43983;58408;104051;95548;27847;200113;90022;83271;80887;75484;94318;73747;91303;40380;40139;87249;105367;33847;31094;79268;106390;72412;14300;105523;26041;78200;101176;55684;66919;77836;15302;104047;78793;17752;33661;103412;56559;11708;39339;70080;70843;64713;82706;19324;88847;26962;104609;20016;16546;41966;24935;72627;34581;86150;76932;83453;80123;22478;78999;84714;40242;23187;106488;26566;106449;58509;14789;95436;11343;72538;88524;62783;43119;67786;71584;54005;31847;35381;77357;102399;57247;50019;19840;57504;21819;54077;64088;44190;49308;18713;10725;92763;56604;61728;105349;60940;64483;15555;57209;36866;72187;12938;90514;34653;105429;72944;54383;104306;37507;86460;17080;15526;60803;14655;15969;70788;41868;84621;96543;69733;44213;48259;61711;53512;19780;46895;76587;61733;69383;56260;11169;20816;86466;84423;92288;95493;55164;44061;105274;94761;51921;82575;90738;47808;56798;55328;28826;93438;72243;94165;40712;39019;13450;32174;54619;106276;20851;10865;51118;25980;14493;72156;53981;75655;28350;105943;83007;61772;105145;36790;90043;66866;60634;22111;77000;102508;70879;88393;14498;31610;48837;87220;16581;83545;57586;69793;43209;79707;38160;59908;106577;63421;104046;75109;92135;69922;50193;12110;91403;63248;38197;33111;43418;34501;90523;101779;66680;81653;84212;80042;41702;83779;23124;104671;12909;102412;96465;22315;25825;68381;17567;69840;61236;74376;20675;60784;100772;74471;44042;26400;16769;105857;38656;72248;17552;58469;20782;63024;53252;24179;40523;38845;38447;91184;18310;93917;100985;49952;87164;200112;58896;97004;30703;90384;15882;90157;43827;14595;23211;12759;40367;40405;18777;104750;69649;85602;31110;74002;71898;85326;18460;18611;26792;95050;11853;17358;76761;57126;73553;75016;17697;99308;17316;48180;48609;28894;19834;70009;18931;46169;40921;58473;21860;75616;86959;15763;42096;68989;37649;68209;93743;43949;103040;13993;104131;79822;38078;66637;70199;55038;32633;84173;72521;35751;52430;58078;32571;60378;103447;29269;32727;95991;74806;66899;18847;61698;13712;65080;95324;78991;106195;68831;17565;14166;23459;63303;16249;69972;16790;18875;106675;82659;90367;44148;89297;44717;67526;54628;56902;59938;84067;59737;46253;23352;68698;95880;36209;45642;67099;75369;44781;30306;39891;45015;78808;92223;69035;52387;99258;68635;58700;36201;57972;53952;24472;85312;43693;71129;17704;78389;94433;96454;97913;60379;73338;104487;101317;63861;22117;106084;47393;15627;27173;13754;84816;62165;27958;13215;43893;35919;16913;99828;39515;86823;25723;54915;64179;100783;92280;83785;25429;18770;72432;93213;69897;87070;45845;13366;61029;47888;25988;76084;55086;43343;23810;66660;29747;84125;36007;67614;84684;66487;21818;13240;48469;97041;58343;17521;83594;106209;90323;33983;25821;14167;25556;101173;75018;72413;89139;53074;35182;80156;36506;19082;73581;32192;31363;99827;93824;17424;105882;89412;27729;32866;13080;92770;103105;94103;56340;33562;57568;65059;27040;62435;76017;34018;76842;91192;75774;90818;99562;57990;47589;78946;46806;82656;12464;82743;91513;67439;85089;12708;84665;10122;50908;66042;63049;85820;58438;93971;96075;12775;92105;44875;11647;27540;39896;18273;49918;89861;84797;34649;77524;36064;55726;83746;59708;96273;33018;36603;68533;96188;105701;25663;68027;105934;43002;26134;89646;99098;12945;82963;20381;89181;70402;46418;42860;62698;57642;64645;17228;49637;19158;43553;11158;53434;65300;24366;99488;102924;84340;11398;67353;53236;20118;51880;34215;51303;45565;89635;40052;106643;65292;68152;15997;54548;26641;37962;44922;65357;28499;39323;16683;15754;84038;26827;97171;28729;80749;16544;33737;102771;104836;21283;15686;53346;103565;90669;73330;54674;84469;45181;38255;67211;104508;26184;47538;82795;69784;27277;65783;90061;71494;48365;35455;52843;80386;92926;90757;12038;33112;41778;22629;34955;27686;53097;70886;93336;71522;62370;65391;35249;86182;101334;95326;68916;75730;16336;86252;83954;58017;76129;80365;56926;103943;18739;35687;26067;88027;105055;99661;22609;104615;16089;96475;66208;84223;91223;106569;103046;66150;100563;79375;17545;64514;18153;53079;85475;30158;58436;55271;84463;94540;82403;78672;99409;92811;77592;24295;27996;13627;41003;61205;88035;58512;50871;63235;33124;12090;94710;24693;94033;36266;56245;52178;52208;97046;88096;63601;69088;84910;84179;67207;15511;58183;32712;88045;24786;17223;106617;50855;66081;27340;50213;20124;92571;88859;52039;18013;55479;24331;19473;71167;30934;26514;100774;58963;84879;17494;72655;55273;20808;39542;13662;35155;41408;87050;14447;89355;68233;57878;72927;52002;28161;46231;13294;42916;52936;41167;53385;63477;25475;83278;62827;13562;51523;44997;11825;28155;15054;40877;86436;22375;106677;77821;51525;104016;40901;19593;63993;17310;89738;77706;55627;95627;71375;50294;44056;66414;77695;80125;54532;106603;65601;66675;73073;96036;78780;84763;36059;53182;84294;60470;47318;15620;29687;76558;86502;32171;91909;94537;21466;31364;69862;86242;103857;70891;74694;52778;38348;18750;51467;56850;60619;43815;20203;55874;103259;101315;58128;63474;20563;86571;30370;24129;101818;81871;42558;73882;44382;13108;46269;54043;22186;75318;38505;30945;77794;81620;61759;30544;73723;65733;57352;40894;15399;66851;93118;19339;15156;60002;42632;73837;44935;52997;53152;46464;46887;80413;60904;23628;105424;19427;25476;15558;54778;48517;40169;76722;79408;85964;37214;80409;47778;75768;79850;69490;28531;99825;19678;83543;58920;90872;41317;80331;76404;41102;18517;10539;38067;12323;68018;103268;101177;72753;73241;55135;44862;66673;34667;43870;100051;81811;32612;106997;29771;105854;30968;101451;75091;69540;17157;34608;31397;55527;73086;57193;47398;58601;55253;21576;106330;79100;59298;23869;39437;52198;72373;78919;62413;54830;60428;70053;88920;67970;22935;97018;45833;71993;90408;26719;53966;20206;70139;73203;38819;71235;81540;99514;105987;70821;19756;64009;75066;81195;24528;62106;22243;85168;34615;11242;23341;14547;16299;11436;30676;56532;52393;26325;91822;95735;87124;58137;70720;13303;80383;105326;76259;20607;74450;96990;48270;80982;44262;61348;77164;88091;56497;80395;68278;13950;106174;13900;29504;85146;67751;16794;23272;65947;101347;40994;41713;50787;15328;63719;26778;42557;39039;27919;17678;86942;41695;10669;103308;19429;31069;18811;62608;44784;49541;38915;23483;10899;59685;68090;56103;33536;49434;29372;69387;80162;47466;20649;20538;62068;63112;12051;32419;21910;77302;45836;106658;58100;58924;16052;33707;33623;94857;97154;83814;92164;56933;69660;74367;56852;48394;54070;75590;23746;44439;84917;66912;65196;85769;60483;75234;90554;35693;82114;23993;78761;94027;80142;85445;102405;41477;74243;64005;102711;85344;101289;47756;95593;24509;87698;13598;90045;71416;84975;26468;57864;44985;25996;39148;67961;95642;66363;97439;11317;63380;91799;25912;65984;102678;70511;22237;41135;23270;13844;14335;61760;80445;55032;45677;101062;78974;67731;58774;59977;53360;69181;84580;73051;48206;14851;105417;32163;74586;17485;63015;56612;43173;102138;11275;78838;15926;74974;83368;43228;62767;30437;102933;80977;53453;105465;101224;41258;10412;72213;17415;12532;99197;77652;10118;101093;52218;75516;60193;23091;105551;70844;106975;52493;39948;66489;56670;53820;84669;32149;86198;96706;50426;26573;41106;72264;103476;41018;78965;91335;60202;32191;75145;63037;48265;12087;40228;59536;39486;38964;85094;77063;49723;30682;87912;50703;28236;68353;67803;14156;18652;48769;34907;74599;73845;33965;66197;86777;51127;11089;64112;74050;55654;93871;42338;71561;105821;31970;41050;69379;51867;24505;99415;21123;97087;10612;95761;20337;86035;32246;75955;94661;90947;55470;20956;79929;56247;75641;97688;62249;69582;25608;58217;49883;71996;65086;70197;73961;85369;105001;93129;71954;53871;27537;60427;102515;94108;22527;11742;32513;31419;76410;90297;73491;39797;49001;77534;55439;96989;63028;27869;200017;16111;45175;33802;65198;26498;102941;62023;69411;16046;17182;69472;31212;68631;67760;85187;97341;82279;60786;67789;74909;102881;58791;76591;42168;66520;11149;104694;96640;32182;53760;71390;82729;13470;200041;50534;37850;105820;103791;63753;16782;47740;65533;65168;56595;34823;81523;26564;43091;85275;72539;45054;44747;43722;103644;44375;82460;35244;63776;36178;17366;17098;51319;55436;66113;63649;48894;83334;88392;44541;63756;69907;32169;78748;81717;87212;76928;77590;28469;94323;65550;102116;78721;38809;72977;24377;36632;13860;106086;38960;54082;31584;65663;20407;64326;23241;97665;59334;47244;87669;10353;24299;39292;71653;67689;75150;16906;20142;36932;20322;27271;43490;106803;102568;13395;21301;46098;27125;200075;47630;87943;81422;32085;30743;30520;99590;30002;27658;91095;76139;92580;50969;48583;77985;32167;77937;24043;23062;77515;83318;73439;76924;37726;81506;19495;81990;92572;71110;45724;48358;14995;88403;65576;12438;82370;90781;19271;96017;55298;88937;89626;77978;36615;30581;10965;84259;30538;89415;57346;45494;31819;14385;101473;106202;55460;103884;89175;37285;63990;27852;69356;11439;13407;78077;24722;35584;99038;54675;43135;82723;40360;83185;41491;73598;80557;31298;70794;74487;60055;10991;106758;22693;22484;103568;57186;23836;91538;67220;36282;60264;50135;62430;36952;86453;78590;72801;90735;44806;86446;57018;89699;94803;99729;21513;18086;92866;97526;74148;106275;45832;102592;28019;94546;28626;68485;76570;50451;10044;50963;37200;31608;99213;66154;54589;96659;96517;105188;25595;48742;34634;75521;22124;19416;79986;14676;13864;12531;26247;43298;14437;25491;74582;63444;65962;54977;52238;58584;105174;82736;33898;97935;85617;14127;39857;78994;72548;13725;42648;23206;43360;84177;31315;32444;45076;25751;91776;76506;86512;70898;54468;29362;79370;43671;100276;52811;40491;91978;26890;55233;83901;33777;61609;51160;29514;91502;28823;102238;81460;79377;68776;74622;46886;70616;16868;94230;77334;56499;71254;88692;79723;14694;97903;63210;93601;20797;56840;61628;49121;89571;65481;36011;78012;45012;69220;51898;84282;13486;83817;57577;16892;94946;61710;15560;45666;48973;65427;11428;101392;27563;64419;10531;84443;63226;46266;32299;33411;62412;25538;70457;11660;38117;64988;37583;69938;51164;26934;43309;86919;68858;18365;33024;91567;64898;90459;43664;26451;43771;90870;42494;94131;67120;64541;32193;86749;44341;62867;29284;28534;93444;42898;81267;26619;72995;64373;35079;100959;66761;69000;74732;101993;36547;66392;36265;58254;16585;61516;53775;68591;62659;52680;24022;50000;68346;30966;86881;73587;43744;58208;99470;96425;89376;12096;39170;57139;77137;87309;33135;76055;22148;99988;51581;79730;32618;95403;70056;88996;30722;105305;24361;96261;32165;90934;45381;103052;94862;21583;94325;37293;91131;39264;25646;73047;70901;75837;37287;74642;28963;35304;76136;81743;102536;37741;92152;52485;29185;80704;81292;75196;74767;24785;77017;53860;54536;21071;41303;36684;77009;81745;37896;68239;89401;34084;61567;45372;97859;93600;13638;23806;62273;92382;55344;49890;16416;48568;39481;81678;19709;59847;73113;85426;80490;91897;96242;32301;66320;52954;64511;46039;29775;93463;89787;67866;31860;63697;21092;92402;72228;71263;43137;22179;99884;27930;14829;22834;52618;28387;104230;78229;71236;14436;51845;61777;44562;80596;72122;56035;76581;18233;104509;64358;68935;60782;42274;79871;90764;97659;102107;92310;40443;85236;96470;104387;32446;63194;105251;104392;37685;27382;57308;103451;106034;29622;29080;105183;68408;27561;80170;11508;65608;90575;18535;74735;63548;31387;94922;37733;10456;83732;86666;71654;44049;61501;44169;93429;36741;88527;31784;50424;103273;105471;41662;31892;87408;30424;53910;47224;83972;47647;47680;47899;77902;78243;56007;45630;64570;88384;70592;97931;104505;56864;76309;21593;71974;96915;85307;73774;45640;95572;96417;97157;48777;104018;69794;100312;76866;87684;60897;60645;18294;95816;93143;29090;63140;48961;54653;72903;107057;106912;83179;55206;73248;50385;72531;73778;28192;42950;83047;69265;62208;21484;58577;27463;82294;37106;11120;31133;83339;55589;23157;101270;46473;13293;66602;92659;50348;106197;17644;99175;30543;14392;25340;16349;44863;71711;54872;200000;36766;15160;103554;89741;28329;104388;44837;49715;68288;81551;85363;33520;80329;75267;36462;83487;73992;58253;15016;65509;35488;56366;46185;70015;15938;41828;30322;39501;105838;43015;91600;21909;96114;48557;30626;85372;16352;76538;21687;60924;63244;58805;84078;81333;100118;85484;84298;23244;42438;11550;26587;24374;24830;72181;92749;22083;21998;76407;49696;41284;33833;65536;103792;22642;100771;27265;55147;32609;13549;38333;94446;51652;35844;44929;56432;26793;70482;32976;13257;92201;11855;78539;94901;103684;41841;28172;20132;56486;30224;93590;84681;77945;56394;74603;79390;51409;31026;40276;86138;18231;46978;33320;84399;74986;25871;81985;10288;35607;27328;21636;14158;32999;104101;99662;85918;88149;70634;34130;33039;46822;12311;24281;101030;65641;14226;73637;71000;52377;30675;66523;36976;18564;66451;10584;39689;44050;62699;38087;38756;94099;58559;60966;51590;96250;106135;93023;12704;28005;95476;17088;47004;11429;89992;62705;75908;67946;19071;62239;105689;72613;72844;72717;25773;48696;83589;95842;61305;54584;37295;95846;60863;88756;93106;77129;73806;25015;52621;52202;84464;105590;41601;37111;12435;16479;103284;31832;19643;75704;49153;12965;67986;35283;52147;85451;85809;105420;93152;12827;55916;94483;99540;63358;37504;46589;12656;63915;44075;78073;77011;64219;25794;85096;15805;37252;33367;46114;30547;33494;11027;52177;15141;77622;96457;12996;33931;72895;25920;77311;78367;47013;35308;40717;52876;52219;47832;94925;103952;103144;56346;12556;62606;42908;33345;80726;87457;47371;75708;39541;31555;90587;52507;58431;88714;78939;27823;44821;61707;89462;38905;42143;91791;105905;96987;101817;77151;93496;67154;70855;51855;78147;31323;70782;50172;101532;63827;75714;46143;26512;32009;22749;13886;65712;101448;17188;86701;54810;37872;51401;69658;80046;13424;83369;32950;51090;59816;11685;69931;68104;36129;93138;18452;56658;29069;99434;56472;25517;69964;44430;101784;70640;102766;45689;24915;94713;15501;42766;49862;54969;58086;40731;14461;65381;29445;55440;82290;106224;91411;78665;11043;15843;73971;79517;44352;93544;24465;60947;18661;20379;80317;71543;62752;22380;17721;83304;53110;42565;38640;103975;34142;90100;49978;64166;33187;99007;30051;32635;69487;45224;34912;21645;16528;17319;83020;103706;22943;83360;88530;92229;85115;14064;84776;64588;83955;69933;14912;10919;51088;19171;39270;57160;54312;34028;10189;24542;24533;89118;106027;27028;23961;66319;18521;95369;83859;23462;65992;25559;95964;62811;64500;96245;86154;69666;54765;94282;102658;57868;39733;52072;28383;57880;94610;29895;48995;41701;71679;20749;32710;94647;38300;51904;53393;90634;39691;67212;21308;80260;19392;28885;97578;26114;44822;83251;64039;90930;55989;106131;56111;85834;92380;58647;22794;65946;20418;101570;47513;12260;43046;93911;61950;44520;28876;103740;69199;46493;80786;58376;21907;53751;26386;14980;32247;58585;85674;34480;30073;50724;81436;91040;35437;54174;84076;72580;37954;68773;101215;42292;99300;87793;96644;92182;16311;43758;83688;75926;41306;51305;82071;91855;60667;66789;63859;35523;104015;66710;87556;18351;78225;33922;78574;30552;53445;18903;64139;11375;40554;106338;64457;46154;37160;31238;39411;101777;89411;52656;50226;65328;61257;15327;59663;45635;89941;14256;88480;72040;63878;67587;26526;41460;72620;40986;52113;10487;77730;55926;78339;105573;85003;47894;69353;71512;66200;26967;88009;89074;83843;38883;89784;45877;39020;19296;91751;75243;93103;105009;27151;13245;71579;32360;84857;102967;34027;70291;95043;102595;70583;37070;17203;68863;50023;100859;13762;45237;48403;40452;23739;88430;64846;43998;41732;69183;88883;71742;70467;70458;90877;24276;45119;10906;49999;90008;35311;10274;68754;31304;92290;80302;92663;82428;59935;31782;46885;100829;47361;73533;29024;27120;77934;35387;25929;71311;42905;80648;32667;87217;96973;22260;79894;53743;101219;14067;56477;101107;52584;58796;45297;91661;73061;54413;27334;64119;14519;42071;57711;34639;60965;24585;26824;26458;38997;32038;28390;84031;41170;77637;104176;46796;71095;44982;86296;45725;29891;86648;65717;31840;16347;54144;103187;102218;80449;97131;53886;21052;21817;78003;78249;72292;57507;38077;34577;95834;100801;18386;84707;55690;94740;31572;102099;11896;53537;72909;82291;18896;54422;17510;61519;53029;103577;64439;82111;101447;12261;60792;50084;40284;50538;80879;66095;41146;81463;86030;30418;70540;36955;90929;94767;27309;88100;82319;78462;93169;55324;43436;28165;89783;59600;94060;100561;21516;75536;52596;94235;78094;40602;53749;25351;89608;92076;106839;68688;54135;103940;78256;76702;92835;26148;11049;16650;32339;56025;83538;67418;72912;69622;102251;23347;24557;27056;81594;30214;26919;66977;56303;91311;88992;40192;81768;56319;104132;70973;104608;101847;95962;26055;43054;75386;15872;14214;104940;59387;82037;27006;97166;63058;60983;86716;105147;73548;61635;90021;59585;76330;104597;66619;31745;16074;43924;32242;33350;100574;84782;32624;12093;21179;15736;28644;70756;68183;97679;55860;76151;55103;97774;99161;66647;103995;53938;23153;27288;90623;100440;28592;89399;57714;103057;71846;69628;81689;43909;13415;104551;90080;44259;44174;36230;84610;18456;51742;90604;28227;78545;85829;32199;52356;10194;102019;16155;14700;29095;30130;40809;95257;28030;91899;101771;104883;85849;61344;91746;73544;31632;43651;104181;38385;102856;13606;71366;23891;77409;49449;90317;105956;10477;42247;32168;77287;41704;42951;13742;35800;31175;48838;81878;11033;81601;92373;41808;44909;41867;49910;27238;36885;45670;45924;45353;97285;101327;13113;67232;99188;105059;58480;102763;82124;100873;72930;72196;35657;74552;15161;67545;44494;50968;52658;102821;21382;82690;69560;54551;57725;88037;40718;93675;82936;78835;60773;45040;82781;104260;48753;36750;59833;60216;91383;25919;15479;51813;79409;37969;58212;12950;11022;85664;48479;67421;32449;11909;24737;80936;89764;56546;93908;106734;86235;81256;47733;67455;13826;80754;20788;92637;17744;25411;104661;47649;28683;34228;107027;16228;97258;30154;71769;85623;63411;89161;86227;104992;89145;28798;91049;84089;36285;49738;41061;105842;91244;101282;20555;77839;42718;93456;74020;36686;17308;86920;51205;28393;46703;15233;67909;106785;55742;40289;51168;20390;83472;15339;102223;105227;36179;76179;78192;13375;42842;85455;62806;29807;38101;76319;27425;72891;28694;71990;17298;16815;57075;43132;72759;60841;24942;14157;80883;14202;96744;29801;80471;51668;53377;87716;34707;88062;42262;63788;75639;67544;24753;27987;66186;43580;105399;56060;105474;20292;54248;87500;36569;99759;32604;59855;89476;63505;105023;40149;37547;101340;102936;40566;68535;91178;58101;103372;72519;84623;55370;46924;17383;104120;17784;83550;91895;67396;94296;100406;15759;12832;34721;54700;94872;27773;85211;61603;95815;73808;88767;16317;86988;95516;33745;80552;84772;105304;59157;50974;95857;68940;23460;102677;103976;87450;39696;72720;78060;85589;92032;18532;32678;62939;92260;27955;105575;80504;95788;54905;20652;66259;19273;78511;99529;61081;101498;35078;81567;17562;33975;47096;88383;101486;25282;96546;42254;84373;78274;27132;89045;39284;44111;26769;97323;50048;52598;64918;14463;61026;54807;42541;91535;26043;52532;18753;36795;74593;22240;22409;107069;40853;87053;20968;45959;69927;92879;38258;37352;61104;81005;62651;107043;49583;23259;11325;85408;17296;77467;57425;29098;97977;26539;35819;37642;97753;104372;10174;66526;105105;94723;20971;75772;23804;25529;96940;78061;20463;59697;24763;41009;13436;101238;51811;21542;104266;24174;48853;69617;99803;40979;15192;61456;35268;92966;34981;40250;61667;20277;41462;87664;18563;92473;46152;64829;104038;53153;80516;55142;78138;26023;94928;54955;80781;51079;19238;104514;103939;78549;72042;94373;66475;28220;83573;13899;36524;90694;79331;21704;82270;43153;83428;48186;61589;79767;58555;25977;47489;10029;49595;68361;67691;25666;48548;69795;79699;88876;79779;93053;22427;70698;54264;30777;91519;71635;71997;89374;15001;11195;75132;92206;75890;85441;101559;77738;14119;61865;92927;38189;21673;103203;96173;72642;30631;34196;11130;102093;55975;89318;23505;49355;59756;13532;92539;61582;39107;66187;37880;20868;89883;23745;84413;77266;104043;11050;30599;57709;55927;51779;43108;95474;65758;70604;68777;107125;84842;61613;97993;20892;100084;99960;96329;95752;58897;101325;104106;22045;95531;66860;20139;12212;107018;10151;103197;65447;34905;28695;18728;84012;14058;22827;10926;58199;45200;29564;92403;97617;54360;29696;89568;79639;31903;63720;86869;65881;61717;61684;80617;61068;105453;20042;12541;72066;63290;61622;95963;31591;11860;68266;95347;87540;104923;93148;14831;33184;80482;68257;39210;54126;18286;74189;16676;91638;106181;43569;65438;10268;24241;55549;81361;95607;94801;77224;73629;79079;73560;71767;13300;25063;16163;46245;43926;37170;65907;37062;50120;16755;73006;68143;27036;35060;105521;103448;57403;26099;31888;84643;79649;16206;53382;68456;97692;55254;60568;76683;56274;31301;45907;46969;35935;36869;19279;94969;86984;44101;34048;104780;41173;101183;79273;35858;38951;39824;40752;89952;82787;83820;49914;39897;103804;104838;82889;74633;97954;54244;31244;50036;41375;78890;76540;10051;52945;28720;23537;200066;23730;71700;86166;27737;41731;27392;14231;22978;60479;92831;90412;82155;82314;103489;69141;30540;100214;59435;44857;31567;74754;53908;99136;92122;73902;90635;19884;54436;77569;33287;37882;17337;72284;30393;63780;71938;20508;37251;46294;14033;29865;45929;102090;74776;33346;26160;40694;28072;96591;104113;89931;11307;48438;43094;27750;84730;89522;103319;75048;61898;43028;94395;95630;83827;33283;28049;40122;61183;55215;45645;90786;36957;15418;27734;30648;93452;44996;27739;45948;45449;47400;41733;47628;53626;54849;87845;72529;19885;42894;54524;73382;69115;14044;84847;36156;44801;58388;74885;21358;95722;51709;94850;19770;23620;65046;99166;68584;68081;85637;40755;15366;53815;26183;55840;25832;36728;70876;43742;78298;39903;77466;82367;79974;37803;43634;25359;200077;70646;35988;70231;44688;83738;51899;28846;97978;26478;64887;96220;80780;94016;33014;36380;104970;48243;100971;27667;43501;18635;11707;31758;91329;95609;41162;26012;22630;39523;70214;101812;20900;22751;76171;103229;10680;76205;73303;52416;40373;29387;61083;200050;75503;82770;77078;105914;21345;51962;72692;63188;105112;33575;103186;61329;97818;30088;88957;99796;51757;14003;16917;80858;75097;93957;64351;103214;60735;76668;16499;22714;78358;13812;60708;32189;13773;87998;65534;15678;81400;56561;85032;87553;46351;72957;44293;53375;87043;37567;52775;36405;97066;66895;63948;70034;73231;20332;18932;35720;27423;50568;33403;78734;56878;44165;26615;102756;69105;72582;82975;80550;103138;83063;49811;12011;26113;13884;69086;95620;67532;58213;87834;76738;70943;89508;97733;64632;96097;50187;64647;81451;31288;56330;107121;75472;80185;64574;48183;22280;90309;93588;25066;56801;105467;84245;10052;100691;91514;72444;96190;68287;96969;57218;78959;96572;89698;27489;80250;50585;10866;64962;12347;82006;43828;64452;100989;81298;68892;62548;94122;82607;75816;75744;83120;46173;46509;78888;16747;20758;63856;50595;71531;88118;35219;106723;21292;23037;12229;27182;104805;57360;69937;84717;92590;17107;86873;40199;56470;41635;13101;18956;73692;34572;14533;104311;50311;92218;54732;50417;38120;73593;72824;65578;99029;58806;40763;34342;36985;51943;76650;51155;27691;55717;71994;72192;21240;59193;35747;21648;41797;83799;79172;43697;32325;67411;15308;18539;87982;63794;23108;56960;102831;62769;76695;84093;87054;43101;65736;81691;77904;93116;45814;32943;91667;10090;12267;93237;101471;30109;81079;83670;17791;30916;38492;29636;64606;77692;32218;103215;65125;33412;60435;102115;23873;82545;33609;65266;53600;85604;64495;77292;34965;39811;89777;59832;51697;13757;84766;33193;44080;103270;77610;48408;18788;53853;61646;37253;50531;26843;79676;58524;12504;48988;34915;37974;79853;80649;73407;89621;15734;10008;79387;17504;20224;71093;37527;26470;65843;47526;45176;105787;56978;62424;20412;90974;28134;90975;92251;82879;105421;39014;31382;30458;80816;65007;69034;92905;84574;28641;92185;47473;12204;29064;31708;11294;58256;104963;17618;103562;59100;85838;36105;53747;10204;43324;99808;59097;15395;43012;48409;10203;24211;46103;28374;58003;24793;31523;28681;103072;50924;44314;13487;20336;67744;81470;51578;68274;83694;49479;88634;63165;29392;60743;10206;29929;76626;104740;102503;53912;29441;41145;106668;83104;44320;81865;44878;25812;25435;15061;54892;32287;28078;34766;38404;28631;18789;41727;99066;13943;90467;79653;90855;13151;91604;72699;48146;72178;104707;62280;69621;12251;44689;15873;77782;53296;95412;29250;80215;20990;89026;67155;96643;29707;54654;21863;46102;81625;10460;64621;20733;51423;102615;55956;85697;60636;18929;34514;75877;65016;57926;18827;39273;77026;15350;56783;55902;89273;62419;86495;12715;85703;48869;58528;90602;48861;28052;36029;18967;33758;68088;46345;66825;24254;100775;42972;18221;48757;78055;39717;65612;50679;89132;105088;23364;95708;27593;47741;79626;57694;54787;48638;18313;68222;80918;44256;78657;17271;45074;54166;48164;88880;69619;76190;25813;51314;18769;46176;101165;100230;31023;55662;15377;21989;14155;25128;42499;51746;89985;68755;16310;51672;38674;10183;37569;16822;25361;39697;48633;65223;102301;26227;38326;99392;52000;44708;49029;14619;35750;105540;14599;57129;78818;61815;29941;71437;48453;23513;14850;11829;36237;106004;95010;29337;53974;85973;84923;18605;21384;56535;75731;64820;50321;74195;43163;11728;100151;42432;77351;11612;18531;57779;66896;27169;29401;65049;52131;70612;10155;96244;21084;85570;106123;65018;73954;31262;66982;65043;19991;106485;24335;26653;28345;51599;15537;36420;36369;79291;95794;91511;37453;58133;89274;34604;78395;12516;47325;87902;16555;103999;30954;29567;51632;67949;31865;91532;41667;38402;95840;85979;26199;82877;55056;96805;101276;103996;10283;74916;14573;39427;86185;37557;97788;55168;21389;50214;31769;55795;51612;74229;56530;57421;71231;11677;22717;49386;105019;53982;28367;90739;37394;32876;31542;25650;61246;21473;104730;72575;83700;10187;106990;16756;72716;20026;33906;62807;41630;85720;65092;22421;96523;39365;60049;56776;62009;82433;93257;78840;59379;50784;27345;91542;71191;51261;78403;37761;70968;14464;90314;10275;33130;21472;90698;21833;86737;82377;103506;104403;35480;93392;51839;51391;86529;99644;36828;30309;70536;11251;86773;22550;96810;81031;93406;80944;60288;18087;96666;44387;31618;78156;63337;86685;75417;79759;72650;13569;102519;35293;81738;103190;50463;66117;10497;31055;65999;59196;94747;79344;87490;38308;51987;85282;60028;28281;63834;89005;30426;71054;60135;95830;44230;75194;34140;41925;15854;31612;64582;96722;22196;71668;60046;82731;81735;101696;47403;35528;46823;75136;21299;85243;75120;87939;73977;15981;26814;77254;18229;27185;80675;65066;62530;90426;34548;96277;29291;24356;33958;87101;88964;24008;101694;73032;74137;76181;53954;93243;22417;20768;19417;57431;40642;102726;16578;24350;39391;65472;30371;78649;61831;45652;38029;27443;100754;45014;104947;103695;39710;75482;24112;69848;94068;70018;13334;95602;88441;87463;82046;39047;103920;61327;36308;15206;31654;93396;21923;77322;53354;51417;95589;27598;14232;25769;12847;96043;86555;51374;23945;42113;34089;93581;85424;58148;70681;71429;100182;69684;76355;16229;26710;92269;99641;91486;52215;86470;86938;25572;18641;77320;100116;67625;79753;25179;15026;103984;55091;15275;66865;15523;39847;100684;91001;19284;86016;72742;14646;66828;12254;21104;78203;82268;60697;103289;76434;84313;58549;79439;31576;27509;48746;59928;44501;21163;40640;53616;32059;96192;80573;46731;92434;24516;69740;83134;71598;78278;60731;100949;74882;27484;96405;64066;74600;13607;69400;22780;64213;25763;50288;50313;22462;31571;16322;24336;100235;41242;23449;85026;49588;65312;34473;41246;48451;74790;73884;19931;65245;97885;21921;73133;33858;30401;40383;59814;17187;67243;80963;102717;80353;32478;59300;44834;37625;50654;79314;92951;75982;94539;26644;16477;90175;97273;76183;53273;97245;86598;93985;22555;33558;47502;24091;86145;61141;77143;21943;14411;58977;10619;86282;41565;75700;73437;83006;14212;92415;69744;32563;81910;11040;47154;67603;60069;39142;47781;61832;106592;18453;90606;28560;68218;36259;52074;56594;15471;94377;34406;39871;42819;46797;102081;38396;75502;12896;79050;22134;99945;60124;80539;53827;99289;97663;102470;73718;16654;20656;62281;25620;81787;57430;88417;85962;32853;50944;42135;103404;12106;16853;73367;15162;106923;14081;30291;21136;73574;32679;31157;27577;39640;99388;91930;39291;48754;22323;60456;11711;103385;102951;63853;102391;43503;13046;104620;48672;59116;77533;12236;83198;24198;48519;81637;65064;88014;75819;10272;40428;31409;59146;67210;101324;100570;24430;81495;76701;74963;51497;80263;16373;28090;10215;91766;42539;45462;68284;85486;96845;64162;70732;86283;55600;49973;89534;55943;43587;15718;83535;44876;36799;19999;50981;53106;17771;24958;68519;15497;23470;72805;32141;45302;44526;60499;19979;47490;28711;20980;78374;96009;12294;87623;52179;83857;43647;33574;81994;19596;92062;53943;45320;13683;35957;93173;13433;12864;16179;39333;39982;87513;36434;31483;65338;62687;65821;37711;27679;42110;40837;92486;62265;56884;23390;56000;55458;30511;47255;99460;89657;22249;63969;67405;29016;69556;31372;92133;82674;56795;100677;23515;76552;91073;102676;26658;23274;58586;100419;14340;75614;18426;19092;53885;87552;66322;87239;60389;101390;33686;30181;23297;15229;46349;37562;56336;106029;70464;20672;51073;20286;33579;89995;53144;26322;97760;13111;15428;40673;53583;20894;37560;50147;46383;28972;106620;34541;41960;42796;30726;25687;45953;12414;70203;87052;102650;88070;68764;85656;57938;64200;54448;25558;105095;81876;79243;101136;101989;23629;93850;94514;43233;53728;49843;33796;45087;28763;22189;87412;94819;23636;102033;35264;67922;99624;31031;58624;83825;30849;14666;27396;70250;54935;67339;38810;89876;37971;72980;76931;17719;70107;62951;86202;61947;44434;75525;68501;74710;58094;82204;30048;14713;37571;104530;95787;48860;31380;91144;42245;82834;32946;35015;39182;19235;92121;78723;50977;49782;107061;43955;88526;18079;87047;76142;67646;106821;24289;23141;89957;49870;37449;71822;39086;92317;89809;72300;65856;39997;85866;60304;78583;67279;75133;23985;41433;37563;31145;56503;17287;81852;100741;90968;42902;95853;106909;34996;58349;37546;20050;17129;72027;50481;38700;84274;76451;65927;74436;91336;89755;63427;68812;39849;89265;42023;88579;87179;57746;91937;103612;105893;30681;97906;22432;42466;13351;32173;81157;67997;15637;19083;15381;46657;51941;29602;80600;67934;104635;100243;36030;35917;100386;105892;17432;92802;50149;30965;77255;18283;97020;41656;31596;29249;43480;15499;65229;45738;76904;39416;37392;31046;79468;74830;11161;92051;101001;46821;91884;62407;80394;48497;13099;67893;89475;29994;20315;84564;85928;36760;22968;97882;79575;14343;72468;59419;30805;56438;80832;102458;74511;54154;103534;56016;10191;37131;54914;21674;36354;42088;20853;96938;84775;106717;12426;73914;17013;60601;31236;68949;55015;97344;36364;60090;71023;26695;91976;86210;84935;59767;57317;92366;35684;51858;59932;71911;38655;28892;64196;90442;35776;103732;84091;101679;93913;57079;63054;106713;42018;93158;16803;50978;16600;60026;41734;81199;25303;28339;105902;24885;92388;13397;93556;21275;97500;62616;40963;44937;39884;71140;79094;66222;64117;67324;78291;42795;82695;73496;84901;87177;22480;22145;55892;14968;17742;18923;76312;79717;53148;21074;62517;102910;60673;58009;81432;81095;43604;84018;95006;95029;97580;10923;42164;105861;64160;16035;16944;84522;43786;35141;38494;58255;34868;86946;13118;36521;42570;12039;62472;20117;81660;53128;102980;56958;96579;18998;81458;32404;35114;67125;68908;47401;82202;64981;61853;56825;89304;19725;46927;27352;12814;59647;34361;55639;78732;12572;89578;67315;79469;12593;94811;20485;66121;33576;52924;28687;61324;86904;11780;26446;31974;84676;72085;33061;53951;34752;12218;67166;78798;47801;54097;36005;100897;58458;64782;44034;82645;69855;87356;77888;72889;70079;100871;67609;44383;86686;104980;54776;94420;18917;66598;22275;84591;71740;82041;54334;37893;68507;84925;95579;12325;77478;54814;35204;76433;19508;15708;57007;34644;24173;29358;64204;35418;83498;71489;47133;77676;93566;51526;105607;25511;105060;83829;82478;11209;45421;102269;91620;42120;86204;44235;43219;27232;96679;75425;33206;67322;50506;106579;37472;105652;105974;66937;101211;107075;61510;35202;17768;54438;74070;40995;32379;58344;82859;21752;43405;46605;47152;55139;13200;61354;90831;34491;80202;60687;99018;45992;104972;58661;92416;42978;50354;102788;28332;32726;17355;17072;15607;27582;15312;91022;33313;38855;47103;57030;105560;90294;78011;101362;63499;35388;91000;105042;14722;73821;11927;71488;54429;66578;57387;44816;106927;45478;40350;45547;81153;47770;24633;101345;49092;104183;74019;79908;27855;57753;97565;19800;102824;94954;55584;51965;53005;66670;59897;16459;55653;99873;101060;23116;60305;94906;93573;71916;41083;61714;95471;59786;18813;90997;44021;89371;103257;73650;59208;34768;76326;35467;22683;40886;42751;84999;92521;46396;38688;69423;10445;38473;83028;81300;16883;61331;67592;15512;56969;67420;94595;96912;38023;32184;80984;106875;23501;22738;103778;38306;11875;23886;37115;100487;32721;58333;90242;53400;89685;61400;29352;58342;72436;10762;104829;96467;97306;50164;42976;200016;103439;14131;34091;42709;77416;106146;106605;50893;56032;90107;10362;50873;23445;44926;96044;20642;81156;70162;81525;38398;37652;27931;36376;80684;91621;73388;42626;23612;29309;72259;48190;105026;90357;30390;83965;21446;47622;29143;17989;59721;68071;94136;36078;45471;15071;65297;10312;104593;11839;72796;89443;79258;15010;21814;65211;80199;58708;28400;103251;41831;25153;25189;102618;36013;14321;55407;18771;57123;81583;31857;104052;50042;43158;66722;54831;38290;84958;23420;29128;44594;55025;20150;69453;15231;91510;24699;86099;52487;67442;81113;34850;53640;54366;38187;99903;25487;95833;66773;50617;54274;96303;86046;103677;66786;88519;79126;26044;103485;31550;83988;74841;41896;55152;28645;23316;28910;73988;51440;57358;103623;34738;33230;27023;200060;34236;103771;15735;14220;37395;12117;83315;66170;16466;76004;47551;31587;56533;34720;50109;21202;60485;37235;69809;92405;87748;91171;71920;58044;42833;38055;74568;11357;36662;87883;88677;65076;58507;16481;94237;30237;55169;54456;43344;31000;84561;21791;79876;20934;36287;49470;90828;96748;28837;95566;106420;36124;15212;87958;83798;101703;57077;15293;52263;105678;91079;16514;94181;35769;24242;106537;54018;44252;53781;10668;96937;94262;99028;105113;15451;51819;51171;55012;59090;78794;70831;69384;87741;81998;27202;67682;72182;75361;31083;11177;10077;61359;65970;45817;85325;84725;13831;63453;11832;22644;64303;27426;46863;87638;81136;22408;22456;13755;29336;25109;25787;54121;28174;62613;104421;38014;17103;100564;55820;31184;21795;96485;101444;14672;11379;34708;81665;71225;81236;99657;105642;36343;43009;50250;23561;49813;78973;68017;26708;56282;10302;15436;64081;16574;15816;14853;101439;107026;46920;61285;92979;88472;87330;43265;84268;39353;41140;106766;44397;31873;84221;21727;50136;59241;68471;76589;102253;80506;30658;11162;97881;27627;104842;72504;60098;46479;83681;77584;71299;17839;13991;64634;77068;92867;89014;66339;48797;80867;43056;24381;33406;54550;80068;46609;13378;104996;65808;90946;36555;61199;70046;33507;30891;77625;105715;87165;31277;41449;19747;14181;39313;77889;59683;76468;105495;46549;49175;55986;97091;81603;25866;10389;60105;10437;97287;80296;63966;36216;58802;51802;60195;83461;96053;78074;63886;14709;42635;38808;13533;51986;45496;44743;41803;82997;26289;58900;60658;100315;92986;21014;24216;74546;18991;53715;106191;78836;19752;22835;103835;87759;64193;68844;78103;64406;46069;61338;20069;83422;46532;81569;68463;94596;34383;89165;84777;106331;20963;16028;85788;31683;89971;68673;82738;16157;32475;30613;26084;72787;33223;70531;67822;19009;84779;51211;53472;87017;89965;65597;41125;25294;21158;74689;52190;27384;81071;23978;56755;42719;87802;14880;46497;43203;65378;47364;32693;95465;34722;45158;104097;77440;58295;86270;106935;67016;21592;52748;80946;94757;46707;23002;77783;64648;70218;85075;33817;104548;21087;35985;93065;42068;62741;33356;96393;48252;68442;14703;83166;45793;92508;19335;70989;14208;42486;28485;80746;63372;49118;86360;82948;78051;79860;25347;73280;24598;58654;41976;28283;20896;82745;52376;14735;88580;106828;94855;76409;87977;61176;21050;50584;82863;44529;72858;23669;58359;101009;91586;67162;77771;49433;83787;76546;99376;28347;48320;27834;30925;75167;47640;56406;91014;38115;50847;26821;29265;70942;16552;80981;41981;61434;77247;48766;41177;13861;101268;49419;63429;26445;94263;90779;27966;68560;59846;95352;83717;53971;42779;73881;67043;53926;37325;85901;63590;67797;87438;70434;101717;70033;74291;93804;45279;26387;66790;99775;10314;94671;36303;54895;27447;41847;33392;74495;14211;57480;44166;92942;82465;33053;42577;60129;54974;82180;31897;54903;10299;57654;13019;90550;36504;71190;92980;93415;43745;25702;65363;89848;22334;93501;75264;74780;52458;47009;67107;55954;86700;73636;97006;48432;27753;52836;67403;18399;31107;50183;13337;38710;62570;28953;47774;58365;88429;46635;27943;19242;67576;43258;27110;95851;55313;83429;27701;22620;52920;49408;67250;88669;94524;16342;46316;83783;27634;21162;68502;72440;24684;81433;104221;57344;56440;99888;96903;32161;26343;61481;42365;71046;18832;12543;71981;103395;17400;48718;95789;85212;43680;73559;52687;91536;32630;75584;89101;106536;54443;47571;42845;65710;32832;81015;87630;16595;22325;50450;33207;106182;35052;86493;85331;61014;87539;96427;72595;36168;89214;37476;79461;22592;78303;91949;37540;55964;19227;36897;99830;46182;31662;29320;103326;79132;82300;91609;54197;84900;105775;74699;95782;53311;73173;82828;82686;13971;102077;26648;46647;28875;56777;46764;95979;35225;47026;68706;18226;76005;62168;54059;66696;33341;63329;11107;55729;66356;50906;68108;66813;10101;79734;58918;62297;19518;102555;69850;32629;70763;35039;40776;106145;77178;15533;24038;55327;49435;14584;91380;19519;77420;60039;44877;35501;49849;26424;25156;96462;87015;100506;83092;101936;37867;27072;83141;68255;106992;97593;71426;89017;16497;84624;50547;91447;17626;91523;104214;57436;87336;21131;18481;47570;80603;67771;62028;79078;29782;26057;104414;57810;38526;41025;54920;93922;29595;13139;87925;103453;35851;11471;20638;106187;19516;86359;21297;49074;18547;43220;54968;62302;85522;50483;104853;68783;57743;22455;53086;32150;66648;67049;17166;88829;91033;79684;15396;72420;79804;51321;45697;105766;27467;81442;21914;101723;92193;62681;87061;100271;17804;62081;45250;79690;43463;39356;78071;62658;30066;65372;78863;59278;40203;17748;54735;20715;57546;53556;13035;50814;27828;62820;21253;58123;40394;27419;90748;41027;59992;47207;37819;103053;24152;58729;17259;59507;39461;86831;13711;65212;90235;86331;36640;53103;23253;40946;15581;62645;72989;99394;40859;18529;104213;94012;53289;65093;36043;14486;65623;24158;53538;63489;11417;97446;46445;25290;33706;81268;76495;30250;23070;83297;105433;106453;20753;61852;16878;35162;18938;22845;37653;61015;104613;16679;75683;49225;60495;50692;49184;58664;88799;72411;15776;38966;48670;100953;85237;92688;58272;39563;64747;81519;25056;92257;92276;38995;22741;84235;19856;50115;25890;14741;30018;55503;50435;39991;71678;62197;94083;40340;18103;28962;94640;73154;87979;85303;57900;78351;31321;75948;14161;56106;66897;37359;38579;79205;54359;29659;93638;71733;22961;18301;106884;92478;56630;79374;64975;91226;76990;60584;21556;95595;66930;80268;24820;100236;101302;19134;92511;91085;40658;67547;64299;69295;62998;63750;62759;50097;31252;63424;57461;52257;99193;95340;97606;70759;61122;84477;20584;90908;16272;13473;35792;34321;17794;73189;24329;80219;17557;103510;11546;83604;99630;72130;30734;20518;82906;106479;34777;43411;22254;57197;22418;72127;16486;26340;19140;96687;46967;93480;65439;102541;76473;16526;62355;70409;58141;79996;50651;25039;101673;76744;14163;77425;43031;39165;91074;17629;61242;103690;79405;99375;33161;37537;37430;89709;82880;21122;105796;63413;17623;41149;58327;88658;65349;103969;42478;26907;93596;21654;16894;89117;47136;60502;86377;55782;14285;54668;44524;86133;20385;75828;99270;81514;97634;23056;90025;55887;74013;19029;99176;32252;80255;81702;45510;32586;25700;93847;34761;92154;70159;35899;44936;106140;92228;69688;12719;102345;70517;59098;94116;28472;22485;61800;28369;96920;16143;67332;91657;17706;102049;65888;59622;73633;77927;22841;17627;65382;65285;103950;65724;100019;86322;97961;17645;66797;23851;83190;38240;56334;31788;14785;75862;56751;96910;29593;92422;87430;54497;53811;19035;65524;47863;27905;48356;13229;64222;12673;19031;66147;32225;71841;51241;90196;47388;49326;71808;41315;93061;77449;66979;18544;64487;32519;18034;82449;62417;25555;28432;106073;104507;82298;15870;15326;76887;11007;51996;37226;34650;16943;85731;33691;30919;106190;65478;36652;82219;35525;100866;87395;85436;55140;95691;48305;24214;102113;36229;28257;11348;90274;37662;58809;59226;41209;59997;89221;31143;91105;85587;79215;25537;47240;45973;34921;39466;73941;76212;92869;76252;32345;30313;72540;73711;18919;41328;104774;13155;86432;74468;56147;88894;101799;96306;23868;61471;38684;71737;51114;58632;51514;14963;53071;39389;50875;78461;102823;46027;11311;15009;25907;34216;86412;16085;53963;33399;46526;90350;50318;23724;32932;43146;50986;66588;90397;53720;80115;86228;42609;33815;17976;88578;10043;52833;47734;15874;92667;29996;47307;85373;47017;54638;69452;82217;103780;89492;55185;48834;19472;101440;89113;16480;20110;78920;95765;101438;47681;18941;80711;84747;68695;27570;56306;25894;47533;40975;106940;79222;46364;78108;61768;106282;26080;77531;103809;95431;64236;85292;104482;73234;79531;20304;57521;82914;27751;35896;82473;69444;49405;51206;38298;70873;99615;63051;38342;28771;55090;96535;102526;70097;88664;18783;92949;55080;60605;21941;46574;47742;93408;50995;12910;103585;52440;65426;31006;80178;70357;59006;52818;30248;99073;62162;92378;100292;40840;76899;12256;76308;30265;90319;12969;104658;38589;12834;78072;56307;15130;52382;61695;105130;89292;79511;86858;42987;93388;52774;88626;104728;10993;91404;72880;88852;37209;96031;73191;68496;24845;56737;74187;72295;100573;25249;72534;75086;76965;47516;26339;99325;45629;57616;73080;73155;19347;31496;59539;74307;46304;45293;27925;36998;24619;95716;40177;84760;16243;24007;10724;85402;58476;103645;75900;58908;35555;78482;55177;33219;78431;75309;39582;87705;51820;49540;103944;11482;35843;32232;23782;96902;17018;51832;57629;14225;20341;26496;61795;85852;87058;18797;36856;42107;83776;37677;82395;64208;100766;105970;27226;86445;91649;73337;102088;52712;101113;15304;67183;53829;43286;104498;87397;43713;26643;27676;43618;48950;45258;96608;90289;105870;29010;80589;86927;82276;32400;44740;65434;51600;105595;63221;16384;96585;35240;85394;40604;25862;49368;30140;73734;84370;65115;42993;32893;97844;101533;20773;43767;54970;101479;37513;19874;103180;34736;57283;73343;105346;55752;79512;64329;28280;99350;59356;94492;33160;70867;55252;29150;97891;78399;51356;28937;36263;21270;23061;106996;79873;91250;12817;29966;30655;22867;56981;58707;62049;28408;67987;82212;59596;75123;78804;61492;21868;28045;103902;68345;19157;48242;76373;106057;66900;82792;41999;52437;53570;82228;86739;53593;24511;93952;67357;79057;63391;88910;66127;34105;78295;79956;59743;100913;82700;16303;68550;37266;32553;78333;48920;36528;92439;84479;48230;51642;24606;68599;74966;92233;53575;46724;104169;100025;31013;25692;99335;68127;68758;28006;35715;14089;82259;63982;96620;19557;85594;50121;70439;96729;25025;104424;72225;50555;46115;73699;61491;69926;40020;17994;81967;19048;87800;62287;89757;24156;53945;100065;96605;101403;68009;25562;35579;79153;67123;24506;61729;97830;72421;33583;21631;40535;66351;15992;89150;30113;102584;35539;22047;90763;60902;35652;80131;42803;27756;33176;68915;46631;36763;45594;43070;72286;72084;87302;29821;45597;27633;64091;101042;101991;39685;22251;68650;33272;103365;91257;51706;79542;34106;97461;50101;86650;82855;46783;18195;81250;102753;85999;39163;103444;81007;85977;15814;33424;95007;73880;59714;50526;77698;18851;40949;74708;16430;73111;83209;68893;44257;31180;28855;11109;64643;59109;58591;97299;23930;29280;85346;200104;22108;63659;22110;16658;18553;44029;22476;78141;66001;104453;92475;36611;65017;66054;76951;20232;74095;30844;22439;69008;105597;15876;53238;76458;47716;99428;79324;30157;101051;58711;51304;66734;42308;73157;19363;45308;90374;63114;65455;93468;76182;18599;85338;51443;31499;27901;92018;85590;12459;58739;97408;95881;24540;17672;63246;38916;64371;39839;97514;66524;102133;66753;102127;38395;49643;64173;88555;16589;13841;60715;66000;73365;90485;16218;30445;56913;58471;77848;88924;55471;18052;101337;26032;17671;76748;19172;32096;71037;11898;66941;86692;59800;52004;63773;93284;51410;72502;71777;92471;54041;107042;86876;43930;76933;21138;22983;84005;92365;59945;59140;41199;65950;83457;21488;103103;62912;54188;18791;12112;10049;67025;64866;14627;60231;17611;11822;74684;83556;15388;46460;102989;40880;29695;34942;13518;46954;15167;52232;14637;91710;76849;51003;17297;70701;22799;72657;27407;14011;101512;90332;89201;92635;101210;58947;13811;97648;51230;43180;102828;57148;100957;59640;53625;66907;102551;39844;41465;101617;88424;48810;97265;99009;64287;44981;36412;38780;39601;37232;93286;57133;21394;11892;87646;64843;27791;15041;49754;41138;91703;18371;68045;77042;49688;105696;33192;106781;56529;62213;59655;82634;79999;57106;101776;63565;71685;63913;22554;13393;101917;81394;70359;13696;78131;44081;51567;92150;88846;18628;15950;81239;35864;61789;97867;54758;39407;20075;95946;61453;95268;83381;11970;89432;100686;74207;77544;20048;37565;58292;95398;90407;74875;19881;18378;86709;11541;72953;105585;75124;41694;94863;13732;78313;46521;14398;102418;19340;50826;52883;75043;89407;34246;16935;39812;19499;41185;101953;83525;50177;12985;48201;19915;22910;55949;78915;102662;15687;84535;25242;94844;32428;66296;60065;62102;62963;81283;95887;14664;57486;27805;36664;88838;74285;29522;93259;13189;80005;58374;84812;46153;32496;60396;42307;106842;64298;84996;56695;27164;101811;102384;55280;61226;20921;65889;71103;69963;90538;106023;99612;34695;91038;97988;101510;44059;21845;53671;14142;50604;37033;62313;73619;102435;73540;52204;46045;95711;25111;72014;40984;94288;81402;87530;25795;14897;22460;24442;64752;36839;23602;103924;69932;47323;101824;99299;22636;99875;27147;65385;27010;85970;62886;37308;63640;10698;82379;68286;78582;47141;36161;56163;55903;74247;49149;76758;18580;53054;34687;23621;73516;17054;89766;14284;41594;40124;42109;57600;75281;69930;70850;96381;38792;33835;43483;80167;31399;70780;96129;66868;38744;105093;19449;25023;97409;59046;39166;49279;64340;30035;74526;29820;104758;51372;63423;76411;35818;24127;47606;99435;34813;23074;99576;21364;45369;61494;11082;103070;29827;56842;97709;14581;43206;76635;103587;33381;23572;61690;22199;83153;37012;33316;27124;37980;53481;10179;61908;26735;18814;64252;87357;39825;78627;89228;81093;57996;17985;33662;33528;28169;13590;10257;77647;16762;53177;42772;59617;14654;22143;97068;23997;76445;107134;52477;17511;19551;28351;70358;88600;99731;105594;34528;94374;53736;73989;90135;92394;50914;106539;12238;43304;23972;97093;68663;44774;67069;43517;64136;74738;90931;83354;86818;79336;95364;66728;87766;103839;88493;86518;61335;92718;23893;72294;65365;62610;63115;47757;68276;20280;105135;104677;83849;35084;69024;91770;35451;27810;106410;39134;63381;42108;51153;84251;25043;81388;32455;27138;103960;51400;25493;12445;17407;79889;36924;56241;78573;69613;25113;60845;104946;69912;31475;42342;43724;48458;100975;52461;79635;100539;45586;53055;17831;36718;64338;105110;72314;26212;90379;39545;15246;82162;57105;85427;104933;64571;43932;51342;78437;25010;86323;50098;44931;39959;40919;92273;70829;54822;60969;89798;91161;69959;81339;33515;44739;67031;32735;97415;68627;87166;105434;86882;74933;53058;99309;83081;34953;100946;76215;102533;67557;200122;57122;53115;60070;53167;13301;87634;39250;74448;20115;65937;105862;64675;71858;89967;30141;103838;63320;106528;67653;78429;45152;90026;63618;21004;47503;28843;55647;74467;94063;20566;61209;32388;59103;53330;59629;29134;28598;12059;103027;22687;26000;55480;56740;40741;61838;92888;10838;22320;30641;42324;66476;25627;37260;69700;85936;43662;46729;75228;69038;55490;55712;23833;12503;73682;77248;40791;22773;53191;83990;34074;22006;41878;31522;80656;57309;34705;82765;16554;84438;51067;21185;95935;45281;63262;77128;32526;85583;53064;87415;24868;85314;87020;68531;79350;103881;104868;89075;54350;100768;46683;21117;85246;10050;19094;46377;81730;25805;34914;56168;72247;83586;71045;46422;63182;71903;15450;45083;26949;51683;69420;27549;11152;49494;20410;80679;63314;68716;100094;87026;47353;60916;39331;22937;18178;40137;95601;35003;79484;61581;56517;50554;81595;41396;37215;36519;50449;41865;17212;88794;92542;71166;29805;54741;65267;25227;28652;17569;66284;51050;46453;47085;65258;74249;22116;38149;90471;106090;49129;49646;63744;104282;13323;15914;67331;32906;28704;70883;80008;92654;16283;16318;35802;49014;90315;32780;76621;40935;93255;65899;87155;99068;67761;11932;77415;33952;32668;11010;29469;24945;35366;29730;44281;97829;71012;89448;39447;42205;74607;16720;26946;105441;61806;82301;30781;35931;32542;42138;41959;51785;11587;64801;40058;60917;31593;100819;38702;46011;12000;86225;18597;29963;13452;100899;99564;47887;58363;46080;41871;29184;57170;91399;51856;104721;42475;91584;63692;28607;10423;59195;64921;12535;33996;21159;63063;24967;55265;90486;73504;34586;105800;80390;55579;33669;84208;55247;36241;52708;16908;47745;21886;61601;84266;105609;51117;61786;104639;58466;27772;21882;67660;99631;76513;65183;56083;15669;53528;40378;95286;90566;38527;106175;42347;107054;36095;34544;101820;70047;105973;103918;39776;76014;105413;84142;70011;91942;55595;77284;70040;77001;89703;21606;65981;62180;68830;67423;104582;16123;26016;35940;80313;60709;41892;79508;93948;37526;54372;10856;91530;28101;83417;52186;13369;29028;67655;102801;86779;26335;37738;66177;19421;88749;64825;83094;54277;56683;103340;54227;41843;45007;49756;72058;76937;32075;38829;51328;28701;83655;43996;104257;37146;49602;99165;38021;58042;31927;41203;104570;49262;55241;51218;62547;77573;70958;73867;42251;52445;35248;27394;100606;27874;59399;24896;22399;55071;40302;55993;20721;105294;74213;76006;80772;15224;75894;75756;71850;100138;67481;93434;38942;17996;21730;93645;99614;38918;12485;18965;101998;69023;19280;81830;79301;62336;69080;67373;20973;36154;49919;90347;60593;76159;84165;45848;27876;23282;88731;34102;97422;88844;61258;105630;106213;101906;50186;68624;77620;28094;61380;38531;46336;20441;16996;86838;29925;44574;45191;33999;60334;105487;19460;106285;89361;14053;95582;24560;30522;23555;84409;40456;24197;15289;22165;53091;93527;57992;36245;53210;83803;96002;87250;56925;31976;24146;69646;82800;81534;72916;47574;27904;29843;84849;31704;59045;71089;102390;85922;55223;81931;21849;54817;76875;35755;62452;20789;52729;79673;54564;11594;22939;52425;95739;77397;78834;25917;69725;69134;46019;56290;87163;13753;61560;56578;67762;18980;89618;82773;60574;24636;45004;65316;20384;94376;95554;32342;96881;48914;54395;41486;72096;32144;12240;106451;11490;10192;36753;59573;32916;51197;59845;51631;96378;82865;83663;34807;23675;90662;23079;56641;29381;93961;56187;79170;20107;78204;104006;104402;50080;79429;31617;25942;24359;55133;33570;50151;85501;17468;105665;76116;53425;58012;30352;57195;96248;66072;107037;59681;26474;29230;86226;76038;65081;46928;21369;33325;52353;33597;63705;56814;35394;106443;68355;101707;15238;56982;49028;106462;23089;84181;18358;90414;82190;68312;85258;90940;57590;48802;62617;105664;41563;36372;14376;94365;42869;31240;21151;15591;43694;82351;61502;33814;55688;17036;81240;69293;61810;79810;52420;45033;59074;76998;101118;11576;23468;94575;93206;24096;15371;32713;39025;14254;47381;18542;106059;19131;43773;49604;69155;46400;100780;50936;93624;40780;38057;79520;100494;34621;61322;82326;63560;73510;74372;94182;102433;34929;32619;105732;29817;22754;38279;19717;12756;39426;105205;25216;96402;70676;80119;35205;69347;26744;97700;58628;44790;104913;61181;36051;64244;30255;16707;72545;35745;13426;60950;28273;59227;76042;66051;63340;45711;25524;14507;40035;101197;22369;19112;47064;102306;11287;18155;17404;50769;101945;82546;79422;47022;70497;75838;103852;65519;82896;91439;38560;23584;49699;25108;47242;25589;105351;75936;76277;101419;29834;80264;103100;34349;103420;23000;26560;61580;16456;93460;27554;38325;26172;80939;41412;85144;59267;92794;11622;25191;93039;71548;48527;25593;72973;65327;33990;25454;11220;51193;18148;16316;91844;69128;13616;24800;96058;38174;60278;84046;82214;22400;29374;87942;67794;102006;24073;17414;65985;23268;80487;77263;62735;89946;31507;23693;25574;40082;100627;70302;45712;76762;63440;36025;17640;32778;20865;24841;54698;80768;25434;92671;91211;87221;91917;75225;47667;73448;103468;75262;11313;107029;39954;80987;89925;28559;39589;102147;61559;78525;69547;18549;84965;100161;61791;38662;99964;31651;58909;40988;22420;59149;106284;42941;104741;94430;63117;61513;65816;82583;73314;79607;33167;35688;66221;82150;80002;20702;80740;61164;60372;57689;94290;51518;80872;76276;104993;62035;20661;25815;56886;95873;43048;72375;70636;96448;53401;75825;28688;66833;73831;36370;53416;85986;32959;83455;60535;56687;25849;46558;17125;100694;36008;86433;43290;89204;41233;44228;31934;71484;54198;96576;83476;12876;46743;68902;81219;28474;10254;97137;75820;33203;70509;11788;105836;72867;84319;106481;64723;84162;21922;51320;81102;105266;39305;15270;70260;49086;36447;43450;89036;76833;20321;42059;23028;99567;83387;38608;25406;40666;34193;106126;74698;92971;35137;50517;20751;49237;44156;56739;25510;69648;69137;58594;66206;31514;90246;87230;61859;36394;58422;52374;59676;97602;27439;91669;12992;53397;100054;11351;91172;25576;23164;30848;59892;82788;97369;77640;18168;43235;43166;62255;60497;71615;65355;71273;42968;99695;65857;28996;40022;90087;90646;31001;32457;87747;38961;13388;61636;38990;12067;33522;81842;69892;64268;25001;55037;68995;12268;31319;36426;105626;46953;76974;31697;67146;36056;31292;32284;25938;58202;99178;48378;12886;95395;16969;100106;81771;91805;106600;17785;38178;24292;103362;11369;85132;65444;73705;47088;75400;63811;61159;85269;19663;96880;88092;32808;83659;40135;61256;96038;22013;42700;51750;60910;89910;48639;46052;12324;14459;41877;55816;59461;73127;92292;41361;55546;33477;31450;106712;27107;16339;104203;74964;91810;36788;16124;72641;65760;59450;90773;43867;14779;27663;31969;80221;45178;12783;94304;18969;46903;30762;53692;87936;17105;41684;102627;67890;26293;58415;53905;84437;97997;40377;76698;96647;89963;85213;60703;12425;77428;10697;79857;51495;91156;67465;76078;78021;40362;71964;80634;26954;106966;62132;65890;101077;55920;105883;81841;57471;104071;63551;102095;14278;65504;86754;62966;60352;14360;91913;47610;46369;31258;88647;57943;38675;51905;70356;49151;87340;77525;34198;47539;33703;36329;21785;83636;29956;72817;66056;27062;78379;51146;21611;24869;102376;94633;90936;94510;86465;81482;14860;72389;27369;43938;28529;68582;46148;90342;93001;16518;25939;78205;61175;67570;42899;103725;44106;68636;58689;50131;87171;73097;26525;56649;22046;16860;64603;55621;71712;24899;27685;82512;25112;56732;69269;61778;81888;30211;83815;100221;79229;77016;94772;31609;91821;102003;23041;49955;90141;18658;14091;83870;32479;33241;32961;79659;55728;35041;73568;103281;29769;30616;23644;102110;89926;69663;54054;35724;64234;81802;43548;10376;49178;84543;45069;105116;29044;48723;24454;47623;33393;19274;60932;77335;37960;35372;37778;20606;42417;93222;46361;10892;18893;105063;76944;74564;14148;90366;21599;58002;14861;18219;18053;53725;80542;23940;97099;64353;65701;57944;22328;102842;100443;28321;64622;41372;44406;44636;101121;22065;18865;87153;49861;23277;47441;15116;67714;16294;25967;65341;44976;68487;58599;41568;59528;59917;12763;26659;83029;15972;12036;81843;23829;39257;88163;24790;88017;13371;47484;35120;28999;56809;76180;73703;37094;75068;85978;12101;43197;106357;77034;75573;95983;39654;96872;99242;75832;33872;51666;18841;74612;105470;14604;80652;49800;68330;89518;43854;15019;14972;70115;80187;10405;61910;39081;13026;17749;91695;15900;50562;19206;44102;58784;45318;84205;99171;100477;83239;28342;38985;89223;29531;24981;86239;19486;14727;81862;79161;35121;65388;100759;100437;84375;81668;103374;34224;44243;100544;47874;57612;59058;40084;56521;56655;49902;38008;10173;81066;40067;78964;57404;65233;42008;34763;90799;51020;103063;69097;65214;104114;97871;30496;26558;32798;82303;20840;24469;15201;13952;16126;79744;66609;50927;91765;48656;54358;104428;71090;49391;72723;39708;100331;26128;23866;31539;95038;105036;20466;44200;30671;28170;71726;40695;10746;28175;63639;82978;59501;26687;49459;36490;27469;102297;71269;41884;71113;95487;27329;25071;68005;93887;60218;82224;18651;80878;103388;80249;44940;47605;45687;102698;24213;67815;40419;34339;73223;50022;80057;64301;25220;41189;12887;72462;106904;30492;57933;90545;17795;68714;26532;92092;55658;20173;27191;38820;62804;102071;31070;95701;65875;92853;80458;102979;96854;46890;51198;15144;79166;10256;12008;106937;58999;15077;67354;73156;42646;94098;53352;26275;42619;74921;104064;55845;86044;32821;13862;44411;11378;57158;40985;80402;53777;91764;82090;22123;70587;72600;64309;63738;71377;72282;102380;39414;38432;86945;12773;100789;18825;86789;12750;76423;65679;71292;74253;58316;85020;33249;103682;39127;59812;41288;55539;75201;34212;73799;66890;88818;66397;30998;97120;75130;92249;57548;65116;29542;52162;13535;22541;89658;65010;102492;76529;17093;90295;24143;77921;83613;22201;24502;47482;28451;102348;18125;79402;85063;95035;86005;97459;30906;72147;99981;17032;71704;85098;17702;49453;56675;84685;23310;11865;11479;25969;10110;87566;97994;82730;78852;75056;59642;92340;105432;70660;42945;74787;26241;82693;26239;22689;30295;45108;70340;34749;52988;57761;28253;97555;28086;25362;66499;85669;71931;68661;24687;49847;51801;94295;68571;79074;73917;44735;69701;104149;56176;95336;35780;94937;87030;43790;46745;69130;55040;96980;57243;35198;55402;102021;104247;12081;33442;77583;76385;13067;61028;41007;49478;91957;87590;60763;76596;83968;26125;34619;86448;31578;62663;84571;106945;41073;48726;53844;93221;79584;36577;67791;66158;31846;79588;17560;29612;30585;11679;73554;11328;103719;27752;14879;82803;65708;85161;78477;16619;37591;40403;77484;67369;83135;27601;91574;31222;27033;31613;34423;17264;67764;28946;84919;24325;41343;87247;62286;82580;35551;103844;89707;58956;28483;27331;56053;64746;12043;21268;45039;16719;52940;43011;95669;72010;44939;94535;43738;20977;11894;39972;99987;33363;38837;29740;35057;12549;76845;25336;105581;63455;57700;45595;52642;77503;60660;78990;24481;103905;104126;105427;83879;62866;90204;75648;83118;27176;89459;50207;70643;28612;80164;95388;79537;79485;87027;96681;38330;39467;88696;57240;34356;75931;61364;64674;17219;77256;76966;58655;101981;63019;53442;17696;55811;85204;60333;46778;48433;61833;58074;30831;40246;28969;12901;55953;96567;60661;61915;95821;66709;71411;31142;66411;27770;50907;20430;54989;90515;40885;39985;36507;50850;77658;57527;18740;77551;16717;90409;32328;53003;28120;104021;14128;50443;54068;57212;53274;14691;76194;32434;101951;44309;63512;29502;44086;64913;69242;105984;55675;97728;65144;23229;68124;22360;11696;15827;90238;47404;64638;84368;105552;25484;94031;54246;49336;34412;25365;85385;33593;73886;20298;34646;41244;74024;26169;63352;80193;42829;70259;99134;72177;31941;28734;90918;102601;72126;78175;66386;64478;55014;37473;25008;74647;71724;84290;94783;41800;30884;32555;31588;80012;70345;49725;77496;57355;95375;57279;104873;103414;12740;11761;48786;72879;54067;60776;14656;11271;47162;40060;12979;33987;49840;95639;72755;37238;36943;89745;72739;58218;59961;27019;95469;68060;50691;45474;73783;52628;25619;74245;72111;30126;42678;32861;28375;31878;104629;90500;61340;60765;87967;19208;41320;39618;57029;16183;44657;26988;80013;80209;55740;55230;20579;101911;84328;90415;25214;70628;13173;43934;25656;92821;47762;19198;16029;95666;22908;57684;97078;16990;49458;99168;102948;59806;47411;69732;30739;90707;74514;38469;45249;33474;106317;64220;53199;99130;71028;79218;56317;23137;100901;31206;99352;97808;72033;37157;27638;50744;17764;72530;45986;74690;50485;32454;74840;17491;101642;42511;88016;92836;67722;66507;96505;95573;61500;47412;99711;33197;89389;54010;27928;50860;75014;23716;54614;104991;87632;45761;13417;46299;25721;15852;50499;32217;71202;83281;91804;39652;27096;11867;16162;50336;39687;42388;15566;36644;78550;75996;36140;42234;39200;96000;75569;106249;58968;63005;102446;31458;29429;66994;66337;93318;88779;87363;20365;39699;23158;57273;92118;103081;25385;50085;50895;35824;11502;106103;79568;95325;62782;85306;29142;97609;99412;62270;105000;30718;22448;32277;41531;25267;58734;66388;13524;18688;24273;67546;93431;97340;11054;93869;77541;62881;103352;14235;30881;99876;59615;36219;106714;41918;83403;31336;92944;26964;26104;34730;11406;84701;78197;97084;41931;53845;95406;33901;41715;77712;84603;97683;57306;54593;56626;31268;47212;104909;74716;80266;71723;24910;89456;53946;49832;93272;26996;80094;71824;36964;33903;37378;27043;93405;47825;29596;77843;60581;67506;70505;101751;22386;92681;64141;80727;35344;50129;74995;62631;14903;83645;84376;32921;49903;80718;56621;24986;21638;24594;66987;39436;24023;27083;33375;94219;40563;94985;41983;62029;33861;21894;62794;94256;52545;37783;16104;101490;96871;13541;74466;34095;40950;51018;59564;28103;91665;48286;83454;85691;78409;106359;43714;63647;41273;27619;50390;93277;21281;19343;71316;73110;13221;99146;25936;53961;46775;90556;69592;29041;90176;76331;27976;44932;85467;101294;100667;71055;53053;12921;12767;12355;34471;54307;84043;25577;67810;105360;55692;19772;65067;27895;36832;81058;100405;58450;11114;23402;106226;82613;60050;30657;22378;86531;31669;95290;85209;76225;33457;42970;74505;85174;36058;27508;12012;65609;50467;97009;12729;102604;42474;97825;87618;84473;58742;23909;93880;80375;13625;105182;32010;20021;77394;78190;11392;97248;50515;31064;23458;37946;67704;76537;30774;61276;66538;68713;17769;73610;60359;12444;79449;200094;40096;23843;25677;32181;31111;71283;99215;70948;56833;31172;32244;42476;23461;22775;10675;68968;34958;26543;26292;15748;99579;80635;82732;14819;94870;34866;46009;107019;94726;73936;26775;22459;82606;55387;22128;67674;45490;50833;37521;99267;23433;23794;107138;61739;34934;47050;86844;94704;101699;25844;35187;47092;20458;102326;63388;91726;20978;86071;61779;53125;48610;11601;106097;37120;79861;62491;89352;55412;99026;54485;40258;13484;14200;36468;68402;86374;49000;91734;52398;10483;66671;25867;101874;65467;79288;35812;54102;50734;81801;68462;43863;89222;97000;44891;81390;103786;69085;45771;30996;73443;59082;54200;34854;10006;97725;36145;89772;29210;56807;38365;33106;23446;200018;62796;80519;36144;56308;15536;43940;81398;48637;87403;18668;89061;62198;29379;56250;62521;69339;104469;71792;26206;93350;74149;79070;21013;46955;75886;68153;84404;56796;83718;12344;40623;60860;73756;86417;45542;17525;83910;89449;80996;43962;34985;27971;79713;37994;95825;34121;73740;89550;100739;87075;105004;106566;57639;93811;73859;94685;33822;44089;68687;54317;35590;72266;103767;12371;32205;15097;44783;74255;103635;104448;25848;95712;106391;59835;78663;89370;43371;30050;55757;57379;80593;94687;38352;28794;87529;41356;31484;17121;58871;90579;14698;81515;75715;23305;104373;53608;85043;41502;18441;31343;68855;102544;70276;93783;81715;13676;60801;38376;30814;83612;53669;60543;12447;105511;75367;65644;51501;90683;34332;51733;60620;107058;79297;45926;18328;92683;85640;96326;35749;20489;27118;95319;22312;82102;33995;63614;91666;68480;57487;31569;24937;50105;12788;37029;104446;61629;99658;81996;26576;35861;64293;23747;40843;10904;26359;85952;29099;25770;71514;18784;64115;12108;17198;61649;40748;26813;77803;17638;17140;36641;73563;63425;67932;105954;102267;82496;19286;70689;81655;21025;74829;15869;101657;52737;43689;102394;41889;11191;73095;79691;60807;59325;102298;46552;20380;67863;102295;51935;77974;75535;94623;29869;80500;34413;84945;66724;107050;74598;16331;18039;58210;14772;83086;69691;49970;90595;23374;38706;36780;53968;99771;18647;32806;10914;104039;103505;11137;75667;10934;63250;22767;44338;92789;33625;51984;101295;13250;35779;20455;60875;32343;15357;49066;27946;10938;46439;99439;63348;87040;59853;60163;45395;86972;91386;56717;51648;81340;26906;104345;72971;106591;23892;11453;105137;73704;34566;94744;31280;105265;84622;42758;34524;19004;106520;13292;72060;34678;35333;48268;48809;87823;99489;57892;52631;29680;34960;36653;31806;20137;55360;53501;14525;14446;88805;83397;31636;10079;41739;40541;12888;15670;18717;83260;34211;33259;33354;36297;69856;81753;103330;59000;75049;89040;30395;80846;74261;73819;13733;53263;13203;105196;46233;14073;47292;56598;80951;69148;14171;48390;77546;91647;14641;27163;67953;24581;82893;106530;23038;77312;91137;27626;34049;95732;74052;47030;71869;70803;36606;59769;28459;28341;84020;52368;72203;73502;57993;90659;48475;94151;16393;102822;37396;66714;51836;35349;74958;64823;12663;70832;52536;64630;13242;63901;89968;76560;10728;45219;21022;54368;54785;60255;67118;20469;40873;76542;97473;105798;45442;28629;82525;55029;31960;18891;90965;44426;89748;53623;46264;40736;54319;76167;80630;106052;57159;74589;19538;71581;67181;93473;100502;15698;95612;45374;96677;93346;48998;23797;96359;86223;38806;44841;52710;32790;20643;105175;12885;80955;43644;44478;67158;10901;56968;94573;68247;82344;67316;88872;56041;73175;93944;45445;106257;79585;93686;59162;32754;100567;11106;34632;36670;71383;34116;19507;31890;92757;53590;101754;53559;32824;28977;90753;64858;71805;93564;89567;85448;45010;61123;79502;91147;15656;32121;56329;99628;99870;28252;26487;94161;13746;14187;85005;85798;73631;53437;44184;28764;30421;91565;40146;65635;30107;36439;37531;49876;106900;86901;73531;53657;40782;14138;97637;39775;55389;19464;27114;27630;12552;45371;78095;100947;97450;16730;18951;18176;104939;90399;43169;71852;45475;72681;80609;73270;24448;69796;40341;26048;54318;83584;44419;21400;69698;53889;64754;35553;94269;26577;74199;47525;14400;75847;96548;13850;45049;32288;43906;13287;15890;59072;23190;80129;56788;101476;40468;96464;61073;84648;54284;43563;20222;97618;88713;28208;11646;73750;63175;43447;105761;25498;16737;84011;41332;23203;94770;90541;11530;83208;87174;99437;40280;62924;103891;28905;70020;78068;42066;72077;50718;43585;17739;37406;17654;96873;84182;104834;89627;89948;65160;59810;58843;86234;79706;17003;48391;87434;99484;88024;22873;97371;10439;71258;70262;38963;52176;91008;45563;17055;12210;29554;13209;25131;76627;45408;12869;10402;13670;35145;94505;38179;103491;103609;56999;27074;32453;44561;100982;24746;83629;39808;48872;40259;24572;15092;35835;40719;78827;50070;95453;20060;68019;74104;50432;78063;85287;74288;105916;104263;34395;20864;62856;101654;65801;84654;76376;77797;68988;45429;75474;20759;15641;35614;105013;91352;54403;92863;96685;10564;25657;32282;73130;77432;63032;37225;66697;63824;34647;13800;78949;64093;19118;97633;97828;87861;101569;71414;35421;17009;18971;79221;60451;51713;54015;43270;43534;77206;55922;74868;73140;47021;61426;95449;50158;34573;103369;52222;39201;40744;57068;44751;13283;32074;88874;86807;17147;30577;59471;59967;106242;86715;68294;58694;67900;88561;69060;74701;86149;74810;52999;38740;51429;89744;91407;15245;27380;49770;48835;42773;17467;92255;41613;27445;41452;41263;94084;37101;44395;26972;10374;51729;200096;47499;33635;83302;99179;89843;66196;80720;77073;57924;92563;76289;50985;48940;43822;94346;84826;48919;29631;67798;97759;45759;95426;34439;71502;97353;44390;13476;42092;36174;51290;58992;49650;91550;28507;64629;82537;76245;83828;58182;100671;19129;72674;82510;21456;56358;49967;90290;69608;97074;69636;48481;95727;83527;64951;26501;61423;78541;94217;93256;92553;56209;35794;43543;32262;71051;76934;63289;56474;48256;71842;72167;91139;66336;37719;95482;97983;88087;75368;72688;52871;47624;94072;35748;20209;73932;12515;55294;54156;105756;66785;90065;44623;80120;15976;102427;47787;85333;61782;86474;55543;29341;26834;96672;77105;68886;64681;24649;35267;57533;41516;57555;58633;89839;44215;22883;93098;82083;38470;28660;75788;79027;75301;107092;20546;33214;103688;85786;79105;85553;45068;29538;15662;58459;92774;68888;16746;78606;36501;74712;99670;94833;86390;92893;76863;55382;39583;26189;88780;103154;85665;77373;90132;22715;87827;83588;43149;104798;23635;19777;59857;105081;52411;41890;12786;87828;72921;59689;65161;60915;71367;83445;101139;10400;65194;15104;34469;33440;106918;23699;40379;92819;17207;77225;91564;60166;22327;61443;93264;76393;75181;15689;19831;73134;76219;32752;86276;27180;85857;22660;84154;76510;18845;17122;14907;95772;103290;45627;80866;48651;84220;33852;69204;24176;54136;105142;12657;56954;72204;22064;61395;34857;41201;92643;23523;13422;74581;52747;104679;36908;60544;70002;29236;20655;75523;41011;101880;64040;84637;55875;44669;31430;27795;61438;50792;69369;73549;73659;77605;100790;43661;28109;69872;84533;100100;52026;72890;83031;35752;32264;60644;66615;31633;85452;84625;76519;70010;59079;88795;83338;22697;88683;200036;83505;48260;58453;106951;59206;84989;62871;44509;39062;79254;66958;101882;61874;90951;80689;97714;20878;88064;102931;57303;44591;23882;59990;39401;85377;103753;26297;95362;90125;21508;53185;60853;17616;19973;47475;18046;41786;41761;75874;89864;67589;21848;45540;24466;91961;67371;101878;86850;20677;43082;58916;23188;80657;105195;77303;81590;103508;15042;43473;100178;31102;93270;40277;91076;93680;102509;102183;29125;63596;90214;32057;70512;53406;50496;73291;13265;47036;89724;92564;39197;48531;103380;14079;10282;38878;30374;80697;60271;36801;49892;30980;85194;97895;19540;10214;35606;60829;56484;11614;42399;10133;21577;59508;13232;24897;49779;76457;25026;36969;30695;64412;78272;96730;43945;32848;74901;76568;51176;70278;86243;16207;34054;73179;69371;103282;15861;56907;33594;82708;104379;29882;10614;83157;24936;71184;53785;12637;25655;90734;36738;93809;87985;92019;87352;95435;33224;11562;39714;29453;75207;26657;66548;48202;72922;20432;70910;96885;99315;89752;25106;28750;87586;91289;95276;74805;200142;61504;54482;63541;67724;54138;13282;20801;22491;44805;44060;60519;89156;83146;23791;10522;55010;87746;44702;89488;66435;35067;26472;17399;62812;42597;54960;37680;14896;30882;81934;101962;55297;65685;64737;43069;20694;107024;54191;31012;43877;24222;33505;27697;61019;90479;47794;81407;52185;26874;36195;101684;66893;72163;60766;42729;12760;74908;96908;55566;68980;58428;27092;23145;54975;46483;83568;76237;15466;44921;36963;76124;89195;28035;67174;20764;31401;66663;22215;46527;68321;105390;50099;73092;90755;49693;45667;28659;19214;106844;36497;74117;89435;77862;22412;43300;94073;21866;80954;15955;18986;100531;65604;76302;89252;23846;38321;12891;25084;83996;35236;30290;77418;54561;77728;50697;93372;15619;73151;39664;58334;71547;105403;46991;87263;92030;86833;95538;67996;34737;78277;52848;57220;64959;78130;17821;38200;16398;57003;51029;77014;52713;97556;45755;60468;72419;39192;20850;104360;53960;61323;102715;56285;41653;88951;19928;57107;50156;48881;37610;84090;92103;20288;41937;32745;41043;92644;55284;73920;23122;64023;18396;105215;95969;55340;90015;35951;81067;52661;56950;11306;91872;29302;88534;29027;11284;10310;103681;103000;55468;14066;85994;61633;54514;33652;77878;65060;15093;92604;92629;92894;50160;25847;80434;73025;71896;60751;101758;34380;49413;44510;28576;47522;103675;15713;10565;94591;33778;74954;74602;97442;27205;28355;14843;90282;50933;107087;57647;35116;65126;41614;65112;44545;63481;36890;25634;56953;60122;26188;94817;85827;49594;46662;42458;56240;101242;97943;87732;64046;59408;37509;63305;39745;69259;37304;31250;30680;44542;92524;46033;17007;22454;11199;72572;56467;90650;30302;71612;37022;57855;86444;62341;12922;66555;34532;35261;48337;73621;57428;81833;91859;101301;43608;47461;91789;74184;59860;46499;105686;106019;105825;62184;60289;16731;34976;47028;61182;19913;58713;90806;45969;60610;10207;51573;104284;43387;44764;81554;78279;60412;22816;103216;89509;89368;56952;99664;85353;43491;70881;48257;54212;49935;31792;50384;66390;40693;41265;75038;81445;90478;99045;104028;62884;101068;56677;19410;68325;106988;44217;30000;79203;32753;59057;97145;105539;97293;16156;78584;11616;23372;105509;67430;36601;66814;25716;65353;17090;36518;70057;69359;39608;91507;41680;13453;36093;72416;34407;60219;100495;24901;55300;14724;97429;79791;33973;45411;97693;15862;66572;93162;33497;42086;43152;49050;52306;200025;58997;86213;56266;103496;31818;52852;77130;78615;26392;51918;43060;81810;64535;61602;80528;45816;29071;85259;53449;17408;90904;84518;67517;57655;46007;60382;85112;96206;31417;55299;43437;29411;17541;19008;83210;86514;85799;59134;45710;76752;61119;31296;36231;102718;54783;93306;70766;99955;35016;85454;43565;23816;67502;87446;74706;44951;23184;17010;47728;40183;88736;81252;93428;33521;91579;23595;28578;51434;48295;46939;33879;44023;37486;107039;85557;37344;58341;100215;26676;51924;61750;22669;14616;39580;34326;68119;103594;67144;68499;76638;40962;49485;68112;26278;29084;63520;34606;33173;44505;102581;67838;46501;28148;42930;83945;35352;90390;104264;57080;31725;83630;78943;53371;101652;94923;88108;35785;50299;106665;70985;45262;102661;16832;51351;87176;80373;40687;22394;75985;77846;78978;87887;78137;69997;27909;54943;55504;72316;20874;66577;80217;90258;46556;83491;101221;66936;52895;68169;86506;93747;97328;24643;78319;49534;96301;39429;62859;97198;71595;55744;47363;87267;75920;40056;57850;33098;94664;83488;82062;92320;73694;90689;69180;55793;103916;54730;84224;34732;89208;102927;81548;24286;29489;97375;76082;29248;13290;86048;29683;12047;92291;53076;90054;29910;22515;81670;21839;63725;41350;200067;35725;60161;38075;31452;40021;20752;22587;99262;13252;60968;106024;57325;50439;81825;104416;77350;55904;106318;41813;29443;52594;81939;22893;82802;103135;56415;34609;75724;36409;21933;28028;34029;73916;103697;80647;59177;17162;51892;56522;37348;18760;79442;74132;86936;104002;10928;97231;49785;34764;101919;47202;59309;13471;44153;13368;60677;28330;47015;38499;28112;99245;86830;36948;99678;59914;35177;59055;62217;95275;60157;13890;51889;78310;45853;97601;42078;64576;68407;200076;14132;14872;92221;17275;38907;30358;82899;78637;36063;50284;77855;75186;16425;43826;58740;29818;92209;42493;105393;21734;41790;46435;91878;91010;71446;99621;91644;54226;15563;32079;45854;16668;88941;19748;18573;74516;94980;75208;89634;66308;29981;60182;26268;29475;97653;23894;105884;73674;77386;21175;48646;83132;50788;103376;76268;49393;29682;24191;85304;40370;40440;20471;68537;27896;50291;45636;38222;26165;16927;104713;67969;43076;19104;93831;39644;107086;52892;86308;23592;99287;42492;92507;72830;66148;93879;93828;99603;50608;28502;63294;96389;18099;70200;84190;19993;103985;36694;25144;87417;52571;22238;86671;56991;94342;57920;38461;61165;90971;90542;87160;64797;68097;104564;47557;51577;44210;69394;47217;34862;28882;76759;79208;72260;74817;46035;31246;41168;23394;83068;43416;36764;44975;12647;50793;96436;59558;51109;84107;42259;26853;45705;20919;37772;87683;73609;99663;51072;40492;83667;46450;95587;81707;45051;48542;104137;103781;61512;13659;61774;91319;29716;45932;91058;22330;14109;26763;100638;91853;101508;12335;45406;80118;12225;25754;35621;39759;65370;75903;70833;79298;19488;56810;10613;86956;16064;106541;103814;17787;64223;88002;62300;61738;20502;103336;22389;30124;53272;20873;21541;77813;64619;48278;11088;61752;70627;41555;39382;72494;87960;54752;22372;24875;12601;81898;53270;99494;83886;91003;21153;105668;11844;91876;51982;80328;33956;27864;86090;62206;22264;22593;13446;10627;94246;77021;56992;76045;70790;69025;25337;14740;47243;32344;36608;52161;68656;77932;37979;59066;102385;82724;81191;33977;93290;90063;21622;91743;22679;46237;76192;81622;94741;67040;37346;43050;22331;46583;96447;23925;15336;23605;74350;106493;53235;84111;84554;77209;28976;56772;75773;14462;27724;24280;67548;101731;22039;26732;24864;42318;65880;10676;74496;83202;91467;20729;20169;45590;103978;19455;80789;69891;16401;107144;73691;86505;85415;45430;63023;11413;41326;12765;78162;51533;92253;56297;46839;70355;42839;75121;80140;106246;45098;74834;101314;33820;83266;15351;33110;42505;11035;10956;65967;18012;99200;97481;48417;89308;76314;26796;38260;89734;66325;50211;63602;56125;32407;39104;27143;83649;66174;86344;86268;43213;60541;27718;38678;25879;68223;100540;59106;68833;10300;68364;94944;11411;103600;11901;76984;54265;30431;79592;103020;33504;106478;95555;21697;76616;14962;58717;85208;68098;42157;84565;29285;71570;97269;15228;40750;77067;73045;72807;97290;37418;67321;80309;31227;86464;93451;10554;28425;44127;80426;60114;56233;20597;96603;58061;15723;20581;33894;12991;23076;11565;22853;54882;70935;106061;75252;53336;83259;15300;32788;65800;86534;43592;91573;97835;100412;72430;60821;44226;34363;85162;71585;70257;74106;46913;20741;71508;52663;59777;69272;29137;11897;75650;81246;11202;73132;80227;18182;33829;102973;40597;24621;52777;40369;55477;93488;79491;12577;25858;48471;33654;40374;104693;66569;22599;29460;79305;86561;25211;14475;65237;10260;56964;69342;64979;86429;73469;13069;82484;87114;99107;36663;99959;75989;12680;66944;18413;62174;56705;22777;97440;17306;66111;55983;97324;99594;39684;50923;45491;13517;68365;77372;104196;97941;62260;32741;70378;74565;16278;95012;63539;68265;77687;44746;30059;70320;88671;85281;34025;16160;15974;37212;105463;106895;53327;73949;14315;73215;61787;12684;42260;18872;103312;100127;10666;13931;46898;46424;45576;64628;68307;23714;102797;73143;10976;21900;102528;21094;19397;26623;26452;71274;27077;26759;50615;21958;63029;58695;43777;92843;37284;92602;68852;20468;103788;21411;77770;81409;53795;33873;67185;25623;61863;52457;70215;57688;37902;67913;46130;32155;85417;102522;61612;20416;57016;91539;73679;11900;24623;16933;19260;54025;44221;55661;91506;43866;32219;39531;35085;86489;57026;94497;25796;17014;74409;42091;23670;101916;47613;31195;101963;72628;104280;104383;39028;15387;93772;28315;33524;60865;26790;73768;97317;23772;77981;63729;14416;66422;93029;57488;46941;45261;42522;82766;103140;25223;16808;58629;103942;97991;103297;101108;19028;46016;68492;51023;75250;77494;48465;57460;106087;65147;59994;77056;65677;102597;32865;94195;53099;19257;34527;45359;61964;21242;25440;39614;40933;75058;15589;70343;57255;25647;26242;79021;95521;65259;73963;16633;56826;46203;19124;86330;21526;70295;34829;79204;60035;88594;72422;70346;105229;50277;18765;52543;78024;85228;49721;78206;102982;43748;34411;17062;26544;95265;49621;36727;30580;90513;102338;15432;65657;43506;97598;94030;59962;49742;92739;105964;80133;46520;35879;55431;11666;100001;70065;94680;43652;102134;92523;91547;69459;83352;73174;24837;79034;17981;13880;26660;23632;75399;77719;83152;58153;60753;96919;101649;71915;30461;26020;87520;103502;37943;45018;93764;99548;76601;69995;102606;102752;53956;47417;23391;30046;104225;19951;71428;52925;95467;55781;39628;80206;66708;85853;101701;59722;58976;11293;66501;49360;63062;99586;87106;103368;78519;44558;24668;14333;42671;92772;49993;81610;66744;55061;49228;69028;60591;60268;26921;21890;73178;38772;70349;64381;37067;66618;96269;76427;35089;69577;36082;59160;32213;59844;74924;47662;16796;96459;83421;46923;49765;22596;46617;105286;49256;68427;104637;72055;80712;58352;17313;101573;78507;25069;85153;95046;73435;37799;42901;18632;31938;24210;90000;94266;89579;53555;44710;29920;70961;55633;66611;39520;28498;63071;101574;89275;74201;29751;105544;23230;21356;10609;30716;88959;15996;38901;31765;20645;103567;46883;57182;93827;70412;11443;41678;36845;29913;89326;57252;86463;64276;13144;81196;20357;21451;97223;60849;75147;63607;67602;61851;47421;24135;95628;67947;21807;85532;96974;67553;100712;36977;14046;38807;61912;50414;75857;13248;77805;70074;28820;95989;23723;59968;73649;100591;73848;23704;29753;14432;84645;20101;91688;35743;79771;97326;84472;70969;27410;81430;67584;63361;32581;104295;81791;57715;22836;39102;78041;42974;10769;91237;35159;30892;88882;88718;71323;58452;17782;30216;93534;34623;64636;48647;35837;77313;31531;54883;20363;43254;30312;16309;104833;57183;20460;105449;74109;62133;69811;43044;48569;101424;62797;93126;104276;41026;43775;28991;65792;14455;48722;76064;14307;83978;81508;89305;55611;18638;89878;41742;67152;69868;90823;89972;32696;85473;10721;46870;69544;47247;36570;44141;18985;79069;29581;58692;38362;20377;51569;68299;47812;39415;21579;51854;62635;13682;34346;28181;105466;94115;76989;59222;102261;81201;76997;35930;102779;55260;64963;20119;42378;44853;49461;92807;85305;71537;104966;53713;92585;19485;92264;47328;102909;68154;30441;21067;60575;63959;40850;90557;61422;52880;48942;86027;65637;22719;28296;58224;74942;83894;52573;103434;84457;103145;88380;90520;39417;12429;72112;42039;13383;52317;31249;28278;86000;74988;78731;22900;74270;78362;62202;78950;57439;12031;62757;62986;76802;80931;17075;63636;14273;45322;96615;86499;46301;106948;44987;69440;76976;49353;93742;37249;97513;87750;15159;54046;32511;60759;51306;40266;47547;63022;38510;13195;78401;14862;73245;84939;32926;56443;96008;29592;69072;76515;61184;83249;83353;61037;18108;100183;104922;104095;39877;61038;26345;62989;25105;23601;59246;51589;16351;77414;46111;52076;33856;31512;88453;47699;18242;23586;34092;84815;94208;50419;61150;93423;20260;63472;10581;83182;38804;70142;60465;53817;94515;64914;69101;45465;62572;71056;92664;52989;48168;97452;73415;55668;24548;17970;74411;93354;84077;18121;73153;24712;77122;96645;22735;38040;62563;39529;18403;16960;28487;75012;47471;87913;87947;68441;83306;82129;96286;22498;31418;200137;22479;90191;90590;24878;60322;13984;105548;63155;100260;71889;95610;34107;67626;86654;103445;45700;86337;52518;66159;83733;32401;65435;77135;76146;76922;33567;59050;62956;68645;67156;69467;105282;71065;45260;37730;40014;60809;54595;30793;13345;66306;53464;103738;47138;70752;81974;70641;54003;105163;87703;60101;76961;95506;95036;28403;94634;105571;92440;73380;45751;41560;66955;18723;83916;16312;106028;45719;32995;29174;73321;64563;16158;89083;34641;100548;29791;80760;48313;51383;82277;101773;39788;40980;76311;104871;15990;87984;19195;100053;48228;33331;104703;81247;14617;36399;48366;56569;20369;81073;19256;23977;28226;95668;89321;18258;90916;42470;59343;57515;75265;73171;16241;90811;15049;84348;35881;26395;62793;90222;88525;41522;35229;88821;46191;45101;33812;20780;21827;90199;67552;17463;21445;15262;91877;101333;106373;90567;96217;87994;69173;75786;78426;78117;12366;18146;24125;76731;60453;25889;59933;69344;17351;61480;45053;64212;84135;12606;86256;60587;88680;97704;101162;27427;42820;49615;49495;99180;93900;101775;96340;99982;93164;61003;23970;25175;16040;87297;76092;54057;67680;73738;71385;85535;40634;44712;25283;87807;68465;56972;11264;44592;76474;60607;78513;61799;52739;75755;12434;33468;49953;53040;51914;29204;26553;83546;35207;83137;63904;61555;65180;62283;77595;24235;16897;68080;26941;62240;29889;88722;31189;72803;11341;56146;47257;33542;75994;67448;89802;71177;46139;105281;21775;58728;62104;61223;67916;33095;96121;19646;79332;74869;47449;32385;100898;86083;70048;79862;33759;106038;62038;56736;32368;32102;42651;34793;18476;85488;19904;70090;38561;44429;103710;39737;70483;76962;15287;12840;11917;96753;64048;93335;19891;97557;43280;96080;106079;82110;62405;97678;47251;29840;32249;30811;23125;20582;74857;86160;65425;34533;30584;76770;55775;69519;67110;27026;96803;58496;29863;99740;19362;53691;22591;90310;54353;38355;51162;84661;35287;65120;103033;76044;53787;78850;51177;21507;46123;60204;88113;44902;24686;33689;27282;49234;86743;68439;11382;104975;25126;67451;75036;37485;12540;11876;89595;42716;47062;101292;32749;22188;56024;56416;25356;24239;65876;88889;15509;72173;43354;17282;23500;72410;18330;13352;84133;46488;57103;85932;39557;106072;67920;39573;30935;97201;76344;103483;47444;42661;99769;50510;38584;66855;62173;90259;69142;39927;105832;32827;29317;67112;66754;35746;17570;16786;83731;79325;43669;30714;13154;88597;93077;101318;41395;12764;18880;47746;100068;51603;93167;92823;85494;19569;75638;76065;81849;60121;54789;41759;61096;92258;77445;27636;42498;83846;35317;83529;12687;32104;94079;31015;93852;75045;60985;56577;51080;88486;24564;52938;46992;103797;34614;93044;72168;77962;42727;75562;87986;60631;58400;20240;54617;49482;85804;78221;91677;41712;10768;26715;59996;61467;86007;51395;101853;88614;49982;76229;18961;22333;15023;86327;44403;47739;56236;71015;27051;23963;54798;78679;103653;83888;63264;31620;71688;72153;11498;80691;68512;40854;29668;34073;71892;46165;93762;97257;43979;56549;71025;32736;75842;10303;56010;59110;48363;84085;34404;84322;106402;36592;22486;56896;54348;103454;88005;43840;21166;64780;33094;95489;13679;74147;90147;90439;18645;18029;91227;49856;74269;66679;61596;41369;66718;82679;66399;29474;49126;22269;71921;30704;58416;101226;75898;62101;69751;94952;39892;71128;89324;39918;76363;64369;64251;31837;57827;10046;67779;43908;58389;75601;79902;74807;90403;68231;19114;47543;101274;50256;11878;86983;53482;101921;64751;52062;97833;19199;54363;51102;63236;52498;104649;44377;72142;91412;29700;40494;13028;36618;41071;27699;105254;69109;33799;80355;36842;37602;20259;43716;16175;93727;63147;16405;104506;51233;31726;58930;46831;93482;99076;90813;30570;28040;27459;66506;62457;79938;40184;85859;88715;33330;30316;16484;52986;52637;102868;22446;105187;42250;27585;78961;16444;34244;61077;77710;96480;10148;74804;23792;18749;59287;24033;65359;55605;27678;24134;85657;88550;45662;68547;53547;17327;79457;105402;44874;80232;47339;77664;68611;104847;78562;86146;102066;52106;10983;35595;48619;30595;13349;83173;37781;101995;62310;48644;48843;103878;69043;31129;97337;97320;76808;19716;18595;48500;36280;88763;49421;84057;14309;68588;85061;52337;89938;18058;31272;25472;54040;13008;22982;95315;105852;100050;11087;71264;38917;69645;59253;19098;74315;49140;25329;11560;65042;25914;96850;93838;50790;34812;14031;81882;26664;79110;19311;76349;16443;56292;65222;11044;42400;31040;77044;48663;33795;25865;70073;43946;81059;24148;97089;30384;79231;84225;30575;58487;32666;19854;46832;85131;21039;11946;82104;21767;56047;97319;69981;87151;69651;74162;93647;50429;58748;66952;88827;51367;72290;31128;77352;14863;44271;94572;12305;78098;20890;35862;41076;200043;24835;69604;75003;61346;42893;78828;46492;75112;79565;31929;35598;41341;28371;102835;104897;36808;69182;95999;21815;89991;65656;97289;35564;53195;55181;44493;27115;78642;73623;89984;82154;74146;43987;41382;22986;78523;56227;30765;61708;87167;25058;101622;11704;86409;37951;40401;65925;29244;105534;83084;96230;60369;52483;34079;14330;33268;43799;30754;99364;27892;61824;50239;17205;89793;87262;39342;72795;41973;41379;80243;95730;39444;37398;62721;32006;53953;68950;106040;24348;30812;45125;84630;52150;29029;102883;52312;66827;17028;27596;39162;20710;34071;25644;17827;55500;53602;103652;33281;102701;80400;74990;64745;66924;15043;22583;63134;58745;97399;19054;62686;90917;101592;91934;21471;52246;54173;27730;54254;100158;92343;65340;76206;26171;79521;20626;39904;67525;93704;81025;76001;52668;20826;94728;25422;49818;16268;90370;61430;69993;57966;71976;26950;80556;104601;54858;12933;78718;16577;21315;78495;32130;85008;76840;81792;66741;78618;89470;44771;100815;43475;23129;104249;94215;49329;99089;86880;100655;90737;36301;85916;40849;84959;67168;80592;18966;66383;25860;100516;78070;53012;87735;66884;66226;87269;82832;35559;47117;21049;66273;11554;106880;33342;75974;64397;76338;54838;86264;58284;81242;20096;53764;95584;34041;24035;58384;24404;29939;88897;97418;33170;92825;66461;13854;86094;77208;24694;97321;13857;49676;43655;44140;41090;24648;27858;93090;58020;50809;71174;73997;13989;89806;80894;97169;15710;62299;101795;72910;75634;18559;78378;36211;21813;30515;30474;73098;104223;53007;45620;77285;96611;19052;77121;20651;59384;104863;76792;58620;70566;78716;102755;86788;23758;56368;97313;90133;99985;42724;61448;89490;30416;51365;95758;24205;14386;25263;64941;74099;105409;24872;33790;13207;96468;78145;22395;90153;57713;61615;21676;75257;10379;28153;54245;69117;99057;66889;92650;16038;17647;85135;71395;27524;105994;78898;51107;70861;93418;38609;72331;83887;51983;51120;80619;101285;14111;30482;99093;79173;32290;75678;52428;87588;41111;79131;106368;17700;76511;47809;20487;83267;89287;74130;34759;82028;86524;93250;10708;94008;34918;96391;59400;52861;43590;99278;83618;46849;106682;30122;24206;36317;59709;105991;89104;97172;82993;34780;82288;67814;36919;38519;46207;106546;66067;32017;49739;101071;83469;104527;106930;41537;60189;40508;101859;57402;96674;86343;19550;94066;99818;31084;36155;26990;87769;73221;18133;106683;100177;76641;60931;99276;91064;56269;46739;25731;104204;102353;85152;63059;35498;24989;19585;44679;21274;45043;48545;13385;69983;65417;74084;24001;87654;67444;75138;78050;14308;105555;24447;67149;81289;32442;49380;38345;95877;19467;32000;69947;19759;94160;62062;40179;23913;100867;19334;58368;79636;48734;68827;82010;44177;34539;94397;27032;38323;79933;81976;71108;83751;85166;63691;86950;47678;62471;32963;15435;31071;49824;36272;40501;45568;84402;39271;60444;102157;77132;87650;41329;13464;63304;58881;61281;57178;80566;101278;105957;93225;58521;105529;102073;51647;105673;80538;31065;78123;42178;58444;18679;40821;77662;35701;67268;31293;76536;20565;40287;74454;37223;31544;12082;79418;91179;65838;63658;15680;103467;82507;52755;44461;75861;91488;18425;34247;21380;66605;48499;83536;42532;106094;61130;31169;101892;26548;38502;85118;67860;19895;45313;42282;37489;16062;67224;90092;77141;34189;12060;38546;75583;87557;81593;62792;105942;43359;75901;90705;35596;46538;80090;25101;74818;77646;30032;32516;55629;44079;80194;59669;33237;20351;106838;19514;105320;42834;59266;18030;102921;23451;106340;66966;53192;23154;101931;54613;102805;61573;57599;74655;58311;55498;30985;46868;20086;93421;86485;32937;37438;27498;55976;27982;21332;200068;15886;57851;63909;83329;94814;50741;55077;30023;72149;78842;26236;56916;84467;21916;61623;31108;44723;12815;71717;14381;76973;54615;45247;20678;59906;52053;61987;60318;75140;52877;42528;34345;84306;91720;33148;11721;106313;103961;53761;79156;64879;13632;51474;89958;21511;29268;47002;97275;24147;47005;84762;58592;102366;93937;26117;22028;30363;79122;99681;49150;58648;10709;71751;89013;43740;72246;93005;59608;100725;44692;47588;87963;61681;47171;32997;53216;71902;76320;75792;38158;69757;64025;69206;56087;47743;43367;89266;47161;34060;17117;84253;30252;27576;82752;71959;49040;38538;87393;61677;48669;71992;66719;16269;55544;71464;88621;23369;34274;81099;36537;23511;17499;51231;35400;62262;29871;71988;48750;68431;93379;49726;78857;29500;46335;57690;16761;103634;91993;40424;21847;101888;97029;29906;25182;89826;51100;52866;13510;82521;96553;38982;64855;51693;46356;82043;85538;26141;81615;20308;30555;80677;63887;106463;71628;97705;38954;45484;43964;60975;55075;51670;86587;24195;10304;79720;28179;71601;10064;30314;78069;25482;94475;28753;10729;90853;53261;58817;48864;29151;103184;75517;22198;73040;45752;68164;16596;69638;54777;52807;45534;61347;87924;92934;75042;39579;95509;76851;77004;48654;84167;93117;81261;26376;86440;42393;44125;54582;68383;40339;49223;75035;70651;87135;107044;97133;19096;50756;34803;85223;57951;58738;60515;64763;100674;46071;91882;34774;27665;50247;19116;62765;43957;103570;60293;80399;47415;32892;65275;52626;65670;52572;13149;62934;15638;61678;22535;92183;72393;49160;25405;103254;58429;71069;84041;85546;99465;14199;17480;11933;45013;13217;18051;106273;94406;20516;16757;91264;30677;60226;32366;87421;46072;17276;83792;100922;11374;20825;85220;72676;77079;100114;63364;56639;78641;19623;48204;69761;39830;58089;37322;31540;38140;26085;24093;72109;71823;104605;77593;77611;17350;104240;66210;81819;93386;44401;72394;76850;72365;104199;68613;80694;106544;105875;61105;90509;71181;15118;46562;24663;86523;44820;32857;67960;27296;77663;50625;88735;88554;95456;61189;94240;58419;78914;27794;39686;87031;55416;47545;17270;75193;101303;100803;100518;103191;12690;38350;65765;26331;11688;34264;21421;51949;96033;67812;58565;71934;19264;80436;103760;93873;74652;84802;71452;72694;33289;103503;24401;67504;32111;56518;90411;104532;56117;61682;43718;73115;87246;90969;73520;68269;14248;22208;101201;42300;72629;43577;14644;10757;56194;29361;84644;28445;76873;81147;15982;61958;58983;93970;16588;72048;20593;74405;46498;89633;27856;30460;86840;70410;36052;18255;104778;105008;16806;21302;10407;34162;64476;73313;70204;86364;57898;59656;52803;28025;93769;66265;61956;100008;28020;67601;73797;64757;77811;86130;12020;104878;65255;105769;28960;23195;61232;67318;82969;49986;87829;52349;69255;105670;62904;61273;24014;90401;42946;72124;69736;75178;25307;64019;31247;56190;55817;42346;82149;60903;102075;11207;21733;14577;63254;94839;79235;89778;91894;36182;35321;105444;58851;16304;52555;97218;69750;74452;96308;77191;13843;41374;102968;20185;99551;95762;70987;105307;45891;19225;79176;17388;89279;67361;86676;89088;68349;104557;84353;56101;26423;55578;79909;30075;56727;66280;82050;78252;65820;72979;79904;31226;77742;12897;89429;84035;29764;96310;66969;64599;44097;90104;42506;94854;62335;57502;42521;103735;67848;89322;83194;63041;51930;67214;103350;85777;52135;75408;15194;46437;72500;61270;52494;86764;88388;13353;43612;43419;84651;57914;54213;48622;65304;85580;45679;95409;26210;104267;65006;68131;14607;85513;51450;97764;82611;54017;84065;76563;17060;30627;87376;58535;28065;200145;69349;30212;17138;106888;82530;33332;83572;28335;22530;34347;13870;70890;58913;70463;106115;44765;85231;99607;74266;46780;69067;84691;47348;35212;26989;60944;51465;23935;71861;82616;34314;77217;36748;54155;80511;32424;24470;63799;94134;52484;87727;17555;30615;20596;52234;45746;43994;25681;55064;59988;21980;53390;43399;79329;49166;21397;62880;29246;37795;78302;52144;74623;12517;33794;85969;17614;58716;54841;81721;35474;17258;84519;24117;91927;21964;96834;26991;29281;105318;91816;68114;99017;77780;35546;40263;91075;70205;18684;93839;13990;27842;66556;14394;72197;35832;30351;28537;91432;12726;60752;51532;63009;47057;100812;66188;76234;62342;32673;59509;11425;96575;83499;44007;100919;63409;63939;26237;18857;100362;76243;65675;88467;52407;86311;29287;62520;51322;48396;31982;45295;11985;18278;33882;71421;26465;16088;60290;97627;56105;99379;34047;90418;43494;91230;53383;78419;70577;74398;63399;44371;105913;45686;84503;14743;45231;27030;19468;93484;84729;99445;52510;30475;19543;106036;19466;12501;43850;58856;71232;13299;23266;93235;28304;44412;44033;44123;27688;97147;11771;85974;14150;65813;58047;56720;36477;77427;55950;36859;77051;94322;22122;102791;87534;91971;13889;75356;20846;33629;51973;94104;29773;12507;72846;38275;19331;77399;51427;12695;67817;102027;38424;84558;30233;81557;63774;35784;74847;45818;35169;35500;106588;45506;70695;74946;20558;41227;28677;103110;39966;17356;73326;68013;44920;21069;73786;92037;73779;85519;47333;27722;46001;65688;80526;11004;106009;101091;12801;22781;19289;105578;85150;96534;64102;39408;38157;14047;89209;35373;101470;46313;26467;47272;86539;47362;35713;53515;34984;53733;97347;50308;35411;102616;100726;44718;39027;89791;42357;59212;53102;71521;50848;73535;103597;59522;22357;91143;31466;34507;51808;96808;96927;74871;15599;22217;74177;20769;42390;102525;91624;82013;65750;74578;66066;42914;40953;39914;95279;24355;22430;39045;65295;35574;94227;73513;73979;27089;60210;90223;94024;15621;97214;48906;24012;36091;93870;29407;41929;47291;45085;46323;16641;23521;105040;53157;57888;41599;87449;96109;46443;84471;19408;75082;30203;99535;50597;70306;69748;56997;46064;60320;25922;14931;29584;83048;96295;28805;92277;41697;57584;79586;48794;30986;36397;106532;31464;61263;88856;21491;34052;54651;81949;27672;82087;90052;31369;51538;60842;100499;50641;24798;92700;62017;18177;37213;96731;16700;17582;69880;10947;82535;85984;23405;60774;86585;21853;104272;86757;64125;29205;59015;72089;95300;48814;65990;32334;14895;41387;35001;70341;67743;56756;92106;35916;99933;97989;55637;49440;89018;80172;10114;66267;89900;83168;56466;80233;100645;52235;88901;30530;82172;73129;51454;92886;92870;62030;55879;74318;104189;20640;75442;66085;90962;44640;78355;16709;82029;24163;71926;14768;15884;39859;44994;200057;92386;93048;21227;19813;57517;106206;42610;28628;73329;102011;101909;24013;93763;26061;28053;16824;88469;67364;40810;11921;75387;19700;62656;83904;17606;38709;57407;28188;21640;20888;69851;34329;70455;31556;84492;27225;26610;85562;29264;47868;23551;95454;30603;15999;74366;103287;21773;87852;58650;65790;62788;17479;25357;58386;19451;33715;84442;93579;24703;52512;104974;47701;92884;94808;94408;36220;72057;26784;42263;91212;73434;82786;93604;53276;81475;61709;72103;15658;76377;33470;68767;37495;97331;63679;68933;20149;94040;64821;93942;20917;106064;15476;47392;72498;10636;75191;56169;53850;69133;42423;100652;90473;25658;54663;104494;29222;106475;103901;47440;54501;18475;26272;77464;69510;74513;47360;35140;85330;22786;19932;12199;68057;97262;35449;100452;47178;49511;50752;46489;66883;35925;48954;91118;25012;82594;33400;80205;103137;85680;82246;70868;68998;63339;47443;26077;61565;66419;84188;14624;39272;101520;74967;90469;78219;45400;67366;82970;90360;75006;90958;85851;12462;85688;45405;62830;14917;23538;28864;10458;56895;97527;41536;103536;87725;76019;79513;106144;20537;23604;60532;79483;25062;35135;28920;47164;87322;10104;55929;29292;76117;56787;22700;67640;24582;85987;34917;18076;94255;28661;72842;74322;51708;105284;42469;82254;14056;46677;93426;43422;51717;86538;66213;62734;77358;42769;67409;85169;85972;70870;77346;39224;91340;67228;81382;19458;105731;77826;75174;80533;47445;11713;31951;20183;85698;84689;15896;40295;60840;67482;63992;69835;52975;16284;24768;80950;31032;70441;79854;29518;100282;34353;94847;105955;96911;78771;96020;30209;72446;14612;100223;101914;85989;51093;12491;26318;82482;102807;94699;88478;74802;100039;59703;15645;95542;77880;47797;38170;17346;31988;14062;25016;68053;47354;65025;103349;76617;104697;90691;27260;49061;93621;87915;80785;24044;78176;36367;67406;77024;62522;28809;17688;37454;27714;93779;41587;104375;40200;76896;92075;99789;44944;104143;103179;21091;62054;104534;84488;66701;46030;49311;94828;56963;101545;27149;55363;29139;44336;101245;19664;82921;37704;44345;34843;29842;29482;80777;106012;12771;11493;103983;26135;17344;25314;67052;84502;96509;57060;34436;17799;14028;19439;53119;44511;43194;57981;91531;96985;59774;92231;11639;72233;70650;12833;200124;18225;79662;81857;67697;83608;76551;89366;14941;42529;94443;21497;17734;81804;102813;76482;13197;58040;50698;20389;30241;14304;96545;14071;26717;20246;27865;21688;68549;106035;84800;87242;46090;25610;64685;102531;67385;76459;96571;32621;100844;31192;82492;62488;22729;29130;35775;70098;42703;25970;76444;74455;37475;38571;40286;66759;67054;54196;15952;92174;92788;70875;81444;32406;63793;63701;48170;81182;92809;27572;96660;22896;102285;72933;22471;94692;76608;28152;11473;69235;42853;87818;49128;34788;64016;16233;49447;43257;39268;64796;80912;25612;106751;69185;88833;76647;200039;84520;73260;50825;30799;69839;19352;94313;25976;31231;60872;99004;103202;100738;97712;23012;16987;84990;49444;32527;69016;88482;67573;65131;65151;74844;14549;84001;52172;30012;105928;66242;93528;41972;47575;16424;15801;95314;71346;91813;92222;29958;92079;78791;39297;43133;10826;63473;16751;75751;101178;67101;104144;101117;95792;86088;55374;41762;58537;90304;100587;79533;50675;46089;39024;28936;34238;41917;57216;66344;32985;23691;49452;39964;13429;13090;67777;93183;70647;28746;102946;81335;56403;26348;46940;54827;73281;12413;81137;92372;37496;10341;22169;102313;29661;88155;76054;43855;69389;75626;44463;25540;82194;57604;67363;104136;74774;10441;40213;68085;14004;84103;45663;29360;36950;60034;35562;10076;18327;33640;32260;73471;87406;102059;93812;22294;76335;57438;50764;13387;76795;32607;64074;84607;18795;94353;57270;100192;25121;97780;96492;66689;24521;42180;77159;58642;11786;71687;44427;76415;38093;57180;23599;23199;78428;106553;63403;34447;77268;62588;90776;21405;33465;42932;81262;68003;58971;14634;72631;59213;90003;68040;62577;82121;87144;104994;63094;101765;63830;31220;91652;90708;91622;38452;63297;29492;17141;33067;10778;18405;41192;82456;70043;25715;97861;15977;13717;38304;93693;80462;94270;100612;32376;30804;77731;82374;56910;18332;105255;22846;93223;88057;50938;90954;78585;20772;104864;96629;33114;29728;77030;94320;46133;62808;105773;24562;101341;104063;95031;58865;19607;72443;82157;41259;87348;35601;80254;105327;73243;34093;50232;69976;91127;95856;17746;55534;60112;93220;57657;101239;21035;39497;79815;32864;16576;96241;63510;54222;29462;88706;62580;25804;83515;44828;89562;84969;31741;33182;72108;77407;11702;74446;97333;53135;55434;17577;44246;20635;84562;31305;89248;79782;63594;40732;10083;24854;83407;65848;51302;93440;101374;81510;96024;28525;36535;22181;92591;76260;53294;57541;23803;68156;42420;79253;34387;85686;23384;36777;39439;39760;105785;59792;26866;74751;86118;64065;40415;89907;81714;64615;54300;29847;86509;104535;48700;86266;35064;43527;12723;53161;74248;42025;86339;34461;17588;35167;97303;51370;39405;86867;18907;63582;54677;85171;44236;70805;62001;14098;92054;19477;13528;25516;63196;91241;103358;69397;44797;64728;49202;64791;94192;84799;38955;67242;62328;48795;82497;11943;25591;65474;23257;60862;75656;88174;73662;62558;26499;105132;33986;104967;39155;32850;22975;88631;26166;48361;103295;42228;103789;94311;36579;106594;102375;100722;64558;23801;26505;21646;62679;45140;93851;105917;72683;25873;82193;21522;80028;23232;76901;72285;56229;88010;43063;95928;97211;103575;25725;57728;26722;29431;23386;97730;20324;25343;43259;106429;36573;20648;61302;46280;21392;26201;61935;59466;27893;83602;33243;94121;24921;57155;107132;77566;29946;30253;87625;26627;40635;99032;62377;51788;36102;35077;20442;86836;33676;28326;103494;54382;66567;29085;57838;18646;46511;37793;102820;35978;47582;63317;55343;93859;86750;10223;37975;101785;28379;70838;70446;51456;38683;36138;36536;89670;81943;40086;100119;96866;29094;59186;64936;71351;68883;85752;45801;38543;64289;65603;83071;15050;93563;49502;50492;51741;66254;36057;62150;15663;37917;34744;73493;15170;14417;49995;83341;30838;67093;30508;71457;82207;51249;71253;63092;65782;14146;65770;27221;49655;65858;104472;72615;15631;35265;71566;100172;89951;67585;42483;63313;38159;15056;40797;53687;56741;86120;16819;101330;10065;66861;35527;102590;13540;76926;93547;84347;24637;85881;79072;81925;78013;97922;15025;94273;40202;84695;84693;63786;105483;75113;42062;22748;101338;106825;81709;20760;13455;103991;51545;103703;10473;80315;78814;84449;99357;50009;63936;38815;50610;57825;54626;12010;11302;94032;75103;106235;85796;16410;72961;24488;74034;35737;33178;46106;54840;106334;62161;25888;46471;32664;45486;33395;64515;34775;65132;38500;102849;90569;72998;10258;68832;90932;93622;66183;71306;99329;16540;90615;17747;93262;99919;87647;45864;26252;19360;83837;72569;46314;54639;71955;78952;19914;22286;106005;53279;92134;48572;93749;55070;77778;46353;44888;57002;56338;29152;14864;33699;60555;18144;83207;43319;89868;37725;99490;63043;43059;22126;91999;43631;71828;99077;22058;95695;78897;63075;16847;31427;28747;18704;70622;83400;36312;29012;44322;67401;76365;13411;37743;89444;66209;48909;11431;88695;97090;22870;45614;25545;61844;28862;18622;48460;44610;25022;70225;28748;21557;81144;15174;70089;45849;96765;71518;66031;35144;30036;88638;75732;103129;51452;79543;74521;74382;60689;93347;30497;57969;23631;35111;100009;36359;106986;85749;35768;86721;96251;82872;11147;80247;96569;70624;32938;33821;97610;74107;30138;91711;91034;106452;36193;44830;21832;20982;53489;105140;41503;58898;18509;46074;76380;56431;49038;99909;61552;56775;76717;71399;90888;32746;58031;40010;83402;87854;102370;44409;31905;28751;40645;65129;26320;35469;29561;64129;14553;48849;55885;74517;17194;87706;101214;29845;43185;71288;67968;55398;96633;32650;53745;67937;73394;95304;15249;73421;58882;11009;37148;16259;94329;12544;61090;74918;105985;57465;102377;10972;21173;12632;42592;19398;21005;56491;69061;61867;66277;15402;19620;11212;16257;70207;54081;77172;22197;46808;99407;54385;44295;26305;73364;94344;91714;21718;44970;43719;55286;48616;75785;71568;60871;64052;46485;24975;104357;54035;31551;90170;83991;24918;41218;70552;67326;44722;90574;19106;63083;40803;79423;80363;29211;67897;93493;62973;75764;95553;25998;40568;76113;94467;41005;86991;68147;99021;32298;46216;55792;83089;24912;37183;99398;22989;19563;70438;106710;44595;51751;61372;65309;48169;102402;45205;34782;11501;99921;48736;61388;34418;41211;73026;59067;86908;50259;32546;39783;18881;82238;74332;91476;48248;48205;56750;32035;32890;46321;94918;54984;14449;53993;80733;95704;39801;37469;76691;40802;18700;103351;33884;90217;72336;102439;40818;65189;41971;14934;60926;93253;32970;77488;102850;93004;30629;25441;66608;20273;11232;45503;52252;74163;56246;36478;101792;42148;58883;79165;90994;36910;66927;104408;104195;25007;34248;62234;47188;64379;89888;46199;78648;31202;28102;86068;14500;58257;55005;30364;82919;71736;25262;71980;51042;45919;29599;20746;27295;63287;38198;83892;13423;37641;91138;103829;70396;70100;71957;15443;81750;21044;69327;31575;30815;93795;82470;14906;28106;82074;47783;22744;93236;23570;41632;22067;12453;100104;29394;95709;87188;82971;55893;103073;105707;92532;60890;60861;16807;56759;38320;42145;71659;23656;27995;12789;79378;37358;87448;71125;97342;28254;13710;92446;11205;29471;105077;42573;34754;38696;12073;81978;48598;32868;105043;16068;42782;41770;103813;55466;94981;27314;24565;95033;33252;75781;88563;94829;38313;67782;27067;72406;48330;60831;91982;62667;91708;26833;50710;41236;105853;24079;94149;60314;23121;17068;95271;35993;31140;46276;79498;96914;12984;60325;22053;46366;106125;72603;91102;96453;101003;49446;87191;22261;37841;37570;42790;35014;72781;84108;97894;57815;52718;11545;91281;68553;17063;23988;51245;47758;25639;88666;26083;70114;68708;57757;76598;61018;64608;65058;92498;32314;20671;22472;66396;71078;61192;100751;103545;44538;74492;15676;13847;20373;17568;73661;49927;103370;65595;85449;42264;39440;42322;79638;25161;46935;65639;75190;52996;100566;14921;56197;51627;97492;55403;66106;106778;20509;19919;92078;32438;22745;79220;51276;30389;90655;55248;37099;96491;72119;85368;79932;88117;26107;15915;32355;103660;102355;65228;99795;21180;16323;81958;63655;25145;14095;56502;38062;38416;100252;102387;17353;91338;28466;12428;53914;61321;59502;25088;61460;85958;41834;32268;59916;106026;31999;24886;58091;52891;53061;47632;92165;23327;75251;24518;79545;19120;97240;100880;21961;73199;10068;26711;52721;16286;102594;68962;21836;22674;56280;28246;91631;15600;34607;104796;68765;58147;99426;19996;51225;52109;34304;64408;32498;77038;64785;100024;82315;93965;97023;82249;15741;63385;39154;101144;11727;52459;93355;23542;35674;31561;44032;67633;58853;34916;80571;59836;82804;78301;57540;63183;24797;28488;59404;26314;80346;57918;58043;23182;77513;94755;49233;25339;35165;38360;37810;62439;12523;23033;42872;35963;73423;86756;73450;45792;75586;58657;25485;87938;71460;83075;68125;19963;84612;41870;61114;97485;93835;105662;79966;57585;88456;57119;27000;106258;74786;26773;39802;95502;36038;76030;13559;96356;23683;78088;13602;85558;18349;31672;20100;101370;19438;32654;24062;25233;15208;93490;63376;69252;72526;31599;103221;52226;65405;46282;104076;36968;12265;48699;69669;13291;31136;90728;51756;55981;93585;14988;16382;58490;50063;46705;61626;16189;41521;72691;99738;58270;63902;60075;91742;57865;63634;69690;37635;15323;22931;96382;79911;51036;40646;53937;69262;102145;13913;29874;40888;21464;52645;47497;24193;73950;30732;25927;79001;61861;57238;14674;66658;62191;32118;50572;56029;76569;26980;66217;107068;57872;61291;101170;106227;17454;104179;26327;35339;51816;46735;17713;15153;52796;22840;21657;75180;42562;37302;58169;64076;74594;21970;35289;29403;85348;61775;10478;72587;65402;79688;49842;106496;81880;32502;106394;67649;50346;94137;47053;52734;78492;91836;54479;72218;32578;43857;74900;30809;13573;80992;41103;71003;66076;77186;31473;35647;25785;107100;73570;46058;91583;37376;59248;26413;47012;37887;70656;94577;45862;63239;25887;106533;78459;46760;73237;65709;48468;42756;30632;24272;97197;62442;42644;35043;56848;54656;67382;51307;96142;12342;88379;82038;82561;61713;46543;24396;50474;19146;22499;96327;103470;101321;105311;74172;92805;86159;52860;100218;23778;54773;83002;101115;81835;59468;104328;27175;80610;93583;54865;57225;63072;99869;47476;52814;97471;54879;74604;24805;31785;39981;26918;26782;71741;76498;32852;105903;43919;60873;68551;69355;39012;75454;89196;106067;91820;21363;33143;73204;63120;100003;64601;75658;27054;53624;71285;106030;18830;106936;32562;47796;105306;88086;94983;30947;28857;66438;24256;90893;31196;52468;65540;40908;72669;35034;96332;90964;35612;31115;200135;22995;11018;50054;74401;44776;86752;19085;36492;83312;38636;24808;15668;74415;83958;35665;77321;57557;96254;92506;76614;40690;106393;79776;61508;100129;58025;85956;80337;30592;59306;90376;70826;24303;97134;34201;71558;100851;85052;19249;57128;57356;49146;23082;30617;21627;26683;101188;39476;46838;46816;41660;61277;42375;38045;66624;31204;33458;91345;76470;90810;85990;101011;89754;76271;70595;58609;45050;37759;51152;93832;45489;46018;11744;88069;99717;79453;22283;12213;81494;42288;96833;47751;43733;39055;19773;88877;42791;66885;84678;107000;53634;33621;24444;60084;25455;50161;32574;84916;19533;49867;28323;82540;30638;11762;87234;86834;76164;19496;43914;29623;79289;92634;103459;48762;57732;43478;62394;21432;90131;85654;42767;35025;53862;33804;92676;79277;89770;32743;41291;38146;39925;16721;55915;48393;20253;71582;91409;20451;23858;39858;92433;82105;90631;32622;106708;90625;39665;36593;34781;13137;78735;88985;92450;11700;77869;106312;65898;21184;71185;104415;78985;45423;72076;50469;84248;49593;55411;60896;64420;79891;57797;12588;90740;56142;29954;54947;106446;15394;65072;106143;26862;89541;28939;19690;28796;10399;106247;82032;55969;79067;92312;51194;63119;44897;47485;19845;69846;76994;45376;41338;12396;79506;63926;16566;30953;57895;68022;82933;50635;82811;43427;28739;20175;100087;10854;79798;73322;99611;76010;55914;101724;84791;64689;81666;40578;28001;49872;92390;52623;71697;44989;99811;27167;12866;68867;48349;75437;92973;91605;26009;16429;19044;83794;80290;59080;27792;16364;92323;54556;62368;20245;71341;35767;43273;35865;51837;93187;33487;16879;72360;84733;99509;87081;84272;41431;51897;68021;41232;102226;106827;50217;46921;55410;77152;96227;35969;84887;41592;101143;26677;101729;22743;13053;91948;61375;34409;47892;72059;102523;49791;16474;65039;49095;56092;89096;14543;81364;53825;34703;59927;77519;34385;89690;76430;60566;27719;103687;52950;92407;81014;85789;31552;42952;34267;31439;81431;97999;70841;73688;58105;18249;10655;61969;62612;69593;50897;35401;35597;41674;13605;64540;93681;71238;32905;49021;34156;34836;81282;82599;34584;67843;59112;28059;42336;77649;68943;31968;55396;39188;106185;42598;10512;78400;93025;84595;101200;26513;17493;17197;32439;17529;38676;83253;46695;71373;35439;53372;87099;22452;62143;83276;18761;38948;76956;26681;84852;36647;50380;89237;106587;42081;10665;104824;40759;24903;61349;54431;23202;95837;24718;14997;46737;63912;48933;12575;45554;105058;96271;82414;76754;102654;23996;84196;69483;14991;69057;35956;77717;25501;78674;89548;18385;50973;75615;89468;93192;57614;54652;80999;100015;95422;33277;22231;80765;27746;103117;80403;23583;83513;52905;94620;87162;14401;63743;42031;64580;28349;50200;99569;13706;85018;58474;88734;36725;90236;100843;58041;66541;72666;56579;51143;52766;14093;52865;45207;57203;35355;74384;16963;36204;42325;79518;26522;103707;84367;42275;44553;46325;10693;66513;77363;35949;14545;52272;41546;105262;94618;79695;68012;89387;82444;83008;63111;61008;85748;42412;74556;92238;58788;61420;21322;32110;62824;39293;30301;64339;105866;58418;54053;39835;46317;85609;48416;80442;102962;96525;67530;80257;56479;24190;33490;65471;52783;76557;81376;63890;61854;73236;102406;20166;27424;23477;28911;94037;71830;94563;100081;93329;19086;47208;35260;76520;85618;73361;86250;107060;58702;45901;14690;59243;78397;106431;81021;55573;66283;91100;87454;69448;77032;19175;41629;22765;45255;103927;41470;14129;16637;54142;25986;76963;63232;49157;46159;46565;46331;69144;61483;51699;78109;58506;102621;94065;50184;40910;25924;15562;32919;28242;36450;19221;67759;23877;24106;84434;27464;42102;72364;38742;92214;63273;38992;29810;26072;97719;60626;75311;96300;67739;66634;72250;49569;19861;70613;20692;60750;24577;19947;50477;80481;100986;81351;41250;105269;56650;46619;65329;90561;45603;79818;37541;106294;31667;30978;70519;21649;65744;11737;42238;37786;11778;81512;10147;20211;28692;41421;71644;72407;75218;18655;59166;28478;71038;65602;79795;103084;83715;64451;106907;92529;56322;29355;101928;67972;40498;80122;35867;72445;78620;73274;34481;43408;97909;92645;14839;49079;11573;57350;56575;77505;31648;47598;64474;93177;67272;18077;26159;71158;96941;78331;44189;33762;35375;92607;22886;65651;24906;55693;14949;81891;78290;75665;72884;62154;58941;59035;81330;71942;19413;47682;89483;28395;86720;94188;64050;77508;30845;59729;51135;103078;14088;19017;39011;56844;85016;56347;91736;27942;51748;95021;34688;54516;104310;103889;32947;60272;14022;81851;42266;85040;99552;58503;12813;65807;20925;97469;91042;75188;17402;65145;37176;13066;84807;105720;61393;20424;14725;91953;36185;50659;48565;56008;11522;48959;58206;63797;56436;82910;102456;11615;23695;84973;84483;89035;72738;82389;41498;46682;34765;74540;20156;81708;76501;64874;41911;64361;19942;39522;79934;15028;51357;63243;96673;79090;100293;93367;92099;63298;100047;83526;65996;67895;72775;78709;53901;27759;81123;69671;54098;42536;103006;15441;83855;100960;18803;87420;68478;90060;17818;58437;44540;31516;29658;28091;11667;64934;15885;62490;26485;40347;86092;106165;53647;13272;33274;16219;95520;53431;40230;24977;48655;27365;12651;60956;86113;88943;91181;106241;102186;100417;56927;29928;43334;85614;17234;73743;34657;65335;77877;80755;71197;33245;89454;77396;39495;101265;28949;102974;78517;42523;37708;37465;24414;104688;33967;94379;106344;18502;74242;82452;102809;58197;59415;82186;95565;14559;73622;42761;24661;72374;32319;11459;95886;22060;67756;48760;23831;92621;25651;84105;93114;40913;54563;20849;62485;91592;10498;106819;70951;62932;18102;54195;63479;100493;77818;14151;43654;31656;95988;37647;16408;82171;77286;84101;27060;65810;74709;77729;27867;25013;33655;79317;33610;73982;37578;41519;62772;79630;39768;77410;63030;53062;51047;94858;31048;33150;30756;90192;26518;52809;48641;34564;62839;61023;17808;14014;17089;70449;91370;42335;104776;57955;18829;45112;87533;75954;92517;88079;31381;104900;104908;105890;92560;92699;49863;24847;67858;11836;40778;56932;41299;78690;25925;95779;72888;59960;62494;78434;84329;34779;36768;96841;54606;77226;44697;84663;25335;62333;95532;25431;105234;92775;49375;35042;103258;44129;54182;43084;66760;69437;80155;57610;104305;104476;73847;24046;51252;36283;37299;88849;58540;31947;64354;80468;28509;53384;61651;100730;18376;82707;32055;96010;86370;51849;41487;13027;92187;27802;31318;43097;47041;12522;47287;83631;61461;104368;90897;64042;25187;10058;95434;48798;45168;12441;86892;103486;33569;100939;11472;64876;16997;78580;96297;86607;105203;28183;50415;25392;90920;73812;89566;77142;24485;50490;23303;11024;102331;46021;101244;18574;55218;31215;32617;57886;36575;100253;11134;66751;104687;33667;95483;20663;55655;28757;106388;74114;100491;64592;62921;48563;36445;36276;34797;89102;30539;44135;62858;17243;83030;13723;16106;83915;24795;21413;97247;37861;38380;69812;21470;80919;12309;46792;49649;69376;94133;101241;38564;32904;100618;102340;94049;89937;42366;70026;56310;84356;86427;74579;84759;87021;69509;105198;15006;40745;11314;95685;79922;94570;43196;23059;90742;14414;106326;92197;26699;13709;65306;81646;19176;104941;67384;67365;92459;72653;83983;23722;69170;74529;62066;39883;91891;35989;91173;53339;88051;78765;59010;86010;70633;38746;84898;69776;78604;51124;58149;106771;65726;56983;79683;81183;73428;47261;65286;88559;45375;74763;60617;69319;103495;12308;89687;36840;103446;64462;27998;79031;89257;94742;16678;15493;38559;33584;58915;82718;47025;74198;67432;100031;95941;38582;41951;33261;105161;35152;29701;75284;44846;34593;103921;23226;61099;79530;99751;56674;104761;36217;75929;83443;44749;78893;23065;101014;26097;77046;68746;77029;55913;34088;86797;106169;107126;28521;75979;12208;89714;70088;22021;62214;16606;92116;58378;62449;82205;104790;52292;49549;28446;68388;81716;51989;23649;105099;29577;30983;81274;60328;65541;88916;35850;78775;81359;22560;49481;97592;28927;83698;18610;81453;40495;19641;46607;71439;42283;58077;34582;82245;59801;54463;77318;17265;104631;92874;49679;14319;66098;54229;65296;48289;30525;30784;51690;100488;25712;11078;28110;10442;82095;20720;74211;106370;64134;99995;64813;96197;28673;12860;17759;59744;68914;14395;48943;52042;19196;92003;75511;16367;89776;12364;72272;66455;60177;100717;105608;59618;104159;49501;32690;83689;52685;28124;22682;32223;55852;44012;29691;52805;94278;54997;88781;19866;33887;57406;75692;23325;12808;68202;104000;105115;73616;48704;23281;30826;93291;37634;17632;38602;73036;21732;34940;89616;56014;78328;70037;70024;10297;105992;86162;58637;24083;64283;58673;47879;12600;76443;50182;40126;25390;61253;11913;24252;52744;78177;12538;104529;12972;75297;82156;52613;56038;10089;96213;39173;93677;15468;60528;12333;27522;14029;15792;27721;93059;23320;103338;78633;96186;84827;49630;67469;68857;38889;34493;81816;85736;88705;38156;92698;64604;54134;30476;105381;62618;10205;106179;71875;26438;32403;95606;79441;48373;62649;76826;82422;11441;82549;74971;81365;49462;34658;104959;60162;76915;13987;43127;97642;73017;56022;63040;90203;21893;28712;14195;15574;100187;28998;56866;24586;94958;10317;73853;24087;57789;55401;76767;15770;81259;96133;62230;65319;71320;95859;86389;19764;16836;69438;54709;25308;16195;51979;49241;34265;82488;25892;78150;16728;96853;66381;85082;97717;92556;99946;29541;99345;31448;90221;24018;60192;11783;97122;61260;102155;37087;101492;66227;80769;91036;77849;60041;86852;69525;25054;81930;81277;55966;73269;99713;28917;92945;30145;85039;12944;18132;92594;70121;49563;100720;18116;11030;54691;32907;44326;106684;96456;48579;28131;82520;57423;100246;68786;102450;106928;41447;74045;64314;96101;52839;67024;13980;59473;82667;30633;46179;48938;71314;82563;40516;62350;60052;17307;19130;37997;67700;17418;17206;64952;50945;50422;38557;26321;27357;29991;49816;42121;40375;41514;27087;12762;30072;16450;15223;25258;73058;15946;77753;27872;72722;39126;53485;72160;25557;17152;31652;82915;85013;54546;43368;34997;71576;20134;72499;23981;11908;61721;38514;104810;49372;28555;44645;63613;58063;84505;50566;20711;77481;53113;39042;82989;18094;71022;23895;28255;22597;85085;66973;93947;76781;74533;48724;99781;95749;18945;91782;101616;41969;40435;56768;79025;68397;69857;14952;100623;63418;23072;62398;54224;49283;71819;60151;56815;35234;22640;71709;55256;92714;59613;42303;33456;65158;50642;20794;97268;39632;70004;51732;53770;71453;64455;59549;75017;13386;84583;62655;56048;97654;91675;21485;87776;14134;53799;43730;23308;71312;26440;26220;61252;46300;18461;11936;11735;96268;71407;74010;63761;55842;24729;71398;53782;52111;49215;24473;37646;36530;40689;101088;53362;78617;16821;34543;42465;57227;75064;14448;34845;13254;41257;56130;28514;50297;28243;66530;53861;101026;62591;23715;52274;60424;94877;68887;49661;54658;12654;45006;22278;99419;30466;22361;106271;20400;200064;11580;97869;67349;49275;75849;64456;41463;93963;30502;17602;64788;12731;51142;54325;103122;55571;65232;89773;75286;40167;23534;87841;46284;26839;74064;41435;81419;25181;84846;39423;15594;101744;40365;72524;100615;26302;36602;75797;61198;60676;103701;90643;12217;17656;85861;29760;51285;103739;63589;91616;37804;79694;102130;87670;79892;71804;105317;12410;84657;75289;74953;25232;74311;50799;77648;76227;64269;102553;41070;21362;51418;102330;11139;87084;104340;56570;48667;36292;55054;37911;52351;79510;70091;78096;30199;93765;79017;101313;61999;105764;61792;45221;77487;16680;72745;68946;68430;71619;53451;200082;10716;38180;17409;45637;86717;97334;61418;40336;30027;34702;88139;79245;99935;25932;70059;57401;107147;87094;78531;46873;93410;53632;19677;81706;16515;66623;97106;41038;78473;58645;49795;14001;27542;77315;70688;11547;73476;93697;48418;65629;13946;103278;78016;101674;100284;87525;52697;65668;55638;81959;41473;56899;18196;26966;78753;21427;91429;86758;86101;58812;19016;104595;74782;100747;81826;35113;68937;26937;107135;55199;34791;64390;68801;24291;100600;72009;23726;15961;62067;96281;44761;45299;41776;30783;66707;23668;15985;48290;59862;21924;36830;31614;107088;90874;13208;65671;79183;45905;53033;82779;87055;86399;101388;102360;102477;26266;41605;63281;24069;50024;53379;67454;24074;54552;75418;106220;92544;19511;73449;42435;78844;49324;27964;42233;25264;84240;20356;70373;30666;91828;105580;89954;26013;88848;94513;69238;25120;17778;69826;16750;100425;49185;84966;45535;60962;100136;53722;81485;59491;88878;17324;64465;68526;52278;52763;12104;49504;99464;57000;92793;36667;11064;49557;55785;84358;12465;16753;29506;26929;52793;106732;87068;49213;22451;92335;33933;52790;42190;52489;29082;21121;73534;77823;15624;90767;52870;31265;31994;19688;89245;14702;64773;56478;19080;13681;91549;69668;79059;26835;65250;106836;40889;67098;77608;22769;55357;31893;27978;76211;75259;69214;52896;45718;33860;91348;102586;71588;77149;29121;39381;99637;96073;79143;64084;25861;101154;68184;100191;81151;63011;94645;67102;38666;65414;59289;76639;91031;68436;86231;27395;26432;65143;44003;82923;72941;59946;40132;28313;88109;61149;97511;35341;64395;29466;41087;80870;41737;107015;67607;92067;37568;41123;90489;67767;38512;31566;66290;62674;40552;106965;79178;70903;88451;40729;35998;91193;44672;92868;48878;17532;21375;71946;69288;16200;75031;61986;60986;106244;100581;50219;13372;32179;33651;66891;25327;93003;50480;74161;95865;18497;45676;70268;97307;11574;78251;44579;96433;57681;63881;16343;82031;106222;32486;90038;70522;56714;102984;83720;102286;60274;200098;21518;87436;104935;73318;100728;54782;45638;63302;62454;43007;97281;51272;42600;71675;33104;18707;18486;86093;61545;89682;88757;14615;104089;96724;64004;21509;46900;50943;79708;79400;47340;31631;45216;29870;47768;103571;63942;44384;67941;54909;73246;95875;106223;24779;45781;77536;106716;52395;70982;33566;75654;92100;44306;92466;104634;99229;103172;103398;83042;64940;83336;87315;38900;103831;17050;88501;19802;34072;92485;83195;11496;54647;96412;93441;103493;43868;35217;71017;90224;51066;49203;92550;90834;37367;105952;40682;40342;25877;22964;35452;32969;21307;37702;99676;200037;17116;55170;50720;76141;62446;96222;75970;87805;10930;38565;74173;73286;86681;43496;76816;68204;23880;20030;85389;49158;42194;59364;37234;16904;101591;82823;63897;59360;76838;28279;92299;39996;26734;35253;100242;57096;60642;48434;19147;24247;87846;75111;23902;55891;94630;19567;43844;68828;17550;99233;29545;30782;82994;96887;101119;21856;74157;100049;200136;25891;89898;52639;65397;91113;33294;40349;77375;95926;35831;16740;14736;70326;75319;19901;100917;66345;63621;39543;100227;34086;53877;95950;97230;44045;37694;32884;54597;105380;87424;30821;104009;93793;89521;103947;51955;67046;54148;43530;33673;52010;21309;40560;21216;81028;70081;18017;18322;105612;85397;21330;96716;25276;81741;10535;78692;90220;70407;38498;16460;75596;10210;55510;10011;52310;66398;25259;34112;94820;17101;48948;50249;27342;13403;73512;75675;40211;99700;10696;84655;34068;48225;64783;103622;13938;20079;104874;67171;88663;95949;67298;76286;60923;69363;47294;32608;29438;105278;60332;67619;14077;74272;59760;90714;13045;59270;54643;59955;24389;15613;96749;23989;76296;17815;31957;29693;83482;103238;92417;66225;56273;103005;82564;89177;59503;61903;11859;55113;83098;77277;43221;86820;92515;84705;35582;42551;102672;79312;56854;41566;92555;87501;61699;34232;22932;31138;57928;82035;95258;52540;76368;42891;97005;101040;83795;54064;91122;39934;42221;61998;24555;10408;21531;68682;93068;25601;52436;100836;75670;78911;54683;29344;79464;100263;88152;99257;106582;23276;21658;37818;18415;14382;105723;78393;100055;60816;88044;93980;71454;14918;57973;78689;62360;12623;30459;23496;35633;50033;54433;75716;88776;12563;77101;14657;10119;27347;81479;47602;78092;87868;51199;102032;75353;12099;97335;50911;57452;35033;105131;72465;15461;89830;42996;38967;77591;24075;87904;57115;86828;11850;35218;74393;105378;35636;20045;19063;45424;81078;75750;91167;83761;12968;61235;39774;17659;75272;52692;56398;37063;19161;37870;31748;53314;25662;71794;92176;69935;61657;58513;93294;94459;61100;14057;84029;52211;29578;23488;46296;52442;107035;73925;49056;102230;27859;107149;99241;38056;17767;84325;33760;28209;69070;76043;62278;99365;68107;35044;77461;73858;89837;62916;52309;73176;62922;67528;30115;61860;29487;97260;34389;56951;92946;25345;64680;90704;92250;89402;66745;31625;92933;24812;10515;36339;38763;78222;50708;89525;19786;48996;106943;88623;70757;16817;56107;92469;17168;101072;10318;66993;40591;21404;61611;35902;82206;76424;75807;42491;99765;63573;90588;99523;16531;89288;66725;42793;24480;58307;100135;50206;34536;81496;103107;53676;51886;76388;68142;61845;26995;23754;102602;76417;84789;19156;78805;21171;97769;43696;99883;102106;74832;29171;74585;26377;36307;99962;71217;85076;80024;33132;82462;16604;79234;27481;97737;68220;19389;29572;77437;90744;86423;94509;34802;43939;75080;61907;19230;34578;50822;78380;19769;74273;87453;17572;13901;69516;72791;55427;43187;25519;18401;77475;12652;16223;90358;46463;97354;104528;50202;102421;103807;102111;56867;24298;52280;60991;25146;28223;20818;95904;40418;50330;37734;27902;27446;99387;82133;56606;12259;27907;67229;74192;26945;40654;13947;68983;48233;77856;52700;16905;105807;48865;100628;73753;54602;21523;71763;50634;33152;15608;31116;60211;72015;32077;73182;100594;20025;49053;100978;11613;83734;28912;12420;92982;57967;89677;93067;104355;35874;100697;90007;74567;63319;103334;46638;45259;40361;23424;88548;84750;80348;15753;54163;20497;53894;58140;19984;16358;49773;72474;65727;100431;78740;87196;100370;85393;73456;48594;40891;27677;53015;92138;85551;54293;78152;73755;81296;43601;55625;71356;44327;13236;68250;89501;28084;106501;79895;32272;102318;28831;83501;28423;21342;16828;57050;15183;55192;55331;28087;101365;49585;65202;77735;77052;29439;32151;79953;69653;79618;85620;58413;102258;69168;66914;93611;67352;93530;42487;101436;57302;90243;82423;88807;74440;51778;51966;55397;34999;19368;21398;90448;34083;85403;91418;77501;73050;60646;20844;80067;91202;71859;22277;50983;11804;30226;52014;50930;21741;62551;52515;29678;68520;96721;39454;44139;75824;94564;62149;46516;84668;93047;22874;73685;73342;41825;94419;78796;31435;44817;104490;13001;87901;30104;64286;14159;89349;63014;105726;76471;48483;79499;67896;10496;44766;38516;21165;27262;21265;105185;24874;54161;64191;26238;81869;74111;23313;72565;57241;10082;58150;33093;63831;27725;36328;91353;19642;19337;31429;103391;86102;64528;88032;66730;16214;30074;54715;61056;78906;17459;10377;75122;25992;62478;91402;75370;80766;36175;73344;63422;71631;100940;39023;16198;58927;50444;30883;92578;49886;44379;96072;40502;89583;30028;64750;96582;69107;73667;91569;33540;101085;94907;75736;10607;96360;96894;101253;10393;68772;14153;99745;33079;101803;37722;51380;28129;14670;61157;74668;85601;23514;102336;33075;12678;67734;101902;84267;13494;62078;101039;52684;69165;94117;68259;105846;59204;105121;17474;31017;99273;82543;32523;34368;83807;62887;46944;69196;79232;64071;74260;59670;93539;43505;61547;18588;44440;97973;93240;83151;47232;91516;74741;90785;40928;88026;106886;37149;44454;39751;11817;22293;71975;18115;50805;21078;56984;102411;68558;59073;71297;53458;73165;104888;82052;43623;54522;104600;69659;74838;19961;69377;31474;95797;40607;34145;50745;30148;63629;99422;22317;71109;103657;37074;43398;15210;33801;29699;31158;23046;79496;88028;65553;66194;82793;76494;77157;47040;67930;14748;53776;64282;101526;59633;22164;77251;13955;77086;19659;73653;44682;14875;102730;103678;32834;28589;15510;86802;13049;97966;53618;34510;23823;19013;31352;102417;97930;26375;96157;92304;64494;31880;104648;47174;46580;34408;14387;89315;54458;91800;38013;80312;91327;14065;57560;14901;76008;97490;35093;29148;24004;82446;86713;49103;85418;54469;12743;15825;35359;83123;52188;82526;60301;78022;63257;10853;83692;22475;39290;40265;94415;34375;79562;32423;39067;46788;47577;26750;29927;34509;89285;104461;40944;75603;101368;91140;32847;31536;66080;88659;12777;19494;35909;74865;16413;24588;103484;83264;67746;64845;26279;32100;15423;31098;31079;87604;78503;67669;87016;34192;93168;26737;46809;95791;14956;74218;77436;60628;79115;93999;76486;58821;102714;76747;73348;92848;30429;75002;105932;54022;79091;43292;39629;16975;16005;14415;81661;68042;31869;20838;14060;78579;42690;14160;78352;31538;94154;58010;78700;60979;16313;101250;33499;41161;96560;41676;35414;75308;65852;77156;61486;103264;59425;97976;95652;57093;44159;99572;80001;56447;104977;33747;100699;73091;85298;89514;33555;46597;45733;72813;14301;54939;67177;22210;79591;88150;62384;97466;83962;48674;32770;100208;65393;77169;58797;84112;26707;21942;78168;67041;90627;81462;42604;51077;77174;60260;77232;74336;23870;39757;80991;17236;65695;38312;41376;18279;56325;56226;31883;11349;21450;54000;31863;22161;38504;68836;92344;65279;81315;20591;88803;94948;18905;58406;47687;56037;28932;42220;69614;55228;57189;46347;40828;20907;17008;106465;16955;102976;102622;84639;29420;73521;27018;23222;84263;52517;95892;64481;31393;55720;53009;27246;24983;81404;13920;13677;14926;23603;49271;37701;102950;61553;16386;36938;19921;47453;44607;66049;86132;10047;12784;99747;81188;33642;31801;30573;22376;73947;27121;25819;73412;43975;90993;51594;94631;68658;83884;63611;10553;21278;56490;59250;42704;22988;99859;24870;71746;96971;105341;57867;55349;39118;34233;30876;18802;87253;95277;13496;83091;81890;48819;14551;105545;54701;96107;41182;59457;31615;56965;90525;80076;81103;52995;67450;74406;91136;93525;57204;35409;53549;72270;46763;79842;105486;67732;20219;16856;15074;66836;45165;69223;62683;10463;26930;40500;34769;68100;75226;94545;10503;16148;92808;28287;90778;21948;91315;40009;102225;106849;69430;70986;31150;31044;100496;25231;72231;58035;23221;104793;60882;52612;87693;35139;57087;15610;24603;41935;32930;106117;34127;83877;83056;52128;17035;43005;45606;77083;92168;56357;76663;100990;62040;14686;84056;82329;70182;64693;84774;49474;33347;77737;76226;73985;18223;81221;81490;91990;34101;53023;94993;42794;53585;25456;11695;67487;74522;23709;68420;105558;12097;40288;85693;74197;72240;97322;16511;61797;104122;61767;40795;61668;54539;18591;50520;11150;47548;80098;91152;100650;69093;59053;25899;33201;46146;69647;32872;91210;86559;87948;74821;103429;50715;60311;76313;55940;92959;32902;35563;56417;62554;101636;89684;43066;74939;77787;92696;67879;59230;53459;95992;41151;29741;89970;10432;79342;46360;41013;86413;71591;57698;48389;12018;86584;27442;105576;13766;103463;48360;35670;25614;81690;42608;13021;85323;64394;16734;89173;60263;16355;29731;64772;59566;20352;85117;54405;69986;71806;78173;15630;54998;63378;74635;28512;55114;75475;59402;87185;85091;63390;96218;32687;72265;60778;26195;48457;97916;94558;38122;90526;72094;40453;104839;24071;20229;71844;103373;59465;106793;47229;75591;59557;59132;83585;41609;16685;101496;33136;45572;77353;88090;42188;77667;56874;31137;70556;71259;69722;47708;35625;11994;45450;39477;70502;30451;13646;80976;54592;89519;84749;24721;101693;93205;65174;49997;106233;62905;64079;63417;105891;92817;27486;28995;89079;33434;85890;68178;96325;93788;40254;54967;96331;17246;89856;50582;21681;17128;82938;17634;59837;22102;64955;78713;65756;80629;95844;30204;19020;37575;63593;75275;96047;65552;97100;78398;22252;66330;57733;38235;20133;44347;27166;60179;19833;26482;51148;22129;11768;17279;65078;82942;13413;88925;31810;39724;80103;52265;31088;100342;92616;33426;78694;61620;52360;83052;73822;80043;45287;64323;105751;94038;102372;57248;84426;102637;29689;65650;70083;91785;45772;73498;10517;106319;12620;61495;95631;18162;21850;54387;42602;84262;52846;46078;68120;105233;94425;94629;16437;104112;78275;66492;47601;24957;50396;100934;52154;26698;35326;32392;102317;37584;77184;84042;23790;18780;103909;103328;42003;68214;46888;68763;26860;72725;47642;39247;12402;104359;40870;18525;58430;39211;38555;12198;85732;94810;76539;78097;41415;75419;26915;95288;99372;13079;62156;99142;62400;100797;72966;51502;53636;21474;42280;91678;13320;87908;35886;82610;83869;80020;57860;33785;76230;44559;42273;25206;44302;69800;68327;67832;95523;95267;86552;41037;25388;74200;56988;34762;86665;32533;41581;73327;72355;44577;31920;67198;94700;55995;48956;101041;79807;42481;102657;77379;34968;75105;55682;10678;39095;55144;101851;55644;43487;31476;95654;55900;22344;62785;56339;76072;104074;36797;64216;75139;31441;44742;39261;25261;32881;53702;94994;73671;48470;28845;64043;74098;18948;74498;40641;16135;106624;32289;104619;70280;99709;40190;92461;60812;86348;55107;79014;47615;45385;77700;31465;20976;54084;53740;93829;88939;20123;36471;104964;77557;25196;75393;46380;62408;97729;50864;77975;45732;66393;74793;55307;30053;106610;32422;47890;95686;95266;21737;91646;104518;14523;102859;20583;66962;83184;57738;69829;85893;37847;32744;62429;66110;59898;44843;79187;11884;80607;104078;95753;24431;40205;78271;62366;85785;26447;34681;32789;52526;77048;26156;79244;46333;12246;37666;26767;102688;41469;44090;17811;14773;59261;18160;23753;11911;54460;78087;50062;92568;13759;99186;90288;59328;97620;27651;58831;56765;79963;54002;90254;18383;90875;56200;55685;13437;17979;88435;106264;88936;75909;19373;94804;28471;82077;13167;16264;73089;14390;39540;100291;71226;30127;21829;76672;63880;67919;47529;25955;54890;72651;104025;75738;46502;38346;37470;10557;33493;60886;36076;72455;40068;25123;79310;28573;62936;45536;84722;60571;66069;61207;19793;45870;30620;90389;39595;69471;30972;100916;102074;101379;42550;20520;95929;20620;100944;43810;42809;17461;45109;94254;103041;87303;67807;40458;55381;16529;93200;86982;46820;22542;102527;78542;41436;68174;88042;92207;85093;77923;90768;32004;34600;37002;13544;22663;13260;89337;45598;57859;41781;106685;45440;25019;54867;23086;101709;30521;33930;95578;67772;96422;84007;67989;21024;46117;20916;36967;32410;24446;18781;47239;22742;78670;36987;74729;78079;47111;99750;93328;44819;59017;64018;65914;21125;38727;32373;67121;95264;70630;31699;65982;76266;70061;49080;68692;67952;81190;28079;39306;14893;104525;10673;96828;96736;51082;75426;70175;10582;86031;39217;72166;96704;42184;71270;88906;91440;32062;71179;32751;27355;79997;34853;100586;85268;80265;27605;51388;47084;29298;90474;50275;49530;76567;18020;82698;20312;71793;83880;42373;94784;24861;58681;24754;78183;22559;43880;10372;95262;43686;28756;49195;78858;101223;18812;67581;104246;15919;44898;91788;97599;26181;58658;69341;57564;39772;44716;90858;33253;42372;60504;76728;27726;59686;85905;15459;60770;56673;78490;54929;90076;33299;56646;60951;22005;99744;101856;92331;39220;19865;28119;53614;24727;85824;69819;65287;95524;53026;13972;70103;33323;14182;24769;63784;97373;82944;80344;77828;43910;106050;54560;11486;59375;67639;67124;10805;19805;51115;13807;56039;51207;33895;82669;14803;67618;20082;44960;19018;65281;54851;77672;69572;91725;54759;84164;85755;66002;33824;84425;102529;59124;104160;107066;97853;13813;17085;51279;53990;37288;102647;36844;19088;79250;85636;49598;58744;78551;87853;102746;21938;84608;32915;54844;63419;49616;94280;104206;91696;42382;20147;29686;79330;88995;52418;35778;101680;79597;26855;36595;105747;56033;60961;81237;40572;17705;19702;102994;57411;54692;101595;93330;35829;54869;49673;50644;26369;58746;15137;20979;24274;71825;52624;38798;66703;42698;63781;59607;57015;63873;77847;73424;27705;45991;10964;97706;31701;103086;91341;40017;16077;67103;90151;11344;43443;103181;28122;73138;76769;58516;32069;23228;23407;95356;77609;61530;67784;74234;17367;66726;34842;61989;36558;83145;31449;90457;96665;49025;19711;12412;55027;39159;71435;54369;84499;62340;24865;40110;69676;18421;95958;106363;44596;50573;96638;19367;20152;48231;21231;89249;70137;27435;56030;59467;13986;66256;103621;51310;67473;77500;57593;51346;60403;67906;58353;37162;24990;96499;62536;36115;63283;39748;14814;42977;32322;34948;47241;44725;44225;51154;26401;86510;101273;31900;60251;16902;34537;103973;47703;46936;58037;92512;11176;78602;38183;17633;100905;31984;50652;76492;31604;95546;47736;69587;30813;106287;71085;21902;57613;86478;88819;103266;85022;10502;27177;99604;104167;82684;21457;50004;30225;61053;44533;95461;84280;74515;29859;21073;26803;84715;18957;41131;97124;16823;21056;78755;80053;19005;25224;17325;81789;83571;68784;104520;85944;42584;20254;102420;23380;22999;96626;22178;106080;83987;68316;84866;66978;95499;58180;60072;74145;58770;71450;36755;57925;91186;51611;51598;102151;70864;77619;10600;19618;48829;64774;82982;104362;70134;44310;60721;16696;81988;93840;97077;20723;19576;104617;64497;52786;31394;40319;47775;24153;21295;23030;26864;61718;54489;70739;44298;38634;28099;102918;81034;70466;12030;70639;67274;55548;99269;23991;67204;87407;76031;81000;62746;48775;104241;27798;34020;77572;83149;32243;104287;20670;40470;101560;37873;99845;33373;74519;37128;99425;74476;78334;31574;66774;68621;89421;97864;46379;32614;63703;75522;53418;52319;24850;60675;50646;67887;200131;20918;63996;46930;27088;97594;19827;99526;22234;74293;21598;16994;50759;28961;23034;67241;73874;92872;10462;70300;13918;74246;94842;55461;54175;35526;41078;23208;11777;90772;33000;65846;102443;82905;30289;66491;96780;15124;22879;101194;21625;10284;23097;42063;89873;18522;76295;51353;84531;21955;44016;30738;94893;88798;60679;59748;38544;23541;22268;25049;90861;13070;72242;77844;86589;64579;73854;94494;79789;55089;64722;70742;77920;54075;60198;64444;95330;35727;39518;25551;70828;62630;15762;74960;27579;87511;65383;46358;16612;51948;64246;17792;29953;34817;62750;50637;89016;72940;16855;90843;100478;11591;41294;22014;14752;16541;27914;88404;19720;43545;105877;96746;11197;49915;81001;24646;31817;20750;59825;41287;75163;48916;46708;45387;94421;39406;87137;53415;38952;93819;32137;17304;64333;104890;77074;83891;104854;11941;15768;32962;33293;87840;88743;93801;73252;12709;32415;103472;82061;52201;27970;104781;31185;60132;68963;45804;12537;62697;58975;83982;12646;11409;59167;42343;33480;99938;20569;52603;13443;89622;90637;58104;100207;80932;85699;101536;48503;27172;78082;49663;104261;53867;16974;43150;34980;35222;106572;67461;12610;79786;42330;61061;16876;47483;100006;77489;49891;58550;32576;77245;43347;87760;81258;24976;82762;85002;74983;44952;95009;95005;85311;97400;93111;13377;30311;91744;101672;76173;70282;85912;91444;58288;21691;63981;41128;13273;99648;104586;69605;45141;20784;90237;91242;51870;12970;73630;63519;80109;35533;83322;83316;39980;25400;53527;13460;53641;21797;89563;53467;44757;77053;28417;88508;37175;25902;77552;10109;74845;17991;26511;99101;71862;78228;97626;106397;71362;25257;97586;20512;56555;87451;32939;29932;85453;19283;86255;87458;78823;86848;17727;37072;13023;78514;92389;51842;27381;95458;38390;11618;79631;58726;97279;54791;54772;48697;41980;16961;71782;101726;21881;81649;16204;100249;16248;96408;39947;14043;35468;52270;17222;36630;95801;91305;50778;44999;96867;89814;26856;16838;47399;52981;62644;57621;88693;96586;91840;54168;23928;46548;85684;24618;25426;96431;26607;10291;14326;100733;52253;30946;58525;34209;87254;99675;70063;42243;88843;46457;43502;28365;19503;51664;93319;90621;31109;52080;27311;43732;80667;30308;19959;87332;74646;53771;29652;84061;69661;23322;76739;72214;97032;28093;70972;28824;66983;32723;105109;19441;13680;97640;50282;60233;63787;14614;100385;96821;53368;94791;64402;54342;39627;101281;103898;94861;82597;58310;40996;12061;68879;88670;100305;41001;43741;63777;57341;44593;97128;84151;82652;13430;74615;48425;91858;65377;40165;100981;95975;55309;52379;10681;96997;76389;71549;50546;55095;75618;97383;40182;56993;74839;65664;49523;28768;101806;21365;57862;64460;38673;11244;74300;18109;88533;71607;101542;92548;80641;97651;60081;47395;24184;88661;103423;99578;24998;24762;100220;23536;101644;19806;52056;106964;97898;64258;101466;89428;50760;33310;59797;78930;50998;33022;106229;92115;43126;87954;56239;19423;72634;12584;89600;19726;80547;80884;47007;64135;24338;81964;47722;77987;21951;96282;89674;39963;70575;47173;19617;82158;100314;31848;81589;53876;54493;20744;61694;53514;73915;64641;94714;24706;103828;30562;13060;106418;86582;62878;12638;58478;103500;64266;49877;20947;64281;35757;88811;97162;32763;88381;53796;51800;29904;101797;78707;61720;102001;82307;24373;76097;89785;57660;42765;17305;17736;32140;99910;27860;102900;102096;23001;79925;96175;31946;13669;24462;75563;77339;105331;35495;62091;88598;76405;34674;22571;71784;25246;75051;54580;73584;67193;42578;77881;28337;46015;27621;58321;57188;75092;101741;23304;17329;15126;44738;50155;101804;14113;32484;53814;99182;102013;86058;34271;62012;32500;87091;34099;54591;70293;60746;40396;58887;54340;101634;92537;27286;27639;19386;32918;101929;83969;104344;104304;95622;82965;82595;86247;89846;49456;53935;21053;55395;59605;54428;89284;106162;40499;67642;70062;50962;106032;97071;58129;106663;69215;105068;69878;48351;39400;50246;30727;53428;100546;78255;64414;64553;73864;76185;97159;59269;41816;93314;64262;40773;11521;75834;72256;58994;10900;68338;57800;28564;101156;91639;17548;62748;13488;72024;35735;14322;63292;59747;88385;69276;64903;21580;31972;65940;89625;74773;103843;89908;81979;50689;95497;24973;46681;16037;20153;30903;66463;92448;89603;40675;99545;82715;59320;61818;86038;76440;87077;39499;27101;39911;85469;73919;67383;31520;51934;89641;31286;50865;46423;67313;24116;62513;69552;94690;68840;37261;70897;29485;65696;40808;103955;13964;74961;61472;83418;21787;17031;28603;94286;13131;50041;29898;89555;59692;27316;99199;68175;18305;53730;44498;31582;37884;18095;59084;84017;38374;97752;63676;47260;84086;22162;44901;65622;16201;52972;93084;83804;68644;34787;41097;12317;77758;45530;83037;53313;95925;104079;32139;105650;62036;67929;102202;91830;36239;82557;43782;38835;35934;55516;38783;11845;15722;97209;85206;67520;17667;58223;61825;102257;40787;26191;85653;42817;58267;81120;69866;105108;47149;45713;50428;51451;37441;68532;26674;16866;47309;66192;70671;71847;104981;43887;43476;36112;41205;96368;86184;17505;72039;94157;25999;84158;50912;78968;85109;99609;89445;79916;29087;51688;13196;17563;200121;99230;33919;49691;51487;38643;74755;94884;88813;66793;64980;14302;58114;105711;61469;69730;19946;12007;52078;86784;75927;79137;55127;54605;90136;99835;53323;27141;77741;70285;23025;39524;72482;106212;35430;21612;25765;22216;16449;106693;16314;106999;23854;99105;51716;13859;99111;22810;100318;63465;67824;24354;17416;93632;14937;104804;36092;44706;45016;41032;44998;14227;62990;12017;87665;72643;11274;106069;70030;28486;74000;85280;97014;93419;74618;25997;70666;39044;56439;23606;70525;81392;67071;50687;67390;48191;90540;53504;71944;59018;90066;52104;103640;93814;79983;14388;70835;15797;70405;12550;70436;67035;46305;84389;71334;42155;51682;54153;54351;96204;75699;61106;76666;61386;10530;65207;74539;57770;59541;62768;57762;63845;50777;65939;102356;25404;54328;30927;104321;62579;96234;96100;83452;59645;55797;48841;35497;21779;45897;37692;103291;22442;48424;26797;60522;79747;78376;97389;93962;25040;21710;58556;45675;78653;22969;49399;77237;101078;82356;39780;65825;102645;76039;35429;51876;20895;38081;85863;30049;62569;82088;86366;62621;79893;86304;43739;87990;47831;18166;81575;75401;19149;28307;28000;16733;28216;46952;57110;33081;31132;56935;54092;80220;76544;76986;15057;33617;104569;100542;64155;41127;100613;17396;17790;99316;43803;46972;42182;63242;73170;64869;51874;18916;61244;104886;103232;85392;90324;37468;78546;57811;62363;63095;54596;102479;93511;20623;61475;93353;79625;66888;23064;67976;15325;63113;20295;103762;45188;103012;17293;18742;23378;64055;34043;80058;52333;86986;67685;34134;13661;42177;48716;103746;91611;65938;64697;36594;94593;42587;42928;44964;17184;99587;11283;24914;95321;45202;33194;85295;84355;88823;57666;96737;34610;72856;56977;104409;17604;52823;100445;55890;54276;49834;49972;19381;46678;92883;59265;70722;106764;19502;99261;97449;49524;75469;79364;28594;78719;86916;25822;88151;97380;64182;76543;54178;53391;50684;55240;89739;79013;82343;101958;32873;64904;82874;38027;39867;34360;96975;59808;35970;47184;101195;86889;18747;22008;63355;85542;64589;28617;105212;89403;100422;69929;39298;32871;80165;104413;44522;14096;10733;46779;51565;60142;61794;39767;96001;54718;33718;63723;33407;83250;44965;69806;68157;15114;49412;59542;45288;87812;89400;93155;47803;88093;63225;59911;94228;92682;38567;88709;83684;78076;88694;70716;24731;13263;21059;90047;32462;48595;105654;99396;42497;27646;72911;72952;105614;11253;52627;24536;46587;93301;36635;24578;12809;42122;36289;21857;79641;57043;55057;69721;21377;91124;20465;79959;92630;57266;67846;94166;104547;84055;104603;55556;99034;15859;55592;67412;11387;35305;75455;18587;22960;34690;90702;86287;83328;30207;27782;54511;101631;96818;23026;81314;54001;17078;73077;38821;96583;51925;27156;12700;22704;36424;103075;12471;26347;103674;64617;76262;94095;31440;46568;43500;13128;77547;75459;61408;18392;19432;84129;34663;89823;15546;51247;96078;60194;67564;11592;55507;24803;94403;74419;85993;27760;48962;56558;69640;100413;49900;23359;73800;10434;78669;25696;44369;23835;61062;61499;36116;61809;32212;40739;74412;38853;79901;41881;34822;19119;49273;97967;39057;24856;72893;92005;94285;22977;74075;21105;28305;52396;43560;31804;73695;36509;26574;84053;33783;99283;72771;51592;20970;93095;63185;56198;74360;53380;59223;79447;72809;82092;49280;91753;102181;73379;67699;92871;92787;15250;51588;101879;82337;106589;71762;62725;49076;91148;79576;25842;105475;84033;49807;72649;69244;24995;37244;83136;101147;79346;23370;79524;57744;13003;14336;50730;13637;42296;52358;64037;74457;67924;31843;53807;56576;33240;84036;17230;41121;61534;41670;97918;37683;29855;53204;14834;102483;79445;99703;14121;54518;68261;11579;58313;38368;72281;38902;45214;15374;12792;80489;65538;42965;55105;18503;72596;102123;54055;23262;22842;29135;49525;36048;92139;96909;39823;36954;11848;53436;89461;18139;88702;65262;24426;27916;81993;70433;57032;14719;19218;75668;38596;84843;13787;73644;42306;85814;51335;57727;44076;35148;52743;84291;35482;52611;73007;68642;61419;105170;42339;85127;21192;106982;16321;105114;66410;104197;75992;64548;63490;42206;94085;57237;25085;77112;102596;96450;31568;51815;21538;20557;86066;84810;25811;79504;26811;22915;71972;19246;40973;87057;50369;24249;21458;90277;55839;26738;67741;74021;99411;28813;71905;23004;60119;70288;56119;63282;20848;10629;29960;106816;84217;83831;76187;68118;73515;27873;36986;60604;85456;52524;87382;52352;45769;27934;69358;100578;31735;104767;24951;30912;81612;91845;25473;53881;105908;71419;73268;40785;99424;82951;73373;86803;60837;19226;82091;106627;25460;65579;58211;16438;92126;37907;36796;54640;46800;24659;91435;42533;52050;86382;49154;56862;53221;72185;103573;29600;49270;106655;74904;17448;14688;33866;61216;97823;76585;33248;59763;78347;99575;65013;85611;19036;35782;32380;28635;105699;30247;46260;63085;56990;21402;16256;83511;61487;88668;75940;80127;33886;76595;77344;25532;104105;73209;67806;102713;102444;28541;82660;104012;59004;77539;103962;103757;14659;17694;93094;72859;102208;89855;34045;14981;31797;36358;27560;35813;95971;80753;107031;59171;40659;77483;65272;75529;26982;85847;94216;83752;85064;62268;40416;58165;14440;73746;52801;63975;92496;48494;86822;34282;59030;74627;94488;66613;79736;93986;101686;99973;27881;26420;14759;75604;75543;87056;65562;101614;55183;105107;52690;84213;16021;55821;90208;40851;48523;54558;34522;101933;106646;97641;34893;95976;27900;16504;86551;95269;87789;104563;17983;44146;53710;12508;37045;84513;19259;89792;84431;102794;64567;41180;58021;61687;47305;13663;75291;63438;56813;35522;24270;65050;106960;93655;50179;23333;34892;82407;10280;79475;73119;105491;54842;24209;52910;105048;76029;18520;23120;101493;53228;76648;50497;76667;32389;16288;44037;10593;15034;49431;30139;100201;97962;54150;45795;56331;46293;104825;85549;52316;39852;100653;65395;23177;91294;61940;36388;18355;81225;55323;48728;43439;55650;58505;79073;47198;96094;54818;33091;92557;17655;18216;50539;76301;51458;31411;70573;90124;46600;42087;72034;23943;73299;64890;100052;29867;99584;73472;50755;14603;19689;21152;200063;52158;27361;29349;106183;10632;100643;41862;41645;54089;50466;60898;36838;96266;68044;45616;82086;83851;75273;104127;40711;19101;51240;28830;24259;43143;20348;32266;200091;13592;88048;81555;103672;48720;72579;60876;82672;22802;106978;27428;69116;99455;21207;34776;99768;64428;40475;49652;53443;63530;82002;13626;72143;79820;59185;95472;22429;65951;95329;74677;82358;101623;91265;90798;48537;23024;50548;58409;57353;101081;64159;24985;31482;86396;15824;60722;89063;59939;29039;100092;50453;49407;34001;32911;23448;66480;75556;26346;91834;35679;16240;79792;97150;83450;45888;103559;19436;105557;53992;44425;66742;53310;51998;18307;17139;81027;47581;65185;81303;33899;59293;37382;85343;74770;48266;84820;57479;39398;58753;16222;68146;28186;42870;20833;20051;41903;29528;62058;72106;55630;80967;47146;27806;19803;31269;92857;66595;53507;33045;47579;10454;11091;10170;65376;93080;103832;58194;24107;52359;53823;61208;92301;29340;88727;39043;84357;68691;18801;103248;75199;36637;14489;45908;84115;74423;88165;52601;52463;38785;65630;54565;69160;36238;46612;40844;11514;15878;78957;89193;91463;32273;38890;62461;60229;79593;90891;75414;56223;91061;101090;70597;18107;87872;88619;90105;74069;42712;44335;80847;55659;34712;45422;16181;10476;12460;79612;69549;89932;96385;24628;71941;18626;37178;33916;97932;13962;100562;31981;63017;85359;50319;74625;56802;91907;28289;13576;16620;19977;37929;72621;81213;66303;95484;58227;56589;19345;55473;29245;88970;13776;17757;61765;100134;48895;92456;75466;40420;55678;56136;28705;77523;106279;21974;94105;58558;97515;86025;99310;26507;21947;52635;20436;70750;69764;24003;55262;43417;63970;87443;70296;80788;23663;65834;46402;29484;74391;58231;11083;79640;34485;65047;67392;36411;15297;32747;96305;24486;69443;59292;44305;36734;49737;35996;95312;44128;41853;60551;58651;92225;29048;106153;13778;30728;84633;81893;38614;54050;72385;38171;92096;36171;19918;87659;44839;84441;43479;106041;47883;62940;47495;18067;12385;56072;60064;23590;12675;73991;102098;93015;60433;96132;49036;104676;22390;23048;60073;63487;11069;91873;56088;92145;61414;39873;18677;64458;14955;63962;52707;71260;71194;35323;34270;97101;11558;85597;53283;35592;19808;13462;89331;12312;20632;14222;48325;46983;36666;63213;62862;35866;86759;27399;13376;16738;97571;57530;13000;79434;96486;16784;100011;65038;27211;19369;27148;76676;75988;51917;64475;78869;79615;93659;31953;33404;46616;72576;35771;20926;48671;105173;16006;34863;14755;19671;73668;54979;48991;97433;27002;34158;89009;35531;63945;52521;54503;70066;42123;95486;28609;57687;23896;71058;97589;29854;32431;49543;45647;41443;75004;44519;99597;56599;19077;32647;14729;30057;77837;96210;18324;21045;20165;29183;60247;19821;47455;20899;62411;68034;26746;13519;106596;91398;34740;24149;84474;26600;53906;63342;43172;76051;12980;17173;11468;51807;88088;92919;41349;91070;54069;78538;29366;81022;90299;11785;106434;41547;65638;86267;53138;23216;12075;23619;75067;18870;42403;99580;24735;26801;95518;44444;66112;24248;52384;62714;81112;27308;80599;47710;24775;45646;16334;52867;93261;43388;36946;30223;46774;84032;57399;11634;74041;16998;41058;92162;99291;29055;71303;27607;12481;55525;42503;55907;45425;103004;41321;102972;40628;38232;42326;17717;56389;39346;102639;14940;103165;103895;91433;23503;13211;11649;82753;15529;74258;96339;79120;47819;84010;69022;58319;94764;88018;15280;78675;36896;95490;28069;86307;44514;96403;52753;103519;35845;74365;86974;27530;65912;91525;93224;37400;101692;21920;42115;34926;88679;92636;91320;79852;52531;97184;93916;75928;35822;68820;61933;74165;106439;62390;69336;15517;105124;85300;89006;48184;64596;63542;30398;79282;42053;11119;55445;30031;46222;40173;99671;60744;100036;74896;200049;52673;106170;47073;72873;84187;15811;33307;65288;10086;97274;36765;96610;200031;19758;12028;10112;104158;39864;48850;93064;23640;52102;41784;89478;61957;90211;61051;47877;36675;25180;46142;41143;44110;66099;52362;62512;54894;61345;16254;91176;63056;50956;100577;55028;106701;102808;59695;40129;33481;22009;56098;30656;95468;30240;48605;75859;29321;55585;25134;59602;32399;30824;29616;90564;30232;33046;72510;38369;13621;91401;48172;62131;64789;26051;87751;67652;35100;91651;79002;66084;90371;41984;63872;33149;73146;63435;61608;13089;59029;37933;16188;16630;62505;56095;53604;90864;89680;19938;57692;46086;77229;49949;104084;89989;83451;47250;41798;71490;77895;61583;36661;50145;20775;62664;55225;42603;22364;41059;104952;41292;105407;17250;27485;18609;22073;60005;20536;75559;40208;84888;25378;66474;53479;99806;80025;57211;59023;53962;77450;22707;54399;40698;77996;104898;75497;27234;90651;65215;30219;36377;63494;22821;92609;82327;80837;49544;32698;28362;39334;106406;63200;47101;41864;38377;75153;62712;24933;89203;81327;37622;20605;41297;97425;12902;51442;79163;46904;58463;65366;27218;22954;17395;56731;91296;59559;36699;36304;74445;52537;97518;22219;73125;93933;101212;26758;95805;79554;29300;59359;78630;37973;48405;94603;92849;65557;54794;48581;69456;43912;23162;82382;15737;36428;28282;85845;16404;68967;50491;74152;75424;106622;51234;42595;31761;64755;85679;60187;99384;54249;27870;19579;21360;31956;48776;39636;28682;61110;93810;21247;73536;49224;62967;13866;11903;51004;62814;79319;63813;31436;42014;11830;35731;55337;30353;48752;17249;27883;83189;88632;12616;65828;92525;29193;43749;65878;106001;90451;17829;39428;96367;90644;76713;92395;38278;64292;74651;96954;60768;76236;15905;69436;39861;53929;18050;17087;46141;65169;58498;42919;13005;72180;104712;102064;46650;89103;23520;68064;80049;39609;84128;83657;81121;85550;33998;72399;31535;29030;42248;41039;10171;74059;105066;71146;33713;20181;90349;86167;48848;10727;85059;82830;101950;93360;34003;99839;94093;25579;37051;57476;54538;10987;57264;40632;38724;41725;79647;58960;76810;67245;63446;95464;68334;25755;104103;39469;29746;85561;15317;30535;106071;59347;30878;51761;13551;39809;65738;17554;96086;51034;106929;56610;38364;95932;76788;73564;40283;97215;13359;67610;54415;102142;58962;15075;35008;58937;40822;63401;78652;97770;60959;62919;27081;80438;18105;40906;13829;37046;33658;41506;76783;36494;96754;85140;46388;85733;25667;22819;70902;54690;18264;11144;50958;72262;27851;105356;19164;19290;54411;11006;87065;94717;34299;102768;82376;88656;99237;84289;94206;29759;46213;29226;50830;87826;36072;14327;15155;11322;68693;65643;106489;15813;53548;84004;84047;18906;106342;19547;101589;40027;76516;29884;94350;20398;63576;45918;87206;52982;49162;73672;24371;78202;53432;95745;76306;57076;96083;89920;58136;99527;32245;18018;104092;101247;25693;35631;93422;96203;11703;37740;41507;106967;77388;69333;27660;53939;45459;54956;73910;78500;86899;20202;63653;33357;32547;88000;15623;58361;101457;26597;55577;46447;64092;57196;59979;79516;49555;86458;73198;95327;68780;16402;62352;33368;45155;103324;45665;92437;81208;21565;80893;50442;94974;38426;70981;71160;38310;34898;69990;23340;68106;56711;80029;26888;103845;94977;89869;43573;72488;59456;60790;54949;60447;72138;89225;21372;20834;28518;14399;67621;14611;28791;25735;34919;75745;76655;24838;82920;53673;35009;103189;87753;103231;46346;35741;33702;25407;100532;70299;23565;78928;95618;56165;72016;92172;47676;39731;62539;40858;34175;81984;80499;53718;80216;16771;81368;76936;42614;13821;71893;70413;17233;80512;83727;52508;33020;35390;24275;43062;15696;38778;55778;40805;99917;65523;18716;20627;104235;70430;38749;54804;106586;64187;64694;88030;70770;86091;66582;66279;42169;86996;62810;13467;19731;15818;34444;48657;43144;22000;21804;55691;37744;36374;33133;69693;30354;68215;80201;100837;76107;69412;55767;22699;85887;16797;43925;77406;79674;74304;25235;56616;71985;49317;56556;66886;16327;15031;57434;17349;63263;83531;31685;45623;45476;91889;61686;69634;28018;90020;58901;92131;74383;47180;20408;78926;31623;65979;78923;92845;106791;41541;97845;44880;91700;93031;28420;31120;16378;56651;53203;39362;95023;64485;77309;103364;44297;59464;89643;89393;93436;56148;104369;55977;70823;74673;63526;40531;96770;23711;31317;78265;62107;62980;33463;11478;26519;76753;28272;32971;95889;93349;59357;63839;84924;16739;95890;85310;20054;94800;64555;29650;45509;65520;101534;10023;99776;23251;86085;48359;101357;42579;27478;97550;18681;27338;26662;90348;73693;81581;45271;11403;20251;91293;48413;63680;83569;79556;16132;20659;79739;48650;26952;18011;85285;54048;12370;23494;71143;104517;58934;73708;36196;37050;104732;17692;87971;45875;83723;71317;36401;69208;17735;88857;32738;61204;29726;104437;63461;60321;92885;103363;37745;81045;51954;43937;104320;77708;103900;21262;45077;59637;56324;93204;85157;58675;78561;86693;81353;93867;24902;79284;51583;66161;30702;101046;93229;24987;80724;105232;73120;19903;55763;65751;56663;67147;51826;72409;12053;101960;70535;15164;72733;91628;15495;23702;23467;82263;84448;49547;37384;92058;76803;29833;89255;67921;22203;21374;100188;104901;74740;16651;33926;11278;77458;48287;19351;53267;105416;58120;65136;12785;40970;61921;103981;64254;35593;67507;70036;11658;34851;73416;58262;83800;38811;59583;28477;105236;19165;86192;65997;88431;74310;32056;25065;101468;50189;35897;54868;20062;71904;47266;106482;101605;86827;78075;18839;43274;95699;45435;95930;40617;21154;45633;41377;102520;79594;19353;97104;39635;36974;23008;13688;67977;15146;24968;37375;11148;86884;18004;76996;88976;33270;36612;95848;84113;17481;41802;70657;79479;82325;43923;107016;106782;37466;73675;11015;35296;64410;42158;11042;44287;21055;104429;80815;73814;32728;47795;90441;86653;43311;59077;34319;57337;78548;90190;70313;61030;52750;24477;63124;81126;43482;71132;23783;80380;106327;25451;95778;37075;77259;51881;80303;19597;101074;68205;85727;102839;90667;37483;84841;59741;56097;97757;76392;43486;28895;27208;101503;54731;13220;67872;21201;44601;89413;79293;36440;31492;75592;59315;53454;28154;103948;81602;37532;105989;84302;96781;52303;13308;20291;105257;93898;32792;38646;81795;13568;47753;86217;99800;20003;26601;22884;66593;33763;55515;52141;73641;76233;36113;104031;71107;89179;41821;101230;60326;26122;71586;101612;41933;38909;21539;49503;103327;40299;69782;53396;79149;96092;84611;67491;39395;39500;88569;45047;75205;35110;87229;65567;48346;91162;27735;106911;18040;50144;19241;68807;56510;28784;62194;99550;90842;70104;18420;77491;27323;74122;104229;89644;47437;67073;30636;63153;80784;92047;18312;46680;85133;40753;43207;100748;35457;102728;83722;90429;87299;67804;77003;58527;28229;34630;64521;66436;19631;36614;37918;11495;63021;74803;93770;12284;79237;95360;104519;105829;32779;16377;64484;58929;29259;103456;23084;46334;26336;71309;68304;106150;96159;53492;46858;80075;60235;42830;36757;73467;65864;10848;24589;43142;39213;106604;31123;59235;18666;69974;34723;15036;29367;75359;19406;57978;16626;101599;53832;42093;83847;55869;43698;51045;12841;67692;72904;106856;46399;96395;75481;105201;86023;43474;37335;51130;20350;61374;82509;42641;94043;42134;102473;69774;80799;95450;56391;106082;70956;63488;62418;14832;19336;25661;51267;45485;106066;69409;41612;46107;18098;100267;27245;53162;81592;46091;29404;105091;80543;74973;24842;29647;87953;35561;44962;57863;86061;78435;86987;44126;32998;41119;35814;77146;52369;200006;72041;60473;50476;70995;97672;48642;35360;62643;43414;46254;30103;87722;51448;21934;80783;35977;101875;54492;41406;54846;24622;82819;11301;87980;27713;53427;25809;61187;86610;11481;30941;57024;55859;80910;101836;31295;59782;50268;71456;92181;45708;106625;10806;18678;10135;65373;20533;71168;82875;43562;30614;31721;32768;30037;61172;21493;25864;54158;38435;49634;12512;67845;57668;69575;37656;81909;69695;24994;101716;34371;75582;96831;34496;97686;77419;23564;55347;88407;82383;32590;73399;45132;29009;28726;21100;13771;46577;35164;14900;53536;86171;25167;21401;94856;83564;46326;27600;102342;43653;35541;72280;58375;36022;92639;11798;76930;89364;43322;28722;78198;33596;86843;78246;10977;24531;30293;91159;90106;70839;27704;41404;67137;66687;86793;57061;19404;82297;21436;45323;27832;68620;200128;54981;39143;29515;101760;40170;64826;53405;66068;14375;83147;46642;13305;57330;31217;104808;19248;55561;44993;62869;48673;38496;30800;73888;72480;107070;53315;70523;65479;57246;21709;31333;89870;63383;55348;27994;47712;26865;82630;40372;40649;105412;97243;65949;57496;57208;88892;65596;103131;102853;60302;37415;61382;52941;65270;43600;16669;17299;44845;46534;44144;70594;55098;94052;32194;82185;52083;67289;30030;85033;88665;71660;86547;25207;32437;41663;61191;70456;12449;36081;106239;58526;17977;89282;74666;73002;35929;22290;93368;71833;99452;39649;81919;86688;52569;29322;102510;85894;28463;76907;36723;62014;39176;101670;37993;18866;73565;19698;86868;81772;10264;90544;72773;61288;68619;62875;31710;35836;18288;49745;72008;97412;96891;71779;62549;15145;30513;49880;20740;103741;31521;81087;11288;90790;52704;53251;103112;77984;44428;95663;55753;90308;70398;72046;63241;22052;27733;52422;86297;30574;33017;66664;77076;68180;78879;78058;75899;20734;37765;79023;16045;30484;88391;52480;67402;54637;42447;45267;78234;43075;97356;28865;83049;97767;92488;25675;79451;70645;27140;32338;50743;74264;83520;23659;105193;21226;46993;73804;65827;54259;105998;62330;79155;38245;101855;31112;37167;96068;106039;103716;75878;57680;40244;83959;26379;35912;92736;59495;27193;92719;10453;81992;27142;102150;74765;23706;81322;20540;58258;72144;67259;84336;77976;101168;96893;92104;85439;95550;72564;37471;105940;65375;33212;67643;36999;84021;15484;68779;84740;44603;39425;11760;82754;96358;68595;46690;47295;20586;20032;12942;38787;70871;16004;72783;31825;80467;57670;92457;63695;60092;12302;101472;89394;59310;74328;71878;38895;106730;44885;77332;28358;41687;57295;18345;70674;95710;18154;88412;61805;86039;59295;81731;24724;32722;47765;39777;71480;22641;67063;24784;79780;12443;18341;48975;77822;38984;20770;81038;103799;15715;36638;57849;69050;105653;94293;74026;73940;22368;26533;64767;104222;11567;43765;48729;61097;40522;90639;28758;65870;105960;70376;14924;102272;59822;78422;63586;38630;43935;18031;21431;18836;92876;51752;32983;77774;83490;22307;70261;76383;39576;66212;42890;42628;18440;17676;89781;81057;100891;54371;30239;94544;22040;88974;102437;43193;97038;65901;88915;29159;49007;22383;87095;26935;20883;75661;13093;59849;58725;103461;80421;53082;92733;41245;67122;78728;77099;13482;71826;27594;30043;23300;70072;33128;85792;43781;38417;93310;80666;86597;74981;65731;24137;45444;17823;14020;68139;101675;70819;58080;102216;103666;87696;31316;103683;75959;105572;69596;104484;50801;27448;74389;104094;92406;63559;102108;107004;40779;72092;92472;70980;38169;42284;70379;23052;84892;77550;105385;90226;35315;99159;70683;83159;57335;105900;50103;29816;72872;105150;49063;74907;20423;86060;79913;40019;67295;38353;73855;85015;101206;93179;97814;106168;45154;83933;56547;81443;41758;10670;62744;105880;32766;45080;97696;96554;77903;46315;12818;89398;43434;67561;83072;76777;75981;42394;40125;46297;52479;95346;102180;63217;93891;31992;93945;82539;44720;62523;26993;59704;38980;80016;104483;47067;19682;63555;41550;40015;101225;69965;90029;55386;79436;30220;94279;20151;66176;40186;87252;18239;17995;105080;69799;100854;82390;106164;51609;89052;67077;39054;56634;44639;37986;32978;29154;66871;51595;11442;44847;99735;97292;41848;100831;55487;61594;104439;14800;61391;97718;52827;101886;30068;20306;31996;84527;37503;61652;30837;56614;99103;26229;37393;71539;31271;78934;14118;106877;44432;99524;26069;23761;49106;26033;45163;50513;84716;71613;47347;77511;52103;30303;77909;89648;56271;70102;56262;52184;39554;16216;23660;42016;92467;81955;102816;10591;27716;10048;82848;27575;92943;25376;39688;77711;95807;38743;44194;39734;100700;66304;103986;31684;81401;53475;59211;12611;46465;11596;37630;100176;92790;47744;78530;104686;99786;93161;34354;25777;42672;86168;53679;55908;35804;27290;100354;106543;20567;71745;21116;47419;36444;32293;47329;13594;13094;44116;57361;80876;49378;56562;79035;46303;67827;69139;65853;54902;53309;22829;74675;86618;38485;85301;15569;95594;78144;83144;26073;38375;87284;200072;92892;39215;55017;52297;68360;80180;35852;104803;95871;57745;46138;31679;71455;64954;53088;104124;25037;13536;14744;52325;56605;39887;24219;16667;42798;59484;80117;61332;61808;42674;58445;79290;79287;14508;46012;23136;99351;77576;100931;200106;92158;32949;106353;104905;44088;68352;57258;96827;71594;85049;76712;39744;72454;56350;91461;52864;54282;48261;20205;18470;68401;11891;26228;85048;72007;80811;73959;53254;68525;44715;99573;39403;13216;42599;65166;86568;29557;48721;41901;58923;17027;92574;80288;63974;39939;25137;96905;14084;20108;79548;14135;90697;106096;78444;71600;60825;55208;55923;22538;85717;19695;92901;31398;23102;84546;15485;33959;70428;66521;87733;78777;62003;69555;16527;71560;87866;17723;91974;102312;75845;76806;56625;58622;73414;59478;95295;99468;60706;200021;39354;56797;67698;102007;22746;47580;41150;75061;48291;77703;40952;66302;57822;65823;40534;106173;38383;64274;22779;99708;87756;10266;25586;79547;75135;33492;34567;63554;200079;102455;72786;43589;41360;42048;69266;86513;42232;23546;22214;48355;11686;69500;78164;12492;33021;90272;13007;77757;22101;62060;15276;50337;75712;68187;53181;103087;42361;37522;26550;23744;73293;17281;92907;80651;50812;14592;15367;33721;77852;48352;39375;58303;30997;89224;76165;69579;83367;55442;27108;26705;85822;42571;11245;14560;58068;74686;94261;96347;79716;23295;60883;48623;91121;100536;96607;20214;81847;44778;65243;68939;66604;60510;16458;73042;13705;106491;13312;34058;62320;90353;62215;21659;95698;47861;70678;20404;72079;88144;22602;75451;29206;82378;61579;22580;43691;23093;80439;14668;200023;48220;26344;72901;67569;20467;17111;43559;30524;55604;92414;37124;24097;36474;96414;78371;89740;105714;37257;68197;67959;22482;33502;47020;23148;94204;55901;93631;106405;78165;43477;68481;11474;50392;70885;69031;56004;24380;81305;40111;49584;100099;103784;53018;89654;57409;77581;52824;56912;96435;23131;60094;104665;79979;37133;38214;70304;23127;65173;83824;64944;75210;33828;90337;53225;34666;36571;94506;63905;46648;26936;14902;45658;58195;92205;29334;89756;40686;74748;56706;50643;39370;16266;65422;76607;43832;20910;50038;94482;106853;91222;93304;62331;66669;46229;79509;14052;94616;63031;21834;34635;70580;49940;103539;52780;62090;73489;26014;20445;101908;69953;59530;94852;70426;16809;19050;41052;57311;14915;73577;58668;14987;38018;92651;71731;12907;86751;44500;87919;85257;83475;34414;84352;49633;59991;89829;61296;66545;74934;21668;67088;21811;46872;37543;52363;26444;95358;21568;78972;78493;105468;46002;104325;28436;22830;65548;35221;83323;61737;63724;60899;76751;96559;39008;61616;27325;40884;31850;66234;63651;60755;90711;30100;23502;75380;22423;39716;10763;28926;69122;24580;66837;41255;94727;40519;62453;94189;78984;69985;104386;48490;50021;26768;101017;21168;66260;21214;43895;69032;22167;16394;79251;60578;62480;60017;26909;58351;49423;23539;89909;27715;99617;26700;58849;85540;79368;18779;101393;80633;32099;28123;100121;21298;79949;58942;53766;12939;31718;70452;22877;19332;34725;91838;49044;37822;85608;31275;103139;95693;104851;39868;50507;20287;46717;45185;60817;57748;74692;105752;106801;22858;79693;90365;37777;15690;21689;68350;24898;14626;41830;56397;27710;46841;61115;200102;81492;69536;37102;75446;65071;35742;64398;62083;54486;104173;64827;13995;57364;74930;10124;29351;95000;59644;72907;62088;47426;15329;59937;96595;54661;53220;72489;44666;44067;93845;25678;79577;52032;48649;73490;26800;46190;52595;77861;106882;104907;25148;86862;36870;67638;14775;36769;77446;99046;36189;44248;73400;83662;85953;28736;41116;37681;84401;20405;61243;63379;71136;80935;13170;89498;43520;67431;100718;89351;55599;75833;22296;38620;51593;50664;85695;34475;79042;106015;34672;48820;76080;18720;21537;68667;17553;90741;80451;33010;47884;38957;91578;12794;84462;58597;19696;29770;97749;101277;19818;46721;56379;49606;106640;32463;30192;92413;47793;55960;21936;12064;99429;15498;89154;82134;53424;30406;103514;87079;74663;38936;31099;24367;78372;82100;12849;74009;18826;15271;31471;66137;20852;83036;43536;75052;30009;75253;66180;15060;48544;30560;96090;72924;88682;90692;86131;20792;30040;46860;89465;71060;35987;96613;12511;69232;54466;32899;36674;14366;99682;36668;84559;43010;95387;45453;45939;106377;40130;95867;99763;105508;104394;34986;12903;33942;27483;28847;89918;29002;67562;58517;80757;94454;74898;89513;39245;46914;45144;21371;17161;61040;19287;76257;75492;55059;13692;72851;69631;104459;49081;28168;53105;40904;101713;54533;49192;78560;45957;13615;95588;91472;13058;29521;99732;71796;58755;55492;20998;30202;22105;43879;78031;88499;24440;63893;11675;50146;92318;16015;50758;56188;38718;69524;91781;14602;27049;62227;18819;38572;75864;22346;95874;83349;41646;42964;104262;56882;78282;90067;42923;105011;22789;29022;76697;104820;33489;28854;67483;50516;30979;63644;16547;26225;91235;50371;44414;89805;71771;78134;19685;58127;43933;35703;21967;29181;13489;68557;200065;105391;64235;73790;14609;91534;20327;55555;66956;104019;49257;71611;67616;66292;63237;81696;26739;94736;23247;106647;104722;89944;41873;65041;26143;27567;78556;100038;91177;10134;18706;97806;35753;48804;47060;85682;34109;13054;18084;89978;20814;21019;94768;45707;105649;85254;19971;15966;12607;18815;16694;13181;21221;66626;64399;105516;60730;31616;47357;33839;10911;51971;34613;71682;34197;82163;57140;90956;37661;59234;26374;25154;65404;14610;50209;100279;28679;102144;42209;27674;36314;21235;100955;11586;62274;100682;68348;58007;67055;74797;21072;68813;61894;71403;59511;41504;26791;74812;52544;44197;106883;78218;80440;104288;74321;24165;94141;50951;87491;94693;21279;29423;74349;65302;60576;92208;71418;29038;81502;34982;25391;70374;15783;106679;100784;95372;104575;84008;18032;43333;71278;24999;47370;104814;30262;14683;83090;48219;107083;61965;51389;58790;77158;85714;35190;76605;56078;56931;62495;85787;92186;27763;59182;77885;86906;90111;67800;17523;18623;54440;28780;40388;64161;63518;76261;103730;100453;51774;39841;63619;75869;29308;69786;69832;19091;39114;20519;95478;26588;83256;49133;21527;67048;50606;12741;24368;24760;45235;90532;68260;59117;94588;57617;17267;59113;34357;18304;37015;51331;54183;22711;61871;85954;79152;43230;27174;71634;46116;100154;54618;103569;33460;93495;99737;72577;20991;77323;66466;62581;49701;95852;100313;14922;54255;36941;19037;42878;10022;17392;101235;65465;65108;67790;15611;97987;101469;75945;93946;105959;35547;13454;30388;73613;94982;18584;78705;67202;79826;64673;101364;26881;26638;85425;54204;67503;62688;106095;96420;25640;31339;25749;48431;11363;85460;32954;99138;40932;40036;64505;87749;49627;28759;93125;86173;54864;18202;84218;79781;32093;12278;23872;12580;71592;70055;49979;58143;103596;41241;29338;11720;63911;11577;52454;74124;31978;64761;46644;99865;37632;100631;47231;44122;60938;67847;59111;74461;15382;48301;30042;62541;11906;51087;26749;34516;99198;82489;37720;70849;105692;53831;47898;21758;96371;50867;21879;55269;16298;71244;52473;57167;20366;39773;106300;42500;22084;33344;25409;18867;81983;45055;37340;50824;90263;76040;46211;37412;66903;69317;57769;52268;80017;86853;90126;64321;17237;99698;40978;78161;47704;106147;31775;106563;200103;11131;92492;20779;68253;58446;49506;85638;62538;65786;62925;94530;31193;11058;10435;85404;16617;94162;31451;101307;40024;96421;103584;45533;68978;10538;28294;53848;35766;61909;63571;25728;100321;65235;49774;65989;59251;83255;86197;28284;16550;70862;95011;73257;40116;91004;52305;18246;70563;76221;56128;93967;21206;85029;105345;79663;72704;51268;10637;83175;41496;19326;72487;104987;17352;15196;85895;18763;61381;104102;61262;21479;76420;63174;27079;90074;74621;49587;20855;97094;101572;87072;104700;34119;84606;25412;64943;76125;29123;78868;71694;81011;65764;58677;84745;72637;100749;100210;83674;18232;34096;35318;85603;60012;13230;84736;76527;100020;72047;47228;99169;27989;33572;64417;86814;29446;36016;63260;33387;57027;62318;32704;82847;83980;72030;65745;105749;41505;90476;23665;28625;70189;40260;77560;80369;18438;59964;11327;17434;12559;39388;102564;59653;21724;86161;72141;96979;97345;23397;51877;60663;56178;59733;80289;77785;101551;29621;24611;48567;25139;66060;105729;20320;94860;83881;22992;53223;25596;17500;97952;32888;34784;16420;25147;87331;22548;75098;26005;96916;78194;27431;40078;32157;19313;20138;63261;76504;23759;106322;63346;35502;12472;10953;83191;103890;62323;12737;18375;91424;96023;54676;51760;19707;106599;28300;45846;77718;76477;59678;69783;103303;49670;83169;97055;35536;74118;90496;88610;17506;31611;63321;101525;74196;36550;72253;54237;64002;97907;61402;97525;84192;48525;13432;56252;71126;89530;29483;21742;47324;20827;40144;104447;55951;80897;105324;63956;63214;90030;66457;38521;44934;35073;38612;64659;35361;95611;80590;58543;49720;78996;21376;42244;96713;28778;95839;93146;11931;52679;18325;94644;20233;67247;61341;92856;21349;48632;30770;60423;17714;19191;33537;104056;101504;62641;26840;89624;104772;101035;86954;66824;20056;102767;79497;81413;16271;27305;78960;66014;68729;91290;33145;48573;101316;83361;64765;92994;77185;50900;71164;76524;26630;59572;64996;45026;10735;84528;33236;67781;30446;104647;104727;92528;82833;96341;48611;49064;34421;19390;107028;64111;10959;59788;56633;53983;32309;53800;68711;74251;90197;14682;95700;106021;89001;33670;35374;75953;70744;48614;37816;16287;28849;79519;81558;106878;31564;79664;30269;107071;87675;67500;97118;20679;51728;83856;71799;24498;79926;75443;20112;69461;75998;88644;31628;63702;27990;40669;40151;101884;19900;44945;46170;23953;79838;53478;97135;49480;58603;90062;14045;14237;93817;49757;87734;44745;12753;95481;31713;45873;28412;25251;34925;18755;77162;76462;96710;70905;42030;69492;13865;38495;39223;20841;75606;101730;22866;52810;66583;56794;46484;27972;15651;66603;69652;41726;30238;104719;34466;44422;74943;104049;101601;29841;84640;82726;55279;30274;67226;90803;69374;103987;92326;63089;56314;75465;28935;86730;82950;46758;50742;56011;42271;65403;
+
+TARGET
+http://localhost
+
+throttle_scan
+yes
+
+listen_address
+0.0.0.0
+
+non_simult_ports
+139, 445, 3389
+
+slice_network_addresses
+no
+
+ssl_mode
+tls_1_2
+
+max_checks
+5
+
+stop_scan_on_disconnect
+yes
+
+report_crashes
+yes
+
+xmlrpc_listen_port
+8834
+
+report_cleanup_threshold_days
+30
+
+name
+Advanced Scan
+
+description
+SecHub scan FALLBACK_TRACE_ID#526768485076813
+
+whoami
+sechub
+
+scan_description
+SecHub scan FALLBACK_TRACE_ID#526768485076813
+
+optimize_test
+yes
+
+log_whole_attack
+no
+
+ssl_cipher_list
+strong
+
+cgi_path
+/cgi-bin:/scripts
+
+auto_update_ui
+no
+
+use_kernel_congestion_detection
+yes
+
+auto_update
+no
+
+listen_port
+1241
+
+checks_read_timeout
+5
+
+plugins_timeout
+1800
+
+auto_enable_dependencies
+yes
+
+safe_checks
+yes
+
+report_task_id
+b2a6f1ee-7f52-1e41-7965-2d2eaf0c1e922b157c5b5e8b8799
+
+allow_post_scan_editing
+yes
+
+stop_scan_on_hang
+no
+
+visibility
+private
+
+wizard_uuid
+ad629e16-03b6-8c1d-cef6-ef8c9dd3c658d24bd260ef5f9e66
+
+max_hosts
+100
+
+plugin_upload
+yes
+
+reduce_connections_on_congestion
+yes
+
+feed_type
+ProFeed
+
+silent_dependencies
+yes
+
+port_range
+default
+
+
+Adtran AOS Compliance Checks
+71991
+Adtran AOS Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Adtran AOS Compliance Checks
+71991
+Adtran AOS Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Adtran AOS Compliance Checks
+71991
+Adtran AOS Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Adtran AOS Compliance Checks
+71991
+Adtran AOS Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Adtran AOS Compliance Checks
+71991
+Adtran AOS Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Adtran AOS Compliance Checks
+71991
+Adtran AOS Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain Controller :
+Domain Controller :
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain :
+Domain :
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain Username :
+Domain Username :
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[password]:Domain Password :
+Domain Password :
+password
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain Controller 2:
+Domain Controller 2:
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain 2:
+Domain 2:
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain Username 2:
+Domain Username 2:
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[password]:Domain Password 2:
+Domain Password 2:
+password
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain Controller 3:
+Domain Controller 3:
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain 3:
+Domain 3:
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain Username 3:
+Domain Username 3:
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[password]:Domain Password 3:
+Domain Password 3:
+password
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain Controller 4:
+Domain Controller 4:
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain 4:
+Domain 4:
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain Username 4:
+Domain Username 4:
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[password]:Domain Password 4:
+Domain Password 4:
+password
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain Controller 5:
+Domain Controller 5:
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain 5:
+Domain 5:
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[entry]:Domain Username 5:
+Domain Username 5:
+entry
+
+
+
+ADSI Settings
+60024
+ADSI Settings[password]:Domain Password 5:
+Domain Password 5:
+password
+
+
+
+AirWatch API Settings
+76460
+AirWatch API Settings[entry]:AirWatch Environment API URL :
+AirWatch Environment API URL :
+entry
+
+
+
+AirWatch API Settings
+76460
+AirWatch API Settings[entry]:AirWatch port :
+AirWatch port :
+entry
+
+
+
+AirWatch API Settings
+76460
+AirWatch API Settings[entry]:AirWatch username :
+AirWatch username :
+entry
+
+
+
+AirWatch API Settings
+76460
+AirWatch API Settings[password]:AirWatch password :
+AirWatch password :
+password
+
+
+
+AirWatch API Settings
+76460
+AirWatch API Settings[entry]:AirWatch API key :
+AirWatch API key :
+entry
+
+
+
+AirWatch API Settings
+76460
+AirWatch API Settings[checkbox]:SSL :
+SSL :
+checkbox
+yes
+yes
+
+AirWatch API Settings
+76460
+AirWatch API Settings[checkbox]:Verify SSL certificate :
+Verify SSL certificate :
+checkbox
+no
+no
+
+Alcatel TiMOS Compliance Checks
+102730
+Alcatel TiMOS Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Alcatel TiMOS Compliance Checks
+102730
+Alcatel TiMOS Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Alcatel TiMOS Compliance Checks
+102730
+Alcatel TiMOS Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Alcatel TiMOS Compliance Checks
+102730
+Alcatel TiMOS Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Alcatel TiMOS Compliance Checks
+102730
+Alcatel TiMOS Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Alcatel TiMOS Compliance Checks
+102730
+Alcatel TiMOS Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+Amazon AWS Compliance Checks
+72426
+Amazon AWS Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Amazon AWS Compliance Checks
+72426
+Amazon AWS Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Amazon AWS Compliance Checks
+72426
+Amazon AWS Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Amazon AWS Compliance Checks
+72426
+Amazon AWS Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Amazon AWS Compliance Checks
+72426
+Amazon AWS Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Antivirus Software Check
+16193
+Antivirus Software Check[entry]:Delay (in days, between 0 and 7) :
+Delay (in days, between 0 and 7) :
+entry
+0
+0
+
+Apple Profile Manager API Settings
+60032
+Apple Profile Manager API Settings[entry]:Apple Profile Manager server :
+Apple Profile Manager server :
+entry
+
+
+
+Apple Profile Manager API Settings
+60032
+Apple Profile Manager API Settings[entry]:Apple Profile Manager port :
+Apple Profile Manager port :
+entry
+443
+443
+
+Apple Profile Manager API Settings
+60032
+Apple Profile Manager API Settings[entry]:Apple Profile Manager username :
+Apple Profile Manager username :
+entry
+
+
+
+Apple Profile Manager API Settings
+60032
+Apple Profile Manager API Settings[password]:Apple Profile Manager password :
+Apple Profile Manager password :
+password
+
+
+
+Apple Profile Manager API Settings
+60032
+Apple Profile Manager API Settings[checkbox]:SSL :
+SSL :
+checkbox
+yes
+yes
+
+Apple Profile Manager API Settings
+60032
+Apple Profile Manager API Settings[checkbox]:Verify SSL Certificate :
+Verify SSL Certificate :
+checkbox
+no
+no
+
+Apple Profile Manager API Settings
+60032
+Apple Profile Manager API Settings[checkbox]:Force Device Updates :
+Force Device Updates :
+checkbox
+yes
+yes
+
+Apple Profile Manager API Settings
+60032
+Apple Profile Manager API Settings[entry]:Device Update Timeout (Minutes) :
+Device Update Timeout (Minutes) :
+entry
+5
+5
+
+Arista EOS Compliance Checks
+92838
+Arista EOS Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Arista EOS Compliance Checks
+92838
+Arista EOS Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Arista EOS Compliance Checks
+92838
+Arista EOS Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Arista EOS Compliance Checks
+92838
+Arista EOS Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Arista EOS Compliance Checks
+92838
+Arista EOS Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Arista EOS Compliance Checks
+92838
+Arista EOS Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region us-east-1 :
+Region us-east-1 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region us-east-2 :
+Region us-east-2 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region us-west-1 :
+Region us-west-1 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region us-west-2 :
+Region us-west-2 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region eu-west-1 :
+Region eu-west-1 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region eu-west-2 :
+Region eu-west-2 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region eu-central-1 :
+Region eu-central-1 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region ap-northeast-1 :
+Region ap-northeast-1 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region ap-northeast-2 :
+Region ap-northeast-2 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region ap-southeast-1 :
+Region ap-southeast-1 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region ap-southeast-2 :
+Region ap-southeast-2 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region ap-south-1 :
+Region ap-south-1 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region sa-east-1 :
+Region sa-east-1 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region cn-north-1 :
+Region cn-north-1 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region us-gov-west-1 :
+Region us-gov-west-1 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Region ca-central-1 :
+Region ca-central-1 :
+checkbox
+no
+no
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[password]:AWS Access Key ID :
+AWS Access Key ID :
+password
+
+
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[password]:AWS Secret Access Key :
+AWS Secret Access Key :
+password
+
+
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:SSL :
+SSL :
+checkbox
+yes
+yes
+
+Amazon Web Services Settings
+73490
+Amazon Web Services Settings[checkbox]:Verify SSL Certificate :
+Verify SSL Certificate :
+checkbox
+yes
+yes
+
+Microsoft Azure Compliance Checks
+79357
+Microsoft Azure Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Microsoft Azure Compliance Checks
+79357
+Microsoft Azure Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Microsoft Azure Compliance Checks
+79357
+Microsoft Azure Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Microsoft Azure Compliance Checks
+79357
+Microsoft Azure Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Microsoft Azure Compliance Checks
+79357
+Microsoft Azure Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Microsoft Azure Settings
+79358
+Microsoft Azure Settings[entry]:Username :
+Username :
+entry
+
+
+
+Microsoft Azure Settings
+79358
+Microsoft Azure Settings[password]:Password :
+Password :
+password
+
+
+
+Microsoft Azure Settings
+79358
+Microsoft Azure Settings[entry]:Client Id :
+Client Id :
+entry
+443
+443
+
+Microsoft Azure Settings
+79358
+Microsoft Azure Settings[checkbox]:Verify SSL Certificate :
+Verify SSL Certificate :
+checkbox
+no
+no
+
+Microsoft Azure Settings
+79358
+Microsoft Azure Settings[entry]:Subscriptions :
+Subscriptions :
+entry
+
+
+
+BlueCoat ProxySG Compliance Checks
+70470
+BlueCoat ProxySG Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+BlueCoat ProxySG Compliance Checks
+70470
+BlueCoat ProxySG Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+BlueCoat ProxySG Compliance Checks
+70470
+BlueCoat ProxySG Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+BlueCoat ProxySG Compliance Checks
+70470
+BlueCoat ProxySG Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+BlueCoat ProxySG Compliance Checks
+70470
+BlueCoat ProxySG Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+BlueCoat ProxySG Compliance Checks
+70470
+BlueCoat ProxySG Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+Brocade FabricOS Compliance Checks
+71842
+Brocade FabricOS Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Brocade FabricOS Compliance Checks
+71842
+Brocade FabricOS Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Brocade FabricOS Compliance Checks
+71842
+Brocade FabricOS Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Brocade FabricOS Compliance Checks
+71842
+Brocade FabricOS Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Brocade FabricOS Compliance Checks
+71842
+Brocade FabricOS Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Brocade FabricOS Compliance Checks
+71842
+Brocade FabricOS Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+Check Point GAiA Compliance Checks
+62679
+Check Point GAiA Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Check Point GAiA Compliance Checks
+62679
+Check Point GAiA Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Check Point GAiA Compliance Checks
+62679
+Check Point GAiA Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Check Point GAiA Compliance Checks
+62679
+Check Point GAiA Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Check Point GAiA Compliance Checks
+62679
+Check Point GAiA Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Check Point GAiA Compliance Checks
+62679
+Check Point GAiA Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+Cisco IOS Compliance Checks
+46689
+Cisco IOS Compliance Checks[radio]:IOS Config File To Audit :
+IOS Config File To Audit :
+radio
+Saved/(show config);Running/(show running);Startup/(show startup)
+Saved/(show config);Running/(show running);Startup/(show startup)
+
+Cisco IOS Compliance Checks
+46689
+Cisco IOS Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Cisco IOS Compliance Checks
+46689
+Cisco IOS Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Cisco IOS Compliance Checks
+46689
+Cisco IOS Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Cisco IOS Compliance Checks
+46689
+Cisco IOS Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Cisco IOS Compliance Checks
+46689
+Cisco IOS Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Cisco IOS Compliance Checks
+46689
+Cisco IOS Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+Citrix XenServer Compliance Checks
+69512
+Citrix XenServer Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Citrix XenServer Compliance Checks
+69512
+Citrix XenServer Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Citrix XenServer Compliance Checks
+69512
+Citrix XenServer Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Citrix XenServer Compliance Checks
+69512
+Citrix XenServer Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Citrix XenServer Compliance Checks
+69512
+Citrix XenServer Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Cleartext protocols settings
+21744
+Cleartext protocols settings[entry]:User name :
+User name :
+entry
+
+
+
+Cleartext protocols settings
+21744
+Cleartext protocols settings[password]:Password (unsafe!) :
+Password (unsafe!) :
+password
+
+
+
+Cleartext protocols settings
+21744
+Cleartext protocols settings[checkbox]:Try to perform patch level checks over telnet
+Try to perform patch level checks over telnet
+checkbox
+no
+no
+
+Cleartext protocols settings
+21744
+Cleartext protocols settings[checkbox]:Try to perform patch level checks over rsh
+Try to perform patch level checks over rsh
+checkbox
+no
+no
+
+Cleartext protocols settings
+21744
+Cleartext protocols settings[checkbox]:Try to perform patch level checks over rexec
+Try to perform patch level checks over rexec
+checkbox
+no
+no
+
+Windows File Contents Compliance Checks
+24760
+Windows File Contents Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Windows File Contents Compliance Checks
+24760
+Windows File Contents Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Windows File Contents Compliance Checks
+24760
+Windows File Contents Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Windows File Contents Compliance Checks
+24760
+Windows File Contents Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Windows File Contents Compliance Checks
+24760
+Windows File Contents Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Windows Compliance Checks
+21156
+Windows Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Windows Compliance Checks
+21156
+Windows Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Windows Compliance Checks
+21156
+Windows Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Windows Compliance Checks
+21156
+Windows Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Windows Compliance Checks
+21156
+Windows Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Database settings
+33815
+Database settings[radio]:DB Type :
+DB Type :
+radio
+Oracle;SQL Server;MySQL;DB2;Informix/DRDA;PostgreSQL;Sybase ASE
+Oracle;SQL Server;MySQL;DB2;Informix/DRDA;PostgreSQL;Sybase ASE
+
+Database settings
+33815
+Database settings[radio]:Database service type :
+Database service type :
+radio
+SID;SERVICE_NAME
+SID;SERVICE_NAME
+
+Database settings
+33815
+Database settings[entry]:Database SID :
+Database SID :
+entry
+
+
+
+Database settings
+33815
+Database settings[entry]:Database port to use :
+Database port to use :
+entry
+
+
+
+Database settings
+33815
+Database settings[entry]:Login :
+Login :
+entry
+
+
+
+Database settings
+33815
+Database settings[password]:Password :
+Password :
+password
+
+
+
+Database settings
+33815
+Database settings[radio]:Oracle auth type:
+Oracle auth type:
+radio
+NORMAL;SYSOPER;SYSDBA
+NORMAL;SYSOPER;SYSDBA
+
+Database settings
+33815
+Database settings[radio]:SQL Server auth type:
+SQL Server auth type:
+radio
+Windows;SQL
+Windows;SQL
+
+Database settings
+33815
+Database settings[radio]:Sybase ASE auth type:
+Sybase ASE auth type:
+radio
+RSA;Plain Text
+RSA;Plain Text
+
+Database settings
+33815
+Database settings[radio]:Additional DB Type (1) :
+Additional DB Type (1) :
+radio
+Oracle;SQL Server;MySQL;DB2;Informix/DRDA;PostgreSQL;Sybase ASE
+Oracle;SQL Server;MySQL;DB2;Informix/DRDA;PostgreSQL;Sybase ASE
+
+Database settings
+33815
+Database settings[radio]:Additional Database service type (1) :
+Additional Database service type (1) :
+radio
+SID;SERVICE_NAME
+SID;SERVICE_NAME
+
+Database settings
+33815
+Database settings[entry]:Additional Database SID (1) :
+Additional Database SID (1) :
+entry
+
+
+
+Database settings
+33815
+Database settings[entry]:Additional Database port to use (1) :
+Additional Database port to use (1) :
+entry
+
+
+
+Database settings
+33815
+Database settings[entry]:Additional Login (1) :
+Additional Login (1) :
+entry
+
+
+
+Database settings
+33815
+Database settings[password]:Additional Password (1) :
+Additional Password (1) :
+password
+
+
+
+Database settings
+33815
+Database settings[radio]:Additional Oracle auth type (1) :
+Additional Oracle auth type (1) :
+radio
+NORMAL;SYSOPER;SYSDBA
+NORMAL;SYSOPER;SYSDBA
+
+Database settings
+33815
+Database settings[radio]:Additional SQL Server auth type (1) :
+Additional SQL Server auth type (1) :
+radio
+Windows;SQL
+Windows;SQL
+
+Database settings
+33815
+Database settings[radio]:Additional Sybase ASE auth type (1) :
+Additional Sybase ASE auth type (1) :
+radio
+RSA;Plain Text
+RSA;Plain Text
+
+Database settings
+33815
+Database settings[radio]:Additional DB Type (2) :
+Additional DB Type (2) :
+radio
+Oracle;SQL Server;MySQL;DB2;Informix/DRDA;PostgreSQL;Sybase ASE
+Oracle;SQL Server;MySQL;DB2;Informix/DRDA;PostgreSQL;Sybase ASE
+
+Database settings
+33815
+Database settings[radio]:Additional Database service type (2) :
+Additional Database service type (2) :
+radio
+SID;SERVICE_NAME
+SID;SERVICE_NAME
+
+Database settings
+33815
+Database settings[entry]:Additional Database SID (2) :
+Additional Database SID (2) :
+entry
+
+
+
+Database settings
+33815
+Database settings[entry]:Additional Database port to use (2) :
+Additional Database port to use (2) :
+entry
+
+
+
+Database settings
+33815
+Database settings[entry]:Additional Login (2) :
+Additional Login (2) :
+entry
+
+
+
+Database settings
+33815
+Database settings[password]:Additional Password (2) :
+Additional Password (2) :
+password
+
+
+
+Database settings
+33815
+Database settings[radio]:Additional Oracle auth type (2) :
+Additional Oracle auth type (2) :
+radio
+NORMAL;SYSOPER;SYSDBA
+NORMAL;SYSOPER;SYSDBA
+
+Database settings
+33815
+Database settings[radio]:Additional SQL Server auth type (2) :
+Additional SQL Server auth type (2) :
+radio
+Windows;SQL
+Windows;SQL
+
+Database settings
+33815
+Database settings[radio]:Additional Sybase ASE auth type (2) :
+Additional Sybase ASE auth type (2) :
+radio
+RSA;Plain Text
+RSA;Plain Text
+
+Database settings
+33815
+Database settings[radio]:Additional DB Type (3) :
+Additional DB Type (3) :
+radio
+Oracle;SQL Server;MySQL;DB2;Informix/DRDA;PostgreSQL;Sybase ASE
+Oracle;SQL Server;MySQL;DB2;Informix/DRDA;PostgreSQL;Sybase ASE
+
+Database settings
+33815
+Database settings[radio]:Additional Database service type (3) :
+Additional Database service type (3) :
+radio
+SID;SERVICE_NAME
+SID;SERVICE_NAME
+
+Database settings
+33815
+Database settings[entry]:Additional Database SID (3) :
+Additional Database SID (3) :
+entry
+
+
+
+Database settings
+33815
+Database settings[entry]:Additional Database port to use (3) :
+Additional Database port to use (3) :
+entry
+
+
+
+Database settings
+33815
+Database settings[entry]:Additional Login (3) :
+Additional Login (3) :
+entry
+
+
+
+Database settings
+33815
+Database settings[password]:Additional Password (3) :
+Additional Password (3) :
+password
+
+
+
+Database settings
+33815
+Database settings[radio]:Additional Oracle auth type (3) :
+Additional Oracle auth type (3) :
+radio
+NORMAL;SYSOPER;SYSDBA
+NORMAL;SYSOPER;SYSDBA
+
+Database settings
+33815
+Database settings[radio]:Additional SQL Server auth type (3) :
+Additional SQL Server auth type (3) :
+radio
+Windows;SQL
+Windows;SQL
+
+Database settings
+33815
+Database settings[radio]:Additional Sybase ASE auth type (3) :
+Additional Sybase ASE auth type (3) :
+radio
+RSA;Plain Text
+RSA;Plain Text
+
+Database settings
+33815
+Database settings[radio]:Additional DB Type (4) :
+Additional DB Type (4) :
+radio
+Oracle;SQL Server;MySQL;DB2;Informix/DRDA;PostgreSQL;Sybase ASE
+Oracle;SQL Server;MySQL;DB2;Informix/DRDA;PostgreSQL;Sybase ASE
+
+Database settings
+33815
+Database settings[radio]:Additional Database service type (4) :
+Additional Database service type (4) :
+radio
+SID;SERVICE_NAME
+SID;SERVICE_NAME
+
+Database settings
+33815
+Database settings[entry]:Additional Database SID (4) :
+Additional Database SID (4) :
+entry
+
+
+
+Database settings
+33815
+Database settings[entry]:Additional Database port to use (4) :
+Additional Database port to use (4) :
+entry
+
+
+
+Database settings
+33815
+Database settings[entry]:Additional Login (4) :
+Additional Login (4) :
+entry
+
+
+
+Database settings
+33815
+Database settings[password]:Additional Password (4) :
+Additional Password (4) :
+password
+
+
+
+Database settings
+33815
+Database settings[radio]:Additional Oracle auth type (4) :
+Additional Oracle auth type (4) :
+radio
+NORMAL;SYSOPER;SYSDBA
+NORMAL;SYSOPER;SYSDBA
+
+Database settings
+33815
+Database settings[radio]:Additional SQL Server auth type (4) :
+Additional SQL Server auth type (4) :
+radio
+Windows;SQL
+Windows;SQL
+
+Database settings
+33815
+Database settings[radio]:Additional Sybase ASE auth type (4) :
+Additional Sybase ASE auth type (4) :
+radio
+RSA;Plain Text
+RSA;Plain Text
+
+Database Compliance Checks
+33814
+Database Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Database Compliance Checks
+33814
+Database Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Database Compliance Checks
+33814
+Database Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Database Compliance Checks
+33814
+Database Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Database Compliance Checks
+33814
+Database Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Dell Force10 FTOS Compliance Checks
+72461
+Dell Force10 FTOS Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Dell Force10 FTOS Compliance Checks
+72461
+Dell Force10 FTOS Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Dell Force10 FTOS Compliance Checks
+72461
+Dell Force10 FTOS Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Dell Force10 FTOS Compliance Checks
+72461
+Dell Force10 FTOS Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Dell Force10 FTOS Compliance Checks
+72461
+Dell Force10 FTOS Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Dell Force10 FTOS Compliance Checks
+72461
+Dell Force10 FTOS Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+Patch Management: Dell KACE K1000 Settings
+76866
+Patch Management: Dell KACE K1000 Settings[entry]:K1000 Address :
+K1000 Address :
+entry
+
+
+
+Patch Management: Dell KACE K1000 Settings
+76866
+Patch Management: Dell KACE K1000 Settings[entry]:K1000 Database Port :
+K1000 Database Port :
+entry
+3306
+3306
+
+Patch Management: Dell KACE K1000 Settings
+76866
+Patch Management: Dell KACE K1000 Settings[entry]:K1000 Organization Database Name :
+K1000 Organization Database Name :
+entry
+ORG1
+ORG1
+
+Patch Management: Dell KACE K1000 Settings
+76866
+Patch Management: Dell KACE K1000 Settings[entry]:K1000 Database Username :
+K1000 Database Username :
+entry
+R1
+R1
+
+Patch Management: Dell KACE K1000 Settings
+76866
+Patch Management: Dell KACE K1000 Settings[password]:K1000 Database Password :
+K1000 Database Password :
+password
+
+
+
+Do not scan fragile devices
+22481
+Do not scan fragile devices[checkbox]:Scan Network Printers
+Scan Network Printers
+checkbox
+no
+no
+
+Do not scan fragile devices
+22481
+Do not scan fragile devices[checkbox]:Scan Novell Netware hosts
+Scan Novell Netware hosts
+checkbox
+no
+no
+
+Extreme ExtremeXOS Compliance Checks
+73156
+Extreme ExtremeXOS Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Extreme ExtremeXOS Compliance Checks
+73156
+Extreme ExtremeXOS Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Extreme ExtremeXOS Compliance Checks
+73156
+Extreme ExtremeXOS Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Extreme ExtremeXOS Compliance Checks
+73156
+Extreme ExtremeXOS Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Extreme ExtremeXOS Compliance Checks
+73156
+Extreme ExtremeXOS Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Extreme ExtremeXOS Compliance Checks
+73156
+Extreme ExtremeXOS Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+F5 Compliance Checks
+95388
+F5 Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+F5 Compliance Checks
+95388
+F5 Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+F5 Compliance Checks
+95388
+F5 Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+F5 Compliance Checks
+95388
+F5 Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+F5 Compliance Checks
+95388
+F5 Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+F5 Settings
+95387
+F5 Settings[entry]:Username :
+Username :
+entry
+
+
+
+F5 Settings
+95387
+F5 Settings[password]:Password :
+Password :
+password
+
+
+
+F5 Settings
+95387
+F5 Settings[entry]:Port :
+Port :
+entry
+443
+443
+
+F5 Settings
+95387
+F5 Settings[checkbox]:SSL :
+SSL :
+checkbox
+yes
+yes
+
+F5 Settings
+95387
+F5 Settings[checkbox]:Verify SSL Certificate :
+Verify SSL Certificate :
+checkbox
+yes
+yes
+
+Service Detection
+22964
+Service Detection[radio]:Test SSL based services
+Test SSL based services
+radio
+Known SSL ports;All;None
+Known SSL ports;All;None
+
+FireEye Compliance Checks
+70469
+FireEye Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+FireEye Compliance Checks
+70469
+FireEye Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+FireEye Compliance Checks
+70469
+FireEye Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+FireEye Compliance Checks
+70469
+FireEye Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+FireEye Compliance Checks
+70469
+FireEye Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+FireEye Compliance Checks
+70469
+FireEye Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+Fortigate FortiOS Compliance Checks
+70272
+Fortigate FortiOS Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Fortigate FortiOS Compliance Checks
+70272
+Fortigate FortiOS Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Fortigate FortiOS Compliance Checks
+70272
+Fortigate FortiOS Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Fortigate FortiOS Compliance Checks
+70272
+Fortigate FortiOS Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Fortigate FortiOS Compliance Checks
+70272
+Fortigate FortiOS Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Fortigate FortiOS Compliance Checks
+70272
+Fortigate FortiOS Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+Global variable settings
+12288
+Global variable settings[checkbox]:Probe services on every port
+Probe services on every port
+checkbox
+yes
+yes
+
+Global variable settings
+12288
+Global variable settings[checkbox]:Do not log in with user accounts not specified in the policy
+Do not log in with user accounts not specified in the policy
+checkbox
+no
+no
+
+Global variable settings
+12288
+Global variable settings[checkbox]:Enable CGI scanning
+Enable CGI scanning
+checkbox
+no
+no
+
+Global variable settings
+12288
+Global variable settings[radio]:Network type
+Network type
+radio
+Mixed (use RFC 1918);Private LAN;Public WAN (Internet)
+Mixed (use RFC 1918);Private LAN;Public WAN (Internet)
+
+Global variable settings
+12288
+Global variable settings[checkbox]:Enable experimental scripts
+Enable experimental scripts
+checkbox
+no
+no
+
+Global variable settings
+12288
+Global variable settings[checkbox]:Thorough tests (slow)
+Thorough tests (slow)
+checkbox
+no
+no
+
+Global variable settings
+12288
+Global variable settings[radio]:Report verbosity
+Report verbosity
+radio
+Normal;Quiet;Verbose
+Normal;Quiet;Verbose
+
+Global variable settings
+12288
+Global variable settings[radio]:Report paranoia
+Report paranoia
+radio
+Normal;Avoid false alarms;Paranoid (more false alarms)
+Normal;Avoid false alarms;Paranoid (more false alarms)
+
+Global variable settings
+12288
+Global variable settings[entry]:HTTP User-Agent
+HTTP User-Agent
+entry
+Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
+Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
+
+Global variable settings
+12288
+Global variable settings[file]:SSL certificate to use :
+SSL certificate to use :
+file
+
+
+
+Global variable settings
+12288
+Global variable settings[file]:SSL CA to trust :
+SSL CA to trust :
+file
+
+
+
+Global variable settings
+12288
+Global variable settings[file]:SSL key to use :
+SSL key to use :
+file
+
+
+
+Global variable settings
+12288
+Global variable settings[password]:SSL password for SSL key :
+SSL password for SSL key :
+password
+
+
+
+Global variable settings
+12288
+Global variable settings[checkbox]:Enumerate all SSL ciphers
+Enumerate all SSL ciphers
+checkbox
+yes
+yes
+
+Global variable settings
+12288
+Global variable settings[checkbox]:Enable CRL checking (connects to Internet)
+Enable CRL checking (connects to Internet)
+checkbox
+no
+no
+
+Global variable settings
+12288
+Global variable settings[checkbox]:Enable plugin debugging
+Enable plugin debugging
+checkbox
+no
+no
+
+Good MDM Settings
+66963
+Good MDM Settings[entry]:GMC Server :
+GMC Server :
+entry
+
+
+
+Good MDM Settings
+66963
+Good MDM Settings[entry]:Port :
+Port :
+entry
+
+
+
+Good MDM Settings
+66963
+Good MDM Settings[entry]:Domain :
+Domain :
+entry
+
+
+
+Good MDM Settings
+66963
+Good MDM Settings[entry]:Username :
+Username :
+entry
+
+
+
+Good MDM Settings
+66963
+Good MDM Settings[password]:Password :
+Password :
+password
+
+
+
+Good MDM Settings
+66963
+Good MDM Settings[checkbox]:SSL :
+SSL :
+checkbox
+yes
+yes
+
+Good MDM Settings
+66963
+Good MDM Settings[checkbox]:Verify SSL Certificate :
+Verify SSL Certificate :
+checkbox
+no
+no
+
+Hosts File Whitelisted Entries
+73980
+Hosts File Whitelisted Entries[file]:Upload file with custom hosts entries :
+Upload file with custom hosts entries :
+file
+
+
+
+HP ProCurve Compliance Checks
+70271
+HP ProCurve Compliance Checks[radio]:HP ProCurve File To Audit :
+HP ProCurve File To Audit :
+radio
+Saved/(show config);Default/(show default-config);Running/(show running-config)
+Saved/(show config);Default/(show default-config);Running/(show running-config)
+
+HP ProCurve Compliance Checks
+70271
+HP ProCurve Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+HP ProCurve Compliance Checks
+70271
+HP ProCurve Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+HP ProCurve Compliance Checks
+70271
+HP ProCurve Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+HP ProCurve Compliance Checks
+70271
+HP ProCurve Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+HP ProCurve Compliance Checks
+70271
+HP ProCurve Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+HP ProCurve Compliance Checks
+70271
+HP ProCurve Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+HTTP login page
+11149
+HTTP login page[entry]:Login page :
+Login page :
+entry
+/
+/
+
+HTTP login page
+11149
+HTTP login page[entry]:Login form :
+Login form :
+entry
+
+
+
+HTTP login page
+11149
+HTTP login page[entry]:Login form fields :
+Login form fields :
+entry
+user=%USER%&pass=%PASS%
+user=%USER%&pass=%PASS%
+
+HTTP login page
+11149
+HTTP login page[radio]:Login form method :
+Login form method :
+radio
+POST;GET
+POST;GET
+
+HTTP login page
+11149
+HTTP login page[checkbox]:Automated login page search
+Automated login page search
+checkbox
+no
+no
+
+HTTP login page
+11149
+HTTP login page[entry]:Re-authenticate delay (seconds) :
+Re-authenticate delay (seconds) :
+entry
+
+
+
+HTTP login page
+11149
+HTTP login page[entry]:Check authentication on page :
+Check authentication on page :
+entry
+
+
+
+HTTP login page
+11149
+HTTP login page[entry]:Follow 30x redirections (# of levels) :
+Follow 30x redirections (# of levels) :
+entry
+2
+2
+
+HTTP login page
+11149
+HTTP login page[entry]:Authenticated regex :
+Authenticated regex :
+entry
+
+
+
+HTTP login page
+11149
+HTTP login page[checkbox]:Invert test (disconnected if regex matches)
+Invert test (disconnected if regex matches)
+checkbox
+no
+no
+
+HTTP login page
+11149
+HTTP login page[checkbox]:Match regex on HTTP headers
+Match regex on HTTP headers
+checkbox
+no
+no
+
+HTTP login page
+11149
+HTTP login page[checkbox]:Case insensitive regex
+Case insensitive regex
+checkbox
+no
+no
+
+HTTP login page
+11149
+HTTP login page[checkbox]:Abort web application tests if login fails
+Abort web application tests if login fails
+checkbox
+no
+no
+
+Remote web server screenshot
+59861
+Remote web server screenshot[checkbox]:Allow Nessus to connect to the cloud to take a screenshot of the public targets
+Allow Nessus to connect to the cloud to take a screenshot of the public targets
+checkbox
+no
+no
+
+HTTP cookies import
+42893
+HTTP cookies import[file]:Cookies file :
+Cookies file :
+file
+
+
+
+Huawei VRP Compliance Checks
+73157
+Huawei VRP Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Huawei VRP Compliance Checks
+73157
+Huawei VRP Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Huawei VRP Compliance Checks
+73157
+Huawei VRP Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Huawei VRP Compliance Checks
+73157
+Huawei VRP Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Huawei VRP Compliance Checks
+73157
+Huawei VRP Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Huawei VRP Compliance Checks
+73157
+Huawei VRP Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+Hydra: Cisco enable
+15870
+Hydra: Cisco enable[entry]:Logon password :
+Logon password :
+entry
+
+
+
+Hydra: HTTP
+15873
+Hydra: HTTP[entry]:Web page :
+Web page :
+entry
+
+
+
+Hydra (NASL wrappers options)
+15868
+Hydra (NASL wrappers options)[checkbox]:Always enable Hydra (slow)
+Always enable Hydra (slow)
+checkbox
+no
+no
+
+Hydra (NASL wrappers options)
+15868
+Hydra (NASL wrappers options)[file]:Logins file :
+Logins file :
+file
+
+
+
+Hydra (NASL wrappers options)
+15868
+Hydra (NASL wrappers options)[file]:Passwords file :
+Passwords file :
+file
+
+
+
+Hydra (NASL wrappers options)
+15868
+Hydra (NASL wrappers options)[entry]:Number of parallel tasks :
+Number of parallel tasks :
+entry
+16
+16
+
+Hydra (NASL wrappers options)
+15868
+Hydra (NASL wrappers options)[entry]:Timeout (in seconds) :
+Timeout (in seconds) :
+entry
+30
+30
+
+Hydra (NASL wrappers options)
+15868
+Hydra (NASL wrappers options)[checkbox]:Try empty passwords
+Try empty passwords
+checkbox
+yes
+yes
+
+Hydra (NASL wrappers options)
+15868
+Hydra (NASL wrappers options)[checkbox]:Try login as password
+Try login as password
+checkbox
+yes
+yes
+
+Hydra (NASL wrappers options)
+15868
+Hydra (NASL wrappers options)[checkbox]:Exit as soon as an account is found
+Exit as soon as an account is found
+checkbox
+no
+no
+
+Hydra (NASL wrappers options)
+15868
+Hydra (NASL wrappers options)[checkbox]:Add accounts found by other plugins to login file
+Add accounts found by other plugins to login file
+checkbox
+yes
+yes
+
+Hydra: LDAP
+15877
+Hydra: LDAP[entry]:DN :
+DN :
+entry
+
+
+
+Hydra: HTTP proxy
+15874
+Hydra: HTTP proxy[entry]:Web site (optional) :
+Web site (optional) :
+entry
+
+
+
+Hydra: SMB
+15884
+Hydra: SMB[radio]:Check local / domain accounts
+Check local / domain accounts
+radio
+Local accounts; Domain Accounts; Either
+Local accounts; Domain Accounts; Either
+
+Hydra: SMB
+15884
+Hydra: SMB[checkbox]:Interpret passwords as NTLM hashes
+Interpret passwords as NTLM hashes
+checkbox
+no
+no
+
+Hydra: PostgreSQL
+18660
+Hydra: PostgreSQL[entry]:Database name (optional) :
+Database name (optional) :
+entry
+
+
+
+Hydra: SAP R3
+15883
+Hydra: SAP R3[entry]:Client ID (between 0 and 99) :
+Client ID (between 0 and 99) :
+entry
+
+
+
+Patch Management: IBM Tivoli Endpoint Manager Server Settings
+62558
+Patch Management: IBM Tivoli Endpoint Manager Server Settings[entry]:Web Reports Server :
+Web Reports Server :
+entry
+
+
+
+Patch Management: IBM Tivoli Endpoint Manager Server Settings
+62558
+Patch Management: IBM Tivoli Endpoint Manager Server Settings[entry]:Web Reports Port :
+Web Reports Port :
+entry
+
+
+
+Patch Management: IBM Tivoli Endpoint Manager Server Settings
+62558
+Patch Management: IBM Tivoli Endpoint Manager Server Settings[entry]:Web Reports Username :
+Web Reports Username :
+entry
+
+
+
+Patch Management: IBM Tivoli Endpoint Manager Server Settings
+62558
+Patch Management: IBM Tivoli Endpoint Manager Server Settings[password]:Web Reports Password :
+Web Reports Password :
+password
+
+
+
+Patch Management: IBM Tivoli Endpoint Manager Server Settings
+62558
+Patch Management: IBM Tivoli Endpoint Manager Server Settings[checkbox]:SSL :
+SSL :
+checkbox
+no
+no
+
+Patch Management: IBM Tivoli Endpoint Manager Server Settings
+62558
+Patch Management: IBM Tivoli Endpoint Manager Server Settings[checkbox]:Verify SSL Certificate :
+Verify SSL Certificate :
+checkbox
+no
+no
+
+Active Outbound Connection to Host Listed in Known Bot Database
+58430
+Active Outbound Connection to Host Listed in Known Bot Database[file]:Custom Netstat IP Threat List :
+Custom Netstat IP Threat List :
+file
+
+
+
+IBM iSeries Compliance Checks
+57860
+IBM iSeries Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+IBM iSeries Compliance Checks
+57860
+IBM iSeries Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+IBM iSeries Compliance Checks
+57860
+IBM iSeries Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+IBM iSeries Compliance Checks
+57860
+IBM iSeries Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+IBM iSeries Compliance Checks
+57860
+IBM iSeries Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+IBM iSeries Credentials
+57861
+IBM iSeries Credentials[entry]:Login :
+Login :
+entry
+
+
+
+IBM iSeries Credentials
+57861
+IBM iSeries Credentials[password]:Password :
+Password :
+password
+
+
+
+Juniper Junos Compliance Checks
+62680
+Juniper Junos Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Juniper Junos Compliance Checks
+62680
+Juniper Junos Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Juniper Junos Compliance Checks
+62680
+Juniper Junos Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Juniper Junos Compliance Checks
+62680
+Juniper Junos Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Juniper Junos Compliance Checks
+62680
+Juniper Junos Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Juniper Junos Compliance Checks
+62680
+Juniper Junos Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+Kerberos configuration
+17351
+Kerberos configuration[entry]:Kerberos Key Distribution Center (KDC) :
+Kerberos Key Distribution Center (KDC) :
+entry
+
+
+
+Kerberos configuration
+17351
+Kerberos configuration[entry]:Kerberos KDC Port :
+Kerberos KDC Port :
+entry
+88
+88
+
+Kerberos configuration
+17351
+Kerberos configuration[radio]:Kerberos KDC Transport :
+Kerberos KDC Transport :
+radio
+tcp
+tcp
+
+Kerberos configuration
+17351
+Kerberos configuration[entry]:Kerberos Realm (SSH only) :
+Kerberos Realm (SSH only) :
+entry
+
+
+
+LDAP 'Domain Admins' Group Membership Enumeration
+58038
+LDAP 'Domain Admins' Group Membership Enumeration[entry]:LDAP user :
+LDAP user :
+entry
+
+
+
+LDAP 'Domain Admins' Group Membership Enumeration
+58038
+LDAP 'Domain Admins' Group Membership Enumeration[password]:LDAP password :
+LDAP password :
+password
+
+
+
+LDAP 'Domain Admins' Group Membership Enumeration
+58038
+LDAP 'Domain Admins' Group Membership Enumeration[entry]:Max results :
+Max results :
+entry
+1000
+1000
+
+Login configurations
+10870
+Login configurations[entry]:HTTP account :
+HTTP account :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[password]:HTTP password (sent in clear) :
+HTTP password (sent in clear) :
+password
+
+
+
+Login configurations
+10870
+Login configurations[entry]:NNTP account :
+NNTP account :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[password]:NNTP password (sent in clear) :
+NNTP password (sent in clear) :
+password
+
+
+
+Login configurations
+10870
+Login configurations[entry]:FTP account :
+FTP account :
+entry
+anonymous
+anonymous
+
+Login configurations
+10870
+Login configurations[password]:FTP password (sent in clear) :
+FTP password (sent in clear) :
+password
+nessus@nessus.org
+*********
+
+Login configurations
+10870
+Login configurations[entry]:FTP writeable directory :
+FTP writeable directory :
+entry
+/incoming
+/incoming
+
+Login configurations
+10870
+Login configurations[entry]:POP2 account :
+POP2 account :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[password]:POP2 password (sent in clear) :
+POP2 password (sent in clear) :
+password
+
+
+
+Login configurations
+10870
+Login configurations[entry]:POP3 account :
+POP3 account :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[password]:POP3 password (sent in clear) :
+POP3 password (sent in clear) :
+password
+
+
+
+Login configurations
+10870
+Login configurations[entry]:IMAP account :
+IMAP account :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[password]:IMAP password (sent in clear) :
+IMAP password (sent in clear) :
+password
+
+
+
+Login configurations
+10870
+Login configurations[entry]:IPMI account :
+IPMI account :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[password]:IPMI password (sent in clear) :
+IPMI password (sent in clear) :
+password
+
+
+
+Login configurations
+10870
+Login configurations[entry]:SMB account :
+SMB account :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[password]:SMB password :
+SMB password :
+password
+
+
+
+Login configurations
+10870
+Login configurations[entry]:SMB domain (optional) :
+SMB domain (optional) :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[radio]:SMB password type :
+SMB password type :
+radio
+Password;LM Hash;NTLM Hash
+Password;LM Hash;NTLM Hash
+
+Login configurations
+10870
+Login configurations[entry]:Additional SMB account (1) :
+Additional SMB account (1) :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[password]:Additional SMB password (1) :
+Additional SMB password (1) :
+password
+
+
+
+Login configurations
+10870
+Login configurations[entry]:Additional SMB domain (optional) (1) :
+Additional SMB domain (optional) (1) :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[entry]:Additional SMB account (2) :
+Additional SMB account (2) :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[password]:Additional SMB password (2) :
+Additional SMB password (2) :
+password
+
+
+
+Login configurations
+10870
+Login configurations[entry]:Additional SMB domain (optional) (2) :
+Additional SMB domain (optional) (2) :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[entry]:Additional SMB account (3) :
+Additional SMB account (3) :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[password]:Additional SMB password (3) :
+Additional SMB password (3) :
+password
+
+
+
+Login configurations
+10870
+Login configurations[entry]:Additional SMB domain (optional) (3) :
+Additional SMB domain (optional) (3) :
+entry
+
+
+
+Login configurations
+10870
+Login configurations[checkbox]:Never send SMB credentials in clear text
+Never send SMB credentials in clear text
+checkbox
+yes
+yes
+
+Login configurations
+10870
+Login configurations[checkbox]:Only use NTLMv2
+Only use NTLMv2
+checkbox
+no
+no
+
+Login configurations
+10870
+Login configurations[checkbox]:Only use Kerberos authentication for SMB
+Only use Kerberos authentication for SMB
+checkbox
+no
+no
+
+MaaS360 Settings
+92000
+MaaS360 Settings[entry]:Username :
+Username :
+entry
+
+
+
+MaaS360 Settings
+92000
+MaaS360 Settings[password]:Password :
+Password :
+password
+
+
+
+MaaS360 Settings
+92000
+MaaS360 Settings[entry]:Root URL :
+Root URL :
+entry
+
+
+
+MaaS360 Settings
+92000
+MaaS360 Settings[entry]:Platform ID :
+Platform ID :
+entry
+
+
+
+MaaS360 Settings
+92000
+MaaS360 Settings[entry]:Billing ID :
+Billing ID :
+entry
+
+
+
+MaaS360 Settings
+92000
+MaaS360 Settings[entry]:App ID :
+App ID :
+entry
+
+
+
+MaaS360 Settings
+92000
+MaaS360 Settings[entry]:App version :
+App version :
+entry
+
+
+
+MaaS360 Settings
+92000
+MaaS360 Settings[entry]:App access key :
+App access key :
+entry
+
+
+
+Mobile Device Manager Compliance Checks
+81914
+Mobile Device Manager Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Mobile Device Manager Compliance Checks
+81914
+Mobile Device Manager Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Mobile Device Manager Compliance Checks
+81914
+Mobile Device Manager Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Mobile Device Manager Compliance Checks
+81914
+Mobile Device Manager Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Mobile Device Manager Compliance Checks
+81914
+Mobile Device Manager Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+MobileIron API Settings
+72904
+MobileIron API Settings[entry]:MobileIron VSP Admin Portal URL :
+MobileIron VSP Admin Portal URL :
+entry
+
+
+
+MobileIron API Settings
+72904
+MobileIron API Settings[entry]:MobileIron port :
+MobileIron port :
+entry
+
+
+
+MobileIron API Settings
+72904
+MobileIron API Settings[entry]:MobileIron username :
+MobileIron username :
+entry
+
+
+
+MobileIron API Settings
+72904
+MobileIron API Settings[password]:MobileIron password :
+MobileIron password :
+password
+
+
+
+MobileIron API Settings
+72904
+MobileIron API Settings[checkbox]:SSL :
+SSL :
+checkbox
+yes
+yes
+
+MobileIron API Settings
+72904
+MobileIron API Settings[checkbox]:Verify SSL certificate :
+Verify SSL certificate :
+checkbox
+no
+no
+
+MongoDB Compliance Checks
+76513
+MongoDB Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+MongoDB Compliance Checks
+76513
+MongoDB Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+MongoDB Compliance Checks
+76513
+MongoDB Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+MongoDB Compliance Checks
+76513
+MongoDB Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+MongoDB Compliance Checks
+76513
+MongoDB Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+MongoDB Settings
+76512
+MongoDB Settings[entry]:Username :
+Username :
+entry
+
+
+
+MongoDB Settings
+76512
+MongoDB Settings[password]:Password :
+Password :
+password
+
+
+
+MongoDB Settings
+76512
+MongoDB Settings[entry]:Database for authentication :
+Database for authentication :
+entry
+
+
+
+MongoDB Settings
+76512
+MongoDB Settings[entry]:Port :
+Port :
+entry
+27017
+27017
+
+Nessus TCP scanner
+10335
+Nessus TCP scanner[radio]:Firewall detection :
+Firewall detection :
+radio
+Automatic (normal);Disabled (softer);Do not detect RST rate limitation (soft);Ignore closed ports (aggressive)
+Automatic (normal);Disabled (softer);Do not detect RST rate limitation (soft);Ignore closed ports (aggressive)
+
+Nessus SYN scanner
+11219
+Nessus SYN scanner[radio]:Firewall detection :
+Firewall detection :
+radio
+Automatic (normal);Disabled (softer);Do not detect RST rate limitation (soft);Ignore closed ports (aggressive)
+Automatic (normal);Disabled (softer);Do not detect RST rate limitation (soft);Ignore closed ports (aggressive)
+
+NetApp Data ONTAP Compliance Checks
+66934
+NetApp Data ONTAP Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+NetApp Data ONTAP Compliance Checks
+66934
+NetApp Data ONTAP Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+NetApp Data ONTAP Compliance Checks
+66934
+NetApp Data ONTAP Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+NetApp Data ONTAP Compliance Checks
+66934
+NetApp Data ONTAP Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+NetApp Data ONTAP Compliance Checks
+66934
+NetApp Data ONTAP Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+NetApp Data ONTAP Compliance Checks
+66934
+NetApp Data ONTAP Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+OpenStack Compliance Checks
+86349
+OpenStack Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+OpenStack Compliance Checks
+86349
+OpenStack Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+OpenStack Compliance Checks
+86349
+OpenStack Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+OpenStack Compliance Checks
+86349
+OpenStack Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+OpenStack Compliance Checks
+86349
+OpenStack Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+OpenStack Settings
+86348
+OpenStack Settings[entry]:Username :
+Username :
+entry
+
+
+
+OpenStack Settings
+86348
+OpenStack Settings[entry]:Tenant Name for Authentication :
+Tenant Name for Authentication :
+entry
+admin
+admin
+
+OpenStack Settings
+86348
+OpenStack Settings[password]:Password :
+Password :
+password
+
+
+
+OpenStack Settings
+86348
+OpenStack Settings[entry]:Port :
+Port :
+entry
+443
+443
+
+OpenStack Settings
+86348
+OpenStack Settings[checkbox]:SSL :
+SSL :
+checkbox
+yes
+yes
+
+OpenStack Settings
+86348
+OpenStack Settings[checkbox]:Verify SSL Certificate :
+Verify SSL Certificate :
+checkbox
+yes
+yes
+
+Oracle Settings
+22076
+Oracle Settings[radio]:Oracle service type :
+Oracle service type :
+radio
+SID;SERVICE_NAME
+SID;SERVICE_NAME
+
+Oracle Settings
+22076
+Oracle Settings[entry]:Oracle SID :
+Oracle SID :
+entry
+
+
+
+Oracle Settings
+22076
+Oracle Settings[checkbox]:Test default accounts (slow)
+Test default accounts (slow)
+checkbox
+no
+no
+
+OVAL Windows Compliance Checks
+83189
+OVAL Windows Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+OVAL Windows Compliance Checks
+83189
+OVAL Windows Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+OVAL Windows Compliance Checks
+83189
+OVAL Windows Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+OVAL Windows Compliance Checks
+83189
+OVAL Windows Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+OVAL Windows Compliance Checks
+83189
+OVAL Windows Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+OVAL Linux Compliance Checks
+83188
+OVAL Linux Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+OVAL Linux Compliance Checks
+83188
+OVAL Linux Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+OVAL Linux Compliance Checks
+83188
+OVAL Linux Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+OVAL Linux Compliance Checks
+83188
+OVAL Linux Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+OVAL Linux Compliance Checks
+83188
+OVAL Linux Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Palo Alto Networks PAN-OS Compliance Checks
+64095
+Palo Alto Networks PAN-OS Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Palo Alto Networks PAN-OS Compliance Checks
+64095
+Palo Alto Networks PAN-OS Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Palo Alto Networks PAN-OS Compliance Checks
+64095
+Palo Alto Networks PAN-OS Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Palo Alto Networks PAN-OS Compliance Checks
+64095
+Palo Alto Networks PAN-OS Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Palo Alto Networks PAN-OS Compliance Checks
+64095
+Palo Alto Networks PAN-OS Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Palo Alto Networks PAN-OS Settings
+64286
+Palo Alto Networks PAN-OS Settings[entry]:Palo Alto Username :
+Palo Alto Username :
+entry
+
+
+
+Palo Alto Networks PAN-OS Settings
+64286
+Palo Alto Networks PAN-OS Settings[password]:Palo Alto Password :
+Palo Alto Password :
+password
+
+
+
+Palo Alto Networks PAN-OS Settings
+64286
+Palo Alto Networks PAN-OS Settings[entry]:Palo Alto Port :
+Palo Alto Port :
+entry
+443
+443
+
+Palo Alto Networks PAN-OS Settings
+64286
+Palo Alto Networks PAN-OS Settings[checkbox]:SSL :
+SSL :
+checkbox
+yes
+yes
+
+Palo Alto Networks PAN-OS Settings
+64286
+Palo Alto Networks PAN-OS Settings[checkbox]:Verify SSL Certificate :
+Verify SSL Certificate :
+checkbox
+no
+no
+
+Patch Report
+66334
+Patch Report[checkbox]:Display the superseded patches in the report
+Display the superseded patches in the report
+checkbox
+yes
+yes
+
+PCI DSS compliance
+33929
+PCI DSS compliance[checkbox]:Check for PCI-DSS compliance
+Check for PCI-DSS compliance
+checkbox
+no
+no
+
+Ping the remote host
+10180
+Ping the remote host[entry]:TCP ping destination port(s) :
+TCP ping destination port(s) :
+entry
+built-in
+built-in
+
+Ping the remote host
+10180
+Ping the remote host[checkbox]:Do an ARP ping
+Do an ARP ping
+checkbox
+yes
+yes
+
+Ping the remote host
+10180
+Ping the remote host[checkbox]:Do a TCP ping
+Do a TCP ping
+checkbox
+yes
+yes
+
+Ping the remote host
+10180
+Ping the remote host[checkbox]:Do an ICMP ping
+Do an ICMP ping
+checkbox
+yes
+yes
+
+Ping the remote host
+10180
+Ping the remote host[entry]:Number of retries (ICMP) :
+Number of retries (ICMP) :
+entry
+2
+2
+
+Ping the remote host
+10180
+Ping the remote host[checkbox]:Do an applicative UDP ping (DNS,RPC...)
+Do an applicative UDP ping (DNS,RPC...)
+checkbox
+no
+no
+
+Ping the remote host
+10180
+Ping the remote host[checkbox]:Make the dead hosts appear in the report
+Make the dead hosts appear in the report
+checkbox
+no
+no
+
+Ping the remote host
+10180
+Ping the remote host[checkbox]:Log live hosts in the report
+Log live hosts in the report
+checkbox
+no
+no
+
+Ping the remote host
+10180
+Ping the remote host[checkbox]:Test the local Nessus host
+Test the local Nessus host
+checkbox
+yes
+yes
+
+Ping the remote host
+10180
+Ping the remote host[checkbox]:Fast network discovery
+Fast network discovery
+checkbox
+no
+no
+
+Ping the remote host
+10180
+Ping the remote host[checkbox]:Interpret ICMP unreach from gateway
+Interpret ICMP unreach from gateway
+checkbox
+no
+no
+
+Port scanners settings
+33812
+Port scanners settings[checkbox]:Check open TCP ports found by local port enumerators
+Check open TCP ports found by local port enumerators
+checkbox
+no
+no
+
+Port scanners settings
+33812
+Port scanners settings[checkbox]:Only run network port scanners if local port enumeration failed
+Only run network port scanners if local port enumeration failed
+checkbox
+yes
+yes
+
+Rackspace Compliance Checks
+79356
+Rackspace Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Rackspace Compliance Checks
+79356
+Rackspace Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Rackspace Compliance Checks
+79356
+Rackspace Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Rackspace Compliance Checks
+79356
+Rackspace Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Rackspace Compliance Checks
+79356
+Rackspace Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Rackspace Settings
+79355
+Rackspace Settings[entry]:Username :
+Username :
+entry
+
+
+
+Rackspace Settings
+79355
+Rackspace Settings[password]:Password or API Key :
+Password or API Key :
+password
+
+
+
+Rackspace Settings
+79355
+Rackspace Settings[radio]:Authentication Method :
+Authentication Method :
+radio
+API-Key;Password
+API-Key;Password
+
+Rackspace Settings
+79355
+Rackspace Settings[checkbox]:Dallas-Fort Worth (DFW) :
+Dallas-Fort Worth (DFW) :
+checkbox
+yes
+yes
+
+Rackspace Settings
+79355
+Rackspace Settings[checkbox]:Chicago (ORD) :
+Chicago (ORD) :
+checkbox
+yes
+yes
+
+Rackspace Settings
+79355
+Rackspace Settings[checkbox]:Northern Virginia (IAD) :
+Northern Virginia (IAD) :
+checkbox
+yes
+yes
+
+Rackspace Settings
+79355
+Rackspace Settings[checkbox]:London (LON) :
+London (LON) :
+checkbox
+yes
+yes
+
+Rackspace Settings
+79355
+Rackspace Settings[checkbox]:Sydney (SYD) :
+Sydney (SYD) :
+checkbox
+yes
+yes
+
+Rackspace Settings
+79355
+Rackspace Settings[checkbox]:Hong Kong (HKG) :
+Hong Kong (HKG) :
+checkbox
+yes
+yes
+
+RHEV Settings
+77089
+RHEV Settings[entry]:Username :
+Username :
+entry
+
+
+
+RHEV Settings
+77089
+RHEV Settings[password]:Password :
+Password :
+password
+
+
+
+RHEV Settings
+77089
+RHEV Settings[entry]:Port :
+Port :
+entry
+443
+443
+
+RHEV Settings
+77089
+RHEV Settings[checkbox]:Verify SSL Certificate :
+Verify SSL Certificate :
+checkbox
+no
+no
+
+RHEV Compliance Checks
+77090
+RHEV Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+RHEV Compliance Checks
+77090
+RHEV Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+RHEV Compliance Checks
+77090
+RHEV Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+RHEV Compliance Checks
+77090
+RHEV Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+RHEV Compliance Checks
+77090
+RHEV Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Salesforce.com Settings
+76710
+Salesforce.com Settings[entry]:Username :
+Username :
+entry
+
+
+
+Salesforce.com Settings
+76710
+Salesforce.com Settings[password]:Password :
+Password :
+password
+
+
+
+Patch Management: Red Hat Satellite 6 Settings
+84232
+Patch Management: Red Hat Satellite 6 Settings[entry]:Satellite 6 Server :
+Satellite 6 Server :
+entry
+
+
+
+Patch Management: Red Hat Satellite 6 Settings
+84232
+Patch Management: Red Hat Satellite 6 Settings[entry]:Satellite 6 Port :
+Satellite 6 Port :
+entry
+443
+443
+
+Patch Management: Red Hat Satellite 6 Settings
+84232
+Patch Management: Red Hat Satellite 6 Settings[checkbox]:Satellite 6 Use SSL :
+Satellite 6 Use SSL :
+checkbox
+yes
+yes
+
+Patch Management: Red Hat Satellite 6 Settings
+84232
+Patch Management: Red Hat Satellite 6 Settings[checkbox]:Satellite 6 Verify Certificate :
+Satellite 6 Verify Certificate :
+checkbox
+yes
+yes
+
+Patch Management: Red Hat Satellite 6 Settings
+84232
+Patch Management: Red Hat Satellite 6 Settings[entry]:Satellite 6 Username :
+Satellite 6 Username :
+entry
+
+
+
+Patch Management: Red Hat Satellite 6 Settings
+84232
+Patch Management: Red Hat Satellite 6 Settings[password]:Satellite 6 Password :
+Satellite 6 Password :
+password
+
+
+
+Patch Management: Red Hat Satellite Server Settings
+84238
+Patch Management: Red Hat Satellite Server Settings[entry]:Red Hat Satellite server(s) [separated w/ semicolons] :
+Red Hat Satellite server(s) [separated w/ semicolons] :
+entry
+
+
+
+Patch Management: Red Hat Satellite Server Settings
+84238
+Patch Management: Red Hat Satellite Server Settings[entry]:Red Hat Satellite port(s) :
+Red Hat Satellite port(s) :
+entry
+443
+443
+
+Patch Management: Red Hat Satellite Server Settings
+84238
+Patch Management: Red Hat Satellite Server Settings[checkbox]:Verify SSL certificates :
+Verify SSL certificates :
+checkbox
+no
+no
+
+Patch Management: Red Hat Satellite Server Settings
+84238
+Patch Management: Red Hat Satellite Server Settings[entry]:Red Hat Satellite username(s) :
+Red Hat Satellite username(s) :
+entry
+
+
+
+Patch Management: Red Hat Satellite Server Settings
+84238
+Patch Management: Red Hat Satellite Server Settings[password]:Red Hat Satellite password(s) :
+Red Hat Satellite password(s) :
+password
+
+
+
+Salesforce.com Compliance Checks
+76711
+Salesforce.com Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Salesforce.com Compliance Checks
+76711
+Salesforce.com Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Salesforce.com Compliance Checks
+76711
+Salesforce.com Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Salesforce.com Compliance Checks
+76711
+Salesforce.com Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Salesforce.com Compliance Checks
+76711
+Salesforce.com Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+ICCP/COTP TSAP Addressing Weakness
+23812
+ICCP/COTP TSAP Addressing Weakness[entry]:Start COTP TSAP :
+Start COTP TSAP :
+entry
+8
+8
+
+ICCP/COTP TSAP Addressing Weakness
+23812
+ICCP/COTP TSAP Addressing Weakness[entry]:Stop COTP TSAP :
+Stop COTP TSAP :
+entry
+8
+8
+
+Modbus/TCP Coil Access
+23817
+Modbus/TCP Coil Access[entry]:Start reg :
+Start reg :
+entry
+0
+0
+
+Modbus/TCP Coil Access
+23817
+Modbus/TCP Coil Access[entry]:End reg :
+End reg :
+entry
+16
+16
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[file]:SCAP File (zip) #1 :
+SCAP File (zip) #1 :
+file
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[radio]:SCAP Version #1 :
+SCAP Version #1 :
+radio
+1.2;1.1;1.0
+1.2;1.1;1.0
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Data Stream ID (1.2 only) #1 :
+SCAP Data Stream ID (1.2 only) #1 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Benchmark ID #1 :
+SCAP Benchmark ID #1 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Profile ID #1 :
+SCAP Profile ID #1 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[radio]:OVAL Result Type #1 :
+OVAL Result Type #1 :
+radio
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[file]:SCAP File (zip) #2 :
+SCAP File (zip) #2 :
+file
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[radio]:SCAP Version #2 :
+SCAP Version #2 :
+radio
+1.2;1.1;1.0
+1.2;1.1;1.0
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Data Stream ID (1.2 only) #2 :
+SCAP Data Stream ID (1.2 only) #2 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Benchmark ID #2 :
+SCAP Benchmark ID #2 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Profile ID #2 :
+SCAP Profile ID #2 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[radio]:OVAL Result Type #2 :
+OVAL Result Type #2 :
+radio
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[file]:SCAP File (zip) #3 :
+SCAP File (zip) #3 :
+file
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[radio]:SCAP Version #3 :
+SCAP Version #3 :
+radio
+1.2;1.1;1.0
+1.2;1.1;1.0
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Data Stream ID (1.2 only) #3 :
+SCAP Data Stream ID (1.2 only) #3 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Benchmark ID #3 :
+SCAP Benchmark ID #3 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Profile ID #3 :
+SCAP Profile ID #3 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[radio]:OVAL Result Type #3 :
+OVAL Result Type #3 :
+radio
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[file]:SCAP File (zip) #4 :
+SCAP File (zip) #4 :
+file
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[radio]:SCAP Version #4 :
+SCAP Version #4 :
+radio
+1.2;1.1;1.0
+1.2;1.1;1.0
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Data Stream ID (1.2 only) #4 :
+SCAP Data Stream ID (1.2 only) #4 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Benchmark ID #4 :
+SCAP Benchmark ID #4 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Profile ID #4 :
+SCAP Profile ID #4 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[radio]:OVAL Result Type #4 :
+OVAL Result Type #4 :
+radio
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[file]:SCAP File (zip) #5 :
+SCAP File (zip) #5 :
+file
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[radio]:SCAP Version #5 :
+SCAP Version #5 :
+radio
+1.2;1.1;1.0
+1.2;1.1;1.0
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Data Stream ID (1.2 only) #5 :
+SCAP Data Stream ID (1.2 only) #5 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Benchmark ID #5 :
+SCAP Benchmark ID #5 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[entry]:SCAP Profile ID #5 :
+SCAP Profile ID #5 :
+entry
+
+
+
+SCAP Linux Compliance Checks
+66757
+SCAP Linux Compliance Checks[radio]:OVAL Result Type #5 :
+OVAL Result Type #5 :
+radio
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[file]:SCAP File (zip) #1 :
+SCAP File (zip) #1 :
+file
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[radio]:SCAP Version #1 :
+SCAP Version #1 :
+radio
+1.2;1.1;1.0
+1.2;1.1;1.0
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Data Stream ID (1.2 only) #1 :
+SCAP Data Stream ID (1.2 only) #1 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Benchmark ID #1 :
+SCAP Benchmark ID #1 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Profile ID #1 :
+SCAP Profile ID #1 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[radio]:OVAL Result Type #1 :
+OVAL Result Type #1 :
+radio
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[file]:SCAP File (zip) #2 :
+SCAP File (zip) #2 :
+file
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[radio]:SCAP Version #2 :
+SCAP Version #2 :
+radio
+1.2;1.1;1.0
+1.2;1.1;1.0
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Data Stream ID (1.2 only) #2 :
+SCAP Data Stream ID (1.2 only) #2 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Benchmark ID #2 :
+SCAP Benchmark ID #2 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Profile ID #2 :
+SCAP Profile ID #2 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[radio]:OVAL Result Type #2 :
+OVAL Result Type #2 :
+radio
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[file]:SCAP File (zip) #3 :
+SCAP File (zip) #3 :
+file
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[radio]:SCAP Version #3 :
+SCAP Version #3 :
+radio
+1.2;1.1;1.0
+1.2;1.1;1.0
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Data Stream ID (1.2 only) #3 :
+SCAP Data Stream ID (1.2 only) #3 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Benchmark ID #3 :
+SCAP Benchmark ID #3 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Profile ID #3 :
+SCAP Profile ID #3 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[radio]:OVAL Result Type #3 :
+OVAL Result Type #3 :
+radio
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[file]:SCAP File (zip) #4 :
+SCAP File (zip) #4 :
+file
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[radio]:SCAP Version #4 :
+SCAP Version #4 :
+radio
+1.2;1.1;1.0
+1.2;1.1;1.0
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Data Stream ID (1.2 only) #4 :
+SCAP Data Stream ID (1.2 only) #4 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Benchmark ID #4 :
+SCAP Benchmark ID #4 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Profile ID #4 :
+SCAP Profile ID #4 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[radio]:OVAL Result Type #4 :
+OVAL Result Type #4 :
+radio
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[file]:SCAP File (zip) #5 :
+SCAP File (zip) #5 :
+file
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[radio]:SCAP Version #5 :
+SCAP Version #5 :
+radio
+1.2;1.1;1.0
+1.2;1.1;1.0
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Data Stream ID (1.2 only) #5 :
+SCAP Data Stream ID (1.2 only) #5 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Benchmark ID #5 :
+SCAP Benchmark ID #5 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[entry]:SCAP Profile ID #5 :
+SCAP Profile ID #5 :
+entry
+
+
+
+SCAP Windows Compliance Checks
+66756
+SCAP Windows Compliance Checks[radio]:OVAL Result Type #5 :
+OVAL Result Type #5 :
+radio
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+Full results w/ system characteristics;Full results w/o system characteristics;Thin results
+
+Patch Management: SCCM Server Settings
+57029
+Patch Management: SCCM Server Settings[entry]:SCCM Server :
+SCCM Server :
+entry
+
+
+
+Patch Management: SCCM Server Settings
+57029
+Patch Management: SCCM Server Settings[entry]:SCCM Domain :
+SCCM Domain :
+entry
+
+
+
+Patch Management: SCCM Server Settings
+57029
+Patch Management: SCCM Server Settings[entry]:SCCM Username :
+SCCM Username :
+entry
+
+
+
+Patch Management: SCCM Server Settings
+57029
+Patch Management: SCCM Server Settings[password]:SCCM Password :
+SCCM Password :
+password
+
+
+
+SMB Scope
+10917
+SMB Scope[checkbox]:Request information about the domain
+Request information about the domain
+checkbox
+yes
+yes
+
+SMB Use Host SID to Enumerate Local Users
+10860
+SMB Use Host SID to Enumerate Local Users[entry]:Start UID :
+Start UID :
+entry
+1000
+1000
+
+SMB Use Host SID to Enumerate Local Users
+10860
+SMB Use Host SID to Enumerate Local Users[entry]:End UID :
+End UID :
+entry
+1200
+1200
+
+SMB Use Domain SID to Enumerate Users
+10399
+SMB Use Domain SID to Enumerate Users[entry]:Start UID :
+Start UID :
+entry
+1000
+1000
+
+SMB Use Domain SID to Enumerate Users
+10399
+SMB Use Domain SID to Enumerate Users[entry]:End UID :
+End UID :
+entry
+1200
+1200
+
+SMTP settings
+11038
+SMTP settings[entry]:Third party domain :
+Third party domain :
+entry
+example.edu
+example.edu
+
+SMTP settings
+11038
+SMTP settings[entry]:From address :
+From address :
+entry
+nobody@example.edu
+nobody@example.edu
+
+SMTP settings
+11038
+SMTP settings[entry]:To address :
+To address :
+entry
+postmaster@[AUTO_REPLACED_IP]
+postmaster@[AUTO_REPLACED_IP]
+
+SNMP settings
+19762
+SNMP settings[entry]:Community name :
+Community name :
+entry
+public
+public
+
+SNMP settings
+19762
+SNMP settings[entry]:Community name (1) :
+Community name (1) :
+entry
+
+
+
+SNMP settings
+19762
+SNMP settings[entry]:Community name (2) :
+Community name (2) :
+entry
+
+
+
+SNMP settings
+19762
+SNMP settings[entry]:Community name (3) :
+Community name (3) :
+entry
+
+
+
+SNMP settings
+19762
+SNMP settings[entry]:UDP port :
+UDP port :
+entry
+161
+161
+
+SNMP settings
+19762
+SNMP settings[entry]:Additional UDP port (1) :
+Additional UDP port (1) :
+entry
+
+
+
+SNMP settings
+19762
+SNMP settings[entry]:Additional UDP port (2) :
+Additional UDP port (2) :
+entry
+
+
+
+SNMP settings
+19762
+SNMP settings[entry]:Additional UDP port (3) :
+Additional UDP port (3) :
+entry
+
+
+
+SNMP settings
+19762
+SNMP settings[entry]:SNMPv3 user name :
+SNMPv3 user name :
+entry
+
+
+
+SNMP settings
+19762
+SNMP settings[password]:SNMPv3 authentication password :
+SNMPv3 authentication password :
+password
+
+
+
+SNMP settings
+19762
+SNMP settings[radio]:SNMPv3 authentication algorithm :
+SNMPv3 authentication algorithm :
+radio
+MD5;SHA1
+MD5;SHA1
+
+SNMP settings
+19762
+SNMP settings[password]:SNMPv3 privacy password :
+SNMPv3 privacy password :
+password
+
+
+
+SNMP settings
+19762
+SNMP settings[radio]:SNMPv3 privacy algorithm :
+SNMPv3 privacy algorithm :
+radio
+AES;DES
+AES;DES
+
+SonicWALL SonicOS Compliance Checks
+71955
+SonicWALL SonicOS Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+SonicWALL SonicOS Compliance Checks
+71955
+SonicWALL SonicOS Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+SonicWALL SonicOS Compliance Checks
+71955
+SonicWALL SonicOS Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+SonicWALL SonicOS Compliance Checks
+71955
+SonicWALL SonicOS Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+SonicWALL SonicOS Compliance Checks
+71955
+SonicWALL SonicOS Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+SonicWALL SonicOS Compliance Checks
+71955
+SonicWALL SonicOS Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+SSH settings
+14273
+SSH settings[entry]:SSH user name :
+SSH user name :
+entry
+root
+root
+
+SSH settings
+14273
+SSH settings[password]:SSH password (unsafe!) :
+SSH password (unsafe!) :
+password
+
+
+
+SSH settings
+14273
+SSH settings[file]:SSH public key to use :
+SSH public key to use :
+file
+
+
+
+SSH settings
+14273
+SSH settings[file]:SSH private key to use :
+SSH private key to use :
+file
+
+
+
+SSH settings
+14273
+SSH settings[password]:Passphrase for SSH key :
+Passphrase for SSH key :
+password
+
+
+
+SSH settings
+14273
+SSH settings[radio]:Elevate privileges with :
+Elevate privileges with :
+radio
+Nothing;sudo;su;su+sudo;dzdo;pbrun;Cisco 'enable'
+Nothing;sudo;su;su+sudo;dzdo;pbrun;Cisco 'enable'
+
+SSH settings
+14273
+SSH settings[entry]:Privilege elevation binary path (directory) :
+Privilege elevation binary path (directory) :
+entry
+
+
+
+SSH settings
+14273
+SSH settings[entry]:su login :
+su login :
+entry
+
+
+
+SSH settings
+14273
+SSH settings[entry]:Escalation account :
+Escalation account :
+entry
+root
+root
+
+SSH settings
+14273
+SSH settings[password]:Escalation password :
+Escalation password :
+password
+
+
+
+SSH settings
+14273
+SSH settings[file]:SSH known_hosts file :
+SSH known_hosts file :
+file
+
+
+
+SSH settings
+14273
+SSH settings[entry]:Preferred SSH port :
+Preferred SSH port :
+entry
+22
+22
+
+SSH settings
+14273
+SSH settings[entry]:Client version :
+Client version :
+entry
+OpenSSH_5.0
+OpenSSH_5.0
+
+SSH settings
+14273
+SSH settings[entry]:Additional SSH user name (1) :
+Additional SSH user name (1) :
+entry
+
+
+
+SSH settings
+14273
+SSH settings[password]:Additional SSH password (1) :
+Additional SSH password (1) :
+password
+
+
+
+SSH settings
+14273
+SSH settings[entry]:Additional SSH user name (2) :
+Additional SSH user name (2) :
+entry
+
+
+
+SSH settings
+14273
+SSH settings[password]:Additional SSH password (2) :
+Additional SSH password (2) :
+password
+
+
+
+SSH settings
+14273
+SSH settings[entry]:Additional SSH user name (3) :
+Additional SSH user name (3) :
+entry
+
+
+
+SSH settings
+14273
+SSH settings[password]:Additional SSH password (3) :
+Additional SSH password (3) :
+password
+
+
+
+SSH settings
+14273
+SSH settings[entry]:Additional SSH user name (4) :
+Additional SSH user name (4) :
+entry
+
+
+
+SSH settings
+14273
+SSH settings[password]:Additional SSH password (4) :
+Additional SSH password (4) :
+password
+
+
+
+SSH settings
+14273
+SSH settings[entry]:Additional SSH user name (5) :
+Additional SSH user name (5) :
+entry
+
+
+
+SSH settings
+14273
+SSH settings[password]:Additional SSH password (5) :
+Additional SSH password (5) :
+password
+
+
+
+SSL Certificate Expiry
+15901
+SSL Certificate Expiry[entry]:Identify certificates that expire within x days
+Identify certificates that expire within x days
+entry
+60
+60
+
+SMB Registry : Start the Registry Service during the scan
+35703
+SMB Registry : Start the Registry Service during the scan[checkbox]:Start the registry service during the scan
+Start the registry service during the scan
+checkbox
+no
+no
+
+SMB Registry : Start the Registry Service during the scan
+35703
+SMB Registry : Start the Registry Service during the scan[checkbox]:Enable administrative shares during the scan
+Enable administrative shares during the scan
+checkbox
+no
+no
+
+Patch Management: Symantec Altiris Settings
+78013
+Patch Management: Symantec Altiris Settings[entry]:Symantec Altiris Database Server :
+Symantec Altiris Database Server :
+entry
+
+
+
+Patch Management: Symantec Altiris Settings
+78013
+Patch Management: Symantec Altiris Settings[entry]:Symantec Altiris Database Port :
+Symantec Altiris Database Port :
+entry
+5690
+5690
+
+Patch Management: Symantec Altiris Settings
+78013
+Patch Management: Symantec Altiris Settings[entry]:Symantec Altiris Database Name :
+Symantec Altiris Database Name :
+entry
+Symantec_CMDB
+Symantec_CMDB
+
+Patch Management: Symantec Altiris Settings
+78013
+Patch Management: Symantec Altiris Settings[checkbox]:Symantec Altiris Use Windows Credentials :
+Symantec Altiris Use Windows Credentials :
+checkbox
+no
+no
+
+Patch Management: Symantec Altiris Settings
+78013
+Patch Management: Symantec Altiris Settings[entry]:Symantec Altiris Database Username :
+Symantec Altiris Database Username :
+entry
+
+
+
+Patch Management: Symantec Altiris Settings
+78013
+Patch Management: Symantec Altiris Settings[password]:Symantec Altiris Database Password :
+Symantec Altiris Database Password :
+password
+
+
+
+Unix Compliance Checks
+21157
+Unix Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Unix Compliance Checks
+21157
+Unix Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Unix Compliance Checks
+21157
+Unix Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Unix Compliance Checks
+21157
+Unix Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Unix Compliance Checks
+21157
+Unix Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+Unix File Contents Compliance Checks
+72095
+Unix File Contents Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+Unix File Contents Compliance Checks
+72095
+Unix File Contents Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+Unix File Contents Compliance Checks
+72095
+Unix File Contents Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+Unix File Contents Compliance Checks
+72095
+Unix File Contents Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+Unix File Contents Compliance Checks
+72095
+Unix File Contents Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+VMware vCenter/vSphere Compliance Checks
+64455
+VMware vCenter/vSphere Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+VMware vCenter/vSphere Compliance Checks
+64455
+VMware vCenter/vSphere Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+VMware vCenter/vSphere Compliance Checks
+64455
+VMware vCenter/vSphere Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+VMware vCenter/vSphere Compliance Checks
+64455
+VMware vCenter/vSphere Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+VMware vCenter/vSphere Compliance Checks
+64455
+VMware vCenter/vSphere Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+VMware SOAP API Settings
+57395
+VMware SOAP API Settings[entry]:VMware user name :
+VMware user name :
+entry
+
+
+
+VMware SOAP API Settings
+57395
+VMware SOAP API Settings[password]:VMware password :
+VMware password :
+password
+
+
+
+VMware SOAP API Settings
+57395
+VMware SOAP API Settings[checkbox]:Ignore SSL Certificate :
+Ignore SSL Certificate :
+checkbox
+no
+no
+
+VMware vCenter SOAP API Settings
+63060
+VMware vCenter SOAP API Settings[entry]:VMware vCenter host :
+VMware vCenter host :
+entry
+
+
+
+VMware vCenter SOAP API Settings
+63060
+VMware vCenter SOAP API Settings[entry]:VMware vCenter port :
+VMware vCenter port :
+entry
+443
+443
+
+VMware vCenter SOAP API Settings
+63060
+VMware vCenter SOAP API Settings[entry]:VMware vCenter user name :
+VMware vCenter user name :
+entry
+
+
+
+VMware vCenter SOAP API Settings
+63060
+VMware vCenter SOAP API Settings[password]:VMware vCenter password :
+VMware vCenter password :
+password
+
+
+
+VMware vCenter SOAP API Settings
+63060
+VMware vCenter SOAP API Settings[checkbox]:SSL :
+SSL :
+checkbox
+yes
+yes
+
+VMware vCenter SOAP API Settings
+63060
+VMware vCenter SOAP API Settings[checkbox]:Verify SSL Certificate :
+Verify SSL Certificate :
+checkbox
+no
+no
+
+WatchGuard Compliance Checks
+86269
+WatchGuard Compliance Checks[file]:Policy file #1 :
+Policy file #1 :
+file
+
+
+
+WatchGuard Compliance Checks
+86269
+WatchGuard Compliance Checks[file]:Policy file #2 :
+Policy file #2 :
+file
+
+
+
+WatchGuard Compliance Checks
+86269
+WatchGuard Compliance Checks[file]:Policy file #3 :
+Policy file #3 :
+file
+
+
+
+WatchGuard Compliance Checks
+86269
+WatchGuard Compliance Checks[file]:Policy file #4 :
+Policy file #4 :
+file
+
+
+
+WatchGuard Compliance Checks
+86269
+WatchGuard Compliance Checks[file]:Policy file #5 :
+Policy file #5 :
+file
+
+
+
+WatchGuard Compliance Checks
+86269
+WatchGuard Compliance Checks[file]:Offline config file (.txt or .zip) :
+Offline config file (.txt or .zip) :
+file
+
+
+
+Web Application Tests Settings
+39471
+Web Application Tests Settings[checkbox]:Enable web applications tests
+Enable web applications tests
+checkbox
+no
+no
+
+Web Application Tests Settings
+39471
+Web Application Tests Settings[entry]:Maximum run time (min) :
+Maximum run time (min) :
+entry
+60
+60
+
+Web Application Tests Settings
+39471
+Web Application Tests Settings[checkbox]:Try all HTTP methods
+Try all HTTP methods
+checkbox
+no
+no
+
+Web Application Tests Settings
+39471
+Web Application Tests Settings[radio]:Combinations of arguments values
+Combinations of arguments values
+radio
+one value;some pairs;all pairs (slower but efficient);some combinations;all combinations (extremely slow)
+one value;some pairs;all pairs (slower but efficient);some combinations;all combinations (extremely slow)
+
+Web Application Tests Settings
+39471
+Web Application Tests Settings[checkbox]:HTTP Parameter Pollution
+HTTP Parameter Pollution
+checkbox
+no
+no
+
+Web Application Tests Settings
+39471
+Web Application Tests Settings[radio]:Stop at first flaw
+Stop at first flaw
+radio
+per CGI;per port (quicker);per parameter (slow);look for all flaws (slower)
+per CGI;per port (quicker);per parameter (slow);look for all flaws (slower)
+
+Web Application Tests Settings
+39471
+Web Application Tests Settings[checkbox]:Test embedded web servers
+Test embedded web servers
+checkbox
+no
+no
+
+Web Application Tests Settings
+39471
+Web Application Tests Settings[entry]:URL for Remote File Inclusion :
+URL for Remote File Inclusion :
+entry
+http://rfi.nessus.org/rfi.txt
+http://rfi.nessus.org/rfi.txt
+
+Web mirroring
+10662
+Web mirroring[entry]:Number of pages to mirror :
+Number of pages to mirror :
+entry
+1000
+1000
+
+Web mirroring
+10662
+Web mirroring[entry]:Maximum depth :
+Maximum depth :
+entry
+6
+6
+
+Web mirroring
+10662
+Web mirroring[entry]:Start page :
+Start page :
+entry
+/
+/
+
+Web mirroring
+10662
+Web mirroring[entry]:Excluded items regex :
+Excluded items regex :
+entry
+/server_privileges\.php|logout
+/server_privileges\.php|logout
+
+Web mirroring
+10662
+Web mirroring[checkbox]:Follow dynamic pages :
+Follow dynamic pages :
+checkbox
+no
+no
+
+Wake-on-LAN
+52616
+Wake-on-LAN[file]:List of MAC addresses for Wake-on-LAN:
+List of MAC addresses for Wake-on-LAN:
+file
+
+
+
+Wake-on-LAN
+52616
+Wake-on-LAN[entry]:Time to wait (in minutes) for the systems to boot:
+Time to wait (in minutes) for the systems to boot:
+entry
+5
+5
+
+Malicious Process Detection
+59275
+Malicious Process Detection[file]:Additional MD5 hashes (optional) :
+Additional MD5 hashes (optional) :
+file
+
+
+
+Malicious Process Detection
+59275
+Malicious Process Detection[file]:Known good MD5 hashes (optional) :
+Known good MD5 hashes (optional) :
+file
+
+
+
+Malicious Process Detection
+59275
+Malicious Process Detection[file]:Yara rules file :
+Yara rules file :
+file
+
+
+
+Malicious Process Detection
+59275
+Malicious Process Detection[checkbox]:disable_dns_resolution
+disable_dns_resolution
+checkbox
+no
+no
+
+Malicious Process Detection
+59275
+Malicious Process Detection[checkbox]:enable_malware_scanning
+enable_malware_scanning
+checkbox
+no
+no
+
+Patch Management: WSUS Server Settings
+57031
+Patch Management: WSUS Server Settings[entry]:WSUS Server :
+WSUS Server :
+entry
+
+
+
+Patch Management: WSUS Server Settings
+57031
+Patch Management: WSUS Server Settings[entry]:WSUS Port :
+WSUS Port :
+entry
+
+
+
+Patch Management: WSUS Server Settings
+57031
+Patch Management: WSUS Server Settings[entry]:WSUS Username :
+WSUS Username :
+entry
+
+
+
+Patch Management: WSUS Server Settings
+57031
+Patch Management: WSUS Server Settings[password]:WSUS Password :
+WSUS Password :
+password
+
+
+
+Patch Management: WSUS Server Settings
+57031
+Patch Management: WSUS Server Settings[checkbox]:SSL :
+SSL :
+checkbox
+no
+no
+
+Patch Management: WSUS Server Settings
+57031
+Patch Management: WSUS Server Settings[checkbox]:Verify SSL Certificate :
+Verify SSL Certificate :
+checkbox
+no
+no
+
+
+
+Port scanners
+mixed
+
+Default Unix Accounts
+enabled
+
+General
+enabled
+
+RPC
+enabled
+
+Palo Alto Local Security Checks
+enabled
+
+Junos Local Security Checks
+enabled
+
+Settings
+enabled
+
+Gentoo Local Security Checks
+enabled
+
+Amazon Linux Local Security Checks
+enabled
+
+Mobile Devices
+enabled
+
+Windows : User management
+enabled
+
+Red Hat Local Security Checks
+enabled
+
+CentOS Local Security Checks
+enabled
+
+CISCO
+enabled
+
+Scientific Linux Local Security Checks
+enabled
+
+AIX Local Security Checks
+enabled
+
+Ubuntu Local Security Checks
+enabled
+
+Firewalls
+enabled
+
+Service detection
+enabled
+
+Netware
+enabled
+
+MacOS X Local Security Checks
+enabled
+
+Gain a shell remotely
+enabled
+
+Misc.
+enabled
+
+Brute force attacks
+enabled
+
+Databases
+enabled
+
+HP-UX Local Security Checks
+enabled
+
+SMTP problems
+enabled
+
+OracleVM Local Security Checks
+enabled
+
+Oracle Linux Local Security Checks
+enabled
+
+Windows : Microsoft Bulletins
+enabled
+
+SCADA
+enabled
+
+Policy Compliance
+enabled
+
+CGI abuses
+enabled
+
+Offsec Plugins
+enabled
+
+Mandriva Local Security Checks
+enabled
+
+Offsec Plugins Disabled
+enabled
+
+Virtuozzo Local Security Checks
+enabled
+
+F5 Networks Local Security Checks
+enabled
+
+Huawei Local Security Checks
+enabled
+
+FTP
+enabled
+
+SNMP
+enabled
+
+Incident Response
+enabled
+
+Windows
+enabled
+
+SuSE Local Security Checks
+enabled
+
+DNS
+enabled
+
+Fedora Local Security Checks
+enabled
+
+Peer-To-Peer File Sharing
+enabled
+
+Backdoors
+enabled
+
+Debian Local Security Checks
+enabled
+
+VMware ESX Local Security Checks
+enabled
+
+Denial of Service
+enabled
+
+Solaris Local Security Checks
+enabled
+
+FreeBSD Local Security Checks
+enabled
+
+Slackware Local Security Checks
+enabled
+
+Web Servers
+enabled
+
+CGI abuses : XSS
+enabled
+
+
+87413
+Host Tagging
+Settings
+enabled
+
+
+
+
+
+Wed Apr 4 15:00:09 2018
+1522846809
+Advanced Scan
+46
+CVE-2018-5750, CVE-2017-8824, CVE-2017-5754, CVE-2017-5715, CVE-2017-17864, CVE-2017-17863, CVE-2017-17862, CVE-2017-17807, CVE-2017-17806, CVE-2017-17805, CVE-2017-17741, CVE-2017-17712, CVE-2017-17558, CVE-2017-17450, CVE-2017-17449, CVE-2017-17448, CVE-2017-16995, CVE-2017-16644, CVE-2017-16538, CVE-2017-13166, CVE-2017-1000410, CVE-2017-1000407
+22
+Debian DSA-4120-1 : linux - security update (Meltdown) (Spectre): Upgrade the linux packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 4.9.82-1+deb9u2.
+CVE-2017-14633, CVE-2017-14632
+2
+Debian DSA-4113-1 : libvorbis - security update: Upgrade the libvorbis packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 1.3.5-4+deb9u1.
+CVE-2018-6789
+1
+Debian DSA-4110-1 : exim4 - security update: Upgrade the exim4 packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 4.84.2-2+deb8u5.
+
+For the stable distribution (stretch), this problem has been fixed in version 4.89-2+deb9u3.
+CVE-2018-6003, CVE-2017-10790
+2
+Debian DSA-4106-1 : libtasn1-6 - security update: Upgrade the libtasn1-6 packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 4.10-1.1+deb9u1.
+0
+Debian DSA-4100-1 : tiff - security update: Upgrade the tiff packages.
+
+For the oldstable distribution (jessie), these problems have been fixed in version 4.0.3-12.3+deb8u5.
+
+For the stable distribution (stretch), these problems have been fixed in version 4.0.8-2+deb9u2.
+CVE-2018-1000007, CVE-2018-1000005
+2
+Debian DSA-4098-1 : curl - security update: Upgrade the curl packages.
+
+For the oldstable distribution (jessie), these problems have been fixed in version 7.38.0-4+deb8u9.
+
+For the stable distribution (stretch), these problems have been fixed in version 7.52.1-5+deb9u4.
+CVE-2017-3145
+1
+Debian DSA-4089-1 : bind9 - security update: Upgrade the bind9 packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 1:9.9.5.dfsg-9+deb8u15.
+
+For the stable distribution (stretch), this problem has been fixed in version 1:9.10.3.dfsg.P4-12.3+deb9u4.
+CVE-2017-1000422
+1
+Debian DSA-4088-1 : gdk-pixbuf - security update: Upgrade the gdk-pixbuf packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 2.31.1-2+deb8u7.
+
+For the stable distribution (stretch), this problem has been fixed in version 2.36.5-2+deb9u2. In addition this update provides fixes for CVE-2017-6312, CVE-2017-6313 and CVE-2017-6314.
+CVE-2017-15412
+1
+Debian DSA-4086-1 : libxml2 - security update: Upgrade the libxml2 packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 2.9.1+dfsg1-5+deb8u6.
+
+For the stable distribution (stretch), this problem has been fixed in version 2.9.4+dfsg1-2.2+deb9u2.
+CVE-2017-17512
+1
+Debian DSA-4071-1 : sensible-utils - security update: Upgrade the sensible-utils packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 0.0.9+deb8u1.
+
+For the stable distribution (stretch), this problem has been fixed in version 0.0.9+deb9u1.
+CVE-2017-17434, CVE-2017-17433, CVE-2017-16548
+3
+Debian DSA-4068-1 : rsync - security update: Upgrade the rsync packages.
+
+For the oldstable distribution (jessie), these problems have been fixed in version 3.1.1-3+deb8u1.
+
+For the stable distribution (stretch), these problems have been fixed in version 3.1.2-1+deb9u1.
+CVE-2017-3738, CVE-2017-3737
+2
+Debian DSA-4065-1 : openssl1.0 - security update: Upgrade the openssl1.0 packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 1.0.2l-2+deb9u2.
+CVE-2017-16612
+1
+Debian DSA-4059-1 : libxcursor - security update: Upgrade the libxcursor packages.
+
+For the oldstable distribution (jessie), these problems have been fixed in version 1:1.1.14-1+deb8u1.
+
+For the stable distribution (stretch), these problems have been fixed in version 1:1.1.14-1+deb9u1.
+cpe:/o:linux:linux_kernel
+linux
+SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u1
+cpe:/a:openbsd:openssh:7.4
+cpe:/o:debian:debian_linux:9.2
+general-purpose
+Linux Kernel 4.9.0-4-amd64 on Debian 9.2
+74073142-C0C0-67BE-AF1A-47383DD3DBE7
+00:50:56:b1:64:78
+abcvy031
+80789c282ddd46cd82a86dcf015fc865
+true
+local
+127.0.0.1
+localhost
+Wed Apr 4 14:28:53 2018
+
+
+unix
+By logging into the remote host with the supplied credentials, Nessus was able to obtain the name of the process listening on the remote port.
+
+Note that the method used by this plugin only works for hosts running Linux or AIX.
+process_on_port.nasl
+2017/08/28
+Remote listeners enumeration (Linux / AIX)
+2007/05/16
+local
+None
+1.20
+n/a
+Using the supplied credentials, it was possible to identify the process listening on the remote port.
+
+ Process ID : 1196
+ Executable : /root/.rbenv/versions/2.4.3/bin/ruby
+ Command line : msfrpcd
+
+
+
+unix
+By logging into the remote host with the supplied credentials, Nessus was able to obtain the name of the process listening on the remote port.
+
+Note that the method used by this plugin only works for hosts running Linux or AIX.
+process_on_port.nasl
+2017/08/28
+Remote listeners enumeration (Linux / AIX)
+2007/05/16
+local
+None
+1.20
+n/a
+Using the supplied credentials, it was possible to identify the process listening on the remote port.
+
+ Process ID : 680
+ Executable : /var/lib/udf/.rbenv/versions/2.5.0/bin/ruby
+ Command line : ruby /var/lib/udf/url_dup_filter/lib/url_dup_filter.rb
+
+
+
+unix
+By logging into the remote host with the supplied credentials, Nessus was able to obtain the name of the process listening on the remote port.
+
+Note that the method used by this plugin only works for hosts running Linux or AIX.
+process_on_port.nasl
+2017/08/28
+Remote listeners enumeration (Linux / AIX)
+2007/05/16
+local
+None
+1.20
+n/a
+Using the supplied credentials, it was possible to identify the process listening on the remote port.
+
+ Process ID : 686
+ Executable : /opt/nessus/sbin/nessusd
+ Command line : nessusd -q
+
+
+
+unix
+By logging into the remote host with the supplied credentials, Nessus was able to obtain the name of the process listening on the remote port.
+
+Note that the method used by this plugin only works for hosts running Linux or AIX.
+process_on_port.nasl
+2017/08/28
+Remote listeners enumeration (Linux / AIX)
+2007/05/16
+local
+None
+1.20
+n/a
+Using the supplied credentials, it was possible to identify the process listening on the remote port.
+
+ Process ID : 695
+ Executable : /usr/lib/postgresql/9.6/bin/postgres
+ Command line : /usr/lib/postgresql/9.6/bin/postgres -D /var/lib/postgresql/9.6/main -c config_file=/etc/postgresql/9.6/main/postgresql.conf
+
+
+
+cpe:/a:postgresql:postgresql
+The remote service is a PostgreSQL database server, or a derivative such as EnterpriseDB.
+postgresql_detect.nasl
+2013/02/14
+PostgreSQL Server Detection
+2007/09/14
+remote
+None
+$Revision: 1.14 $
+http://www.postgresql.org/
+Limit incoming traffic to this port if desired.
+A database service is listening on the remote host.
+
+
+unix
+By logging into the remote host with the supplied credentials, Nessus was able to obtain the name of the process listening on the remote port.
+
+Note that the method used by this plugin only works for hosts running Linux or AIX.
+process_on_port.nasl
+2017/08/28
+Remote listeners enumeration (Linux / AIX)
+2007/05/16
+local
+None
+1.20
+n/a
+Using the supplied credentials, it was possible to identify the process listening on the remote port.
+
+ Process ID : 1105
+ Executable : /usr/sbin/exim4
+ Command line : /usr/sbin/exim4 -bd -q30m
+
+
+
+The remote host is running a mail (SMTP) server on this port.
+
+Since SMTP servers are the targets of spammers, it is recommended you disable it if you do not use it.
+smtpserver_detect.nasl
+2011/03/11
+SMTP Server Detection
+1999/10/12
+remote
+None
+$Revision: 1.54 $
+Disable this service if you do not use it, or filter incoming traffic to this port.
+An SMTP server is listening on the remote port.
+
+Remote SMTP server banner :
+
+220 abcvy031.intranet.example.org ESMTP Exim 4.89 Wed, 04 Apr 2018 14:29:14 +0200
+
+
+
+Security patches may have been 'backported' to the remote SSH server without changing its version number.
+
+Banner-based checks have been disabled to avoid false positives.
+
+Note that this test is informational only and does not denote any security problem.
+backported_security_patches_ssh.nasl
+2015/07/07
+Backported Security Patch Detection (SSH)
+2009/06/25
+remote
+None
+$Revision: 1.9 $
+https://access.redhat.com/security/updates/backporting/?sc_cid=3093
+n/a
+Security patches are backported.
+
+Local checks have been enabled.
+
+
+
+unix
+By logging into the remote host with the supplied credentials, Nessus was able to obtain the name of the process listening on the remote port.
+
+Note that the method used by this plugin only works for hosts running Linux or AIX.
+process_on_port.nasl
+2017/08/28
+Remote listeners enumeration (Linux / AIX)
+2007/05/16
+local
+None
+1.20
+n/a
+Using the supplied credentials, it was possible to identify the process listening on the remote port.
+
+ Process ID : 675
+ Executable : /usr/sbin/sshd
+ Command line : /usr/sbin/sshd -D
+
+
+
+This plugin determines the versions of the SSH protocol supported by the remote SSH daemon.
+ssh_proto_version.nasl
+2017/05/30
+SSH Protocol Versions Supported
+2002/03/06
+remote
+None
+$Revision: 1.35 $
+n/a
+A SSH server is running on the remote host.
+The remote SSH daemon supports the following versions of the
+SSH protocol :
+
+ - 1.99
+ - 2.0
+
+
+
+The account shown below on the remote host has an easily guessable password. An attacker may leverage this issue to gain total control of the affected system.
+true
+Exploits are available
+offsec_ssh_account_check.nasl
+SSH Account Brute-Force
+2018/02/26
+remote
+None
+$Revision: 1.22 $
+Change the password for this account or disable it.
+An account on the remote host uses a known password.
+
+It was possible to gain access using the following credentials:
+
+Following error messages occurred:
+
+[ERROR] target ssh://127.0.0.1:22/ does not support password authentication.
+
+
+This script detects which algorithms and languages are supported by the remote service for encrypting communications.
+ssh_supported_algorithms.nasl
+2017/08/28
+SSH Algorithms and Languages Supported
+2013/10/28
+remote
+None
+$Revision: 1.6 $
+n/a
+An SSH server is listening on this port.
+
+Nessus negotiated the following encryption algorithm with the server :
+
+The server supports the following options for kex_algorithms :
+
+ curve25519-sha256
+ curve25519-sha256@libssh.org
+ diffie-hellman-group-exchange-sha256
+ diffie-hellman-group14-sha1
+ diffie-hellman-group14-sha256
+ diffie-hellman-group16-sha512
+ diffie-hellman-group18-sha512
+ ecdh-sha2-nistp256
+ ecdh-sha2-nistp384
+ ecdh-sha2-nistp521
+
+The server supports the following options for server_host_key_algorithms :
+
+ ecdsa-sha2-nistp256
+ rsa-sha2-256
+ rsa-sha2-512
+ ssh-ed25519
+ ssh-rsa
+
+The server supports the following options for encryption_algorithms_client_to_server :
+
+ aes128-ctr
+ aes128-gcm@openssh.com
+ aes192-ctr
+ aes256-ctr
+ aes256-gcm@openssh.com
+ chacha20-poly1305@openssh.com
+
+The server supports the following options for encryption_algorithms_server_to_client :
+
+ aes128-ctr
+ aes128-gcm@openssh.com
+ aes192-ctr
+ aes256-ctr
+ aes256-gcm@openssh.com
+ chacha20-poly1305@openssh.com
+
+The server supports the following options for mac_algorithms_client_to_server :
+
+ hmac-sha1
+ hmac-sha1-etm@openssh.com
+ hmac-sha2-256
+ hmac-sha2-256-etm@openssh.com
+ hmac-sha2-512
+ hmac-sha2-512-etm@openssh.com
+ umac-128-etm@openssh.com
+ umac-128@openssh.com
+ umac-64-etm@openssh.com
+ umac-64@openssh.com
+
+The server supports the following options for mac_algorithms_server_to_client :
+
+ hmac-sha1
+ hmac-sha1-etm@openssh.com
+ hmac-sha2-256
+ hmac-sha2-256-etm@openssh.com
+ hmac-sha2-512
+ hmac-sha2-512-etm@openssh.com
+ umac-128-etm@openssh.com
+ umac-128@openssh.com
+ umac-64-etm@openssh.com
+ umac-64@openssh.com
+
+The server supports the following options for compression_algorithms_client_to_server :
+
+ none
+ zlib@openssh.com
+
+The server supports the following options for compression_algorithms_server_to_client :
+
+ none
+ zlib@openssh.com
+
+
+
+It is possible to obtain information about the remote SSH server by sending an empty authentication request.
+ssh_detect.nasl
+2017/12/19
+SSH Server Type and Version Information
+1999/10/12
+remote
+None
+2.15
+n/a
+An SSH server is listening on this port.
+
+SSH version : SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u1
+SSH supported authentication : publickey
+
+
+
+all
+This plugin displays, for each tested host, information about the scan itself :
+
+ - The version of the plugin set.
+ - The type of scanner (Nessus or Nessus Home).
+ - The version of the Nessus Engine.
+ - The port scanner(s) used.
+ - The port range scanned.
+ - Whether credentialed or third-party patch management checks are possible.
+ - The date of the scan.
+ - The duration of the scan.
+ - The number of hosts scanned in parallel.
+ - The number of checks done in parallel.
+scan_info.nasl
+2017/10/26
+Nessus Scan Information
+2005/08/26
+summary
+None
+$Revision: 1.90 $
+n/a
+This plugin displays information about the Nessus scan.
+Information about this scan :
+
+Nessus version : 7.0.2
+Plugin feed version : 201803062115
+Scanner edition used : Nessus
+Scan type : Normal
+Scan policy used : Advanced Scan
+Scanner IP : 127.0.0.1
+Thorough tests : no
+Experimental tests : no
+Paranoia level : 1
+Report verbosity : 1
+Safe checks : yes
+Optimize the test : yes
+Credentialed checks : yes (on the localhost)
+Attempt Least Privilege : no
+Patch management checks : None
+CGI scanning : disabled
+Web application tests : disabled
+Max hosts : 100
+Max checks : 5
+Recv timeout : 5
+Backports : Detected
+Allow post-scan editing: Yes
+Scan Start Date : 2018/4/4 14:28 CEST
+Scan duration : 1876 sec
+
+
+
+all
+The remote host is missing one or more security patches. This plugin lists the newest version of each patch to install to make sure the remote host is up-to-date.
+patches_summary.nbin
+2018/03/05
+Patch Report
+2013/07/08
+local
+None
+$Revision: 1.104 $
+Install the patches listed below.
+The remote host is missing several patches.
+
+
+. You need to take the following 13 actions :
+
+
+[ Debian DSA-4059-1 : libxcursor - security update (105120) ]
+
++ Action to take : Upgrade the libxcursor packages.
+
+For the oldstable distribution (jessie), these problems have been fixed in version 1:1.1.14-1+deb8u1.
+
+For the stable distribution (stretch), these problems have been fixed in version 1:1.1.14-1+deb9u1.
+
+
+[ Debian DSA-4065-1 : openssl1.0 - security update (105329) ]
+
++ Action to take : Upgrade the openssl1.0 packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 1.0.2l-2+deb9u2.
+
++Impact : Taking this action will resolve 2 different vulnerabilities (CVEs).
+
+
+
+[ Debian DSA-4068-1 : rsync - security update (105332) ]
+
++ Action to take : Upgrade the rsync packages.
+
+For the oldstable distribution (jessie), these problems have been fixed in version 3.1.1-3+deb8u1.
+
+For the stable distribution (stretch), these problems have been fixed in version 3.1.2-1+deb9u1.
+
++Impact : Taking this action will resolve 3 different vulnerabilities (CVEs).
+
+
+
+[ Debian DSA-4071-1 : sensible-utils - security update (105431) ]
+
++ Action to take : Upgrade the sensible-utils packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 0.0.9+deb8u1.
+
+For the stable distribution (stretch), this problem has been fixed in version 0.0.9+deb9u1.
+
+
+[ Debian DSA-4086-1 : libxml2 - security update (105801) ]
+
++ Action to take : Upgrade the libxml2 packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 2.9.1+dfsg1-5+deb8u6.
+
+For the stable distribution (stretch), this problem has been fixed in version 2.9.4+dfsg1-2.2+deb9u2.
+
+
+[ Debian DSA-4088-1 : gdk-pixbuf - security update (106056) ]
+
++ Action to take : Upgrade the gdk-pixbuf packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 2.31.1-2+deb8u7.
+
+For the stable distribution (stretch), this problem has been fixed in version 2.36.5-2+deb9u2. In addition this update provides fixes for CVE-2017-6312, CVE-2017-6313 and CVE-2017-6314.
+
+
+[ Debian DSA-4089-1 : bind9 - security update (106076) ]
+
++ Action to take : Upgrade the bind9 packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 1:9.9.5.dfsg-9+deb8u15.
+
+For the stable distribution (stretch), this problem has been fixed in version 1:9.10.3.dfsg.P4-12.3+deb9u4.
+
+
+[ Debian DSA-4098-1 : curl - security update (106412) ]
+
++ Action to take : Upgrade the curl packages.
+
+For the oldstable distribution (jessie), these problems have been fixed in version 7.38.0-4+deb8u9.
+
+For the stable distribution (stretch), these problems have been fixed in version 7.52.1-5+deb9u4.
+
++Impact : Taking this action will resolve 2 different vulnerabilities (CVEs).
+
+
+
+[ Debian DSA-4100-1 : tiff - security update (106414) ]
+
++ Action to take : Upgrade the tiff packages.
+
+For the oldstable distribution (jessie), these problems have been fixed in version 4.0.3-12.3+deb8u5.
+
+For the stable distribution (stretch), these problems have been fixed in version 4.0.8-2+deb9u2.
+
+
+[ Debian DSA-4106-1 : libtasn1-6 - security update (106661) ]
+
++ Action to take : Upgrade the libtasn1-6 packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 4.10-1.1+deb9u1.
+
++Impact : Taking this action will resolve 2 different vulnerabilities (CVEs).
+
+
+
+[ Debian DSA-4110-1 : exim4 - security update (106728) ]
+
++ Action to take : Upgrade the exim4 packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 4.84.2-2+deb8u5.
+
+For the stable distribution (stretch), this problem has been fixed in version 4.89-2+deb9u3.
+
+
+[ Debian DSA-4113-1 : libvorbis - security update (106852) ]
+
++ Action to take : Upgrade the libvorbis packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 1.3.5-4+deb9u1.
+
++Impact : Taking this action will resolve 2 different vulnerabilities (CVEs).
+
+
+
+[ Debian DSA-4120-1 : linux - security update (Meltdown) (Spectre) (106955) ]
+
++ Action to take : Upgrade the linux packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 4.9.82-1+deb9u2.
+
++Impact : Taking this action will resolve 22 different vulnerabilities (CVEs).
+
+
+
+
+
+
+Based on the remote operating system, it is possible to determine what the remote system type is (eg: a printer, router, general-purpose computer, etc).
+device_type.nasl
+2011/05/23
+Device Type
+2011/05/23
+combined
+None
+$Revision: 1.1 $
+n/a
+It is possible to guess the remote device type.
+Remote device type : general-purpose
+Confidence level : 100
+
+
+
+all
+By using information obtained from a Nessus scan, this plugin reports CPE (Common Platform Enumeration) matches for various hardware and software products found on a host.
+
+Note that if an official CPE is not available for the product, this plugin computes the best possible CPE based on the information available from the scan.
+cpe.nbin
+2017/06/06
+Common Platform Enumeration (CPE)
+2010/04/21
+local
+None
+$Revision: 1.71$
+http://cpe.mitre.org/
+https://nvd.nist.gov/products/cpe
+n/a
+It was possible to enumerate CPE names that matched on the remote system.
+
+The remote operating system matched the following CPE :
+
+ cpe:/o:debian:debian_linux:9.2
+
+Following application CPE matched on the remote system :
+
+ cpe:/a:openbsd:openssh:7.4
+
+
+
+all
+Using a combination of remote probes (e.g., TCP/IP, SMB, HTTP, NTP, SNMP, etc.), it is possible to guess the name of the remote operating system in use. It is also possible sometimes to guess the version of the operating system.
+os_fingerprint.nasl
+2018/01/19
+OS Identification
+2003/12/09
+combined
+None
+$Revision: 2.44 $
+n/a
+It is possible to guess the remote operating system.
+
+Remote operating system : Linux Kernel 4.9.0-4-amd64 on Debian 9.2
+Confidence level : 100
+Method : LinuxDistribution
+
+Not all fingerprints could give a match. If you think some or all of
+the following could be used to identify the host's operating system,
+please email them to os-signatures@nessus.org. Be sure to include a
+brief description of the host itself, such as the actual operating
+system or product / model names.
+
+SSH:!:SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u1
+uname:Linux abcvy031 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64 GNU/Linux
+
+SMTP:!:220 abcvy031.intranet.example.org ESMTP Exim 4.89 Wed, 04 Apr 2018 14:29:14 +0200
+
+
+The remote host is running Linux Kernel 4.9.0-4-amd64 on Debian 9.2
+
+
+p-cpe:/a:debian:debian_linux:linux
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-5754
+5.6
+CVSS:3.0/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N
+4.7
+CVSS2#AV:L/AC:M/Au:N/C:C/I:N/A:N
+Multiple researchers have discovered a vulnerability in Intel processors, enabling an attacker controlling an unprivileged process to read memory from arbitrary addresses, including from the kernel and all other processes running on the system.
+
+This specific attack has been named Meltdown and is addressed in the Linux kernel for the Intel x86-64 architecture by a patch set named Kernel Page Table Isolation, enforcing a near complete separation of the kernel and userspace address maps and preventing the attack. This solution might have a performance impact, and can be disabled at boot time by passing pti=off to the kernel command line.
+
+We also identified a regression for ancient userspaces using the vsyscall interface, for example chroot and containers using (e)glibc 2.13 and older, including those based on Debian 7 or RHEL/CentOS 6.
+This regression will be fixed in a later update.
+
+The other vulnerabilities (named Spectre) published at the same time are not addressed in this update and will be fixed in a later update.
+4078
+true
+Exploits are available
+true
+debian_DSA-4078.nasl
+2018-A-0019
+true
+2018/01/04
+2018/02/08
+Debian DSA-4078-1 : linux - security update (Meltdown)
+2018/01/05
+local
+Medium
+$Revision: 3.9 $
+https://security-tracker.debian.org/tracker/linux
+https://packages.debian.org/source/stretch/linux
+http://www.debian.org/security/2018/dsa-4078
+Upgrade the linux packages.
+
+For the oldstable distribution (jessie), this problem will be fixed in a separate update.
+
+For the stable distribution (stretch), this problem has been fixed in version 4.9.65-3+deb9u2.
+I
+The remote Debian host is missing a security-related update.
+DSA:4078
+IAVA:2018-A-0019
+
+Remote package installed : linux-compiler-gcc-6-x86_4.9.51-1
+Should be : linux-compiler-gcc-6-x86_4.9.65-3+deb9u2
+Remote package installed : linux-headers-4.9.0-4-amd64_4.9.51-1
+Should be : linux-headers-4.9.0-3-amd64_4.9.65-3+deb9u2
+Remote package installed : linux-headers-4.9.0-4-common_4.9.51-1
+Should be : linux-headers-4.9.0-3-common_4.9.65-3+deb9u2
+Remote package installed : linux-headers-4.9.0-4-amd64_4.9.51-1
+Should be : linux-headers-4.9.0-4-amd64_4.9.65-3+deb9u2
+Remote package installed : linux-headers-4.9.0-4-common_4.9.51-1
+Should be : linux-headers-4.9.0-4-common_4.9.65-3+deb9u2
+Remote package installed : linux-headers-4.9.0-4-amd64_4.9.51-1
+Should be : linux-headers-4.9.0-5-amd64_4.9.65-3+deb9u2
+Remote package installed : linux-headers-4.9.0-4-common_4.9.51-1
+Should be : linux-headers-4.9.0-5-common_4.9.65-3+deb9u2
+Remote package installed : linux-image-4.9.0-4-amd64_4.9.51-1
+Should be : linux-image-4.9.0-3-amd64_4.9.65-3+deb9u2
+Remote package installed : linux-image-4.9.0-4-amd64_4.9.51-1
+Should be : linux-image-4.9.0-4-amd64_4.9.65-3+deb9u2
+Remote package installed : linux-image-4.9.0-4-amd64_4.9.51-1
+Should be : linux-image-4.9.0-5-amd64_4.9.65-3+deb9u2
+Remote package installed : linux-kbuild-4.9_4.9.51-1
+Should be : linux-kbuild-4.9_4.9.65-3+deb9u2
+Remote package installed : linux-libc-dev_4.9.51-1
+Should be : linux-libc-dev_4.9.65-3+deb9u2
+
+
+
+unix
+2.1
+CVSS2#AV:N/AC:H/Au:S/C:N/I:P/A:N
+Some daemon processes on the remote host are associated with programs that have been installed manually.
+
+System administration best practice dictates that an operating system's native package management tools be used to manage software installation, updates, and removal whenever possible.
+unpackaged_daemons.nasl
+2017/08/28
+Network daemons not managed by the package system
+2008/08/08
+remote
+Low
+1.13
+Use packages supplied by the operating system vendor whenever possible.
+
+And make sure that manual software installation agrees with your organization's acceptable use and security policies.
+Some daemon processes on the remote host are associated with programs that have been installed manually.
+
+The following running daemons are not managed by dpkg :
+
+/root/.rbenv/versions/2.4.3/bin/ruby
+/var/lib/udf/.rbenv/versions/2.5.0/bin/ruby
+
+
+
+unix
+Using the supplied credentials, Nessus was able to determine when the host was last started.
+last_reboot.nasl
+2015/08/21
+Time of Last System Startup
+2011/10/12
+local
+None
+$Revision: 1.6 $
+n/a
+The system has been started.
+
+ reboot system boot 4.9.0-4-amd64 Tue Apr 3 14:59 still running
+
+ wtmp begins Tue Apr 3 12:31:26 2018
+
+
+unix
+Nessus was able to list the software installed on the remote host by calling the appropriate command (e.g., 'rpm -qa' on RPM-based Linux distributions, qpkg, dpkg, etc.).
+unix_enum_sw.nasl
+2017/07/28
+Software Enumeration (SSH)
+2006/10/15
+remote
+None
+$Revision: 1.24 $
+Remove any software that is not in compliance with your organization's acceptable use and security policies.
+It was possible to enumerate installed software on the remote host via SSH.
+
+Here is the list of packages installed on the remote Debian Linux system :
+
+ ii adduser 3.115 all add and remove users and groups
+ ii adwaita-icon-theme 3.22.0-1+deb9u1 all default icon theme of GNOME
+ ii apt 1.4.8 amd64 commandline package manager
+ ii apt-listchanges 3.10 all package change history notification tool
+ ii apt-transport-https 1.4.8 amd64 https download transport for APT
+ ii apt-utils 1.4.8 amd64 package management related utility programs
+ ii at-spi2-core 2.22.0-6+deb9u1 amd64 Assistive Technology Service Provider Interface (dbus core)
+ ii atop 2.2.6-4 amd64 Monitor for system resources and process activity
+ ii autoconf 2.69-10 all automatic configure script builder
+ ii autoconf-archive 20160916-1 all Autoconf Macro Archive
+ ii autogen 1:5.18.12-3 amd64 automated text file generator
+ ii autogen-doc 1:5.18.12-3 all automated text file generator - documentation
+ ii automake 1:1.15-6 all Tool for generating GNU Standards-compliant Makefiles
+ ii autotools-dev 20161112.1 all Update infrastructure for config.{guess,sub} files
+ ii base-files 9.9+deb9u2 amd64 Debian base system miscellaneous files
+ ii base-passwd 3.5.43 amd64 Debian base system master password and group files
+ ii bash 4.4-5 amd64 GNU Bourne Again SHell
+ ii bash-completion 1:2.1-4.3 all programmable completion for the bash shell
+ ii bind9-host 1:9.10.3.dfsg.P4-12.3+deb9u3 amd64 Version of 'host' bundled with BIND 9.X
+ ii binutils 2.28-5 amd64 GNU assembler, linker and binary utilities
+ ii bison 2:3.0.4.dfsg-1+b1 amd64 YACC-compatible parser generator
+ ii bmon 1:4.0-1 amd64 portable bandwidth monitor and rate estimator
+ ii bsdmainutils 9.0.12+nmu1 amd64 collection of more utilities from FreeBSD
+ ii bsdutils 1:2.29.2-1 amd64 basic utilities from 4.4BSD-Lite
+ ii build-essential 12.3 amd64 Informational list of build-essential packages
+ ii busybox 1:1.22.0-19+b3 amd64 Tiny utilities for small and embedded systems
+ ii bzip2 1.0.6-8.1 amd64 high-quality block-sorting file compressor - utilities
+ ii ca-certificates 20161130+nmu1 all Common CA certificates
+ ii ca-certificates-java 20170531+nmu1 all Common CA certificates (JKS keystore)
+ ii console-setup 1.164 all console font and keymap setup program
+ ii console-setup-linux 1.164 all Linux specific part of console-setup
+ ii coreutils 8.26-3 amd64 GNU core utilities
+ ii cpio 2.11+dfsg-6 amd64 GNU cpio -- a program to manage archives of files
+ ii cpp 4:6.3.0-4 amd64 GNU C preprocessor (cpp)
+ ii cpp-6 6.3.0-18 amd64 GNU C preprocessor
+ ii cron 3.0pl1-128+b1 amd64 process scheduling daemon
+ ii cryptsetup 2:1.7.3-4 amd64 disk encryption support - startup scripts
+ ii cryptsetup-bin 2:1.7.3-4 amd64 disk encryption support - command line tools
+ ii curl 7.52.1-5+deb9u3 amd64 command line tool for transferring data with URL syntax
+ ii dash 0.5.8-2.4 amd64 POSIX-compliant shell
+ ii dbus 1.10.22-0+deb9u1 amd64 simple interprocess messaging system (daemon and utilities)
+ ii dconf-gsettings-backend 0.26.0-2+b1 amd64 simple configuration storage system - GSettings back-end
+ ii dconf-service 0.26.0-2+b1 amd64 simple configuration storage system - D-Bus service
+ ii debconf 1.5.61 all Debian configuration management system
+ ii debconf-i18n 1.5.61 all full internationalization support for debconf
+ ii debian-archive-keyring 2017.5 all GnuPG archive keys of the Debian archive
+ ii debian-faq 8.1 all Debian Frequently Asked Questions
+ ii debianutils 4.8.1.1 amd64 Miscellaneous utilities specific to Debian
+ ii dh-python 2.20170125 all Debian helper tools for packaging Python libraries and applications
+ ii dictionaries-common 1.27.2 all spelling dictionaries - common utilities
+ ii diffutils 1:3.5-3 amd64 File comparison utilities
+ ii dirmngr 2.1.18-8~deb9u1 amd64 GNU privacy guard - network certificate management service
+ ii discover 2.1.2-7.1 amd64 hardware identification system
+ ii discover-data 2.2013.01.11 all Data lists for Discover hardware detection system
+ ii distro-info-data 0.36 all information about the distributions' releases (data files)
+ ii dkms 2.3-2 all Dynamic Kernel Module Support Framework
+ ii dmeventd 2:1.02.137-2 amd64 Linux Kernel Device Mapper event daemon
+ ii dmidecode 3.0-4 amd64 SMBIOS/DMI table decoder
+ ii dmsetup 2:1.02.137-2 amd64 Linux Kernel Device Mapper userspace library
+ ii doc-debian 6.4 all Debian Project documentation and other documents
+ ii dpkg 1.18.24 amd64 Debian package management system
+ ii dpkg-dev 1.18.24 all Debian package development tools
+ ii e2fslibs 1.43.4-2 amd64 ext2/ext3/ext4 file system libraries
+ ii e2fsprogs 1.43.4-2 amd64 ext2/ext3/ext4 file system utilities
+ ii eject 2.1.5+deb1+cvs20081104-13.2 amd64 ejects CDs and operates CD-Changers under Linux
+ ii emacsen-common 2.0.8 all Common facilities for all emacsen
+ ii ethtool 1:4.8-1+b1 amd64 display or change Ethernet device settings
+ ii exim4 4.89-2+deb9u2 all metapackage to ease Exim MTA (v4) installation
+ ii exim4-base 4.89-2+deb9u2 amd64 support files for all Exim MTA (v4) packages
+ ii exim4-config 4.89-2+deb9u2 all configuration for the Exim MTA (v4)
+ ii exim4-daemon-light 4.89-2+deb9u2 amd64 lightweight Exim MTA (v4) daemon
+ ii fakeroot 1.21-3.1 amd64 tool for simulating superuser privileges
+ ii file 1:5.30-1+deb9u1 amd64 Recognize the type of data in a file using "magic" numbers
+ ii findutils 4.6.0+git+20161106-2 amd64 utilities for finding files--find, xargs
+ ii firebird3.0-common 3.0.1.32609.ds4-14 all common files for firebird 3.0 server, client and utilities
+ ii firebird3.0-common-doc 3.0.1.32609.ds4-14 all copyright, licensing and changelogs of firebird3.0
+ ii fontconfig 2.11.0-6.7+b1 amd64 generic font configuration library - support binaries
+ ii fontconfig-config 2.11.0-6.7 all generic font configuration library - configuration
+ ii fonts-dejavu-core 2.37-1 all Vera font family derivate with additional characters
+ ii fonts-dejavu-extra 2.37-1 all Vera font family derivate with additional characters (extra variants)
+ ii fonts-lato 2.0-1 all sans-serif typeface family font
+ ii fuse 2.9.7-1 amd64 Filesystem in Userspace
+ ii g++ 4:6.3.0-4 amd64 GNU C++ compiler
+ ii g++-6 6.3.0-18 amd64 GNU C++ compiler
+ ii gcc 4:6.3.0-4 amd64 GNU C compiler
+ ii gcc-6 6.3.0-18 amd64 GNU C compiler
+ ii gcc-6-base 6.3.0-18 amd64 GCC, the GNU Compiler Collection (base package)
+ ii geoip-database 20170512-1 all IP lookup command line tools that use the GeoIP library (country database)
+ ii gettext-base 0.19.8.1-2 amd64 GNU Internationalization utilities for the base system
+ ii git 1:2.11.0-3+deb9u2 amd64 fast, scalable, distributed revision control system
+ ii git-core 1:2.11.0-3+deb9u2 all fast, scalable, distributed revision control system (obsolete)
+ ii git-man 1:2.11.0-3+deb9u2 all fast, scalable, distributed revision control system (manual pages)
+ ii glib-networking 2.50.0-1+b1 amd64 network-related giomodules for GLib
+ ii glib-networking-common 2.50.0-1 all network-related giomodules for GLib - data files
+ ii glib-networking-services 2.50.0-1+b1 amd64 network-related giomodules for GLib - D-Bus services
+ ii gnome-icon-theme 3.12.0-2 all GNOME Desktop icon theme
+ ii gnupg 2.1.18-8~deb9u1 amd64 GNU privacy guard - a free PGP replacement
+ ii gnupg-agent 2.1.18-8~deb9u1 amd64 GNU privacy guard - cryptographic agent
+ ii gpgv 2.1.18-8~deb9u1 amd64 GNU privacy guard - signature verification tool
+ ii grep 2.27-2 amd64 GNU grep, egrep and fgrep
+ ii groff-base 1.22.3-9 amd64 GNU troff text-formatting system (base system components)
+ ii grub-common 2.02~beta3-5 amd64 GRand Unified Bootloader (common files)
+ ii grub-pc 2.02~beta3-5 amd64 GRand Unified Bootloader, version 2 (PC/BIOS version)
+ ii grub-pc-bin 2.02~beta3-5 amd64 GRand Unified Bootloader, version 2 (PC/BIOS binaries)
+ ii grub2-common 2.02~beta3-5 amd64 GRand Unified Bootloader (common files for version 2)
+ ii gsettings-desktop-schemas 3.22.0-1 all GSettings desktop-wide schemas
+ ii gtk-update-icon-cache 3.22.11-1 amd64 icon theme caching utility
+ ii guile-2.0-libs 2.0.13+1-4 amd64 Core Guile libraries
+ ii gzip 1.6-5+b1 amd64 GNU compression utilities
+ ii hdparm 9.51+ds-1 amd64 tune hard disk parameters for high performance
+ ii hicolor-icon-theme 0.15-1 all default fallback theme for FreeDesktop.org icon themes
+ ii hostname 3.18+b1 amd64 utility to set/show the host name or domain name
+ ii htop 2.0.2-1 amd64 interactive processes viewer
+ ii hydra 8.3-3 amd64 very fast network logon cracker
+ ii iamerican 3.4.00-5 all American English dictionary for ispell (standard version)
+ ii ibritish 3.4.00-5 all British English dictionary for ispell (standard version)
+ ii icu-devtools 57.1-6 amd64 Development utilities for International Components for Unicode
+ ii ienglish-common 3.4.00-5 all Common files for British and American ispell dictionaries
+ ii iftop 1.0~pre4-4 amd64 displays bandwidth usage information on an network interface
+ ii ifupdown 0.8.19 amd64 high level tools to configure network interfaces
+ ii init 1.48 amd64 metapackage ensuring an init system is installed
+ ii init-system-helpers 1.48 all helper tools for all init systems
+ ii initramfs-tools 0.130 all generic modular initramfs generator (automation)
+ ii initramfs-tools-core 0.130 all generic modular initramfs generator (core tools)
+ ii installation-report 2.62 all system installation report
+ ii iotop 0.6-2 amd64 simple top-like I/O monitor
+ ii iproute2 4.9.0-1 amd64 networking and traffic control tools
+ ii iptables 1.6.0+snapshot20161117-6 amd64 administration tools for packet filtering and NAT
+ ii iptraf 1:1.1.4-6 all transitional package to iptraf-ng
+ ii iptraf-ng 1:1.1.4-6 amd64 Next Generation Interactive Colorful IP LAN Monitor
+ ii iputils-ping 3:20161105-1 amd64 Tools to test the reachability of network hosts
+ ii isc-dhcp-client 4.3.5-3 amd64 DHCP client for automatically obtaining an IP address
+ ii isc-dhcp-common 4.3.5-3 amd64 common manpages relevant to all of the isc-dhcp packages
+ ii iso-codes 3.75-1 all ISO language, territory, currency, script codes and their translations
+ ii ispell 3.4.00-5 amd64 International Ispell (an interactive spelling corrector)
+ ii java-common 0.58 all Base package for Java runtimes
+ ii javascript-common 11 all Base support for JavaScript library packages
+ ii kbd 2.0.3-2+b1 amd64 Linux console font and keytable utilities
+ ii keyboard-configuration 1.164 all system-wide keyboard preferences
+ ii klibc-utils 2.0.4-9 amd64 small utilities built with klibc for early boot
+ ii kmod 23-2 amd64 tools for managing Linux kernel modules
+ ii krb5-locales 1.15-1+deb9u1 all internationalization support for MIT Kerberos
+ ii laptop-detect 0.13.8 amd64 system chassis type checker
+ ii less 481-2.1 amd64 pager program similar to more
+ ii libacl1 2.2.52-3+b1 amd64 Access control list shared library
+ ii libalgorithm-diff-perl 1.19.03-1 all module to find differences between files
+ ii libalgorithm-diff-xs-perl 0.04-4+b2 amd64 module to find differences between files (XS accelerated)
+ ii libalgorithm-merge-perl 0.08-3 all Perl module for three-way merge of textual data
+ ii libapparmor1 2.11.0-3 amd64 changehat AppArmor library
+ ii libapr1 1.5.2-5 amd64 Apache Portable Runtime Library
+ ii libaprutil1 1.5.4-3 amd64 Apache Portable Runtime Utility Library
+ ii libapt-inst2.0 1.4.8 amd64 deb package format runtime library
+ ii libapt-pkg5.0 1.4.8 amd64 package management runtime library
+ ii libasan3 6.3.0-18 amd64 AddressSanitizer -- a fast memory error detector
+ ii libasound2 1.1.3-5 amd64 shared library for ALSA applications
+ ii libasound2-data 1.1.3-5 all Configuration files and profiles for ALSA drivers
+ ii libassuan0 2.4.3-2 amd64 IPC library for the GnuPG components
+ ii libasyncns0 0.8-6 amd64 Asynchronous name service query library
+ ii libatk-bridge2.0-0 2.22.0-2 amd64 AT-SPI 2 toolkit bridge - shared library
+ ii libatk-wrapper-java 0.33.3-13 all ATK implementation for Java using JNI
+ ii libatk-wrapper-java-jni 0.33.3-13 amd64 ATK implementation for Java using JNI (JNI bindings)
+ ii libatk1.0-0 2.22.0-1 amd64 ATK accessibility toolkit
+ ii libatk1.0-data 2.22.0-1 all Common files for the ATK accessibility toolkit
+ ii libatomic1 6.3.0-18 amd64 support library providing __atomic built-in functions
+ ii libatspi2.0-0 2.22.0-6+deb9u1 amd64 Assistive Technology Service Provider Interface - shared library
+ ii libattr1 1:2.4.47-2+b2 amd64 Extended attribute shared library
+ ii libaudit-common 1:2.6.7-2 all Dynamic library for security auditing - common files
+ ii libaudit1 1:2.6.7-2 amd64 Dynamic library for security auditing
+ ii libavahi-client3 0.6.32-2 amd64 Avahi client library
+ ii libavahi-common-data 0.6.32-2 amd64 Avahi common data files
+ ii libavahi-common3 0.6.32-2 amd64 Avahi common library
+ ii libbind9-140 1:9.10.3.dfsg.P4-12.3+deb9u3 amd64 BIND9 Shared Library used by BIND
+ ii libbison-dev 2:3.0.4.dfsg-1+b1 amd64 YACC-compatible parser generator - development library
+ ii libblas-common 3.7.0-2 amd64 Dependency package for all BLAS implementations
+ ii libblas3 3.7.0-2 amd64 Basic Linear Algebra Reference implementations, shared library
+ ii libblkid1 2.29.2-1 amd64 block device ID library
+ ii libbsd0 0.8.3-1 amd64 utility functions from BSD systems - shared library
+ ii libbz2-1.0 1.0.6-8.1 amd64 high-quality block-sorting file compressor library - runtime
+ ii libc-bin 2.24-11+deb9u1 amd64 GNU C Library: Binaries
+ ii libc-dev-bin 2.24-11+deb9u1 amd64 GNU C Library: Development binaries
+ ii libc-l10n 2.24-11+deb9u1 all GNU C Library: localization files
+ ii libc6 2.24-11+deb9u1 amd64 GNU C Library: Shared libraries
+ ii libc6-dev 2.24-11+deb9u1 amd64 GNU C Library: Development Libraries and Header Files
+ ii libcairo-gobject2 1.14.8-1 amd64 Cairo 2D vector graphics library (GObject library)
+ ii libcairo2 1.14.8-1 amd64 Cairo 2D vector graphics library
+ ii libcap-ng0 0.7.7-3+b1 amd64 An alternate POSIX capabilities library
+ ii libcap2 1:2.25-1 amd64 POSIX 1003.1e capabilities (library)
+ ii libcc1-0 6.3.0-18 amd64 GCC cc1 plugin for GDB
+ ii libcilkrts5 6.3.0-18 amd64 Intel Cilk Plus language extensions (runtime)
+ ii libclass-isa-perl 0.36-5 all report the search path for a class's ISA tree
+ ii libcolord2 1.3.3-2 amd64 system service to manage device colour profiles -- runtime
+ ii libcomerr2 1.43.4-2 amd64 common error description library
+ ii libconfuse-common 3.0+dfsg-2 all Common files for libConfuse
+ ii libconfuse1 3.0+dfsg-2 amd64 Library for parsing configuration files
+ ii libcroco3 0.6.11-3 amd64 Cascading Style Sheet (CSS) parsing and manipulation toolkit
+ ii libcryptsetup4 2:1.7.3-4 amd64 disk encryption support - shared library
+ ii libcups2 2.2.1-8 amd64 Common UNIX Printing System(tm) - Core library
+ ii libcurl3 7.52.1-5+deb9u3 amd64 easy-to-use client-side URL transfer library (OpenSSL flavour)
+ ii libcurl3-gnutls 7.52.1-5+deb9u3 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour)
+ ii libcurl4-openssl-dev 7.52.1-5+deb9u3 amd64 development files and documentation for libcurl (OpenSSL flavour)
+ ii libdatrie1 0.2.10-4+b1 amd64 Double-array trie library
+ ii libdb5.3 5.3.28-12+deb9u1 amd64 Berkeley v5.3 Database Libraries [runtime]
+ ii libdbus-1-3 1.10.22-0+deb9u1 amd64 simple interprocess messaging system (library)
+ ii libdconf1 0.26.0-2+b1 amd64 simple configuration storage system - runtime library
+ ii libdebconfclient0 0.227 amd64 Debian Configuration Management System (C-implementation library)
+ ii libdevmapper-event1.02.1 2:1.02.137-2 amd64 Linux Kernel Device Mapper event support library
+ ii libdevmapper1.02.1 2:1.02.137-2 amd64 Linux Kernel Device Mapper userspace library
+ ii libdigest-hmac-perl 1.03+dfsg-1 all module for creating standard message integrity checks
+ ii libdiscover2 2.1.2-7.1 amd64 hardware identification library
+ ii libdns-export162 1:9.10.3.dfsg.P4-12.3+deb9u3 amd64 Exported DNS Shared Library
+ ii libdns162 1:9.10.3.dfsg.P4-12.3+deb9u3 amd64 DNS Shared Library used by BIND
+ ii libdpkg-perl 1.18.24 all Dpkg perl modules
+ ii libdrm-amdgpu1 2.4.74-1 amd64 Userspace interface to amdgpu-specific kernel DRM services -- runtime
+ ii libdrm-intel1 2.4.74-1 amd64 Userspace interface to intel-specific kernel DRM services -- runtime
+ ii libdrm-nouveau2 2.4.74-1 amd64 Userspace interface to nouveau-specific kernel DRM services -- runtime
+ ii libdrm-radeon1 2.4.74-1 amd64 Userspace interface to radeon-specific kernel DRM services -- runtime
+ ii libdrm2 2.4.74-1 amd64 Userspace interface to kernel DRM services -- runtime
+ ii libdumbnet1 1.12-7+b1 amd64 dumb, portable networking library -- shared library
+ ii libedit2 3.1-20160903-3 amd64 BSD editline and history libraries
+ ii libegl1-mesa 13.0.6-1+b2 amd64 free implementation of the EGL API -- runtime
+ ii libelf1 0.168-1 amd64 library to read and write ELF files
+ ii libepoxy0 1.3.1-2 amd64 OpenGL function pointer management library
+ ii liberror-perl 0.17024-1 all Perl module for error/exception handling in an OO-ish way
+ ii libestr0 0.1.10-2 amd64 Helper functions for handling strings (lib)
+ ii libevent-2.0-5 2.0.21-stable-3 amd64 Asynchronous event notification library
+ ii libexpat1 2.2.0-2+deb9u1 amd64 XML parsing C library - runtime library
+ ii libfakeroot 1.21-3.1 amd64 tool for simulating superuser privileges - shared libraries
+ ii libfastjson4 0.99.4-1 amd64 fast json library for C
+ ii libfbclient2 3.0.1.32609.ds4-14 amd64 Firebird client library
+ ii libfdisk1 2.29.2-1 amd64 fdisk partitioning library
+ ii libffi-dev 3.2.1-6 amd64 Foreign Function Interface library (development files)
+ ii libffi6 3.2.1-6 amd64 Foreign Function Interface library runtime
+ ii libfile-fcntllock-perl 0.22-3+b2 amd64 Perl module for file locking with fcntl(2)
+ ii libflac8 1.3.2-1 amd64 Free Lossless Audio Codec - runtime C library
+ ii libfltk-images1.3 1.3.4-4 amd64 Fast Light Toolkit - image loading support
+ ii libfltk1.3 1.3.4-4 amd64 Fast Light Toolkit - main shared library
+ ii libfontconfig1 2.11.0-6.7+b1 amd64 generic font configuration library - runtime
+ ii libfontenc1 1:1.1.3-1+b2 amd64 X11 font encoding library
+ ii libfreetype6 2.6.3-3.2 amd64 FreeType 2 font engine, shared library files
+ ii libfribidi0 0.19.7-1+b1 amd64 Free Implementation of the Unicode BiDi algorithm
+ ii libfuse2 2.9.7-1 amd64 Filesystem in Userspace (library)
+ ii libgail-common 2.24.31-2 amd64 GNOME Accessibility Implementation Library -- common modules
+ ii libgail18 2.24.31-2 amd64 GNOME Accessibility Implementation Library -- shared libraries
+ ii libgbm1 13.0.6-1+b2 amd64 generic buffer management API -- runtime
+ ii libgc1c2 1:7.4.2-8 amd64 conservative garbage collector for C and C++
+ ii libgcc-6-dev 6.3.0-18 amd64 GCC support library (development files)
+ ii libgcc1 1:6.3.0-18 amd64 GCC support library
+ ii libgcrypt20 1.7.6-2+deb9u2 amd64 LGPL Crypto library - runtime library
+ ii libgdbm-dev 1.8.3-14 amd64 GNU dbm database routines (development files)
+ ii libgdbm3 1.8.3-14 amd64 GNU dbm database routines (runtime version)
+ ii libgdk-pixbuf2.0-0 2.36.5-2+deb9u1 amd64 GDK Pixbuf library
+ ii libgdk-pixbuf2.0-common 2.36.5-2+deb9u1 all GDK Pixbuf library - data files
+ ii libgeoip1 1.6.9-4 amd64 non-DNS IP-to-country resolver library
+ ii libgfortran3 6.3.0-18 amd64 Runtime library for GNU Fortran applications
+ ii libgif7 5.1.4-0.4 amd64 library for GIF images (library)
+ ii libgl1-mesa-dri 13.0.6-1+b2 amd64 free implementation of the OpenGL API -- DRI modules
+ ii libgl1-mesa-glx 13.0.6-1+b2 amd64 free implementation of the OpenGL API -- GLX runtime
+ ii libglapi-mesa 13.0.6-1+b2 amd64 free implementation of the GL API -- shared library
+ ii libglib2.0-0 2.50.3-2 amd64 GLib library of C routines
+ ii libglib2.0-data 2.50.3-2 all Common files for GLib library
+ ii libgmp10 2:6.1.2+dfsg-1 amd64 Multiprecision arithmetic library
+ ii libgnutls30 3.5.8-5+deb9u3 amd64 GNU TLS library - main runtime library
+ ii libgomp1 6.3.0-18 amd64 GCC OpenMP (GOMP) support library
+ ii libgpg-error0 1.26-2 amd64 library for common error values and messages in GnuPG components
+ ii libgpm2 1.20.4-6.2+b1 amd64 General Purpose Mouse - shared library
+ ii libgraphite2-3 1.3.10-1 amd64 Font rendering engine for Complex Scripts -- library
+ ii libgsasl7 1.8.0-8+b2 amd64 GNU SASL library
+ ii libgssapi-krb5-2 1.15-1+deb9u1 amd64 MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
+ ii libgtk-3-0 3.22.11-1 amd64 GTK+ graphical user interface library
+ ii libgtk-3-bin 3.22.11-1 amd64 programs for the GTK+ graphical user interface library
+ ii libgtk-3-common 3.22.11-1 all common files for the GTK+ graphical user interface library
+ ii libgtk2.0-0 2.24.31-2 amd64 GTK+ graphical user interface library
+ ii libgtk2.0-bin 2.24.31-2 amd64 programs for the GTK+ graphical user interface library
+ ii libgtk2.0-common 2.24.31-2 all common files for the GTK+ graphical user interface library
+ ii libharfbuzz0b 1.4.2-1 amd64 OpenType text shaping engine (shared library)
+ ii libhogweed4 3.3-1+b2 amd64 low level cryptographic library (public-key cryptos)
+ ii libice6 2:1.0.9-2 amd64 X11 Inter-Client Exchange library
+ ii libicu-dev 57.1-6 amd64 Development files for International Components for Unicode
+ ii libicu57 57.1-6 amd64 International Components for Unicode
+ ii libidn11 1.33-1 amd64 GNU Libidn library, implementation of IETF IDN specifications
+ ii libidn2-0 0.16-1+deb9u1 amd64 Internationalized domain names (IDNA2008) library
+ ii libio-socket-inet6-perl 2.72-2 all object interface for AF_INET6 domain sockets
+ ii libip4tc0 1.6.0+snapshot20161117-6 amd64 netfilter libip4tc library
+ ii libip6tc0 1.6.0+snapshot20161117-6 amd64 netfilter libip6tc library
+ ii libiptc0 1.6.0+snapshot20161117-6 amd64 netfilter libiptc library
+ ii libisc-export160 1:9.10.3.dfsg.P4-12.3+deb9u3 amd64 Exported ISC Shared Library
+ ii libisc160 1:9.10.3.dfsg.P4-12.3+deb9u3 amd64 ISC Shared Library used by BIND
+ ii libisccc140 1:9.10.3.dfsg.P4-12.3+deb9u3 amd64 Command Channel Library used by BIND
+ ii libisccfg140 1:9.10.3.dfsg.P4-12.3+deb9u3 amd64 Config File Handling Library used by BIND
+ ii libisl15 0.18-1 amd64 manipulating sets and relations of integer points bounded by linear constraints
+ ii libitm1 6.3.0-18 amd64 GNU Transactional Memory Library
+ ii libjbig0 2.1-3.1+b2 amd64 JBIGkit libraries
+ ii libjpeg62-turbo 1:1.5.1-2 amd64 libjpeg-turbo JPEG runtime library
+ ii libjs-jquery 3.1.1-2 all JavaScript library for dynamic web applications
+ ii libjs-underscore 1.8.3~dfsg-1 all JavaScript's functional programming helper library
+ ii libjson-glib-1.0-0 1.2.6-1 amd64 GLib JSON manipulation library
+ ii libjson-glib-1.0-common 1.2.6-1 all GLib JSON manipulation library (common files)
+ ii libk5crypto3 1.15-1+deb9u1 amd64 MIT Kerberos runtime libraries - Crypto Library
+ ii libkeyutils1 1.5.9-9 amd64 Linux Key Management Utilities (library)
+ ii libklibc 2.0.4-9 amd64 minimal libc subset for use with initramfs
+ ii libkmod2 23-2 amd64 libkmod shared library
+ ii libkrb5-3 1.15-1+deb9u1 amd64 MIT Kerberos runtime libraries
+ ii libkrb5support0 1.15-1+deb9u1 amd64 MIT Kerberos runtime libraries - Support library
+ ii libksba8 1.3.5-2 amd64 X.509 and CMS support library
+ ii libkyotocabinet16v5 1.2.76-4.2+b1 amd64 Straightforward implementation of DBM - shared library
+ ii liblcms2-2 2.8-4 amd64 Little CMS 2 color management library
+ ii libldap-2.4-2 2.4.44+dfsg-5+deb9u1 amd64 OpenLDAP libraries
+ ii libldap-common 2.4.44+dfsg-5+deb9u1 all OpenLDAP common files for libraries
+ ii liblinear3 2.1.0+dfsg-2 amd64 Library for Large Linear Classification
+ ii libllvm3.9 1:3.9.1-9 amd64 Modular compiler and toolchain technologies, runtime library
+ ii liblocale-gettext-perl 1.07-3+b1 amd64 module using libc functions for internationalization in Perl
+ ii liblockfile-bin 1.14-1+b1 amd64 support binaries for and cli utilities based on liblockfile
+ ii liblogging-stdlog0 1.0.5-2+b2 amd64 easy to use and lightweight logging library
+ ii liblognorm5 2.0.1-1.1+b1 amd64 log normalizing library
+ ii liblsan0 6.3.0-18 amd64 LeakSanitizer -- a memory leak detector (runtime)
+ ii libltdl-dev 2.4.6-2 amd64 System independent dlopen wrapper for GNU libtool
+ ii libltdl7 2.4.6-2 amd64 System independent dlopen wrapper for GNU libtool
+ ii liblua5.2-0 5.2.4-1.1+b2 amd64 Shared library for the Lua interpreter version 5.2
+ ii liblua5.3-0 5.3.3-1 amd64 Shared library for the Lua interpreter version 5.3
+ ii liblvm2app2.2 2.02.168-2 amd64 LVM2 application library
+ ii liblvm2cmd2.02 2.02.168-2 amd64 LVM2 command library
+ ii liblwres141 1:9.10.3.dfsg.P4-12.3+deb9u3 amd64 Lightweight Resolver Library used by BIND
+ ii liblz4-1 0.0~r131-2+b1 amd64 Fast LZ compression algorithm library - runtime
+ ii liblzma5 5.2.2-1.2+b1 amd64 XZ-format compression library
+ ii liblzo2-2 2.08-1.2+b2 amd64 data compression library
+ ii libmagic-mgc 1:5.30-1+deb9u1 amd64 File type determination library using "magic" numbers (compiled magic file)
+ ii libmagic1 1:5.30-1+deb9u1 amd64 Recognize the type of data in a file using "magic" numbers - library
+ ii libmailutils5 1:3.1.1-1 amd64 GNU Mail abstraction library
+ ii libmariadbclient18 10.1.26-0+deb9u1 amd64 MariaDB database client library
+ ii libmnl-dev 1.0.4-2 amd64 minimalistic Netlink communication library (devel)
+ ii libmnl0 1.0.4-2 amd64 minimalistic Netlink communication library
+ ii libmount1 2.29.2-1 amd64 device mounting library
+ ii libmpc3 1.0.3-1+b2 amd64 multiple precision complex floating-point library
+ ii libmpdec2 2.4.2-1 amd64 library for decimal floating point arithmetic (runtime library)
+ ii libmpfr4 3.1.5-1 amd64 multiple precision floating-point computation
+ ii libmpx2 6.3.0-18 amd64 Intel memory protection extensions (runtime)
+ ii libmspack0 0.5-1+deb9u1 amd64 library for Microsoft compression formats (shared library)
+ ii libncurses5 6.0+20161126-1+deb9u1 amd64 shared libraries for terminal handling
+ ii libncurses5-dev 6.0+20161126-1+deb9u1 amd64 developer's libraries for ncurses
+ ii libncursesw5 6.0+20161126-1+deb9u1 amd64 shared libraries for terminal handling (wide character support)
+ ii libnet-dns-perl 1.07-1 all Perform DNS queries from a Perl script
+ ii libnet-ip-perl 1.26-1 all Perl extension for manipulating IPv4/IPv6 addresses
+ ii libnetfilter-conntrack3 1.0.6-2 amd64 Netfilter netlink-conntrack library
+ ii libnettle6 3.3-1+b2 amd64 low level cryptographic library (symmetric and one-way cryptos)
+ ii libnewt0.52 0.52.19-1+b1 amd64 Not Erik's Windowing Toolkit - text mode windowing with slang
+ ii libnfnetlink0 1.0.1-3 amd64 Netfilter netlink library
+ ii libnghttp2-14 1.18.1-1 amd64 library implementing HTTP/2 protocol (shared library)
+ ii libnginx-mod-http-echo 1.10.3-1+deb9u1 amd64 Bring echo and more shell style goodies to Nginx
+ ii libnl-3-200 3.2.27-2 amd64 library for dealing with netlink sockets
+ ii libnl-route-3-200 3.2.27-2 amd64 library for dealing with netlink sockets - route interface
+ ii libnotify4 0.7.7-2 amd64 sends desktop notifications to a notification daemon
+ ii libnpth0 1.3-1 amd64 replacement for GNU Pth using system threads
+ ii libnspr4 2:4.12-6 amd64 NetScape Portable Runtime Library
+ ii libnss3 2:3.26.2-1.1+deb9u1 amd64 Network Security Service libraries
+ ii libntlm0 1.4-8 amd64 NTLM authentication library
+ ii libogg0 1.3.2-1 amd64 Ogg bitstream library
+ ii libopts25 1:5.18.12-3 amd64 automated option processing library based on autogen
+ ii libopts25-dev 1:5.18.12-3 amd64 automated option processing library based on autogen
+ ii libp11-kit0 0.23.3-2 amd64 library for loading and coordinating access to PKCS#11 modules - runtime
+ ii libpam-modules 1.1.8-3.6 amd64 Pluggable Authentication Modules for PAM
+ ii libpam-modules-bin 1.1.8-3.6 amd64 Pluggable Authentication Modules for PAM - helper binaries
+ ii libpam-runtime 1.1.8-3.6 all Runtime support for the PAM library
+ ii libpam-systemd 232-25+deb9u1 amd64 system and service manager - PAM module
+ ii libpam0g 1.1.8-3.6 amd64 Pluggable Authentication Modules library
+ ii libpango-1.0-0 1.40.5-1 amd64 Layout and rendering of internationalized text
+ ii libpangocairo-1.0-0 1.40.5-1 amd64 Layout and rendering of internationalized text
+ ii libpangoft2-1.0-0 1.40.5-1 amd64 Layout and rendering of internationalized text
+ ii libpcap-dev 1.8.1-3 all development library for libpcap (transitional package)
+ ii libpcap0.8 1.8.1-3 amd64 system interface for user-level packet capture
+ ii libpcap0.8-dev 1.8.1-3 amd64 development library and header files for libpcap0.8
+ ii libpci3 1:3.5.2-1 amd64 Linux PCI Utilities (shared library)
+ ii libpciaccess0 0.13.4-1+b2 amd64 Generic PCI access library for X
+ ii libpcre3 2:8.39-3 amd64 Old Perl 5 Compatible Regular Expression Library - runtime files
+ ii libpcsclite1 1.8.20-1 amd64 Middleware to access a smart card using PC/SC (library)
+ ii libperl5.24 5.24.1-3+deb9u2 amd64 shared Perl library
+ ii libpipeline1 1.4.1-2 amd64 pipeline manipulation library
+ ii libpixman-1-0 0.34.0-1 amd64 pixel-manipulation library for X and cairo
+ ii libpng16-16 1.6.28-1 amd64 PNG library - runtime (version 1.6)
+ ii libpopt0 1.16-10+b2 amd64 lib for parsing cmdline parameters
+ ii libpq-dev 9.6.6-0+deb9u1 amd64 header files for libpq5 (PostgreSQL library)
+ ii libpq5 9.6.6-0+deb9u1 amd64 PostgreSQL C client library
+ ii libprocps6 2:3.3.12-3 amd64 library for accessing process information from /proc
+ ii libproxy1v5 0.4.14-2 amd64 automatic proxy configuration management library (shared)
+ ii libpsl5 0.17.0-3 amd64 Library for Public Suffix List (shared libraries)
+ ii libpulse0 10.0-1+deb9u1 amd64 PulseAudio client libraries
+ ii libpython-stdlib 2.7.13-2 amd64 interactive high-level object-oriented language (default python version)
+ ii libpython2.7 2.7.13-2 amd64 Shared Python runtime library (version 2.7)
+ ii libpython2.7-minimal 2.7.13-2 amd64 Minimal subset of the Python language (version 2.7)
+ ii libpython2.7-stdlib 2.7.13-2 amd64 Interactive high-level object-oriented language (standard library, version 2.7)
+ ii libpython3-stdlib 3.5.3-1 amd64 interactive high-level object-oriented language (default python3 version)
+ ii libpython3.5 3.5.3-1 amd64 Shared Python runtime library (version 3.5)
+ ii libpython3.5-minimal 3.5.3-1 amd64 Minimal subset of the Python language (version 3.5)
+ ii libpython3.5-stdlib 3.5.3-1 amd64 Interactive high-level object-oriented language (standard library, version 3.5)
+ ii libquadmath0 6.3.0-18 amd64 GCC Quad-Precision Math Library
+ ii libreadline-dev 7.0-3 amd64 GNU readline and history libraries, development files
+ ii libreadline5 5.2+dfsg-3+b1 amd64 GNU readline and history libraries, run-time libraries
+ ii libreadline7 7.0-3 amd64 GNU readline and history libraries, run-time libraries
+ ii librest-0.7-0 0.8.0-2 amd64 REST service access library
+ ii librsvg2-2 2.40.16-1+b1 amd64 SAX-based renderer library for SVG files (runtime)
+ ii librsvg2-common 2.40.16-1+b1 amd64 SAX-based renderer library for SVG files (extra runtime)
+ ii librtmp1 2.4+20151223.gitfa8646d.1-1+b1 amd64 toolkit for RTMP streams (shared library)
+ ii libruby2.3 2.3.3-1+deb9u2 amd64 Libraries necessary to run Ruby 2.3
+ ii libsasl2-2 2.1.27~101-g0780600+dfsg-3 amd64 Cyrus SASL - authentication abstraction library
+ ii libsasl2-modules 2.1.27~101-g0780600+dfsg-3 amd64 Cyrus SASL - pluggable authentication modules
+ ii libsasl2-modules-db 2.1.27~101-g0780600+dfsg-3 amd64 Cyrus SASL - pluggable authentication modules (DB)
+ ii libseccomp2 2.3.1-2.1 amd64 high level interface to Linux seccomp filter
+ ii libselinux1 2.6-3+b3 amd64 SELinux runtime shared libraries
+ ii libsemanage-common 2.6-2 all Common files for SELinux policy management libraries
+ ii libsemanage1 2.6-2 amd64 SELinux policy management library
+ ii libsensors4 1:3.4.0-4 amd64 library to read temperature/voltage/fan sensors
+ ii libsepol1 2.6-2 amd64 SELinux library for manipulating binary security policies
+ ii libserf-1-1 1.3.9-3 amd64 high-performance asynchronous HTTP client library
+ ii libsigsegv2 2.10-5 amd64 Library for handling page faults in a portable way
+ ii libslang2 2.3.1-5 amd64 S-Lang programming library - runtime version
+ ii libsm6 2:1.2.2-1+b3 amd64 X11 Session Management library
+ ii libsmartcols1 2.29.2-1 amd64 smart column output alignment library
+ ii libsndfile1 1.0.27-3 amd64 Library for reading/writing audio files
+ ii libsocket6-perl 0.27-1+b1 amd64 Perl extensions for IPv6
+ ii libsoup-gnome2.4-1 2.56.0-2+deb9u1 amd64 HTTP library implementation in C -- GNOME support library
+ ii libsoup2.4-1 2.56.0-2+deb9u1 amd64 HTTP library implementation in C -- Shared library
+ ii libsqlite3-0 3.16.2-5 amd64 SQLite 3 shared library
+ ii libsqlite3-dev 3.16.2-5 amd64 SQLite 3 development files
+ ii libss2 1.43.4-2 amd64 command-line interface parsing library
+ ii libssh-4 0.7.3-2 amd64 tiny C SSH library (OpenSSL flavor)
+ ii libssh2-1 1.7.0-1 amd64 SSH2 client-side library
+ ii libssl-dev 1.1.0f-3+deb9u1 amd64 Secure Sockets Layer toolkit - development files
+ ii libssl-doc 1.1.0f-3+deb9u1 all Secure Sockets Layer toolkit - development documentation
+ ii libssl1.0.2 1.0.2l-2+deb9u1 amd64 Secure Sockets Layer toolkit - shared libraries
+ ii libssl1.1 1.1.0f-3+deb9u1 amd64 Secure Sockets Layer toolkit - shared libraries
+ ii libstdc++-6-dev 6.3.0-18 amd64 GNU Standard C++ Library v3 (development files)
+ ii libstdc++6 6.3.0-18 amd64 GNU Standard C++ Library v3
+ ii libsvn1 1.9.5-1+deb9u1 amd64 Shared libraries used by Apache Subversion
+ ii libswitch-perl 2.17-2 all switch statement for Perl
+ ii libsystemd0 232-25+deb9u1 amd64 systemd utility library
+ ii libtasn1-6 4.10-1.1 amd64 Manage ASN.1 structures (runtime)
+ ii libtcl8.6 8.6.6+dfsg-1+b1 amd64 Tcl (the Tool Command Language) v8.6 - run-time library files
+ ii libtext-charwidth-perl 0.04-7+b5 amd64 get display widths of characters on the terminal
+ ii libtext-iconv-perl 1.7-5+b4 amd64 converts between character sets in Perl
+ ii libtext-wrapi18n-perl 0.06-7.1 all internationalized substitute of Text::Wrap
+ ii libthai-data 0.1.26-1 all Data files for Thai language support library
+ ii libthai0 0.1.26-1 amd64 Thai language support library
+ ii libtiff5 4.0.8-2+deb9u1 amd64 Tag Image File Format (TIFF) library
+ ii libtinfo-dev 6.0+20161126-1+deb9u1 amd64 developer's library for the low-level terminfo library
+ ii libtinfo5 6.0+20161126-1+deb9u1 amd64 shared low-level terminfo library for terminal handling
+ ii libtommath1 1.0-4 amd64 multiple-precision integer library [runtime]
+ ii libtool 2.4.6-2 all Generic library support script
+ ii libtsan0 6.3.0-18 amd64 ThreadSanitizer -- a Valgrind-based detector of data races (runtime)
+ ii libtxc-dxtn-s2tc 1.0+git20151227-2 amd64 Texture compression library for Mesa
+ ii libubsan0 6.3.0-18 amd64 UBSan -- undefined behaviour sanitizer (runtime)
+ ii libudev1 232-25+deb9u1 amd64 libudev shared library
+ ii libunistring0 0.9.6+really0.9.3-0.1 amd64 Unicode string library for C
+ ii libusb-0.1-4 2:0.1.12-30 amd64 userspace USB programming library
+ ii libustr-1.0-1 1.0.4-6 amd64 Micro string library: shared library
+ ii libutempter0 1.1.6-3 amd64 privileged helper for utmp/wtmp updates (runtime)
+ ii libuuid1 2.29.2-1 amd64 Universally Unique ID library
+ ii libuv1 1.9.1-3 amd64 asynchronous event notification library - runtime library
+ ii libvorbis0a 1.3.5-4 amd64 decoder library for Vorbis General Audio Compression Codec
+ ii libvorbisenc2 1.3.5-4 amd64 encoder library for Vorbis General Audio Compression Codec
+ ii libwayland-client0 1.12.0-1 amd64 wayland compositor infrastructure - client library
+ ii libwayland-cursor0 1.12.0-1 amd64 wayland compositor infrastructure - cursor library
+ ii libwayland-egl1-mesa 13.0.6-1+b2 amd64 implementation of the Wayland EGL platform -- runtime
+ ii libwayland-server0 1.12.0-1 amd64 wayland compositor infrastructure - server library
+ ii libwrap0 7.6.q-26 amd64 Wietse Venema's TCP wrappers library
+ ii libwxbase3.0-0v5 3.0.2+dfsg-4 amd64 wxBase library (runtime) - non-GUI support classes of wxWidgets toolkit
+ ii libwxgtk3.0-0v5 3.0.2+dfsg-4 amd64 wxWidgets Cross-platform C++ GUI toolkit (GTK+ runtime)
+ ii libx11-6 2:1.6.4-3 amd64 X11 client-side library
+ ii libx11-data 2:1.6.4-3 all X11 client-side library
+ ii libx11-xcb1 2:1.6.4-3 amd64 Xlib/XCB interface library
+ ii libxapian30 1.4.3-2 amd64 Search engine library
+ ii libxau6 1:1.0.8-1 amd64 X11 authorisation library
+ ii libxaw7 2:1.0.13-1+b2 amd64 X11 Athena Widget library
+ ii libxcb-dri2-0 1.12-1 amd64 X C Binding, dri2 extension
+ ii libxcb-dri3-0 1.12-1 amd64 X C Binding, dri3 extension
+ ii libxcb-glx0 1.12-1 amd64 X C Binding, glx extension
+ ii libxcb-present0 1.12-1 amd64 X C Binding, present extension
+ ii libxcb-render0 1.12-1 amd64 X C Binding, render extension
+ ii libxcb-shape0 1.12-1 amd64 X C Binding, shape extension
+ ii libxcb-shm0 1.12-1 amd64 X C Binding, shm extension
+ ii libxcb-sync1 1.12-1 amd64 X C Binding, sync extension
+ ii libxcb-xfixes0 1.12-1 amd64 X C Binding, xfixes extension
+ ii libxcb1 1.12-1 amd64 X C Binding
+ ii libxcomposite1 1:0.4.4-2 amd64 X11 Composite extension library
+ ii libxcursor1 1:1.1.14-1+b4 amd64 X cursor management library
+ ii libxdamage1 1:1.1.4-2+b3 amd64 X11 damaged region extension library
+ ii libxdmcp6 1:1.1.2-3 amd64 X11 Display Manager Control Protocol library
+ ii libxerces-c3.1 3.1.4+debian-2 amd64 validating XML parser library for C++
+ ii libxext6 2:1.3.3-1+b2 amd64 X11 miscellaneous extension library
+ ii libxfixes3 1:5.0.3-1 amd64 X11 miscellaneous 'fixes' extension library
+ ii libxfont1 1:1.5.2-4 amd64 X11 font rasterisation library
+ ii libxft2 2.3.2-1+b2 amd64 FreeType-based font drawing library for X
+ ii libxi6 2:1.7.9-1 amd64 X11 Input extension library
+ ii libxinerama1 2:1.1.3-1+b3 amd64 X11 Xinerama extension library
+ ii libxkbcommon0 0.7.1-1 amd64 library interface to the XKB compiler - shared library
+ ii libxml-security-c17v5 1.7.3-4 amd64 C++ library for XML Digital Signatures (runtime)
+ ii libxml2 2.9.4+dfsg1-2.2+deb9u1 amd64 GNOME XML library
+ ii libxml2-dev 2.9.4+dfsg1-2.2+deb9u1 amd64 Development files for the GNOME XML library
+ ii libxmu6 2:1.1.2-2 amd64 X11 miscellaneous utility library
+ ii libxmuu1 2:1.1.2-2 amd64 X11 miscellaneous micro-utility library
+ ii libxpm4 1:3.5.12-1 amd64 X11 pixmap library
+ ii libxrandr2 2:1.5.1-1 amd64 X11 RandR extension library
+ ii libxrender1 1:0.9.10-1 amd64 X Rendering Extension client library
+ ii libxshmfence1 1.2-1+b2 amd64 X shared memory fences - shared library
+ ii libxslt1-dev 1.1.29-2.1 amd64 XSLT 1.0 processing library - development kit
+ ii libxslt1.1 1.1.29-2.1 amd64 XSLT 1.0 processing library - runtime library
+ ii libxt6 1:1.1.5-1 amd64 X11 toolkit intrinsics library
+ ii libxtables12 1.6.0+snapshot20161117-6 amd64 netfilter xtables library
+ ii libxtst6 2:1.2.3-1 amd64 X11 Testing -- Record extension library
+ ii libxv1 2:1.0.11-1 amd64 X11 Video extension library
+ ii libxxf86dga1 2:1.1.4-1+b3 amd64 X11 Direct Graphics Access extension library
+ ii libxxf86vm1 1:1.1.4-1+b2 amd64 X11 XFree86 video mode extension library
+ ii libyaml-0-2 0.1.7-2 amd64 Fast YAML 1.1 parser and emitter library
+ ii libyaml-dev 0.1.7-2 amd64 Fast YAML 1.1 parser and emitter library (development)
+ ii linux-base 4.5 all Linux image base package
+ ii linux-compiler-gcc-6-x86 4.9.51-1 amd64 Compiler for Linux on x86 (meta-package)
+ ii linux-headers-4.9.0-4-amd64 4.9.51-1 amd64 Header files for Linux 4.9.0-4-amd64
+ ii linux-headers-4.9.0-4-common 4.9.51-1 all Common header files for Linux 4.9.0-4
+ ii linux-headers-amd64 4.9+80+deb9u2 amd64 Header files for Linux amd64 configuration (meta-package)
+ ii linux-image-4.9.0-4-amd64 4.9.51-1 amd64 Linux 4.9 for 64-bit PCs
+ ii linux-image-amd64 4.9+80+deb9u2 amd64 Linux for 64-bit PCs (meta-package)
+ ii linux-kbuild-4.9 4.9.51-1 amd64 Kbuild infrastructure for Linux 4.9
+ ii linux-libc-dev 4.9.51-1 amd64 Linux support headers for userspace development
+ ii locales 2.24-11+deb9u1 all GNU C Library: National Language (locale) data [support]
+ ii locate 4.6.0+git+20161106-2 amd64 maintain and query an index of a directory tree
+ ii login 1:4.4-4.1 amd64 system login tools
+ ii logrotate 3.11.0-0.1 amd64 Log rotation utility
+ ii lsb-base 9.20161125 all Linux Standard Base init script functionality
+ ii lsb-release 9.20161125 all Linux Standard Base version reporting utility
+ ii lsof 4.89+dfsg-0.1 amd64 Utility to list open files
+ ii lvm2 2.02.168-2 amd64 Linux Logical Volume Manager
+ ii m4 1.4.18-1 amd64 macro processing language
+ ii mailutils 1:3.1.1-1 amd64 GNU mailutils utilities for handling mail
+ ii mailutils-common 1:3.1.1-1 all Common files for GNU mailutils
+ ii make 4.1-9.1 amd64 utility for directing compilation
+ ii man-db 2.7.6.1-2 amd64 on-line manual pager
+ ii manpages 4.10-2 all Manual pages about using a GNU/Linux system
+ ii manpages-dev 4.10-2 all Manual pages about using GNU/Linux for development
+ ii mawk 1.3.3-17+b3 amd64 a pattern scanning and text processing language
+ ii mime-support 3.60 all MIME files 'mime.types' & 'mailcap', and support programs
+ ii mount 2.29.2-1 amd64 tools for mounting and manipulating filesystems
+ ii multiarch-support 2.24-11+deb9u1 amd64 Transitional package to ensure multiarch compatibility
+ ii mysql-common 5.8+1.0.2 all MySQL database common files, e.g. /etc/mysql/my.cnf
+ ii n2n 1.3.1~svn3789-5+b1 amd64 Peer-to-Peer VPN network daemon
+ ii nano 2.7.4-1 amd64 small, friendly text editor inspired by Pico
+ ii ncdu 1.12-1+b1 amd64 ncurses disk usage viewer
+ ii ncurses-base 6.0+20161126-1+deb9u1 all basic terminal type definitions
+ ii ncurses-bin 6.0+20161126-1+deb9u1 amd64 terminal-related programs and man pages
+ ii ncurses-term 6.0+20161126-1+deb9u1 all additional terminal type definitions
+ ii ndiff 7.40-1 all The Network Mapper - result compare utility
+ ii nessus 6.3.7 amd64 Nessus Scanner
+ ii net-tools 1.60+git20161116.90da8a0-1 amd64 NET-3 networking toolkit
+ ii netbase 5.4 all Basic TCP/IP networking system
+ ii netcat 1.10-41 all TCP/IP swiss army knife -- transitional package
+ ii netcat-traditional 1.10-41+b1 amd64 TCP/IP swiss army knife
+ ii netfilter-persistent 1.0.4+nmu2 all boot-time loader for netfilter configuration
+ ii nginx-common 1.10.3-1+deb9u1 all small, powerful, scalable web/proxy server - common files
+ ii nginx-light 1.10.3-1+deb9u1 amd64 nginx web/proxy server (basic version)
+ ii nmap 7.40-1 amd64 The Network Mapper
+ ii nodejs 4.8.2~dfsg-1 amd64 evented I/O for V8 javascript
+ ii notification-daemon 3.20.0-1+b1 amd64 daemon for displaying passive pop-up notifications
+ ii ntpdate 1:4.2.8p10+dfsg-3+deb9u1 amd64 client for setting system time from NTP servers
+ ii open-vm-tools 2:10.1.5-5055683-4+deb9u1 amd64 Open VMware Tools for virtual machines hosted on VMware (CLI)
+ ii open-vm-tools-dkms 2:10.1.5-5055683-4+deb9u1 all Open VMware Tools vmxnet kernel module (deprecated)
+ ii openjdk-8-jre 8u151-b12-1~deb9u1 amd64 OpenJDK Java runtime, using Hotspot JIT
+ ii openjdk-8-jre-headless 8u151-b12-1~deb9u1 amd64 OpenJDK Java runtime, using Hotspot JIT (headless)
+ ii openssh-client 1:7.4p1-10+deb9u1 amd64 secure shell (SSH) client, for secure access to remote machines
+ ii openssh-server 1:7.4p1-10+deb9u1 amd64 secure shell (SSH) server, for secure access from remote machines
+ ii openssh-sftp-server 1:7.4p1-10+deb9u1 amd64 secure shell (SSH) sftp server module, for SFTP access from remote machines
+ ii openssl 1.1.0f-3+deb9u1 amd64 Secure Sockets Layer toolkit - cryptographic utility
+ ii os-prober 1.76~deb9u1 amd64 utility to detect other OSes on a set of drives
+ ii passwd 1:4.4-4.1 amd64 change and administer password and group data
+ ii patch 2.7.5-1+b2 amd64 Apply a diff file to an original
+ ii pciutils 1:3.5.2-1 amd64 Linux PCI Utilities
+ ii perl 5.24.1-3+deb9u2 amd64 Larry Wall's Practical Extraction and Report Language
+ ii perl-base 5.24.1-3+deb9u2 amd64 minimal Perl system
+ ii perl-modules-5.24 5.24.1-3+deb9u2 all Core Perl modules
+ ii pgadmin3 1.22.2-1 amd64 graphical administration tool for PostgreSQL
+ ii pgadmin3-data 1.22.2-1 all graphical administration tool for PostgreSQL - documentation
+ ii pgagent 3.4.1-4 amd64 job scheduler for PostgreSQL
+ ii pinentry-curses 1.0.0-2 amd64 curses-based PIN or pass-phrase entry dialog for GnuPG
+ ii pkg-config 0.29-4+b1 amd64 manage compile and link flags for libraries
+ ii postgresql 9.6+181+deb9u1 all object-relational SQL database (supported version)
+ ii postgresql-9.6 9.6.6-0+deb9u1 amd64 object-relational SQL database, version 9.6 server
+ ii postgresql-client-9.6 9.6.6-0+deb9u1 amd64 front-end programs for PostgreSQL 9.6
+ ii postgresql-client-common 181+deb9u1 all manager for multiple PostgreSQL client versions
+ ii postgresql-common 181+deb9u1 all PostgreSQL database-cluster manager
+ ii postgresql-contrib 9.6+181+deb9u1 all additional facilities for PostgreSQL (supported version)
+ ii postgresql-contrib-9.6 9.6.6-0+deb9u1 amd64 additional facilities for PostgreSQL
+ ii powermgmt-base 1.31+nmu1 all Common utils and configs for power management
+ ii procmail 3.22-25+deb9u1 amd64 Versatile e-mail processor
+ ii procps 2:3.3.12-3 amd64 /proc file system utilities
+ ii psmisc 22.21-2.1+b2 amd64 utilities that use the proc file system
+ ii python 2.7.13-2 amd64 interactive high-level object-oriented language (default version)
+ ii python-apt 1.4.0~beta3 amd64 Python interface to libapt-pkg
+ ii python-apt-common 1.4.0~beta3 all Python interface to libapt-pkg (locales)
+ ii python-bs4 4.5.3-1 all error-tolerant HTML parser for Python
+ ii python-chardet 2.3.0-2 all universal character encoding detector for Python2
+ ii python-html5lib 0.999999999-1 all HTML parser/tokenizer based on the WHATWG HTML5 specification
+ ii python-lxml 3.7.1-1 amd64 pythonic binding for the libxml2 and libxslt libraries
+ ii python-minimal 2.7.13-2 amd64 minimal subset of the Python language (default version)
+ ii python-pkg-resources 33.1.1-1 all Package Discovery and Resource Access using pkg_resources
+ ii python-six 1.10.0-3 all Python 2 and 3 compatibility library (Python 2 interface)
+ ii python-webencodings 0.5-2 all Python implementation of the WHATWG Encoding standard
+ ii python-yaml 3.12-1 amd64 YAML parser and emitter for Python
+ ii python2.7 2.7.13-2 amd64 Interactive high-level object-oriented language (version 2.7)
+ ii python2.7-minimal 2.7.13-2 amd64 Minimal subset of the Python language (version 2.7)
+ ii python3 3.5.3-1 amd64 interactive high-level object-oriented language (default python3 version)
+ ii python3-apt 1.4.0~beta3 amd64 Python 3 interface to libapt-pkg
+ ii python3-chardet 2.3.0-2 all universal character encoding detector for Python3
+ ii python3-debian 0.1.30 all Python 3 modules to work with Debian-related data formats
+ ii python3-debianbts 2.6.1 all Python interface to Debian's Bug Tracking System
+ ii python3-httplib2 0.9.2+dfsg-1 all comprehensive HTTP client library written for Python3
+ ii python3-minimal 3.5.3-1 amd64 minimal subset of the Python language (default python3 version)
+ ii python3-pkg-resources 33.1.1-1 all Package Discovery and Resource Access using pkg_resources
+ ii python3-pycurl 7.43.0-2 amd64 Python bindings to libcurl (Python 3)
+ ii python3-pysimplesoap 1.16-2 all simple and lightweight SOAP Library (Python 3)
+ ii python3-reportbug 7.1.7 all Python modules for interacting with bug tracking systems
+ ii python3-requests 2.12.4-1 all elegant and simple HTTP library for Python3, built for human beings
+ ii python3-six 1.10.0-3 all Python 2 and 3 compatibility library (Python 3 interface)
+ ii python3-urllib3 1.19.1-1 all HTTP library with thread-safe connection pooling for Python3
+ ii python3.5 3.5.3-1 amd64 Interactive high-level object-oriented language (version 3.5)
+ ii python3.5-minimal 3.5.3-1 amd64 Minimal subset of the Python language (version 3.5)
+ ii rake 10.5.0-2 all ruby make-like utility
+ ii readline-common 7.0-3 all GNU readline and history libraries, common files
+ ii rename 0.20-4 all Perl extension for renaming multiple files
+ ii reportbug 7.1.7 all reports bugs in the Debian distribution
+ ii rsync 3.1.2-1 amd64 fast, versatile, remote (and local) file-copying tool
+ ii rsyslog 8.24.0-1 amd64 reliable system and kernel logging daemon
+ ii ruby 1:2.3.3 amd64 Interpreter of object-oriented scripting language Ruby (default version)
+ ii ruby-did-you-mean 1.0.0-2 all smart error messages for Ruby > 2.3
+ ii ruby-minitest 5.9.0-1 all Ruby test tools supporting TDD, BDD, mocking, and benchmarking
+ ii ruby-net-telnet 0.1.1-2 all telnet client library
+ ii ruby-power-assert 0.3.0-1 all library showing values of variables and method calls in an expression
+ ii ruby-test-unit 3.1.7-2 all unit testing framework for Ruby
+ ii ruby2.3 2.3.3-1+deb9u2 amd64 Interpreter of object-oriented scripting language Ruby
+ ii rubygems-integration 1.11 all integration of Debian Ruby packages with Rubygems
+ ii runit 2.1.2-9.2 amd64 system-wide service supervision
+ ii screen 4.5.0-6 amd64 terminal multiplexer with VT100/ANSI terminal emulation
+ ii sed 4.4-1 amd64 GNU stream editor for filtering/transforming text
+ ii sensible-utils 0.0.9 all Utilities for sensible alternative selection
+ ii sgml-base 1.29 all SGML infrastructure and SGML catalog file support
+ ii shared-mime-info 1.8-1 amd64 FreeDesktop.org shared MIME database and spec
+ ii ssl-cert 1.0.39 all simple debconf wrapper for OpenSSL
+ ii sudo 1.8.19p1-2.1 amd64 Provide limited super user privileges to specific users
+ ii sysstat 11.4.3-2 amd64 system performance tools for Linux
+ ii systemd 232-25+deb9u1 amd64 system and service manager
+ ii systemd-sysv 232-25+deb9u1 amd64 system and service manager - SysV links
+ ii sysvinit-utils 2.88dsf-59.9 amd64 System-V-like utilities
+ ii tar 1.29b-1.1 amd64 GNU version of the tar archiving utility
+ ii task-english 3.39 all General English environment
+ ii task-ssh-server 3.39 all SSH server
+ ii tasksel 3.39 all tool for selecting tasks for installation on Debian systems
+ ii tasksel-data 3.39 all official tasks used for installation of Debian systems
+ ii tcpd 7.6.q-26 amd64 Wietse Venema's TCP wrapper utilities
+ ii tcpdump 4.9.2-1~deb9u1 amd64 command-line network traffic analyzer
+ ii telnet 0.17-41 amd64 basic telnet client
+ ii tigervnc-viewer 1.7.0+dfsg-7 amd64 Virtual network computing client for X
+ ii tmux 2.3-4 amd64 terminal multiplexer
+ ii traceroute 1:2.1.0-2 amd64 Traces the route taken by packets over an IPv4/IPv6 network
+ ii tzdata 2017c-0+deb9u1 all time zone and daylight-saving time data
+ ii ucf 3.0036 all Update Configuration File(s): preserve user changes to config files
+ ii udev 232-25+deb9u1 amd64 /dev/ and hotplug management daemon
+ ii unzip 6.0-21 amd64 De-archiver for .zip files
+ ii util-linux 2.29.2-1 amd64 miscellaneous system utilities
+ ii util-linux-locales 2.29.2-1 all locales files for util-linux
+ ii uuid-dev 2.29.2-1 amd64 Universally Unique ID library - headers and static libraries
+ ii vim 2:8.0.0197-4+deb9u1 amd64 Vi IMproved - enhanced vi editor
+ ii vim-common 2:8.0.0197-4+deb9u1 all Vi IMproved - Common files
+ ii vim-nox 2:8.0.0197-4+deb9u1 amd64 Vi IMproved - enhanced vi editor - with scripting languages support
+ ii vim-runtime 2:8.0.0197-4+deb9u1 all Vi IMproved - Runtime files
+ ii vim-tiny 2:8.0.0197-4+deb9u1 amd64 Vi IMproved - enhanced vi editor - compact version
+ ii w3m 0.5.3-34 amd64 WWW browsable pager with excellent tables/frames support
+ ii wamerican 7.1-1 all American English dictionary words for /usr/share/dict
+ ii wget 1.18-5+deb9u1 amd64 retrieves files from the web
+ ii whiptail 0.52.19-1+b1 amd64 Displays user-friendly dialog boxes from shell scripts
+ ii x11-common 1:7.7+19 all X Window System (X.Org) infrastructure
+ ii x11-utils 7.7+3+b1 amd64 X11 utilities
+ ii xauth 1:1.0.9-1+b2 amd64 X authentication utility
+ ii xdg-user-dirs 0.15-2+b1 amd64 tool to manage well known user directories
+ ii xfonts-base 1:1.0.4+nmu1 all standard fonts for X
+ ii xfonts-encodings 1:1.0.4-2 all Encodings for X.Org fonts
+ ii xfonts-utils 1:7.7+4 amd64 X Window System font utility programs
+ ii xkb-data 2.19-1+deb9u1 all X Keyboard Extension (XKB) configuration data
+ ii xml-core 0.17 all XML infrastructure and XML catalog file support
+ ii xtightvncviewer 1:1.3.9-9 amd64 virtual network computing client software for X
+ ii xxd 2:8.0.0197-4+deb9u1 amd64 tool to make (or reverse) a hex dump
+ ii xz-utils 5.2.2-1.2+b1 amd64 XZ-format compression utilities
+ ii zerofree 1.0.4-1 amd64 zero free blocks from ext2, ext3 and ext4 file-systems
+ ii zip 3.0-11+b1 amd64 Archiver for .zip files
+ ii zlib1g 1:1.2.8.dfsg-5 amd64 compression library - runtime
+ ii zlib1g-dev 1:1.2.8.dfsg-5 amd64 compression library - development
+ rc bridge-utils 1.5-13+deb9u1 amd64 Utilities for configuring the Linux Ethernet bridge
+ rc ferm 2.3-2 all maintain and setup complicated firewall rules
+ rc netscript-2.4 5.5.1 all Linux 2.4/2.6/3.x router/firewall/VM host network config system.
+
+
+
+unix
+Nessus was able to retrieve information about the remote system's hardware, such as its processor type, by using the SMBIOS (aka DMI) interface.
+dmi_proc_info.nasl
+2016/02/25
+Processor Information (via DMI)
+2010/04/06
+local
+None
+$Revision: 1.7 $
+n/a
+Nessus was able to read information about the remote system's processor.
+
+Nessus detected 1 processor :
+
+Current Speed : 2133 MHz
+Version : Intel(R) Xeon(R) CPU E7- 2830 @ 2.13GHz
+Manufacturer : GenuineIntel
+External Clock : Unknown
+Status : Populated, Enabled
+Family : Unknown
+Type : Central Processor
+
+
+
+Using the SMBIOS (aka DMI) interface, it was possible to retrieve information about the remote system's memory devices, such as the total amount of installed memory.
+dmi_RAM_info.nasl
+2011/03/21
+Memory Information (via DMI)
+2010/04/06
+local
+None
+$Revision: 1.2 $
+n/a
+Information about the remote system's memory devices can be read.
+
+Total memory : 4096 MB
+
+
+unix
+Using the SMBIOS (aka DMI) interface, it was possible to retrieve information about the remote system's hardware, such as its product name and serial number.
+dmi_system_info.nasl
+2016/08/17
+System Information Enumeration (via DMI)
+2009/01/12
+local
+None
+$Revision: 1.9 $
+n/a
+Information about the remote system's hardware can be read.
+Chassis Information
+ Serial Number : None
+ Version : N/A
+ Manufacturer : No Enclosure
+ Lock : Not Present
+ Type : Other
+
+System Information
+ Serial Number : VMware-42 31 07 74 c0 c0 be 67-af 1a 47 38 3d d3 db e7
+ Version : None
+ Manufacturer : VMware, Inc.
+ Product Name : VMware Virtual Platform
+ Family : Not Specified
+
+
+
+
+unix
+Using the SMBIOS (aka DMI) interface, it was possible to get the BIOS vendor and version.
+bios_get_info_ssh.nasl
+2017/08/28
+BIOS version (SSH)
+2008/09/08
+local
+None
+1.12
+N/A
+The BIOS version could be read.
+Version : 6.00
+Vendor : Phoenix Technologies LTD
+Release Date : 04/05/2016
+UUID : 74073142-C0C0-67BE-AF1A-47383DD3DBE7
+
+
+
+p-cpe:/a:debian:debian_linux:linux
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-1000407
+CVE-2017-1000410
+CVE-2017-16538
+CVE-2017-16644
+CVE-2017-16995
+CVE-2017-17448
+CVE-2017-17449
+CVE-2017-17450
+CVE-2017-17558
+CVE-2017-17712
+CVE-2017-17741
+CVE-2017-17805
+CVE-2017-17806
+CVE-2017-17807
+CVE-2017-17862
+CVE-2017-17863
+CVE-2017-17864
+CVE-2017-8824
+7.8
+CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
+7.2
+5.3
+CVSS2#E:U/RL:OF/RC:C
+CVSS2#AV:L/AC:L/Au:N/C:C/I:C/A:C
+Several vulnerabilities have been discovered in the Linux kernel that may lead to a privilege escalation, denial of service or information leaks.
+
+ - CVE-2017-8824 Mohamed Ghannam discovered that the DCCP implementation did not correctly manage resources when a socket is disconnected and reconnected, potentially leading to a use-after-free. A local user could use this for denial of service (crash or data corruption) or possibly for privilege escalation. On systems that do not already have the dccp module loaded, this can be mitigated by disabling it:echo >> /etc/modprobe.d/disable-dccp.conf install dccp false
+
+ - CVE-2017-16538 Andrey Konovalov reported that the dvb-usb-lmedm04 media driver did not correctly handle some error conditions during initialisation. A physically present user with a specially designed USB device can use this to cause a denial of service (crash).
+
+ - CVE-2017-16644 Andrey Konovalov reported that the hdpvr media driver did not correctly handle some error conditions during initialisation. A physically present user with a specially designed USB device can use this to cause a denial of service (crash).
+
+ - CVE-2017-16995 Jann Horn discovered that the Extended BPF verifier did not correctly model the behaviour of 32-bit load instructions. A local user can use this for privilege escalation.
+
+ - CVE-2017-17448 Kevin Cernekee discovered that the netfilter subsystem allowed users with the CAP_NET_ADMIN capability in any user namespace, not just the root namespace, to enable and disable connection tracking helpers. This could lead to denial of service, violation of network security policy, or have other impact.
+
+ - CVE-2017-17449 Kevin Cernekee discovered that the netlink subsystem allowed users with the CAP_NET_ADMIN capability in any user namespace to monitor netlink traffic in all net namespaces, not just those owned by that user namespace.
+ This could lead to exposure of sensitive information.
+
+ - CVE-2017-17450 Kevin Cernekee discovered that the xt_osf module allowed users with the CAP_NET_ADMIN capability in any user namespace to modify the global OS fingerprint list.
+
+ - CVE-2017-17558 Andrey Konovalov reported that that USB core did not correctly handle some error conditions during initialisation. A physically present user with a specially designed USB device can use this to cause a denial of service (crash or memory corruption), or possibly for privilege escalation.
+
+ - CVE-2017-17712 Mohamed Ghannam discovered a race condition in the IPv4 raw socket implementation. A local user could use this to obtain sensitive information from the kernel.
+
+ - CVE-2017-17741 Dmitry Vyukov reported that the KVM implementation for x86 would over-read data from memory when emulating an MMIO write if the kvm_mmio tracepoint was enabled. A guest virtual machine might be able to use this to cause a denial of service (crash).
+
+ - CVE-2017-17805 It was discovered that some implementations of the Salsa20 block cipher did not correctly handle zero-length input. A local user could use this to cause a denial of service (crash) or possibly have other security impact.
+
+ - CVE-2017-17806 It was discovered that the HMAC implementation could be used with an underlying hash algorithm that requires a key, which was not intended. A local user could use this to cause a denial of service (crash or memory corruption), or possibly for privilege escalation.
+
+ - CVE-2017-17807 Eric Biggers discovered that the KEYS subsystem lacked a check for write permission when adding keys to a process's default keyring. A local user could use this to cause a denial of service or to obtain sensitive information.
+
+ - CVE-2017-17862 Alexei Starovoitov discovered that the Extended BPF verifier ignored unreachable code, even though it would still be processed by JIT compilers. This could possibly be used by local users for denial of service. It also increases the severity of bugs in determining unreachable code.
+
+ - CVE-2017-17863 Jann Horn discovered that the Extended BPF verifier did not correctly model pointer arithmetic on the stack frame pointer. A local user can use this for privilege escalation.
+
+ - CVE-2017-17864 Jann Horn discovered that the Extended BPF verifier could fail to detect pointer leaks from conditional code. A local user could use this to obtain sensitive information in order to exploit other vulnerabilities.
+
+ - CVE-2017-1000407 Andrew Honig reported that the KVM implementation for Intel processors allowed direct access to host I/O port 0x80, which is not generally safe. On some systems this allows a guest VM to cause a denial of service (crash) of the host.
+
+ - CVE-2017-1000410 Ben Seri reported that the Bluetooth subsystem did not correctly handle short EFS information elements in L2CAP messages. An attacker able to communicate over Bluetooth could use this to obtain sensitive information from the kernel.
+
+The various problems in the Extended BPF verifier can be mitigated by disabling use of Extended BPF by unprivileged users:sysctl kernel.unprivileged_bpf_disabled=1
+
+Debian disables unprivileged user namespaces by default, but if they are enabled (via the kernel.unprivileged_userns_clone sysctl) then CVE-2017-17448 can be exploited by any local user.
+4073
+false
+No known exploits are available
+debian_DSA-4073.nasl
+171481
+2017/12/23
+2018/02/07
+Debian DSA-4073-1 : linux - security update
+2017/12/26
+local
+High
+$Revision: 3.5 $
+https://security-tracker.debian.org/tracker/CVE-2017-8824
+https://security-tracker.debian.org/tracker/CVE-2017-16538
+https://security-tracker.debian.org/tracker/CVE-2017-16644
+https://security-tracker.debian.org/tracker/CVE-2017-16995
+https://security-tracker.debian.org/tracker/CVE-2017-17448
+https://security-tracker.debian.org/tracker/CVE-2017-17449
+https://security-tracker.debian.org/tracker/CVE-2017-17450
+https://security-tracker.debian.org/tracker/CVE-2017-17558
+https://security-tracker.debian.org/tracker/CVE-2017-17712
+https://security-tracker.debian.org/tracker/CVE-2017-17741
+https://security-tracker.debian.org/tracker/CVE-2017-17805
+https://security-tracker.debian.org/tracker/CVE-2017-17806
+https://security-tracker.debian.org/tracker/CVE-2017-17807
+https://security-tracker.debian.org/tracker/CVE-2017-17862
+https://security-tracker.debian.org/tracker/CVE-2017-17863
+https://security-tracker.debian.org/tracker/CVE-2017-17864
+https://security-tracker.debian.org/tracker/CVE-2017-1000407
+https://security-tracker.debian.org/tracker/CVE-2017-1000410
+https://security-tracker.debian.org/tracker/CVE-2017-17448
+https://security-tracker.debian.org/tracker/linux
+https://packages.debian.org/source/stretch/linux
+http://www.debian.org/security/2017/dsa-4073
+Upgrade the linux packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 4.9.65-3+deb9u1.
+The remote Debian host is missing a security-related update.
+OSVDB:171481
+DSA:4073
+
+Remote package installed : linux-compiler-gcc-6-x86_4.9.51-1
+Should be : linux-compiler-gcc-6-x86_4.9.65-3+deb9u1
+Remote package installed : linux-headers-4.9.0-4-amd64_4.9.51-1
+Should be : linux-headers-4.9.0-3-amd64_4.9.65-3+deb9u1
+Remote package installed : linux-headers-4.9.0-4-common_4.9.51-1
+Should be : linux-headers-4.9.0-3-common_4.9.65-3+deb9u1
+Remote package installed : linux-headers-4.9.0-4-amd64_4.9.51-1
+Should be : linux-headers-4.9.0-4-amd64_4.9.65-3+deb9u1
+Remote package installed : linux-headers-4.9.0-4-common_4.9.51-1
+Should be : linux-headers-4.9.0-4-common_4.9.65-3+deb9u1
+Remote package installed : linux-headers-4.9.0-4-amd64_4.9.51-1
+Should be : linux-headers-4.9.0-5-amd64_4.9.65-3+deb9u1
+Remote package installed : linux-headers-4.9.0-4-common_4.9.51-1
+Should be : linux-headers-4.9.0-5-common_4.9.65-3+deb9u1
+Remote package installed : linux-image-4.9.0-4-amd64_4.9.51-1
+Should be : linux-image-4.9.0-3-amd64_4.9.65-3+deb9u1
+Remote package installed : linux-image-4.9.0-4-amd64_4.9.51-1
+Should be : linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1
+Remote package installed : linux-image-4.9.0-4-amd64_4.9.51-1
+Should be : linux-image-4.9.0-5-amd64_4.9.65-3+deb9u1
+Remote package installed : linux-kbuild-4.9_4.9.51-1
+Should be : linux-kbuild-4.9_4.9.65-3+deb9u1
+Remote package installed : linux-libc-dev_4.9.51-1
+Should be : linux-libc-dev_4.9.65-3+deb9u1
+
+
+
+p-cpe:/a:debian:debian_linux:libtasn1-6
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-10790
+CVE-2018-6003
+7.5
+CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
+5.0
+CVSS2#AV:N/AC:L/Au:N/C:N/I:N/A:P
+Two vulnerabilities were discovered in Libtasn1, a library to manage ASN.1 structures, allowing a remote attacker to cause a denial of service against an application using the Libtasn1 library.
+4106
+debian_DSA-4106.nasl
+2018/02/07
+2018/02/08
+Debian DSA-4106-1 : libtasn1-6 - security update
+2018/02/08
+local
+Medium
+$Revision: 3.1 $
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=867398
+https://security-tracker.debian.org/tracker/libtasn1-6
+https://packages.debian.org/source/stretch/libtasn1-6
+http://www.debian.org/security/2018/dsa-4106
+Upgrade the libtasn1-6 packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 4.10-1.1+deb9u1.
+The remote Debian host is missing a security-related update.
+DSA:4106
+
+Remote package installed : libtasn1-6_4.10-1.1
+Should be : libtasn1-6_4.10-1.1+deb9u1
+
+
+
+p-cpe:/a:debian:debian_linux:openssl1.0
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-3737
+CVE-2017-3738
+5.9
+CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
+4.3
+CVSS2#AV:N/AC:M/Au:N/C:P/I:N/A:N
+Multiple vulnerabilities have been discovered in OpenSSL, a Secure Sockets Layer toolkit. The Common Vulnerabilities and Exposures project identifies the following issues :
+
+ - CVE-2017-3737 David Benjamin of Google reported that OpenSSL does not properly handle SSL_read() and SSL_write() while being invoked in an error state, causing data to be passed without being decrypted or encrypted directly from the SSL/TLS record layer.
+
+ - CVE-2017-3738 It was discovered that OpenSSL contains an overflow bug in the AVX2 Montgomery multiplication procedure used in exponentiation with 1024-bit moduli.
+
+Details can be found in the upstream advisory:
+https://www.openssl.org/news/secadv/20171207.txt
+4065
+debian_DSA-4065.nasl
+2017/12/17
+2018/01/29
+Debian DSA-4065-1 : openssl1.0 - security update
+2017/12/18
+local
+Medium
+$Revision: 3.5 $
+https://security-tracker.debian.org/tracker/CVE-2017-3737
+https://security-tracker.debian.org/tracker/CVE-2017-3738
+https://www.openssl.org/news/secadv/20171207.txt
+https://security-tracker.debian.org/tracker/openssl1.0
+https://packages.debian.org/source/stretch/openssl1.0
+http://www.debian.org/security/2017/dsa-4065
+Upgrade the openssl1.0 packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 1.0.2l-2+deb9u2.
+The remote Debian host is missing a security-related update.
+DSA:4065
+
+Remote package installed : libssl1.0.2_1.0.2l-2+deb9u1
+Should be : libssl1.0.2_1.0.2l-2+deb9u2
+
+
+
+unix
+Each ethernet MAC address starts with a 24-bit Organizationally Unique Identifier (OUI). These OUIs are registered by IEEE.
+ethernet_manufacturer.nasl
+2017/11/17
+Ethernet Card Manufacturer Detection
+2009/02/19
+combined
+None
+$Revision: 1.12 $
+http://standards.ieee.org/faqs/regauth.html
+http://www.nessus.org/u?794673b4
+n/a
+The manufacturer can be identified from the Ethernet OUI.
+
+The following card manufacturers were identified :
+
+00:50:56:b1:64:78 : VMware, Inc.
+
+
+
+According to the MAC address of its network adapter, the remote host is a VMware virtual machine.
+vmware_detect.nasl
+2015/10/16
+VMware Virtual Machine Detection
+2005/10/27
+combined
+None
+$Revision: 1.26 $
+Since it is physically accessible through the network, ensure that its configuration matches your organization's security policy.
+The remote host is a VMware virtual machine.
+
+The remote host is a VMware virtual machine.
+
+
+
+p-cpe:/a:debian:debian_linux:exim4
+cpe:/o:debian:debian_linux:8.0
+cpe:/o:debian:debian_linux:9.0
+CVE-2018-6789
+Meh Chang discovered a buffer overflow flaw in a utility function used in the SMTP listener of Exim, a mail transport agent. A remote attacker can take advantage of this flaw to cause a denial of service, or potentially the execution of arbitrary code via a specially crafted message.
+4110
+debian_DSA-4110.nasl
+2018/02/10
+2018/02/12
+Debian DSA-4110-1 : exim4 - security update
+2018/02/12
+local
+High
+$Revision: 3.1 $
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=890000
+https://security-tracker.debian.org/tracker/exim4
+https://packages.debian.org/source/jessie/exim4
+https://packages.debian.org/source/stretch/exim4
+http://www.debian.org/security/2018/dsa-4110
+Upgrade the exim4 packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 4.84.2-2+deb8u5.
+
+For the stable distribution (stretch), this problem has been fixed in version 4.89-2+deb9u3.
+The remote Debian host is missing a security-related update.
+DSA:4110
+
+Remote package installed : exim4_4.89-2+deb9u2
+Should be : exim4_4.89-2+deb9u3
+Remote package installed : exim4-base_4.89-2+deb9u2
+Should be : exim4-base_4.89-2+deb9u3
+Remote package installed : exim4-config_4.89-2+deb9u2
+Should be : exim4-config_4.89-2+deb9u3
+Remote package installed : exim4-daemon-light_4.89-2+deb9u2
+Should be : exim4-daemon-light_4.89-2+deb9u3
+
+
+
+p-cpe:/a:debian:debian_linux:gcc-6
+cpe:/o:debian:debian_linux:9.0
+This update doesn't fix a vulnerability in GCC itself, but instead provides support for building retpoline-enabled Linux kernel updates.
+4121
+debian_DSA-4121.nasl
+2018/02/22
+2018/02/23
+Debian DSA-4121-1 : gcc-6 - security update
+2018/02/23
+local
+High
+$Revision: 3.1 $
+https://packages.debian.org/source/stretch/gcc-6
+http://www.debian.org/security/2018/dsa-4121
+Upgrade the gcc-6 packages.
+
+For the stable distribution (stretch), this problem has been fixed in version 6.3.0-18+deb9u1.
+The remote Debian host is missing a security-related update.
+DSA:4121
+
+Remote package installed : cpp-6_6.3.0-18
+Should be : cpp-6_6.3.0-18+deb9u1
+Remote package installed : gcc-6_6.3.0-18
+Should be : gcc-6_6.3.0-18+deb9u1
+Remote package installed : gcc-6-base_6.3.0-18
+Should be : gcc-6-base_6.3.0-18+deb9u1
+Remote package installed : libasan3_6.3.0-18
+Should be : libasan3_6.3.0-18+deb9u1
+Remote package installed : libatomic1_6.3.0-18
+Should be : libatomic1_6.3.0-18+deb9u1
+Remote package installed : libcc1-0_6.3.0-18
+Should be : libcc1-0_6.3.0-18+deb9u1
+Remote package installed : libcilkrts5_6.3.0-18
+Should be : libcilkrts5_6.3.0-18+deb9u1
+Remote package installed : libgcc-6-dev_6.3.0-18
+Should be : libgcc-6-dev_6.3.0-18+deb9u1
+Remote package installed : libgfortran3_6.3.0-18
+Should be : libgfortran3_6.3.0-18+deb9u1
+Remote package installed : libgomp1_6.3.0-18
+Should be : libgomp1_6.3.0-18+deb9u1
+Remote package installed : libitm1_6.3.0-18
+Should be : libitm1_6.3.0-18+deb9u1
+Remote package installed : liblsan0_6.3.0-18
+Should be : liblsan0_6.3.0-18+deb9u1
+Remote package installed : libmpx2_6.3.0-18
+Should be : libmpx2_6.3.0-18+deb9u1
+Remote package installed : libquadmath0_6.3.0-18
+Should be : libquadmath0_6.3.0-18+deb9u1
+Remote package installed : libtsan0_6.3.0-18
+Should be : libtsan0_6.3.0-18+deb9u1
+Remote package installed : libubsan0_6.3.0-18
+Should be : libubsan0_6.3.0-18+deb9u1
+
+
+
+Using the supplied credentials, Nessus was able to list local users that are enabled and whose passwords never expire.
+localusers_pwexpiry.nasl
+755
+2017/08/28
+Unix / Linux - Local Users Information : Passwords Never Expire
+2015/05/10
+local
+None
+1.5
+Allow or require users to change their passwords regularly.
+At least one local user has a password that never expires.
+OSVDB:755
+
+Nessus found the following unlocked users with passwords that do not expire :
+ - wholoch
+ - therres
+ - kuhnrap
+ - bpa
+ - rilliju
+
+
+
+p-cpe:/a:debian:debian_linux:rsync
+cpe:/o:debian:debian_linux:8.0
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-16548
+CVE-2017-17433
+CVE-2017-17434
+9.8
+CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
+7.5
+CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P
+Several vulnerabilities were discovered in rsync, a fast, versatile, remote (and local) file-copying tool, allowing a remote attacker to bypass intended access restrictions or cause a denial of service.
+4068
+debian_DSA-4068.nasl
+2017/12/17
+2018/01/29
+Debian DSA-4068-1 : rsync - security update
+2017/12/18
+local
+High
+$Revision: 3.2 $
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=880954
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=883665
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=883667
+https://security-tracker.debian.org/tracker/rsync
+https://packages.debian.org/source/jessie/rsync
+https://packages.debian.org/source/stretch/rsync
+http://www.debian.org/security/2017/dsa-4068
+Upgrade the rsync packages.
+
+For the oldstable distribution (jessie), these problems have been fixed in version 3.1.1-3+deb8u1.
+
+For the stable distribution (stretch), these problems have been fixed in version 3.1.2-1+deb9u1.
+The remote Debian host is missing a security-related update.
+DSA:4068
+
+Remote package installed : rsync_3.1.2-1
+Should be : rsync_3.1.2-1+deb9u1
+
+
+
+unix
+Nessus was able to enumerate MAC addresses by connecting to the remote host via SSH with the supplied credentials.
+ifconfig_mac.nasl
+2017/01/26
+Enumerate MAC Addresses via SSH
+2008/06/30
+local
+None
+$Revision: 1.16 $
+Disable any unused interfaces.
+Nessus was able to enumerate MAC addresses on the remote host.
+
+The following MAC address exists on the remote host :
+
+ - 00:50:56:b1:64:78 (interface ens160)
+
+
+
+p-cpe:/a:debian:debian_linux:libvorbis
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-14632
+CVE-2017-14633
+9.8
+CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
+7.5
+CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P
+Two vulnerabilities were discovered in the libraries of the Vorbis audio compression codec, which could result in denial of service or the execution of arbitrary code if a malformed media file is processed.
+4113
+debian_DSA-4113.nasl
+2018/02/14
+2018/02/16
+Debian DSA-4113-1 : libvorbis - security update
+2018/02/16
+local
+High
+$Revision: 3.1 $
+https://security-tracker.debian.org/tracker/libvorbis
+https://packages.debian.org/source/stretch/libvorbis
+http://www.debian.org/security/2018/dsa-4113
+Upgrade the libvorbis packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 1.3.5-4+deb9u1.
+The remote Debian host is missing a security-related update.
+DSA:4113
+
+Remote package installed : libvorbis0a_1.3.5-4
+Should be : libvorbis0a_1.3.5-4+deb9u1
+Remote package installed : libvorbisenc2_1.3.5-4
+Should be : libvorbisenc2_1.3.5-4+deb9u1
+
+
+
+p-cpe:/a:debian:debian_linux:sensible-utils
+cpe:/o:debian:debian_linux:8.0
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-17512
+8.8
+CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
+6.8
+CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P
+Gabriel Corona reported that sensible-browser from sensible-utils, a collection of small utilities used to sensibly select and spawn an appropriate browser, editor or pager, does not validate strings before launching the program specified by the BROWSER environment variable, potentially allowing a remote attacker to conduct argument-injection attacks if a user is tricked into processing a specially crafted URL.
+4071
+debian_DSA-4071.nasl
+2017/12/21
+2018/01/29
+Debian DSA-4071-1 : sensible-utils - security update
+2017/12/26
+local
+Medium
+$Revision: 3.3 $
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=881767
+https://security-tracker.debian.org/tracker/sensible-utils
+https://packages.debian.org/source/jessie/sensible-utils
+https://packages.debian.org/source/stretch/sensible-utils
+http://www.debian.org/security/2017/dsa-4071
+Upgrade the sensible-utils packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 0.0.9+deb8u1.
+
+For the stable distribution (stretch), this problem has been fixed in version 0.0.9+deb9u1.
+The remote Debian host is missing a security-related update.
+DSA:4071
+
+Remote package installed : sensible-utils_0.0.9
+Should be : sensible-utils_0.0.9+deb9u1
+
+
+
+p-cpe:/a:debian:debian_linux:linux
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-13166
+CVE-2017-5715
+CVE-2017-5754
+CVE-2018-5750
+7.8
+CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
+4.7
+CVSS2#AV:L/AC:M/Au:N/C:C/I:N/A:N
+Several vulnerabilities have been discovered in the Linux kernel that may lead to a privilege escalation, denial of service or information leaks.
+
+ - CVE-2017-5715 Multiple researchers have discovered a vulnerability in various processors supporting speculative execution, enabling an attacker controlling an unprivileged process to read memory from arbitrary addresses, including from the kernel and all other processes running on the system.
+
+ This specific attack has been named Spectre variant 2 (branch target injection) and is mitigated in the Linux kernel for the Intel x86-64 architecture by using the 'retpoline' compiler feature which allows indirect branches to be isolated from speculative execution.
+
+ - CVE-2017-5754 Multiple researchers have discovered a vulnerability in Intel processors, enabling an attacker controlling an unprivileged process to read memory from arbitrary addresses, including from the kernel and all other processes running on the system.
+
+ This specific attack has been named Meltdown and is addressed in the Linux kernel on the powerpc/ppc64el architectures by flushing the L1 data cache on exit from kernel mode to user mode (or from hypervisor to kernel).
+
+ This works on Power7, Power8 and Power9 processors.
+
+ - CVE-2017-13166 A bug in the 32-bit compatibility layer of the v4l2 IOCTL handling code has been found. Memory protections ensuring user-provided buffers always point to userland memory were disabled, allowing destination address to be in kernel space. This bug could be exploited by an attacker to overwrite kernel memory from an unprivileged userland process, leading to privilege escalation.
+
+ - CVE-2018-5750 An information leak has been found in the Linux kernel.
+ The acpi_smbus_hc_add() prints a kernel address in the kernel log at every boot, which could be used by an attacker on the system to defeat kernel ASLR.
+
+Additionnaly to those vulnerability, some mitigations for CVE-2017-5753 are included in this release.
+
+ - CVE-2017-5753 Multiple researchers have discovered a vulnerability in various processors supporting speculative execution, enabling an attacker controlling an unprivileged process to read memory from arbitrary addresses, including from the kernel and all other processes running on the system.
+
+ This specific attack has been named Spectre variant 1 (bounds-check bypass) and is mitigated in the Linux kernel architecture by identifying vulnerable code sections (array bounds checking followed by array access) and replacing the array access with the speculation-safe array_index_nospec() function.
+
+ More use sites will be added over time.
+4120
+true
+Exploits are available
+true
+debian_DSA-4120.nasl
+2018-A-0019
+2018-A-0020
+true
+2018/02/22
+2018/02/26
+Debian DSA-4120-1 : linux - security update (Meltdown) (Spectre)
+2018/02/23
+local
+Medium
+$Revision: 3.2 $
+https://security-tracker.debian.org/tracker/CVE-2017-5715
+https://security-tracker.debian.org/tracker/CVE-2017-5754
+https://security-tracker.debian.org/tracker/CVE-2017-13166
+https://security-tracker.debian.org/tracker/CVE-2018-5750
+https://security-tracker.debian.org/tracker/CVE-2017-5753
+https://security-tracker.debian.org/tracker/CVE-2017-5753
+https://security-tracker.debian.org/tracker/linux
+https://packages.debian.org/source/stretch/linux
+http://www.debian.org/security/2018/dsa-4120
+Upgrade the linux packages.
+
+For the stable distribution (stretch), these problems have been fixed in version 4.9.82-1+deb9u2.
+I
+The remote Debian host is missing a security-related update.
+DSA:4120
+IAVA:2018-A-0019
+IAVA:2018-A-0020
+
+Remote package installed : linux-compiler-gcc-6-x86_4.9.51-1
+Should be : linux-compiler-gcc-6-x86_4.9.82-1+deb9u2
+Remote package installed : linux-headers-4.9.0-4-amd64_4.9.51-1
+Should be : linux-headers-4.9.0-3-amd64_4.9.82-1+deb9u2
+Remote package installed : linux-headers-4.9.0-4-common_4.9.51-1
+Should be : linux-headers-4.9.0-3-common_4.9.82-1+deb9u2
+Remote package installed : linux-headers-4.9.0-4-amd64_4.9.51-1
+Should be : linux-headers-4.9.0-4-amd64_4.9.82-1+deb9u2
+Remote package installed : linux-headers-4.9.0-4-common_4.9.51-1
+Should be : linux-headers-4.9.0-4-common_4.9.82-1+deb9u2
+Remote package installed : linux-headers-4.9.0-4-amd64_4.9.51-1
+Should be : linux-headers-4.9.0-5-amd64_4.9.82-1+deb9u2
+Remote package installed : linux-headers-4.9.0-4-common_4.9.51-1
+Should be : linux-headers-4.9.0-5-common_4.9.82-1+deb9u2
+Remote package installed : linux-image-4.9.0-4-amd64_4.9.51-1
+Should be : linux-image-4.9.0-3-amd64_4.9.82-1+deb9u2
+Remote package installed : linux-image-4.9.0-4-amd64_4.9.51-1
+Should be : linux-image-4.9.0-4-amd64_4.9.82-1+deb9u2
+Remote package installed : linux-image-4.9.0-4-amd64_4.9.51-1
+Should be : linux-image-4.9.0-5-amd64_4.9.82-1+deb9u2
+Remote package installed : linux-kbuild-4.9_4.9.51-1
+Should be : linux-kbuild-4.9_4.9.82-1+deb9u2
+Remote package installed : linux-libc-dev_4.9.51-1
+Should be : linux-libc-dev_4.9.82-1+deb9u2
+
+
+
+p-cpe:/a:debian:debian_linux:libxcursor
+cpe:/o:debian:debian_linux:8.0
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-16612
+7.5
+CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
+5.0
+CVSS2#AV:N/AC:L/Au:N/C:N/I:N/A:P
+It was discovered that libXcursor, a X cursor management library, is prone to several heap overflows when parsing malicious files. An attacker can take advantage of these flaws for arbitrary code execution, if a user is tricked into processing a specially crafted cursor file.
+4059
+debian_DSA-4059.nasl
+2017/12/08
+2018/01/29
+Debian DSA-4059-1 : libxcursor - security update
+2017/12/11
+local
+Medium
+$Revision: 3.3 $
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=883792
+https://security-tracker.debian.org/tracker/libxcursor
+https://packages.debian.org/source/jessie/libxcursor
+https://packages.debian.org/source/stretch/libxcursor
+http://www.debian.org/security/2017/dsa-4059
+Upgrade the libxcursor packages.
+
+For the oldstable distribution (jessie), these problems have been fixed in version 1:1.1.14-1+deb8u1.
+
+For the stable distribution (stretch), these problems have been fixed in version 1:1.1.14-1+deb9u1.
+The remote Debian host is missing a security-related update.
+DSA:4059
+
+Remote package installed : libxcursor1_1:1.1.14-1+b4
+Should be : libxcursor1_1:1.1.14-1+deb9u1
+
+
+
+p-cpe:/a:debian:debian_linux:libxml2
+cpe:/o:debian:debian_linux:8.0
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-15412
+Nick Wellnhofer discovered that certain function calls inside XPath predicates can lead to use-after-free and double-free errors when executed by libxml2's XPath engine via an XSLT transformation.
+4086
+debian_DSA-4086.nasl
+2018/01/13
+2018/01/15
+Debian DSA-4086-1 : libxml2 - security update
+2018/01/15
+local
+High
+$Revision: 3.1 $
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=883790
+https://security-tracker.debian.org/tracker/libxml2
+https://packages.debian.org/source/jessie/libxml2
+https://packages.debian.org/source/stretch/libxml2
+http://www.debian.org/security/2018/dsa-4086
+Upgrade the libxml2 packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 2.9.1+dfsg1-5+deb8u6.
+
+For the stable distribution (stretch), this problem has been fixed in version 2.9.4+dfsg1-2.2+deb9u2.
+The remote Debian host is missing a security-related update.
+DSA:4086
+
+Remote package installed : libxml2_2.9.4+dfsg1-2.2+deb9u1
+Should be : libxml2_2.9.4+dfsg1-2.2+deb9u2
+Remote package installed : libxml2-dev_2.9.4+dfsg1-2.2+deb9u1
+Should be : libxml2-dev_2.9.4+dfsg1-2.2+deb9u2
+
+
+
+p-cpe:/a:debian:debian_linux:bind9
+cpe:/o:debian:debian_linux:8.0
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-3145
+Jayachandran Palanisamy of Cygate AB reported that BIND, a DNS server implementation, was improperly sequencing cleanup operations, leading in some cases to a use-after-free error, triggering an assertion failure and crash in named.
+4089
+debian_DSA-4089.nasl
+2018-A-0024
+2018/01/16
+2018/01/22
+Debian DSA-4089-1 : bind9 - security update
+2018/01/17
+local
+High
+$Revision: 3.2 $
+https://security-tracker.debian.org/tracker/bind9
+https://packages.debian.org/source/jessie/bind9
+https://packages.debian.org/source/stretch/bind9
+http://www.debian.org/security/2018/dsa-4089
+Upgrade the bind9 packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 1:9.9.5.dfsg-9+deb8u15.
+
+For the stable distribution (stretch), this problem has been fixed in version 1:9.10.3.dfsg.P4-12.3+deb9u4.
+I
+The remote Debian host is missing a security-related update.
+DSA:4089
+IAVA:2018-A-0024
+
+Remote package installed : bind9-host_1:9.10.3.dfsg.P4-12.3+deb9u3
+Should be : bind9-host_1:9.10.3.dfsg.P4-12.3+deb9u4
+Remote package installed : libbind9-140_1:9.10.3.dfsg.P4-12.3+deb9u3
+Should be : libbind9-140_1:9.10.3.dfsg.P4-12.3+deb9u4
+Remote package installed : libdns-export162_1:9.10.3.dfsg.P4-12.3+deb9u3
+Should be : libdns-export162_1:9.10.3.dfsg.P4-12.3+deb9u4
+Remote package installed : libdns162_1:9.10.3.dfsg.P4-12.3+deb9u3
+Should be : libdns162_1:9.10.3.dfsg.P4-12.3+deb9u4
+Remote package installed : libisc-export160_1:9.10.3.dfsg.P4-12.3+deb9u3
+Should be : libisc-export160_1:9.10.3.dfsg.P4-12.3+deb9u4
+Remote package installed : libisc160_1:9.10.3.dfsg.P4-12.3+deb9u3
+Should be : libisc160_1:9.10.3.dfsg.P4-12.3+deb9u4
+Remote package installed : libisccc140_1:9.10.3.dfsg.P4-12.3+deb9u3
+Should be : libisccc140_1:9.10.3.dfsg.P4-12.3+deb9u4
+Remote package installed : libisccfg140_1:9.10.3.dfsg.P4-12.3+deb9u3
+Should be : libisccfg140_1:9.10.3.dfsg.P4-12.3+deb9u4
+Remote package installed : liblwres141_1:9.10.3.dfsg.P4-12.3+deb9u3
+Should be : liblwres141_1:9.10.3.dfsg.P4-12.3+deb9u4
+
+
+
+all
+This plugin reports a device's hostname collected via SSH or WMI.
+wmi_system_hostname.nbin
+2018/02/13
+Device Hostname
+2011/06/30
+local
+None
+$Revision: 1.95 $
+n/a
+It was possible to determine the remote system hostname.
+
+ Hostname : abcvy031
+ abcvy031 (hostname command)
+
+
+p-cpe:/a:debian:debian_linux:tiff
+cpe:/o:debian:debian_linux:8.0
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-11335
+CVE-2017-12944
+CVE-2017-13726
+CVE-2017-13727
+CVE-2017-18013
+CVE-2017-9935
+8.8
+CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
+6.8
+CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P
+Multiple vulnerabilities have been discovered in the libtiff library and the included tools, which may result in denial of service or the execution of arbitrary code.
+4100
+debian_DSA-4100.nasl
+2018/01/27
+2018/01/29
+Debian DSA-4100-1 : tiff - security update
+2018/01/29
+local
+Medium
+$Revision: 3.1 $
+https://security-tracker.debian.org/tracker/tiff
+https://packages.debian.org/source/jessie/tiff
+https://packages.debian.org/source/stretch/tiff
+http://www.debian.org/security/2018/dsa-4100
+Upgrade the tiff packages.
+
+For the oldstable distribution (jessie), these problems have been fixed in version 4.0.3-12.3+deb8u5.
+
+For the stable distribution (stretch), these problems have been fixed in version 4.0.8-2+deb9u2.
+The remote Debian host is missing a security-related update.
+DSA:4100
+
+Remote package installed : libtiff5_4.0.8-2+deb9u1
+Should be : libtiff5_4.0.8-2+deb9u2
+
+
+
+p-cpe:/a:debian:debian_linux:curl
+cpe:/o:debian:debian_linux:8.0
+cpe:/o:debian:debian_linux:9.0
+CVE-2018-1000005
+CVE-2018-1000007
+9.8
+CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
+6.4
+CVSS2#AV:N/AC:L/Au:N/C:P/I:N/A:P
+Two vulnerabilities were discovered in cURL, an URL transfer library.
+
+ - CVE-2018-1000005 Zhouyihai Ding discovered an out-of-bounds read in the code handling HTTP/2 trailers. This issue doesn't affect the oldstable distribution (jessie).
+
+ - CVE-2018-1000007 Craig de Stigter discovered that authentication data might be leaked to third parties when following HTTP redirects.
+4098
+debian_DSA-4098.nasl
+2018/01/26
+2018/02/20
+Debian DSA-4098-1 : curl - security update
+2018/01/29
+local
+Medium
+$Revision: 3.3 $
+https://security-tracker.debian.org/tracker/CVE-2018-1000005
+https://security-tracker.debian.org/tracker/CVE-2018-1000007
+https://security-tracker.debian.org/tracker/curl
+https://packages.debian.org/source/jessie/curl
+https://packages.debian.org/source/stretch/curl
+http://www.debian.org/security/2018/dsa-4098
+Upgrade the curl packages.
+
+For the oldstable distribution (jessie), these problems have been fixed in version 7.38.0-4+deb8u9.
+
+For the stable distribution (stretch), these problems have been fixed in version 7.52.1-5+deb9u4.
+The remote Debian host is missing a security-related update.
+DSA:4098
+
+Remote package installed : curl_7.52.1-5+deb9u3
+Should be : curl_7.52.1-5+deb9u4
+Remote package installed : libcurl3_7.52.1-5+deb9u3
+Should be : libcurl3_7.52.1-5+deb9u4
+Remote package installed : libcurl3-gnutls_7.52.1-5+deb9u3
+Should be : libcurl3-gnutls_7.52.1-5+deb9u4
+Remote package installed : libcurl4-openssl-dev_7.52.1-5+deb9u3
+Should be : libcurl4-openssl-dev_7.52.1-5+deb9u4
+
+
+
+unix
+Nessus was able to enumerate the network interfaces configured with IPv4 addresses by connecting to the remote host via SSH using the supplied credentials.
+ifconfig_inet4.nasl
+2017/01/26
+Enumerate IPv4 Interfaces via SSH
+2007/05/11
+local
+None
+$Revision: 1.14 $
+Disable any unused IPv4 interfaces.
+Nessus was able to enumerate the IPv4 interfaces on the remote host.
+
+The following IPv4 addresses are set on the remote host :
+
+ - 12.34.14.16 (on interface ens160)
+ - 127.0.0.1 (on interface lo)
+
+
+
+unix
+Nessus was able to enumerate the network interfaces configured with IPv6 addresses by connecting to the remote host via SSH using the supplied credentials.
+ifconfig_inet6.nasl
+2017/01/26
+Enumerate IPv6 Interfaces via SSH
+2007/05/11
+local
+None
+$Revision: 1.16 $
+Disable IPv6 if you are not actually using it. Otherwise, disable any unused IPv6 interfaces.
+Nessus was able to enumerate the IPv6 interfaces on the remote host.
+
+The following IPv6 interfaces are set on the remote host :
+
+ - fe80::250:56ff:feb1:6478 (on interface ens160)
+ - ::1 (on interface lo)
+
+
+
+unix
+Using the supplied credentials, Nessus was able to get a list of firewall rules from the remote host.
+firewall_rules.nasl
+2015/06/02
+Firewall Rule Enumeration
+2011/09/28
+local
+None
+$Revision: 1.9 $
+n/a
+A firewall is configured on the remote host.
+
+By running "lsmod | grep -q _conntrack_ipv4 && iptables -L -n -v -t nat", Nessus was able to get the
+following list of firewall rules :
+
+Chain PREROUTING (policy ACCEPT 16300 packets, 966K bytes)
+ pkts bytes target prot opt in out source destination
+
+Chain INPUT (policy ACCEPT 16300 packets, 966K bytes)
+ pkts bytes target prot opt in out source destination
+
+Chain OUTPUT (policy ACCEPT 13M packets, 792M bytes)
+ pkts bytes target prot opt in out source destination
+
+Chain POSTROUTING (policy ACCEPT 13M packets, 792M bytes)
+ pkts bytes target prot opt in out source destination
+
+By running "lsmod | grep -q iptable_filter && iptables -L -n -v -t filter", Nessus was able to get the
+following list of firewall rules :
+
+Chain INPUT (policy ACCEPT 13M packets, 792M bytes)
+ pkts bytes target prot opt in out source destination
+ 13M 561M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
+ 49 1996 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
+13326 800K ACCEPT tcp -- * * 12.34.14.0/24 0.0.0.0/0 tcp dpt:8834
+ 785 47100 ACCEPT tcp -- * * 53.0.0.0/8 0.0.0.0/0 tcp dpt:8834
+ 1240 74400 ACCEPT tcp -- lo * 127.0.0.1 127.0.0.1 tcp dpt:8834
+ 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8834
+ 387 23264 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
+
+Chain FORWARD (policy DROP 0 packets, 0 bytes)
+ pkts bytes target prot opt in out source destination
+ 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
+ 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
+
+Chain OUTPUT (policy ACCEPT 13M packets, 792M bytes)
+ pkts bytes target prot opt in out source destination
+ 13M 575M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
+
+
+
+unix
+Using the supplied credentials, Nessus was able to enumerate the local users and groups on the remote host.
+linux_user_enum.nasl
+2017/08/28
+Linux User List Enumeration
+2016/12/19
+local
+None
+1.4
+None
+Nessus was able to enumerate local users and groups on the remote host.
+
+----------[ User Accounts ]----------
+
+User : wholoch
+Home folder : /home/wholoch
+Start script : /bin/bash
+Groups : dip
+ netdev
+ video
+ cdrom
+ audio
+ sudo
+ plugdev
+ floppy
+ wholoch
+
+User : therres
+Home folder : /home/therres
+Start script : /bin/bash
+Groups : therres
+ sudo
+
+User : kuhnrap
+Home folder : /home/kuhnrap
+Start script : /bin/bash
+Groups : sudo
+ kuhnrap
+
+User : postgres
+Home folder : /var/lib/postgresql
+Start script : /bin/bash
+Groups : postgres
+ ssl-cert
+
+User : bpa
+Home folder : /home/bpa
+Start script : /bin/bash
+Groups : bpa
+ sudo
+
+User : tunnel
+Home folder : /var/lib/tunnel
+Start script : /usr/sbin/nologin
+Groups : tunnel
+
+User : hannhei
+Home folder : /home/hannhei
+Start script : /bin/bash
+Groups : hannhei
+ sudo
+
+User : udf
+Home folder : /var/lib/udf
+Start script : /bin/bash
+Groups : udf
+
+User : rilliju
+Home folder : /home/rilliju
+Start script : /bin/bash
+Groups : rilliju
+ sudo
+
+----------[ System Accounts ]----------
+
+User : root
+Home folder : /root
+Start script : /bin/bash
+Groups : root
+
+User : daemon
+Home folder : /usr/sbin
+Start script : /usr/sbin/nologin
+Groups : daemon
+
+User : bin
+Home folder : /bin
+Start script : /usr/sbin/nologin
+Groups : bin
+
+User : sys
+Home folder : /dev
+Start script : /usr/sbin/nologin
+Groups : sys
+
+User : sync
+Home folder : /bin
+Start script : /bin/sync
+Groups : nogroup
+
+User : games
+Home folder : /usr/games
+Start script : /usr/sbin/nologin
+Groups : games
+
+User : man
+Home folder : /var/cache/man
+Start script : /usr/sbin/nologin
+Groups : man
+
+User : lp
+Home folder : /var/spool/lpd
+Start script : /usr/sbin/nologin
+Groups : lp
+
+User : mail
+Home folder : /var/mail
+Start script : /usr/sbin/nologin
+Groups : mail
+
+User : news
+Home folder : /var/spool/news
+Start script : /usr/sbin/nologin
+Groups : news
+
+User : uucp
+Home folder : /var/spool/uucp
+Start script : /usr/sbin/nologin
+Groups : uucp
+
+User : proxy
+Home folder : /bin
+Start script : /usr/sbin/nologin
+Groups : proxy
+
+User : www-data
+Home folder : /var/www
+Start script : /usr/sbin/nologin
+Groups : www-data
+
+User : backup
+Home folder : /var/backups
+Start script : /usr/sbin/nologin
+Groups : backup
+
+User : list
+Home folder : /var/list
+Start script : /usr/sbin/nologin
+Groups : list
+
+User : irc
+Home folder : /var/run/ircd
+Start script : /usr/sbin/nologin
+Groups : irc
+
+User : gnats
+Home folder : /var/lib/gnats
+Start script : /usr/sbin/nologin
+Groups : gnats
+
+User : nobody
+Home folder : /nonexistent
+Start script : /usr/sbin/nologin
+Groups : nogroup
+
+User : systemd-timesync
+Home folder : /run/systemd
+Start script : /bin/false
+Groups : systemd-timesync
+
+User : systemd-network
+Home folder : /run/systemd/netif
+Start script : /bin/false
+Groups : systemd-network
+
+User : systemd-resolve
+Home folder : /run/systemd/resolve
+Start script : /bin/false
+Groups : systemd-resolve
+
+User : systemd-bus-proxy
+Home folder : /run/systemd
+Start script : /bin/false
+Groups : systemd-bus-proxy
+
+User : _apt
+Home folder : /nonexistent
+Start script : /bin/false
+Groups : nogroup
+
+User : Debian-exim
+Home folder : /var/spool/exim4
+Start script : /bin/false
+Groups : Debian-exim
+
+User : messagebus
+Home folder : /var/run/dbus
+Start script : /bin/false
+Groups : messagebus
+
+User : sshd
+Home folder : /run/sshd
+Start script : /usr/sbin/nologin
+Groups : nogroup
+
+
+
+
+p-cpe:/a:debian:debian_linux:gdk-pixbuf
+cpe:/o:debian:debian_linux:8.0
+cpe:/o:debian:debian_linux:9.0
+CVE-2017-1000422
+8.8
+CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
+6.8
+CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P
+It was discovered that multiple integer overflows in the GIF image loader in the GDK Pixbuf library may result in denial of service and potentially the execution of arbitrary code if a malformed image file is opened.
+4088
+debian_DSA-4088.nasl
+2018/01/15
+2018/01/29
+Debian DSA-4088-1 : gdk-pixbuf - security update
+2018/01/16
+local
+Medium
+$Revision: 3.3 $
+https://security-tracker.debian.org/tracker/CVE-2017-6312
+https://security-tracker.debian.org/tracker/CVE-2017-6313
+https://security-tracker.debian.org/tracker/CVE-2017-6314
+https://security-tracker.debian.org/tracker/gdk-pixbuf
+https://packages.debian.org/source/jessie/gdk-pixbuf
+https://packages.debian.org/source/stretch/gdk-pixbuf
+http://www.debian.org/security/2018/dsa-4088
+Upgrade the gdk-pixbuf packages.
+
+For the oldstable distribution (jessie), this problem has been fixed in version 2.31.1-2+deb8u7.
+
+For the stable distribution (stretch), this problem has been fixed in version 2.36.5-2+deb9u2. In addition this update provides fixes for CVE-2017-6312, CVE-2017-6313 and CVE-2017-6314.
+The remote Debian host is missing a security-related update.
+DSA:4088
+
+Remote package installed : libgdk-pixbuf2.0-0_2.36.5-2+deb9u1
+Should be : libgdk-pixbuf2.0-0_2.36.5-2+deb9u2
+Remote package installed : libgdk-pixbuf2.0-common_2.36.5-2+deb9u1
+Should be : libgdk-pixbuf2.0-common_2.36.5-2+deb9u2
+
+
+
+Nessus was able to login to the remote host using SSH or local commands and extract the list of installed packages.
+ssh_get_info2.nasl
+2018/01/24
+OS Identification and Installed Software Enumeration over SSH v2 (Using New SSH Library)
+2017/05/30
+remote
+None
+1.16
+n/a
+Information about the remote host can be disclosed via an authenticated session.
+
+Nessus can run commands on localhost to check if patches are applied.
+
+The output of "uname -a" is :
+Linux abcvy031 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64 GNU/Linux
+
+The remote Debian system is :
+9.2
+
+Local security checks have been enabled for this host.
+Runtime : 0.116531 seconds
+
+
+
+The name of this machine either does not resolve or resolves to a different IP address.
+
+This may come from a badly configured reverse DNS or from a host file in use on the Nessus scanning host.
+
+As a result, URLs in plugin output may not be directly usable in a web browser and some web tests may be incomplete.
+bad_rdns.nasl
+2016/08/05
+Inconsistent Hostname and IP Address
+2010/05/03
+remote
+None
+1.9
+Fix the reverse DNS or host file.
+The remote host's hostname is not consistent with DNS information.
+The host name 'localhost' does not resolve to an IP address
+
+
+Nessus was able to resolve the fully qualified domain name (FQDN) of the remote host.
+fqdn.nasl
+2017/04/14
+Host Fully Qualified Domain Name (FQDN) Resolution
+2004/02/11
+remote
+None
+$Revision: 1.16 $
+n/a
+It was possible to resolve the name of the remote host.
+
+127.0.0.1 resolves as localhost.
+
+
+
+
+
+
diff --git a/sechub-adapter-netsparker/README.md b/sechub-adapter-netsparker/README.md
new file mode 100644
index 0000000000..d8a8e760c7
--- /dev/null
+++ b/sechub-adapter-netsparker/README.md
@@ -0,0 +1,9 @@
+
+About this project
+==================
+
+This an adapter project to access product NETSPARKER.
+It has no dependency to any sechub part and can be used as a single command line program too (for test purpose).
+
+A product executor can use this adapter to access the product.
+The adapter itself is pretty dumb and does only now the product stuff...
\ No newline at end of file
diff --git a/sechub-adapter-netsparker/build.gradle b/sechub-adapter-netsparker/build.gradle
new file mode 100644
index 0000000000..78be341859
--- /dev/null
+++ b/sechub-adapter-netsparker/build.gradle
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: MIT
+ /*============================================================================
+ * Build file for subproject
+ *
+ * Root build file: "${rootProject.projectDir}/build.gradle"
+ * ============================================================================
+ */
+dependencies {
+
+ compile project(':sechub-adapter')
+}
diff --git a/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/MockedNetsparkerAdapter.java b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/MockedNetsparkerAdapter.java
new file mode 100644
index 0000000000..fe542a04c3
--- /dev/null
+++ b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/MockedNetsparkerAdapter.java
@@ -0,0 +1,43 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
+
+import com.daimler.sechub.adapter.AdapterProfiles;
+import com.daimler.sechub.adapter.mock.AbstractMockedAdapter;
+
+@Profile(AdapterProfiles.MOCKED_PRODUCTS)
+@Component
+public class MockedNetsparkerAdapter extends AbstractMockedAdapter
+ implements NetsparkerAdapter {
+
+
+ protected void validateConfigAsDefinedInMockYAML(NetsparkerAdapterConfig config) {
+ String productBaseURL = config.getProductBaseURL();
+ boolean baseURLAsExpected = "https://netsparker.mock.example.org:4000".equals(productBaseURL);
+ if (!baseURLAsExpected) {
+ throw new IllegalArgumentException("Netsparker base url not as expected:" + productBaseURL);
+ }
+ /*
+ * the token is for the apiToken'netsparker-api-token' and user id
+ * 'netsparker-user-id' from application-mock.yml!
+ */
+ if (!"bmV0c3Bhcmtlci11c2VyLWlkOm5ldHNwYXJrZXItYXBpLXRva2Vu".equals(config.getBase64Token())) {
+ throw new IllegalArgumentException(config.getBase64Token());
+ }
+ if (!"netsparker-default-policiy-id".equals(config.getPolicyId())) {
+ throw new IllegalArgumentException("Netsparker policy not as expected:" + config.getPolicyId());
+ }
+ if (!"netsparker-license-id".equals(config.getLicenseID())) {
+ throw new IllegalArgumentException("netsparker-license-id not as expected:" + config.getLicenseID());
+ }
+ String agentGroupName = config.getAgentGroupName();
+ boolean agentGroupAsExpected = "netsparker-agent-group-intranet".equals(agentGroupName);
+ agentGroupAsExpected = agentGroupAsExpected || "netsparker-agent-group-internet".equals(agentGroupName);
+ if (!agentGroupAsExpected) {
+ throw new IllegalArgumentException("netsparker agent group name not found but:" + agentGroupName);
+ }
+ }
+
+}
diff --git a/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapter.java b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapter.java
new file mode 100644
index 0000000000..d571ab1c5d
--- /dev/null
+++ b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapter.java
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import com.daimler.sechub.adapter.Adapter;
+
+public interface NetsparkerAdapter extends Adapter{
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterConfig.java b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterConfig.java
new file mode 100644
index 0000000000..99958e750b
--- /dev/null
+++ b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterConfig.java
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import com.daimler.sechub.adapter.AdapterConfig;
+
+public interface NetsparkerAdapterConfig extends AdapterConfig{
+
+ String getLicenseID();
+
+ String getWebsiteName();
+
+ String getAgentName();
+
+ String getAgentGroupName();
+
+ boolean hasAgentGroup();
+
+
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterContext.java b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterContext.java
new file mode 100644
index 0000000000..c4a2ac21e5
--- /dev/null
+++ b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterContext.java
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import com.daimler.sechub.adapter.AdapterContext;
+
+public interface NetsparkerAdapterContext extends AdapterContext{
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterV1.java b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterV1.java
new file mode 100644
index 0000000000..91c9976d77
--- /dev/null
+++ b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterV1.java
@@ -0,0 +1,246 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import static org.springframework.http.HttpStatus.*;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Profile;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.HttpClientErrorException;
+
+import com.daimler.sechub.adapter.AbstractAdapter;
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.AdapterProfiles;
+import com.daimler.sechub.adapter.WaitForStateSupport;
+
+/**
+ * This component is able to handle Netsparker API V1
+ *
+ * @author Albert Tregnaghi
+ *
+ */
+@Component
+@Profile({ AdapterProfiles.REAL_PRODUCTS })
+public class NetsparkerAdapterV1 extends AbstractAdapter
+ implements NetsparkerAdapter {
+
+ private static final String POLICY_ID = "PolicyId";
+ private static final String TARGET_URI = "TargetUri";
+ private static final String AGENT_NAME = "AgentName";
+ private static final String AGENT_GROUP_NAME = "AgentGroupName";
+ private static final String PROPERTY_SCAN_ID = "Id";
+ private static final String APICALL_GET_WEBSITE = "websites/get?query=";
+ private static final String APICALL_CREATE_NEW_WEBSITE = "websites/new";
+ private static final String APICALL_CREATE_NEW_SCAN = "scans/new";
+ private static final String APICALL_GET_SCAN_STATUS = "scans/status/";
+ private static final String APICALL_GET_SCAN_REPORT = "scans/report/";
+
+ private static final Logger LOG = LoggerFactory.getLogger(NetsparkerAdapterV1.class);
+
+ @Override
+ public String start(NetsparkerAdapterConfig config) throws AdapterException {
+ try {
+ NetsparkerContext context = new NetsparkerContext(config, this);
+ NetsparkerWaitForStateSupport waitSupport = new NetsparkerWaitForStateSupport();
+ ensureNetsparkerWebsiteConfigurationExists(context);
+
+ createNewScanAndFetchId(context);
+ waitSupport.waitForOK(context);
+
+ fetchReport(context);
+
+ return context.getResult();
+ } catch (AdapterException e) {
+ throw e;
+ } catch (Exception e) {
+ throw asAdapterException("Was not able to perform scan!", e, config);
+ }
+
+ }
+
+ @Override
+ protected String getAPIPrefix() {
+ return "api/1.0";
+ }
+
+ String extractIDFromScanResult(String body, NetsparkerAdapterContext context)
+ throws AdapterException {
+ return context.json().fetchRootNode(body).fetchArrayElement(0).fetch(PROPERTY_SCAN_ID).asText();
+ }
+
+ void createWebsite(NetsparkerContext context) throws AdapterException {
+ NetsparkerAdapterConfig config = context.getConfig();
+ String targetURL = config.getTargetAsString();
+ String name = config.getWebsiteName();
+ String traceID = config.getTraceID();
+
+ LOG.debug("{} try to create website with targetURL '{}' and name '{}'", traceID, targetURL, name);
+ MultiValueMap headers = createHeader(config);
+
+ Map json = new TreeMap<>();
+ json.put("RootUrl", targetURL);
+ json.put("Name", name);
+ json.put("LicenseType", "Subscription");
+ json.put("SubscriptionBasedProductLicenseId", config.getLicenseID());
+
+ String jsonAsString = context.json().toJSON(json);
+
+ HttpEntity request = new HttpEntity<>(jsonAsString, headers);
+
+ String apiUrl = createAPIURL(APICALL_CREATE_NEW_WEBSITE, config);
+ try {
+ ResponseEntity response = context.getRestOperations().postForEntity(apiUrl, request, String.class);
+ if (!CREATED.equals(response.getStatusCode())) {
+ throw new NetsparkerRESTFailureException(response.getStatusCode(), response.getBody());
+ }
+ } catch (HttpClientErrorException e) {
+ LOG.error(e.getResponseBodyAsString());
+ throw e;
+ }
+ }
+
+ void fetchReport(NetsparkerAdapterContext context) {
+ String traceID = context.getConfig().getTraceID();
+ LOG.debug("{} try to fetch report", context.getConfig().getTraceID());
+
+ String apiUrl = createAPIURL(
+ APICALL_GET_SCAN_REPORT + context.getProductContextId() + "?Type=Vulnerabilities&Format=Xml",
+ context.getConfig());
+ ResponseEntity response = context.getRestOperations().getForEntity(apiUrl, String.class);
+ if (!OK.equals(response.getStatusCode())) {
+ throw new NetsparkerRESTFailureException(response.getStatusCode(), response.getBody());
+ }
+ String body = response.getBody();
+ context.setResult(body);
+ LOG.debug("{} calling fetch report with '{}'", traceID, apiUrl);
+ }
+
+ private void createNewScanAndFetchId(NetsparkerContext context) throws AdapterException {
+ NetsparkerAdapterConfig config = context.getConfig();
+ String traceID = config.getTraceID();
+
+ Map json = new TreeMap<>();
+ json.put(TARGET_URI, config.getTargetAsString());
+ if (config.hasAgentGroup()) {
+ json.put(AGENT_GROUP_NAME, config.getAgentGroupName());
+ } else {
+ json.put(AGENT_NAME, config.getAgentName());
+ }
+ json.put(POLICY_ID, config.getPolicyId());
+
+ String jsonAsString = context.json().toJSON(json);
+
+ LOG.debug("{} request body will contain json:'{}'", traceID, jsonAsString);
+ HttpEntity request = new HttpEntity<>(jsonAsString);
+
+ String apiUrl = createAPIURL(APICALL_CREATE_NEW_SCAN, config);
+ try {
+ LOG.debug("{} calling api url '{}'", traceID, apiUrl);
+ ResponseEntity response = context.getRestOperations().postForEntity(apiUrl, request, String.class);
+ if (!CREATED.equals(response.getStatusCode())) {
+ throw new NetsparkerRESTFailureException(response.getStatusCode(), response.getBody());
+ }
+ context.setProductContextId(extractIDFromScanResult(response.getBody(), context));
+ LOG.debug("{} created new scan and got netsparker ID '{}'", traceID, context.getProductContextId());
+
+ } catch (HttpClientErrorException e) {
+ throw new NetsparkerRESTFailureException(e.getStatusCode(), e.getResponseBodyAsString());
+ }
+
+ }
+
+ private void ensureNetsparkerWebsiteConfigurationExists(NetsparkerContext context) throws AdapterException {
+ if (existsWebsiteInNetsparker(context)) {
+ return;
+ }
+ /* create the website */
+ createWebsite(context);
+
+ }
+
+ private boolean existsWebsiteInNetsparker(NetsparkerContext context) {
+ NetsparkerAdapterConfig config = context.getConfig();
+ String traceID = config.getTraceID();
+
+ String websiteName = config.getWebsiteName();
+ String apiUrl = createAPIURL(APICALL_GET_WEBSITE + websiteName, config);
+ LOG.debug("{} check website existswith '{}'", traceID, apiUrl);
+ try {
+ ResponseEntity response = context.getRestOperations().getForEntity(apiUrl, String.class);
+ if (OK.equals(response.getStatusCode())) {
+ LOG.debug("{} Website:{} exists already with name:{}", traceID, config.getTargetAsString(),
+ websiteName);
+ return true;
+ }
+ } catch (HttpClientErrorException e) {
+ if (NOT_FOUND.equals(e.getStatusCode())) {
+ LOG.debug("{} Website:{} does not exists with name:{}", traceID, config.getTargetAsString(),
+ websiteName);
+ return false;
+ }
+ LOG.error(e.getResponseBodyAsString());
+ throw e;
+ }
+ return false;
+ }
+
+ private MultiValueMap createHeader(NetsparkerAdapterConfig config) {
+ MultiValueMap headers = new LinkedMultiValueMap<>();
+ return headers;
+ }
+
+ private class NetsparkerWaitForStateSupport
+ extends WaitForStateSupport {
+
+ public NetsparkerWaitForStateSupport() {
+ super(NetsparkerAdapterV1.this);
+ }
+
+ @Override
+ protected boolean isWaitingForOKWhenInState(String state, NetsparkerAdapterContext context) {
+ return !NetsparkerState.isWellknown(state);
+ }
+
+ @Override
+ protected void handleNoLongerWaitingState(String state, NetsparkerAdapterContext context)
+ throws Exception {
+ NetsparkerAdapterConfig config = context.getConfig();
+ if (NetsparkerState.COMPLETE.isRepresentedBy(state)) {
+ LOG.debug("{} completed", getAdapterLogId(config));
+ return;
+ }
+ if (NetsparkerState.CANCELED.isRepresentedBy(state)) {
+ LOG.debug("{} canceled", getAdapterLogId(config));
+ throw asAdapterCanceledByUserException(config);
+ }
+ if (NetsparkerState.FAILED.isRepresentedBy(state)) {
+ LOG.debug("{} failed", getAdapterLogId(config));
+ throw asAdapterException("Execution failed, see log files in netsparker for details", config);
+ }
+ throw asAdapterException(state + " is wellknown but not handled by adapter!", config);
+
+ }
+
+ protected String getCurrentState(NetsparkerAdapterContext context) throws AdapterException {
+ String traceID = context.getConfig().getTraceID();
+ String apiUrl = createAPIURL(APICALL_GET_SCAN_STATUS + context.getProductContextId(), context.getConfig());
+ LOG.debug("{} calling get state with '{}'", traceID, apiUrl);
+
+ ResponseEntity response = context.getRestOperations().getForEntity(apiUrl, String.class);
+ if (!OK.equals(response.getStatusCode())) {
+ throw new NetsparkerRESTFailureException(response.getStatusCode(), response.getBody());
+ }
+ String state = context.json().fetch("State", response).asText();
+ LOG.debug("{} state is '{}'", traceID, state);
+ return state;
+ }
+ }
+}
diff --git a/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerClientHttpRequestInterceptor.java b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerClientHttpRequestInterceptor.java
new file mode 100644
index 0000000000..077bb44e68
--- /dev/null
+++ b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerClientHttpRequestInterceptor.java
@@ -0,0 +1,34 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import java.io.IOException;
+
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpRequest;
+import org.springframework.http.MediaType;
+import org.springframework.http.client.ClientHttpRequestExecution;
+import org.springframework.http.client.ClientHttpRequestInterceptor;
+import org.springframework.http.client.ClientHttpResponse;
+
+public class NetsparkerClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
+
+ private NetsparkerAdapterConfig config;
+
+ public NetsparkerClientHttpRequestInterceptor(NetsparkerAdapterConfig config) {
+ this.config = config;
+ }
+
+ @Override
+ public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
+ throws IOException {
+
+ HttpHeaders headers = request.getHeaders();
+ headers.remove("Content-Type"); // strange, but sometimes there was a content-type (plain-text already added)
+ headers.remove("Authorization");
+
+ headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE);
+ headers.add("Authorization", "Basic " + config.getBase64Token());
+ return execution.execute(request, body);
+ }
+
+}
diff --git a/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerConfig.java b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerConfig.java
new file mode 100644
index 0000000000..04325c2294
--- /dev/null
+++ b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerConfig.java
@@ -0,0 +1,113 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import com.daimler.sechub.adapter.AbstractAdapterConfig;
+import com.daimler.sechub.adapter.AbstractAdapterConfigBuilder;
+import com.daimler.sechub.adapter.support.MessageDigestSupport;
+
+public class NetsparkerConfig extends AbstractAdapterConfig implements NetsparkerAdapterConfig{
+
+ private String licenseID;
+
+ private String agentName;
+ private String agentGroupName;
+
+ private String websiteName;
+
+ @Override
+ public String getLicenseID() {
+ return licenseID;
+ }
+
+ @Override
+ public String getWebsiteName() {
+ return websiteName;
+ }
+
+ @Override
+ public String getAgentName() {
+ return agentName;
+ }
+
+ @Override
+ public String getAgentGroupName() {
+ return agentGroupName;
+ }
+
+ @Override
+ public boolean hasAgentGroup() {
+ return agentGroupName != null && !agentGroupName.isEmpty();
+ }
+
+ private NetsparkerConfig() {
+ }
+
+ public static NetsparkerConfigBuilder builder() {
+ return new NetsparkerConfigBuilder();
+ }
+
+ public static class NetsparkerConfigBuilder
+ extends AbstractAdapterConfigBuilder {
+
+ MessageDigestSupport md5Builder = new MessageDigestSupport();
+
+ private String licenseID;
+ private String agentName;
+ private String agentGroupName;
+
+ private NetsparkerConfigBuilder() {
+ }
+
+ public NetsparkerConfigBuilder setAgentName(String agentName) {
+ this.agentName = agentName;
+ return this;
+ }
+
+ public NetsparkerConfigBuilder setAgentGroupName(String agentGroupName) {
+ this.agentGroupName = agentGroupName;
+ return this;
+ }
+
+ public NetsparkerConfigBuilder setLicenseID(String licenseID) {
+ this.licenseID = licenseID;
+ return this;
+ }
+
+ @Override
+ protected void customBuild(NetsparkerAdapterConfig adapterConfig) {
+ if (! (adapterConfig instanceof NetsparkerConfig)) {
+ throw new IllegalArgumentException("not a netsparker config:"+adapterConfig);
+ }
+ NetsparkerConfig config = (NetsparkerConfig)adapterConfig;
+ String websiteURLAsString = config.getRootTargetURIasString();
+ if (websiteURLAsString==null) {
+ throw new IllegalStateException("website url (root target url ) may not be null at this point!");
+ }
+ config.websiteName= md5Builder.createMD5(websiteURLAsString);
+ config.licenseID = licenseID;
+ config.agentName = agentName;
+ config.agentGroupName = agentGroupName;
+ }
+
+ @Override
+ protected void customValidate() {
+ assertUserSet();
+ assertAPITokenSet();
+ assertLicenseIDSet();
+ assertProductBaseURLSet();
+ }
+
+ private void assertLicenseIDSet() {
+ if (licenseID == null) {
+ throw new IllegalStateException("no licenseID given");
+ }
+ }
+
+ @Override
+ protected NetsparkerAdapterConfig buildInitialConfig() {
+ return new NetsparkerConfig();
+ }
+
+ }
+
+}
diff --git a/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerContext.java b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerContext.java
new file mode 100644
index 0000000000..a6518452d3
--- /dev/null
+++ b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerContext.java
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import org.springframework.http.client.ClientHttpRequestInterceptor;
+
+import com.daimler.sechub.adapter.AbstractSpringRestAdapterContext;
+
+/**
+ * Context for NETSPARKER execution.
+ *
+ * @author Albert Tregnaghi
+ *
+ */
+public class NetsparkerContext extends AbstractSpringRestAdapterContext implements NetsparkerAdapterContext{
+
+ public NetsparkerContext(NetsparkerAdapterConfig config, NetsparkerAdapter adapter) {
+ super(config,adapter);
+ }
+
+ @Override
+ protected ClientHttpRequestInterceptor createInterceptorOrNull(NetsparkerAdapterConfig config) {
+ return new NetsparkerClientHttpRequestInterceptor(config);
+ }
+
+}
diff --git a/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerRESTFailureException.java b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerRESTFailureException.java
new file mode 100644
index 0000000000..498b9039cb
--- /dev/null
+++ b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerRESTFailureException.java
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import org.springframework.http.HttpStatus;
+
+/* FIXME Albert Tregnaghi, 2018-03-27: remove this by common exception */
+public class NetsparkerRESTFailureException extends RuntimeException {
+
+ private static final long serialVersionUID = 6448794893494468643L;
+ private final String body;
+
+ public NetsparkerRESTFailureException(HttpStatus status, String body) {
+ super("Netsparker REST failed with HTTP Status:" + (status != null ? status.name() : "null"));
+ this.body = body;
+ }
+
+ public String getResponseBody() {
+ return body;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + "\nBody:\n" + getResponseBody();
+ }
+}
diff --git a/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerState.java b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerState.java
new file mode 100644
index 0000000000..f5af6a40a0
--- /dev/null
+++ b/sechub-adapter-netsparker/src/main/java/com/daimler/sechub/adapter/netsparker/NetsparkerState.java
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+public enum NetsparkerState {
+ COMPLETE("Complete"),
+
+ FAILED("Failed"),
+
+ CANCELED("Cancelled");
+
+ private String id;
+
+ private NetsparkerState(String id) {
+ if (id == null) {
+ throw new IllegalArgumentException("id may not be null!");
+ }
+ this.id = id;
+ }
+
+ public boolean isRepresentedBy(String state) {
+ if (state == null) {
+ return false;
+ }
+ return id.equals(state);
+ }
+
+ public static boolean isWellknown(String state) {
+ for (NetsparkerState value : values()) {
+ if (value.isRepresentedBy(state)) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterTestFileSupport.java b/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterTestFileSupport.java
new file mode 100644
index 0000000000..fc8ef02cef
--- /dev/null
+++ b/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterTestFileSupport.java
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import com.daimler.sechub.test.SechubTestComponent;
+import com.daimler.sechub.test.TestFileSupport;
+
+@SechubTestComponent
+public class NetsparkerAdapterTestFileSupport extends TestFileSupport {
+ private static final NetsparkerAdapterTestFileSupport TESTFILE_SUPPORT = new NetsparkerAdapterTestFileSupport();
+
+ public static NetsparkerAdapterTestFileSupport getTestfileSupport() {
+ return TESTFILE_SUPPORT;
+ }
+
+ NetsparkerAdapterTestFileSupport() {
+ super("sechub-adapter-netsparker/src/test/resources");
+ }
+
+}
diff --git a/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterV1Test.java b/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterV1Test.java
new file mode 100644
index 0000000000..a143be6254
--- /dev/null
+++ b/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterV1Test.java
@@ -0,0 +1,78 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import static org.junit.Assert.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+
+import com.daimler.sechub.adapter.AdapterException;
+import com.daimler.sechub.adapter.support.JSONAdapterSupport;
+
+public class NetsparkerAdapterV1Test {
+
+ private NetsparkerAdapterV1 adapterToTest;
+ private NetsparkerAdapterContext context;
+ private NetsparkerAdapterConfig config;
+ private RestTemplate template;
+
+ @Before
+ public void before() {
+ // System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "debug");
+ adapterToTest = new NetsparkerAdapterV1();
+
+ context = mock(NetsparkerAdapterContext.class);
+ config = mock(NetsparkerAdapterConfig.class);
+ template = mock(RestTemplate.class);
+
+ when(context.getConfig()).thenReturn(config);
+ when(context.getRestOperations()).thenReturn(template);
+ when(config.getProductBaseURL()).thenReturn("baseURL");
+ when(context.getProductContextId()).thenReturn("netsparkerId");
+ when(context.json()).thenReturn(new JSONAdapterSupport(adapterToTest, context));
+ }
+
+ @Test
+ public void a_fetch_report__triggers_rest_tempate_with_correct_params() {
+ /* prepare */
+
+ @SuppressWarnings("unchecked")
+ ResponseEntity response = mock(ResponseEntity.class);
+ when(template.getForEntity(eq("baseURL/api/1.0/scans/report/netsparkerId?Type=Vulnerabilities&Format=Xml"), eq(String.class))).thenReturn(response);
+ when(response.getStatusCode()).thenReturn(HttpStatus.OK);
+
+ /* execute */
+ adapterToTest.fetchReport(context);
+
+ /* test */
+ verify(template).getForEntity("baseURL/api/1.0/scans/report/netsparkerId?Type=Vulnerabilities&Format=Xml",
+ String.class);
+ }
+
+ @Test
+ public void isAbleTo_extract_id_from_netsparker_v1_0_40_109_result_when_create_new_scan_triggered() throws AdapterException {
+ /* prepare */
+ String body = NetsparkerAdapterTestFileSupport.getTestfileSupport()
+ .loadTestFile("netsparker_v1.0.40.109_new_scan_output.json");
+
+ /* execute */
+ String id = adapterToTest.extractIDFromScanResult(body,context);
+
+ /* test */
+ assertEquals("a42ab3cf-58e8-455e-6668-a88503af65fe", id);
+
+ }
+
+ @Test
+ public void api_prefix_is_api_slash_1_0() throws Exception {
+
+ /* test */
+ assertEquals("api/1.0", adapterToTest.getAPIPrefix());
+ }
+
+}
\ No newline at end of file
diff --git a/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterV1WireMockTest.java b/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterV1WireMockTest.java
new file mode 100644
index 0000000000..8c6e58c157
--- /dev/null
+++ b/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerAdapterV1WireMockTest.java
@@ -0,0 +1,197 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.*;
+import static com.github.tomakehurst.wiremock.client.WireMock.verify;
+import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.*;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import org.json.JSONObject;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.test.context.TestConfiguration;
+import org.springframework.http.HttpStatus;
+
+import com.daimler.sechub.adapter.IcrementalAdditionalPrefixAPIURLSupport;
+import com.daimler.sechub.adapter.support.APIURLSupport;
+import com.daimler.sechub.test.TestPortProvider;
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+import com.github.tomakehurst.wiremock.stubbing.Scenario;
+
+public class NetsparkerAdapterV1WireMockTest {
+
+ private static final String APPLICATION_JSON = "application/json";
+ private static final String APPLICATION_XML = "application/xml";
+
+ private static final String WEBSITE_ID = "93cc5894f38546f45f7aa8860366c07e";
+
+ private static final int HTTPS_PORT = TestPortProvider.DEFAULT_INSTANCE.getWireMockTestHTTPSPort();
+
+ private static final int HTTP_PORT = TestPortProvider.DEFAULT_INSTANCE.getWireMockTestHTTPPort();
+
+ private static final String LICENSE_ID = "12345licenseID";
+
+ private static final String BASE_64_TOKEN = "12345BASE64_TOKEN";
+
+ private static final String ROOT_URL = "http://example.org";
+
+ private static final String TARGET_URL = "http://example.org";
+
+ private static final String NETSPARKER_BASE_URL = "http://localhost:" + HTTP_PORT;
+
+ private static final String POLICY_ID = "12345POLICY_ID";
+
+ @Rule
+ public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(HTTP_PORT).httpsPort(HTTPS_PORT));
+
+ private NetsparkerAdapter adapterToTest;
+
+ private NetsparkerAdapterConfig config;
+ private IcrementalAdditionalPrefixAPIURLSupport apiURLSupport;
+
+ @Before
+ public void before() {
+ apiURLSupport = new IcrementalAdditionalPrefixAPIURLSupport("netsparkertest");
+ // System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "debug");
+ adapterToTest = new NetsparkerAdapterV1() {
+ @Override
+ protected APIURLSupport createAPIURLSupport() {
+ return apiURLSupport;
+ }
+ };
+
+ config = mock(NetsparkerAdapterConfig.class);
+
+ when(config.getTargetAsString()).thenReturn(TARGET_URL);
+ when(config.getProductBaseURL()).thenReturn(NETSPARKER_BASE_URL);
+ when(config.getBase64Token()).thenReturn(BASE_64_TOKEN);
+ when(config.getLicenseID()).thenReturn(LICENSE_ID);
+ when(config.getPolicyId()).thenReturn(POLICY_ID);
+ when(config.getAgentName()).thenReturn("agentName");
+ when(config.getAgentGroupName()).thenReturn("agentGroupName");
+ when(config.getTimeOutInMilliseconds()).thenReturn(1000*10);
+ when(config.getWebsiteName()).thenReturn(WEBSITE_ID);
+ }
+
+ @Test
+ public void start_scan_returns_returns_result_when_using_agentgroup() throws Exception {
+ common_start_scan_returns_result(true);
+ }
+
+ @Test
+ public void start_scan_returns_returns_result_when_using_agent() throws Exception {
+ common_start_scan_returns_result(false);
+ }
+
+ private void common_start_scan_returns_result(boolean configHasAgentGroup) throws Exception {
+ /* prepare */
+
+ when(config.hasAgentGroup()).thenReturn(configHasAgentGroup);
+
+ JSONObject newWebsiteBodyJSON = new JSONObject();
+ newWebsiteBodyJSON.put("RootUrl", ROOT_URL);
+ newWebsiteBodyJSON.put("Name", WEBSITE_ID);
+ newWebsiteBodyJSON.put("LicenseType", "Subscription");
+ newWebsiteBodyJSON.put("SubscriptionBasedProductLicenseId", LICENSE_ID);
+
+ String createNewWebsiteBody = newWebsiteBodyJSON.toString();
+ /* @formatter:off */
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ check website ............................+ */
+ /* +-----------------------------------------------------------------------+ */
+ stubFor(get(urlEqualTo(apiURLSupport.nextURL("/api/1.0/websites/get?query="+WEBSITE_ID)))
+ .withHeader("Authorization", equalTo("Basic "+BASE_64_TOKEN))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.NOT_FOUND.value())));
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ create website ...........................+ */
+ /* +-----------------------------------------------------------------------+ */
+ stubFor(post(urlEqualTo(apiURLSupport.nextURL("/api/1.0/websites/new")))
+ .withHeader("Authorization", equalTo("Basic "+BASE_64_TOKEN))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+ .withRequestBody(equalToJson(createNewWebsiteBody))
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.CREATED.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody("[{\"ID\" : \"1234567890\"}]")));
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ new scan .................................+ */
+ /* +-----------------------------------------------------------------------+ */
+ JSONObject newScanBodyJSON = new JSONObject();
+ newScanBodyJSON.put("TargetUri", TARGET_URL);
+ if (configHasAgentGroup) {
+ newScanBodyJSON.put("AgentGroupName", "agentGroupName");
+ }else {
+ newScanBodyJSON.put("AgentName", "agentName");
+ }
+ newScanBodyJSON.put("PolicyId", POLICY_ID);
+
+ String newScanBodyJSONString = newScanBodyJSON.toString();
+
+ stubFor(post(urlEqualTo(apiURLSupport.nextURL("/api/1.0/scans/new")))
+ .withHeader("Authorization", equalTo("Basic "+BASE_64_TOKEN))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+ .withRequestBody(equalToJson(newScanBodyJSONString))
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.CREATED.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody("[{\"Id\" : \"1234567890\"}]")));
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ check scan state .........................+ */
+ /* +-----------------------------------------------------------------------+ */
+ stubFor(get(urlEqualTo(apiURLSupport.nextURL("/api/1.0/scans/status/1234567890")))
+ .inScenario("checkState").whenScenarioStateIs(Scenario.STARTED).willSetStateTo("scanning")
+ .withHeader("Authorization", equalTo("Basic "+BASE_64_TOKEN))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody("{\"State\":\"Scanning\",\"EstimatedSteps\":5000,\"CompletedSteps\":5000,\"EstimatedLaunchTime\":null}")));
+ /* hm.. this does not work - only the last stub is used...*/
+ stubFor(get(urlEqualTo(apiURLSupport.nextURL("/api/1.0/scans/status/1234567890")))
+ .inScenario("checkState").whenScenarioStateIs("scanning").willSetStateTo("complete")
+ .withHeader("Authorization", equalTo("Basic "+BASE_64_TOKEN))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withHeader("Content-Type", APPLICATION_JSON)
+ .withBody("{\"State\":\"Complete\",\"EstimatedSteps\":5000,\"CompletedSteps\":5000,\"EstimatedLaunchTime\":null}")));
+
+ String xml = ""
+ + "";
+
+ /* +-----------------------------------------------------------------------+ */
+ /* +............................ get report ..... .........................+ */
+ /* +-----------------------------------------------------------------------+ */
+ stubFor(get(urlEqualTo(apiURLSupport.nextURL("/api/1.0/scans/report/1234567890?Type=Vulnerabilities&Format=Xml")))
+ .withHeader("Authorization", equalTo("Basic "+BASE_64_TOKEN))
+ .withHeader("Content-Type", equalTo(APPLICATION_JSON))
+ .willReturn(aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withHeader("Content-Type", APPLICATION_XML)
+ .withBody(xml)));
+ /* @formatter:on */
+
+ /* execute */
+ String result = adapterToTest.start(config);
+
+ /* test */
+ verify(getRequestedFor(urlEqualTo("/netsparkertest_1/api/1.0/websites/get?query=" + WEBSITE_ID)));
+ verify(postRequestedFor(urlEqualTo("/netsparkertest_2/api/1.0/websites/new")));
+ verify(postRequestedFor(urlEqualTo("/netsparkertest_3/api/1.0/scans/new")));
+ verify(getRequestedFor(urlEqualTo("/netsparkertest_4/api/1.0/scans/status/1234567890"))); // scanning
+ verify(getRequestedFor(urlEqualTo("/netsparkertest_5/api/1.0/scans/status/1234567890"))); // complete...
+
+ assertEquals(xml, result);
+ }
+
+ @TestConfiguration
+ @EnableAutoConfiguration
+ public static class SimpleTestConfiguration{
+
+ }
+}
\ No newline at end of file
diff --git a/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerConfigBuilderTest.java b/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerConfigBuilderTest.java
new file mode 100644
index 0000000000..d324c06d73
--- /dev/null
+++ b/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerConfigBuilderTest.java
@@ -0,0 +1,105 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import static org.junit.Assert.*;
+
+import java.net.URI;
+import java.util.Collections;
+
+import org.junit.Test;
+
+import com.daimler.sechub.adapter.AbstractAdapterConfig;
+import com.daimler.sechub.adapter.AbstractAdapterConfigBuilder;
+import com.daimler.sechub.adapter.netsparker.NetsparkerConfig.NetsparkerConfigBuilder;
+
+/**
+ * Name handling is tested here because its very important when using NETSPARKER (each name produces costs)
+ * @author Albert Tregnaghi
+ *
+ */
+public class NetsparkerConfigBuilderTest {
+ @Test
+ public void websiteName_is_md5_of_root_target_uri() throws Exception {
+ /* prepare */
+ /* execute */
+ NetsparkerAdapterConfig cfg = validConfigAnd().setTargetURI(URI.create("http://www.example.com")).build();
+
+ /* test */
+ String websiteName = cfg.getWebsiteName();
+ assertNotNull(websiteName);
+ assertEquals("847310eb455f9ae37cb56962213c491d", websiteName);
+ }
+ @Test
+ public void emptyAgentGroupSet_returns_has_agentgroup_false() throws Exception {
+ /* prepare */
+ /* execute */
+ NetsparkerAdapterConfig cfg = validConfigAnd().setAgentGroupName("").build();
+
+ /* test */
+ assertFalse(cfg.hasAgentGroup());
+ }
+
+ @Test
+ public void nullAgentGroupSet_returns_has_agentgroup_false() throws Exception {
+ /* prepare */
+ /* execute */
+ NetsparkerAdapterConfig cfg = validConfigAnd().setAgentGroupName(null).build();
+
+ /* test */
+ assertFalse(cfg.hasAgentGroup());
+ }
+
+ @Test
+ public void agentGroupSet_returns_has_agentgroup_true() throws Exception {
+ /* prepare */
+ /* execute */
+ NetsparkerAdapterConfig cfg = validConfigAnd().setAgentGroupName("agentGroup1").build();
+
+ /* test */
+ assertTrue(cfg.hasAgentGroup());
+ }
+
+
+ @Test
+ public void getAgentGroup_returns_builder_value() throws Exception {
+ /* prepare */
+ /* execute */
+ NetsparkerAdapterConfig cfg = validConfigAnd().setAgentGroupName("agentGroup1").build();
+
+ /* test */
+ assertEquals("agentGroup1", cfg.getAgentGroupName());
+ }
+
+ @Test
+ public void getAgent_returns_builder_value() throws Exception {
+ /* prepare */
+ /* execute */
+ NetsparkerAdapterConfig cfg = validConfigAnd().setAgentName("agent1").build();
+
+ /* test */
+ assertEquals("agent1", cfg.getAgentName());
+ }
+
+ @Test
+ public void configBuilder_is_child_of_abstract_adapter_config_builder() {
+ assertTrue(AbstractAdapterConfigBuilder.class.isAssignableFrom(NetsparkerConfigBuilder.class));
+ }
+ @Test
+ public void config_is_child_of_abstract_adapter_config() {
+ assertTrue(AbstractAdapterConfig.class.isAssignableFrom(NetsparkerConfig.class));
+ }
+
+
+ private NetsparkerConfigBuilder validConfigAnd() {
+ /* @formatter:off */
+ return NetsparkerConfig.builder().
+ setApiToken("apiToken").
+ setLicenseID("licenseId").
+ setProductBaseUrl("https://netsparker.test.example.org").
+ setPolicyID("policyId").
+ setUser("userId").
+ setTargetURIs(Collections.singleton(URI.create("https://www.unknown.de")));
+ /* @formatter:on */
+ }
+
+}
diff --git a/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerContextTest.java b/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerContextTest.java
new file mode 100644
index 0000000000..49342a637d
--- /dev/null
+++ b/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerContextTest.java
@@ -0,0 +1,47 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class NetsparkerContextTest {
+ private NetsparkerContext contextToTest;
+ private NetsparkerAdapterConfig config;
+ private NetsparkerAdapter adapter;
+
+ @Before
+ public void before() throws Exception{
+ config = mock(NetsparkerAdapterConfig.class);
+ adapter = mock(NetsparkerAdapter.class);
+
+ when(config.getProductBaseURL()).thenReturn("http://localhost");
+ when(config.getTargetAsString()).thenReturn("https://my.scan.target");
+ when(config.getRootTargetURIasString()).thenReturn("https://my.scan.target");
+
+ contextToTest = new NetsparkerContext(config,adapter);
+ }
+
+ @Test
+ public void isTimeout_returns_false_when_timeout_is_1000_slept_none() {
+ /* prepare */
+ when(config.getTimeOutInMilliseconds()).thenReturn(1000);
+
+ /* exeucte + test */
+ assertFalse(contextToTest.isTimeOut());
+ }
+
+ @Test
+ public void isTimeout_returns_true_when_timeout_is_1_and_slept_10_millisecond() throws Exception {
+ /* prepare */
+ when(config.getTimeOutInMilliseconds()).thenReturn(1);
+
+ Thread.sleep(10); // NOSONAR
+
+ /* exeucte + test */
+ assertTrue(contextToTest.isTimeOut());
+ }
+
+}
diff --git a/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerStateTest.java b/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerStateTest.java
new file mode 100644
index 0000000000..0967d1fd76
--- /dev/null
+++ b/sechub-adapter-netsparker/src/test/java/com/daimler/sechub/adapter/netsparker/NetsparkerStateTest.java
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: MIT
+package com.daimler.sechub.adapter.netsparker;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class NetsparkerStateTest {
+
+ @Test
+ public void is_wellknown_return_true_for_Cancelled() {
+ assertTrue(NetsparkerState.isWellknown("Cancelled"));
+ }
+
+ @Test
+ public void is_wellknown_return_true_for_Failed() {
+ assertTrue(NetsparkerState.isWellknown("Failed"));
+ }
+
+ @Test
+ public void is_wellknown_return_true_for_Complete() {
+ assertTrue(NetsparkerState.isWellknown("Complete"));
+ }
+
+ @Test
+ public void is_wellknown_return_false_for_Unknown() {
+ assertFalse(NetsparkerState.isWellknown("Unknown"));
+ }
+}
diff --git a/sechub-adapter-netsparker/src/test/resources/README.md b/sechub-adapter-netsparker/src/test/resources/README.md
new file mode 100644
index 0000000000..33ab3d0115
--- /dev/null
+++ b/sechub-adapter-netsparker/src/test/resources/README.md
@@ -0,0 +1,6 @@
+
+About this folder
+=================
+You will find netsparker outputs from real world scans!
+
+Some of the files are used inside tests to ensure the format can be imported/used.
\ No newline at end of file
diff --git a/sechub-adapter-netsparker/src/test/resources/netsparker_v1.0.40.109_new_scan_output.json b/sechub-adapter-netsparker/src/test/resources/netsparker_v1.0.40.109_new_scan_output.json
new file mode 100644
index 0000000000..ef4120f084
--- /dev/null
+++ b/sechub-adapter-netsparker/src/test/resources/netsparker_v1.0.40.109_new_scan_output.json
@@ -0,0 +1 @@
+[{"WebsiteUrl":"https://fscan.intranet.example.org/","TargetPath":"/","TargetUrl":"https://fscan.intranet.example.org/","TargetUrlRoot":"https://fscan.intranet.example.org/","Initiated":"12/02/2018 17:10","InitiatedDate":"12/02/2018","PolicyId":"8f396ade-e7b3-4eb9-071d-a87e02b14345","Scope":"EnteredPathAndBelow","ExcludeLinks":true,"ExcludedLinks":"[\"(log|sign)\\\\-?(out|off)\",\"exit\",\"endsession\",\"gtm\\\\.js\"]","ImportedLinks":null,"TotalVulnerabilityCount":0,"WebsiteName":"cf8faafaa12cc5087be376b88d0fc4dd","PolicyName":"Test","PolicyDescription":null,"UserId":"e4b96574-e3c7-4bbe-00ff-a87e02a82454","UrlRewriteMode":"Heuristic","UrlRewriteRules":null,"MaxDynamicSignatures":60,"SubPathMaxDynamicSignatures":30,"UrlRewriteBlockSeparators":"/$.,;|:","UrlRewriteAnalyzableExtensions":"htm,html","EnableHeuristicChecksInCustomUrlRewrite":true,"Cookies":null,"CrawlAndAttack":true,"FindAndFollowNewLinks":true,"MaxScanDuration":48,"TimeWindow":null,"AdditionalWebsites":null,"AgentId":null,"AgentName":null,"Id":"a42ab3cf-58e8-455e-6668-a88503af65fe","State":"Queued","Phase":"Pending","CompletedSteps":0,"EstimatedSteps":0,"Percentage":0,"VulnerabilityInfoCount":0,"VulnerabilityLowCount":0,"VulnerabilityMediumCount":0,"VulnerabilityHighCount":0,"VulnerabilityCriticalCount":0,"FailureReasonString":null,"FailureReason":null,"FailureReasonDescription":null,"StateChanged":null,"ScanType":"Full","ThreatLevel":"Unknown","ScanTaskGroupId":"05597fe2-61a3-4675-65d7-a88503ae8541","IsCompleted":false,"EstimatedLaunchTime":null,"ScheduledScanId":null,"GlobalVulnerabilityCriticalCount":0,"GlobalVulnerabilityHighCount":0,"GlobalVulnerabilityMediumCount":0,"GlobalVulnerabilityLowCount":0,"GlobalVulnerabilityInfoCount":0,"WebsiteId":"c06d0b15-ab23-476e-64ea-a88503ad1ca0","GlobalThreatLevel":"Unknown"}]
\ No newline at end of file
diff --git a/sechub-adapter-netsparker/src/test/resources/netsparker_v1.0.40.109_scan_result_output_vulnerabilities.json b/sechub-adapter-netsparker/src/test/resources/netsparker_v1.0.40.109_scan_result_output_vulnerabilities.json
new file mode 100644
index 0000000000..636c9df622
--- /dev/null
+++ b/sechub-adapter-netsparker/src/test/resources/netsparker_v1.0.40.109_scan_result_output_vulnerabilities.json
@@ -0,0 +1,203 @@
+{
+ "Generated": "2018-02-13T15:50:49.6965442+00:00",
+ "Target": {
+ "ScanId": "93cc5894f38546f45f7aa8860366c07e",
+ "Url": "https://fscan.intranet.example.org/",
+ "Initiated": "2018-02-13T15:51:05.5981218+01:00",
+ "Duration": "00:30:10.8284631"
+ },
+ "Vulnerabilities": [
+ {
+ "Url": "https://fscan.intranet.example.org/",
+ "Type": "ApacheVersionDisclosure",
+ "Name": "Version Disclosure (Apache)",
+ "Severity": "Low",
+ "Certainty": 90,
+ "Confirmed": false,
+ "State": "Present",
+ "Classification": {
+ "Owasp": "",
+ "Wasc": "45",
+ "Cwe": "205",
+ "Capec": "170",
+ "Pci31": "",
+ "Pci32": "",
+ "Hipaa": "164.306(a), 164.308(a)",
+ "OwaspProactiveControls": ""
+ },
+ "HttpRequest": {
+ "Method": "GET",
+ "Content": "GET / HTTP/1.1\r\nHost: fscan.intranet.example.org\r\nCache-Control: no-cache\r\nConnection: Keep-Alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36\r\nAccept-Language: en-us,en;q=0.5\r\nX-Scanner: Netsparker Cloud\r\nAccept-Encoding: gzip, deflate\r\n\r\n",
+ "Parameters": []
+ },
+ "HttpResponse": {
+ "StatusCode": 200,
+ "Duration": 62.4938,
+ "Content": "HTTP/1.1 200 OK\r\nServer: Apache/2.4.10 (Debian)\r\nConnection: Keep-Alive\r\nKeep-Alive: timeout=5, max=100\r\nContent-Length: 1564\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Encoding: \r\nDate: Tue, 13 Feb 2018 14:50:31 GMT\r\nVary: Accept-Encoding\r\n\r\n\n\n\n\t\n\tFile-Scan Service\n\t\n \n \n \n \n \n \n \n \n\n\n\n
\n
\n\tQuickly check a file for malicious activity or suspicious content. Your file is opened and/or executed in an isolated sandbox environment and every procedure it does is monitored. Your file is treated as confidential, it is deleted after the analysis and solely analyzed on this server.\n
Netsparker Cloud identified a version disclosure (Apache) in the target web server's HTTP response.
This information might help an attacker gain a greater understanding of the systems in use and potentially develop further attacks targeted at the specific version of Apache.
",
+ "Impact": "
An attacker might use the disclosed information to harvest specific security vulnerabilities for the version identified.
\n\tQuickly check a file for malicious activity or suspicious content. Your file is opened and/or executed in an isolated sandbox environment and every procedure it does is monitored. Your file is treated as confidential, it is deleted after the analysis and solely analyzed on this server.\n
Netsparker Cloud detected that insecure transportation security protocol (TLS 1.0) is supported by your web server.
TLS 1.0 has several flaws. An attacker can cause connection failures and they can trigger the use of TLS 1.0 to exploit vulnerabilities like BEAST (Browser Exploit Against SSL/TLS).
Websites using TLS 1.0 will be considered non-compliant by PCI after 30 June 2018.
",
+ "Impact": "
Attackers can perform man-in-the-middle attacks and observe the encryption traffic between your website and its visitors.
Configure your web server to disallow using weak ciphers. You need to restart the web server to enable changes.
For Apache, adjust the SSLProtocol directive provided by the mod_ssl module. This directive can be set either at the server level or in a virtual host configuration.
SSLProtocol +TLSv1.1 +TLSv1.2\n
For Nginx, locate any use of the directive ssl_protocols in the nginx.conf file and remove TLSv1.
ssl_protocols TLSv1.1 TLSv1.2;\n
For Microsoft IIS, you should make some changes on the system registry.
Click on Start and then Run, type regedt32 or regedit, and then click OK.
In Registry Editor, locate the following registry key or create if it does not exist:
+ Quickly check a file for malicious activity or suspicious content. Your file is opened and/or executed in an isolated sandbox environment and every procedure it does is monitored. Your file is treated as confidential, it is deleted after the analysis and solely analyzed on this server.
+
+
+]]>
+
+
+
+
+
+ Netsparker Cloud identified a version disclosure (Apache) in the target web server's HTTP response.
This information might help an attacker gain a greater understanding of the systems in use and potentially develop further attacks targeted at the specific version of Apache.
]]>
+ An attacker might use the disclosed information to harvest specific security vulnerabilities for the version identified.]]>
+
+
+ Configure your web server to prevent information leakage from the SERVER header of its HTTP response.]]>
+
+ Quickly check a file for malicious activity or suspicious content. Your file is opened and/or executed in an isolated sandbox environment and every procedure it does is monitored. Your file is treated as confidential, it is deleted after the analysis and solely analyzed on this server.
+
+
+]]>
+
+
+
+
+
+
+
+
+
+ Apache Denial of Service Vulnerability
+ Medium
+
+
+ Apache Restriction Bypass Vulnerability
+ Medium
+
+
+ Apache Restriction Bypass Vulnerability
+ Medium
+
+
+ Netsparker Cloud identified you are using an out-of-date version of Apache.]]>
+ Since this is an old version of the software, it may be vulnerable to attacks.]]>
+
+
+
Please upgrade your installation of Apache to the latest stable version.
]]>
+
+
+
+
+ https://fscan.intranet.example.org/
+ WeakSignatureAlgorithmDetected
+ Certificate is Signed Using a Weak Signature Algorithm
+ High
+ 100
+ True
+ Present
+
+ A6
+ 4
+
+ 459
+ 6.5.4
+ 6.5.4
+
+ C7
+
+
+
+
+ GET
+
+
+
+ 200
+ 1
+
+
+
+
+
+
+ Netsparker Cloud detected that a certificate is signed using a weak signature algorithm.
The weak signature algorithm is known to be cryptographically weak and vulnerable to collision attacks.
]]>
+ Attackers can observe the encrypted traffic between your website and its visitors by leveraging the use of this vulnerability.]]>
+
+
+ You'll need to generate a new certificate request, and get your CA to issue you a new certificate using SHA-2.]]>
+
+
TLS 1.0 has several flaws. An attacker can cause connection failures and they can trigger the use of TLS 1.0 to exploit vulnerabilities like BEAST (Browser Exploit Against SSL/TLS).
Websites using TLS 1.0 will be considered non-compliant by PCI after 30 June 2018.
]]>
+ Attackers can perform man-in-the-middle attacks and observe the encryption traffic between your website and its visitors.]]>
+
+
+
Configure your web server to disallow using weak ciphers. You need to restart the web server to enable changes.
For Apache, adjust the SSLProtocol directive provided by the mod_ssl module. This directive can be set either at the server level or in a virtual host configuration.
SSLProtocol +TLSv1.1 +TLSv1.2
+
For Nginx, locate any use of the directive ssl_protocols in the nginx.conf file and remove TLSv1.
ssl_protocols TLSv1.1 TLSv1.2;
+
For Microsoft IIS, you should make some changes on the system registry.
Click on Start and then Run, type regedt32 or regedit, and then click OK.
In Registry Editor, locate the following registry key or create if it does not exist: