├── src
├── k6
│ └── README.md
└── cypress
│ ├── src
│ ├── pageobjects
│ │ ├── messagebox
│ │ │ └── common.js
│ │ ├── header.js
│ │ ├── profile
│ │ │ ├── your-contact-info.js
│ │ │ ├── forms-and-services.js
│ │ │ ├── notification-address-for-org.js
│ │ │ └── other-with-rights.js
│ │ ├── infoportal.js
│ │ ├── partyselect.js
│ │ └── login.js
│ ├── fixtures
│ │ ├── texts.json
│ │ └── correspondence.xml
│ ├── config
│ │ └── baseurl.json
│ ├── support
│ │ ├── index.js
│ │ ├── party-select.js
│ │ ├── login.js
│ │ └── soap
│ │ │ └── correspondence.js
│ ├── data
│ │ └── sample.env.json
│ ├── integration
│ │ ├── services
│ │ │ └── correspondence.js
│ │ ├── login
│ │ │ └── altinn-login.js
│ │ ├── profile
│ │ │ ├── your-contact-info.js
│ │ │ ├── org-profile-info.js
│ │ │ └── delegation
│ │ │ │ └── single-rights.js
│ │ └── pdf
│ │ │ └── pdf.js
│ └── plugins
│ │ └── index.js
│ ├── .prettierrc
│ ├── .gitignore
│ ├── README.md
│ ├── cypress.json
│ ├── .eslintrc.json
│ ├── docker-compose.yml
│ └── package.json
├── renovate.json
├── README.md
├── performance-tests
├── README.md
├── t3search
│ ├── README.md
│ └── src
│ │ └── t3search.js
├── tax-report
│ ├── README.md
│ └── src
│ │ ├── tax-report.js
│ │ └── tax.xml
└── generate-tokens
│ └── src
│ ├── generate-tokens.js
│ ├── token-generator.js
│ ├── generate-tokens.sh
│ ├── generate-tokens.ps1
│ └── data.csv
├── LICENSE
├── .github
└── workflows
│ ├── taxreport-loadtest-push.yml
│ ├── t3search-loadtest-push.yml
│ ├── taxreport-loadtest-schedule.yml
│ ├── t3search-loadtest-ondemand.yml
│ └── taxreport-loadtest-ondemand.yml
└── .gitignore
/src/k6/README.md:
--------------------------------------------------------------------------------
1 | # Altinn 2 K6 tests
2 |
3 | ...
4 |
--------------------------------------------------------------------------------
/src/cypress/src/pageobjects/messagebox/common.js:
--------------------------------------------------------------------------------
1 | export const common = {
2 | archives: 'button[onclick*="href=\'/ui/MessageBox/Archive\'"]',
3 | }
4 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3 | "extends": [
4 | "local>Altinn/renovate-config"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/src/cypress/src/pageobjects/header.js:
--------------------------------------------------------------------------------
1 | export const header = {
2 | nav: '#primary-nav',
3 | navList: {
4 | profile: 'a[href="/ui/Profile"]',
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/src/cypress/src/fixtures/texts.json:
--------------------------------------------------------------------------------
1 | {
2 | "correspondenceSaved": "Correspondence Saved Successfully",
3 | "accSecurityLevel2Mag": "ACC Security level 2 MAG"
4 | }
5 |
--------------------------------------------------------------------------------
/src/cypress/src/pageobjects/profile/your-contact-info.js:
--------------------------------------------------------------------------------
1 | export const yourContactInfo = {
2 | header: '#myContactInfoHeader',
3 | address: '#text-input-201',
4 | }
5 |
--------------------------------------------------------------------------------
/src/cypress/src/pageobjects/infoportal.js:
--------------------------------------------------------------------------------
1 | export const infoPortal = {
2 | login: 'button[onclick="location.href = \'/ui/messagebox\'"]',
3 | navList: '#nav-list',
4 | }
5 |
--------------------------------------------------------------------------------
/src/cypress/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/prettierrc",
3 | "trailingComma": "all",
4 | "tabWidth": 2,
5 | "semi": false,
6 | "singleQuote": true,
7 | "printWidth": 120
8 | }
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # End-to-end tests
2 | This repo holds end-to-end tests for Altinn 3.
3 | Any tests that uses elements from different apis from different repos. Can be both functional and non-functional tests. Further descriptions:
4 |
5 | - [Performance tests](performance-tests/README.md)
--------------------------------------------------------------------------------
/src/cypress/src/config/baseurl.json:
--------------------------------------------------------------------------------
1 | {
2 | "at21": "https://at21.altinn.cloud",
3 | "at22": "https://at22.altinn.cloud",
4 | "at23": "https://at23.altinn.cloud",
5 | "at24": "https://at24.altinn.cloud",
6 | "tt02": "https://tt02.altinn.no",
7 | "prod": "https://altinn.no"
8 | }
--------------------------------------------------------------------------------
/src/cypress/src/pageobjects/profile/forms-and-services.js:
--------------------------------------------------------------------------------
1 | export const formsAndServices = {
2 | formsheader: '[data-target="#dineRettigheter"]',
3 | rolesList: 'div#DirectRoles-View',
4 | rightsList: 'div#DirectRights-View',
5 | InstancesList: 'div#DelegatedInstances-View',
6 | }
7 |
--------------------------------------------------------------------------------
/performance-tests/README.md:
--------------------------------------------------------------------------------
1 | # Performance tests
2 | ## Requirements
3 | - [Install k6](https://grafana.com/docs/k6/latest/set-up/install-k6/)
4 | - [Install k6 extentions](https://github.com/grafana/xk6/)
5 | ### Test cases:
6 | - [tax report](tax-report/README.md)
7 | - [t3search](t3search/README.md)
--------------------------------------------------------------------------------
/src/cypress/src/support/index.js:
--------------------------------------------------------------------------------
1 | import './login'
2 | import './soap/correspondence'
3 | import './party-select'
4 | import 'xml2js'
5 |
6 | before(() => {
7 | Cypress.on('uncaught:exception', (e, runnable) => {
8 | console.log('error', e)
9 | console.log('runnable', runnable)
10 | return false
11 | })
12 | })
13 |
--------------------------------------------------------------------------------
/src/cypress/src/data/sample.env.json:
--------------------------------------------------------------------------------
1 | {
2 | "pinUser": "",
3 | "passwordUser": "",
4 | "password": "",
5 | "OrgNum": "",
6 | "delegation":{
7 | "offeredBy":"",
8 | "coveredBy":"",
9 | "coveredByName": ""
10 | },
11 | "serviceOwner": {
12 | "systemUserName": "",
13 | "systemPassword": ""
14 | },
15 | "services":{
16 | "correspondence": ""
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/cypress/src/pageobjects/partyselect.js:
--------------------------------------------------------------------------------
1 | export const partySelect = {
2 | search: '#ReporteeSearch_SearchText_Favorites',
3 | reporteeSelf: '#reporteeSelfContainer',
4 | reporteeButton: 'button[class*="a-btn-shadow-large"]',
5 | reporteeOthers: '#reporteeListContentFull',
6 | updateContact: {
7 | form: '#updatePersonalContactInformation',
8 | toInbox: 'a[href*="ui/Message"]',
9 | },
10 | }
11 |
--------------------------------------------------------------------------------
/src/cypress/.gitignore:
--------------------------------------------------------------------------------
1 | #vscode settings
2 | .vscode/
3 |
4 | # Dependency directories
5 | node_modules/
6 |
7 | # Optional npm cache directory
8 | .npm
9 |
10 | # Optional eslint cache
11 | .eslintcache
12 |
13 | # dotenv environment variables file
14 | .env
15 |
16 | # Screenshots and video
17 | screenshots/
18 | videos/
19 |
20 | # Junit xml reports
21 | reports/
22 |
23 | # Downloads
24 | downloads/
25 |
26 | #Test data
27 | data/
--------------------------------------------------------------------------------
/src/cypress/src/integration/services/correspondence.js:
--------------------------------------------------------------------------------
1 | ///
2 | import * as texts from '../../fixtures/texts.json'
3 |
4 | describe('Correspondence', () => {
5 | it('Send Correspondence', () => {
6 | cy.sendCorrespondence(Cypress.env('pinUser')).then((response) => {
7 | expect(response.status).to.eq(200)
8 | expect(response.body).contains(texts.correspondenceSaved)
9 | })
10 | })
11 | })
12 |
--------------------------------------------------------------------------------
/src/cypress/src/pageobjects/profile/notification-address-for-org.js:
--------------------------------------------------------------------------------
1 | export const orgNotificationAddress = {
2 | addressHeader: '#contactSettingsEnterprise',
3 | addressExpanded: '#ContactSettingsEnterpriseContent',
4 | form: '#formContactSettingsEnterprise',
5 | eMails: '.a-email',
6 | eMail: 'input[id*="Email"][class*="form-control"]',
7 | phoneNumbers: '.a-sms',
8 | phoneNumber: 'input[id*="Phone"][class*="form-control"]',
9 | saveButton: 'button.a-btn.a-btn-success',
10 | }
11 |
--------------------------------------------------------------------------------
/src/cypress/src/pageobjects/login.js:
--------------------------------------------------------------------------------
1 | export const login = {
2 | userName: '#SSN_Input',
3 | altinnPin: {
4 | form: '#altinnPinForm',
5 | pinOne: '#AltinnPinOneRequest_Pin',
6 | submitPinOne: '#submitFirstPinBtn',
7 | pinTwo: '#AltinnPinTwoRequest_Pin',
8 | pinTwoText: 'label[for="AltinnPinTwoRequest_Pin"]',
9 | submitPinTwo: '#submitSecondPinBtn',
10 | },
11 | altinnPwd: {
12 | form: '#personalPasswordForm',
13 | passwordTab: '#PasswordTab',
14 | password: '#SsnPasswordRequest_Password',
15 | submit: '#personalPassSubmitBtn',
16 | },
17 | }
18 |
--------------------------------------------------------------------------------
/src/cypress/src/support/party-select.js:
--------------------------------------------------------------------------------
1 | ///
2 | import { partySelect } from '../pageobjects/partyselect'
3 |
4 | /**
5 | * Select the first reportee in list and click ask me later
6 | * when asked to confirm contact information
7 | */
8 | Cypress.Commands.add('selectOrgAsReportee', () => {
9 | cy.get(partySelect.reporteeOthers)
10 | .children('div')
11 | .should('have.length', 1)
12 | .find(partySelect.reporteeButton)
13 | .should('be.visible')
14 | .click()
15 | cy.get(partySelect.updateContact.form).then(($form) => {
16 | if ($form.length) {
17 | cy.get(partySelect.updateContact.form).find(partySelect.updateContact.toInbox).click()
18 | }
19 | })
20 | })
21 |
--------------------------------------------------------------------------------
/src/cypress/README.md:
--------------------------------------------------------------------------------
1 | # Introduction
2 |
3 | This project is for End to end testing of Altinn solution using [cypress](https://www.cypress.io/).
4 |
5 | ## Getting Started
6 |
7 | These instructions will get you run the end to end tests on test environments.
8 |
9 | ### Install dependencies
10 |
11 | ```cmd
12 | npm install # only needed first time, or when dependencies are updated
13 | ```
14 |
15 | ### Open cypress and run tests
16 |
17 | Run the below command to open cypress with the environment
18 |
19 | ```cmd
20 | npm run cy:open --env=at22
21 | ```
22 |
23 | ### Format files with prettier
24 |
25 | ```cmd
26 | npm run check # For checking the files deviating standards
27 | npm run format # format and save the files based on config
28 | ```
29 |
--------------------------------------------------------------------------------
/src/cypress/cypress.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://on.cypress.io/cypress.schema.json",
3 | "env": {},
4 | "video": false,
5 | "fixturesFolder": "src/fixtures",
6 | "integrationFolder": "src/integration",
7 | "supportFile": "src/support/index.js",
8 | "pluginsFile": "src/plugins/index.js",
9 | "downloadsFolder": "downloads",
10 | "screenshotOnRunFailure": true,
11 | "screenshotsFolder": "screenshots",
12 | "trashAssetsBeforeRuns": true,
13 | "videosFolder": "videos",
14 | "viewportHeight": 768,
15 | "viewportWidth": 1536,
16 | "requestTimeout": 10000,
17 | "defaultCommandTimeout": 8000,
18 | "chromeWebSecurity": false,
19 | "reporter": "junit",
20 | "reporterOptions": {
21 | "mochaFile": "reports/result-[hash].xml"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/cypress/src/integration/login/altinn-login.js:
--------------------------------------------------------------------------------
1 | ///
2 | import { partySelect } from '../../pageobjects/partyselect'
3 |
4 | describe('Altinn Login', () => {
5 | beforeEach(() => {
6 | cy.visit('/ui/authentication')
7 | })
8 |
9 | it('Login with AltinnPin', () => {
10 | cy.loginWithPin(Cypress.env('pinUser'), 'ajhhs')
11 | cy.get(partySelect.search).type(Cypress.env('pinUser'))
12 | cy.get(partySelect.reporteeSelf).find(partySelect.reporteeButton).should('be.visible')
13 | })
14 |
15 | it('Login with AltinnPassword', () => {
16 | cy.loginWithPassword(Cypress.env('passwordUser'), Cypress.env('password'))
17 | cy.get(partySelect.search).type(Cypress.env('passwordUser'))
18 | cy.get(partySelect.reporteeSelf).find(partySelect.reporteeButton).should('be.visible')
19 | })
20 | })
21 |
--------------------------------------------------------------------------------
/src/cypress/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "cypress/globals": true
4 | },
5 | "plugins": [
6 | "cypress"
7 | ],
8 | "extends": [
9 | "plugin:cypress/recommended",
10 | "plugin:prettier/recommended"
11 | ],
12 | "ignorePatterns": [
13 | "src/data",
14 | "src/reports",
15 | "src/fixtures",
16 | "src/config"
17 | ],
18 | "rules": {
19 | "eol-last": "error",
20 | "max-len": [
21 | "error",
22 | {
23 | "code": 120,
24 | "tabWidth": 2,
25 | "ignoreUrls": true
26 | }
27 | ],
28 | "indent": [
29 | "warn",
30 | 2,
31 | {
32 | "SwitchCase": 1
33 | }
34 | ],
35 | "quotes": [
36 | "warn",
37 | "single",
38 | {
39 | "avoidEscape": true,
40 | "allowTemplateLiterals": true
41 | }
42 | ],
43 | "semi": [
44 | "warn",
45 | "never"
46 | ]
47 | }
48 | }
--------------------------------------------------------------------------------
/src/cypress/src/integration/profile/your-contact-info.js:
--------------------------------------------------------------------------------
1 | ///
2 | import { partySelect } from '../../pageobjects/partyselect'
3 | import { header } from '../../pageobjects/header'
4 | import { yourContactInfo } from '../../pageobjects/profile/your-contact-info'
5 |
6 | describe('Your contact information', () => {
7 | before(() => {
8 | cy.visit('/ui/authentication')
9 | })
10 |
11 | it('Adress field is not empty', () => {
12 | cy.loginWithPin(Cypress.env('pinUser'), 'ajhhs')
13 | cy.get(partySelect.search).type(Cypress.env('pinUser'))
14 | cy.get(partySelect.reporteeSelf).find(partySelect.reporteeButton).should('be.visible').click()
15 | cy.get(header.nav).find(header.navList.profile).should('be.visible').click()
16 | cy.get(yourContactInfo.header).should('be.visible').click()
17 | cy.get(yourContactInfo.address).should('exist').invoke('attr', 'value').should('not.be.empty')
18 | })
19 | })
20 |
--------------------------------------------------------------------------------
/performance-tests/t3search/README.md:
--------------------------------------------------------------------------------
1 | # Load test for t3search
2 | Load test for t3search, does the following, divided in two separate steps
3 |
4 | ## Steps
5 | 1. create tokens
6 | 2. Do a simple search:
7 |
8 | ## Run locally
9 | 1. Clone this repo
10 | 2. Go to src directory
11 | 3. build k6 with fileextention
12 | 4. run k6 extention to create tokens
13 | 4. run test
14 | ```
15 | git clone
16 | cd altinn-test/performance-tests/t3search/src
17 | xk6 build v0.46.0 --with github.com/avitalique/xk6-file@latest
18 | ./k6 run -e env=<> -e tokengenuser=<> -e tokengenuserpwd=<> ../../generate-tokens/src/generate-tokens.js
19 | k6 run -e subscription_key= t3search.js
20 | ```
21 | ## Github actions
22 | ### On push
23 | Runs a test for every push to the performance-loadtest/t3search directory
24 | - one vu
25 | - one minute
26 | ### Ondemand
27 | Runs when requested
28 | - selectable number of vus
29 | - selectable duration
30 | - selectable runner
31 |
--------------------------------------------------------------------------------
/src/cypress/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.2'
2 |
3 | # run Cypress tests and exit with command
4 | # docker-compose up --exit-code-from cypress
5 | services:
6 | cypress:
7 | image: 'cypress/included:6.6.0'
8 | environment:
9 | - CYPRESS_environment=at23
10 | working_dir: /AutomatedportalTest
11 | volumes:
12 | - ./:/AutomatedportalTest
13 | command: '--spec /AutomatedportalTest/src/integration/pdf/pdf.js -b chrome'
14 | cypress2:
15 | image: 'cypress/included:6.6.0'
16 | environment:
17 | - CYPRESS_environment=at23
18 | working_dir: /AutomatedportalTest
19 | volumes:
20 | - ./:/AutomatedportalTest
21 | command: '--spec /AutomatedportalTest/src/integration/login/*.js -b chrome'
22 | cypress3:
23 | image: 'cypress/included:6.6.0'
24 | environment:
25 | - CYPRESS_environment=at23
26 | working_dir: /AutomatedportalTest
27 | volumes:
28 | - ./:/AutomatedportalTest
29 | command: '--spec "/AutomatedportalTest/src/integration/profile/*.js,/AutomatedportalTest/src/integration/services/*.js" -b chrome'
30 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Altinn
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/cypress/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "automatedportaltest",
3 | "version": "1.0.0",
4 | "description": "automated tests for altinn sbl",
5 | "main": "index.js",
6 | "scripts": {
7 | "eslint:check": "eslint \"src/**\"",
8 | "eslint:fix": "eslint \"src/**\" --fix",
9 | "prettier:check": "prettier -c src/**/*.js",
10 | "prettier:format": "prettier -w src/**/*.js",
11 | "cy:open": "cypress open --env environment=%npm_config_env%",
12 | "merge-reports": "jrm reports/combined.xml \"reports/*.xml\""
13 | },
14 | "repository": {
15 | "type": "git",
16 | "url": "https://tfs.ai-dev.brreg.no/Altinn/Altinn/_git/AutomatedPortalTest"
17 | },
18 | "devDependencies": {
19 | "cypress": "^8.4.1",
20 | "cypress-file-upload": "^5.0.8",
21 | "cypress-parallel": "^0.5.0",
22 | "eslint": "^7.32.0",
23 | "eslint-config-prettier": "^8.3.0",
24 | "eslint-plugin-cypress": "^2.12.1",
25 | "eslint-plugin-prettier": "^4.0.0",
26 | "fs-extra": "^10.0.0",
27 | "junit-report-merger": "^3.0.2",
28 | "path": "^0.12.7",
29 | "pdf-parse": "^1.1.1",
30 | "prettier": "2.4.1",
31 | "xml2js": "^0.4.23"
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/performance-tests/tax-report/README.md:
--------------------------------------------------------------------------------
1 | # Load test for tax report
2 | Load test for tax report, does the following, divided in two separate steps
3 |
4 | ## Steps
5 | 1. create tokens
6 | 2. upload tax report:
7 | - create instance
8 | - upload tax report
9 | - callbacks and confirm (twice)
10 | - get receipt id
11 | - get receipt
12 | ## Run locally
13 | 1. Clone this repo
14 | 2. Go to src directory
15 | 3. build k6 with fileextention
16 | 4. run k6 extention to create tokens
17 | 4. run test
18 | ```
19 | git clone
20 | cd altinn-test/performance-tests/tax-report/src
21 | xk6 build v0.46.0 --with github.com/avitalique/xk6-file@latest
22 | ./k6 run -e env=<> -e tokengenuser=<> -e tokengenuserpwd=<> ../../generate-tokens/src/generate-tokens.js
23 | k6 run -e serviceowner=<> tax-report.js
24 | ```
25 | ## Github actions
26 | ### On push
27 | Runs a test for every push to the performance-loadtest/tax-report directory
28 | - one vu
29 | - one minute
30 | ### Scheduled
31 | Runs every morning at 06:15
32 | - 40 vus
33 | - 15 minutes
34 | ### Ondemand
35 | Runs when requested
36 | - selectable number of vus
37 | - selectable duration
38 | - selectable runner
39 |
--------------------------------------------------------------------------------
/.github/workflows/taxreport-loadtest-push.yml:
--------------------------------------------------------------------------------
1 | name: taxreport loadtest smoketest
2 |
3 | on:
4 | push:
5 | branches:
6 | - '**'
7 | paths:
8 | - performance-tests/tax-report/**
9 | - .github/workflows/taxreport-loadtest-push.yml
10 |
11 | jobs:
12 | run-taxreport-on-push:
13 | runs-on: ubuntu-latest
14 | steps:
15 | - name: Checkout
16 | uses: actions/checkout@v4
17 |
18 | - name: Generate tokens
19 | working-directory: ./performance-tests/tax-report/src
20 | run: ../../generate-tokens/src/generate-tokens.sh ../../generate-tokens/src 1
21 | env:
22 | API_ENVIRONMENT: ${{ secrets.YTENVIRONMENT }}
23 | TOKEN_GENERATOR_USERNAME: ${{ secrets.TOKENGENUSER }}
24 | TOKEN_GENERATOR_PASSWORD: ${{ secrets.TOKENGENPWD }}
25 |
26 | - name: Setup K6
27 | uses: grafana/setup-k6-action@v1
28 |
29 | - name: Run local k6 test
30 | uses: grafana/run-k6-action@v1
31 | with:
32 | path: performance-tests/tax-report/src/tax-report.js
33 | flags: --vus=1 --iterations=1
34 | env:
35 | serviceowner: ${{ secrets.OWNER }}
36 |
37 |
38 |
--------------------------------------------------------------------------------
/src/cypress/src/integration/pdf/pdf.js:
--------------------------------------------------------------------------------
1 | ///
2 | import { partySelect } from '../../pageobjects/partyselect'
3 | import { common } from '../../pageobjects/messagebox/common'
4 | import * as texts from '../../fixtures/texts.json'
5 |
6 | describe('PDF', () => {
7 | before(() => {
8 | cy.visit('/ui/authentication')
9 | })
10 |
11 | it('Verify Pdf downloaded from an archived reporting service', () => {
12 | cy.loginWithPin(Cypress.env('pinUser'), 'ajhhs')
13 | cy.get(partySelect.search).type(Cypress.env('pinUser'))
14 | cy.get(partySelect.reporteeSelf).find(partySelect.reporteeButton).should('be.visible').click()
15 | cy.get(common.archives).click()
16 | cy.get('.row.a-inboxHeadingContent').click()
17 | cy.get('div[id*="accordionItem-messageBox"]').find('button[onclick*="RedirectToArchivedElement"]').click()
18 | cy.get('a[id*=ReceiptPrintFormSet]').click()
19 | cy.readFile(`${Cypress.config('downloadsFolder')}/${texts.accSecurityLevel2Mag}.pdf`, 'binary').should('exist')
20 | cy.task('getPdfContent', `${texts.accSecurityLevel2Mag}.pdf`).then((content) => {
21 | expect(content.numpages).to.equal(2)
22 | expect(content.text).contains('RF-1117')
23 | })
24 | })
25 | })
26 |
--------------------------------------------------------------------------------
/src/cypress/src/pageobjects/profile/other-with-rights.js:
--------------------------------------------------------------------------------
1 | export const otherWithRights = {
2 | header: '#othersWithRightsHeader',
3 | expanded: '#andremedrettigheter',
4 | addNewRights: '#addNewRightHolder',
5 | button: 'button[class*="a-btn"]',
6 | receipt: '.a-modal-receiptContent',
7 | done: '.a-btn-success',
8 | rightHolder: 'li[class="a-list-parentRightHolder"]',
9 | addReportee: {
10 | SSN: {
11 | tab: 'a[href="#person"]',
12 | idName: '#NewRightHolder_NewRightHolderPerson_SsnUsername',
13 | surName: '#NewRightHolder_NewRightHolderPerson_Surname',
14 | next: '#submitAddNewPerson',
15 | },
16 | },
17 | editRolesAndRightForm: {
18 | form: '#EditRolesAndRightForm',
19 | servicesList: '#serviceListIdInputDelegate',
20 | searchResults: 'li[role="menu"][id*="search"]',
21 | removeRights: 'button[class*="a-linkDanger"]',
22 | removeAll: 'label[for="delete-all-rights-checkbox"]',
23 | },
24 | delegateRightsForm: {
25 | form: '#delegateRightsForm',
26 | read: 'input[id*="Read"][name="addRights"]',
27 | write: 'input[id*="Write"][name="addRights"]',
28 | sign: 'input[id*="Sign"][name="addRights"]',
29 | submit: '#submit-email-rights',
30 | },
31 | submitemailform: {
32 | form: '#submitemailform',
33 | emailId: '#SubmitEmail_Input',
34 | submit: '#submitEmailbt',
35 | },
36 | }
37 |
--------------------------------------------------------------------------------
/performance-tests/generate-tokens/src/generate-tokens.js:
--------------------------------------------------------------------------------
1 | import papaparse from 'https://jslib.k6.io/papaparse/5.1.1/index.js';
2 | import { SharedArray } from 'k6/data';
3 | import {generateToken} from './token-generator.js';
4 | import file from 'k6/x/file';
5 |
6 |
7 | const environment = __ENV.env.toLowerCase();
8 | const tokenGeneratorUserName = __ENV.tokengenuser;
9 | const tokenGeneratorUserPwd = __ENV.tokengenuserpwd;
10 | const limit = (__ENV.limit === undefined ? 0 : __ENV.limit);
11 | const ttl = (__ENV.ttl === undefined ? 3600 : __ENV.ttl)
12 |
13 | const filepath = 'data-with-tokens.csv';
14 | const idKeys = new SharedArray('idKeys', function () {
15 | return papaparse.parse(open('data.csv'), { header: true }).data;
16 | });
17 |
18 | export const options = {
19 | vus: 1,
20 | };
21 |
22 | export default function() {
23 | file.writeString(filepath, 'userId,partyId,ssn,token');
24 | var count = 0
25 | for (const idKey of idKeys) {
26 | var tokenGenParams = {
27 | env: environment,
28 | userId: idKey.userid,
29 | partyId: idKey.partyid,
30 | pid: idKey.ssn,
31 | ttl: ttl
32 | };
33 | var token = generateToken(tokenGeneratorUserName, tokenGeneratorUserPwd, tokenGenParams);
34 | file.appendString(filepath, `\n${idKey.userid},${idKey.partyid},${idKey.ssn},${token}`);
35 | count += 1;
36 | if (count >= limit && limit > 0) break;
37 | };
38 | }
39 |
--------------------------------------------------------------------------------
/src/cypress/src/support/login.js:
--------------------------------------------------------------------------------
1 | ///
2 | import { login } from '../pageobjects/login'
3 | import * as pins from '../data/pin.json'
4 |
5 | /**
6 | * Find the second pin to type and enter it
7 | */
8 | Cypress.Commands.add('typePinTwo', (pinSet) => {
9 | cy.get(login.altinnPin.pinTwoText).then((label) => {
10 | const labelText = label.text()
11 | const pinNo = labelText.replace(/Kode |Code number /s, '').split(' ')[0]
12 | cy.get(login.altinnPin.pinTwo).type(pinSet == 'ajhhs' ? pins[parseInt(pinNo)] : pins[0], { log: false })
13 | })
14 | })
15 |
16 | /**
17 | * Login with altinnpin with the pin set
18 | */
19 | Cypress.Commands.add('loginWithPin', (userName, pinSet) => {
20 | cy.get(login.altinnPin.form).find(login.userName).should('be.visible').type(userName, { log: false })
21 | cy.get(login.altinnPin.pinOne).type(pinSet == 'ajhhs' ? pins[1] : pins[0], { log: false })
22 | cy.get(login.altinnPin.submitPinOne).click()
23 | cy.typePinTwo(pinSet)
24 | cy.get(login.altinnPin.submitPinTwo).click()
25 | })
26 |
27 | /**
28 | * Login with altinn password
29 | */
30 | Cypress.Commands.add('loginWithPassword', (userName, password) => {
31 | cy.get(login.altinnPwd.passwordTab).should('be.visible').click()
32 | cy.get(login.altinnPwd.form).find(login.userName).should('be.visible').type(userName, { log: false })
33 | cy.get(login.altinnPwd.password).type(password, { log: false })
34 | cy.get(login.altinnPwd.submit).click()
35 | })
36 |
--------------------------------------------------------------------------------
/.github/workflows/t3search-loadtest-push.yml:
--------------------------------------------------------------------------------
1 | name: t3search loadtest smoketest
2 |
3 | on:
4 | push:
5 | branches:
6 | - '**'
7 | paths:
8 | - performance-tests/t3search/**
9 | - .github/workflows/t3search-loadtest-push.yml
10 |
11 | jobs:
12 | run-t3search-on-push:
13 | runs-on: ubuntu-latest
14 | steps:
15 | - name: Checkout
16 | uses: actions/checkout@v4
17 |
18 | - name: Setup go
19 | uses: actions/setup-go@v5
20 | with:
21 | go-version: 'stable'
22 |
23 | - name: Install xk6
24 | run: go install go.k6.io/xk6/cmd/xk6@latest
25 |
26 | - name: Build xk6-counter binary
27 | working-directory: ./performance-tests/t3search/src
28 | run: xk6 build --with github.com/avitalique/xk6-file@latest
29 |
30 | - name: Run k6 to generate tokens
31 | working-directory: ./performance-tests/t3search/src
32 | run: ./k6 run ../../generate-tokens/src/generate-tokens.js
33 | env:
34 | env: ${{ secrets.YTENVIRONMENT }}
35 | tokengenuser: ${{ secrets.TOKENGENUSER }}
36 | tokengenuserpwd: ${{ secrets.TOKENGENPWD }}
37 | limit: 1
38 |
39 | - name: Setup K6
40 | uses: grafana/setup-k6-action@v1
41 |
42 | - name: Run local k6 test
43 | uses: grafana/run-k6-action@v1
44 | with:
45 | path: performance-tests/t3search/src/t3search.js
46 | flags: --vus=1 --iterations=1
47 | env:
48 | subscription_key: ${{ secrets.SUBSCRIPTION_KEY }}
49 |
50 |
51 |
--------------------------------------------------------------------------------
/performance-tests/generate-tokens/src/token-generator.js:
--------------------------------------------------------------------------------
1 | import http from 'k6/http';
2 | import { check } from 'k6';
3 | import encoding from 'k6/encoding';
4 | import { fail } from 'k6';
5 |
6 | export function generateToken(userName, userPwd, queryParams) {
7 | const credentials = `${userName}:${userPwd}`;
8 | const encodedCredentials = encoding.b64encode(credentials);
9 | var endpoint = 'https://altinn-testtools-token-generator.azurewebsites.net/api/GetPersonalToken';
10 | endpoint += buildQueryParametersForEndpoint(queryParams);
11 | var params = {
12 | headers: {
13 | Authorization: `Basic ${encodedCredentials}`,
14 | },
15 | };
16 |
17 | var token = http.get(endpoint, params);
18 | if (token.status != 200) stopIterationOnFail('token gen failed', false, token);
19 | token = token.body;
20 | return token;
21 | }
22 |
23 | export function buildQueryParametersForEndpoint(filterParameters) {
24 | var query = '?';
25 | Object.keys(filterParameters).forEach(function (key) {
26 | if (Array.isArray(filterParameters[key])) {
27 | filterParameters[key].forEach((value) => {
28 | query += key + '=' + value + '&';
29 | });
30 | } else {
31 | query += key + '=' + filterParameters[key] + '&';
32 | }
33 | });
34 | query = query.slice(0, -1);
35 | return query;
36 | }
37 |
38 | export function stopIterationOnFail(testName, success, res) {
39 | if (!success && res != null) {
40 | console.log("fail 1");
41 | fail(testName + ': Response code: ' + res.status);
42 | } else if (!success) {
43 | console.log("fail 2");
44 | fail(testName);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/cypress/src/plugins/index.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 | const fs = require('fs-extra')
3 | const pdf = require('pdf-parse')
4 |
5 | const downloadsPath = path.join(__dirname, '..', '..', 'downloads')
6 |
7 | function getJsonDataFromFile(pathToFile, file) {
8 | const pathToJsonDataFile = path.resolve(pathToFile, `${file}.json`)
9 | return fs.readJson(pathToJsonDataFile)
10 | }
11 |
12 | module.exports = async (on, config) => {
13 | on('task', {
14 | getPdfContent(pdfName) {
15 | const pdfPathname = path.join(downloadsPath, pdfName)
16 | let dataBuffer = fs.readFileSync(pdfPathname)
17 | return pdf(dataBuffer)
18 | },
19 | })
20 |
21 | var baseUrls = await getJsonDataFromFile('src/config', 'baseurl')
22 | switch (config.env.environment) {
23 | case 'at21':
24 | config.baseUrl = baseUrls.at21
25 | config.env = await getJsonDataFromFile('src/data', 'at21')
26 | break
27 | case 'at22':
28 | config.baseUrl = baseUrls.at22
29 | config.env = await getJsonDataFromFile('src/data', 'at22')
30 | break
31 | case 'at23':
32 | config.baseUrl = baseUrls.at23
33 | config.env = await getJsonDataFromFile('src/data', 'at23')
34 | break
35 | case 'at24':
36 | config.baseUrl = baseUrls.at24
37 | config.env = await getJsonDataFromFile('src/data', 'at24')
38 | break
39 | case 'tt02':
40 | config.baseUrl = baseUrls.tt02
41 | config.env = await getJsonDataFromFile('src/data', 'tt02')
42 | break
43 | case 'prod':
44 | config.baseUrl = baseUrls.prod
45 | config.env = await getJsonDataFromFile('src/data', 'prod')
46 | break
47 | }
48 |
49 | return config
50 | }
51 |
--------------------------------------------------------------------------------
/src/cypress/src/fixtures/correspondence.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 1033
15 | Correspondence test
16 | Du har fått tilsendt en melding.
17 | Åpne meldingen ved å trykke på linken under.
18 | Correspondence
19 |
20 | 2021-01-01T16:17:00.000Z
21 | 2022-09-19T20:13:00.000Z
22 | 2022-10-20T13:15:05.000Z
23 | 1
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/cypress/src/integration/profile/org-profile-info.js:
--------------------------------------------------------------------------------
1 | ///
2 | import { partySelect } from '../../pageobjects/partyselect'
3 | import { header } from '../../pageobjects/header'
4 | import { formsAndServices } from '../../pageobjects/profile/forms-and-services'
5 | import { orgNotificationAddress } from '../../pageobjects/profile/notification-address-for-org'
6 |
7 | describe('Organisation profile Information', () => {
8 | before(() => {
9 | cy.visit('/ui/authentication')
10 | cy.loginWithPin(Cypress.env('pinUser'), 'ajhhs')
11 | cy.get(partySelect.search).type(Cypress.env('OrgNum'))
12 | cy.selectOrgAsReportee()
13 | })
14 | beforeEach(() => {
15 | Cypress.Cookies.preserveOnce('altinnReportee', 'AltinnPartyId', '.ASPXAUTH')
16 | cy.get(header.nav).find(header.navList.profile).should('be.visible').click()
17 | })
18 |
19 | it('Org Forms and Services', () => {
20 | cy.get(formsAndServices.formsheader).should('be.visible').click()
21 | cy.get(formsAndServices.rolesList).should('exist').should('not.be.empty').should('contain', 'Daglig leder')
22 | })
23 |
24 | it('Org Notification Address', () => {
25 | cy.get(orgNotificationAddress.addressHeader).should('be.visible').click()
26 | cy.get(orgNotificationAddress.form).then((form) => {
27 | expect(form).to.exist
28 | cy.get(form)
29 | .get(orgNotificationAddress.eMails)
30 | .first()
31 | .get(orgNotificationAddress.eMail)
32 | .first()
33 | .should('be.visible')
34 | .focus()
35 | .clear()
36 | .type(`test${Math.floor(Math.random() * 10000)}@mail.com`)
37 | cy.get(form)
38 | .get(orgNotificationAddress.phoneNumbers)
39 | .first()
40 | .get(orgNotificationAddress.phoneNumber)
41 | .first()
42 | .focus()
43 | .clear()
44 | .type('91008912')
45 | cy.get(form).find(orgNotificationAddress.saveButton).should('be.visible').click()
46 | })
47 | })
48 | })
49 |
--------------------------------------------------------------------------------
/src/cypress/src/support/soap/correspondence.js:
--------------------------------------------------------------------------------
1 | ///
2 | const baseUrl = Cypress.config('baseUrl')
3 | const xml2js = require('xml2js')
4 |
5 | /**
6 | * Custom command to send correspondence to a reportee
7 | */
8 | Cypress.Commands.add('sendCorrespondence', (reportee) => {
9 | cy.readFile('src/fixtures/correspondence.xml').then((xml) => {
10 | xml2js.parseString(xml, (err, result) => {
11 | if (err) {
12 | throw err
13 | }
14 |
15 | var updatedBody = {
16 | 'ns:systemUserName': [Cypress.env('serviceOwner').systemUserName],
17 | 'ns:systemPassword': [Cypress.env('serviceOwner').systemPassword],
18 | 'ns:SystemUserCode': [Cypress.env('serviceOwner').systemUserName],
19 | 'ns:ExternalShipmentReference': [`EUF_${Math.floor(Math.random() * 100000)}`],
20 | }
21 | Object.assign(result['soapenv:Envelope']['soapenv:Body'][0]['ns:InsertCorrespondenceBasicV2'][0], updatedBody)
22 |
23 | var updatedCorrespondence = {
24 | 'ns1:ServiceCode': [Cypress.env('services').correspondence.split(':')[0]],
25 | 'ns1:ServiceEdition': [Cypress.env('services').correspondence.split(':')[1]],
26 | 'ns1:Reportee': [reportee],
27 | }
28 | Object.assign(
29 | result['soapenv:Envelope']['soapenv:Body'][0]['ns:InsertCorrespondenceBasicV2'][0]['ns:Correspondence'][0],
30 | updatedCorrespondence,
31 | )
32 |
33 | const builder = new xml2js.Builder()
34 | const builtCorrespondenceXml = builder.buildObject(result)
35 |
36 | return cy.request({
37 | method: 'POST',
38 | url: `${baseUrl}/ServiceEngineExternal/CorrespondenceAgencyExternalBasic.svc`,
39 | headers: {
40 | 'Content-Type': 'text/xml;charset=UTF-8',
41 | SOAPAction:
42 | 'http://www.altinn.no/services/ServiceEngine/Correspondence/2009/10/ICorrespondenceAgencyExternalBasic/InsertCorrespondenceBasicV2',
43 | },
44 | body: builtCorrespondenceXml,
45 | })
46 | })
47 | })
48 | })
49 |
--------------------------------------------------------------------------------
/performance-tests/generate-tokens/src/generate-tokens.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Check if required environment variables are set
4 | if [ -z "$TOKEN_GENERATOR_USERNAME" ] || [ -z "$TOKEN_GENERATOR_PASSWORD" ] || [ -z "$API_ENVIRONMENT" ]; then
5 | echo "Error: TOKEN_GENERATOR_USERNAME, TOKEN_GENERATOR_PASSWORD, and API_ENVIRONMENT must be set"
6 | exit 1
7 | fi
8 |
9 | # Function to display usage information
10 | usage() {
11 | echo "Usage: $0 "
12 | echo " : Path to the test data files"
13 | echo " : limit number of tokens to generate. 0 means generate all"
14 | exit 1
15 | }
16 |
17 | # Validate arguments
18 | if [ $# -ne 2 ]; then
19 | usage
20 | fi
21 |
22 | tokengenuser=${TOKEN_GENERATOR_USERNAME}
23 | tokengenpasswd=${TOKEN_GENERATOR_PASSWORD}
24 |
25 | env=""
26 | case $API_ENVIRONMENT in
27 | "at21")
28 | env="at21" ;;
29 | "tt02")
30 | env="tt02" ;;
31 | "yt01")
32 | env="yt01" ;;
33 | *)
34 | echo "Error: Unknown api environment $API_ENVIRONMENT"
35 | exit 1 ;;
36 | esac
37 |
38 | testdatafilepath=$1
39 | limit=$2
40 |
41 | enduser_datafile="$testdatafilepath/data-$API_ENVIRONMENT.csv"
42 | enduser_tokenfile=".data-with-tokens.csv"
43 |
44 | if [ ! -f "$enduser_datafile" ]; then
45 | echo "Error: Input file not found: $enduser_datafile"
46 | exit 1
47 | fi
48 | echo "userId,partyId,ssn,token" > $enduser_tokenfile
49 | generated=0
50 | while IFS=, read -r partyId userId ssn
51 | do
52 | if [ $limit -gt 0 ] && [ $generated -gt $limit ]; then
53 | break
54 | fi
55 | url="https://altinn-testtools-token-generator.azurewebsites.net/api/GetPersonalToken?env=$env&userId=$userId&partyId=$partyId&pid=$ssn&ttl=3600"
56 | token=$(curl -s -f $url -u "$tokengenuser:$tokengenpasswd" )
57 | if [ $? -ne 0 ]; then
58 | echo "Error: Failed to generate personal token for: $ssn, $scopes "
59 | continue
60 | fi
61 | echo "$userId,$partyId,$ssn,$token" >> $enduser_tokenfile
62 | status=$?
63 | if [ $status -ne 0 ]; then
64 | echo "Error: Failed to write personal token to file for: $ssn"
65 | else
66 | ((generated++))
67 | fi
68 |
69 |
70 | done < <(tail -n +2 $enduser_datafile)
--------------------------------------------------------------------------------
/src/cypress/src/integration/profile/delegation/single-rights.js:
--------------------------------------------------------------------------------
1 | ///
2 | import { partySelect } from '../../../pageobjects/partyselect'
3 | import { header } from '../../../pageobjects/header'
4 | import { otherWithRights } from '../../../pageobjects/profile/other-with-rights'
5 | import * as texts from '../../../fixtures/texts.json'
6 |
7 | describe('Delegation', function () {
8 | before(() => {
9 | cy.visit('/ui/authentication')
10 | })
11 |
12 | it('Delegate Single rigths', function () {
13 | cy.loginWithPin(Cypress.env('delegation').offeredBy, '12345')
14 | cy.get(partySelect.search).type(Cypress.env('delegation').offeredBy)
15 | cy.get(partySelect.reporteeSelf).find(partySelect.reporteeButton).should('be.visible').click()
16 | cy.get(header.nav).find(header.navList.profile).should('be.visible').click()
17 | cy.get(otherWithRights.header).should('be.visible').click()
18 | cy.get(otherWithRights.addNewRights).find(otherWithRights.button).click()
19 | cy.get(otherWithRights.addReportee.SSN.idName).should('be.visible').type(Cypress.env('delegation').coveredBy)
20 | cy.get(otherWithRights.addReportee.SSN.surName).type(Cypress.env('delegation').coveredByName).blur()
21 | cy.get(otherWithRights.addReportee.SSN.next).click()
22 | cy.get(otherWithRights.editRolesAndRightForm.servicesList).should('be.visible').type(texts.accSecurityLevel2Mag)
23 | cy.contains(otherWithRights.editRolesAndRightForm.searchResults, texts.accSecurityLevel2Mag)
24 | .should('be.visible')
25 | .click()
26 | cy.get(otherWithRights.delegateRightsForm.read).parent().click()
27 | cy.get(otherWithRights.delegateRightsForm.submit).click()
28 | cy.get(otherWithRights.submitemailform.emailId).should('be.visible').focus().type('test@mail.com').blur()
29 | cy.get(otherWithRights.submitemailform.submit).should('be.enabled').click()
30 | cy.get(otherWithRights.receipt).siblings(otherWithRights.done).should('be.visible').click()
31 | //Delete delegation made to user
32 | cy.get(otherWithRights.expanded).should('be.visible')
33 | cy.contains(otherWithRights.rightHolder, Cypress.env('delegation').coveredByName).click()
34 | cy.get(otherWithRights.editRolesAndRightForm.form)
35 | .find(otherWithRights.editRolesAndRightForm.removeRights)
36 | .should('be.visible')
37 | .click()
38 | cy.get(otherWithRights.editRolesAndRightForm.removeAll).click()
39 | cy.get(otherWithRights.editRolesAndRightForm.form).find(otherWithRights.done).should('be.visible').click()
40 | cy.get(otherWithRights.receipt).siblings(otherWithRights.done).should('be.visible').click()
41 | })
42 | })
43 |
--------------------------------------------------------------------------------
/performance-tests/t3search/src/t3search.js:
--------------------------------------------------------------------------------
1 | import http from 'k6/http';
2 | import papaparse from 'https://jslib.k6.io/papaparse/5.1.1/index.js';
3 | import { randomItem } from 'https://jslib.k6.io/k6-utils/1.2.0/index.js';
4 | import { SharedArray } from 'k6/data';
5 | import { textSummary } from 'https://jslib.k6.io/k6-summary/0.0.2/index.js';
6 | import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js";
7 |
8 | const idKeys = new SharedArray('idKeys', function () {
9 | return papaparse.parse(open('data-with-tokens.csv'), { header: true }).data;
10 | });
11 |
12 | const subscription_key = __ENV.subscription_key;
13 |
14 | export const options = {
15 | discardResponseBodies: true,
16 | summaryTrendStats: ['avg', 'min', 'med', 'max', 'p(95)', 'p(99)', 'p(99.5)', 'p(99.9)', 'count'],
17 | thresholds: {
18 | http_req_failed: ['rate<0.01'],
19 | },
20 |
21 | };
22 |
23 | export function setup() {
24 | var data = {
25 | searchUrlYt: `https://platform.yt01.altinn.cloud/storage/api/v1/sbl/instances/search`,
26 | idKeys: []
27 | };
28 |
29 | for (const idKey of idKeys) {
30 | data.idKeys.push({
31 | partyId: idKey.partyId,
32 | userId: idKey.userId,
33 | ssn: idKey.ssn,
34 | token: idKey.token
35 | });
36 | if ((options.vus === undefined || options.vus === 1) && (options.iterations === undefined || options.iterations === 1)) {
37 | break;
38 | }
39 | };
40 | return data;
41 | }
42 |
43 | export default function(data) {
44 | if ((options.vus === undefined || options.vus === 1) && (options.iterations === undefined || options.iterations === 1)) {
45 | search(data, data.idKeys[0]);
46 | }
47 | else {
48 | while (true) { search(data, randomItem(data.idKeys)); }
49 | }
50 | }
51 |
52 | export function search(data, id) {
53 | var query =
54 | {
55 | Language: 'nb',
56 | InstanceOwnerPartyIdList: [ id.partyId ],
57 | FromCreated: new Date(2018, 12, 12),
58 | ToCreated: new Date(2099, 1, 1),
59 | IncludeActive: false,
60 | IncludeArchived: true
61 | };
62 |
63 | var params = {
64 | headers: {
65 | Authorization: 'Bearer ' + id.token,
66 | 'Content-Type': 'application/json',
67 | 'Ocp-Apim-Subscription-Key': subscription_key
68 | },
69 | }
70 |
71 | var request_body = JSON.stringify(query)
72 | http.post(data.searchUrlYt, request_body, params);
73 | }
74 |
75 | export function handleSummary(data) {
76 | return {
77 | 'stdout': textSummary(data, { indent: ' ', enableColors: true }),
78 | 'stdout.txt': textSummary(data, { indent: ' ', enableColors: true }),
79 | "summary.html": htmlReport(data),
80 | };
81 | }
82 |
--------------------------------------------------------------------------------
/.github/workflows/taxreport-loadtest-schedule.yml:
--------------------------------------------------------------------------------
1 | name: taxreport loadtest scheduled
2 |
3 | on:
4 | schedule:
5 | - cron: "15 4 1 * *"
6 |
7 | jobs:
8 | run-taxreport-every-month:
9 | runs-on: ubuntu-latest
10 | #runs-on: ['self-hosted', 'macOS', 'X64']
11 | #runs-on: ['self-hosted', 'Windows', 'X64']
12 | steps:
13 | - name: Checkout
14 | uses: actions/checkout@v4
15 |
16 | - name: Generate tokens
17 | working-directory: ./performance-tests/tax-report/src
18 | run: ../../generate-tokens/src/generate-tokens.sh ../../generate-tokens/src 0
19 | env:
20 | API_ENVIRONMENT: ${{ secrets.YTENVIRONMENT }}
21 | TOKEN_GENERATOR_USERNAME: ${{ secrets.TOKENGENUSER }}
22 | TOKEN_GENERATOR_PASSWORD: ${{ secrets.TOKENGENPWD }}
23 |
24 | - name: Setup K6
25 | uses: grafana/setup-k6-action@v1
26 |
27 | - name: Run local k6 test
28 | uses: grafana/run-k6-action@v1
29 | with:
30 | path: performance-tests/tax-report/src/tax-report.js
31 | flags: --vus=40 --duration=10m
32 | env:
33 | K6_WEB_DASHBOARD: true
34 | K6_WEB_DASHBOARD_EXPORT: html-report.html
35 | serviceowner: ${{ secrets.OWNER }}
36 |
37 | - name: Upload summary html report
38 | uses: actions/upload-artifact@v4
39 | if: always()
40 | with:
41 | name: summary-html
42 | path: summary.html
43 | - name: Upload extended html report
44 | uses: actions/upload-artifact@v4
45 | if: always()
46 | with:
47 | name: extended-html
48 | path: html-report.html
49 |
50 | - name: Upload summary text report
51 | uses: actions/upload-artifact@v4
52 | if: always()
53 | with:
54 | name: summary-txt
55 | path: stdout.txt
56 |
57 | - name: Upload HTML report to Azure
58 | if: always()
59 | shell: bash
60 | run: |
61 | REPORT_DIR='taxreports_scheduled-${{ github.run_number }}-${{ github.run_attempt }}'
62 | azcopy cp --recursive "*.html" "https://altinnloadtests.blob.core.windows.net/\$web/$REPORT_DIR"
63 | echo "::Link to test results summary: title=HTML report url::https://altinnloadtests.z1.web.core.windows.net/$REPORT_DIR/summary.html"
64 | echo "::Link to test results extended: title=HTML report url::https://altinnloadtests.z1.web.core.windows.net/$REPORT_DIR/html-report.html"
65 | env:
66 | AZCOPY_AUTO_LOGIN_TYPE: SPN
67 | AZCOPY_SPA_APPLICATION_ID: ${{ secrets.AZCOPY_SPA_APPLICATION_ID }}
68 | AZCOPY_SPA_CLIENT_SECRET: ${{ secrets.AZCOPY_SPA_CLIENT_SECRET }}
69 | AZCOPY_TENANT_ID: ${{ secrets.AZCOPY_TENANT_ID }}
70 |
71 |
--------------------------------------------------------------------------------
/performance-tests/generate-tokens/src/generate-tokens.ps1:
--------------------------------------------------------------------------------
1 | param (
2 | [Parameter(Mandatory=$true)]
3 | [string]$TOKEN_GENERATOR_USERNAME,
4 | [Parameter(Mandatory=$true)]
5 | [string]$TOKEN_GENERATOR_PASSWORD,
6 | [Parameter(Mandatory=$true)]
7 | [string]$API_ENVIRONMENT,
8 | [Parameter(Mandatory=$true)]
9 | [string]$testdatafilepath,
10 | [Parameter(Mandatory=$true)]
11 | [int]$limit
12 | )
13 |
14 | # Check if required environment variables are set
15 | if (-not $TOKEN_GENERATOR_USERNAME -or -not $TOKEN_GENERATOR_PASSWORD -or -not $API_ENVIRONMENT) {
16 | Write-Host "Error: TOKEN_GENERATOR_USERNAME, TOKEN_GENERATOR_PASSWORD, and API_ENVIRONMENT must be set"
17 | exit 1
18 | }
19 |
20 | # Function to display usage information
21 | function Usage {
22 | Write-Host "Usage: $PSCommandPath -testdatafilepath -limit "
23 | Write-Host " : Path to the test data files"
24 | Write-Host " : limit number of tokens to generate. 0 means generate all"
25 | exit 1
26 | }
27 |
28 | # Validate arguments
29 | #if ($args.Length -ne 2) {
30 | # Usage
31 | #}
32 |
33 | $tokengenuser = $TOKEN_GENERATOR_USERNAME
34 | $tokengenpasswd = $TOKEN_GENERATOR_PASSWORD
35 |
36 | $env = ""
37 | switch ($API_ENVIRONMENT) {
38 | "at21" { $env = "at21" }
39 | "tt02" { $env = "tt02" }
40 | "yt01" { $env = "yt01" }
41 | default {
42 | Write-Host "Error: Unknown api environment $API_ENVIRONMENT"
43 | exit 1
44 | }
45 | }
46 |
47 | $enduser_datafile = "$testdatafilepath/data-$API_ENVIRONMENT.csv"
48 | $enduser_tokenfile = ".data-with-tokens.csv"
49 |
50 | if (-not (Test-Path $enduser_datafile)) {
51 | Write-Host "Error: Input file not found: $enduser_datafile"
52 | exit 1
53 | }
54 |
55 | "userId,partyId,ssn,token" | Out-File -FilePath $enduser_tokenfile -Encoding utf8
56 | $status = $?
57 | if ($status -ne 1) {
58 | Write-Host "Error: Failed to write header to file $enduser_tokenfile"
59 | exit 1
60 | }
61 |
62 | $generated = 0
63 | Import-Csv -Path $enduser_datafile | ForEach-Object {
64 | if ($limit -gt 0 -and $generated -ge $limit) {
65 | break
66 | }
67 | $partyId = $_.partyId
68 | $userId = $_.userId
69 | $ssn = $_.ssn
70 |
71 | $url = "https://altinn-testtools-token-generator.azurewebsites.net/api/GetPersonalToken?env=$env&userId=$userId&partyId=$partyId&pid=$ssn&ttl=3600"
72 | #$token = Invoke-RestMethod -Uri $url -Method Get -Credential (New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $tokengenuser, (ConvertTo-SecureString -String $tokengenpasswd -AsPlainText -Force))
73 | $token = Invoke-RestMethod -Uri $url -Headers @{Authorization=("Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("${tokengenuser}:${tokengenpasswd}")))} -Method Get
74 | if (-not $?) {
75 | Write-Host "Error: Failed to generate personal token for: $ssn, $scopes"
76 | continue
77 | }
78 | "$userId,$partyId,$ssn,$token" | Out-File -FilePath $enduser_tokenfile -Append -Encoding utf8
79 | $status = $?
80 | if ($status -ne 1) {
81 | Write-Host "Error: Failed to write personal token to file for: $ssn $status"
82 | } else {
83 | $generated++
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/.github/workflows/t3search-loadtest-ondemand.yml:
--------------------------------------------------------------------------------
1 | name: t3search loadtest ondemand
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | vus:
7 | description: 'Number of VUS'
8 | required: true
9 | default: 10
10 | type: number
11 | duration:
12 | description: 'Duration of test, ie 30s, 1m, 10m'
13 | required: true
14 | default: 1m
15 | type: string
16 | limit:
17 | description: 'Limit the number of tokens to generate, 0 or less means create for every partyId/userId'
18 | required: true
19 | default: 10
20 | type: number
21 | select-runner:
22 | description: 'Select runner to run the test'
23 | required: true
24 | type: choice
25 | default: "'ubuntu-latest'"
26 | options:
27 | - "'ubuntu-latest'"
28 | - "['self-hosted', 'macOS', 'X64']"
29 |
30 | jobs:
31 | run-t3search-ondemand:
32 | runs-on: ${{ fromJSON(inputs.select-runner) }}
33 | steps:
34 | - name: Checkout
35 | uses: actions/checkout@v4
36 |
37 | - name: Setup go
38 | uses: actions/setup-go@v5
39 | with:
40 | go-version: 'stable'
41 |
42 | - name: Install xk6
43 | run: go install go.k6.io/xk6/cmd/xk6@latest
44 |
45 | - name: Build xk6-counter binary
46 | working-directory: ./performance-tests/t3search/src
47 | run: xk6 build --with github.com/avitalique/xk6-file@latest
48 |
49 | - name: Run k6 to generate tokens
50 | working-directory: ./performance-tests/t3search/src
51 | run: ./k6 run ../../generate-tokens/src/generate-tokens.js
52 | env:
53 | env: ${{ secrets.YTENVIRONMENT }}
54 | tokengenuser: ${{ secrets.TOKENGENUSER }}
55 | tokengenuserpwd: ${{ secrets.TOKENGENPWD }}
56 | limit: ${{ inputs.limit }}
57 |
58 | - name: Setup K6
59 | uses: grafana/setup-k6-action@v1
60 |
61 | - name: Run local k6 test
62 | uses: grafana/run-k6-action@v1
63 | with:
64 | path: performance-tests/t3search/src/t3search.js
65 | flags: --vus=${{ inputs.vus }} --duration=${{ inputs.duration }}
66 | env:
67 | K6_WEB_DASHBOARD: true
68 | K6_WEB_DASHBOARD_EXPORT: html-report.html
69 | subscription_key: ${{ secrets.SUBSCRIPTION_KEY }}
70 |
71 | - name: Upload summary html report
72 | uses: actions/upload-artifact@v4
73 | if: always()
74 | with:
75 | name: summary-html
76 | path: summary.html
77 | - name: Upload extended html report
78 | uses: actions/upload-artifact@v4
79 | if: always()
80 | with:
81 | name: extended-html
82 | path: html-report.html
83 |
84 | - name: Upload summary text report
85 | uses: actions/upload-artifact@v4
86 | if: always()
87 | with:
88 | name: summary-txt
89 | path: stdout.txt
90 |
91 | - name: Upload HTML report to Azure
92 | if: always()
93 | shell: bash
94 | run: |
95 | REPORT_DIR='t3search_ondemand-${{ github.run_number }}-${{ github.run_attempt }}'
96 | azcopy cp --recursive "*.html" "https://altinnloadtests.blob.core.windows.net/\$web/$REPORT_DIR"
97 | echo "::Link to test results summary: title=HTML report url::https://altinnloadtests.z1.web.core.windows.net/$REPORT_DIR/summary.html"
98 | echo "::Link to test results extended: title=HTML report url::https://altinnloadtests.z1.web.core.windows.net/$REPORT_DIR/html-report.html"
99 | env:
100 | AZCOPY_AUTO_LOGIN_TYPE: SPN
101 | AZCOPY_SPA_APPLICATION_ID: ${{ secrets.AZCOPY_SPA_APPLICATION_ID }}
102 | AZCOPY_SPA_CLIENT_SECRET: ${{ secrets.AZCOPY_SPA_CLIENT_SECRET }}
103 | AZCOPY_TENANT_ID: ${{ secrets.AZCOPY_TENANT_ID }}
104 |
105 |
--------------------------------------------------------------------------------
/.github/workflows/taxreport-loadtest-ondemand.yml:
--------------------------------------------------------------------------------
1 | name: taxreport loadtest ondemand
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | vus:
7 | description: 'Number of VUS'
8 | required: true
9 | default: 10
10 | type: number
11 | duration:
12 | description: 'Duration of test, ie 30s, 1m, 10m'
13 | required: true
14 | default: 1m
15 | type: string
16 | limit:
17 | description: 'Limit the number of tokens to generate, 0 or less means create for every partyId/userId'
18 | required: true
19 | default: 10
20 | type: number
21 | select-runner:
22 | description: 'Select runner to run the test'
23 | required: true
24 | type: choice
25 | default: "'ubuntu-latest'"
26 | options:
27 | - "'ubuntu-latest'"
28 | - "'windows-latest'"
29 | - "'macOS-latest'"
30 |
31 | jobs:
32 | run-taxreport-ondemand:
33 | runs-on: ${{ fromJSON(inputs.select-runner) }}
34 | steps:
35 | - name: Checkout
36 | uses: actions/checkout@v4
37 |
38 | - name: Generate tokens (Linux/Mac)
39 | if: runner.os != 'Windows'
40 | working-directory: ./performance-tests/tax-report/src
41 | run: ../../generate-tokens/src/generate-tokens.sh ../../generate-tokens/src ${{ inputs.limit }}
42 | env:
43 | API_ENVIRONMENT: ${{ secrets.YTENVIRONMENT }}
44 | TOKEN_GENERATOR_USERNAME: ${{ secrets.TOKENGENUSER }}
45 | TOKEN_GENERATOR_PASSWORD: ${{ secrets.TOKENGENPWD }}
46 |
47 | - name: Generate tokens (Windows)
48 | if: runner.os == 'Windows'
49 | working-directory: ./performance-tests/tax-report/src
50 | run: pwsh ../../generate-tokens/src/generate-tokens.ps1 `
51 | -testdatafilepath ../../generate-tokens/src `
52 | -limit ${{ inputs.limit }} `
53 | -API_ENVIRONMENT ${{ secrets.YTENVIRONMENT }} `
54 | -TOKEN_GENERATOR_USERNAME ${{ secrets.TOKENGENUSER }} `
55 | -TOKEN_GENERATOR_PASSWORD ${{ secrets.TOKENGENPWD }}
56 | env:
57 | API_ENVIRONMENT: ${{ secrets.YTENVIRONMENT }}
58 | TOKEN_GENERATOR_USERNAME: ${{ secrets.TOKENGENUSER }}
59 | TOKEN_GENERATOR_PASSWORD: ${{ secrets.TOKENGENPWD }}
60 |
61 | - name: Setup K6
62 | uses: grafana/setup-k6-action@v1
63 |
64 | - name: Run local k6 test
65 | uses: grafana/run-k6-action@v1
66 | with:
67 | path: performance-tests/tax-report/src/tax-report.js
68 | flags: --vus=${{ inputs.vus }} --duration=${{ inputs.duration }}
69 | env:
70 | K6_WEB_DASHBOARD: true
71 | K6_WEB_DASHBOARD_EXPORT: html-report.html
72 | #K6_CLOUD_TOKEN: ${{ secrets.K6_CLOUD_TOKEN }}
73 | #K6_CLOUD_PROJECT_ID: ${{ secrets.K6_CLOUD_PROJECT_ID }}
74 | serviceowner: ${{ secrets.OWNER }}
75 |
76 | - name: Upload summary html report
77 | uses: actions/upload-artifact@v4
78 | if: always()
79 | with:
80 | name: summary-html
81 | path: summary.html
82 | - name: Upload extended html report
83 | uses: actions/upload-artifact@v4
84 | if: always()
85 | with:
86 | name: extended-html
87 | path: html-report.html
88 |
89 | - name: Upload summary text report
90 | uses: actions/upload-artifact@v4
91 | if: always()
92 | with:
93 | name: summary-txt
94 | path: stdout.txt
95 |
96 | - name: Upload HTML report to Azure
97 | if: always()
98 | shell: bash
99 | run: |
100 | REPORT_DIR='taxreports_ondemand-${{ github.run_number }}-${{ github.run_attempt }}'
101 | azcopy cp --recursive "*.html" "https://altinnloadtests.blob.core.windows.net/\$web/$REPORT_DIR"
102 | echo "::Link to test results summary: title=HTML report url::https://altinnloadtests.z1.web.core.windows.net/$REPORT_DIR/summary.html"
103 | echo "::Link to test results extended: title=HTML report url::https://altinnloadtests.z1.web.core.windows.net/$REPORT_DIR/html-report.html"
104 | env:
105 | AZCOPY_AUTO_LOGIN_TYPE: SPN
106 | AZCOPY_SPA_APPLICATION_ID: ${{ secrets.AZCOPY_SPA_APPLICATION_ID }}
107 | AZCOPY_SPA_CLIENT_SECRET: ${{ secrets.AZCOPY_SPA_CLIENT_SECRET }}
108 | AZCOPY_TENANT_ID: ${{ secrets.AZCOPY_TENANT_ID }}
109 |
110 |
--------------------------------------------------------------------------------
/performance-tests/tax-report/src/tax-report.js:
--------------------------------------------------------------------------------
1 | import http from 'k6/http';
2 | import { group } from 'k6';
3 | import papaparse from 'https://jslib.k6.io/papaparse/5.1.1/index.js';
4 | import { randomItem } from 'https://jslib.k6.io/k6-utils/1.2.0/index.js';
5 | import { SharedArray } from 'k6/data';
6 | import { textSummary } from 'https://jslib.k6.io/k6-summary/0.0.2/index.js';
7 | import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js";
8 |
9 | const taxXml = open('tax.xml', 'b');
10 | const idKeys = new SharedArray('idKeys', function () {
11 | return papaparse.parse(open('.data-with-tokens.csv'), { header: true }).data;
12 | });
13 |
14 | export const options = {
15 | summaryTrendStats: ['avg', 'min', 'med', 'max', 'p(95)', 'p(99)', 'p(99.5)', 'p(99.9)', 'count'],
16 | thresholds: {
17 | http_req_failed: ['rate<0.01'],
18 | 'http_req_duration{name:create_instance}': [],
19 | 'http_req_duration{name:upload_data}': [],
20 | 'http_req_duration{name:trigger_callback_and_confirm}': [],
21 | 'http_req_duration{name:get_receipt_id}': [],
22 | 'http_req_duration{name:get_receipt}': [],
23 | 'http_reqs{name:create_instance}': [],
24 | 'http_reqs{name:upload_data}': [],
25 | 'http_reqs{name:trigger_callback_and_confirm}': [],
26 | 'http_reqs{name:get_receipt_id}': [],
27 | 'http_reqs{name:get_receipt}': [],
28 | },
29 |
30 | };
31 |
32 | export function setup() {
33 | var data = {
34 | searchUrlYt: `https://${__ENV.serviceowner}.apps.yt01.altinn.cloud/`,
35 | basePath: (__ENV.serviceowner == 'ttd' ? "ttd/skattemelding-kopi" : "skd/formueinntekt-skattemelding-v2"),
36 | idKeys: []
37 | };
38 |
39 | for (const idKey of idKeys) {
40 | data.idKeys.push({
41 | partyId: idKey.partyId,
42 | userId: idKey.userId,
43 | ssn: idKey.ssn,
44 | token: idKey.token
45 | });
46 | if ((options.vus === undefined || options.vus === 1) && (options.iterations === undefined || options.iterations === 1)) {
47 | break;
48 | }
49 | };
50 | return data;
51 | }
52 |
53 | export default function(data) {
54 | if ((options.vus === undefined || options.vus === 1) && (options.iterations === undefined || options.iterations === 1)) {
55 | submit_tax(data, data.idKeys[0]);
56 | }
57 | else {
58 | while (true) { submit_tax(data, randomItem(data.idKeys)); }
59 | }
60 | }
61 |
62 | export function submit_tax(data, id) {
63 | group("Submit tax report", function () {
64 |
65 | // 1. Create instance
66 | var instance_resp = create_instance(data, id);
67 | if (instance_resp.status != 201) return;
68 |
69 | // 2. Uplod tax report
70 | var instance = instance_resp.json();
71 | var upload_resp = upload_data(data, instance, id);
72 | if (upload_resp.status != 201) return;
73 |
74 | // 3 & 4. Trigger callback and confirm
75 | var cb_c_resp = trigger_callback_and_confirm(data, instance, id);
76 | if (cb_c_resp.status != 200) return;
77 | cb_c_resp = trigger_callback_and_confirm(data, instance, id);
78 | if (cb_c_resp.status != 200) return;
79 |
80 | // 5. Get receipt id
81 | var receipt_id_resp = get_receipt_id(data, instance, id);
82 | if (receipt_id_resp.status != 200) return;
83 |
84 | // 6. Get receipt
85 | var receipt_element = receipt_id_resp.json().data.find(x => x.dataType === "Skattemeldingsapp_v2")
86 | get_receipt(data, instance, id, receipt_element.id)
87 |
88 | });
89 |
90 | }
91 |
92 | export function create_instance(data, id) {
93 | var instance =
94 | {
95 | InstanceOwner: {
96 | PartyId: id.partyId
97 | },
98 | AppId: data.basePath,
99 | DataValues: { inntektsaar: "2021" }
100 | };
101 |
102 | var endPoint = data.searchUrlYt + data.basePath + "/instances";
103 | var params = {
104 | headers: {
105 | Authorization: 'Bearer ' + id.token,
106 | 'Content-Type': 'application/json'
107 | },
108 | tags: { name: 'create_instance' }
109 | };
110 |
111 | var request_body = JSON.stringify(instance)
112 | return http.post(endPoint, request_body, params);
113 | }
114 |
115 | export function upload_data(data, instance, id) {
116 | var endPoint = data.searchUrlYt + data.basePath + "/instances/" + instance.id + "/data?dataType=skattemeldingOgNaeringsspesifikasjon";
117 | var params = {
118 | headers: {
119 | Authorization: 'Bearer ' + id.token,
120 | 'Content-Type': 'text/xml',
121 | 'Content-Disposition': 'attachment; filename=\"skattemelding.xml\"'
122 | },
123 | tags: { name: 'upload_data' }
124 | };
125 | return http.post(endPoint, taxXml, params);
126 | }
127 |
128 | export function trigger_callback_and_confirm(data, instance, id) {
129 | var endPoint = data.searchUrlYt + data.basePath + "/instances/" + instance.id + "/process/next"
130 | var params = {
131 | headers: {
132 | Authorization: 'Bearer ' + id.token
133 | },
134 | tags: { name: 'trigger_callback_and_confirm' }
135 | }
136 | return http.put(endPoint, null, params);
137 | }
138 |
139 | export function get_receipt_id(data, instance, id) {
140 | var endPoint = data.searchUrlYt + data.basePath + "/instances/" + instance.id
141 | return http_get_with_token(endPoint, id.token, "get_receipt_id");
142 | }
143 |
144 | export function get_receipt(data, instance, id, receipt_id) {
145 | var endPoint = data.searchUrlYt + data.basePath + "/instances/" + instance.id + "/data/" + receipt_id;
146 | return http_get_with_token(endPoint, id.token, "get_receipt");
147 | }
148 |
149 | export function http_get_with_token(endPoint, token, tag) {
150 | var params = {
151 | headers: {
152 | Authorization: 'Bearer ' + token
153 | },
154 | tags: { name: tag }
155 | }
156 | return http.get(endPoint, params);
157 | }
158 |
159 | export function handleSummary(data) {
160 | return {
161 | 'stdout': textSummary(data, { indent: ' ', enableColors: true }),
162 | 'stdout.txt': textSummary(data, { indent: ' ', enableColors: true }),
163 | "summary.html": htmlReport(data),
164 | };
165 | }
166 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Aa][Rr][Mm]/
27 | [Aa][Rr][Mm]64/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Ll]og/
32 | [Ll]ogs/
33 |
34 | # Visual Studio 2015/2017 cache/options directory
35 | .vs/
36 | # Uncomment if you have tasks that create the project's static files in wwwroot
37 | #wwwroot/
38 |
39 | # Visual Studio 2017 auto generated files
40 | Generated\ Files/
41 |
42 | # MSTest test Results
43 | [Tt]est[Rr]esult*/
44 | [Bb]uild[Ll]og.*
45 |
46 | # NUnit
47 | *.VisualState.xml
48 | TestResult.xml
49 | nunit-*.xml
50 |
51 | # Build Results of an ATL Project
52 | [Dd]ebugPS/
53 | [Rr]eleasePS/
54 | dlldata.c
55 |
56 | # Benchmark Results
57 | BenchmarkDotNet.Artifacts/
58 |
59 | # .NET Core
60 | project.lock.json
61 | project.fragment.lock.json
62 | artifacts/
63 |
64 | # StyleCop
65 | StyleCopReport.xml
66 |
67 | # Files built by Visual Studio
68 | *_i.c
69 | *_p.c
70 | *_h.h
71 | *.ilk
72 | *.meta
73 | *.obj
74 | *.iobj
75 | *.pch
76 | *.pdb
77 | *.ipdb
78 | *.pgc
79 | *.pgd
80 | *.rsp
81 | *.sbr
82 | *.tlb
83 | *.tli
84 | *.tlh
85 | *.tmp
86 | *.tmp_proj
87 | *_wpftmp.csproj
88 | *.log
89 | *.vspscc
90 | *.vssscc
91 | .builds
92 | *.pidb
93 | *.svclog
94 | *.scc
95 |
96 | # Chutzpah Test files
97 | _Chutzpah*
98 |
99 | # Visual C++ cache files
100 | ipch/
101 | *.aps
102 | *.ncb
103 | *.opendb
104 | *.opensdf
105 | *.sdf
106 | *.cachefile
107 | *.VC.db
108 | *.VC.VC.opendb
109 |
110 | # Visual Studio profiler
111 | *.psess
112 | *.vsp
113 | *.vspx
114 | *.sap
115 |
116 | # Visual Studio Trace Files
117 | *.e2e
118 |
119 | # TFS 2012 Local Workspace
120 | $tf/
121 |
122 | # Guidance Automation Toolkit
123 | *.gpState
124 |
125 | # ReSharper is a .NET coding add-in
126 | _ReSharper*/
127 | *.[Rr]e[Ss]harper
128 | *.DotSettings.user
129 |
130 | # TeamCity is a build add-in
131 | _TeamCity*
132 |
133 | # DotCover is a Code Coverage Tool
134 | *.dotCover
135 |
136 | # AxoCover is a Code Coverage Tool
137 | .axoCover/*
138 | !.axoCover/settings.json
139 |
140 | # Visual Studio code coverage results
141 | *.coverage
142 | *.coveragexml
143 |
144 | # NCrunch
145 | _NCrunch_*
146 | .*crunch*.local.xml
147 | nCrunchTemp_*
148 |
149 | # MightyMoose
150 | *.mm.*
151 | AutoTest.Net/
152 |
153 | # Web workbench (sass)
154 | .sass-cache/
155 |
156 | # Installshield output folder
157 | [Ee]xpress/
158 |
159 | # DocProject is a documentation generator add-in
160 | DocProject/buildhelp/
161 | DocProject/Help/*.HxT
162 | DocProject/Help/*.HxC
163 | DocProject/Help/*.hhc
164 | DocProject/Help/*.hhk
165 | DocProject/Help/*.hhp
166 | DocProject/Help/Html2
167 | DocProject/Help/html
168 |
169 | # Click-Once directory
170 | publish/
171 |
172 | # Publish Web Output
173 | *.[Pp]ublish.xml
174 | *.azurePubxml
175 | # Note: Comment the next line if you want to checkin your web deploy settings,
176 | # but database connection strings (with potential passwords) will be unencrypted
177 | *.pubxml
178 | *.publishproj
179 |
180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
181 | # checkin your Azure Web App publish settings, but sensitive information contained
182 | # in these scripts will be unencrypted
183 | PublishScripts/
184 |
185 | # NuGet Packages
186 | *.nupkg
187 | # NuGet Symbol Packages
188 | *.snupkg
189 | # The packages folder can be ignored because of Package Restore
190 | **/[Pp]ackages/*
191 | # except build/, which is used as an MSBuild target.
192 | !**/[Pp]ackages/build/
193 | # Uncomment if necessary however generally it will be regenerated when needed
194 | #!**/[Pp]ackages/repositories.config
195 | # NuGet v3's project.json files produces more ignorable files
196 | *.nuget.props
197 | *.nuget.targets
198 |
199 | # Microsoft Azure Build Output
200 | csx/
201 | *.build.csdef
202 |
203 | # Microsoft Azure Emulator
204 | ecf/
205 | rcf/
206 |
207 | # Windows Store app package directories and files
208 | AppPackages/
209 | BundleArtifacts/
210 | Package.StoreAssociation.xml
211 | _pkginfo.txt
212 | *.appx
213 | *.appxbundle
214 | *.appxupload
215 |
216 | # Visual Studio cache files
217 | # files ending in .cache can be ignored
218 | *.[Cc]ache
219 | # but keep track of directories ending in .cache
220 | !?*.[Cc]ache/
221 |
222 | # Others
223 | ClientBin/
224 | ~$*
225 | *~
226 | *.dbmdl
227 | *.dbproj.schemaview
228 | *.jfm
229 | *.pfx
230 | *.publishsettings
231 | orleans.codegen.cs
232 |
233 | # Including strong name files can present a security risk
234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
235 | #*.snk
236 |
237 | # Since there are multiple workflows, uncomment next line to ignore bower_components
238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
239 | #bower_components/
240 |
241 | # RIA/Silverlight projects
242 | Generated_Code/
243 |
244 | # Backup & report files from converting an old project file
245 | # to a newer Visual Studio version. Backup files are not needed,
246 | # because we have git ;-)
247 | _UpgradeReport_Files/
248 | Backup*/
249 | UpgradeLog*.XML
250 | UpgradeLog*.htm
251 | ServiceFabricBackup/
252 | *.rptproj.bak
253 |
254 | # SQL Server files
255 | *.mdf
256 | *.ldf
257 | *.ndf
258 |
259 | # Business Intelligence projects
260 | *.rdl.data
261 | *.bim.layout
262 | *.bim_*.settings
263 | *.rptproj.rsuser
264 | *- [Bb]ackup.rdl
265 | *- [Bb]ackup ([0-9]).rdl
266 | *- [Bb]ackup ([0-9][0-9]).rdl
267 |
268 | # Microsoft Fakes
269 | FakesAssemblies/
270 |
271 | # GhostDoc plugin setting file
272 | *.GhostDoc.xml
273 |
274 | # Node.js Tools for Visual Studio
275 | .ntvs_analysis.dat
276 | node_modules/
277 |
278 | # Visual Studio 6 build log
279 | *.plg
280 |
281 | # Visual Studio 6 workspace options file
282 | *.opt
283 |
284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
285 | *.vbw
286 |
287 | # Visual Studio LightSwitch build output
288 | **/*.HTMLClient/GeneratedArtifacts
289 | **/*.DesktopClient/GeneratedArtifacts
290 | **/*.DesktopClient/ModelManifest.xml
291 | **/*.Server/GeneratedArtifacts
292 | **/*.Server/ModelManifest.xml
293 | _Pvt_Extensions
294 |
295 | # Paket dependency manager
296 | .paket/paket.exe
297 | paket-files/
298 |
299 | # FAKE - F# Make
300 | .fake/
301 |
302 | # CodeRush personal settings
303 | .cr/personal
304 |
305 | # Python Tools for Visual Studio (PTVS)
306 | __pycache__/
307 | *.pyc
308 |
309 | # Cake - Uncomment if you are using it
310 | # tools/**
311 | # !tools/packages.config
312 |
313 | # Tabs Studio
314 | *.tss
315 |
316 | # Telerik's JustMock configuration file
317 | *.jmconfig
318 |
319 | # BizTalk build output
320 | *.btp.cs
321 | *.btm.cs
322 | *.odx.cs
323 | *.xsd.cs
324 |
325 | # OpenCover UI analysis results
326 | OpenCover/
327 |
328 | # Azure Stream Analytics local run output
329 | ASALocalRun/
330 |
331 | # MSBuild Binary and Structured Log
332 | *.binlog
333 |
334 | # NVidia Nsight GPU debugger configuration file
335 | *.nvuser
336 |
337 | # MFractors (Xamarin productivity tool) working folder
338 | .mfractor/
339 |
340 | # Local History for Visual Studio
341 | .localhistory/
342 |
343 | # BeatPulse healthcheck temp database
344 | healthchecksdb
345 |
346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
347 | MigrationBackup/
348 |
349 | # Ionide (cross platform F# VS Code tools) working folder
350 | .ionide/
351 |
352 | # .secrets
353 | .secrets
354 |
355 | # files with tokens
356 | **/*tokens*.csv
--------------------------------------------------------------------------------
/performance-tests/tax-report/src/tax.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 | skattemeldingUpersonlig
7 | utf-8
8 | PHNrYXR0ZW1lbGRpbmcgeG1sbnM9InVybjpubzpza2F0dGVldGF0ZW46ZmFzdHNldHRpbmc6Zm9ybXVlaW5udGVrdDpza2F0dGVtZWxkaW5nOnVwZXJzb25saWdlOmVrc3Rlcm46djEiPgogICAgPHBhcnRzbnVtbWVyPntwYXJ0c251bW1lcn08L3BhcnRzbnVtbWVyPgogICAgPGlubnRla3RzYWFyPjIwMjE8L2lubnRla3RzYWFyPgogICAgPGlubnRla3RPZ1VuZGVyc2t1ZGQ+CiAgICAgICAgPGlubnRla3Q+CiAgICAgICAgICAgIDxuYWVyaW5nc2lubnRla3Q+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD44MDk1NjI8L2JlbG9lcFNvbUhlbHRhbGw+CiAgICAgICAgICAgIDwvbmFlcmluZ3Npbm50ZWt0PgogICAgICAgIDwvaW5udGVrdD4KICAgICAgICA8aWQ+MTwvaWQ+CiAgICAgICAgPHNhbWxldElubnRla3Q+CiAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD44MDk1NjI8L2JlbG9lcFNvbUhlbHRhbGw+CiAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgIDwvc2FtbGV0SW5udGVrdD4KICAgIDwvaW5udGVrdE9nVW5kZXJza3VkZD4KCiAgICA8c3Blc2lmaWthc2pvbkF2Rm9yaG9sZFJlbGV2YW50ZUZvckJlc2thdG5pbmc+CiAgICAgICAgPGFrc2plSUFrc2pvbmFlcnJlZ2lzdGVyZXQ+CiAgICAgICAgICAgIDxpZD4xPC9pZD4KICAgICAgICAgICAgPHNlbHNrYXBldHNOYXZuPgogICAgICAgICAgICAgICAgPG9yZ2FuaXNhc2pvbnNuYXZuPklUIEEvUzwvb3JnYW5pc2Fzam9uc25hdm4+CiAgICAgICAgICAgIDwvc2Vsc2thcGV0c05hdm4+CiAgICAgICAgICAgIDxzZWxza2FwZXRzT3JnYW5pc2Fzam9uc251bW1lcj4KICAgICAgICAgICAgICAgIDxvcmdhbmlzYXNqb25zbnVtbWVyPjk5OTk5OTk5OTwvb3JnYW5pc2Fzam9uc251bW1lcj4KICAgICAgICAgICAgPC9zZWxza2FwZXRzT3JnYW5pc2Fzam9uc251bW1lcj4KICAgICAgICAgICAgPGVyT21mYXR0ZXRBdkZyaXRha3NtZXRvZGVuPgogICAgICAgICAgICAgICAgPGJvb2xzaz5mYWxzZTwvYm9vbHNrPgogICAgICAgICAgICA8L2VyT21mYXR0ZXRBdkZyaXRha3NtZXRvZGVuPgogICAgICAgICAgICA8YWtzamVrbGFzc2U+CiAgICAgICAgICAgICAgICA8dGVrc3Q+b3JkaW5hZXI8L3Rla3N0PgogICAgICAgICAgICA8L2Frc2pla2xhc3NlPgogICAgICAgICAgICA8dXRieXR0ZT4KICAgICAgICAgICAgICAgIDxiZWxvZXBTb21IZWx0YWxsPjUwMDA8L2JlbG9lcFNvbUhlbHRhbGw+CiAgICAgICAgICAgIDwvdXRieXR0ZT4KICAgICAgICAgICAgPGdldmluc3RWZWRSZWFsaXNhc2pvbkF2QWtzamU+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD4xMDAwMDwvYmVsb2VwU29tSGVsdGFsbD4KICAgICAgICAgICAgPC9nZXZpbnN0VmVkUmVhbGlzYXNqb25BdkFrc2plPgogICAgICAgIDwvYWtzamVJQWtzam9uYWVycmVnaXN0ZXJldD4KICAgICAgICA8b2JsaWdhc2pvbk9nU2VydGlmaWthdD4KICAgICAgICAgICAgPGlkPjE8L2lkPgogICAgICAgICAgICA8cmVudGVwYXBpcmV0c05hdm4+CiAgICAgICAgICAgICAgICA8bmF2bj5PYmxpZ2Fzam9uZXI8L25hdm4+CiAgICAgICAgICAgIDwvcmVudGVwYXBpcmV0c05hdm4+CiAgICAgICAgICAgIDxrb250b2ZvZXJlcnNOYXZuPgogICAgICAgICAgICAgICAgPG9yZ2FuaXNhc2pvbnNuYXZuPlJvc2EgUm9zZXI8L29yZ2FuaXNhc2pvbnNuYXZuPgogICAgICAgICAgICA8L2tvbnRvZm9lcmVyc05hdm4+CiAgICAgICAgICAgIDxrb250b251bW1lcj4KICAgICAgICAgICAgICAgIDx0ZWtzdD4xMjM0NTY3ODkwMDwvdGVrc3Q+CiAgICAgICAgICAgIDwva29udG9udW1tZXI+CiAgICAgICAgICAgIDxmaW5hbnNwcm9kdWt0aWRlbnRpZmlrYXRvcj4KICAgICAgICAgICAgICAgIDx0ZWtzdD4xPC90ZWtzdD4KICAgICAgICAgICAgPC9maW5hbnNwcm9kdWt0aWRlbnRpZmlrYXRvcj4KICAgICAgICAgICAgPGZpbmFuc3Byb2R1a3RpZGVudGlmaWthdG9ydHlwZT4KICAgICAgICAgICAgICAgIDx0ZWtzdD5vYmxpZ2Fzam9uZXI8L3Rla3N0PgogICAgICAgICAgICA8L2ZpbmFuc3Byb2R1a3RpZGVudGlmaWthdG9ydHlwZT4KICAgICAgICAgICAgPGxhbmRrb2RlPgogICAgICAgICAgICAgICAgPGxhbmRrb2RlPlVBPC9sYW5ka29kZT4KICAgICAgICAgICAgPC9sYW5ka29kZT4KICAgICAgICAgICAgPGFudGFsbE9ibGlnYXNqb25PZ1NlcnRpZmlrYXQ+CiAgICAgICAgICAgICAgICA8YW50YWxsPjEwMDwvYW50YWxsPgogICAgICAgICAgICA8L2FudGFsbE9ibGlnYXNqb25PZ1NlcnRpZmlrYXQ+CiAgICAgICAgICAgIDxyZW50ZWlubnRla3RBdk9ibGlnYXNqb25PZ1NlcnRpZmlrYXQ+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD4yMDAwPC9iZWxvZXBTb21IZWx0YWxsPgogICAgICAgICAgICA8L3JlbnRlaW5udGVrdEF2T2JsaWdhc2pvbk9nU2VydGlmaWthdD4KICAgICAgICAgICAgPHRhcFZlZFJlYWxpc2Fzam9uQXZPYmxpZ2Fzam9uT2dTZXJ0aWZpa2F0PgogICAgICAgICAgICAgICAgPGJlbG9lcFNvbUhlbHRhbGw+MTAwMDAwPC9iZWxvZXBTb21IZWx0YWxsPgogICAgICAgICAgICA8L3RhcFZlZFJlYWxpc2Fzam9uQXZPYmxpZ2Fzam9uT2dTZXJ0aWZpa2F0PgogICAgICAgIDwvb2JsaWdhc2pvbk9nU2VydGlmaWthdD4KICAgICAgICA8b2JsaWdhc2pvbk9nU2VydGlmaWthdD4KICAgICAgICAgICAgPGlkPmE8L2lkPgogICAgICAgICAgICA8cmVudGVwYXBpcmV0c05hdm4+CiAgICAgICAgICAgICAgICA8bmF2bj5PYmxpZ2Fzam9uZXI8L25hdm4+CiAgICAgICAgICAgIDwvcmVudGVwYXBpcmV0c05hdm4+CiAgICAgICAgICAgIDxrb250b2ZvZXJlcnNOYXZuPgogICAgICAgICAgICAgICAgPG9yZ2FuaXNhc2pvbnNuYXZuPlJvc2EgUm9zZXI8L29yZ2FuaXNhc2pvbnNuYXZuPgogICAgICAgICAgICA8L2tvbnRvZm9lcmVyc05hdm4+CiAgICAgICAgICAgIDxrb250b251bW1lcj4KICAgICAgICAgICAgICAgIDx0ZWtzdD4xMjM0NTY3ODkwMDwvdGVrc3Q+CiAgICAgICAgICAgIDwva29udG9udW1tZXI+CiAgICAgICAgICAgIDxmaW5hbnNwcm9kdWt0aWRlbnRpZmlrYXRvcj4KICAgICAgICAgICAgICAgIDx0ZWtzdD5hPC90ZWtzdD4KICAgICAgICAgICAgPC9maW5hbnNwcm9kdWt0aWRlbnRpZmlrYXRvcj4KICAgICAgICAgICAgPGZpbmFuc3Byb2R1a3RpZGVudGlmaWthdG9ydHlwZT4KICAgICAgICAgICAgICAgIDx0ZWtzdD5vYmxpZ2Fzam9uZXI8L3Rla3N0PgogICAgICAgICAgICA8L2ZpbmFuc3Byb2R1a3RpZGVudGlmaWthdG9ydHlwZT4KICAgICAgICAgICAgPGxhbmRrb2RlPgogICAgICAgICAgICAgICAgPGxhbmRrb2RlPlVBPC9sYW5ka29kZT4KICAgICAgICAgICAgPC9sYW5ka29kZT4KICAgICAgICAgICAgPGFudGFsbE9ibGlnYXNqb25PZ1NlcnRpZmlrYXQ+CiAgICAgICAgICAgICAgICA8YW50YWxsPjEwMDwvYW50YWxsPgogICAgICAgICAgICA8L2FudGFsbE9ibGlnYXNqb25PZ1NlcnRpZmlrYXQ+CiAgICAgICAgICAgIDxyZW50ZWlubnRla3RBdk9ibGlnYXNqb25PZ1NlcnRpZmlrYXQ+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD4yMDAwPC9iZWxvZXBTb21IZWx0YWxsPgogICAgICAgICAgICA8L3JlbnRlaW5udGVrdEF2T2JsaWdhc2pvbk9nU2VydGlmaWthdD4KICAgICAgICAgICAgPHRhcFZlZFJlYWxpc2Fzam9uQXZPYmxpZ2Fzam9uT2dTZXJ0aWZpa2F0PgogICAgICAgICAgICAgICAgPGJlbG9lcFNvbUhlbHRhbGw+MTAwMDAwPC9iZWxvZXBTb21IZWx0YWxsPgogICAgICAgICAgICA8L3RhcFZlZFJlYWxpc2Fzam9uQXZPYmxpZ2Fzam9uT2dTZXJ0aWZpa2F0PgogICAgICAgIDwvb2JsaWdhc2pvbk9nU2VydGlmaWthdD4KICAgIDwvc3Blc2lmaWthc2pvbkF2Rm9yaG9sZFJlbGV2YW50ZUZvckJlc2thdG5pbmc+CiAgICA8Zm9ybXVlT2dHamVsZD4KICAgICAgICAKICAgICAgICA8Zm9ybXVlc29iamVrdD4KICAgICAgICAgICAgPGlkPjE8L2lkPgogICAgICAgICAgICA8Zm9ybXVlc29iamVrdHR5cGU+CiAgICAgICAgICAgICAgICA8Zm9ybXVlc29iamVrdHR5cGU+Zm9ybXVlc29iamVrdE9tZmF0dGV0QXZWZXJkc2V0dGluZ3NyYWJhdHQ8L2Zvcm11ZXNvYmpla3R0eXBlPgogICAgICAgICAgICA8L2Zvcm11ZXNvYmpla3R0eXBlPgogICAgICAgICAgICA8dmVyZGlGb2VyRXZlbnR1ZWxsVmVyZHNldHRpbmdzcmFiYXR0PgogICAgICAgICAgICAgICAgPGJlbG9lcFNvbUhlbHRhbGw+MTQwMDA8L2JlbG9lcFNvbUhlbHRhbGw+CiAgICAgICAgICAgIDwvdmVyZGlGb2VyRXZlbnR1ZWxsVmVyZHNldHRpbmdzcmFiYXR0PgoKICAgICAgICA8L2Zvcm11ZXNvYmpla3Q+CiAgICAgICAgPGZvcm11ZXNvYmpla3Q+CiAgICAgICAgICAgIDxpZD4yPC9pZD4KICAgICAgICAgICAgPGZvcm11ZXNvYmpla3R0eXBlPgogICAgICAgICAgICAgICAgPGZvcm11ZXNvYmpla3R0eXBlPmZvcm11ZXNvYmpla3RJa2tlT21mYXR0ZXRBdlZlcmRzZXR0aW5nc3JhYmF0dDwvZm9ybXVlc29iamVrdHR5cGU+CiAgICAgICAgICAgIDwvZm9ybXVlc29iamVrdHR5cGU+CiAgICAgICAgICAgIDx2ZXJkaUZvZXJFdmVudHVlbGxWZXJkc2V0dGluZ3NyYWJhdHQ+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD45NzE1MDwvYmVsb2VwU29tSGVsdGFsbD4KICAgICAgICAgICAgPC92ZXJkaUZvZXJFdmVudHVlbGxWZXJkc2V0dGluZ3NyYWJhdHQ+CiAgICAgICAgPC9mb3JtdWVzb2JqZWt0PgogICAgICAgIDxzYW1sZXRWZXJkaUZvZXJFdmVudHVlbGxWZXJkc2V0dGluZ3NyYWJhdHQ+CiAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICA8YmVsb2VwU29tSGVsdGFsbD4xMTExNTA8L2JlbG9lcFNvbUhlbHRhbGw+CiAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgIDwvc2FtbGV0VmVyZGlGb2VyRXZlbnR1ZWxsVmVyZHNldHRpbmdzcmFiYXR0PgogICAgICAgIDxzYW1sZXRWZXJkaUJha0Frc2plbmVJU2Vsc2thcGV0PgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcFNvbUhlbHRhbGw+MTExMTUwPC9iZWxvZXBTb21IZWx0YWxsPgogICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICA8L3NhbWxldFZlcmRpQmFrQWtzamVuZUlTZWxza2FwZXQ+CgogICAgPC9mb3JtdWVPZ0dqZWxkPgogICAgPG9wcGx5c25pbmdlck9tU2thdHRlc3ViamVrdD4KICAgICAgICA8aWQ+MTwvaWQ+CiAgICAgICAgPGVyQm9lcnNub3RlcnQ+ZmFsc2U8L2VyQm9lcnNub3RlcnQ+CiAgICA8L29wcGx5c25pbmdlck9tU2thdHRlc3ViamVrdD4KPC9za2F0dGVtZWxkaW5nPgo=
9 |
10 |
11 | naeringsspesifikasjon
12 | utf-8
13 | PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KPG5hZXJpbmdzc3Blc2lmaWthc2pvbiB4bWxucz0idXJuOm5vOnNrYXR0ZWV0YXRlbjpmYXN0c2V0dGluZzpmb3JtdWVpbm50ZWt0Om5hZXJpbmdzc3Blc2lmaWthc2pvbjpla3N0ZXJuOnYyIj4KICAgIDxwYXJ0c3JlZmVyYW5zZT57cGFydHNudW1tZXJ9PC9wYXJ0c3JlZmVyYW5zZT4KICAgIDxpbm50ZWt0c2Fhcj4yMDIxPC9pbm50ZWt0c2Fhcj4KICAgIDxyZXN1bHRhdHJlZ25za2FwPgogICAgICAgIDxkcmlmdHNpbm50ZWt0PgogICAgICAgICAgICA8c3VtRHJpZnRzaW5udGVrdD4KICAgICAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4xMDAwMDAwPC9iZWxvZXA+CiAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgPC9zdW1EcmlmdHNpbm50ZWt0PgogICAgICAgICAgICA8c2FsZ3Npbm50ZWt0PgogICAgICAgICAgICAgICAgPGlkPjE8L2lkPgogICAgICAgICAgICAgICAgPGlubnRla3Q+CiAgICAgICAgICAgICAgICAgICAgPGlkPjMwMDA8L2lkPgogICAgICAgICAgICAgICAgICAgIDx0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8cmVzdWx0YXRPZ0JhbGFuc2VyZWduc2thcHN0eXBlPjMwMDA8L3Jlc3VsdGF0T2dCYWxhbnNlcmVnbnNrYXBzdHlwZT4KICAgICAgICAgICAgICAgICAgICA8L3R5cGU+CiAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+MTAwMDAwMDwvYmVsb2VwPgogICAgICAgICAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgICAgIDwvaW5udGVrdD4KICAgICAgICAgICAgPC9zYWxnc2lubnRla3Q+CiAgICAgICAgPC9kcmlmdHNpbm50ZWt0PgogICAgICAgIDxkcmlmdHNrb3N0bmFkPgogICAgICAgICAgICA8c3VtRHJpZnRza29zdG5hZD4KICAgICAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD41MDAwMDwvYmVsb2VwPgogICAgICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgICAgIDwvc3VtRHJpZnRza29zdG5hZD4KICAgICAgICAgICAgPHZhcmVrb3N0bmFkPgogICAgICAgICAgICAgICAgPGlkPjE8L2lkPgogICAgICAgICAgICAgICAgPGtvc3RuYWQ+CiAgICAgICAgICAgICAgICAgICAgPGlkPjQwMDU8L2lkPgogICAgICAgICAgICAgICAgICAgIDx0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8cmVzdWx0YXRPZ0JhbGFuc2VyZWduc2thcHN0eXBlPjQwMDU8L3Jlc3VsdGF0T2dCYWxhbnNlcmVnbnNrYXBzdHlwZT4KICAgICAgICAgICAgICAgICAgICA8L3R5cGU+CiAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+NTAwMDA8L2JlbG9lcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgICAgICAgICA8L2tvc3RuYWQ+CiAgICAgICAgICAgIDwvdmFyZWtvc3RuYWQ+CiAgICAgICAgPC9kcmlmdHNrb3N0bmFkPgogICAgICAgIDxzdW1GaW5hbnNpbm50ZWt0PgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4xOTAwMDwvYmVsb2VwPgogICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICA8L3N1bUZpbmFuc2lubnRla3Q+CiAgICAgICAgPHN1bUZpbmFuc2tvc3RuYWQ+CiAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICA8YmVsb2VwPjIwMDAwMDwvYmVsb2VwPgogICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICA8L3N1bUZpbmFuc2tvc3RuYWQ+CiAgICAgICAgPGFhcnNyZXN1bHRhdD4KICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgIDxiZWxvZXA+NzY5MDAwPC9iZWxvZXA+CiAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgIDwvYWFyc3Jlc3VsdGF0PgogICAgICAgIDxmaW5hbnNpbm50ZWt0PgogICAgICAgICAgICA8aWQ+MTwvaWQ+CiAgICAgICAgICAgIDxpbm50ZWt0PgogICAgICAgICAgICAgICAgPGlkPjgwNzk8L2lkPgogICAgICAgICAgICAgICAgPHR5cGU+CiAgICAgICAgICAgICAgICAgICAgPHJlc3VsdGF0T2dCYWxhbnNlcmVnbnNrYXBzdHlwZT44MDc5PC9yZXN1bHRhdE9nQmFsYW5zZXJlZ25za2Fwc3R5cGU+CiAgICAgICAgICAgICAgICA8L3R5cGU+CiAgICAgICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+MTAwMDA8L2JlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgICAgICA8L2lubnRla3Q+CiAgICAgICAgICAgIDxpbm50ZWt0PgogICAgICAgICAgICAgICAgPGlkPjgwOTA8L2lkPgogICAgICAgICAgICAgICAgPHR5cGU+CiAgICAgICAgICAgICAgICAgICAgPHJlc3VsdGF0T2dCYWxhbnNlcmVnbnNrYXBzdHlwZT44MDkwPC9yZXN1bHRhdE9nQmFsYW5zZXJlZ25za2Fwc3R5cGU+CiAgICAgICAgICAgICAgICA8L3R5cGU+CiAgICAgICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+OTAwMDwvYmVsb2VwPgogICAgICAgICAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgICAgIDwvaW5udGVrdD4KICAgICAgICA8L2ZpbmFuc2lubnRla3Q+CiAgICAgICAgPGZpbmFuc2tvc3RuYWQ+CiAgICAgICAgICAgIDxpZD4xPC9pZD4KICAgICAgICAgICAgPGtvc3RuYWQ+CiAgICAgICAgICAgICAgICA8aWQ+ODE3OTwvaWQ+CiAgICAgICAgICAgICAgICA8dHlwZT4KICAgICAgICAgICAgICAgICAgICA8cmVzdWx0YXRPZ0JhbGFuc2VyZWduc2thcHN0eXBlPjgxNzk8L3Jlc3VsdGF0T2dCYWxhbnNlcmVnbnNrYXBzdHlwZT4KICAgICAgICAgICAgICAgIDwvdHlwZT4KICAgICAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJlbG9lcD4yMDAwMDA8L2JlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgICAgICA8L2tvc3RuYWQ+CiAgICAgICAgPC9maW5hbnNrb3N0bmFkPgogICAgPC9yZXN1bHRhdHJlZ25za2FwPgogICAgPGJlcmVnbmV0TmFlcmluZ3Npbm50ZWt0PgogICAgICAgIDxmb3JkZWx0QmVyZWduZXROYWVyaW5nc2lubnRla3Q+CiAgICAgICAgICAgIDxpZD4xPC9pZD4KICAgICAgICAgICAgPGtvbW11bmVudW1tZXI+CiAgICAgICAgICAgICAgICA8a29tbXVuZW51bW1lcj4wMzAxPC9rb21tdW5lbnVtbWVyPgogICAgICAgICAgICA8L2tvbW11bmVudW1tZXI+CiAgICAgICAgICAgIDxpZGVudGlmaWthdG9yRm9yRm9yZGVsdEJlcmVnbmV0TmFlcmluZ3Npbm50ZWt0PgogICAgICAgICAgICAgICAgPHRla3N0PjE8L3Rla3N0PgogICAgICAgICAgICA8L2lkZW50aWZpa2F0b3JGb3JGb3JkZWx0QmVyZWduZXROYWVyaW5nc2lubnRla3Q+CiAgICAgICAgICAgIDxmb3JkZWx0U2thdHRlbWVzc2lnUmVzdWx0YXQ+CiAgICAgICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+ODA5NTYyPC9iZWxvZXA+CiAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgPC9mb3JkZWx0U2thdHRlbWVzc2lnUmVzdWx0YXQ+CiAgICAgICAgICAgIDxmb3JkZWx0U2thdHRlbWVzc2lnUmVzdWx0YXRFdHRlcktvcnJla3Nqb24+CiAgICAgICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+ODA5NTYyPC9iZWxvZXA+CiAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgPC9mb3JkZWx0U2thdHRlbWVzc2lnUmVzdWx0YXRFdHRlcktvcnJla3Nqb24+CiAgICAgICAgPC9mb3JkZWx0QmVyZWduZXROYWVyaW5nc2lubnRla3Q+CiAgICAgICAgPHN1bVRpbGxlZ2dJTmFlcmluZ3Npbm50ZWt0PgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD40MDY2MjwvYmVsb2VwPgogICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICA8L3N1bVRpbGxlZ2dJTmFlcmluZ3Npbm50ZWt0PgogICAgICAgIDxzdW1GcmFkcmFnSU5hZXJpbmdzaW5udGVrdD4KICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgIDxiZWxvZXA+MTAwPC9iZWxvZXA+CiAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgIDwvc3VtRnJhZHJhZ0lOYWVyaW5nc2lubnRla3Q+CiAgICAgICAgPHNrYXR0ZW1lc3NpZ1Jlc3VsdGF0PgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD44MDk1NjI8L2JlbG9lcD4KICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgPC9za2F0dGVtZXNzaWdSZXN1bHRhdD4KICAgIDwvYmVyZWduZXROYWVyaW5nc2lubnRla3Q+CiAgICA8Zm9yc2tqZWxsTWVsbG9tUmVnbnNrYXBzbWVzc2lnT2dTa2F0dGVtZXNzaWdWZXJkaT4KICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsPgogICAgICAgICAgICA8aWQ+cmVnbnNrYXBzbWVzc2lnVGFwVmVkUmVhbGlzYXNqb25BdkZpbmFuc2llbGxlSW5zdHJ1bWVudGVyPC9pZD4KICAgICAgICAgICAgPHBlcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICAgICAgPHBlcm1hbmVudEZvcnNramVsbHN0eXBlPnJlZ25za2Fwc21lc3NpZ1RhcFZlZFJlYWxpc2Fzam9uQXZGaW5hbnNpZWxsZUluc3RydW1lbnRlcjwvcGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+CiAgICAgICAgICAgIDwvcGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+CiAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgICAgIDxiZWxvZXA+MTIwMDA8L2JlbG9lcD4KICAgICAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICA8L3Blcm1hbmVudEZvcnNramVsbD4KICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsPgogICAgICAgICAgICA8aWQ+c2thdHRlcGxpa3RpZ0RlbEF2VXRieXR0ZXJPZ1V0ZGVsaW5nZXI8L2lkPgogICAgICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+CiAgICAgICAgICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+c2thdHRlcGxpa3RpZ0RlbEF2VXRieXR0ZXJPZ1V0ZGVsaW5nZXI8L3Blcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICA8L3Blcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8YmVsb2VwPjQwMDA8L2JlbG9lcD4KICAgICAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICA8L3Blcm1hbmVudEZvcnNramVsbD4KICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsPgogICAgICAgICAgICA8aWQ+YW5uZXRJbm50ZWt0c2ZyYWRyYWc8L2lkPgogICAgICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+CiAgICAgICAgICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+YW5uZXRJbm50ZWt0c2ZyYWRyYWc8L3Blcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICA8L3Blcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8YmVsb2VwPjEwMDwvYmVsb2VwPgogICAgICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgICAgICA8YmVza3JpdmVsc2U+CiAgICAgICAgICAgICAgICA8dGVrc3Q+cmVudGVpbm50ZWt0PC90ZWtzdD4KICAgICAgICAgICAgPC9iZXNrcml2ZWxzZT4KICAgICAgICA8L3Blcm1hbmVudEZvcnNramVsbD4KICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsPgogICAgICAgICAgICA8aWQ+cG9zaXRpdlNrYXR0ZWtvc3RuYWQ8L2lkPgogICAgICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+CiAgICAgICAgICAgICAgICA8cGVybWFuZW50Rm9yc2tqZWxsc3R5cGU+cG9zaXRpdlNrYXR0ZWtvc3RuYWQ8L3Blcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICA8L3Blcm1hbmVudEZvcnNramVsbHN0eXBlPgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8YmVsb2VwPjI0NjYyPC9iZWxvZXA+CiAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgPC9wZXJtYW5lbnRGb3Jza2plbGw+CiAgICA8L2ZvcnNramVsbE1lbGxvbVJlZ25za2Fwc21lc3NpZ09nU2thdHRlbWVzc2lnVmVyZGk+CiAgICA8dmlya3NvbWhldD4KICAgICAgICA8cmVnbnNrYXBzcGxpa3RzdHlwZT4KICAgICAgICAgICAgPHJlZ25za2Fwc3BsaWt0c3R5cGU+MjwvcmVnbnNrYXBzcGxpa3RzdHlwZT4KICAgICAgICA8L3JlZ25za2Fwc3BsaWt0c3R5cGU+CiAgICAgICAgPHJlZ25za2Fwc3BlcmlvZGU+CiAgICAgICAgICAgIDxzdGFydD4yMDIxLTAxLTAxVDAwOjAwOjAwLjAwMFo8L3N0YXJ0PgogICAgICAgICAgICA8c2x1dHQ+MjAyMS0xMi0zMVQyMzo1OTo1OS4wMDBaPC9zbHV0dD4KICAgICAgICA8L3JlZ25za2Fwc3BlcmlvZGU+CiAgICAgICAgPHZpcmtzb21oZXRzc3R5cGU+CiAgICAgICAgICAgIDx2aXJrc29taGV0c3R5cGU+YWtzamVzZWxza2FwPC92aXJrc29taGV0c3R5cGU+CiAgICAgICAgPC92aXJrc29taGV0c3N0eXBlPgogICAgICAgIDxyZWdlbHR5cGVGb3JBYXJzcmVnbnNrYXA+CiAgICAgICAgICAgIDxyZWdlbHR5cGVGb3JBYXJzcmVnbnNrYXA+aWZyczwvcmVnZWx0eXBlRm9yQWFyc3JlZ25za2FwPgogICAgICAgIDwvcmVnZWx0eXBlRm9yQWFyc3JlZ25za2FwPgogICAgPC92aXJrc29taGV0PgogICAgPGVnZW5rYXBpdGFsYXZzdGVtbWluZz4KICAgICAgICA8aWQ+SGVpPC9pZD4KICAgICAgICA8aW5uZ2FhZW5kZUVnZW5rYXBpdGFsPgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4xMzI1NjI8L2JlbG9lcD4KICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgPC9pbm5nYWFlbmRlRWdlbmthcGl0YWw+CiAgICAgICAgPHN1bVRpbGxlZ2dJRWdlbmthcGl0YWw+CiAgICAgICAgICAgIDxiZWxvZXA+CiAgICAgICAgICAgICAgICA8YmVsb2VwPjg3NDM4PC9iZWxvZXA+CiAgICAgICAgICAgIDwvYmVsb2VwPgogICAgICAgIDwvc3VtVGlsbGVnZ0lFZ2Vua2FwaXRhbD4KICAgICAgICA8ZWdlbmthcGl0YWxlbmRyaW5nPgogICAgICAgICAgICA8aWQ+MTwvaWQ+CiAgICAgICAgICAgIDxlZ2Vua2FwaXRhbGVuZHJpbmdzdHlwZT4KICAgICAgICAgICAgICAgIDxlZ2Vua2FwaXRhbGVuZHJpbmdzdHlwZT5hYXJldHNPdmVyc2t1ZGQ8L2VnZW5rYXBpdGFsZW5kcmluZ3N0eXBlPgogICAgICAgICAgICA8L2VnZW5rYXBpdGFsZW5kcmluZ3N0eXBlPgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4KICAgICAgICAgICAgICAgICAgICA8YmVsb2VwPjg3NDM4PC9iZWxvZXA+CiAgICAgICAgICAgICAgICA8L2JlbG9lcD4KICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgPC9lZ2Vua2FwaXRhbGVuZHJpbmc+CiAgICAgICAgPHV0Z2FhZW5kZUVnZW5rYXBpdGFsPgogICAgICAgICAgICA8YmVsb2VwPgogICAgICAgICAgICAgICAgPGJlbG9lcD4yMjAwMDA8L2JlbG9lcD4KICAgICAgICAgICAgPC9iZWxvZXA+CiAgICAgICAgPC91dGdhYWVuZGVFZ2Vua2FwaXRhbD4KICAgIDwvZWdlbmthcGl0YWxhdnN0ZW1taW5nPgo8L25hZXJpbmdzc3Blc2lmaWthc2pvbj4K
14 |
15 |
16 |
17 | skattemeldingUpersonlig
18 | SKI:755:6196979
19 |
20 | 2021
21 |
22 | komplett
23 | testinnsending
24 |
25 |
--------------------------------------------------------------------------------
/performance-tests/generate-tokens/src/data.csv:
--------------------------------------------------------------------------------
1 | partyid,userid,ssn
2 | 61703103,4503893,10865299538
3 | 61703235,4504106,19886497337
4 | 61703525,4504920,29878198024
5 | 61703633,4504322,28826498708
6 | 61703709,4504261,10867196183
7 | 61703727,4506138,08837297959
8 | 61703795,4505970,02818596203
9 | 61703958,4505022,19866498574
10 | 61704185,4504047,26916397126
11 | 61704520,4503944,19815997363
12 | 61704663,4503951,11897397503
13 | 61704749,4504050,27845299582
14 | 61704785,4505520,04825997135
15 | 61704907,4505813,07907197896
16 | 61705242,4503772,28827097898
17 | 61705279,4504511,31905999977
18 | 61705441,4506288,02834699772
19 | 61705776,4506355,07876497993
20 | 61705939,4504380,22929874319
21 | 61706522,4506302,27917298128
22 | 61706583,4506293,01846698058
23 | 61706626,4505962,03866096766
24 | 61706742,4505448,03885996786
25 | 61707060,4504686,25926298626
26 | 61707071,4502099,12826398025
27 | 61707205,4504960,14858095353
28 | 61707504,4504814,24913649709
29 | 61707585,4503724,22852749311
30 | 61707611,4505756,07926198712
31 | 61708113,4506234,03876498730
32 | 61708121,4505966,08856299083
33 | 61708254,4505530,01884099192
34 | 61708365,4502320,18826599975
35 | 61708442,4505280,23894899573
36 | 61708566,4505694,05906599602
37 | 61708617,4505582,02826198799
38 | 61708870,4505468,06906497962
39 | 61709129,4503854,12856395543
40 | 61709245,4505675,06857897119
41 | 61709504,4505853,06876599986
42 | 61709520,4505013,24878297780
43 | 61709801,4504075,14926297903
44 | 61709907,4505004,22909398049
45 | 61710078,4505608,07905398150
46 | 61710480,4505104,11824596141
47 | 61710489,4505686,05887496988
48 | 61710534,4504178,28896796951
49 | 61710730,4503671,19825998147
50 | 61710933,4505474,01917196806
51 | 61711041,4504595,10918397944
52 | 61711283,4506048,03844797469
53 | 61711381,4503823,25862849763
54 | 61711630,4504912,23835399729
55 | 61711678,4505692,09886998144
56 | 61711690,4504780,26897799382
57 | 61711863,4502468,27866897323
58 | 61712123,4504030,11854397992
59 | 61712217,4505597,04848197152
60 | 61712256,4504788,21858699425
61 | 61712442,4505039,13899798567
62 | 61712704,4503717,30905596574
63 | 61712878,4504826,18826698779
64 | 61712942,4503487,07876099769
65 | 61713068,4504255,25887899889
66 | 61713272,4505936,01905999954
67 | 61713640,4504578,24826296980
68 | 61713734,4505503,06886696920
69 | 61713735,4504051,26877199125
70 | 61714005,4505290,15917599510
71 | 61714223,4505052,16896795523
72 | 61714337,4504909,21849198170
73 | 61714663,4506276,06816496525
74 | 61714988,4503713,10914895834
75 | 61715061,4506030,01908299740
76 | 61715113,4504789,10906097945
77 | 61715257,4505350,15926499723
78 | 61715258,4503812,16866195971
79 | 61715453,4506113,03818498747
80 | 61715596,4504992,16815199158
81 | 61715828,4503843,10855799966
82 | 61715854,4504183,22857999650
83 | 61715875,4504056,19846299184
84 | 61715927,4504683,20914897301
85 | 61715983,4506069,09912547792
86 | 61716165,4505195,30875497339
87 | 61716192,4505531,07869699173
88 | 61716553,4504575,14846496336
89 | 61716839,4504744,13849098580
90 | 61716983,4505734,03826498276
91 | 61717081,4504531,27828699984
92 | 61717128,4505276,13895797760
93 | 61717953,4504337,29927395574
94 | 61718251,4502153,16836699150
95 | 61718258,4505202,27915995565
96 | 61718338,4505335,16812549557
97 | 61718749,4505910,07926497124
98 | 61718758,4504911,21904199173
99 | 61718916,4504529,11834598738
100 | 61719157,4505816,02878797402
101 | 61719339,4506016,06855597371
102 | 61719654,4505001,14869997340
103 | 61719889,4505034,17914897556
104 | 61720094,4506251,09836597599
105 | 61720572,4502962,05906297568
106 | 61720594,4504092,10837099310
107 | 61720820,4506071,09837398530
108 | 61721282,4504213,27894297765
109 | 61721303,4505516,08866997331
110 | 61721571,4503373,16897296008
111 | 61721989,4504703,10814997575
112 | 61722114,4505815,03906698357
113 | 61722167,4504821,27844399141
114 | 61722867,4505055,17907897117
115 | 61723085,4506289,05845198324
116 | 61723130,4504791,12928095353
117 | 61723298,4505630,02846397755
118 | 61723441,4506052,07826096319
119 | 61723652,4505605,02846097964
120 | 61723684,4505944,04885899922
121 | 61723824,4506096,02876998796
122 | 61723846,4504198,27885299119
123 | 61724035,4504111,23836298942
124 | 61724141,4504534,10876297383
125 | 61724157,4503753,16836799929
126 | 61724272,4504428,11847499151
127 | 61724343,4505429,06906496230
128 | 61724366,4504126,29812547524
129 | 61724664,4505488,08846299921
130 | 61724722,4504899,14824999946
131 | 61724732,4504376,30855599976
132 | 61724765,4501845,30896597953
133 | 61725098,4505219,27886796175
134 | 61725318,4504708,18866796749
135 | 61725471,4505992,04857997919
136 | 61725615,4505673,03897398647
137 | 61725854,4504692,17847198915
138 | 61725888,4505723,01877498790
139 | 61725895,4503789,10897097511
140 | 61726039,4505499,01815996344
141 | 61726108,4505084,23823247575
142 | 61726246,4504323,24815599396
143 | 61726436,4504505,10926798745
144 | 61726576,4503702,19827199535
145 | 61726632,4504688,24885497485
146 | 61726682,4505458,07907399324
147 | 61726771,4504447,12858197579
148 | 61727234,4502017,04915199904
149 | 61727325,4504287,26827999112
150 | 61727697,4505075,28825398092
151 | 61727721,4506380,08877796796
152 | 61727740,4505363,11867598520
153 | 61727885,4504378,11827299997
154 | 61727980,4505664,02897196746
155 | 61728101,4501833,25823449162
156 | 61728119,4503802,20819399663
157 | 61728292,4502986,08816997543
158 | 61728494,4505670,09866696362
159 | 61728513,4505376,14879499357
160 | 61728787,4505687,08917096768
161 | 61728888,4505629,05846098927
162 | 61729281,4505107,30907499142
163 | 61729367,4505553,04825199360
164 | 61729604,4506258,04825999227
165 | 61729607,4503871,25915196686
166 | 61729793,4506047,07906899390
167 | 61729936,4505650,04818199355
168 | 61729958,4503103,26826399936
169 | 61730091,4505596,03845799155
170 | 61730236,4503993,14916099488
171 | 61730237,4504751,21919098128
172 | 61730514,4505523,04907095938
173 | 61730538,4505359,12907396787
174 | 61731073,4502845,01837299744
175 | 61731080,4503965,19848596712
176 | 61731123,4506110,08917297321
177 | 61731151,4505684,06868298187
178 | 61731251,4504892,22896899167
179 | 61731430,4505635,03906595531
180 | 61731580,4503869,17926996487
181 | 61732042,4506165,01836598551
182 | 61732146,4504840,29905497136
183 | 61732219,4506067,04925996713
184 | 61732992,4504732,18824399553
185 | 61733093,4504384,31858796450
186 | 61733099,4506307,03927299185
187 | 61733134,4506350,01819296592
188 | 61733160,4504508,30906099140
189 | 61733248,4505066,27812549729
190 | 61733399,4504169,19816795772
191 | 61733572,4504052,18877397072
192 | 61733618,4505097,25889498563
193 | 61733621,4506137,07917198327
194 | 61733814,4504672,22886495343
195 | 61733825,4505485,02836499797
196 | 61733965,4504786,10887095944
197 | 61734187,4504455,28908497696
198 | 61734640,4506327,02847096260
199 | 61734742,4503830,23817096786
200 | 61734784,4506282,06927399960
201 | 61734799,4504097,19867397798
202 | 61734886,4504080,28928397302
203 | 61735015,4505035,29817196711
204 | 61735089,4505032,22886595364
205 | 61735111,4505685,05925797180
206 | 61735498,4505372,12906599323
207 | 61735853,4505790,08897497779
208 | 61736042,4503757,22876598926
209 | 61736065,4503950,14877999042
210 | 61736231,4505662,06846297942
211 | 61736254,4505106,20842648972
212 | 61736432,4506029,08928394132
213 | 61736575,4505751,07926699339
214 | 61736786,4505200,24848398434
215 | 61736954,4506181,01856697335
216 | 61737141,4504694,27846497108
217 | 61737874,4505803,04876697322
218 | 61737890,4505057,10886995712
219 | 61737921,4505169,10864997959
220 | 61737966,4503907,29846999505
221 | 61737996,4505760,04831448755
222 | 61738215,4506159,03845997186
223 | 61738281,4505481,03917096944
224 | 61738352,4505902,06905798942
225 | 61738380,4504035,16877799674
226 | 61738607,4504584,23926599909
227 | 61738878,4503848,14836096887
228 | 61739040,4505486,09815499309
229 | 61739096,4506332,02926799102
230 | 61739334,4505029,18844697909
231 | 61739459,4505963,02928498746
232 | 61739536,4504449,16855198162
233 | 61739556,4505577,04886399370
234 | 61739686,4505197,13917199579
235 | 61739844,4505730,06915698164
236 | 61740072,4506005,09907598974
237 | 61740228,4505267,11869799221
238 | 61740556,4505965,09927397371
239 | 61740654,4505176,19926498390
240 | 61749242,4504618,12874697107
241 | 61749290,4504373,18885998581
242 | 61749472,4504923,13908099758
243 | 61749716,4504674,27908899208
244 | 61749813,4505318,10926099340
245 | 61749948,4505714,06827199395
246 | 61750468,4503660,13846296950
247 | 61750876,4505829,05848098711
248 | 61750893,4505240,31857498561
249 | 61750913,4505958,05825498135
250 | 61751025,4505620,03828298029
251 | 61751107,4504925,22865899169
252 | 61751123,4505504,09818699910
253 | 61751297,4506079,08877299172
254 | 61751621,4505216,16838698747
255 | 61751880,4505590,05818798344
256 | 61751939,4506081,04917199537
257 | 61752017,4501688,19817099362
258 | 61752550,4506131,01837998553
259 | 61752632,4505861,06907398259
260 | 61752724,4504766,15908398219
261 | 61752761,4506124,07826998711
262 | 61752977,4504884,13924796957
263 | 61753096,4504485,49887301521
264 | 61753138,4505978,05905097174
265 | 61758622,4504947,17883448901
266 | 61758805,4504910,24913448711
267 | 61758972,4505672,01865598250
268 | 61759171,4505925,05906398968
269 | 61759218,4505546,06906193564
270 | 61759332,4504437,19823148715
271 | 61759442,4504104,10846999936
272 | 61759538,4504457,18899798976
273 | 61760057,4504438,20887899399
274 | 61760077,4506367,06865598155
275 | 61760107,4504651,12925899761
276 | 61760260,4505569,03836695584
277 | 61760294,4506218,06816297115
278 | 61760331,4503303,29875597734
279 | 61760521,4504516,26915299783
280 | 61760791,4504181,26919598955
281 | 61760951,4504389,24824499760
282 | 61760997,4505133,12876398409
283 | 61761003,4504935,21868898310
284 | 61761261,4503804,24814996537
285 | 61761735,4505698,02927997919
286 | 61761764,4506190,01896398136
287 | 61761879,4506347,03827097356
288 | 61762130,4504734,14825896997
289 | 61762252,4503922,19887599559
290 | 61762367,4503444,23868599472
291 | 61762403,4505514,09853449994
292 | 61764236,4505098,17925597511
293 | 61764870,4504512,30914698649
294 | 61765470,4503940,22898597826
295 | 61765643,4506240,08886897562
296 | 61765918,4506328,03835298387
297 | 61765919,4504013,19857096366
298 | 61766066,4504901,10855399569
299 | 61766077,4506334,03907095818
300 | 61766118,4505763,04885799588
301 | 61766144,4504587,30903748709
302 | 61766173,4506036,07867097524
303 | 61766599,4505655,09863249780
304 | 61766798,4506235,03856197319
305 | 61766849,4505396,30927099906
306 | 61767077,4504442,21828699293
307 | 61767258,4505348,23839998953
308 | 61767437,4506205,05817198068
309 | 61767750,4505025,17886798962
310 | 61767783,4504157,26869498431
311 | 61767821,4505399,02898198009
312 | 61767856,4505434,05876096139
313 | 61767992,4505021,23856398358
314 | 61768370,4503968,16846498315
315 | 61769063,4504878,12858097981
316 | 61769255,4505632,02844996163
317 | 61769798,4505898,07898097956
318 | 61769827,4506146,06877898901
319 | 61769887,4506035,02896698470
320 | 61770262,4505640,02837697584
321 | 61770328,4505402,03916495772
322 | 61770381,4505585,03905997164
323 | 61770501,4506284,04867599350
324 | 61770815,4504143,12846899993
325 | 61770884,4506161,01906597736
326 | 61771147,4504147,12825697347
327 | 61771288,4504867,18876398695
328 | 61771445,4505809,02905499141
329 | 61771665,4504518,17835499987
330 | 61771810,4503914,12887499746
331 | 61771811,4504614,10828698732
332 | 61771964,4505417,01836798593
333 | 61771999,4503927,24814999765
334 | 61772286,4505157,19897294942
335 | 61772475,4503875,12919499972
336 | 61772479,4506160,04826898874
337 | 61772534,4506002,02885497546
338 | 61772709,4505185,15829198409
339 | 61772889,4505338,14857199953
340 | 61773112,4504098,19864997719
341 | 61773236,4505860,03905398104
342 | 61773363,4505628,06857796576
343 | 61773863,4503803,28897797935
344 | 61773935,4505744,08816999554
345 | 61774010,4504179,10904497377
346 | 61774051,4504434,25925999175
347 | 61774193,4505512,06927099665
348 | 61774276,4505433,05846295307
349 | 61774312,4506076,09836996930
350 | 61774421,4506252,08926798333
351 | 61774698,4505907,09893449520
352 | 61774712,4502367,05914998583
353 | 61774722,4504635,22846498269
354 | 61774752,4505593,07867297132
355 | 61774764,4505041,28848799086
356 | 61774919,4506175,05888099818
357 | 61775170,4502501,04820196797
358 | 61775525,4505856,03895098719
359 | 61775762,4505393,20826298945
360 | 61775965,4505120,20816298521
361 | 61776111,4505340,20846598120
362 | 61776118,4505571,08838498974
363 | 61776173,4505105,22895798324
364 | 61776243,4505494,03836796984
365 | 61776387,4505401,01885599539
366 | 61776824,4503960,15885898634
367 | 61776960,4505619,05896695926
368 | 61777192,4504487,19898598511
369 | 61777261,4504479,20896999452
370 | 61777371,4504239,24876399322
371 | 61777451,4504533,20907898947
372 | 61777723,4505886,02825997752
373 | 61777916,4506038,03877098280
374 | 61778100,4505688,08906398118
375 | 61778376,4504657,29876999747
376 | 61778476,4505491,02924695970
377 | 61778544,4503730,16877294955
378 | 61778608,4505602,06926598404
379 | 61778677,4505595,06847499832
380 | 61778767,4504116,29918499030
381 | 61778900,4505110,10815197556
382 | 61778901,4504095,17827998397
383 | 61778958,4505696,07876496938
384 | 61779017,4505231,21894499521
385 | 61779288,4504749,14865399252
386 | 61779336,4505938,03816898179
387 | 61779400,4505500,08864599746
388 | 61779750,4505865,02845994504
389 | 61779789,4505869,06856996903
390 | 61779912,4505841,05875398174
391 | 61780256,4505428,07835996772
392 | 61780273,4504251,30904399309
393 | 61780480,4504300,21834299701
394 | 61780525,4504577,15836298516
395 | 61780736,4505818,02837898571
396 | 61780997,4505379,15825596973
397 | 61781242,4503882,23826098759
398 | 61781288,4505823,08837497567
399 | 61781363,4501796,15897398181
400 | 61781523,4504453,23915398146
401 | 61781579,4504797,28893049993
402 | 61781683,4503990,45857601134
403 | 61782023,4503860,10927798188
404 | 61782223,4504671,31887399142
405 | 61782233,4503667,10879799797
406 | 61782383,4505323,24869098732
407 | 61782592,4503890,12909095725
408 | 61782740,4504158,23848596779
409 | 61782907,4506019,09895999323
410 | 61783066,4504422,11847897548
411 | 61783427,4505889,06918796906
412 | 61783470,4505725,07846197103
413 | 61783568,4504308,28814996907
414 | 61783606,4505303,23926797506
415 | 61783629,4504462,24847199349
416 | 61783993,4504184,26866097509
417 | 61784205,4504481,20923849956
418 | 61784301,4505213,13926899729
419 | 61784333,4503906,18848098538
420 | 61784565,4504352,13885998334
421 | 61784623,4504953,31818899710
422 | 61784752,4504631,18917598149
423 | 61784805,4505781,07836497842
424 | 61784824,4504755,15857095607
425 | 61784945,4503928,19835999516
426 | 61785113,4504607,15863849710
427 | 61785196,4505591,07895198514
428 | 61785452,4503776,17846396594
429 | 61785509,4503837,20895794172
430 | 61785534,4506123,07907995903
431 | 61785829,4503975,10817099764
432 | 61785935,4505689,06876599390
433 | 61786078,4505882,02827196382
434 | 61786092,4505964,04926897948
435 | 61786255,4505100,10920299585
436 | 61786258,4504272,17919299673
437 | 61786363,4504390,19876096318
438 | 61786686,4505497,06815999639
439 | 61786705,4505172,13855697941
440 | 61786718,4506176,05847299780
441 | 61786808,4506169,01865597971
442 | 61786896,4506263,06856097143
443 | 61786935,4505633,06917498340
444 | 61786958,4505109,20824997374
445 | 61786981,4506166,03916397681
446 | 61787083,4505840,06905797563
447 | 61787519,4506084,02886599334
448 | 61787562,4505707,01857797546
449 | 61787823,4504942,22848099701
450 | 61787887,4504199,12926299199
451 | 61788475,4504336,15818799028
452 | 61789226,4505890,06885795968
453 | 61789414,4504002,27887299175
454 | 61789522,4504802,23906596377
455 | 61789569,4502037,05906497761
456 | 61789650,4506296,01826597182
457 | 61789679,4505556,05856996389
458 | 61789708,4505210,30878797295
459 | 61789865,4505319,22865598312
460 | 61790127,4504893,18926598534
461 | 61790239,4504278,26899896989
462 | 61790531,4506034,01836496287
463 | 61791267,4505584,06917699338
464 | 61791528,4506321,02818997909
465 | 61791704,4506204,06857995986
466 | 61791861,4505982,05909498106
467 | 61791893,4504109,12887196565
468 | 61792008,4504260,28866696375
469 | 61792042,4505961,05887498999
470 | 61792065,4506189,06867095746
471 | 61792381,4504493,26848297517
472 | 61792477,4504478,17843049923
473 | 61792563,4505851,04856996773
474 | 61792588,4503792,11814998136
475 | 61792841,4504882,28849399979
476 | 61793316,4504713,12868297156
477 | 61793388,4504754,24855397737
478 | 61793621,4503740,15924999338
479 | 61793770,4504632,21856997410
480 | 61794047,4506226,02874899502
481 | 61794307,4503844,12876898746
482 | 61795232,4506249,07865498173
483 | 61795285,4504343,18907898020
484 | 61795413,4504433,22915197705
485 | 61795477,4505834,01907899132
486 | 61795661,4505496,03856399523
487 | 61795721,4504776,30816698819
488 | 61796016,4504647,18917397909
489 | 61796207,4505720,04904997922
490 | 61796248,4505792,04907197455
491 | 61796340,4502049,07916795933
492 | 61796495,4504988,25867198655
493 | 61797320,4504313,26909399474
494 | 61797391,4505674,05875995709
495 | 61797432,4505586,04926997969
496 | 61797438,4504738,18924996974
497 | 61798151,4504309,10904898991
498 | 61798180,4505258,10879697765
499 | 61798659,4503973,18816297598
500 | 61798811,4504354,14814998143
501 | 61799043,4505912,08887597961
502 | 61799057,4505239,26855999993
503 | 61799175,4505139,11887296970
504 | 61799218,4503680,28907974822
505 | 61799244,4501942,30929099539
506 | 61799310,4504759,28888897722
507 | 61799433,4504263,29929297197
508 | 61799453,4504691,12857597352
509 | 61799559,4504369,30866299265
510 | 61799713,4506257,05886097265
511 | 61800127,4504787,11816098981
512 | 61800566,4504494,16929296749
513 | 61800590,4505085,19865698073
514 | 61800818,4504144,12846496791
515 | 61800846,4505442,01857396517
516 | 61800903,4503815,22837799558
517 | 61800967,4505800,08896199022
518 | 61801168,4504317,14889298783
519 | 61801398,4504238,21847399616
520 | 61801866,4504203,18867397910
521 | 61802461,4505769,06826699947
522 | 61802462,4505453,08826897512
523 | 61802484,4505733,02825896190
524 | 61802747,4506111,02817296575
525 | 61802852,4503690,30888595232
526 | 61803257,4505947,01828598518
527 | 61803438,4504908,13906197469
528 | 61803990,4502987,25926397934
529 | 61804145,4506259,08905799704
530 | 61804213,4505990,02827497633
531 | 61804365,4504889,11844398524
532 | 61804376,4504284,12816294779
533 | 61804675,4505507,03897098341
534 | 61804814,4505040,28886594161
535 | 61805038,4505559,01855097725
536 | 61805874,4504326,24825096759
537 | 61806131,4504946,26895096929
538 | 61806332,4506163,06815699929
539 | 61806370,4505487,03918997996
540 | 61806440,4506333,07916197939
541 | 61806633,4505369,19855298948
542 | 61806655,4505740,05874898998
543 | 61806668,4506077,05826799333
544 | 61806753,4504414,14886997931
545 | 61806874,4506097,09847695789
546 | 61807051,4503887,19916198852
547 | 61807172,4506256,08877897177
548 | 61807276,4503656,15853348780
549 | 61807397,4504740,22886899762
550 | 61807492,4504515,14929499183
551 | 61807614,4506107,03826895798
552 | 61807655,4506102,01817998069
553 | 61807952,4505554,06917095572
554 | 61807987,4504186,18906795368
555 | 61808450,4505165,15917299568
556 | 61808621,4504285,18884198778
557 | 61808891,4505568,05837797189
558 | 61808967,4504160,25929298600
559 | 61809073,4505232,29928196192
560 | 61809392,4504368,16866297650
561 | 61809493,4505793,06839999389
562 | 61809807,4505289,29857196005
563 | 61809944,4506095,07815298777
564 | 61809985,4504820,10818398528
565 | 61810138,4504858,18898299151
566 | 61810172,4504235,27829198458
567 | 61810177,4505545,06817397164
568 | 61810202,4503662,26908298127
569 | 61810343,4504940,26843148920
570 | 61810899,4505220,22866096779
571 | 61811080,4504363,14856798551
572 | 61811466,4506376,02875998768
573 | 61811468,4504311,10839199479
574 | 61811913,4504528,23896895931
575 | 61812062,4503737,29895999103
576 | 61812126,4503948,21897898281
577 | 61812177,4505012,14844098155
578 | 61812240,4504748,25894599912
579 | 61812528,4503982,25889298874
580 | 61812588,4505164,23817096948
581 | 61812676,4505768,04818298310
582 | 61813067,4505449,04917496361
583 | 61813089,4506228,01899999505
584 | 61813174,4504212,26920598578
585 | 61813204,4504257,12865599569
586 | 61813290,4501699,05816798126
587 | 61813462,4505000,13817899980
588 | 61813622,4501635,10857996564
589 | 61813725,4505731,07852549585
590 | 61813895,4506021,04886796116
591 | 61814009,4504801,24844498361
592 | 61814243,4506262,08925498786
593 | 61814368,4505846,04908797731
594 | 61814585,4505187,18897599690
595 | 61814746,4505872,02916899729
596 | 61814846,4504729,17876198886
597 | 61814855,4504029,27818899926
598 | 61815035,4505918,08815297750
599 | 61815159,4503943,11876398046
600 | 61815399,4503739,17905697986
601 | 61816997,4505913,05835597786
602 | 61817253,4506116,04859998769
603 | 61817335,4505929,05842549193
604 | 61817343,4502817,08856396542
605 | 61817360,4505419,03856695726
606 | 61817397,4504276,16874898736
607 | 61817430,4504546,16927699803
608 | 61817499,4504215,17927398087
609 | 61817511,4506199,06865799576
610 | 61817586,4504032,26848897956
611 | 61817787,4504555,31928997173
612 | 61817802,4505888,01856997983
613 | 61817805,4506007,06828796605
614 | 61817900,4505648,07886797693
615 | 61817919,4505127,29898174733
616 | 61818081,4503868,20907397220
617 | 61818155,4505093,25923049137
618 | 61818218,4505897,07898899157
619 | 61818264,4506222,06925999758
620 | 61818460,4504782,10886397122
621 | 61818553,4502069,01905698350
622 | 61818594,4503896,19897898627
623 | 61818643,4504873,14877698549
624 | 61819096,4504296,10888699223
625 | 61845139,4505264,24835697386
626 | 61845228,4503697,21914699905
627 | 61845357,4505787,07917499335
628 | 61845646,4505244,11906497524
629 | 61845664,4505972,03876099399
630 | 61845718,4504027,27835998725
631 | 61845766,4505031,17847098147
632 | 61845857,4506369,05864396579
633 | 61846015,4504949,22828598418
634 | 61846103,4506033,03927999969
635 | 61846338,4505308,23865597991
636 | 61846396,4504386,30867795770
637 | 61846503,4505083,19926996374
638 | 61846510,4502139,19926498633
639 | 61846594,4505088,16815996724
640 | 61846680,4504007,19874598529
641 | 61846726,4505562,01877798077
642 | 61846732,4505251,10925899793
643 | 61846799,4505388,29917596571
644 | 61847202,4504250,10927196595
645 | 61847397,4505935,09856797853
646 | 61847836,4505967,04845998928
647 | 61847911,4506305,02887296505
648 | 61847985,4506243,09866297506
649 | 61848175,4505996,09897096940
650 | 61848633,4505837,05867096177
651 | 61848775,4506115,01904998709
652 | 61848995,4506254,05877396381
653 | 61849132,4505544,03846899609
654 | 61849235,4503941,27820098302
655 | 61849969,4504808,15816097549
656 | 61850231,4506017,08867199757
657 | 61850462,4505151,28853049176
658 | 61850645,4506377,03866696690
659 | 61850700,4504460,16818197555
660 | 61850950,4505899,08887798959
661 | 61851377,4504885,22867996412
662 | 61851453,4505835,03905499776
663 | 61851570,4506147,04818698122
664 | 61851617,4505761,07916899704
665 | 61851659,4505383,21892648961
666 | 61852317,4506025,05845795373
667 | 61852370,4505015,10869499744
668 | 61853272,4505037,17914599938
669 | 61853477,4505713,05855495572
670 | 61853524,4502162,08925495981
671 | 61853740,4504521,24819397860
672 | 61853962,4505551,03826097913
673 | 61854332,4503226,02906198919
674 | 61854420,4503885,27857395951
675 | 61854547,4503732,24878898741
676 | 61854650,4504945,10837697587
677 | 61854960,4505634,07895298969
678 | 61855108,4505842,03916297741
679 | 61855547,4504292,25866695140
680 | 61855616,4505550,09885096570
681 | 61855945,4504525,12856298750
682 | 61856100,4505360,22825799692
683 | 61856974,4505180,23874698768
684 | 61857039,4506128,04874597355
685 | 61857362,4506338,06825697150
686 | 61857429,4505748,09905798879
687 | 61857499,4505447,04876197338
688 | 61857713,4506049,02836698501
689 | 61858172,4506060,01864698596
690 | 61858415,4503855,27848298692
691 | 61858434,4504136,12895899168
692 | 61858753,4504488,10887497090
693 | 61858811,4504115,26865994906
694 | 61859359,4505255,11925497314
695 | 61859482,4505166,30895599340
696 | 61859804,4504685,10928698519
697 | 61859885,4504310,12817998664
698 | 61859904,4504705,31855697168
699 | 61860131,4505641,03895697507
700 | 61860230,4504454,10825898528
701 | 61860321,4504461,15845896159
702 | 61861320,4503873,23849299115
703 | 61861459,4503930,12905597718
704 | 61861623,4505069,13856895143
705 | 61861638,4505647,05826397197
706 | 61861690,4503715,30856496593
707 | 61861851,4504245,30908498468
708 | 61862025,4505528,03916396979
709 | 61862278,4505248,25856498770
710 | 61862320,4504081,30855799746
711 | 61862421,4506211,08916399910
712 | 61862767,4506366,02855799378
713 | 61862992,4503864,22833849976
714 | 61863035,4506354,05817999141
715 | 61863387,4504536,26856895989
716 | 61863525,4505956,08835499511
717 | 61863750,4503957,29835999406
718 | 61863892,4504752,14837099952
719 | 61864568,4504365,31859398335
720 | 61864956,4505534,04905396132
721 | 61865009,4504796,18886596959
722 | 61865334,4505502,09897396731
723 | 61865407,4506301,05894899923
724 | 61865416,4504932,27826599230
725 | 61865461,4504345,16836298121
726 | 61865532,4504741,16927097544
727 | 61866069,4506324,01883348733
728 | 61866081,4504712,17876197316
729 | 61866104,4505421,09916399526
730 | 61866257,4505123,20868797577
731 | 61866335,4504224,20827198790
732 | 61866352,4504152,31889099146
733 | 61866382,4504693,19867799500
734 | 61866421,4504681,11865799995
735 | 61866481,4506270,01836499324
736 | 61866537,4505233,18864698782
737 | 61866585,4505163,12895899672
738 | 61867031,4504417,10827198981
739 | 61867076,4506219,07828098629
740 | 61867326,4504138,23837097983
741 | 61867573,4504101,21817395624
742 | 61867806,4505418,01815898172
743 | 61868301,4504393,24817797101
744 | 61868691,4504091,13895198700
745 | 61869048,4504383,17815799364
746 | 61869395,4506206,04826299733
747 | 61869477,4504830,10816098357
748 | 61869817,4503935,30899296687
749 | 61869932,4505518,04927996508
750 | 61870053,4506337,09824696931
751 | 61870567,4506299,09876996739
752 | 61870793,4504396,22847499595
753 | 61870955,4505235,15856798914
754 | 61871230,4505997,03907596787
755 | 61871694,4504426,23925296538
756 | 61871731,4505148,13826896986
757 | 61872221,4505426,04915495945
758 | 61872517,4504266,18846597944
759 | 61872694,4506345,07826597369
760 | 61872784,4504084,13867297590
761 | 61872803,4504444,26926199519
762 | 61873348,4505436,07835998945
763 | 61873713,4504612,28845697584
764 | 61873799,4504495,11865996537
765 | 61874335,4506065,09834599705
766 | 61874380,4502585,04879998072
767 | 61874452,4504758,14815297513
768 | 61874564,4506040,09837797125
769 | 61874775,4504190,12855999461
770 | 61874980,4504175,11818097710
771 | 61875214,4505156,22866398066
772 | 61875346,4505076,26816899345
773 | 61875516,4506149,03877498769
774 | 61875578,4506133,03847699271
775 | 61875711,4504580,31837498239
776 | 61876138,4504360,26925098786
777 | 61876469,4504897,30836998185
778 | 61876483,4505566,01865299334
779 | 61877047,4504105,27918697174
780 | 61877079,4504011,30876699229
781 | 61877089,4505271,30887499558
782 | 61877178,4505380,28824798704
783 | 61877626,4504545,19886499852
784 | 61878136,4506295,08845796336
785 | 61878416,4504527,18845598548
786 | 61878679,4503579,25915798945
787 | 61878961,4505565,01916199763
788 | 61879469,4506101,06898897298
789 | 61879692,4505161,15893449555
790 | 61879694,4504807,28845799182
791 | 61879804,4506356,05815599383
792 | 61880102,4506000,06837998539
793 | 61880138,4506265,01826098577
794 | 61880420,4503290,06897497539
795 | 61880495,4505480,02925299785
796 | 61880730,4504342,16846499370
797 | 61880813,4506306,06859097713
798 | 61880891,4505663,06878699953
799 | 61881031,4505381,19810099375
800 | 61881144,4506130,02916298334
801 | 61881397,4505564,02898999354
802 | 61881546,4502627,11815898577
803 | 61881946,4506311,06817199648
804 | 61882296,4506157,01846499152
805 | 61882312,4505131,24828798932
806 | 61882389,4505391,16909596711
807 | 61882663,4505718,03885399575
808 | 61882715,4505931,03868199376
809 | 61883112,4504936,23925498661
810 | 61883395,4506134,06866597551
811 | 61883919,4504065,23878899091
812 | 61883988,4505214,29916099787
813 | 61883993,4506329,03857599755
814 | 61884211,4505895,03815596772
815 | 61884554,4505423,08835897908
816 | 61884732,4505621,03845298377
817 | 61884741,4506358,09866198389
818 | 61885118,4506275,05836099054
819 | 61885199,4505425,09844999507
820 | 61885217,4506297,02886897548
821 | 61885245,4504640,12923649598
822 | 61885754,4503679,26913749374
823 | 61885906,4503714,18845699190
824 | 61886038,4505511,06915596566
825 | 61886236,4505945,06904998360
826 | 61886383,4505441,01847997083
827 | 61887190,4505330,15884797710
828 | 61887238,4504130,17917396590
829 | 61887347,4504655,29898599548
830 | 61888762,4503747,20865698012
831 | 61888846,4504843,24857098958
832 | 61888873,4504281,25886996139
833 | 61889048,4505145,30848398701
834 | 61889171,4506236,08897196922
835 | 61889190,4505269,16878398835
836 | 61889509,4506365,03834897732
837 | 61889527,4504096,10856995904
838 | 61889638,4505159,10845999150
839 | 61890052,4505440,08876499267
840 | 61890556,4505615,06915997323
841 | 61890636,4504711,23839799977
842 | 61890639,4503681,18849499323
843 | 61890966,4503971,30906698958
844 | 61891390,4505778,03815199927
845 | 61891414,4506247,02840799266
846 | 61891422,4503934,13896898331
847 | 61891426,4505563,01915996716
848 | 61891998,4505191,12915499102
849 | 61892768,4504371,17825298576
850 | 61892798,4505262,14893949187
851 | 61892994,4504233,23886899963
852 | 61893151,4504379,31887897630
853 | 61893384,4504716,24876797123
854 | 61893489,4503981,29848098548
855 | 61893498,4505451,07905698456
856 | 61893701,4506041,03875998969
857 | 61893704,4505312,22815296994
858 | 61893987,4504214,15916896821
859 | 61894787,4504388,29875299369
860 | 61894896,4505042,22855099393
861 | 61894904,4506185,01876197592
862 | 61895041,4506004,03904598541
863 | 61895075,4502060,11895598382
864 | 61895095,4504243,24876297139
865 | 61895266,4506082,03866999952
866 | 61895267,4503779,20907899145
867 | 61895413,4505661,01885699398
868 | 61895659,4503663,30838498813
869 | 61895722,4505552,01916895778
870 | 61895971,4504652,30869398205
871 | 61896545,4505575,01837098161
872 | 61896566,4504192,12856796149
873 | 61896893,4505477,04898597186
874 | 61897038,4502697,04878297577
875 | 61897066,4504025,14846498509
876 | 61897257,4504785,18836895653
877 | 61897300,4504989,13876999913
878 | 61897686,4506378,09846198641
879 | 61898213,4505285,10858495380
880 | 61898248,4506303,09831448730
881 | 61898516,4504077,17816999162
882 | 61898707,4505960,06832548349
883 | 61898780,4503788,13856096585
884 | 61899133,4506174,02856599364
885 | 61899342,4506109,01878196917
886 | 61899782,4505068,19838996887
887 | 61900104,4503794,10900099644
888 | 61900248,4506074,08836097131
889 | 61900525,4504915,14825897004
890 | 61900824,4506068,02895596925
891 | 61901118,4504023,11919798779
892 | 61901373,4505199,22884498191
893 | 61901663,4506193,05876499764
894 | 61902300,4503777,12894998952
895 | 61902498,4506298,02845197523
896 | 61902541,4502980,11824799735
897 | 61902849,4504540,29868499980
898 | 61903248,4504329,28916396572
899 | 61903270,4504660,13816499121
900 | 61903842,4503760,17858998638
901 | 61904067,4504246,20824699322
902 | 61904079,4503805,29908598359
903 | 61904691,4505682,05926196148
904 | 61904694,4506043,09925198177
905 | 61904921,4503795,13876998534
906 | 61905074,4504294,12856598622
907 | 61905163,4505959,04886595390
908 | 61905278,4506271,03817399168
909 | 61905293,4504079,20836396198
910 | 61905592,4505056,15834398157
911 | 61905685,4506037,01876096788
912 | 61905707,4506336,06917198983
913 | 61905794,4504275,10865599329
914 | 61906122,4505795,03907999717
915 | 61906316,4504771,28862848715
916 | 61906581,4505660,05915898167
917 | 61906634,4504469,15912949378
918 | 61907352,4505850,05904598358
919 | 61907770,4504225,27855698590
920 | 61907885,4504777,13825398702
921 | 61908072,4505894,06895798167
922 | 61908110,4504319,16816798802
923 | 61908238,4503087,10928197579
924 | 61908597,4503672,26925697302
925 | 61908618,4504530,12896198961
926 | 61908636,4504297,25896497513
927 | 61909284,4505243,26837396807
928 | 61909445,4504033,11847098394
929 | 61910989,4504038,23907299309
930 | 61911462,4504750,27856097558
931 | 61911591,4503798,21926099946
932 | 61911680,4506162,02827698973
933 | 61911837,4504475,20863949727
934 | 61912192,4505286,16858095917
935 | 61912584,4504625,27919097278
936 | 61912699,4505574,08847199939
937 | 61912876,4504064,14845598763
938 | 61912948,4504931,23818498608
939 | 61913317,4505479,02856598570
940 | 61913418,4505775,05926195788
941 | 61913500,4501836,27816397540
942 | 61914087,4505351,16896999587
943 | 61914111,4504984,19813348333
944 | 61914114,4505324,10887897579
945 | 61914259,4504099,14888298755
946 | 61914723,4502343,18915998166
947 | 61915051,4505406,08907297927
948 | 61915061,4505431,07825596709
949 | 61915251,4505405,07889599647
950 | 61915697,4505260,19916198186
951 | 61916076,4504951,23877498549
952 | 61916131,4505589,02925098364
953 | 61916237,4504609,18925298391
954 | 61916276,4506242,08857498764
955 | 61916810,4506346,04905098352
956 | 61918282,4502601,13929698473
957 | 61918724,4506320,09855998731
958 | 61918760,4505852,03886795989
959 | 61918762,4505313,22847697869
960 | 61918828,4504710,11827898351
961 | 61919546,4504717,28824798119
962 | 61919793,4505377,26856098817
963 | 61919877,4505679,06918399494
964 | 61920238,4506352,07818697427
965 | 61920621,4505877,08927398711
966 | 61920803,4504349,24899495981
967 | 61920942,4506022,03854899138
968 | 61921181,4504824,18927294407
969 | 61921473,4506053,02832949321
970 | 61921497,4504265,23886599153
971 | 61921549,4505329,10905097593
972 | 61921558,4506027,05906597944
973 | 61921718,4505603,06916997866
974 | 61921877,4504520,31857198266
975 | 61922334,4504593,10921749908
976 | 61922366,4505309,19837999300
977 | 61922573,4506230,05917098338
978 | 61922784,4506003,01877899043
979 | 61922827,4505783,07856498373
980 | 61923092,4505353,20847196921
981 | 61923156,4503767,24815096769
982 | 61923228,4505395,20867095773
983 | 61923336,4506253,05926897715
984 | 61923412,4505817,04904698925
985 | 61923433,4504252,22925896938
986 | 61923560,4505121,22867396911
987 | 61924134,4505833,09858299583
988 | 61924553,4505182,19907094343
989 | 61925108,4503689,29836696334
990 | 61925154,4504586,28898696482
991 | 61925480,4506339,07879198385
992 | 61925565,4505268,17876597985
993 | 61925867,4505613,04916998924
994 | 61926055,4505631,09922547944
995 | 61926259,4503879,11897098778
996 | 61926998,4505385,17899798503
997 | 61927273,4505735,02925496750
998 | 61927356,4506078,02814998951
999 | 61927459,4506323,02816496902
1000 | 61927571,4505150,13905196132
1001 | 61927784,4505416,05822849328
1002 | 61927837,4505192,21909497318
1003 | 61927941,4504375,22824397922
1004 | 61928733,4504400,14889699540
1005 | 61928744,4504230,12848598931
1006 | 61929035,4506191,05905099509
1007 | 61929640,4505134,13924797902
1008 | 61930256,4504001,27899398500
1009 | 61930280,4505234,25816599868
1010 | 61930286,4506304,06906097565
1011 | 61930359,4504293,31906696986
1012 | 61930575,4505870,08816599319
1013 | 61930622,4505814,02906099791
1014 | 61930799,4504603,15827498596
1015 | 61930837,4504167,28919298385
1016 | 61931195,4505153,26868599560
1017 | 61931233,4505237,18857199142
1018 | 61931462,4505848,07817399880
1019 | 61931716,4504689,14867499068
1020 | 61931910,4505091,26917198844
1021 | 61932285,4502165,05916396351
1022 | 61932288,4504185,12916899538
1023 | 61932532,4506015,08836097212
1024 | 61932533,4505343,19819598005
1025 | 61932955,4504649,16914298990
1026 | 61933341,4503126,01817897769
1027 | 61933390,4504565,28887296148
1028 | 61933559,4504435,13908398402
1029 | 61933579,4505078,19826299951
1030 | 61934078,4504402,11836499990
1031 | 61934361,4506353,09848297582
1032 | 61934445,4503857,21845498544
1033 | 61934593,4504684,12897496346
1034 | 61934953,4505537,01877998947
1035 | 61935500,4505977,02887797636
1036 | 61935954,4505087,24837797191
1037 | 61936569,4505435,01897399543
1038 | 61936670,4504852,16849996383
1039 | 61936671,4505061,20839599332
1040 | 61936728,4503446,19897294357
1041 | 61937004,4504492,20846698575
1042 | 61937269,4504906,14825998323
1043 | 61937651,4504480,26879499568
1044 | 61937692,4504743,26859699196
1045 | 61937708,4506300,08855896770
1046 | 61938079,4505637,06816694556
1047 | 61938102,4504059,23924898364
1048 | 61938264,4505948,09876398149
1049 | 61938276,4504391,23906899558
1050 | 61938388,4504914,20897499062
1051 | 61938564,4504129,15846296767
1052 | 61938932,4504902,20844398132
1053 | 61940490,4503013,05906198764
1054 | 61940646,4504955,28906297193
1055 | 61940778,4505443,01913249948
1056 | 61941095,4504742,11846895509
1057 | 61941251,4506114,03857299964
1058 | 61941539,4505609,07825696991
1059 | 61941575,4503742,47887800320
1060 | 61941581,4506360,04905898804
1061 | 61941640,4504468,28909499706
1062 | 61941837,4504600,19856897764
1063 | 61941892,4503688,11918998863
1064 | 61941915,4505578,07885197579
1065 | 61942028,4504731,10876496521
1066 | 61942083,4503822,10916999742
1067 | 61942172,4503673,16845498559
1068 | 61942600,4504665,21815698506
1069 | 61942734,4505777,02896599758
1070 | 61942851,4505709,08837094950
1071 | 61942914,4504073,30904796901
1072 | 61943277,4504926,25837499340
1073 | 61943455,4505365,21818394788
1074 | 61943869,4504482,11914699349
1075 | 61943940,4504445,26867196179
1076 | 61944954,4504538,29846698173
1077 | 61945279,4506064,05867399277
1078 | 61945349,4504501,19897698261
1079 | 61945960,4505697,02857997517
1080 | 61946043,4504316,29908797254
1081 | 61946175,4503961,13876497160
1082 | 61946203,4504133,15826396102
1083 | 61946206,4505974,05835999337
1084 | 61946282,4503994,27912949740
1085 | 61946532,4506010,04865098354
1086 | 61946700,4504697,15877698901
1087 | 61946933,4503691,27816899112
1088 | 61947318,4505444,01902949360
1089 | 61947527,4503787,10902648556
1090 | 61948882,4504219,30874996935
1091 | 61949171,4505867,03866797152
1092 | 61949190,4504832,20872548174
1093 | 61949798,4504000,28825897374
1094 | 61950151,4503905,14926898702
1095 | 61950265,4505773,07846596989
1096 | 61950282,4504083,30815098109
1097 | 61950425,4504361,30834399179
1098 | 61950634,4504423,26810149093
1099 | 61950925,4504127,11857398337
1100 | 61950933,4505045,15865898069
1101 | 61951169,4505492,09894397974
1102 | 61951833,4503995,10857198951
1103 | 61951990,4504876,25849499044
1104 | 61952199,4504497,17837595770
1105 | 61952469,4503718,29887998033
1106 | 61952605,4504088,17857197445
1107 | 61952732,4505657,07828398096
1108 | 61952739,4504733,11878098988
1109 | 61952798,4505341,18846498555
1110 | 61952960,4504964,21916299564
1111 | 61953072,4505158,25819096549
1112 | 61953322,4505806,01927099256
1113 | 61954178,4506152,09817399344
1114 | 61954727,4505307,19906297747
1115 | 61955295,4506308,09916899863
1116 | 61955420,4504838,13856297572
1117 | 61955608,4505010,25885597788
1118 | 61955735,4503821,30859398568
1119 | 61956131,4506277,09825399701
1120 | 61956678,4506363,04887997131
1121 | 61957101,4504950,24876398539
1122 | 61957160,4503791,26854799923
1123 | 61957715,4504057,13894199142
1124 | 61957741,4504415,12870099957
1125 | 61957914,4505991,05866097528
1126 | 61958688,4506314,05907099212
1127 | 61959129,4504831,10895599560
1128 | 61959202,4504853,19926798505
1129 | 61959225,4505036,15912849942
1130 | 61959473,4505789,04856398507
1131 | 61959598,4504658,24897395904
1132 | 61959956,4505680,06892549778
1133 | 61960102,4505905,09887997389
1134 | 61960205,4505896,03898199346
1135 | 61960278,4504913,29925497701
1136 | 61960283,4504100,24877097710
1137 | 61960816,4504773,19924698961
1138 | 61961091,4504410,25834599972
1139 | 61961162,4504404,29856899231
1140 | 61961430,4505130,26826295731
1141 | 61961826,4506086,02817499492
1142 | 61961871,4503771,21889698710
1143 | 61962345,4503894,10869696396
1144 | 61962421,4506009,06856098360
1145 | 61962634,4505008,13856397917
1146 | 61962725,4504982,23815998960
1147 | 61963189,4504067,25895598057
1148 | 61964055,4505555,05846495934
1149 | 61964095,4504795,25826096120
1150 | 61964229,4506371,01817297834
1151 | 61964462,4504229,21926599183
1152 | 61964583,4505658,03909998637
1153 | 61964609,4505265,15875797082
1154 | 61964919,4505743,04827296533
1155 | 61965152,4505884,07895598326
1156 | 61965417,4506319,01894499903
1157 | 61965650,4504161,13876395724
1158 | 61965695,4505201,26918096336
1159 | 61965786,4505957,09845099739
1160 | 61966286,4504662,20887096970
1161 | 61966526,4504725,27926795975
1162 | 61966583,4504888,10817599910
1163 | 61966649,4505215,17909299926
1164 | 61967003,4504726,12856399131
1165 | 61967248,4503964,12897598963
1166 | 61967264,4505439,08895798992
1167 | 61967626,4504320,25897399450
1168 | 61967726,4506373,06865798359
1169 | 61967892,4501850,26897097930
1170 | 61967901,4505522,01846095752
1171 | 61968199,4505669,09885998892
1172 | 61968557,4504772,21916197109
1173 | 61968683,4505508,08815896549
1174 | 61968975,4504680,29898598916
1175 | 61969095,4505821,02895299939
1176 | 61969870,4506357,08837098115
1177 | 61970582,4505432,07837499024
1178 | 61971027,4506340,07827398149
1179 | 61971056,4505750,03829199172
1180 | 61971504,4505830,03906698942
1181 | 61971814,4505047,13846796279
1182 | 61972318,4504334,20876497981
1183 | 61972359,4504506,31907496972
1184 | 61972487,4505805,06864996947
1185 | 61972553,4504053,10905698120
1186 | 61972897,4505914,02906899739
1187 | 61973737,4504087,13866399160
1188 | 61973766,4504305,10877399848
1189 | 61973769,4504668,20876595991
1190 | 61974385,4505729,07866197940
1191 | 61974736,4503706,16829497607
1192 | 61974978,4505009,13895397959
1193 | 61975634,4504987,30884597583
1194 | 61975647,4504061,20888498207
1195 | 61976235,4505924,03896397310
1196 | 61976529,4505450,09867397717
1197 | 61976622,4504582,10857699659
1198 | 61977005,4505825,03867099408
1199 | 61977157,4504675,20885499520
1200 | 61977189,4504040,10909798235
1201 | 61977270,4504351,18897198319
1202 | 61977548,4504237,12835997713
1203 | 61977651,4506062,01886198376
1204 | 61978109,4504941,21909297033
1205 | 61978416,4506088,07907399081
1206 | 61978463,4504477,31929298635
1207 | 61978481,4505919,04926499551
1208 | 61978698,4504979,10816097644
1209 | 61978851,4503945,11859998137
1210 | 61978919,4505489,01866597738
1211 | 61979519,4504927,30915498988
1212 | 61979579,4506167,04835598379
1213 | 61979782,4506237,02855199958
1214 | 61979972,4504189,19869596569
1215 | 61980139,4504833,24902748837
1216 | 61980338,4505295,29834898320
1217 | 61980479,4506104,02875898585
1218 | 61980856,4506374,05877798870
1219 | 61980890,4506012,01817898552
1220 | 61981154,4504163,23887498377
1221 | 61982021,4506106,09916699821
1222 | 61982163,4505204,12846799549
1223 | 61982271,4505941,02816997790
1224 | 61982359,4503750,27907498250
1225 | 61982466,4505137,25908398109
1226 | 61982553,4505315,18826898115
1227 | 61982580,4506274,04827497520
1228 | 61983155,4505780,06887298562
1229 | 61983245,4504585,24855499920
1230 | 61983582,4505690,01833548391
1231 | 61983631,4505652,04866697170
1232 | 61983689,4504018,12916496336
1233 | 61984166,4503903,13833748534
1234 | 61984428,4504491,45916401152
1235 | 61984734,4505063,21827099330
1236 | 61984983,4505557,01905898201
1237 | 61985309,4505278,21844796991
1238 | 61986047,4506031,06885698318
1239 | 61986151,4504086,20924498545
1240 | 61986254,4504149,23859697844
1241 | 61987025,4505711,08817297545
1242 | 61987201,4504842,20826799138
1243 | 61987239,4504883,25925297138
1244 | 61987290,4504429,15866398345
1245 | 61987501,4505600,08905297385
1246 | 61987503,4504978,12886799770
1247 | 61987706,4503769,22856099745
1248 | 61988580,4503768,23906498952
1249 | 61988880,4506192,01845799691
1250 | 61989302,4505024,27875297541
1251 | 61989421,4501940,11818098504
1252 | 61989847,4506063,03826199783
1253 | 61989928,4505171,23924099534
1254 | 61990045,4505245,10904598424
1255 | 61990940,4505490,06876699735
1256 | 61991206,4504458,11917099822
1257 | 61991284,4505667,08916997915
1258 | 61991860,4505892,02866499767
1259 | 61991970,4504209,27849099472
1260 | 61991996,4506341,02816199592
1261 | 61992036,4504856,11909198773
1262 | 61992135,4503780,10874697562
1263 | 61992443,4506223,06905399924
1264 | 61992449,4505186,31929899515
1265 | 61992451,4505273,11928897534
1266 | 61992557,4503731,16823148708
1267 | 61992951,4505847,06814399514
1268 | 61993281,4506287,09857696996
1269 | 61993487,4504763,25929898969
1270 | 61993753,4505274,31906097764
1271 | 61993905,4504847,10894699715
1272 | 61995065,4504331,12860199716
1273 | 61995456,4504370,20817998586
1274 | 61995649,4503829,13906499937
1275 | 61995664,4504262,21878699405
1276 | 61995812,4505224,14824898384
1277 | 61996256,4505745,06926098339
1278 | 61996643,4505475,08816499136
1279 | 61996954,4506326,02875699760
1280 | 61997026,4505671,06906199759
1281 | 61997064,4504613,21886398198
1282 | 61997237,4504367,21865497064
1283 | 61997766,4504121,30906498320
1284 | 61997960,4504627,16887499520
1285 | 61998159,4504654,22897496589
1286 | 61998755,4504125,12832849977
1287 | 61998869,4505736,03885998959
1288 | 61999251,4505746,04867396948
1289 | 61999456,4506187,09919898892
1290 | 62000186,4506172,01839997716
1291 | 62000813,4504806,24846599122
1292 | 62001221,4503764,14847798913
1293 | 62001366,4505424,03870199936
1294 | 62001614,4503827,11898996591
1295 | 62001678,4505606,02817296737
1296 | 62001873,4504701,25897396060
1297 | 62002800,4504813,13835699891
1298 | 62002847,4504377,15824499567
1299 | 62002966,4505160,22929698081
1300 | 62003087,4505893,03826395965
1301 | 62003396,4506267,07855397107
1302 | 62003594,4503949,16866698337
1303 | 62004075,4503687,12847296354
1304 | 62004473,4505456,05824695778
1305 | 62004556,4506083,04928596724
1306 | 62004568,4506351,07909097740
1307 | 62004842,4505724,03927097132
1308 | 62005201,4505758,04839399990
1309 | 62005416,4505462,07886496766
1310 | 62005528,4504031,12867696308
1311 | 62005650,4504730,25818999111
1312 | 62005887,4503835,22845398139
1313 | 62006144,4505643,02815499355
1314 | 62006487,4505283,15824399384
1315 | 62006532,4505701,08854497139
1316 | 62006875,4505046,11896399596
1317 | 62007110,4504549,22815696968
1318 | 62007152,4505855,03896696903
1319 | 62007158,4505598,09816295111
1320 | 62007625,4504134,10868197329
1321 | 62007712,4505976,09856499569
1322 | 62007870,4504624,30917999046
1323 | 62008004,4505089,25845595979
1324 | 62008279,4503853,15923149349
1325 | 62008817,4504844,10865395537
1326 | 62009334,4504418,11847796571
1327 | 62009733,4503933,17835898490
1328 | 62009794,4505693,03878674943
1329 | 62009939,4506158,03866199905
1330 | 62010097,4505676,06825797848
1331 | 62010885,4505934,05836096330
1332 | 62010894,4504836,26887798922
1333 | 62011469,4504626,16916696748
1334 | 62011877,4504117,16836797675
1335 | 62011988,4503152,09858996977
1336 | 62012297,4503898,19875799544
1337 | 62012352,4506136,03826398921
1338 | 62013010,4504335,26889199252
1339 | 62013671,4505749,02826899347
1340 | 62013783,4505305,13897797717
1341 | 62013928,4505802,04867499097
1342 | 62014178,4503664,27833147752
1343 | 62014344,4504645,18865699332
1344 | 62014424,4505782,08874899527
1345 | 62014795,4505513,04810096786
1346 | 62015420,4504078,13815896534
1347 | 62015636,4505111,29865098977
1348 | 62015910,4504848,17847499761
1349 | 62016151,4504975,13876798411
1350 | 62016197,4504698,23907797554
1351 | 62016549,4505710,08846596594
1352 | 62016997,4504542,20846696645
1353 | 62017085,4506207,03824796776
1354 | 62017171,4505989,01826999590
1355 | 62017474,4503720,11815198974
1356 | 62018180,4505325,10847498914
1357 | 62018232,4504440,16844899983
1358 | 62018281,4504541,25862948729
1359 | 62018905,4504232,26858799855
1360 | 62019385,4503683,31858796299
1361 | 62019554,4503959,29896898750
1362 | 62020057,4505954,07874898966
1363 | 62020395,4504124,29816997524
1364 | 62020408,4505345,22917396667
1365 | 62020640,4502183,13836796521
1366 | 62020713,4504721,18883649938
1367 | 62020756,4504382,10918398142
1368 | 62020877,4505427,01878399753
1369 | 62020934,4504017,11865796929
1370 | 62021003,4504881,20866399981
1371 | 62021196,4503872,15857097103
1372 | 62021858,4504173,11817398105
1373 | 62022049,4505981,01918597359
1374 | 62022050,4506197,03875996796
1375 | 62022068,4505611,05858198803
1376 | 62022703,4504690,17847397144
1377 | 62022899,4505654,03906497602
1378 | 62023692,4504120,17917495556
1379 | 62023880,4504132,17878199111
1380 | 62023906,4505844,05834896917
1381 | 62024206,4505717,02878195739
1382 | 62024798,4503037,01877197197
1383 | 62024802,4504037,30905399922
1384 | 62024901,4504045,12908099123
1385 | 62025183,4503729,19912549189
1386 | 62025388,4505138,18826297235
1387 | 62025477,4504327,25918098065
1388 | 62025513,4505653,04875196192
1389 | 62025822,4504995,12913248730
1390 | 62025895,4505095,31874298959
1391 | 62025928,4505501,05895099319
1392 | 62026214,4505969,03877498092
1393 | 62026674,4503910,17843849709
1394 | 62026778,4505230,30847998446
1395 | 62026891,4504761,13867097982
1396 | 62026939,4505293,22895895389
1397 | 62027068,4503738,31874499512
1398 | 62027473,4505579,08864397965
1399 | 62028241,4503977,30906899007
1400 | 62028362,4504659,21818397906
1401 | 62028604,4505129,29863049952
1402 | 62028781,4505227,11916597969
1403 | 62028955,4503710,16839099715
1404 | 62029724,4505079,29906296762
1405 | 62030152,4504470,31879498417
1406 | 62030246,4505857,04917299981
1407 | 62030720,4505370,30839299865
1408 | 62032070,4506168,03907199184
1409 | 62032731,4505712,04918098165
1410 | 62032742,4505646,08889598469
1411 | 62033020,4503651,24862848345
1412 | 62033230,4504441,10894597289
1413 | 62033255,4503952,27885799103
1414 | 62033380,4502203,28858596744
1415 | 62034402,4505626,05874597556
1416 | 62034527,4505228,15857799302
1417 | 62034647,4504146,17868098589
1418 | 62034949,4504003,18914197992
1419 | 62035015,4503923,24876799991
1420 | 62035139,4505064,18926199192
1421 | 62035783,4506018,05906696586
1422 | 62035951,4504828,31879498689
1423 | 62036033,4505384,12820199403
1424 | 62036964,4504151,21914997795
1425 | 62037359,4504916,20838998594
1426 | 62037396,4506238,09865597611
1427 | 62037504,4504648,16917297596
1428 | 62037506,4503947,25849797339
1429 | 62037945,4506171,08816497125
1430 | 62038747,4503696,13875497132
1431 | 62038762,4505540,07824395874
1432 | 62038941,4504476,21914898991
1433 | 62039128,4504499,11858098302
1434 | 62039147,4506073,09835499631
1435 | 62039255,4504253,17845798389
1436 | 62039297,4505397,22926598752
1437 | 62039659,4504709,12907396191
1438 | 62039860,4505452,03847597169
1439 | 62040173,4505147,21881699599
1440 | 62040500,4505404,02885396146
1441 | 62041322,4504443,14849098358
1442 | 62041891,4504123,23895599700
1443 | 62041943,4504904,25904399313
1444 | 62041992,4504727,20865796375
1445 | 62042169,4503741,17929498569
1446 | 62042362,4504466,23924997753
1447 | 62042389,4504517,14906697492
1448 | 62042483,4506139,05882949550
1449 | 62042606,4503761,12897199945
1450 | 62042777,4503670,28924897718
1451 | 62042931,4506112,08845995908
1452 | 62043034,4503983,24896898341
1453 | 62043124,4505737,09865495932
1454 | 62043137,4505866,07866995553
1455 | 62043225,4504513,28885598589
1456 | 62043293,4506255,05887998398
1457 | 62043400,4506318,07865296988
1458 | 62044738,4506129,06896699472
1459 | 62044945,4504218,15848299518
1460 | 62045044,4504894,16906598748
1461 | 62045056,4505873,06884797274
1462 | 62045192,4506196,01905597708
1463 | 62045412,4505594,05836198443
1464 | 62045495,4504118,25824995500
1465 | 62045633,4504969,21813449126
1466 | 62045842,4506260,08883749120
1467 | 62046086,4504551,28817097121
1468 | 62046762,4505358,24896699527
1469 | 62046816,4505533,08819899356
1470 | 62046925,4505410,02847896550
1471 | 62047201,4505836,01856997479
1472 | 62047215,4504015,18846997756
1473 | 62047486,4506372,02846995326
1474 | 62047673,4505287,28866299953
1475 | 62048175,4504974,17848198943
1476 | 62048288,4504122,18826999787
1477 | 62048903,4506202,07857498997
1478 | 62049027,4505639,03876399937
1479 | 62049166,4506173,08887199737
1480 | 62049350,4504938,13844995975
1481 | 62050402,4505770,06905597793
1482 | 62050479,4505409,03856897698
1483 | 62050677,4504041,19877097997
1484 | 62050725,4505407,08837298661
1485 | 62050863,4505086,22929499348
1486 | 62051348,4506039,05927996385
1487 | 62051501,4502150,04897298746
1488 | 62052086,4505666,03865599365
1489 | 62052452,4504954,23857999428
1490 | 62052462,4504811,15857399762
1491 | 62052499,4505184,51916200513
1492 | 62052694,4504522,24835798352
1493 | 62052720,4506105,07868999521
1494 | 62053491,4504588,27867196027
1495 | 62053570,4503840,27816596527
1496 | 62053918,4504089,28834298971
1497 | 62054179,4506209,08815599552
1498 | 62054962,4504459,18827197919
1499 | 62054965,4503919,25925198334
1500 | 62055633,4504193,26923248586
1501 | 62056644,4504315,10827098103
1502 | 62057719,4505152,15905899527
1503 | 62057933,4504798,10874497792
1504 | 62058263,4506343,02898996983
1505 | 62058317,4504406,16924599999
1506 | 62058382,4505414,09877296730
1507 | 62058730,4505822,05816396656
1508 | 62058814,4504054,29836196773
1509 | 62058856,4504236,30854999164
1510 | 62059238,4505700,07895797302
1511 | 62059552,4506020,06826397479
1512 | 62059810,4503942,14897199085
1513 | 62059811,4505027,15916298584
1514 | 62060022,4503842,14824797731
1515 | 62060054,4504283,15877696577
1516 | 62060388,4505367,23923347372
1517 | 62060536,4504108,14919098598
1518 | 62061232,4503874,25907498525
1519 | 62061435,4505526,08886399155
1520 | 62061730,4504085,11856395938
1521 | 62061936,4504598,21928198615
1522 | 62062452,4504794,31817199170
1523 | 62062708,4504314,10875399972
1524 | 62062741,4504664,27896095345
1525 | 62062829,4504473,27845199723
1526 | 62062977,4505691,04826199984
1527 | 62063071,4504524,16876198170
1528 | 62063296,4504570,12925197996
1529 | 62063928,4504611,27877095474
1530 | 62063968,4504055,11866596591
1531 | 62064288,4504066,11877198547
1532 | 62064503,4504270,13905598389
1533 | 62064566,4505916,01914999320
1534 | 62065435,4504044,22849099144
1535 | 62065562,4504034,17848299677
1536 | 62065805,4504174,16829299171
1537 | 62065981,4504696,23886498187
1538 | 62067313,4503773,26875798390
1539 | 62068088,4503150,06866297175
1540 | 62068125,4505794,02926399139
1541 | 62068581,4503849,25864398793
1542 | 62068887,4503972,17854599445
1543 | 62069131,4504463,18914699726
1544 | 62069360,4503834,16906098168
1545 | 62069371,4506177,08845995312
1546 | 62069931,4504965,13866699113
1547 | 62069948,4505950,03928197777
1548 | 62070096,4503700,27845096746
1549 | 62070237,4505506,06817098914
1550 | 62070663,4504483,26914299321
1551 | 62071169,4504543,20896396723
1552 | 62071463,4504256,11869999506
1553 | 62071514,4503901,20925796949
1554 | 62071605,4505476,06825596346
1555 | 62071677,4503728,14835797326
1556 | 62071851,4504736,30907195259
1557 | 62071938,4504666,30837297555
1558 | 62072397,4504762,11879897736
1559 | 62072409,4505971,09846898163
1560 | 62072662,4505065,20917198749
1561 | 62072680,4506103,07916099929
1562 | 62073124,4505560,04816995596
1563 | 62073180,4505299,23866795193
1564 | 62073386,4505099,26865096797
1565 | 62073530,4504601,12833048145
1566 | 62074125,4506286,07825998874
1567 | 62074380,4504247,10915597306
1568 | 62075023,4502250,18904699655
1569 | 62075319,4506054,08827898768
1570 | 62075540,4504399,12906899386
1571 | 62076503,4503917,13888398737
1572 | 62077745,4503908,14867298151
1573 | 62077833,4505116,17877396169
1574 | 62077886,4506061,01896098779
1575 | 62078382,4505828,09918197610
1576 | 62078552,4502000,08896897986
1577 | 62078591,4505942,08835497934
1578 | 62079311,4506100,03815197592
1579 | 62079580,4504706,31853149961
1580 | 62079810,4503675,14926099125
1581 | 62080056,4506050,06926598757
1582 | 62080112,4505951,07845795937
1583 | 62080806,4504986,11866398994
1584 | 62082479,4504005,18849198587
1585 | 62082579,4503765,25856897012
1586 | 62082682,4506368,06897197586
1587 | 62082997,4505772,05856495924
1588 | 62083056,4504846,14846096362
1589 | 62083412,4505209,15889099655
1590 | 62083654,4504966,12874199557
1591 | 62083864,4505017,23836195965
1592 | 62084410,4504416,20886398310
1593 | 62084493,4504244,50877401178
1594 | 62084990,4506090,07916099171
1595 | 62085360,4504641,11917898814
1596 | 62085466,4503997,12879398817
1597 | 62085646,4504860,20815694555
1598 | 62085985,4504137,11907398163
1599 | 62086584,4505592,07898899580
1600 | 62086722,4505581,07858998152
1601 | 62086903,4505454,01876998757
1602 | 62086949,4504596,11907595996
1603 | 62087504,4504432,25889298793
1604 | 62087640,4504646,13896497140
1605 | 62088146,4506361,01846399727
1606 | 62089113,4503881,14929798776
1607 | 62089430,4504472,14885996362
1608 | 62089525,4504700,16835296869
1609 | 62089671,4505638,07926895944
1610 | 62090175,4504049,27816297449
1611 | 62090411,4505146,11827899145
1612 | 62090989,4506051,03896099379
1613 | 62091078,4505920,05882548793
1614 | 62092296,4506200,06823049348
1615 | 62092367,4505728,06925097940
1616 | 62092708,4505193,12917799111
1617 | 62093315,4504240,17894897538
1618 | 62093722,4504679,24844796737
1619 | 62093787,4505326,24864899966
1620 | 62093865,4505791,08868597314
1621 | 62094166,4505727,08926999754
1622 | 62094400,4506024,07832649354
1623 | 62094672,4504258,21918997293
1624 | 62094934,4505695,04868199496
1625 | 62095041,4503858,20845496928
1626 | 62096250,4504958,20925399184
1627 | 62096297,4502322,17847895713
1628 | 62096351,4503987,16887097708
1629 | 62096470,4504552,18909999134
1630 | 62096594,4504405,22924099929
1631 | 62096800,4504757,13824897713
1632 | 62096829,4504862,28905798377
1633 | 62097299,4505218,25864796160
1634 | 62097491,4503657,29887597357
1635 | 62098746,4504340,19856496573
1636 | 62099456,4505645,02895397191
1637 | 62099468,4503693,29917096668
1638 | 62099615,4503918,22908998964
1639 | 62099795,4505776,01825599327
1640 | 62100030,4504063,16896099780
1641 | 62100142,4504558,13915698985
1642 | 62100180,4504745,18860199226
1643 | 62100365,4505181,11867896572
1644 | 62101391,4503754,10888299098
1645 | 62101528,4505072,26923249965
1646 | 62102405,4506344,03885399141
1647 | 62102696,4503937,20874699382
1648 | 62102792,4505742,08894597705
1649 | 62102943,4504851,14825798715
1650 | 62103106,4505901,08847899531
1651 | 62103114,4505387,10816598937
1652 | 62103323,4505880,02829699551
1653 | 62103470,4504436,11879499269
1654 | 62103548,4503655,48877201743
1655 | 62104957,4503838,24888299439
1656 | 62105763,4503818,14819699691
1657 | 62105769,4504670,18857498301
1658 | 62106400,4504887,23826794763
1659 | 62107889,4504822,31928597019
1660 | 62108046,4505249,13887096583
1661 | 62108291,4503677,12828697917
1662 | 62108337,4505719,04928898364
1663 | 62108746,4505875,06874897033
1664 | 62109562,4505288,18845997132
1665 | 62110175,4505881,03886398386
1666 | 62110437,4505162,12887795787
1667 | 62110561,4504879,16848996274
1668 | 62110736,4504220,16919298255
1669 | 62110745,4505903,06928699275
1670 | 62110880,4506058,06854498116
1671 | 62111733,4506182,05846398122
1672 | 62111836,4505610,08926697367
1673 | 62112149,4506241,09926799166
1674 | 62112175,4505549,02826697485
1675 | 62112200,4504800,13907296886
1676 | 62112249,4505572,08889098555
1677 | 62112555,4502163,30858099370
1678 | 62112646,4504583,14906497612
1679 | 62112840,4505808,05836597380
1680 | 62113482,4505838,07814199783
1681 | 62113724,4505236,22846298146
1682 | 62114085,4506080,06918599930
1683 | 62114240,4506011,01816597516
1684 | 62114505,4504557,22885997744
1685 | 62114676,4504567,26847799675
1686 | 62115422,4504074,18835696568
1687 | 62115595,4505301,29897897057
1688 | 62116343,4504602,25835999702
1689 | 62117225,4504409,16895298305
1690 | 62117327,4504963,17906696525
1691 | 62117859,4504148,31888497695
1692 | 62118305,4505119,29905899544
1693 | 62118838,4505820,03876099208
1694 | 62119128,4504959,27847899625
1695 | 62119765,4504865,12905599990
1696 | 62119899,4503841,30917198558
1697 | 62119954,4504919,13846496992
1698 | 62120101,4505953,07837399356
1699 | 62120108,4505050,29864397199
1700 | 62121450,4505917,09829598539
1701 | 62121688,4505747,02857097125
1702 | 62121986,4503790,19924596697
1703 | 62122406,4503991,19844298768
1704 | 62123194,4503685,29846797805
1705 | 62123386,4506215,06826397711
1706 | 62124130,4505320,15903649191
1707 | 62124953,4504973,24866398700
1708 | 62125171,4504656,20826496704
1709 | 62125218,4505322,18865096522
1710 | 62125440,4506014,01907299631
1711 | 62125582,4506349,08814497330
1712 | 62125677,4503694,22875597519
1713 | 62126504,4505398,02827397299
1714 | 62126790,4506379,06825299198
1715 | 62127340,4505573,09875598152
1716 | 62127393,4504775,22916597979
1717 | 62127405,4505155,10844895947
1718 | 62128025,4505616,06848099382
1719 | 62128083,4505457,09835898145
1720 | 62128353,4505275,12857995587
1721 | 62128790,4505334,10846497930
1722 | 62128827,4505659,08916095784
1723 | 62129381,4504715,29900399519
1724 | 62129439,4504917,19907896997
1725 | 62129986,4504502,26836296787
1726 | 62130281,4505622,09920199949
1727 | 62130393,4504177,26819399920
1728 | 62130425,4506313,08906098912
1729 | 62130554,4505198,17909098505
1730 | 62131032,4506250,05848899390
1731 | 62131067,4505117,10925898495
1732 | 62131485,4504642,15919299948
1733 | 62131982,4504325,11927699747
1734 | 62132357,4504929,23876698714
1735 | 62132616,4503725,15915696942
1736 | 62132714,4505223,11814996397
1737 | 62133573,4505532,06865098756
1738 | 62133859,4505510,02816696197
1739 | 62133961,4505862,07849799619
1740 | 62134018,4504484,30847397809
1741 | 62134029,4505378,28913749504
1742 | 62134089,4504498,27834896856
1743 | 62135033,4504539,25817095537
1744 | 62137055,4504939,29846298957
1745 | 62137394,4503759,10895898991
1746 | 62137399,4504339,29842849134
1747 | 62137451,4503883,15914298951
1748 | 62137980,4504753,17886998732
1749 | 62138818,4504815,30905098167
1750 | 62138863,4505618,05894898706
1751 | 62138987,4504362,54866901190
1752 | 62139303,4505738,09837897146
1753 | 62139348,4505521,06876798539
1754 | 62140546,4504943,28874199119
1755 | 62140622,4505007,64907201161
1756 | 62140740,4505371,27817399660
1757 | 62141106,4505125,13896798906
1758 | 62141147,4505461,06855997345
1759 | 62141198,4505909,06817495174
1760 | 62141486,4505906,30914098129
1761 | 62141619,4505535,07905198542
1762 | 62141689,4503705,29857695982
1763 | 62142458,4505174,13909599347
1764 | 62142981,4505102,23897099500
1765 | 62143002,4506188,01898599503
1766 | 62143530,4504113,21825699551
1767 | 62144487,4505020,26886598881
1768 | 62145214,4504171,11927299501
1769 | 62145442,4505058,11826598370
1770 | 62145778,4505908,03836999125
1771 | 62145814,4506290,08894797151
1772 | 62146469,4505143,24855097350
1773 | 62146514,4504760,14816899649
1774 | 62146674,4505601,03816299119
1775 | 62147404,4505933,05897097011
1776 | 62148431,4505364,19876795984
1777 | 62149513,4505845,05876394776
1778 | 62149694,4505328,10826397859
1779 | 62150011,4505279,16872648724
1780 | 62150335,4504993,14928095402
1781 | 62150554,4504952,11868099943
1782 | 62150591,4504661,18875498688
1783 | 62217854,4505726,03837298929
1784 | 62217967,4504359,18840097990
1785 | 62218505,4503911,17915097456
1786 | 62218762,4503936,19889999074
1787 | 62219071,4505122,10823849503
1788 | 62219529,4506108,06846997383
1789 | 62220087,4503721,23929798546
1790 | 62220208,4505437,09816699379
1791 | 62220867,4505465,08888399535
1792 | 62221100,4504869,12857698671
1793 | 62221273,4505103,21829199227
1794 | 62221696,4505495,07886598798
1795 | 62222350,4505623,06852849175
1796 | 62222537,4504407,22916398216
1797 | 62222853,4504550,23836597192
1798 | 62223130,4504859,31852748721
1799 | 62223197,4505167,25858974936
1800 | 62223418,4504222,13846498146
1801 | 62223854,4504347,20895298795
1802 | 62224224,4505238,28927198489
1803 | 62224406,4505525,03865898362
1804 | 62224812,4504338,27866196503
1805 | 62224948,4504994,27921948676
1806 | 62225497,4505784,08846496735
1807 | 62225804,4504142,26866397561
1808 | 62225992,4504628,29874996996
1809 | 62226517,4504774,29917797216
1810 | 62226915,4504606,19828198931
1811 | 62227451,4503793,21927898532
1812 | 62227668,4504765,30838897912
1813 | 62228569,4505205,30868896937
1814 | 62228755,4504168,30868899731
1815 | 62228934,4503912,14863649235
1816 | 62229201,4504282,30836497720
1817 | 62229260,4505154,16885598106
1818 | 62229500,4504009,30907598884
1819 | 62229666,4506317,06847596625
1820 | 62229856,4504159,16858198066
1821 | 62230012,4504968,23884799139
1822 | 62230148,4505887,02855896756
1823 | 62230411,4505277,12877498962
1824 | 62230593,4506283,09896998053
1825 | 62230727,4506091,02875296135
1826 | 62230778,4506229,08812647998
1827 | 62231231,4505529,02896798300
1828 | 62231338,4503709,23889899433
1829 | 62232255,4504957,21908198988
1830 | 62232503,4505524,06828499619
1831 | 62232773,4504857,11894398584
1832 | 62232780,4505930,05815598166
1833 | 62232916,4503891,28847499933
1834 | 62233562,4503819,11874898408
1835 | 62233583,4504413,14856299350
1836 | 62233704,4504604,17869597627
1837 | 62233741,4505038,23837296536
1838 | 62234103,4503808,12895797489
1839 | 62234224,4504357,30928999145
1840 | 62234501,4505023,21857497535
1841 | 62234737,4504532,21811399172
1842 | 62234886,4505212,28865896389
1843 | 62234893,4503938,30837295625
1844 | 62235129,4504395,31885195566
1845 | 62235214,4505144,14889396793
1846 | 62235968,4505678,06836898328
1847 | 62235969,4504211,25818199689
1848 | 62236601,4505126,23866299706
1849 | 62236769,4505811,06858298782
1850 | 62237035,4505189,26826099398
1851 | 62237284,4503895,28869199321
1852 | 62237415,4503904,13907299761
1853 | 62237933,4505757,08895995100
1854 | 62238087,4503817,17815599594
1855 | 62238771,4505394,15848599147
1856 | 62238912,4503682,18828297887
1857 | 62239118,4503668,20836298692
1858 | 62240169,4503744,12868497783
1859 | 62240302,4504291,21897499263
1860 | 62241100,4505984,04896196958
1861 | 62241424,4503886,12836597425
1862 | 62242576,4505203,29909497149
1863 | 62242603,4505721,02847098352
1864 | 62242709,4506127,04815797103
1865 | 62242748,4504128,21828399311
1866 | 62242818,4503712,13825099705
1867 | 62243039,4505466,08918197681
1868 | 62243495,4504012,25838699815
1869 | 62243713,4504046,14828599047
1870 | 62244064,4503824,15903049348
1871 | 62244987,4506269,06877599742
1872 | 62245083,4504793,26817398676
1873 | 62245337,4503775,17827296430
1874 | 62245664,4506210,05886597926
1875 | 62245938,4505759,08924699311
1876 | 62246107,4504420,28879099996
1877 | 62246680,4504191,29905998771
1878 | 62246714,4504799,52916300220
1879 | 62247321,4505612,02845797377
1880 | 62247385,4504676,31814198998
1881 | 62247796,4504714,12856698139
1882 | 62248009,4505863,04916699412
1883 | 62248229,4504566,20843749381
1884 | 62248381,4505190,15885797153
1885 | 62248637,4504242,70847100131
1886 | 62249086,4503770,16835197984
1887 | 62290770,4504704,13828299993
1888 | 62290841,4505949,06906699158
1889 | 62291197,4505527,03864799298
1890 | 62292637,4505019,23824297517
1891 | 62292849,4505879,04896496153
1892 | 62292995,4506309,02876897205
1893 | 62293079,4505587,04836299057
1894 | 62293175,4505955,06835398305
1895 | 62293772,4503781,14894898314
1896 | 62293979,4505482,01917899637
1897 | 62294094,4505270,15835797284
1898 | 62294137,4504819,21818398619
1899 | 62294286,4504590,24877299925
1900 | 62294288,4504397,21863449186
1901 | 62295071,4505445,08875998944
1902 | 62295165,4505115,30856797925
1903 | 62295174,4505374,23862949382
1904 | 62295491,4505332,19926797126
1905 | 62295697,4504277,24867198020
1906 | 62296032,4504333,22856599659
1907 | 62296098,4503686,23848897191
1908 | 62296422,4505874,09876899512
1909 | 62297424,4504673,20819199389
1910 | 62297620,4505885,03817799808
1911 | 62298107,4504274,23857997689
1912 | 62298344,4504756,13827697928
1913 | 62298657,4504804,31875998822
1914 | 62300147,4505263,10817697769
1915 | 62300201,4503915,29816397357
1916 | 62300401,4505975,04836896187
1917 | 62300655,4505051,14837499683
1918 | 62300849,4506322,01855999109
1919 | 62300994,4504514,16864298579
1920 | 62301714,4503727,31888997418
1921 | 62301890,4505607,28836398191
1922 | 62301907,4505306,19866898114
1923 | 62302054,4506153,04916197921
1924 | 62302168,4504090,10854399964
1925 | 62302358,4505980,07847099989
1926 | 62302397,4503766,29876996438
1927 | 62302628,4505005,30918697787
1928 | 62303135,4503984,23895296791
1929 | 62303615,4504419,23865198973
1930 | 62303646,4506244,08907197744
1931 | 62304221,4505044,12925999197
1932 | 62304386,4504204,21906599799
1933 | 62304469,4504574,25918597932
1934 | 62304491,4504937,31888498489
1935 | 62304837,4504264,30816096126
1936 | 62305107,4503954,28866196704
1937 | 62305784,4503796,27906499520
1938 | 62305807,4505567,06917899612
1939 | 62307115,4503861,21895797925
1940 | 62307122,4504288,24864899532
1941 | 62307212,4503867,26876997990
1942 | 62307579,4506261,01826197532
1943 | 62308117,4505580,06917699257
1944 | 62308118,4505998,08817798919
1945 | 62308333,4504490,29916298763
1946 | 62308354,4505018,11916999943
1947 | 62308395,4504523,21876498119
1948 | 62308453,4504616,13847795403
1949 | 62308476,4504170,25886394546
1950 | 62310997,4506213,09845496312
1951 | 62311030,4504162,17877195414
1952 | 62311075,4504967,27912849991
1953 | 62311361,4505408,09898099501
1954 | 62311481,4505438,09897398823
1955 | 62311932,4504861,27886298515
1956 | 62312364,4505708,01837498720
1957 | 62312541,4504180,28822549162
1958 | 62312775,4504304,10837696289
1959 | 62313012,4505302,28906999120
1960 | 62313213,4504176,13845699105
1961 | 62314025,4504519,27898498684
1962 | 62314453,4504817,23927899566
1963 | 62314734,4505054,22915396368
1964 | 62314954,4505101,12906897960
1965 | 62315358,4505342,16925797867
1966 | 62316079,4504303,17855697998
1967 | 62316200,4503658,10839499693
1968 | 62316466,4505368,30836398927
1969 | 62316532,4505832,06886498738
1970 | 62317082,4505112,29858597577
1971 | 62317127,4504228,17828998153
1972 | 62317141,4503719,26889298560
1973 | 62317264,4503674,51825700793
1974 | 62317346,4505081,28876998329
1975 | 62317493,4503826,15898799996
1976 | 62317821,4504880,17856398595
1977 | 62318423,4503699,29857196358
1978 | 62318641,4503782,30838799740
1979 | 62318872,4504702,18875894710
1980 | 62318896,4505968,06867196712
1981 | 62319021,4506042,09908699707
1982 | 62319537,4504619,17827296864
1983 | 62320145,4505498,06886597531
1984 | 62320788,4505389,24925998423
1985 | 62334705,4506154,09916998586
1986 | 62335277,4505128,20828298578
1987 | 62335683,4505253,20835496776
1988 | 62335943,4503820,29895598184
1989 | 62336028,4505296,12917097931
1990 | 62336029,4505505,09866198540
1991 | 62336322,4505413,07906598110
1992 | 62336756,4505798,06825497119
1993 | 62336816,4504735,16857595398
1994 | 62337876,4503913,26917097797
1995 | 62337952,4503836,24906699989
1996 | 62338173,4505755,02905298316
1997 | 62339018,4506059,05873649374
1998 | 62339107,4503762,30879499867
1999 | 62339187,4503294,10856799056
2000 | 62339351,4504971,17898199282
2001 | 62339513,4503926,19919197962
2002 | 62339631,4504503,15868297678
2003 | 62339880,4505539,03834798505
2004 | 62340108,4504643,26907099384
2005 | 62340575,4502561,20818299452
2006 | 62340599,4504464,18906195948
2007 | 62341137,4504728,23875599135
2008 | 62341247,4505786,05897296855
2009 | 62345077,4506220,06857098984
2010 | 62345260,4503783,17829497565
2011 | 62345558,4505927,02824997481
2012 | 62345707,4506026,05856298959
2013 | 62346096,4504374,14857396929
2014 | 62346105,4505188,24929599175
2015 | 62346248,4505460,06827296773
2016 | 62347455,4504997,13847896560
2017 | 62348088,4505762,07874899407
2018 | 62348476,4505430,07846997150
2019 | 62348603,4505699,02817499816
2020 | 62348788,4506001,09847698230
2021 | 62349471,4506221,08925897532
2022 | 62349826,4506273,04868298885
2023 | 62349955,4504394,19843048512
2024 | 62350095,4503925,27818696170
2025 | 62350692,4505515,06878798595
2026 | 62350790,4505316,21865699783
2027 | 62350810,4504058,16896699362
2028 | 62351257,4505636,03866395925
2029 | 62351258,4503743,24833747912
2030 | 62351753,4503863,19869097953
2031 | 62352021,4505921,09877599911
2032 | 62352186,4504592,21825698172
2033 | 62352289,4504667,18810198806
2034 | 62352627,4505483,08838999914
2035 | 62352978,4504839,31908399431
2036 | 62353433,4505469,03915498972
2037 | 62353984,4504217,16919599697
2038 | 62354004,4504385,14877199267
2039 | 62354724,4504348,11889596203
2040 | 62355383,4505208,16898097564
2041 | 62356151,4506089,09823649603
2042 | 62359434,4505583,07836097879
2043 | 62359834,4503733,26836097539
2044 | 62360459,4504060,24904198982
2045 | 62360621,4506214,06825198707
2046 | 62361947,4504870,24876895214
2047 | 62362315,4504827,16875397552
2048 | 62362499,4505080,12918198855
2049 | 62362632,4504254,18845895291
2050 | 62362729,4504809,20845196975
2051 | 62362791,4505356,30874299703
2052 | 62364314,4505016,10924199062
2053 | 62364564,4505094,26813248114
2054 | 62364690,4505939,03877898309
2055 | 62364787,4505649,03817297993
2056 | 62365150,4504637,17866095809
2057 | 62365763,4506121,08904896730
2058 | 62366243,4503735,22846997621
2059 | 62366727,4506216,09926397181
2060 | 62367323,4504321,46906601567
2061 | 62367856,4505132,11827098657
2062 | 62367876,4504985,14884896909
2063 | 62368836,4504805,19859098919
2064 | 62368838,4505923,06885398799
2065 | 62369045,4505801,05906999929
2066 | 62370153,4506231,02877899759
2067 | 62370281,4504465,14894498774
2068 | 62370433,4504933,17826299711
2069 | 62370675,4504639,14917298573
2070 | 62370937,4505946,06816998954
2071 | 62371017,4505767,09897098366
2072 | 62371439,4504990,17909298385
2073 | 62371610,4505141,26817196038
2074 | 62371832,4504110,30894199349
2075 | 62371835,4504903,10917098919
2076 | 62371858,4503736,16914198708
2077 | 62372085,4504302,11913748796
2078 | 62372276,4505788,02915497988
2079 | 62372347,4503701,20832948188
2080 | 62372680,4504231,21898699142
2081 | 62372800,4504182,12909699752
2082 | 62372832,4504537,18819698925
2083 | 62373281,4505858,07918998645
2084 | 62373746,4505715,06875897304
2085 | 62374310,4505339,21814498112
2086 | 62374668,4505114,16895295187
2087 | 62374698,4505284,27846699584
2088 | 62374731,4503711,22865297142
2089 | 62375722,4506144,05859097784
2090 | 62376368,4504560,18909599403
2091 | 62377039,4506325,02895098194
2092 | 62377349,4504886,19856597701
2093 | 62377494,4505849,04827794940
2094 | 62377801,4506055,03857998188
2095 | 62379495,4504076,18836198502
2096 | 62380305,4506122,08834598125
2097 | 62380919,4503811,19895497137
2098 | 62381095,4505355,17903948914
2099 | 62381319,4504768,22912649117
2100 | 62381501,4503884,25876499897
2101 | 62381909,4504769,18825898197
2102 | 62382047,4505247,22886798958
2103 | 62382523,4504719,29858899964
2104 | 62382565,4502693,13814499841
2105 | 62382971,4505771,09925199718
2106 | 62383017,4505349,21878398588
2107 | 62383271,4505026,28815497149
2108 | 62383305,4506008,07867295717
2109 | 62383401,4504737,29924099710
2110 | 62385652,4506044,04837698850
2111 | 62385897,4505716,09913848990
2112 | 62386151,4504071,21855596706
2113 | 62386942,4504114,24827299975
2114 | 62387314,4504350,15916895280
2115 | 62389096,4505644,04836896349
2116 | 62389611,4504119,16859198175
2117 | 62389918,4506141,06902948714
2118 | 62390372,4506278,05814999086
2119 | 62391293,4505403,07867896354
2120 | 62391433,4503734,16877296370
2121 | 62391509,4503833,10919599087
2122 | 62391515,4504653,18869599162
2123 | 62392056,4503916,13813449719
2124 | 62392166,4505509,08917195642
2125 | 62392305,4505995,07926597226
2126 | 62392813,4505988,04856999306
2127 | 62394241,4504767,25905896531
2128 | 62394243,4505900,04878799300
2129 | 62394412,4505470,06859799750
2130 | 62394519,4504568,13835495757
2131 | 62394745,4504871,12886298569
2132 | 62395017,4504187,13905497140
2133 | 62395218,4505415,06879798947
2134 | 62395943,4505261,12928499187
2135 | 62396320,4503880,14829498694
2136 | 62397438,4506119,09810199153
2137 | 62397958,4504977,14875498712
2138 | 62398047,4504452,28868499437
2139 | 62398162,4505467,05876799555
2140 | 62398217,4505298,20814298575
2141 | 62398253,4505136,18875999385
2142 | 62398450,4504634,20834197317
2143 | 62398629,4504366,29876199538
2144 | 62398834,4505478,06818199242
2145 | 62399344,4505361,29873849647
2146 | 62399352,4504682,14819499579
2147 | 62399710,4503859,30907195097
2148 | 62399716,4505382,30928498790
2149 | 62399840,4505194,19928899961
2150 | 62399898,4502159,27916498808
2151 | 62400703,4506370,06836599320
2152 | 62401365,4504599,13826097641
2153 | 62401592,4504280,23918599975
2154 | 62401994,4505471,07845897101
2155 | 62402027,4504972,18875097144
2156 | 62402522,4505810,02834398764
2157 | 62403429,4503963,29904799171
2158 | 62403803,4505668,06826197518
2159 | 62404292,4503852,12847495330
2160 | 62405086,4504630,29843148938
2161 | 62405452,4506331,09876899199
2162 | 62405617,4503909,21847897942
2163 | 62405728,4506093,03869197989
2164 | 62405937,4501634,29878599134
2165 | 62406092,4504504,11886999501
2166 | 62406368,4506140,08918698621
2167 | 62406740,4506125,03890097994
2168 | 62406786,4504961,13865798584
2169 | 62407891,4506330,02847799415
2170 | 62408183,4506164,06926298028
2171 | 62408396,4505254,12916896652
2172 | 62408542,4505891,09907297966
2173 | 62408978,4503726,27834597778
2174 | 62409418,4505259,12869798124
2175 | 62410266,4504353,12845997118
2176 | 62410319,4503707,13876898513
2177 | 62410416,4504341,21873349317
2178 | 62411347,4506268,01829998781
2179 | 62411491,4505785,07877299133
2180 | 62411522,4501680,24916798500
2181 | 62413001,4504131,19836298643
2182 | 62413901,4505703,07856694555
2183 | 62414050,4506032,01858699726
2184 | 62414066,4504467,11828897162
2185 | 62414610,4505375,15886397884
2186 | 62414698,4505642,08888897780
2187 | 62415311,4505002,11825799178
2188 | 62415641,4506132,04896697574
2189 | 62416215,4504845,30899299643
2190 | 62416874,4504863,22855798364
2191 | 62416897,4503970,21878299946
2192 | 62417460,4505826,07926297516
2193 | 62419071,4506179,01875997854
2194 | 62419711,4505331,16826998672
2195 | 62420514,4503708,13838199962
2196 | 62420835,4504663,14877599583
2197 | 62421070,4505871,09879399774
2198 | 62421821,4506279,01894497498
2199 | 62421953,4506135,08817697004
2200 | 62422068,4505752,04916398323
2201 | 62422583,4504227,26853747970
2202 | 62423442,4505168,12827096332
2203 | 62424303,4504206,21902749532
2204 | 62424484,4504962,17846699341
2205 | 62424547,4504589,28909497371
2206 | 62424677,4503816,15884099371
2207 | 62424724,4504790,10928197307
2208 | 62425427,4502235,28904298516
2209 | 62425805,4505310,14912949339
2210 | 62425893,4504547,12858298383
2211 | 62425957,4504021,27838797984
2212 | 62426000,4505766,08845098744
2213 | 62427136,4505118,27909197703
2214 | 62427393,4504835,11914897531
2215 | 62427457,4505242,22895397729
2216 | 62427564,4505281,23857399765
2217 | 62428225,4506285,09816499760
2218 | 62428325,4506170,01846099774
2219 | 62428343,4505986,02816295915
2220 | 62428858,4504792,17838899501
2221 | 62429506,4504770,30877799197
2222 | 62429903,4503756,20848798542
2223 | 62430725,4503774,24863949188
2224 | 62431048,4503998,25889099626
2225 | 62431258,4505576,05865894742
2226 | 62431263,4504934,10897197109
2227 | 62431704,4506315,06868197100
2228 | 62432216,4505904,07895196422
2229 | 62432291,4504829,30888397635
2230 | 62433673,4504039,18845797958
2231 | 62434038,4505812,02896499303
2232 | 62434253,4504344,13835299737
2233 | 62434525,4504918,10825196914
2234 | 62435894,4503813,22867096535
2235 | 62436163,4503889,10822948117
2236 | 62437048,4505973,03834798343
2237 | 62437118,4506156,03908798758
2238 | 62437130,4505704,09815397972
2239 | 62437908,4505651,04830199743
2240 | 62438147,4503676,18926696978
2241 | 62438418,4505217,29837597992
2242 | 62438973,4505541,01887098111
2243 | 62439435,4504981,13906097529
2244 | 62439767,4504999,12828798721
2245 | 62439852,4504553,28908099461
2246 | 62439953,4503695,19880299428
2247 | 62440542,4506294,02892549136
2248 | 62440600,4505092,25854796928
2249 | 62440799,4505864,01901698186
2250 | 62440965,4502511,02886095247
2251 | 62441459,4504020,15815899730
2252 | 62441752,4504895,19854699191
2253 | 62441852,4504249,23923848584
2254 | 62442416,4506248,08847897601
2255 | 62443206,4503870,15886098968
2256 | 62444013,4504554,13857498245
2257 | 62444258,4503799,10926797366
2258 | 62444488,4503851,20926796039
2259 | 62445181,4504451,11868097770
2260 | 62446298,4504907,20895998045
2261 | 62446536,4506143,03855795980
2262 | 62446581,4506245,03859199738
2263 | 62447034,4504764,13857397783
2264 | 62447102,4505282,17838298389
2265 | 62447195,4505082,29834999135
2266 | 62448230,4505463,03886594568
2267 | 62448789,4503832,11847196728
2268 | 62449373,4505124,12857498478
2269 | 62450528,4505140,23928799069
2270 | 62450680,4505357,26853949328
2271 | 62450701,4504273,18842749375
2272 | 62450994,4504048,16909098142
2273 | 62451196,4506098,04824798554
2274 | 62451288,4506183,03835695718
2275 | 62452612,4504605,23913149785
2276 | 62452613,4504197,18866498101
2277 | 62453466,4506201,03850099501
2278 | 62453476,4506046,09889799576
2279 | 62455288,4505517,06923148785
2280 | 62455847,4504036,26886596366
2281 | 62456096,4504872,17919297158
2282 | 62456512,4504208,13876498701
2283 | 62457070,4505617,09824698942
2284 | 62457157,4504510,15875497534
2285 | 62457711,4505033,13825997843
2286 | 62457865,4503659,31923649924
2287 | 62458026,4505985,02822649389
2288 | 62458092,4504638,18925499974
2289 | 62458888,4504165,15859196982
2290 | 62459436,4504905,31856299719
2291 | 62459705,4505221,30876998579
2292 | 62459857,4505266,24829197223
2293 | 62460122,4505536,05836898984
2294 | 62461278,4503692,18863249399
2295 | 62461921,4504559,27852549365
2296 | 62462505,4505796,02875096950
2297 | 62463337,4504306,26869799954
2298 | 62463907,4505831,09905599701
2299 | 62463925,4504816,28862848391
2300 | 62464026,4506150,04914797123
2301 | 62464611,4506145,04849799520
2302 | 62464927,4506056,07875499542
2303 | 62465768,4504026,28894699517
2304 | 62466604,4504093,27906898972
2305 | 62467329,4506195,01835199343
2306 | 62467624,4506180,02825798938
2307 | 62467860,4506203,01868396454
2308 | 62468232,4505915,08818296941
2309 | 62469050,4503979,27835498307
2310 | 62470373,4504970,19878298902
2311 | 62470556,4505170,19896895128
2312 | 62471384,4505681,07877999755
2313 | 62472501,4505804,04896399956
2314 | 62472823,4504043,22918197285
2315 | 62473314,4503986,30929498476
2316 | 62473538,4505922,08875997727
2317 | 62473985,4506227,08896399579
2318 | 62474690,4505175,26879198207
2319 | 62474862,4506375,07836298785
2320 | 62475202,4505538,04828099324
2321 | 62475936,4505993,04844898121
2322 | 62476218,4503665,12905198538
2323 | 62476846,4506342,03842849763
2324 | 62477629,4504636,27815095982
2325 | 62478406,4503865,15929599648
2326 | 62478539,4504563,30885298504
2327 | 62479479,4504202,15877299721
2328 | 62479724,4504983,10896897530
2329 | 62480156,4505354,14896997336
2330 | 62480186,4504403,13826094685
2331 | 62480800,4505048,22837598722
2332 | 62481291,4505049,31929299690
2333 | 62481623,4505570,02916597765
2334 | 62481899,4503678,29907098689
2335 | 62482599,4506194,09906396731
2336 | 62482885,4504571,11865995581
2337 | 62483411,4504381,10886196216
2338 | 62485986,4504424,22829398757
2339 | 62486707,4504022,28918898877
2340 | 62486828,4504841,20822949739
2341 | 62487716,4505493,09872548316
2342 | 62488200,4504489,15859997551
2343 | 62488588,4504298,10919674348
2344 | 62489298,4504328,26846098150
2345 | 62489388,4505226,21899799353
2346 | 62489619,4505464,03908399144
2347 | 62490290,4505999,08908399553
2348 | 62491312,4504608,31834198382
2349 | 62491480,4506023,02919698201
2350 | 62491496,4505799,08916198257
2351 | 62491579,4504707,11876697043
2352 | 62491996,4505624,02896796561
2353 | 62492222,4503814,66836301588
2354 | 62492515,4504834,13898499450
2355 | 62493213,4505519,08885598960
2356 | 62493346,4503755,22907599322
2357 | 62493752,4505739,07857997926
2358 | 62494916,4506272,01897999559
2359 | 62494942,4505868,06856598940
2360 | 62495044,4504784,19907296396
2361 | 62495192,4506070,09905799581
2362 | 62495521,4503801,21903349910
2363 | 62496182,4504548,23925397261
2364 | 62496502,4505207,24879798910
2365 | 62496574,4504746,28827197728
2366 | 62497091,4505211,13877097700
2367 | 62497558,4505625,08838599940
2368 | 62498101,4504818,27844598128
2369 | 62498311,4505314,10824997484
2370 | 62498499,4505459,02817096886
2371 | 62498782,4503956,22848196928
2372 | 62500183,4505446,01836896927
2373 | 62500319,4503946,20917896845
2374 | 62500329,4505011,15876798147
2375 | 62500515,4504562,19825298544
2376 | 62500999,4504976,26863449161
2377 | 62501136,4506087,07876295436
2378 | 62501180,4506292,04905096260
2379 | 62501221,4506045,04908799823
2380 | 62501444,4505732,08834598397
2381 | 62502503,4504778,12927997132
2382 | 62502872,4505183,25856898159
2383 | 62503132,4504332,20888697374
2384 | 62503383,4506118,03825098193
2385 | 62503602,4504401,12886899872
2386 | 62503743,4505883,07914299157
2387 | 62503990,4504196,20907294405
2388 | 62504460,4505604,09826099353
2389 | 62504524,4504450,15897297377
2390 | 62504897,4504564,23815497910
2391 | 62505047,4505241,11856799176
2392 | 62505103,4505246,29918999610
2393 | 62505826,4504868,13924699064
2394 | 62505851,4503924,30886995330
2395 | 62506202,4504155,29816896477
2396 | 62506468,4504318,12926198465
2397 | 62507122,4504898,29816798033
2398 | 62507786,4504069,17915996701
2399 | 62507849,4504102,27837597248
2400 | 62507860,4504205,44875801594
2401 | 62508030,4504823,25895397140
2402 | 62508314,4505839,06856695148
2403 | 62508623,4505043,31815094398
2404 | 62509169,4504747,24878597229
2405 | 62509296,4503967,53926000701
2406 | 62509297,4504456,68896700433
2407 | 62509740,4504387,26842748312
2408 | 62510627,4506335,04879199919
2409 | 62510771,4502530,12872549984
2410 | 62510930,4504411,20916298812
2411 | 62511047,4504956,11875298773
2412 | 62511778,4505062,15907498120
2413 | 62511789,4503797,29877096317
2414 | 62512255,4506232,03926297308
2415 | 62513241,4506233,09816196075
2416 | 62513368,4504330,26907099546
2417 | 62513903,4505344,17899998545
2418 | 62514057,4505294,13835496117
2419 | 62514478,4504922,12928298351
2420 | 62516180,4505926,06883849335
2421 | 62516494,4503839,26854998152
2422 | 62516941,4504221,25839997976
2423 | 62517109,4504164,14885796401
2424 | 62517433,4505854,06822948594
2425 | 62517545,4504877,17895099368
2426 | 62517794,4504103,16866396969
2427 | 62517801,4504068,18846099103
2428 | 62518901,4505030,15916299378
2429 | 62520079,4504019,24835699206
2430 | 62520256,4506126,04828198551
2431 | 62520372,4506264,06928997136
2432 | 62520777,4505257,12816999187
2433 | 62520912,4504496,23856598713
2434 | 62521210,4505346,29857299688
2435 | 62522204,4504141,26815796925
2436 | 62522676,4502012,11818498154
2437 | 62523138,4504446,21886195947
2438 | 62523661,4504900,26836799142
2439 | 62524646,4503876,46855501368
2440 | 62525011,4506072,06907397031
2441 | 62525327,4506092,03917296552
2442 | 62525586,4503723,27926997675
2443 | 62525664,4504150,20885799311
2444 | 62525666,4505987,06873149157
2445 | 62525746,4506057,04908098841
2446 | 62525914,4504195,12919999614
2447 | 62526165,4505297,24903949933
2448 | 62526181,4505543,08838499172
2449 | 62526562,4505765,08917596671
2450 | 62526938,4505705,01847399917
2451 | 62527119,4504687,29839898361
2452 | 62527186,4504644,18817099595
2453 | 62528182,4502129,21847296639
2454 | 62529117,4505300,23899097556
2455 | 62532061,4504650,30885799120
2456 | 62532207,4504290,30844098746
2457 | 62532818,4504509,11834999333
2458 | 62533988,4504094,16854998777
2459 | 62534683,4502097,29868298802
2460 | 62535289,4505392,16816299601
2461 | 62535961,4503748,19918999992
2462 | 62536455,4504722,30915596564
2463 | 62536497,4505827,02867797818
2464 | 62536783,4503847,13865896160
2465 | 62538327,4503856,29837896132
2466 | 62538428,4503897,57868500125
2467 | 62538908,4505983,08837498008
2468 | 62540821,4505059,31928996975
2469 | 62541459,4504299,28867298764
2470 | 62541700,4504156,23886196032
2471 | 62542266,4504145,13925799518
2472 | 62542967,4505336,21810299719
2473 | 62543055,4503807,12852049748
2474 | 62543074,4504301,43816900175
2475 | 62544331,4503920,20834996570
2476 | 62544338,4503974,13907099649
2477 | 62544381,4506217,08887498068
2478 | 62544663,4504581,27815597120
2479 | 62544869,4505859,07922548921
2480 | 62545185,4504392,20906698472
2481 | 62546302,4504621,24843448905
2482 | 62546450,4505911,09925399598
2483 | 62547010,4503953,18916997996
2484 | 62547672,4505542,04917298845
2485 | 62547731,4506208,01907799030
2486 | 62547748,4504535,31889398305
2487 | 62548015,4504669,25857799707
2488 | 62548690,4503929,30868598219
2489 | 62550158,4506094,06908898271
2490 | 62550429,4504579,24918899290
2491 | 62550931,4505060,12879697814
2492 | 62551146,4505455,08847596784
2493 | 62551447,4505090,27897099557
2494 | 62551492,4505178,29844099167
2495 | 62551519,4504279,11895896758
2496 | 62552038,4506291,03896298940
2497 | 62552256,4504408,11897698783
2498 | 62553244,4506198,02913349302
2499 | 62553646,4505317,54865501199
2500 | 62554019,4505665,05816599069
2501 | 62554932,4504948,12855095724
2502 | 62555418,4504572,19888097239
2503 | 62555552,4504412,22927098877
2504 | 62556227,4506348,04847396534
2505 | 62556373,4503666,26877399752
2506 | 62556829,4504890,13828498708
2507 | 62557351,4504172,29867198006
2508 | 62557429,4504259,30849198617
2509 | 62558406,4505764,01848198443
2510 | 62559157,4505177,55907800341
2511 | 62559393,4503939,10825199123
2512 | 62559630,4505741,09849599736
2513 | 62559889,4505366,17907098559
2514 | 62561499,4503806,21899198716
2515 | 62561623,4504617,23899099214
2516 | 62563165,4505943,09875395588
2517 | 62564182,4504471,17857399579
2518 | 62564375,4505070,27855296344
2519 | 62564427,4504864,12857798692
2520 | 62564554,4506281,09886997512
2521 | 62564646,4506120,08859798269
2522 | 62564779,4504874,11907896570
2523 | 62565167,4505932,06828498906
2524 | 62565316,4504695,21825398977
2525 | 62565671,4503722,17895899305
2526 | 62565891,4505677,05835197540
2527 | 62566073,4506312,02898998722
2528 | 62566420,4504507,16845197540
2529 | 62567086,4504014,16836599563
2530 | 62567313,4503978,21868298143
2531 | 62567566,4504448,26875598510
2532 | 62569281,4505006,24926398446
2533 | 62569406,4504474,30815999394
2534 | 62569551,4504623,18895499885
2535 | 62570172,4503958,28895298788
2536 | 62570892,4503921,19897398713
2537 | 62571680,4503758,48846500238
2538 | 62571983,4505979,09856697328
2539 | 62574812,4505113,14855897912
2540 | 62576481,4504289,21848899396
2541 | 62576935,4503845,17825598448
2542 | 62578033,4503888,20813749573
2543 | 62578072,4505362,25923248709
2544 | 62578728,4503846,19892848753
2545 | 62578941,4503899,28836897120
2546 | 62579525,4504153,31926299959
2547 | 62579606,4504398,29916697196
2548 | 62580087,4504070,14826296314
2549 | 62580203,4504364,22904999907
2550 | 62580405,4503980,28838699903
2551 | 62580857,4503992,17885899749
2552 | 62581051,4503752,15899699650
2553 | 62581421,4505484,04824699165
2554 | 62582118,4504486,24817099943
2555 | 62582461,4505558,05917897672
2556 | 62582801,4505940,08827798313
2557 | 62583413,4505291,56907800119
2558 | 62584701,4504930,28837997099
2559 | 62584970,4503684,30848199644
2560 | 62586220,4504825,30918697353
2561 | 62586465,4504042,20839299037
2562 | 62586925,4504135,29907796351
2563 | 62586941,4505135,25886195721
2564 | 62587449,4505400,07876397972
2565 | 62587675,4504526,24899397629
2566 | 62587686,4505333,11856499113
2567 | 62588015,4505292,12867396355
2568 | 62588161,4505547,03816896672
2569 | 62588609,4504980,11865099020
2570 | 62588791,4503955,14817999183
2571 | 62589737,4503976,12858596597
2572 | 62590409,4504724,30818798624
2573 | 62590595,4506362,02886199018
2574 | 62590826,4503749,26887198593
2575 | 62591406,4505352,28827897320
2576 | 62591535,4505250,28814697314
2577 | 62591624,4506085,09845896124
2578 | 62592863,4505067,23816396700
2579 | 62593201,4503746,62866902734
2580 | 62593299,4503809,16896698811
2581 | 62593641,4503931,24827798319
2582 | 62594342,4504866,14895696995
2583 | 62595522,4505337,15869499134
2584 | 62596146,4504854,14836095155
2585 | 62596350,4505614,09894797433
2586 | 62597195,4503745,14826096897
2587 | 62597301,4505779,09923749591
2588 | 62597516,4504248,29846899837
2589 | 62598310,4503999,11825197666
2590 | 62598546,4505843,09854399915
2591 | 62598563,4504850,20819096997
2592 | 62598866,4505420,02896794984
2593 | 62599908,4503862,28877299467
2594 | 62600699,4504439,26909197340
2595 | 62600973,4504803,30917698542
2596 | 62601167,4506006,04902749921
2597 | 62601464,4505548,06825196615
2598 | 62601662,4505142,24823049745
2599 | 62603376,4504556,10897199381
2600 | 62603500,4504896,31929397862
2601 | 62605710,4503969,14908797974
2602 | 62606289,4506013,03845897327
2603 | 62606555,4505071,13868399540
2604 | 62607990,4504267,29869299462
2605 | 62608096,4506280,07846996448
2606 | 62608544,4506184,09819697261
2607 | 62608950,4504783,30836698718
2608 | 62608951,4505077,21889574752
2609 | 62609498,4504072,30816597338
2610 | 62611144,4505702,01885097371
2611 | 62611227,4504781,17858898889
2612 | 62611318,4504622,22845096922
2613 | 62611624,4505994,05905398263
2614 | 62612204,4503716,28894996937
2615 | 62612251,4505074,26866497310
2616 | 62612337,4505588,07896198038
2617 | 62612909,4505599,07836098077
2618 | 62613102,4505683,04866497996
2619 | 62613189,4503892,17887597499
2620 | 62613201,4502540,25919774900
2621 | 62613323,4505937,04836396788
2622 | 62613485,4505952,02878798387
2623 | 62615521,4505229,18878599043
2624 | 62615626,4505373,27816397974
2625 | 62615916,4504875,14877298575
2626 | 62617080,4503669,24812549398
2627 | 62617717,4504010,25838199073
2628 | 62617768,4505053,29837896728
2629 | 62618297,4505722,06880698115
2630 | 62620609,4504427,22878697514
2631 | 62620972,4504107,29813148968
2632 | 62621093,4506316,09875398110
2633 | 62621291,4504928,25859299345
2634 | 62624604,4503985,20908699808
2635 | 62624869,4506246,04895099975
2636 | 62625329,4505627,01830198861
2637 | 62625713,4505774,09874798751
2638 | 62626240,4504268,12858497793
2639 | 62626843,4504594,29846897311
2640 | 62626844,4504324,19846499116
2641 | 62626867,4503962,10927698590
2642 | 62627823,4505753,01916396577
2643 | 62628102,4505411,06907299374
2644 | 62628115,4504358,54927000779
2645 | 62628164,4503988,15833447766
2646 | 62628575,4505797,09819898097
2647 | 62628677,4503786,28836699795
2648 | 62632293,4504430,10885498928
2649 | 62633132,4506359,06866797755
2650 | 62633520,4505179,13889497720
2651 | 62633721,4505878,06898799520
2652 | 62633989,4505876,03856996149
2653 | 62634461,4506310,01885599296
2654 | 62634883,4504024,19814196928
2655 | 62634911,4504295,12875799329
2656 | 62634965,4504633,15846597775
2657 | 62635735,4504139,14847296594
2658 | 62635763,4505206,22868798096
2659 | 62635777,4505561,09847099280
2660 | 62636030,4503932,28858897167
2661 | 62637162,4504576,17925595772
2662 | 62637728,4506239,01928499177
2663 | 62638377,4504421,10837198548
2664 | 62638453,4504241,21896294579
2665 | 62638816,4506066,06908497242
2666 | 62638917,4505807,01867697949
2667 | 62639650,4503996,14879699550
2668 | 62640199,4503825,26887799716
2669 | 62640527,4504720,13916297984
2670 | 62641532,4504166,13929499144
2671 | 62641612,4505327,22879899595
2672 | 62642292,4503831,25846496508
2673 | 62642352,4505272,11853847854
2674 | 62642722,4505422,06927797338
2675 | 62643328,4505928,05829098689
2676 | 62643669,4506178,06855398123
2677 | 62644466,4504944,22816695183
2678 | 62645511,4504998,31879498840
2679 | 62645864,4506151,02885296559
2680 | 62646405,4504677,17839599668
2681 | 62647569,4504008,16915799969
2682 | 62649737,4504718,17924696982
2683 | 62651152,4504154,20898398529
2684 | 62653224,4505028,21866997834
2685 | 62653368,4504226,54896101385
2686 | 62655214,4505824,07866197789
2687 | 62656213,4504194,29836498222
2688 | 62656563,4504837,27915897555
2689 | 62656716,4504016,19818699134
2690 | 62657331,4505473,05886299127
2691 | 62657906,4504307,25847198322
2692 | 62658502,4505149,29814897980
2693 | 62658793,4506099,08815599390
2694 | 62658903,4504620,23875899511
2695 | 62658956,4504425,26915599302
2696 | 62659427,4503800,11837299715
2697 | 62659798,4503703,31879199258
2698 | 62659844,4506075,03862649116
2699 | 62659955,4504223,21898398991
2700 | 62660301,4503900,22857896754
2701 | 62660346,4503866,14846799355
2702 | 62660886,4505225,24858699432
2703 | 62660938,4504112,19900199344
2704 | 62661256,4506117,01923349363
2705 | 62661535,4504629,16895096362
2706 | 62662528,4503902,19876895733
2707 | 62663220,4504569,14899499760
2708 | 62664035,4504028,29916997068
2709 | 62665760,4504610,12822949574
2710 | 62665935,4504855,18866896336
2711 | 62667417,4505321,20905895924
2712 | 62668076,4504210,16855399907
2713 | 62669111,4503828,21875997715
2714 | 62669631,4505173,22878999588
2715 | 62669816,4503778,31909698971
2716 | 62670401,4504286,21883348947
2717 | 62670843,4504561,27897095020
2718 | 62671101,4505311,28899498137
2719 | 62671723,4504201,27848698828
2720 | 62671894,4503878,17898299708
2721 | 62672458,4504234,15929097057
2722 | 62672466,4503785,25923248113
2723 | 62672522,4504723,13928499116
2724 | 62672623,4504810,19839197732
2725 | 62672820,4504200,20827899772
2726 | 62673356,4504346,14917797855
2727 | 62673952,4504500,22876995771
2728 | 62674399,4506148,04908798959
2729 | 62674614,4506212,01863547306
2730 | 62676026,4505656,01927498789
2731 | 62676070,4505252,19817598210
2732 | 62676217,4506225,07895797140
2733 | 62676713,4506364,08826699087
2734 | 62677189,4504849,13907499531
2735 | 62677845,4504356,23824596948
2736 | 62679513,4503850,24919999310
2737 | 62679899,4503763,21925996596
2738 | 62680609,4505256,30846098379
2739 | 62681254,4506028,06884599162
2740 | 62681454,4505754,04854299242
2741 | 62681789,4505003,22889499692
2742 | 62682342,4504699,21888096776
2743 | 62682497,4504739,22864898185
2744 | 62683162,4505347,14847298333
2745 | 62683507,4506224,06829698895
2746 | 62683665,4504207,28875798792
2747 | 62685188,4504312,15905797333
2748 | 62685220,4504140,16905398516
2749 | 62685464,4504991,12894899806
2750 | 62686500,4503540,04893548500
2751 | 62687298,4503810,28907797025
2752 | 62687663,4503877,30874597755
2753 | 62688750,4505196,26872549578
2754 | 62689346,4505073,24877998300
2755 | 62692777,4505472,08825796437
2756 | 62692879,4505819,06856898499
2757 | 62693099,4504573,54857400693
2758 | 62693919,4504678,14837597502
2759 | 62694967,4504812,10820899704
2760 | 62695267,4504216,23876797275
2761 | 62695783,4505412,02924398984
2762 | 62695938,4504188,17843846742
2763 | 62696172,4504591,31814398334
2764 | 62696327,4504006,11828096674
2765 | 62698379,4505304,28887296571
2766 | 62698412,4505386,21837398409
2767 | 62698895,4505096,13867999951
2768 | 62699439,4503661,22816796745
2769 | 62699837,4504355,16886999082
2770 | 62700292,4504891,24877098695
2771 | 62700643,4504269,28815598700
2772 | 62700970,4504372,17865997345
2773 | 62701032,4504004,15818398856
2774 | 62701053,4504271,31907496700
2775 | 62701115,4505222,14929199716
2776 | 62701479,4505014,23859297609
2777 | 62701768,4503784,10896997713
2778 | 62701806,4505706,23920099521
2779 | 62702019,4505390,19889098727
2780 | 62702171,4504544,19887797822
2781 | 62702385,4506142,04827398212
2782 | 62702470,4504921,10866798929
2783 | 62702491,4503751,30836198561
2784 | 62702595,4504615,12855497547
2785 | 62702765,4504779,11878398779
2786 | 62703024,4506266,09826298410
2787 | 62703174,4506186,06827096650
2788 | 62703611,4504062,20855496837
2789 | 62703872,4505108,17920198139
2790 | 62703941,4503698,29906699883
2791 | 62704185,4503704,15867096733
2792 | 62705136,4503989,15827498758
2793 | 62705215,4504082,24826097570
2794 | 62705284,4504431,12865699156
2795 | 62705467,4504924,62856900148
2796 | 62705732,4504597,20865597712
2797 | 62705785,4504996,25818397790
2798 | 62706306,4503966,11898099913
2799 | 62706466,4506155,07848399293
--------------------------------------------------------------------------------