├── sample.env ├── app ├── www │ ├── How_19andMe_Works.png │ ├── MathematicaLogo_White.png │ └── MathematicaLogo_White_smaller.png ├── app.js ├── google-analytics.html ├── style.css ├── server.R ├── global.R ├── ui.R ├── functions.R └── info_html.R ├── docker-compose.yml ├── HISTORY.md ├── Dockerfile ├── .gitignore ├── LICENSE ├── _deploy_buildspec.yaml ├── web.Dockerfile ├── README.md ├── aws-infrastructure └── codepipeline_setup_all_ecs_resources.yaml └── data └── county_pop.csv /sample.env: -------------------------------------------------------------------------------- 1 | PASSWORD=mystrongpassword -------------------------------------------------------------------------------- /app/www/How_19andMe_Works.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathematica-mpr/covid_risk_score/HEAD/app/www/How_19andMe_Works.png -------------------------------------------------------------------------------- /app/www/MathematicaLogo_White.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathematica-mpr/covid_risk_score/HEAD/app/www/MathematicaLogo_White.png -------------------------------------------------------------------------------- /app/www/MathematicaLogo_White_smaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathematica-mpr/covid_risk_score/HEAD/app/www/MathematicaLogo_White_smaller.png -------------------------------------------------------------------------------- /app/app.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | 3 | Shiny.addCustomMessageHandler('update_label', function(msg) { 4 | 5 | var selector = 'label[for=' + msg.id + ']'; 6 | $(selector).html(msg.html); 7 | 8 | }) 9 | 10 | }) -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | rstudio: 4 | environment: 5 | # - ADD=SHINY 6 | - PASSWORD=${PASSWORD} 7 | build: . 8 | volumes: 9 | - .:/home/rstudio 10 | - ~/.aws:/home/rstudio/.aws 11 | 12 | ports: 13 | - '8787:8787' # Rstudio 14 | - '8080:8080' 15 | #- '3838:3838' # Shiny -------------------------------------------------------------------------------- /HISTORY.md: -------------------------------------------------------------------------------- 1 | ## v0.3.0 2 | --------------------------------- 3 | * QA review with Fei and Kelsey 4 | * QA review by Matt Salganik 5 | 6 | ## v0.2.0 7 | ---------------------------------- 8 | * Deployed to shinyapps.io 9 | 10 | 11 | ## v0.1.0 12 | ----------------------------------- 13 | * Started the project! Woohoo! 14 | * Initial creation of each module 15 | -------------------------------------------------------------------------------- /app/google-analytics.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rocker/tidyverse:3.6.1 as base 2 | 3 | RUN apt-get update \ 4 | && apt-get install -y --no-install-recommends \ 5 | libxml2-dev \ 6 | libgit2-dev \ 7 | libpng-dev \ 8 | libudunits2-dev \ 9 | libgdal-dev \ 10 | ca-certificates 11 | 12 | RUN R -e "install.packages(c('rlang','shiny', 'shinythemes', 'shinyjs', 'shinycssloaders', 'shinyBS', 'tidycensus' , 'assertr', 'flexdashboard', 'httr', 'remotes'), repos='http://cran.rstudio.com/')" 13 | RUN R -e "install.packages('git2r', type='source', configure.vars='autobrew=yes')" 14 | RUN R -e "remotes::install_github('rstudio/renv')" 15 | RUN R -e "install.packages(c('aws.signature', 'aws.ec2metadata', 'aws.s3'), repos = c(cloudyr = 'http://cloudyr.github.io/drat', getOption('repos')))" 16 | 17 | COPY .Renviron .Renviron -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Environment variable file 2 | .env 3 | # History files 4 | .Rhistory 5 | .Rapp.history 6 | 7 | # Session Data files 8 | .RData 9 | 10 | # User-specific files 11 | .Ruserdata 12 | 13 | # Example code in package build process 14 | *-Ex.R 15 | 16 | # Output files from R CMD build 17 | /*.tar.gz 18 | 19 | # Output files from R CMD check 20 | /*.Rcheck/ 21 | 22 | # RStudio files 23 | .Rproj.user/ 24 | 25 | # produced vignettes 26 | vignettes/*.html 27 | vignettes/*.pdf 28 | 29 | # OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3 30 | .httr-oauth 31 | 32 | # knitr and R markdown default cache directories 33 | *_cache/ 34 | /cache/ 35 | 36 | # Temporary files created by R markdown 37 | *.utf8.md 38 | *.knit.md 39 | 40 | # R Environment Variables 41 | .Renviron 42 | 43 | # data 44 | /data/covid-19-data/ 45 | 46 | # 47 | .DS_Store 48 | rsconnect/ 49 | .env 50 | data/us-counties.csv 51 | .rstudio/ 52 | .bash_history 53 | doc/HUD_API_KEY.txt 54 | *.Rproj 55 | -------------------------------------------------------------------------------- /app/style.css: -------------------------------------------------------------------------------- 1 | .html-widget.gauge svg { 2 | height: auto; 3 | width: auto; 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | margin-bottom: auto; 8 | } 9 | 10 | #go{ 11 | display:block; 12 | } 13 | 14 | .irs-bar {background: #DF691A;} 15 | .irs-single {background: #DF691A;} 16 | .irs-bar-edge {background: #DF691A;} 17 | .irs-from {background: #DF691A;} 18 | .irs-to {background: #DF691A;} 19 | 20 | .btn-facebook { 21 | background: #428BCA; 22 | color: #FFFFFF; 23 | } 24 | 25 | .btn { 26 | border-radius: 6px; 27 | } 28 | 29 | .nav-pills>li.active>a, .nav-pills>li.active>a:hover, .nav-pills>li.active>a:focus{ 30 | border-radius: 6px; 31 | } 32 | 33 | .text-muted { 34 | color: #777; 35 | } 36 | 37 | .shiny-output-error-validation { 38 | color: #DC7633; 39 | font-weight: 400; 40 | font-size: 18px; 41 | 42 | } 43 | 44 | /*question text formatter in the input UI*/ 45 | .questiontext { 46 | font-size: 12px; 47 | display: inline-block; 48 | max-width: 100%; 49 | margin-bottom: 5px; 50 | font-weight: bold; 51 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Xindi Hu 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 | -------------------------------------------------------------------------------- /_deploy_buildspec.yaml: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | phases: 3 | install: 4 | runtime-versions: 5 | docker: 19 6 | pre_build: 7 | commands: 8 | - echo Logging in to Amazon ECR... 9 | - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email) 10 | - REPOSITORY_URI=${ContainerRepositoryName} 11 | - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7) 12 | - IMAGE_TAG=${COMMIT_HASH:=latest} 13 | build: 14 | commands: 15 | - echo Building the Docker image... 16 | - export apiKey=X_API_KEY 17 | - paramname=$(aws ssm get-parameter --name $apiKey --query "Parameter.Name" --output text) 18 | - paramvalue=$(aws ssm get-parameter --name $apiKey --query "Parameter.Value" --output text) 19 | - result=${paramname}=${paramvalue} 20 | - echo -n $result > .Renviron 21 | - docker build --build-arg AWS_ACCOUNT_ID=$BaseImageAccountId -f web.Dockerfile -t $REPOSITORY_URI:latest . 22 | - echo Tagging the Docker image... 23 | - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG 24 | 25 | post_build: 26 | commands: 27 | - echo Pushing the Docker images... 28 | - docker push $REPOSITORY_URI:$IMAGE_TAG 29 | - echo Writing image definitions file used during deployment to pick new tasks ... 30 | - printf '[{"name":"Shiny-Container","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json 31 | 32 | artifacts: 33 | files: imagedefinitions.json 34 | -------------------------------------------------------------------------------- /web.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG AWS_ACCOUNT_ID 2 | FROM ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/shiny-verse-base-image:4.1.0 3 | 4 | RUN apt-get update \ 5 | && apt-get install -y --no-install-recommends \ 6 | libxml2-dev \ 7 | libgit2-dev \ 8 | libpng-dev \ 9 | libudunits2-dev \ 10 | libgdal-dev \ 11 | ca-certificates \ 12 | libharfbuzz-dev\ 13 | libfribidi-dev\ 14 | libgit2-dev\ 15 | curl \ 16 | && R -e "install.packages(c('rlang','shiny', 'shinythemes', 'shinyjs', 'shinycssloaders', 'shinyBS', 'tidycensus' , 'assertr', 'flexdashboard', 'httr'), dependencies=TRUE, repos='https://cloud.r-project.org/')" \ 17 | && R -e "install.packages('git2r', type='source', configure.vars='autobrew=yes')" \ 18 | && R -e "install.packages(c('aws.signature', 'aws.ec2metadata', 'aws.s3'), repos = c(cloudyr = 'http://cloudyr.github.io/drat', getOption('repos')))" \ 19 | && rm -rf /tmp/downloaded_packages 20 | 21 | RUN printf 'run_as shiny;\n\ 22 | server {\n\ 23 | listen 3838;\n\ 24 | location / {\n\ 25 | app_dir /srv/shiny-server/covid_risk_score;\n\ 26 | log_dir /var/log/shiny-server;\n\ 27 | }\n\ 28 | }\n' > /etc/shiny-server/shiny-server.conf \ 29 | && rm -rf /srv/shiny-server/sample-apps 30 | 31 | 32 | 33 | COPY /app /srv/shiny-server/covid_risk_score 34 | COPY .Renviron /srv/shiny-server/covid_risk_score/.Renviron 35 | 36 | 37 | WORKDIR /root 38 | 39 | RUN printf '#!/bin/sh\n\ 40 | mkdir -p /var/log/shiny-server\n\ 41 | chown shiny.shiny /var/log/shiny-server\n\ 42 | if [ "$APPLICATION_LOGS_TO_STDOUT" != "false" ];\n\ 43 | then\n\ 44 | # push the "real" application logs to stdout with xtail in detached mode\n\ 45 | exec xtail /var/log/shiny-server/ &\n\ 46 | fi\n\ 47 | echo "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" > /home/shiny/.Renviron\n\ 48 | chown shiny:shiny /home/shiny/.Renviron\n\ 49 | # start shiny server\n\ 50 | exec shiny-server 2>&1\n' > start.sh \ 51 | && chmod +x start.sh 52 | 53 | RUN chown -R shiny:shiny /srv/shiny-server/covid_risk_score 54 | 55 | EXPOSE 3838 56 | 57 | CMD ["/root/start.sh"] 58 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 19andMe 2 | 3 | ## Introduction 4 | 19andMe is an interactive dashboard for users to calculate their individualized risk score of contracting COVID-19 and related adverse health outcomes. https://19andme.covid19.mathematica.org/ 5 | 6 | How 19andMe Works? 7 | 8 | 19andMe takes user input on where you live, who you are, and what you do in the pandemic, uses the best available science to provide a ballpark estimation on the how likely someone with similar characteristics like you may contract COVID-19, and if infected, how likely is the outcome going to be severe. Please see the "Methods" tab in the app for more details on our methodology. 9 | 10 | 19andme workflow 11 | 12 | ## Contents 13 | 14 | * app/ 15 | * R Scripts for different modules of the app 16 | * Google Analytics plug-in 17 | * CSS 18 | * www/ 19 | * Mathematica logo 20 | * How 19andMe works 21 | 22 | ## Authors 23 | * **Cindy Hu** - *product owner* 24 | * **Emma Pendl-Robinson** - *full-stack developer* 25 | * **Erin Lipman** - *back-end developer and data engineer* 26 | * **Jennifer Starling** - *validation lead* 27 | * **Margaret Luo** - *API support and technical consultant* 28 | * **Max Dulieu** - *API tech lead* 29 | 30 | ## Reviewers and Support 31 | * **George Luo** - *front-end developer* 32 | * **Arpan Bhattacharya, George Gallo** - *AWS architects* 33 | * **Aaron White** - *technical consultant* 34 | * **Sean Kirk** - *DevOps engineer* 35 | * **Kelsey Skvoretz, Fei Xing** - *QA reviewers* 36 | * **Matt Salganik** - *expert reviewer* 37 | 38 | ## Acknowledgements 39 | We appreciate additional support towards this project from Alex Bohl, Dave Peters, and Matt Gillingham. 40 | 41 | ## Contact info 42 | For more information, please contact Cindy Hu at CHu@mathematica-mpr.com or at covid.risk.score@gmail.com. 43 | 44 | # DockerShinyApp 45 | 46 | ## Installing 47 | This project is built to use Docker and docker-compose to make development easy across all machines and remove host machine configuration as a potential issue. Use `docker-compose` to get started quickly. You will need to install docker and docker-compose. 48 | 49 | * [Docker](https://docs.docker.com/install/) 50 | * [Docker Compose](https://docs.docker.com/compose/install/) 51 | 52 | Use docker-compose to build the image: 53 | ``` 54 | docker-compose build 55 | ``` 56 | 57 | Remember that docker images are immutable once built. Only changes to files in `/home/rstudio` will persist after restarts. 58 | 59 | ## Development 60 | To create an RStudio environment preloaded with all dependencies 61 | 1. Create a `.env` file that defines the desired RStudio password, e.g. 62 | ``` 63 | PASSWORD=mystrongpassword 64 | ``` 65 | There is an example [sample.env](sample.env) you can also use. Copy it and rename it to `.env`. 66 | 67 | 2. Email the [Mathematica Communications team](Communications@mathematica-mpr.com ) to get an x-api-key. We will use this to make POST requests for the covid-risk-score-api. Add X_API_KEY to your `.Renviron` file. 68 | 69 | 3. Start the environment 70 | `docker-compose up` 71 | 72 | 4. Visit `http://localhost:8787` and start hacking. 73 | 74 | 5. Keep shiny app code in `app.R`. Launch it for development with `shiny::runApp('app.R')`. 75 | 76 | ## Deployment 77 | Utilize the attached Dockerfile for a simple but efficient deployment setup. 78 | -------------------------------------------------------------------------------- /app/server.R: -------------------------------------------------------------------------------- 1 | # Define the server code 2 | server <- function(input, output, session) { 3 | # Sidebar Collapse --------------------------------------------------- 4 | observeEvent(input$next0, { 5 | updateCollapse(session, id = "collapse_main", open = "1. About You", close = "Introduction") 6 | }) 7 | observeEvent(input$next1, { 8 | updateCollapse(session, id = "collapse_main", open = "2. Your Health Status", 9 | close = "1. About You") 10 | }) 11 | observeEvent(input$next2, { 12 | updateCollapse(session, id = "collapse_main", open = "3. Your Behavior", 13 | close = "2. Your Health Status") 14 | }) 15 | observeEvent(input$next3, { 16 | updateCollapse(session, id = "collapse_main", open = "4. Your Vaccination Status", 17 | close = "3. Your Behavior") 18 | }) 19 | 20 | ## modify symptom, condition and vaccine selections -------------------------- 21 | observe({ 22 | if (!input$is_sick) { 23 | # clear the conditional panel's UI when unchecked 24 | updateCheckboxGroupInput(session, "symptoms", selected = character(0)) 25 | } 26 | if (!input$has_preexisting) { 27 | # clear the conditional panel's UI when unchecked 28 | updateCheckboxGroupInput(session, "conditions", selected = character(0)) 29 | } 30 | if (!input$has_vaccine) { 31 | # clear vaccine conditional input when collapsed 32 | updateRadioButtons(session, "vaccine", selected = character(0)) 33 | updateSelectInput(session, "months_last_vaccination", selected = character(0)) 34 | } 35 | }) 36 | 37 | # reactive values and lists -------------------------------------------------- 38 | get_risk_info <- reactive({ 39 | # hit the API 40 | # do not proceed if go was not clicked at all 41 | validate(need(input$go > 0, "")) 42 | validate(need((input$country == "us" & nchar(input$zip) >= 5) | (input$country == "be" & nchar(input$zip) >= 4), "")) 43 | api_return <- calculateRisk(input) 44 | 45 | if (is.null(api_return$message)) { 46 | api_out <- api_return$results 47 | 48 | # number of outputs 49 | n_out <- length(api_out) 50 | 51 | # if the length of output is more than one have user select one county 52 | if(n_out > 1 ){ 53 | output$select_county <- renderUI({ 54 | validate(need(is.null(input$ordinal_county), "")) 55 | tagList( 56 | tags$h4("There is more than one county that matches your 5-digit zip code."), 57 | tags$h4("Please choose a county:") 58 | )}) 59 | output$zipcontrol <- renderUI({ 60 | validate(need(is.null(input$ordinal_county), "")) 61 | list_opts <- as.character(1:length(api_out)) 62 | county_names<-sapply(api_out, `[`, "name") %>% as.character() 63 | radioButtons("ordinal_county", label = "Counties:", 64 | choiceNames = county_names, choiceValues = list_opts, selected = character(0)) 65 | }) 66 | 67 | # stop if county is not selected 68 | validate(need(!is.null(input$ordinal_county), "")) 69 | which_county<- as.numeric(input$ordinal_county) 70 | } else { 71 | # if there is only one output county, select the first output county 72 | which_county <- 1} 73 | one_county <- api_out[[which_county]] 74 | 75 | return (one_county) 76 | } else { 77 | return(api_return) 78 | } 79 | }) 80 | 81 | # output --------------------------------------------------------------------- 82 | 83 | ## disclaimer message dialogue ----------------------------------------------- 84 | disclaimer_message <- modalDialog( 85 | title = "Disclaimer", 86 | disclaimerpopupHTML() 87 | ) 88 | 89 | # Show the model on start up ... 90 | showModal(disclaimer_message) 91 | 92 | ## score output intro -------------------------------------------------------- 93 | output$output_intro <- renderUI({ 94 | risk<-get_risk_info() 95 | 96 | if (!is.null(risk$message)) { 97 | HTML(paste0(risk$message, collapse = "
")) 98 | } else { 99 | renderOutputIntroHtml() 100 | } 101 | }) 102 | 103 | ## render risk score gauge --------------------------------------------------- 104 | output$gauge <-renderGauge({ 105 | risk<-get_risk_info() 106 | if (is.null(risk$message)) { 107 | validate(need(!is.null(risk), "")) 108 | 109 | gauge(round(risk$risk_score), 110 | min = 0, max = 100, 111 | sectors = gaugeSectors(success = c(0, 30), 112 | warning = c(30, 70), 113 | danger = c(70, 100)), 114 | label = "") 115 | } 116 | }) 117 | 118 | ## render risk score UI --------------------------------------------------- 119 | output$score_info <-renderUI({ 120 | risk <- get_risk_info() 121 | # in app/results.R 122 | if (is.null(risk$message)) { 123 | renderScoreHtml(risk) 124 | } 125 | }) 126 | output$vaccines <-renderUI({ 127 | risk<-get_risk_info() 128 | # in app/results.R 129 | if (is.null(risk$message)) { 130 | renderVaccinesHtml(risk, input$has_vaccine, input$vaccine, input$months_last_vaccination) 131 | } 132 | }) 133 | output$res <-renderUI({ 134 | risk <- get_risk_info() 135 | # in app/results.R 136 | if (is.null(risk$message)) { 137 | renderResultsHtml(risk, input$symptoms, input$hand, input$ppe) 138 | } 139 | }) 140 | 141 | ## render methods page --------------------------------------------------- 142 | output$methods <-renderUI({ 143 | # in app/info_html.R 144 | renderMethodsHtml() 145 | }) 146 | 147 | ## render FAQ page --------------------------------------------------- 148 | output$faq <- renderUI({ 149 | # in app/info_html.R 150 | renderFaqHtml() 151 | }) 152 | 153 | ## render CHANGELOG page --------------------------------------------------- 154 | output$changelog <- renderUI({ 155 | # in app/info_html.R 156 | renderChangelogHtml() 157 | }) 158 | 159 | } -------------------------------------------------------------------------------- /app/global.R: -------------------------------------------------------------------------------- 1 | # libraries 2 | library(shiny) 3 | library(shinycssloaders) 4 | library(shinythemes) 5 | library(shinyBS) 6 | library(assertr) 7 | library(flexdashboard) 8 | library(httr) 9 | library(tidyverse) 10 | library(lubridate) 11 | 12 | # helper functions 13 | source("info_html.R") 14 | source("functions.R") 15 | 16 | 17 | # Global variables can go here 18 | 19 | # urls class to store our urls 20 | urls = list( 21 | # Mathematica COVID Score API 22 | covid_score_api = "https://us-api.covid19.mathematica.org/score", 23 | covid_score_api_dev = "https://awsdev.us-api.covid19.mathematica.org/score", 24 | covid_change_log_api = "https://us-api.covid19.mathematica.org/change-log", 25 | terms_of_use = "https://covid-risk-score-rshiny-code-artifacts.s3.amazonaws.com/COVID-19+Risk+Calculator+Terms+of+Use+-+042220.pdf", 26 | # CCDC 27 | ccdc_vol2_2020 = "https://www.unboundmedicine.com/medline/citation/32064853/[The_epidemiological_characteristics_of_an_outbreak_of_2019_novel_coronavirus_diseases__COVID_19__in_China]", 28 | # CDC 29 | cdc_get_ready = "https://www.cdc.gov/coronavirus/2019-ncov/daily-life-coping/get-your-household-ready-for-COVID-19.html", 30 | cdc_hand_hygiene = "https://www.cdc.gov/handwashing/when-how-handwashing.html", 31 | cdc_mm6909e1 = "https://www.cdc.gov/mmwr/volumes/69/wr/pdfs/mm6909e1-H.pdf", 32 | cdc_mm6913e2 = "https://www.cdc.gov/mmwr/volumes/69/wr/mm6913e2.htm", 33 | cdc_ppe = "https://www.cdc.gov/coronavirus/2019-ncov/prevent-getting-sick/cloth-face-cover-guidance.html", 34 | cdc_prevention = "https://www.cdc.gov/coronavirus/2019-ncov/prevent-getting-sick/prevention.html", 35 | cdc_symptoms = "https://www.cdc.gov/coronavirus/2019-ncov/symptoms-testing/symptoms.html", 36 | cdc_flu = "https://www.cdc.gov/flu/about/burden/index.html", 37 | cdc_medicalconditions = "https://www.cdc.gov/coronavirus/2019-ncov/need-extra-precautions/people-with-medical-conditions.html", 38 | cdc_test_info = "https://www.cdc.gov/coronavirus/2019-ncov/symptoms-testing/testing.html", 39 | cdc_vaccines = "https://www.cdc.gov/coronavirus/2019-ncov/vaccines/index.html", 40 | cdc_vaccinated_guidance = "https://www.cdc.gov/coronavirus/2019-ncov/vaccines/fully-vaccinated-guidance.html", 41 | cdc_case_surv = "https://data.cdc.gov/Case-Surveillance/COVID-19-Case-Surveillance-Public-Use-Data/vbim-akqf/data", 42 | cdc_vax_science_brief = "https://www.cdc.gov/coronavirus/2019-ncov/science/science-briefs/fully-vaccinated-people.html", 43 | cdc_delta_variant = "https://web.archive.org/web/20210901003835/https://www.cdc.gov/coronavirus/2019-ncov/variants/delta-variant.html", 44 | # USA Facts 45 | usafacts_data = "https://usafacts.org/visualizations/coronavirus-covid-19-spread-map/", 46 | # papers 47 | caramelo_etal_2020 = "https://www.medrxiv.org/content/10.1101/2020.02.24.20027268v1", 48 | russel_etal_2020 = "https://bmcmedicine.biomedcentral.com/articles/10.1186/s12916-020-01790-9", 49 | verity_etal_2020 = "https://www.thelancet.com/journals/laninf/article/PIIS1473-3099(20)30243-7/fulltext", 50 | open_safely = "https://www.nature.com/articles/s41586-020-2521-4:", 51 | jin_etal_2020 = "https://www.nature.com/articles/s41591-020-01191-8", 52 | wolfer_etall_2020 = "https://www.nature.com/articles/s41586-020-2196-x", 53 | covid_symptom_study = "https://covid19.joinzoe.com/us/about", 54 | menni_etall_2020 = "https://www.nature.com/articles/s41591-020-0916-2", 55 | chu_etal_2020 = "https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(20)31142-9/fulltext", 56 | jefferson_etal_2008 = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2190272/", 57 | xue_etal_2022 = "https://www.sciencedirect.com/science/article/pii/S1201971222002958", 58 | # misc 59 | empirical_bayes = "https://en.wikipedia.org/wiki/Empirical_Bayes_method", 60 | # Additional sources for ORs December 2020 update 61 | gottlieb = "https://onlinelibrary.wiley.com/doi/full/10.1111/acem.14104", 62 | fairhealth = "https://www.prnewswire.com/news-releases/new-fair-health-study-uncovers-relationship-between-covid-19-comorbidities-and-mortality-301171033.html", 63 | zambrano = "https://www.cdc.gov/mmwr/volumes/69/wr/mm6944e3.htm", 64 | # vaccine efficacy data 65 | moderna_eua_2020 = "https://www.fda.gov/media/144637/download", #moderna vaccine factsheet for hcp 66 | pfizer_eua_2020 = "https://www.fda.gov/media/144413/download", #pfizer vaccine factsheet for hcp 67 | jandj_eua_2021 = "https://www.fda.gov/media/146217/download", 68 | bernal_etal_2021a = "https://www.bmj.com/content/373/bmj.n1088", #pfizer and astrazeneca vax against hosp and death 69 | bernal_etal_2021b = "https://www.medrxiv.org/content/10.1101/2021.05.22.21257658v1", #pfizer and astrazeneca vax against delta variant 70 | voysey_etal_2021 = "https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3777268", # astrazeneca vaccine efficacy against symptomatic infections 71 | feilkin_etal_2021 = "http://dx.doi.org/10.2139/ssrn.3961378", # vaccine effectiveness over time systematic review and meta-regression 72 | who_vaccines = "https://covid19.trackvaccines.org/agency/who", # Vaccines Approved for Use by WHO 73 | # Activity risk level 74 | bellage_activity_chart = "https://bellage.org/wp-content/uploads/2020/09/BellAge-COVID19-Activity-Risk-Chart.pdf", 75 | # excerise level and severe covid 76 | sallis_etal_2021 = "https://www.bmj.com/company/newsroom/physical-inactivity-linked-to-more-severe-covid-19-infection-and-death" 77 | ) 78 | 79 | # possible input conditions 80 | conditions_list = c("Chronic renal disease" = "renal_disease", 81 | "Cardiovascular disease" = "cardiovascular_disease", 82 | "Diabetes" = "diabetes", 83 | "Hypertension" = "hypertension", 84 | "Current or former smoker" = "smoking", 85 | "Immunocompromised condition" = "immunocompromised", 86 | "Chronic lung disease" = "lung_disease", 87 | "Obesity (BMI ≥ 30 kg/m²)" = "obesity", 88 | "Pregnancy" = "pregnancy", 89 | "Cancer" = "cancer", 90 | "Sickle cell disease" = "sickle_cell", 91 | "Down syndrome" = "downsyndrome", 92 | "Other chronic condition" = "other") 93 | 94 | # activities list 95 | l_activities_list = c("Indoor socially distanced activities (e.g. grocery store, library, museum)", 96 | "Outdoor socially distanced activities") 97 | m_activities_list = c("In person work or school", 98 | "Indoor busy or crowed activities (e.g. casino, shopping mall, salon)", 99 | "Public transportation/airplane", 100 | "Overnight stay at a hotel", 101 | "Outdoor dining", 102 | "Seeing doctor or dentist") 103 | h_activities_list = c("Indoor restaurant or bar", 104 | "Nightclub/music concert/movie theater/gym", 105 | "Sports stadium", 106 | "Religious services (including weddings and funerals)", 107 | "Team sports (e.g. basketball, football)", 108 | "Visiting nursing home or hospital") 109 | 110 | # possible exercise_levels 111 | exercise_level_list = c("10 minutes or less" = "lte_10mpw", 112 | "11-149 minutes" = "btw_11_149mpw", 113 | "150 minutes or more" = "gte_150mpw") 114 | # vaccine doses 115 | vaccine_labels = list(pfizer = "Pfizer-BioNTech", 116 | moderna = "Moderna", 117 | johnsonandjohnson = "Johnson & Johnson", 118 | astrazeneca = "AstraZeneca") 119 | 120 | months_last_vaccination_labels = c("Within one month" = "lt_1mo", "1-6 months ago" = "btw_1_6mo", "More than 6 months ago" = "gt_6mo") 121 | -------------------------------------------------------------------------------- /app/ui.R: -------------------------------------------------------------------------------- 1 | # Define the UI 2 | ui <- fluidPage( 3 | theme=shinytheme("superhero"), 4 | titlePanel(fluidRow(column(width = 9, "19 and Me: COVID-19 Risk Score Calculator"), 5 | column(width = 3, img(src = 'MathematicaLogo_White_smaller.png',class = "pull-right"))), 6 | windowTitle = "19 and Me: COVID-19 Risk Calculator"), 7 | # google analytics tracking 8 | tags$head(includeHTML("google-analytics.html")), 9 | 10 | includeCSS("style.css"), 11 | includeScript('app.js'), 12 | 13 | #INPUT -------------------------------------------------------------------------------------------------- 14 | sidebarLayout( 15 | sidebarPanel( 16 | # collapsible UI to streamline input. Everything is open by default. 17 | bsCollapse( 18 | id = "collapse_main", 19 | multiple = TRUE, 20 | open = c("Introduction"), 21 | bsCollapsePanel( 22 | title = "Introduction", 23 | tags$p("This tool synthesizes reported COVID-19 geographic case data and rapidly evolving 24 | scientific research to help you ballpark how much risk this disease poses to you."), 25 | tags$p("We believe people make the right decisions when empowered with neither fear, nor 26 | complacency, but with accurate data."), 27 | tags$p("Please note: many 28 | very important aspects of this disease are either unknown or estimated with large 29 | uncertainty. With that said, our guiding philosophy is that an imperfect estimate 30 | is better than no estimate."), 31 | tags$p("This tool works best on Google Chrome and mobile.", class = "text-warning"), 32 | tags$p("We do not retain any information that you provide in connection with your use of the tool."), 33 | tags$p("Your use of this tool is subject to these ", tags$a("Terms of Use.", href=urls$terms_of_use)), 34 | tags$p(style="color:#DF691A", "THE INFORMATION PROVIDED BY THIS TOOL IS NOT MEDICAL ADVICE AND CANNOT BE 35 | USED TO DIAGNOSE OR TREAT ANY MEDICAL CONDITION. See FAQ for more information.", class = "text-warning"), 36 | tags$p("For demonstration purposes, the tool returns risk scores as of April 6th, 2022.", class = "text-warning"), 37 | actionButton('next0', "Next", class = "btn btn-info btn-block") 38 | ), 39 | bsCollapsePanel( 40 | title = "1. About You", 41 | radioButtons('country', "What is your country?", 42 | c("United States" = "us", "Belgium" = "be"), selected = "us", inline=TRUE), 43 | conditionalPanel( 44 | condition = "input.country == 'us'", 45 | div(class = "questiontext", "What is your 5-digit zip code?")), 46 | conditionalPanel( 47 | condition = "input.country == 'be'", 48 | div(class = "questiontext", "What is your 4-digit postal code?")), 49 | textInput('zip', label = NULL), 50 | textInput('age', label = "What is your age?"), 51 | radioButtons('sex', "What sex were you assigned at birth?", 52 | c("Male" = "male", "Female" = "female", "Other" = "sex_other", "Prefer not to say" = "sex_other"), inline=TRUE), 53 | actionButton('next1', "Next", class = "btn btn-info btn-block") 54 | ), # bsCollapsePanel 55 | bsCollapsePanel( 56 | title = "2. Your Health Status", 57 | checkboxInput('is_sick', div("I have ", tags$a("potential symptoms of COVID-19", href = urls$cdc_symptoms))), 58 | # COVID-19 symptoms input 59 | conditionalPanel( 60 | condition = "input.is_sick == true", 61 | checkboxGroupInput("symptoms", "Symptoms", 62 | c("Loss of smell and taste" = "loss_smell_taste", 63 | "Severe or significant persistent cough" = "severe_cough", 64 | "Severe fatigue" = "severe_fatigue", 65 | "Loss of appetite, skipped meals" = "loss_appetite", 66 | "My symptoms are not listed here" = "other" 67 | ))), 68 | hr(), 69 | # Pre-Existing conditions inputs 70 | checkboxInput('has_preexisting', div("I have ", tags$a("underlying medical complications", 71 | href = urls$cdc_medicalconditions))), 72 | conditionalPanel( 73 | condition = "input.has_preexisting == true", 74 | checkboxGroupInput("conditions", "Conditions", # this is written this way to allow html math in obesity test 75 | choiceNames = lapply(names(conditions_list), HTML), 76 | choiceValues = unname(conditions_list) 77 | ), 78 | ), 79 | hr(), 80 | # Excerise Level 81 | radioButtons('exercise_level', "On average how many minutes per week do you engage in moderate to strenuous exercises (like brisk walking)?", 82 | exercise_level_list, inline=TRUE, selected = "btw_11_149mpw"), 83 | # Next Buttion 84 | actionButton('next2', "Next", class = "btn btn-info btn-block") 85 | ), # bsCollapsePanel 86 | bsCollapsePanel( 87 | title = "3. Your Behavior", 88 | radioButtons('live_w_others', "Do you live with other people?", 89 | list("Yes"="True", "No"="False"), inline=TRUE, selected = "False"), 90 | sliderInput('direct_contacts', 91 | 'Direct exposure: how many people (include your household members) do you come into close contact (> 10 min, < 6 feet) with in a week?', 92 | min = 0, max = 100, value = 1, step =1), 93 | conditionalPanel( 94 | condition = "input.live_w_others == 'True'", 95 | sliderInput('indirect_contacts', 96 | 'Indirect exposure: how many people in total do your household members come into close contact with in a week? (Do not include contact between household members in this count.)', 97 | min = 0, max = 100, value = 0, step =1)), 98 | hr(), 99 | checkboxInput("hand", div("I perform hand hygiene according to ", 100 | tags$a("CDC guidance", href = urls$cdc_hand_hygiene))), 101 | checkboxInput("ppe", div("I wear personal protection equipment consistent with ", 102 | tags$a("CDC guidelines", href = urls$cdc_ppe))), 103 | # activities risk 104 | hr(), 105 | div(class = "questiontext", "In the previous week, I participated in the following activities:"), 106 | checkboxGroupInput("l_activities", "Low-risk activities:", 107 | choices = l_activities_list, 108 | inline = TRUE, 109 | selected = NULL), 110 | checkboxGroupInput("m_activities", "Medium-risk activities:", 111 | choices = m_activities_list, 112 | inline = TRUE, 113 | selected = NULL), 114 | checkboxGroupInput("h_activities", "High-risk activities:", 115 | choices = h_activities_list, 116 | inline = TRUE, 117 | selected = NULL), 118 | actionButton('next3', "Next", class = "btn btn-info btn-block") 119 | ), # bsCollapsePanel 120 | bsCollapsePanel( 121 | title = "4. Your Vaccination Status", 122 | checkboxInput('has_vaccine', div("I have received at least one dose of a COVID-19 vaccine")), 123 | conditionalPanel( 124 | condition = "input.has_vaccine == true", 125 | radioButtons('vaccine', "Which of the available COVID-19 vaccines did you receive most recently, including the booster?", 126 | choiceNames = unname(vaccine_labels), choiceValues = names(vaccine_labels), 127 | inline=TRUE), 128 | radioButtons('months_last_vaccination', "When was your most recent COVID-19 vaccine, including the booster?", 129 | months_last_vaccination_labels, inline=TRUE), 130 | ), 131 | actionButton('go', "Calculate", class = "btn btn-primary btn-block") 132 | ) # bsCollapsePanel 133 | ), # bsCollapse 134 | width = 4 135 | ), # sidebarPanel 136 | 137 | # OUTPUT-------------------------------------------------------------------------------------------------- 138 | mainPanel( 139 | tabsetPanel( 140 | type = c("pills"), 141 | tabPanel("Score", 142 | uiOutput("select_county"), 143 | uiOutput("zipcontrol"), 144 | fluidRow(column(width = 8, htmlOutput("output_intro"))), 145 | fluidRow(column(width = 8, withSpinner(gaugeOutput("gauge", height = 'auto'), type = 1))), 146 | fluidRow(column(width = 8,htmlOutput("score_info"))), 147 | fluidRow(column(width = 8,htmlOutput("vaccines"),style = "background-color:#4E5D6C;")), 148 | fluidRow(column(width = 8,htmlOutput("res"))) 149 | ), 150 | # tabPanel("Map"), 151 | tabPanel("Method", htmlOutput("methods")), 152 | tabPanel("FAQ", htmlOutput("faq")), 153 | tabPanel("Change Log", htmlOutput("changelog")) 154 | ), 155 | width = 8 156 | ) # mainPanel 157 | ) # sidebarLayout 158 | ) # fluidPage 159 | -------------------------------------------------------------------------------- /app/functions.R: -------------------------------------------------------------------------------- 1 | 2 | # converts boolean into string ------------------------------------------------- 3 | bool2char <- function(bol){ 4 | # convert boolean to char 5 | # bol : boolean 6 | stringr::str_to_sentence(bol) 7 | } 8 | 9 | # function makes score API call ------------------------------------------------- 10 | calculateRisk <- function(input) { 11 | request_body <- list( 12 | "country" = input$country, 13 | "zip" = input$zip, 14 | "age"= as.numeric(input$age), 15 | "sex" = input$sex, 16 | "symptoms" = as.list(input$symptoms), 17 | "direct_contacts" = as.numeric(input$direct_contacts), 18 | "live_w_others"= input$live_w_others, 19 | "indirect_contacts" = as.numeric(input$indirect_contacts), 20 | "hand"= bool2char(input$hand), 21 | "ppe"= bool2char(input$ppe), 22 | "conditions" = as.list(input$conditions), 23 | "activities_high" = length(input$h_activities), 24 | "activities_medium" = length(input$m_activities), 25 | "activities_low" = length(input$l_activities), 26 | "exercise_level" = input$exercise_level, 27 | "calc_date" = "04/06/2022") 28 | 29 | if (input$has_vaccine){ 30 | request_body$vaccine = input$vaccine 31 | request_body$months_last_vaccination = input$months_last_vaccination 32 | } 33 | 34 | resp <- POST(urls$covid_score_api, add_headers("x-api-key" = Sys.getenv("X_API_KEY")), body = request_body, encode = "json") 35 | #resp <- POST(urls$covid_score_api_dev, add_headers("x-api-key" = Sys.getenv("X_API_KEY_DEV")), body = request_body, encode = "json") 36 | api_return <- content(resp) 37 | 38 | return (api_return) 39 | } 40 | 41 | # formate string, numbers, or percent ------------------------------------------ 42 | formatResultsHeader <- function(string){ 43 | return (tags$h4(tags$span(style="color:#F0AD4E",string))) 44 | } 45 | formatDynamicString <- function(string) { 46 | return (tags$b(tags$span(style="color:#F0AD4E",string))) 47 | } 48 | formatNumber<-function(number, unit) { 49 | return (formatDynamicString(HTML(paste0(formatC(signif(number,digits=2), digits=2,format="fg"), unit)))) 50 | } 51 | formatPercent<-function(probability) { 52 | return (formatNumber(100 * probability, "%")) 53 | } 54 | formatProbability<-function(probability) { 55 | return (formatDynamicString(format(round(1/probability), big.mark=","))) 56 | } 57 | 58 | renderOutputIntroHtml <- function() { 59 | tagList( 60 | tags$h3("The risk score for people with similar characteristics and behaviors as you is") 61 | ) 62 | } 63 | 64 | # function to create location HTML output -------------------------------------- 65 | renderLocationHtml <- function(risk) { 66 | underreport_factor_string = formatNumber(risk$underreport_factor, "x") 67 | latest_day_string <- format(as.Date(risk$latest_day, "%m/%d/%Y"), "%B %d, %Y") 68 | cases_past14d_string <- format(round(risk$cases_past14d), big.mark =",") 69 | cumulative_cases_string <- format(risk$cumulative_cases, big.mark=",") 70 | est_current_sick_string <- format(round(risk$est_current_sick), big.mark =",") 71 | 72 | proportion_sick <- risk$est_current_sick/risk$population 73 | prob_group50 <- 1-((1-proportion_sick)^50) 74 | prob_group10 <- 1-((1-proportion_sick)^10) 75 | 76 | div( 77 | title = "Location", 78 | tags$p(div('We found data from ', formatDynamicString(risk$county), ' for your zip code. As of ', 79 | formatDynamicString(latest_day_string), ', this county had', formatDynamicString(cases_past14d_string), 80 | ' new reported cases in the last 14 days and ', 81 | formatDynamicString(cumulative_cases_string), 82 | ' total reported cases of COVID-19. Many people who contract COVID-19 are not tested, and therefore not reported. 83 | We estimate that your county has an under-reporting factor of ', underreport_factor_string, 84 | '.' 85 | 86 | ), 87 | tags$p(), 88 | tags$p("Taking into account the under-reporting factor and average time from symptom onset to recovery, we estimate that:"), 89 | tags$p(tags$ul( 90 | tags$li(div('There are ', formatDynamicString(format(round(risk$est_current_sick), big.mark =",")), 91 | ' total sick people distributed throughout the county, including those who are not officially reported.')), 92 | tags$li(div("1 in every ", 93 | formatDynamicString(format(round(1/(proportion_sick)), big.mark =",")), 94 | " people in your county is currently infected with COVID-19.")), 95 | tags$li(div("In a group of 50 people, there is a ", formatPercent(prob_group50), 96 | " chance that at least one person has COVID-19.")), 97 | tags$li(div("In a group of 10 people, there is a ", formatPercent(prob_group10), 98 | " chance that at least one person has COVID-19."))) 99 | )) 100 | ) 101 | } 102 | 103 | # function to create risk_score HTML output ------------------------------------ 104 | renderScoreHtml <- function(risk) { 105 | score<- risk$risk_score 106 | moving_casecount <- risk$moving_casecount 107 | text_score <- div(tags$p("WARNING: For demonstration purposes, the tool returns risk scores as of April 6th, 2022.", class = "text-warning"), 108 | tags$p(HTML(paste0( 109 | "The risk score for people with similar characteristics and behaviors as you is ", 110 | formatDynamicString(round(score)), 111 | case_when( 112 | score<30 ~ paste0( 113 | ", which is (relatively) safe. Even so, it's a good time to make sure that you're ", 114 | tags$a("prepared! ", href = urls$cdc_get_ready)), 115 | score>70 ~ paste0( 116 | ", which is quite serious. Avoiding exposure, practicing good hygiene, and making sure you have ", 117 | tags$a("a plan in place ", href = urls$cdc_prevention), 118 | "are critically important for you."), 119 | TRUE ~ paste0( 120 | ". Please take the time to review ", 121 | tags$a("this page", href = urls$cdc_prevention), 122 | " to make sure you're well prepared in the days to come.") 123 | ))))) 124 | 125 | if (moving_casecount == 0){ 126 | # if there are no reported cases in last 14 days 127 | warning_text <- tags$p(style="color:#DF691A", 128 | "WARNING: There are zero reported cases in the last 14 days. This could be due to USAFacts no longer reporting recent covid cases or deaths for the county. 129 | For more information, please check the ", tags$a("USAFacts", href = urls$usafacts_data), " or state agency's health department website.", 130 | class = "text-warning") 131 | return(div(warning_text, text_score)) 132 | } else { 133 | return(text_score) 134 | } 135 | } 136 | 137 | # function to create vaccines HTML output ------------------------------------ 138 | renderVaccinesHtml <- function(risk, has_vaccine, vaccine, months_last_vaccination){ 139 | 140 | # Case where not vaccinated 141 | if (!has_vaccine){ 142 | # no doses 143 | text <- tags$p("The approved against COVID-19 vaccines are safe and highly effective at preventing symptomatic COVID-19. ", 144 | tags$a("Click here", href=urls$cdc_vaccines), " for more information and to check when you might be eligible for vccination. ", 145 | tags$a("Click here", href=urls$who_vaccines), " for a full list of vaccines approved for Use by the World Health Organization (WHO).") 146 | } else if (!is.na(months_last_vaccination)) { 147 | # if has vaccination 148 | infection_efficacy_perc <- formatPercent(risk$vaccine_reduction$infection_efficacy) 149 | hosp_efficacy_perc <- formatPercent(risk$vaccine_reduction$hosp_efficacy) 150 | icu_efficacy_perc <- formatPercent(risk$vaccine_reduction$icu_efficacy) 151 | death_efficacy_perc <- formatPercent(risk$vaccine_reduction$death_efficacy) 152 | 153 | if (months_last_vaccination == "lt_1mo"){ 154 | # last vaccine within 1 month 155 | months_last_vaccination_text <- HTML(paste0("Congratulations on receiving the ", vaccine_labels[vaccine], " COVID-19 vaccine! ", 156 | "The vaccine reaches its full efficacy at around 14 days after vaccination. ", 157 | "We estimate that the full efficacy of the ", vaccine_labels[vaccine])) 158 | } else if (months_last_vaccination == "btw_1_6mo"){ 159 | # last vaccine within 1-6 month 160 | months_last_vaccination_text <- HTML(paste0("Congratulations on receiving the ", vaccine_labels[vaccine], " COVID-19 vaccine! ", 161 | "Between 1 and 6 months after last vaccination, we estimate that the efficacy of the ", vaccine_labels[vaccine])) 162 | 163 | } else if (months_last_vaccination == "gt_6mo"){ 164 | # last vaccine within greater than 6 month 165 | months_last_vaccination_text <- HTML(paste0("Congratulations on receiving the ", vaccine_labels[vaccine], " COVID-19 vaccine! ", 166 | "Be sure check if you are eligible to receive a booster shot. ", 167 | "More than 6 months after last vaccination, we estimate that the efficacy of the ", vaccine_labels[vaccine])) 168 | } 169 | 170 | reduction_text <- HTML(paste0( " COVID-19 vaccine is a ", 171 | infection_efficacy_perc, "reduction in risk of infection; a ", 172 | hosp_efficacy_perc, "reduction in risk of hospitalization; a ", 173 | icu_efficacy_perc, "reduction in risk of ICU addmission; and a ", 174 | death_efficacy_perc, "reduction in risk of death due to COVID-19. ", 175 | tags$a("Click here ", href=urls$cdc_vaccines), "for more information about the United States' vaccination program.")) 176 | 177 | text <- tags$p(months_last_vaccination_text, reduction_text) 178 | } 179 | 180 | div(formatResultsHeader("Vaccine information"), text, 181 | tags$p("After you have been vaccinated, be sure to follow the ", 182 | tags$a("CDC guidance for fully vaccinated individuals ", href=urls$cdc_vaccinated_guidance), 183 | "to protect your family, friends, and community.")) 184 | } 185 | 186 | # function to create exporsure risk HTML output -------------------------------- 187 | renderExposureHtml <- function(risk, symptoms) { 188 | prob_flu_string = formatPercent(risk$flu_risk_natl_avg) 189 | risk_string = formatPercent(risk$exposure_risk) 190 | sympt_covid_string = formatPercent(risk$sympt_covid_risk) 191 | exposure_text = paste0( 192 | "Among people in your county who have behaviors and levels of interaction 193 | with others that are similar to yours, the estimated probability of catching COVID-19 through community transmission in a week is ", 194 | risk_string, '. ', "For comparison, ", prob_flu_string, ' of Americans catch the flu every week during flu season.') 195 | sickness_text = (paste0( 196 | "Based on the symptom(s) you selected, the probability that your symptoms indicate COVID-19 is ", sympt_covid_string, 197 | ". If you are experiencing symptoms associated with COVID-19, please consult the ", 198 | tags$a("CDC's information on COVID-19 testing", href = urls$cdc_test_info), 199 | " or visit the website for your state or local health department ", 200 | "for information about getting tested for COVID-19.")) 201 | 202 | if (!is.null(symptoms)) { 203 | total_risk_html = div(tags$p(HTML(exposure_text)), tags$p(HTML(sickness_text))) 204 | } else { 205 | total_risk_html = tags$p(HTML(paste0(exposure_text))) 206 | } 207 | 208 | return (total_risk_html) 209 | } 210 | 211 | # function to create susceptibility HTML output -------------------------------------- 212 | renderSusceptibilityHtml <- function(risk) { 213 | tags$p(HTML(paste0( 214 | "Among people who are the same age, sex, and health status as you and get sick from COVID-19, the risk of hospitalization is ", 215 | formatPercent(risk$hosp_risk), 216 | ", the risk of requiring an ICU is ", 217 | formatPercent(risk$icu_risk), 218 | ", and the risk of death is ", 219 | formatPercent(risk$death_risk), 220 | ". Put another way, we estimate that one person in a group of ", 221 | formatProbability(risk$hosp_risk), 222 | " people will be hospitalized if infected, one person in a group of ", 223 | formatProbability(risk$icu_risk), 224 | " people will require an ICU, and one person in a group of ", 225 | formatProbability(risk$death_risk), 226 | " people will not survive." 227 | ))) 228 | } 229 | 230 | # function to create hand and ppe HTML output ---------------------------------- 231 | renderProtectionHtml <- function(risk, hand, ppe){ 232 | 233 | prob_hand_string<- formatPercent(risk$risk_reduction_handwash) 234 | prob_ppe_string<- formatPercent(risk$risk_reduction_ppe) 235 | 236 | if (hand == TRUE ){ 237 | hand_html = HTML(paste0( 238 | "Good to know that you wash your hands per ", 239 | tags$a("CDC guidance", href = urls$cdc_hand_hygiene), 240 | ".")) 241 | } else{ 242 | hand_html = HTML(paste0( 243 | "We recommend that you wash your hands per ", 244 | tags$a("CDC guidance", href = urls$cdc_hand_hygiene), 245 | ".")) 246 | } 247 | if (risk$exposure_risk >0){ 248 | # exposure reduction hand text for users with exposure risk of over 0 249 | hand_delta_html = HTML(paste0("In general, handwashing reduces people's risk of being exposed to COVID-19 by ", 250 | prob_hand_string, " . ")) 251 | } else{ 252 | # exposure reduction hand text for users with exposure risk less than or equal to 0 253 | hand_delta_html = HTML(paste0("In general, handwashing reduces people's risk of being exposed to COVID-19, 254 | if they do come into close contact with others. ")) 255 | } 256 | 257 | if (ppe == TRUE){ 258 | ppe_html = HTML(paste0( 259 | "Good to know that you wear personal protective equipment per ", 260 | tags$a("CDC guidelines", href = urls$cdc_ppe), " . ")) 261 | } else { 262 | ppe_html = HTML(paste0( 263 | "We recommend that you wear personal protective equipment per ", 264 | tags$a("CDC guidelines", href = urls$cdc_ppe), " . ")) 265 | } 266 | 267 | if (risk$exposure_risk >0){ 268 | # exposure reduction ppe text for users with exposure risk of over 0 269 | ppe_delta_html = HTML(paste0("In general, wearing personal protective equipment reduces people's risk of being 270 | exposed to COVID-19 by ", prob_ppe_string, " . ")) 271 | } else { 272 | # exposure reduction ppe text for users with exposure risk less than or equal to 0 273 | ppe_delta_html = HTML(paste0("In general, wearing personal protective equipment reduces people's risk of being 274 | exposed to COVID-19, if they do come into close contact with others. ")) 275 | } 276 | 277 | return(tags$p(hand_html, hand_delta_html, ppe_html, ppe_delta_html)) 278 | } 279 | 280 | # function combines score page HTML outputs ------------------------------------ 281 | renderResultsHtml <- function(risk, symptoms, hand, ppe) { 282 | 283 | # return 284 | tagList( 285 | formatResultsHeader("County prevalence"), 286 | renderLocationHtml(risk), 287 | formatResultsHeader("Risk of contracting COVID-19"), 288 | renderExposureHtml(risk, symptoms), 289 | renderProtectionHtml(risk, hand, ppe), 290 | formatResultsHeader("Risk of adverse outcomes from COVID-19"), 291 | renderSusceptibilityHtml(risk) 292 | ) 293 | } 294 | -------------------------------------------------------------------------------- /aws-infrastructure/codepipeline_setup_all_ecs_resources.yaml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: 2010-09-09 2 | Description: This template creates Code pipeline for deploying app on ECS service 3 | 4 | ##################################################################### 5 | # Metadata 6 | ##################################################################### 7 | 8 | Metadata: 9 | AWS::CloudFormation::Interface: 10 | ParameterGroups: 11 | - Label: 12 | default: Network configuration 13 | Parameters: 14 | - VpcId 15 | - PrivateSubnet1 16 | - PrivateSubnet2 17 | - PublicSubnet1 18 | - PublicSubnet2 19 | 20 | - Label: 21 | default: Code build and pipeline configuration 22 | Parameters: 23 | - ApplicationName 24 | - PipelineName 25 | - CodeBuildProjectName 26 | - BuildInstanceSize 27 | - DeployImage 28 | - BuildSpecLoc 29 | 30 | - Label: 31 | default: Github webhook configuration 32 | Parameters: 33 | - GitHubUser 34 | - GitHubRepository 35 | - GitHubBranch 36 | 37 | - Label: 38 | default: Docker Container configuration 39 | Parameters: 40 | - ECSCluster 41 | - ECSService 42 | - EcrRepositoryName 43 | - ImageUri 44 | - TaskDefFamily 45 | - ContainerPort 46 | - Protocol 47 | 48 | - Label: 49 | default: Load balancer configuration 50 | Parameters: 51 | - LoadBalancerName 52 | - LoadBalancerType 53 | - LoadBalancerScheme 54 | - LoadBalancerIpType 55 | - LoadBalancerCertArn 56 | - SSLSecurityPolicy 57 | 58 | - Label: 59 | default: Target Group configuration 60 | Parameters: 61 | - TargetGroupName 62 | 63 | ##################################################################### 64 | # Mappings 65 | ##################################################################### 66 | Mappings: 67 | LbIpAddressType: 68 | externalIP: 69 | scheme1: internet-facing 70 | addresstype1: ipv4 71 | 72 | #################################################################### 73 | # PARAMETERS 74 | #################################################################### 75 | Parameters: 76 | PipelineName: 77 | Description: Code Pipeline name for CI/Cid 78 | Type: String 79 | Default: Covid_Risk_Score_Rshiny_Pipeline 80 | 81 | ApplicationName: 82 | Description: Name of the application 83 | Type: String 84 | Default: covid-risk-score 85 | 86 | CodeBuildProjectName: 87 | Description: Code Build Project name 88 | Type: String 89 | Default: Covid_Risk_Score_Rshiny_Build 90 | 91 | BuildInstanceSize: 92 | Description: Build Step Compute Size 93 | Type: String 94 | AllowedValues: 95 | - BUILD_GENERAL1_SMALL 96 | - BUILD_GENERAL1_MEDIUM 97 | - BUILD_GENERAL1_LARGE 98 | Default: BUILD_GENERAL1_LARGE 99 | 100 | DeployImage: 101 | Description: 'Deploy image to use for CodeBuild project.' 102 | Type: String 103 | Default: 'aws/codebuild/standard:4.0' 104 | 105 | BuildSpecLoc: 106 | Description: Buildspec file name 107 | Type: String 108 | Default: _deploy_buildspec.yaml 109 | 110 | GitHubUser: 111 | Description: GitHub repository owner 112 | Type: String 113 | Default: mathematica-mpr 114 | 115 | GitHubRepository: 116 | Description: GitHub repository name 117 | Type: String 118 | Default: covid_risk_score 119 | 120 | GitHubBranch: 121 | Description: GitHub repository branch 122 | Type: String 123 | Default: develop-aws #TB changed 124 | 125 | VpcId: 126 | Description: VPC to place the resources 127 | Type: AWS::EC2::VPC::Id 128 | 129 | PrivateSubnet1: 130 | Description: Private subnet1 to allow code build access to 131 | Type: AWS::EC2::Subnet::Id 132 | 133 | PrivateSubnet2: 134 | Description: Private subnet2 to allow code build access to 135 | Type: AWS::EC2::Subnet::Id 136 | 137 | PublicSubnet1: 138 | Description: Public subnet1 to route the traffic to target 139 | Type: AWS::EC2::Subnet::Id 140 | 141 | PublicSubnet2: 142 | Description: Public subnet2 to route the traffic to target 143 | Type: AWS::EC2::Subnet::Id 144 | 145 | ECSCluster: 146 | Description: ECS Cluster name 147 | Type: String 148 | Default: RShinyCluster 149 | AllowedPattern: ^[A-Za-z][A-Za-z0-9-]* 150 | 151 | ECSService: 152 | Description: ECS Service name 153 | Type: String 154 | Default: CovidRiskScoreService 155 | AllowedPattern: ^[A-Za-z][A-Za-z0-9-]* 156 | 157 | TaskDefFamily: 158 | Description: Task Definition Family Name 159 | Type: String 160 | Default: CovidRiskScoreTaskDef 161 | AllowedPattern: ^[A-Za-z][A-Za-z0-9-]* 162 | 163 | EcrRepositoryName: 164 | Description: ECR repository name 165 | Type: String 166 | Default: covid-risk-score 167 | 168 | ImageUri: 169 | Description: Docker container image uri 170 | Type: String 171 | 172 | ContainerPort: 173 | Description: Dafault docker container Port exposed 174 | Type: Number 175 | Default: 3838 176 | 177 | Protocol: 178 | Description: Protocol used for PortMappings 179 | Type: String 180 | Default: tcp 181 | 182 | LoadBalancerName: 183 | Description: Load balancer name 184 | Type: String 185 | Default: CovidRiskScoreLB 186 | AllowedPattern: ^[A-Za-z][A-Za-z0-9-]* 187 | 188 | LoadBalancerType: 189 | Description: Choose the load balancer Type 190 | Type: String 191 | Default: application 192 | AllowedValues: 193 | - application 194 | 195 | LoadBalancerScheme: 196 | Description: Indicates if the load balancer in front of the ECS service is external 197 | Type: String 198 | Default: externalIP 199 | AllowedValues: 200 | - externalIP 201 | 202 | LoadBalancerCertArn: 203 | Description: Provide loadbalancer certificate ARN(optional) to associate with load balancer 204 | Type: String 205 | Default: '' 206 | 207 | SSLSecurityPolicy: 208 | Description: SSL security policy 209 | Type: String 210 | AllowedValues: 211 | - ELBSecurityPolicy-FS-1-2-2019-08 212 | - ELBSecurityPolicy-FS-1-2-Res-2020-10 213 | - ELBSecurityPolicy-FS-1-1-Res-2019-08 214 | - ELBSecurityPolicy-FS-1-2-Res-2019-08 215 | Default: ELBSecurityPolicy-FS-1-2-Res-2020-10 216 | 217 | TargetGroupName: 218 | Description: Target group name 219 | Type: String 220 | Default: CovidRiskScoreTG 221 | AllowedPattern: ^[A-Za-z][A-Za-z0-9-]* 222 | 223 | ##################################################################### 224 | # CONDITIONS 225 | ##################################################################### 226 | 227 | Conditions: 228 | LoadBalancerCertificateArn: !Not [!Equals [!Ref LoadBalancerCertArn, '']] 229 | 230 | ################################################################### 231 | # RESOURCES 232 | ##################################################################### 233 | Resources: 234 | LoadBalancer: 235 | Type: AWS::ElasticLoadBalancingV2::LoadBalancer 236 | DependsOn: [DefaultTargetGroup, AlbSecurityGroups] 237 | Properties: 238 | Name: !Ref LoadBalancerName 239 | Type: !Ref LoadBalancerType 240 | Scheme: !FindInMap [LbIpAddressType,!Ref LoadBalancerScheme, scheme1] 241 | IpAddressType: !FindInMap [LbIpAddressType,!Ref LoadBalancerScheme, addresstype1] 242 | Subnets: 243 | - !Ref PublicSubnet1 244 | - !Ref PublicSubnet2 245 | SecurityGroups: 246 | - !Ref AlbSecurityGroups 247 | 248 | HttpListener: 249 | Type: 'AWS::ElasticLoadBalancingV2::Listener' 250 | Properties: 251 | LoadBalancerArn: !Ref LoadBalancer 252 | Port: 80 253 | Protocol: HTTP 254 | DefaultActions: 255 | - Type: redirect 256 | RedirectConfig: 257 | Protocol: "HTTPS" 258 | Port: "443" 259 | Host: "#{host}" 260 | Path: "/#{path}" 261 | Query: "#{query}" 262 | StatusCode: "HTTP_301" 263 | 264 | HttpsListener: 265 | Type: 'AWS::ElasticLoadBalancingV2::Listener' 266 | Condition: LoadBalancerCertificateArn 267 | Properties: 268 | Certificates: 269 | - CertificateArn: !Ref LoadBalancerCertArn 270 | DefaultActions: 271 | - TargetGroupArn: !Ref DefaultTargetGroup 272 | Type: forward 273 | LoadBalancerArn: !Ref LoadBalancer 274 | Port: 443 275 | Protocol: HTTPS 276 | SslPolicy: !Ref SSLSecurityPolicy 277 | 278 | DefaultTargetGroup: 279 | Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' 280 | Properties: 281 | Name: !Ref TargetGroupName 282 | HealthCheckIntervalSeconds: 15 283 | HealthCheckPath: '/' 284 | HealthCheckProtocol: HTTP 285 | HealthCheckTimeoutSeconds: 10 286 | HealthyThresholdCount: 2 287 | UnhealthyThresholdCount: 2 288 | Matcher: 289 | HttpCode: 200 290 | Port: !Ref ContainerPort 291 | Protocol: HTTP 292 | VpcId: !Ref VpcId 293 | TargetType: ip 294 | TargetGroupAttributes: 295 | - Key: deregistration_delay.timeout_seconds 296 | Value: 300 297 | - Key : stickiness.enabled 298 | Value: true 299 | 300 | AlbSecurityGroups: 301 | Type: AWS::EC2::SecurityGroup 302 | Properties: 303 | GroupDescription: Allow HTTP and HTTPs inbound from everywhere 304 | GroupName: AllowHTTPAndHTTPs 305 | VpcId: !Ref VpcId 306 | SecurityGroupIngress: 307 | - IpProtocol: tcp 308 | FromPort: 443 309 | ToPort: 443 310 | CidrIp: 0.0.0.0/0 311 | 312 | - IpProtocol: tcp 313 | FromPort: 80 314 | ToPort: 80 315 | CidrIp: 0.0.0.0/0 316 | 317 | EcsCluster: 318 | Type: AWS::ECS::Cluster 319 | Properties: 320 | ClusterName: !Ref ECSCluster 321 | ClusterSettings: 322 | - Name: containerInsights 323 | Value: enabled 324 | 325 | EcsService: 326 | Type: AWS::ECS::Service 327 | DependsOn: [LoadBalancer, HttpsListener, TaskDefinition] 328 | Properties: 329 | LaunchType: FARGATE 330 | Cluster: !Ref EcsCluster 331 | TaskDefinition: !Ref TaskDefinition 332 | ServiceName: !Ref ECSService 333 | SchedulingStrategy: REPLICA 334 | DeploymentConfiguration: 335 | MaximumPercent: 200 336 | MinimumHealthyPercent: 100 337 | DesiredCount: 1 338 | HealthCheckGracePeriodSeconds: 300 339 | LoadBalancers: 340 | - ContainerName: !Sub 'Shiny-Container' 341 | ContainerPort: !Ref ContainerPort 342 | TargetGroupArn: !Ref DefaultTargetGroup 343 | NetworkConfiguration: 344 | AwsvpcConfiguration: 345 | AssignPublicIp: DISABLED 346 | SecurityGroups: 347 | - !Ref TaskDefSecurityGroups 348 | Subnets: 349 | - !Ref PrivateSubnet1 350 | - !Ref PrivateSubnet2 351 | 352 | TaskDefinition: 353 | Type: AWS::ECS::TaskDefinition 354 | DependsOn: ExecutionRole 355 | Properties: 356 | Family: !Ref TaskDefFamily 357 | Memory: 2048 358 | Cpu: 1024 359 | NetworkMode: awsvpc 360 | RequiresCompatibilities: 361 | - 'FARGATE' 362 | # TaskRoleArn: None 363 | ExecutionRoleArn: !Ref ExecutionRole 364 | ContainerDefinitions: 365 | - Name: !Sub 'Shiny-Container' 366 | Image: !Ref ImageUri 367 | Cpu: 1024 368 | Memory: 2048 369 | PortMappings: 370 | - ContainerPort: !Ref ContainerPort 371 | Protocol: !Ref Protocol 372 | 373 | ExecutionRole: 374 | Type: AWS::IAM::Role 375 | Properties: 376 | RoleName: !Sub 'MathRole-ECSExecutionRole' 377 | PermissionsBoundary: !Sub arn:aws:iam::${AWS::AccountId}:policy/Math-Boundary-Policy 378 | AssumeRolePolicyDocument: 379 | Version: '2012-10-17' 380 | Statement: 381 | - Effect: Allow 382 | Principal: 383 | Service: 384 | - ecs-tasks.amazonaws.com 385 | Action: 386 | - sts:AssumeRole 387 | ManagedPolicyArns: 388 | - arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy 389 | 390 | TaskDefSecurityGroups: 391 | Type: AWS::EC2::SecurityGroup 392 | Properties: 393 | GroupDescription: Allow container port to access the app exposed to docker container port 394 | GroupName: RshinySecGroup 395 | VpcId: !Ref VpcId 396 | SecurityGroupIngress: 397 | - IpProtocol: tcp 398 | FromPort: !Ref ContainerPort 399 | ToPort: !Ref ContainerPort 400 | SourceSecurityGroupId: !Ref AlbSecurityGroups 401 | 402 | BuildProject: 403 | Type: AWS::CodeBuild::Project 404 | DependsOn: [CodeBuildPolicy, TaskDefSecurityGroups] 405 | Properties: 406 | Name: !Ref CodeBuildProjectName 407 | ServiceRole: !Ref CodeBuildRole 408 | Artifacts: 409 | Type: CODEPIPELINE 410 | Environment: 411 | Type: LINUX_CONTAINER 412 | ComputeType: !Ref BuildInstanceSize 413 | Image: !Ref DeployImage 414 | PrivilegedMode: Yes 415 | EnvironmentVariables: 416 | - Name: ContainerRepositoryName 417 | Type: PLAINTEXT 418 | Value: !Sub '${AWS::AccountId}.dkr.ecr.us-east-1.amazonaws.com/${EcrRepositoryName}' 419 | - Name: S3CodeArtifactBucket 420 | Type: PLAINTEXT 421 | Value: !Ref CodeArtifactBucket 422 | - Name: BaseImageAccountId 423 | Type: PLAINTEXT 424 | Value: !Sub '${AWS::AccountId}' 425 | Source: 426 | Type: CODEPIPELINE 427 | BuildSpec: !Ref BuildSpecLoc 428 | 429 | CodeBuildRole: 430 | Type: AWS::IAM::Role 431 | Properties: 432 | RoleName: !Sub 'MathRole-CodeBuild' 433 | PermissionsBoundary: !Sub arn:aws:iam::${AWS::AccountId}:policy/Math-Boundary-Policy 434 | AssumeRolePolicyDocument: 435 | Version: '2012-10-17' 436 | Statement: 437 | - Effect: Allow 438 | Principal: 439 | Service: 440 | - codebuild.amazonaws.com 441 | Action: 442 | - sts:AssumeRole 443 | ManagedPolicyArns: 444 | - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPowerUser 445 | 446 | CodeBuildPolicy: 447 | Type: AWS::IAM::Policy 448 | DependsOn: CodeBuildRole 449 | Properties: 450 | PolicyName: !Sub 'MathPolicy-CodeBuildPolicy' 451 | PolicyDocument: 452 | Version: "2012-10-17" 453 | Statement: 454 | Effect: Allow 455 | Action: 456 | - s3:* 457 | - logs:* 458 | - codebuild:* 459 | - ec2:* 460 | - codepipeline:* 461 | - iam:PassRole 462 | - iam:ListRoles 463 | - ecs:* 464 | - ssm:GetParameter 465 | - ssm:DescribeParameters 466 | - ssm:GetParameters 467 | - ssm:AddTagsToResource 468 | Resource: "*" 469 | Roles: 470 | - !Ref CodeBuildRole 471 | 472 | CodePipeline: 473 | Type: AWS::CodePipeline::Pipeline 474 | DependsOn: [BuildProject, CodePipelinePolicy, PipelineArtifactBucket,EcsService] 475 | Properties: 476 | Name: !Ref PipelineName 477 | RoleArn: !GetAtt CodePipelineServiceRole.Arn 478 | ArtifactStore: 479 | Type: S3 480 | Location: !Ref PipelineArtifactBucket 481 | Stages: 482 | - Name: Source 483 | Actions: 484 | - Name: GitHub 485 | ActionTypeId: 486 | Category: Source 487 | Owner: ThirdParty 488 | Version: 1 489 | Provider: GitHub 490 | OutputArtifacts: 491 | - Name: Source 492 | Configuration: 493 | Owner: !Ref GitHubUser 494 | Repo: !Ref GitHubRepository 495 | Branch: !Ref GitHubBranch 496 | OAuthToken: '{{resolve:secretsmanager:covid-risk-score/rshiny/oauth:SecretString}}' 497 | PollForSourceChanges: true 498 | RunOrder: 1 499 | 500 | - Name: DockerBuild 501 | Actions: 502 | - Name: CodeBuild 503 | InputArtifacts: 504 | - Name: Source 505 | ActionTypeId: 506 | Category: Build 507 | Owner: AWS 508 | Version: 1 509 | Provider: CodeBuild 510 | OutputArtifacts: 511 | - Name: BuildOutput 512 | Configuration: 513 | ProjectName: !Ref BuildProject 514 | RunOrder: 1 515 | 516 | - Name: ECSDeploy 517 | Actions: 518 | - Name: DeployContainers 519 | InputArtifacts: 520 | - Name: BuildOutput 521 | ActionTypeId: 522 | Category: Deploy 523 | Owner: AWS 524 | Version: 1 525 | Provider: ECS 526 | Configuration: 527 | ClusterName: !Ref ECSCluster 528 | ServiceName: !Ref ECSService 529 | FileName: imagedefinitions.json 530 | RunOrder: 1 531 | 532 | PipelineArtifactBucket: 533 | Type: AWS::S3::Bucket 534 | Properties: 535 | BucketName: !Sub '${ApplicationName}-rshiny-pipeline-artifacts' 536 | BucketEncryption: 537 | ServerSideEncryptionConfiguration: 538 | - ServerSideEncryptionByDefault: 539 | SSEAlgorithm: AES256 540 | PublicAccessBlockConfiguration: 541 | BlockPublicAcls: true 542 | BlockPublicPolicy: true 543 | IgnorePublicAcls: true 544 | RestrictPublicBuckets: true 545 | 546 | CodeArtifactBucket: 547 | Type: AWS::S3::Bucket 548 | Properties: 549 | BucketName: !Sub '${ApplicationName}-rshiny-code-artifacts' 550 | BucketEncryption: 551 | ServerSideEncryptionConfiguration: 552 | - ServerSideEncryptionByDefault: 553 | SSEAlgorithm: AES256 554 | PublicAccessBlockConfiguration: 555 | BlockPublicAcls: true 556 | BlockPublicPolicy: true 557 | IgnorePublicAcls: true 558 | RestrictPublicBuckets: true 559 | 560 | CodePipelineServiceRole: 561 | Type: AWS::IAM::Role 562 | Properties: 563 | RoleName: !Sub 'MathRole-CodePipelineServiceRole' 564 | PermissionsBoundary: !Sub arn:aws:iam::${AWS::AccountId}:policy/Math-Boundary-Policy 565 | Path: / 566 | AssumeRolePolicyDocument: 567 | Version: 2012-10-17 568 | Statement: 569 | - Effect: Allow 570 | Principal: 571 | Service: codepipeline.amazonaws.com 572 | Action: sts:AssumeRole 573 | 574 | CodePipelinePolicy: 575 | Type: AWS::IAM::Policy 576 | DependsOn: CodePipelineServiceRole 577 | Properties: 578 | PolicyName: !Sub 'MathPolicy-CodePipelinePolicy' 579 | PolicyDocument: 580 | Version: "2012-10-17" 581 | Statement: 582 | Effect: Allow 583 | Action: 584 | - logs:CreateLogGroup 585 | - logs:CreateLogStream 586 | - logs:PutLogEvents 587 | - ecs:* 588 | - elasticloadbalancing:* 589 | - s3:PutObject 590 | - s3:GetObject 591 | - ecr:DescribeImages 592 | - iam:PassRole 593 | - iam:ListRoles 594 | - codebuild:* 595 | - cloudformation:List* 596 | - cloudformation:Get* 597 | - cloudformation:PreviewStackUpdate 598 | - cloudformation:ValidateTemplate 599 | - cloudformation:CreateStack 600 | - cloudformation:CreateUploadBucket 601 | - cloudformation:DeleteStack 602 | - cloudformation:Describe* 603 | - cloudformation:UpdateStack 604 | Resource: "*" 605 | Roles: 606 | - !Ref CodePipelineServiceRole 607 | 608 | 609 | #################################################################### 610 | # OUTPUTS 611 | #################################################################### 612 | Outputs: 613 | PipelineUrl: 614 | Value: !Sub https://console.aws.amazon.com/codepipeline/home?region=${AWS::Region}#/view/${CodePipeline} 615 | Description: Codepipeline location 616 | Export: 617 | Name: !Sub ${AWS::StackName}-CodePipeline 618 | 619 | -------------------------------------------------------------------------------- /app/info_html.R: -------------------------------------------------------------------------------- 1 | 2 | # disclaimer popup 3 | disclaimerpopupHTML <- function(){ 4 | # return 5 | tagList( 6 | tags$p("This tool works best on Google Chrome and mobile.", class = "text-warning"), 7 | tags$p("We do not retain any information that you provide in connection with your use of the tool."), 8 | tags$p("Your use of this tool is subject to these ", tags$a("Terms of Use.", href=urls$terms_of_use)), 9 | tags$p(style="color:#DF691A", "THE INFORMATION PROVIDED BY THIS TOOL IS NOT MEDICAL ADVICE AND CANNOT BE 10 | USED TO DIAGNOSE OR TREAT ANY MEDICAL CONDITION. See FAQ for more information.", class = "text-warning"), 11 | tags$p("The 19andMe app and API are no longer being updated as of March 31st, 2023. 12 | For demonstration purposes, the tool returns risk scores as of April 6th, 2022.", class = "text-warning") 13 | ) 14 | } 15 | 16 | # render the Methodology 17 | renderMethodsHtml <- function() { 18 | # return 19 | tagList( 20 | tags$p(""), 21 | tags$p('Our "Risk Score" visualization is the quantity {Exposure * Susceptibility}, normalized by the average disease burden of flu for the average American, logarithmically scaled.'), 22 | tags$p('In the 2018-2019 flu season, the US had 35 million cases, 0.5 million hospitalizations, and almost 35,000 deaths (', 23 | tags$a('Source: CDC', href = urls$cdc_flu), 24 | ').'), 25 | tags$p("Exposure represents how likely it is that you've been infected with the virus. It's a function of the prevalence of active cases in your 26 | community and ", 27 | tags$a("transmissibility estimates.", href = urls$cdc_mm6909e1), 28 | "You can reduce your exposure by ", 29 | tags$a("social distancing, practicing good hygiene, and closely following the directives of your local public health officials.", 30 | href = urls$cdc_prevention), 31 | "Your personal susceptibility to COVID-19 is quantified by {P(hospitalization) + P(ICU) + P(death)}.", 32 | "Please remember that even if your personal susceptibility is low, you can still help by preventing spread to others." 33 | ), 34 | tags$p(""), 35 | tags$h4("Exposure:"), 36 | tags$ol( 37 | tags$li( 38 | "To estimate the number of people in your county currently infected with COVID-19, we use the county-level daily case counts reported by ", 39 | tags$a("the USAFacts published data on COVID-19 cases & deaths ", href = urls$usafacts_data), 40 | " and the average length of sickness reported by ", 41 | tags$a("Wolfel et al (2020)", href = urls$wolfer_etall_2020), " and the ", 42 | tags$a("COVID-19 Symptom Study. ", href = urls$covid_symptom_study), 43 | "USAFacts reports all Kansas City cases under Jackson County, MO even though three other counties overlap Kansas City, ", 44 | "so we report cases for all four of these counties aggregated together into 'Kansas City and surrounding counties'."), 45 | tags$li( 46 | "Due to rapid spread and insufficient testing during the COVID-19 pandemic, there are likely additional unreported cases beyond the 47 | officially reported cases. We use the methodology reported by ", tags$a("Russell et al (2020)", href = urls$russel_etal_2020), 48 | "and the infection fatality rate used in the economic analysis by ", 49 | tags$a("Xue et al (2022)", href=urls$xue_etal_2022), 50 | "to estimate the number of cases in your county that were not reported."), 51 | 52 | tags$ul(tags$li("The methodology from ", tags$a("Russell et al (2020)", href = urls$russel_etal_2020), 53 | " uses the county-level case fatality rate (CFR) to estimate the percentage of cases that are not reported. ", 54 | "Because under-reporting has decreased since the beginning of the pandemic (in part due to increased access to testing), ", 55 | " we use a 90-day moving window for cases and deaths to calculate the county-level CFR. ", 56 | "Because the CFR is noisy for counties with few cases, we use an ", 57 | tags$a("empirical Bayes", href = urls$empirical_bayes), " adjustment to shrink the county CFR ", 58 | "towards the state CFR.", 59 | "The result is that for counties with many cases, we essentially use the county-level CFR, ", 60 | "but for counties with only a few cases we use a CFR that is partway between the county and state CFRs. ")), 61 | tags$li( 62 | "Estimations of the probability of having COVID-19 given symptoms are calculated using a logistic regression model published on Nature Medicine developed by ", 63 | tags$a("Menni et al (2020).", href = urls$menni_etall_2020), 64 | "This is the largest study so far using self-reported symptoms of more than 2.6 million participants to predict probable infection of COVID-19. " 65 | ), 66 | tags$li("The effects of wearing masks and hand hygiene on reducing the spread of SARS-CoV-2 and similar respiratory viruses were obtained from two systematic review and meta-analysis studies: ", 67 | tags$a("Chu et al (2020) ", href = urls$chu_etal_2020), 68 | "and ", 69 | tags$a("Jefferson et al (2008). ", href = urls$jefferson_etal_2008), 70 | "Without randomized trials, these systematic appraisals of the current best available evidence are useful to inform interim guidance. "), 71 | tags$li("The efficacy data of the Pfizer-BioNTech, Moderna, Johnson and Johnson, and AstraZeneca COVID-19 vaccines against infection were obtained from 72 | FDA Emergency Use Authorization fact sheets and peer-reviewed journal articles", 73 | tags$a("FDA (2020a)", href = urls$pfizer_eua_2020), ", ", tags$a("FDA (2020b)", href = urls$moderna_eua_2020), ", ", 74 | tags$a("FDA (2021)", href = urls$jandj_eua_2021), ", and ", tags$a("Voysey et al (2021)", href = urls$voysey_etal_2021), 75 | ". We adjusted these vaccine efficacy rates to account for the Delta variant by using 76 | a recent large-scale study in the United Kingdom on vaccine efficacy the B.1.617.2 (Delta) variant completed by ", 77 | tags$a("Bernal et al (2021b)", href = urls$bernal_etal_2021b), 78 | ". Then we estimated vaccine effectiveness over time based on a systematic review and meta-regression completed by ", 79 | tags$a("Feilkin et al (2021)", href = urls$feilkin_etal_2021), "."), 80 | tags$li("Activity risk levels for COVID-19 are based on a professional review panel completed by ", 81 | tags$a("BellAge", href = urls$bellage_activity_chart), 82 | ". To provide 19 and Me users with a general idea of how different activities affect risk of COVID-19 through community exposure, 83 | we grouped the activities into three categories -- high, medium, and low risk -- and assigned an equivalent 84 | number of direct contacts for each activity risk categories. 85 | Activities in the low risk category have a value of 0.5 direct contacts, medium is 86 | 1.5 direct contacts and high is 3 direct contacts. For each activity checked, the equivalent number of direct contacts is added to the number of direct 87 | contacts used to compute the risk score. For example, if two low risk activities are selected, the 19 and Me calculator 88 | adds 1 direct contact to the person's risk level." ) 89 | ), # end of ol 90 | tags$h4("Susceptibility:"), 91 | tags$ol( 92 | tags$li( 93 | "Estimates of the probability of hospitalization, ICU admission, and death among all infections, stratified by age groups, were calculated using the ", 94 | tags$a("CDC's COVID-19 Case Surveillance Public Use Data. ", href = urls$cdc_case_surv), 95 | "The calculation includes data from a recent 6-month period and ", 96 | "rates are adjusted downward to account for under-reporting of cases (the national estimate of the percentage of cases that go unreported ", 97 | "for this time period was calculated using the same methodology describe in 'Exposure')." 98 | ), 99 | tags$li("Estimations of risk factors associated with sex and underlying medical conditions were obtained from multiple studies. ", 100 | "Odds ratios are adjusted for age, sex, and other underlying conditions. ", 101 | "When an odds ratio is below 1 with a confidence interval containing 1, we round up to 1 so that no chronic conditions will decrease the COVID-19 risk score", 102 | "When no odds ratio is available for a given condition and outcome, ", 103 | "we use the same odds ratio as for another outcome (ex. use the same odds ratio for hospitalization and ICU risk). ", 104 | "In selecting studies to include, we prioritize large, US-based studies that are peer-reviewed and published in distinguished journals like Lancet, Nature, NEJM. ", 105 | "There is a temporal aspect because the earliest studies are likely selected because it was the only one available at the time. ", 106 | "Later during our monthly review and update process, if the more recent studies are considerably different from the current parameter, we would update its value. ", 107 | tags$a("Gottlieb et al (2020) ", href = urls$gottlieb), 108 | "was selected for risk factors associated with hospitalizations and ICU admissions because it is a large Chicago-based study", 109 | " that has accounted for the coexistence of multiple risk factors. ", 110 | tags$a("Zambrano et al (2020) ", href = urls$zambrano), 111 | "was selected because it was the most recent CDC MMWR that reports increased risks of severe illness associated with pregnancy.", 112 | tags$a("OpenSAFELY (2020)", href = urls$open_safely), " was a large UK study based on 17 million adults' primary care records. ", 113 | "The risk of mortality associated with various age groups in the US follows a comparable pattern to that reported by OpenSAFELY ", 114 | tags$a("(Jin et al 2020). ", href = urls$jin_etal_2020), 115 | "The risk factors of mortality were also complemented by ", 116 | tags$a("FAIR Health, ", href = urls$fairhealth), 117 | "and ", 118 | tags$a("CDC MMWR (2020). ", href = urls$cdc_mm6913e2), 119 | "We keep the list of comorbidities included in the app to be consistent with the CDC list of medical conditions that increase the risk of severe illness ", 120 | tags$a("(CDC 2021). ", href = urls$cdc_medicalconditions) 121 | ), 122 | tags$li("Odds ratios for hospitalization, ICU admission, and death associated with exercise level were obtained from ", 123 | tags$a("Sallis et al (2021)", href = urls$sallis_etal_2021), "." 124 | ), 125 | tags$li("Based on a recent large scale study in older adults in England ", 126 | tags$a("(Bernal et al 2021a), ", href = urls$bernal_etal_2021a), 127 | "we estimated the effectiveness of vaccine against emergency hospital admissions and mortality. 128 | This is an imperfect proxy, and we will keep monitoring the literature and update the calculation as more data on other population segments become available. 129 | Then we estimated vaccine effectiveness over time based on a systematic review and meta-regression completed by ", 130 | tags$a("Feilkin et al (2021)", href = urls$feilkin_etal_2021), "."), 131 | ), #end of ol 132 | tags$br(), 133 | tags$p("If you have additional suggestions about the app, data sets, or features, Please let us know at", 134 | tags$a("covid.risk.score@gmail.com", href="mailto:covid.risk.score@gmail.com"), 135 | "or visit us on ", tags$a("GitHub", href="https://github.com/mathematica-mpr/covid_risk_score")) 136 | ) # end of ul 137 | } 138 | 139 | # helper function for rendering FAQ's 140 | faqQuestion<- function(string) { 141 | return (tags$li(tags$b(tags$span(style="color:#DF691A", string)))) 142 | } 143 | 144 | # render the FAQ's 145 | renderFaqHtml <- function() { 146 | # return 147 | tagList( 148 | tags$h3("Frequently Asked Questions:"), 149 | faqQuestion("I understand that the information provided by the tool is not medical advice and cannot be 150 | used to diagnose or treat any medical condition, so how should I best use the information provided 151 | by the tool?"), 152 | tags$p("This tool provides you with an estimation of your personal susceptibility or risk of contracting 153 | COVID-19 based on the information you input into the tool. We believe that having this information 154 | can help you make better decisions when going about your daily activities. Whatever your personal 155 | risk of contracting COVID-19 may be, you should always follow the ", 156 | tags$a("CDC’s guidelines", href="https://www.cdc.gov/coronavirus/2019-ncov/communication/guidance-list.html?Sort=Date%3A%3Adesc"), 157 | " and any other guidelines provided by your state or local public health officials. It is also very important to remember that even 158 | if your risk is low, following the ", 159 | tags$a("CDC’s guidelines", href="https://www.cdc.gov/coronavirus/2019-ncov/communication/guidance-list.html?Sort=Date%3A%3Adesc"), 160 | " will help prevent spreading COVID-19 to others."), 161 | faqQuestion("Are my data captured by the app?"), 162 | tags$p("No, we do not collect or store any data you put in. We want this app to be a tool that can serve you."), 163 | faqQuestion("Why is my score so high?"), 164 | tags$p("We wanted our tool to be sensitive to the wide variety of circumstances encountered in the US right now;", 165 | "as a result, it's calibrated around a score of 50. A score of 50 is defined as an equal disease burden as ", 166 | "the flu, estimated based on total number of flu cases, hospitalizations, ICU admission, and deaths in the ", 167 | "2018-2019 flu season. For every 10x change in (Exposure*Susceptibility), the score will change by 50/3.", 168 | "Thus, for two users, one with a score of 20, and one with a score of 70, the user with a score of 70 is", 169 | "1000x more likely to have been exposed to COVID-19 and experience a serious consequence (hospitalization, ", 170 | "ICU admission, or death)."), 171 | faqQuestion("My family is sheltering in place with me. Should I count them as exposure risks?"), 172 | tags$p("As long as your family has been sheltering in place with you, you should be able to think of your family", 173 | "as a single \"user\" of the tool. However, bear in mind that their exposure risks become yours, and vice", 174 | "versa."), 175 | faqQuestion("My county only has a few (tens, hundreds, thousands) of cases. Why is my exposure risk so high?"), 176 | tags$p("Probably the most difficult/controversial/inaccurate part of our calculator is our estimation of the", 177 | "underreporting factor, the factor we use to estimate the true, larger, community prevalence of COVID-19", 178 | "in your community. In some places, our tool may be overestimating this factor, and in some places, it", 179 | "may be underestimating. Even so, it's probably good enough to get you a ballpark estimate of your risk."), 180 | tags$p("If your community has seen a huge increase in testing, has a \"test positive\" rate < 5%, and if you", 181 | "feel like anyone that wants to be tested is being tested promptly, then I think there is reason to", 182 | "believe that the authorities are tracking most of the community cases of COVID-19 in your area.", 183 | "Unfortunately, that is not true of most of the US at present."), 184 | faqQuestion("My specific medical condition isn't listed. What do I do?"), 185 | tags$p("Try using \"other conditions\" to get a catch-all estimate of your susceptibility."), 186 | faqQuestion("How is my sex assigned at birth used in risk score calculations?"), 187 | tags$p("For exposure risk, the ", tags$a("Menni et al (2020)", href = urls$menni_etall_2020), " model included 188 | self-reported 'sex at birth' as a binary independent variable with 1 indicative of male participants and 0 representing 189 | females. Therefore for the app, if sex assigned at birth selected is 'Other' or 'Prefer not to say', 190 | for the estimations of probability of symptomatic COVID-19, we code these inputs as having a 'sex at birth' equal to 0.5."), 191 | tags$p("For susceptibility, we used the original data from ", tags$a("Verity et al (2020)", href = urls$verity_etal_2020), 192 | " for people at different age groups. If the sex assigned at birth selected is 'Male' or 'Female', then we modify the estimates from ", 193 | tags$a("Verity et al (2020)", href = urls$verity_etal_2020), "by male and female odds ratio from this preprint by ", 194 | tags$a("Caramelo et al (2020)", href = urls$caramelo_etal_2020), 195 | "and if the sex assigned at birth selected is 'Other' or 'Prefer not to say', then we do not modify the estimates." ), 196 | faqQuestion("Why is race not in your app?"), 197 | tags$p("While we acknowledge people from different race groups experience different levels of adverse health outcomes due to COVID-19", 198 | ", we think race is an 'indicator', not mechanistically causal. There are other exogenous variables that better explain the health outcomes, ", 199 | "such as access to health care, nutrition, residential condition, occupation, etc. We will try to incorporate these other features when data become available."), 200 | faqQuestion("When you report 'probability of catching COVID-19 through community transmission', over what period of time does this refer to? Is this XX% chance per day?"), 201 | tags$p("We calculate the probability of community transmission as a function of the number of close contacts in a week and", 202 | "prevalence in your local community, so this is a weekly probability."), 203 | faqQuestion("Why is pregnancy added to the list of underlying conditions"), 204 | tags$p("CDC recently revised its recommendations and started to suggest pregnancy increases the risks", 205 | "of severe COVID-19 illness. Therefore we revised the list of medical conditions. ", 206 | "Odds ratio related to pregnancy was obtained from ", 207 | tags$a("Zambrano et al (2020) .", href = urls$zambrano)), 208 | faqQuestion("Are vaccinated individuals less likely to transmit COVID-19 to others around them?"), 209 | tags$p("According to the ", tags$a("CDC (2021) , ", href = urls$cdc_vax_science_brief), " data from multiple studies in different countries suggest that people vaccinated with Pfizer-BioNTech COVID-19 vaccine 210 | who develop COVID-19 have a lower viral load than unvaccinated people. This observation may indicate reduced transmissibility", 211 | "as viral load has been identified as a key driver of transmission. ", "However, infections in fully vaccinated persons are more commonly 212 | observed with the Delta variant than with other SARS-CoV-2 variants. Infections with the Delta variant in vaccinated persons potentially have reduced transmissibility than infections in unvaccinated persons", 213 | "although additional studies are needed. "), 214 | faqQuestion("How are you accounting for the dominance of the Delta variant?"), 215 | tags$p("Delta variant has changed the pandemic in two ways: increased transmission and decreased vaccination effectiveness. ", 216 | "Therefore, we have updated the transmissibility parameter in the model to account for the more contagious Delta variant. ", 217 | tags$a("The CDC (2021)", href = urls$cdc_delta_variant), " estimates that the Delta variant is more than 2x as contagious as previous variants. ", 218 | "Vaccines in the US are still highly effective, including against the Delta variant, but they are not 100% effective. ", 219 | "We modified the algorithm to account for reduced vaccine protection against Delta variant infections, using the recent data from ", 220 | "a recent study from ", tags$a("Bernal et al (2021b) .", href = urls$bernal_etal_2021b)), 221 | faqQuestion("When was the most recent update to the app and what is new?"), 222 | tags$p("We are no longer updating the COVID-19 data behind this app nor the algorithm used for risk score estimation. ", 223 | "Visit the \"Change Log\" tab to see the past updates to the algorithm."), 224 | faqQuestion("Why is the tool calculating risk scores as of April 6th 2022?"), 225 | tags$p("On March 31, 2023, the 19andMe api was discontinued and is no longer being maintained. ", 226 | "For demonstration purposes, the tool returns risk scores as of April 6th, 2022. ", 227 | "We choose the date April 6th 2022 for two reasons. ", 228 | "First, at-home testing becomes widely available in the spring of 2022. ", 229 | "Second, since spring of 2022 since the official case counts became less reliable. ", 230 | "Missouri is the first state that stopped reporting case data to ", tags$a("USAFacts", href = urls$usafacts_data), ", and they stopped on April 6th, 2022. ", 231 | "Therefore, freezing the tool as of April 6th 2022 will allow most users from anywhere in the country to test out the full functionality of the tool. "), 232 | tags$p("The 19andMe team at ", tags$a("Mathematica", href = "https://www.mathematica.org/"), " thanks you for your support through using, testing, and improving the tool. ", 233 | "We hope the tool has helped you through the COVID-19 public health emergency by empowering you with up-to-date information and personalized risk scores.") 234 | )# end of tag list 235 | } 236 | 237 | # function makes CHANGELOG API call ------------------------------------------------- 238 | renderChangelogHtml <- function() { 239 | changelog_r <- GET(urls$covid_change_log_api, add_headers("x-api-key" = Sys.getenv("X_API_KEY"))) 240 | changelog_md <- content(changelog_r, "text", encoding = "UTF-8") %>% gsub("\n###", "\n\n###", .) %>% gsub("##", "###", .) 241 | changelog_html <- HTML(markdown::markdownToHTML(text = changelog_md, fragment.only = T)) 242 | return (changelog_html) 243 | } 244 | 245 | -------------------------------------------------------------------------------- /data/county_pop.csv: -------------------------------------------------------------------------------- 1 | "","STATE","COUNTY","POPESTIMATE2019","fips" 2 | "1","01","000",4903185,"01000" 3 | "2","01","001",55869,"01001" 4 | "3","01","003",223234,"01003" 5 | "4","01","005",24686,"01005" 6 | "5","01","007",22394,"01007" 7 | "6","01","009",57826,"01009" 8 | "7","01","011",10101,"01011" 9 | "8","01","013",19448,"01013" 10 | "9","01","015",113605,"01015" 11 | "10","01","017",33254,"01017" 12 | "11","01","019",26196,"01019" 13 | "12","01","021",44428,"01021" 14 | "13","01","023",12589,"01023" 15 | "14","01","025",23622,"01025" 16 | "15","01","027",13235,"01027" 17 | "16","01","029",14910,"01029" 18 | "17","01","031",52342,"01031" 19 | "18","01","033",55241,"01033" 20 | "19","01","035",12067,"01035" 21 | "20","01","037",10663,"01037" 22 | "21","01","039",37049,"01039" 23 | "22","01","041",13772,"01041" 24 | "23","01","043",83768,"01043" 25 | "24","01","045",49172,"01045" 26 | "25","01","047",37196,"01047" 27 | "26","01","049",71513,"01049" 28 | "27","01","051",81209,"01051" 29 | "28","01","053",36633,"01053" 30 | "29","01","055",102268,"01055" 31 | "30","01","057",16302,"01057" 32 | "31","01","059",31362,"01059" 33 | "32","01","061",26271,"01061" 34 | "33","01","063",8111,"01063" 35 | "34","01","065",14651,"01065" 36 | "35","01","067",17205,"01067" 37 | "36","01","069",105882,"01069" 38 | "37","01","071",51626,"01071" 39 | "38","01","073",658573,"01073" 40 | "39","01","075",13805,"01075" 41 | "40","01","077",92729,"01077" 42 | "41","01","079",32924,"01079" 43 | "42","01","081",164542,"01081" 44 | "43","01","083",98915,"01083" 45 | "44","01","085",9726,"01085" 46 | "45","01","087",18068,"01087" 47 | "46","01","089",372909,"01089" 48 | "47","01","091",18863,"01091" 49 | "48","01","093",29709,"01093" 50 | "49","01","095",96774,"01095" 51 | "50","01","097",413210,"01097" 52 | "51","01","099",20733,"01099" 53 | "52","01","101",226486,"01101" 54 | "53","01","103",119679,"01103" 55 | "54","01","105",8923,"01105" 56 | "55","01","107",19930,"01107" 57 | "56","01","109",33114,"01109" 58 | "57","01","111",22722,"01111" 59 | "58","01","113",57961,"01113" 60 | "59","01","115",89512,"01115" 61 | "60","01","117",217702,"01117" 62 | "61","01","119",12427,"01119" 63 | "62","01","121",79978,"01121" 64 | "63","01","123",40367,"01123" 65 | "64","01","125",209355,"01125" 66 | "65","01","127",63521,"01127" 67 | "66","01","129",16326,"01129" 68 | "67","01","131",10373,"01131" 69 | "68","01","133",23629,"01133" 70 | "69","02","000",731545,"02000" 71 | "70","02","013",3337,"02013" 72 | "71","02","016",5634,"02016" 73 | "72","02","020",288000,"02020" 74 | "73","02","050",18386,"02050" 75 | "74","02","060",836,"02060" 76 | "75","02","068",2097,"02068" 77 | "76","02","070",4916,"02070" 78 | "77","02","090",96849,"02090" 79 | "78","02","100",2530,"02100" 80 | "79","02","105",2148,"02105" 81 | "80","02","110",31974,"02110" 82 | "81","02","122",58708,"02122" 83 | "82","02","130",13901,"02130" 84 | "83","02","150",12998,"02150" 85 | "84","02","158",8314,"02158" 86 | "85","02","164",1592,"02164" 87 | "86","02","170",108317,"02170" 88 | "87","02","180",10004,"02180" 89 | "88","02","185",9832,"02185" 90 | "89","02","188",7621,"02188" 91 | "90","02","195",3266,"02195" 92 | "91","02","198",6203,"02198" 93 | "92","02","220",8493,"02220" 94 | "93","02","230",1183,"02230" 95 | "94","02","240",6893,"02240" 96 | "95","02","261",9202,"02261" 97 | "96","02","275",2502,"02275" 98 | "97","02","282",579,"02282" 99 | "98","02","290",5230,"02290" 100 | "99","04","000",7278717,"04000" 101 | "100","04","001",71887,"04001" 102 | "101","04","003",125922,"04003" 103 | "102","04","005",143476,"04005" 104 | "103","04","007",54018,"04007" 105 | "104","04","009",38837,"04009" 106 | "105","04","011",9498,"04011" 107 | "106","04","012",21108,"04012" 108 | "107","04","013",4485414,"04013" 109 | "108","04","015",212181,"04015" 110 | "109","04","017",110924,"04017" 111 | "110","04","019",1047279,"04019" 112 | "111","04","021",462789,"04021" 113 | "112","04","023",46498,"04023" 114 | "113","04","025",235099,"04025" 115 | "114","04","027",213787,"04027" 116 | "115","05","000",3017804,"05000" 117 | "116","05","001",17486,"05001" 118 | "117","05","003",19657,"05003" 119 | "118","05","005",41932,"05005" 120 | "119","05","007",279141,"05007" 121 | "120","05","009",37432,"05009" 122 | "121","05","011",10763,"05011" 123 | "122","05","013",5189,"05013" 124 | "123","05","015",28380,"05015" 125 | "124","05","017",10118,"05017" 126 | "125","05","019",22320,"05019" 127 | "126","05","021",14551,"05021" 128 | "127","05","023",24919,"05023" 129 | "128","05","025",7956,"05025" 130 | "129","05","027",23457,"05027" 131 | "130","05","029",20846,"05029" 132 | "131","05","031",110332,"05031" 133 | "132","05","033",63257,"05033" 134 | "133","05","035",47955,"05035" 135 | "134","05","037",16419,"05037" 136 | "135","05","039",7009,"05039" 137 | "136","05","041",11361,"05041" 138 | "137","05","043",18219,"05043" 139 | "138","05","045",126007,"05045" 140 | "139","05","047",17715,"05047" 141 | "140","05","049",12477,"05049" 142 | "141","05","051",99386,"05051" 143 | "142","05","053",18265,"05053" 144 | "143","05","055",45325,"05055" 145 | "144","05","057",21532,"05057" 146 | "145","05","059",33771,"05059" 147 | "146","05","061",13202,"05061" 148 | "147","05","063",37825,"05063" 149 | "148","05","065",13629,"05065" 150 | "149","05","067",16719,"05067" 151 | "150","05","069",66824,"05069" 152 | "151","05","071",26578,"05071" 153 | "152","05","073",6624,"05073" 154 | "153","05","075",16406,"05075" 155 | "154","05","077",8857,"05077" 156 | "155","05","079",13024,"05079" 157 | "156","05","081",12259,"05081" 158 | "157","05","083",21466,"05083" 159 | "158","05","085",73309,"05085" 160 | "159","05","087",16576,"05087" 161 | "160","05","089",16694,"05089" 162 | "161","05","091",43257,"05091" 163 | "162","05","093",40651,"05093" 164 | "163","05","095",6701,"05095" 165 | "164","05","097",8986,"05097" 166 | "165","05","099",8252,"05099" 167 | "166","05","101",7753,"05101" 168 | "167","05","103",23382,"05103" 169 | "168","05","105",10455,"05105" 170 | "169","05","107",17782,"05107" 171 | "170","05","109",10718,"05109" 172 | "171","05","111",23528,"05111" 173 | "172","05","113",19964,"05113" 174 | "173","05","115",64072,"05115" 175 | "174","05","117",8062,"05117" 176 | "175","05","119",391911,"05119" 177 | "176","05","121",17958,"05121" 178 | "177","05","123",24994,"05123" 179 | "178","05","125",122437,"05125" 180 | "179","05","127",10281,"05127" 181 | "180","05","129",7881,"05129" 182 | "181","05","131",127827,"05131" 183 | "182","05","133",17007,"05133" 184 | "183","05","135",17442,"05135" 185 | "184","05","137",12506,"05137" 186 | "185","05","139",38682,"05139" 187 | "186","05","141",16545,"05141" 188 | "187","05","143",239187,"05143" 189 | "188","05","145",78753,"05145" 190 | "189","05","147",6320,"05147" 191 | "190","05","149",21341,"05149" 192 | "191","06","000",39512223,"06000" 193 | "192","06","001",1671329,"06001" 194 | "193","06","003",1129,"06003" 195 | "194","06","005",39752,"06005" 196 | "195","06","007",219186,"06007" 197 | "196","06","009",45905,"06009" 198 | "197","06","011",21547,"06011" 199 | "198","06","013",1153526,"06013" 200 | "199","06","015",27812,"06015" 201 | "200","06","017",192843,"06017" 202 | "201","06","019",999101,"06019" 203 | "202","06","021",28393,"06021" 204 | "203","06","023",135558,"06023" 205 | "204","06","025",181215,"06025" 206 | "205","06","027",18039,"06027" 207 | "206","06","029",900202,"06029" 208 | "207","06","031",152940,"06031" 209 | "208","06","033",64386,"06033" 210 | "209","06","035",30573,"06035" 211 | "210","06","037",10039107,"06037" 212 | "211","06","039",157327,"06039" 213 | "212","06","041",258826,"06041" 214 | "213","06","043",17203,"06043" 215 | "214","06","045",86749,"06045" 216 | "215","06","047",277680,"06047" 217 | "216","06","049",8841,"06049" 218 | "217","06","051",14444,"06051" 219 | "218","06","053",434061,"06053" 220 | "219","06","055",137744,"06055" 221 | "220","06","057",99755,"06057" 222 | "221","06","059",3175692,"06059" 223 | "222","06","061",398329,"06061" 224 | "223","06","063",18807,"06063" 225 | "224","06","065",2470546,"06065" 226 | "225","06","067",1552058,"06067" 227 | "226","06","069",62808,"06069" 228 | "227","06","071",2180085,"06071" 229 | "228","06","073",3338330,"06073" 230 | "229","06","075",881549,"06075" 231 | "230","06","077",762148,"06077" 232 | "231","06","079",283111,"06079" 233 | "232","06","081",766573,"06081" 234 | "233","06","083",446499,"06083" 235 | "234","06","085",1927852,"06085" 236 | "235","06","087",273213,"06087" 237 | "236","06","089",180080,"06089" 238 | "237","06","091",3005,"06091" 239 | "238","06","093",43539,"06093" 240 | "239","06","095",447643,"06095" 241 | "240","06","097",494336,"06097" 242 | "241","06","099",550660,"06099" 243 | "242","06","101",96971,"06101" 244 | "243","06","103",65084,"06103" 245 | "244","06","105",12285,"06105" 246 | "245","06","107",466195,"06107" 247 | "246","06","109",54478,"06109" 248 | "247","06","111",846006,"06111" 249 | "248","06","113",220500,"06113" 250 | "249","06","115",78668,"06115" 251 | "250","08","000",5758736,"08000" 252 | "251","08","001",517421,"08001" 253 | "252","08","003",16233,"08003" 254 | "253","08","005",656590,"08005" 255 | "254","08","007",14029,"08007" 256 | "255","08","009",3581,"08009" 257 | "256","08","011",5577,"08011" 258 | "257","08","013",326196,"08013" 259 | "258","08","014",70465,"08014" 260 | "259","08","015",20356,"08015" 261 | "260","08","017",1831,"08017" 262 | "261","08","019",9700,"08019" 263 | "262","08","021",8205,"08021" 264 | "263","08","023",3887,"08023" 265 | "264","08","025",6061,"08025" 266 | "265","08","027",5068,"08027" 267 | "266","08","029",31162,"08029" 268 | "267","08","031",727211,"08031" 269 | "268","08","033",2055,"08033" 270 | "269","08","035",351154,"08035" 271 | "270","08","037",55127,"08037" 272 | "271","08","039",26729,"08039" 273 | "272","08","041",720403,"08041" 274 | "273","08","043",47839,"08043" 275 | "274","08","045",60061,"08045" 276 | "275","08","047",6243,"08047" 277 | "276","08","049",15734,"08049" 278 | "277","08","051",17462,"08051" 279 | "278","08","053",820,"08053" 280 | "279","08","055",6897,"08055" 281 | "280","08","057",1392,"08057" 282 | "281","08","059",582881,"08059" 283 | "282","08","061",1406,"08061" 284 | "283","08","063",7097,"08063" 285 | "284","08","065",8127,"08065" 286 | "285","08","067",56221,"08067" 287 | "286","08","069",356899,"08069" 288 | "287","08","071",14506,"08071" 289 | "288","08","073",5701,"08073" 290 | "289","08","075",22409,"08075" 291 | "290","08","077",154210,"08077" 292 | "291","08","079",769,"08079" 293 | "292","08","081",13283,"08081" 294 | "293","08","083",26183,"08083" 295 | "294","08","085",42758,"08085" 296 | "295","08","087",29068,"08087" 297 | "296","08","089",18278,"08089" 298 | "297","08","091",4952,"08091" 299 | "298","08","093",18845,"08093" 300 | "299","08","095",4265,"08095" 301 | "300","08","097",17767,"08097" 302 | "301","08","099",12172,"08099" 303 | "302","08","101",168424,"08101" 304 | "303","08","103",6324,"08103" 305 | "304","08","105",11267,"08105" 306 | "305","08","107",25638,"08107" 307 | "306","08","109",6824,"08109" 308 | "307","08","111",728,"08111" 309 | "308","08","113",8179,"08113" 310 | "309","08","115",2248,"08115" 311 | "310","08","117",31011,"08117" 312 | "311","08","119",25388,"08119" 313 | "312","08","121",4908,"08121" 314 | "313","08","123",324492,"08123" 315 | "314","08","125",10019,"08125" 316 | "315","09","000",3565287,"09000" 317 | "316","09","001",943332,"09001" 318 | "317","09","003",891720,"09003" 319 | "318","09","005",180333,"09005" 320 | "319","09","007",162436,"09007" 321 | "320","09","009",854757,"09009" 322 | "321","09","011",265206,"09011" 323 | "322","09","013",150721,"09013" 324 | "323","09","015",116782,"09015" 325 | "324","10","000",973764,"10000" 326 | "325","10","001",180786,"10001" 327 | "326","10","003",558753,"10003" 328 | "327","10","005",234225,"10005" 329 | "328","11","000",705749,"11000" 330 | "329","11","001",705749,"11001" 331 | "330","12","000",21477737,"12000" 332 | "331","12","001",269043,"12001" 333 | "332","12","003",29210,"12003" 334 | "333","12","005",174705,"12005" 335 | "334","12","007",28201,"12007" 336 | "335","12","009",601942,"12009" 337 | "336","12","011",1952778,"12011" 338 | "337","12","013",14105,"12013" 339 | "338","12","015",188910,"12015" 340 | "339","12","017",149657,"12017" 341 | "340","12","019",219252,"12019" 342 | "341","12","021",384902,"12021" 343 | "342","12","023",71686,"12023" 344 | "343","12","027",38001,"12027" 345 | "344","12","029",16826,"12029" 346 | "345","12","031",957755,"12031" 347 | "346","12","033",318316,"12033" 348 | "347","12","035",115081,"12035" 349 | "348","12","037",12125,"12037" 350 | "349","12","039",45660,"12039" 351 | "350","12","041",18582,"12041" 352 | "351","12","043",13811,"12043" 353 | "352","12","045",13639,"12045" 354 | "353","12","047",14428,"12047" 355 | "354","12","049",26937,"12049" 356 | "355","12","051",42022,"12051" 357 | "356","12","053",193920,"12053" 358 | "357","12","055",106221,"12055" 359 | "358","12","057",1471968,"12057" 360 | "359","12","059",19617,"12059" 361 | "360","12","061",159923,"12061" 362 | "361","12","063",46414,"12063" 363 | "362","12","065",14246,"12065" 364 | "363","12","067",8422,"12067" 365 | "364","12","069",367118,"12069" 366 | "365","12","071",770577,"12071" 367 | "366","12","073",293582,"12073" 368 | "367","12","075",41503,"12075" 369 | "368","12","077",8354,"12077" 370 | "369","12","079",18493,"12079" 371 | "370","12","081",403253,"12081" 372 | "371","12","083",365579,"12083" 373 | "372","12","085",161000,"12085" 374 | "373","12","086",2716940,"12086" 375 | "374","12","087",74228,"12087" 376 | "375","12","089",88625,"12089" 377 | "376","12","091",210738,"12091" 378 | "377","12","093",42168,"12093" 379 | "378","12","095",1393452,"12095" 380 | "379","12","097",375751,"12097" 381 | "380","12","099",1496770,"12099" 382 | "381","12","101",553947,"12101" 383 | "382","12","103",974996,"12103" 384 | "383","12","105",724777,"12105" 385 | "384","12","107",74521,"12107" 386 | "385","12","109",264672,"12109" 387 | "386","12","111",328297,"12111" 388 | "387","12","113",184313,"12113" 389 | "388","12","115",433742,"12115" 390 | "389","12","117",471826,"12117" 391 | "390","12","119",132420,"12119" 392 | "391","12","121",44417,"12121" 393 | "392","12","123",21569,"12123" 394 | "393","12","125",15237,"12125" 395 | "394","12","127",553284,"12127" 396 | "395","12","129",33739,"12129" 397 | "396","12","131",74071,"12131" 398 | "397","12","133",25473,"12133" 399 | "398","13","000",10617423,"13000" 400 | "399","13","001",18386,"13001" 401 | "400","13","003",8165,"13003" 402 | "401","13","005",11164,"13005" 403 | "402","13","007",3038,"13007" 404 | "403","13","009",44890,"13009" 405 | "404","13","011",19234,"13011" 406 | "405","13","013",83240,"13013" 407 | "406","13","015",107738,"13015" 408 | "407","13","017",16700,"13017" 409 | "408","13","019",19397,"13019" 410 | "409","13","021",153159,"13021" 411 | "410","13","023",12873,"13023" 412 | "411","13","025",19109,"13025" 413 | "412","13","027",15457,"13027" 414 | "413","13","029",39627,"13029" 415 | "414","13","031",79608,"13031" 416 | "415","13","033",22383,"13033" 417 | "416","13","035",24936,"13035" 418 | "417","13","037",6189,"13037" 419 | "418","13","039",54666,"13039" 420 | "419","13","043",10803,"13043" 421 | "420","13","045",119992,"13045" 422 | "421","13","047",67580,"13047" 423 | "422","13","049",13392,"13049" 424 | "423","13","051",289430,"13051" 425 | "424","13","053",10907,"13053" 426 | "425","13","055",24789,"13055" 427 | "426","13","057",258773,"13057" 428 | "427","13","059",128331,"13059" 429 | "428","13","061",2834,"13061" 430 | "429","13","063",292256,"13063" 431 | "430","13","065",6618,"13065" 432 | "431","13","067",760141,"13067" 433 | "432","13","069",43273,"13069" 434 | "433","13","071",45600,"13071" 435 | "434","13","073",156714,"13073" 436 | "435","13","075",17270,"13075" 437 | "436","13","077",148509,"13077" 438 | "437","13","079",12404,"13079" 439 | "438","13","081",22372,"13081" 440 | "439","13","083",16116,"13083" 441 | "440","13","085",26108,"13085" 442 | "441","13","087",26404,"13087" 443 | "442","13","089",759297,"13089" 444 | "443","13","091",20605,"13091" 445 | "444","13","093",13390,"13093" 446 | "445","13","095",87956,"13095" 447 | "446","13","097",146343,"13097" 448 | "447","13","099",10190,"13099" 449 | "448","13","101",4006,"13101" 450 | "449","13","103",64296,"13103" 451 | "450","13","105",19194,"13105" 452 | "451","13","107",22646,"13107" 453 | "452","13","109",10654,"13109" 454 | "453","13","111",26188,"13111" 455 | "454","13","113",114421,"13113" 456 | "455","13","115",98498,"13115" 457 | "456","13","117",244252,"13117" 458 | "457","13","119",23349,"13119" 459 | "458","13","121",1063937,"13121" 460 | "459","13","123",31369,"13123" 461 | "460","13","125",2971,"13125" 462 | "461","13","127",85292,"13127" 463 | "462","13","129",57963,"13129" 464 | "463","13","131",24633,"13131" 465 | "464","13","133",18324,"13133" 466 | "465","13","135",936250,"13135" 467 | "466","13","137",45328,"13137" 468 | "467","13","139",204441,"13139" 469 | "468","13","141",8457,"13141" 470 | "469","13","143",29792,"13143" 471 | "470","13","145",35236,"13145" 472 | "471","13","147",26205,"13147" 473 | "472","13","149",11923,"13149" 474 | "473","13","151",234561,"13151" 475 | "474","13","153",157863,"13153" 476 | "475","13","155",9416,"13155" 477 | "476","13","157",72977,"13157" 478 | "477","13","159",14219,"13159" 479 | "478","13","161",15115,"13161" 480 | "479","13","163",15362,"13163" 481 | "480","13","165",8676,"13165" 482 | "481","13","167",9643,"13167" 483 | "482","13","169",28735,"13169" 484 | "483","13","171",19077,"13171" 485 | "484","13","173",10423,"13173" 486 | "485","13","175",47546,"13175" 487 | "486","13","177",29992,"13177" 488 | "487","13","179",61435,"13179" 489 | "488","13","181",7921,"13181" 490 | "489","13","183",19559,"13183" 491 | "490","13","185",117406,"13185" 492 | "491","13","187",33610,"13187" 493 | "492","13","189",21312,"13189" 494 | "493","13","191",14378,"13191" 495 | "494","13","193",12947,"13193" 496 | "495","13","195",29880,"13195" 497 | "496","13","197",8359,"13197" 498 | "497","13","199",21167,"13199" 499 | "498","13","201",5718,"13201" 500 | "499","13","205",21863,"13205" 501 | "500","13","207",27578,"13207" 502 | "501","13","209",9172,"13209" 503 | "502","13","211",19276,"13211" 504 | "503","13","213",40096,"13213" 505 | "504","13","215",195769,"13215" 506 | "505","13","217",111744,"13217" 507 | "506","13","219",40280,"13219" 508 | "507","13","221",15259,"13221" 509 | "508","13","223",168667,"13223" 510 | "509","13","225",27546,"13225" 511 | "510","13","227",32591,"13227" 512 | "511","13","229",19465,"13229" 513 | "512","13","231",18962,"13231" 514 | "513","13","233",42613,"13233" 515 | "514","13","235",11137,"13235" 516 | "515","13","237",22119,"13237" 517 | "516","13","239",2299,"13239" 518 | "517","13","241",17137,"13241" 519 | "518","13","243",6778,"13243" 520 | "519","13","245",202518,"13245" 521 | "520","13","247",90896,"13247" 522 | "521","13","249",5257,"13249" 523 | "522","13","251",13966,"13251" 524 | "523","13","253",8090,"13253" 525 | "524","13","255",66703,"13255" 526 | "525","13","257",25925,"13257" 527 | "526","13","259",6621,"13259" 528 | "527","13","261",29524,"13261" 529 | "528","13","263",6195,"13263" 530 | "529","13","265",1537,"13265" 531 | "530","13","267",25286,"13267" 532 | "531","13","269",8020,"13269" 533 | "532","13","271",15860,"13271" 534 | "533","13","273",8531,"13273" 535 | "534","13","275",44451,"13275" 536 | "535","13","277",40644,"13277" 537 | "536","13","279",26830,"13279" 538 | "537","13","281",12037,"13281" 539 | "538","13","283",6901,"13283" 540 | "539","13","285",69922,"13285" 541 | "540","13","287",7985,"13287" 542 | "541","13","289",8120,"13289" 543 | "542","13","291",24511,"13291" 544 | "543","13","293",26320,"13293" 545 | "544","13","295",69761,"13295" 546 | "545","13","297",94593,"13297" 547 | "546","13","299",35734,"13299" 548 | "547","13","301",5254,"13301" 549 | "548","13","303",20374,"13303" 550 | "549","13","305",29927,"13305" 551 | "550","13","307",2607,"13307" 552 | "551","13","309",7855,"13309" 553 | "552","13","311",30798,"13311" 554 | "553","13","313",104628,"13313" 555 | "554","13","315",8635,"13315" 556 | "555","13","317",9777,"13317" 557 | "556","13","319",8954,"13319" 558 | "557","13","321",20247,"13321" 559 | "558","15","000",1415872,"15000" 560 | "559","15","001",201513,"15001" 561 | "560","15","003",974563,"15003" 562 | "561","15","005",86,"15005" 563 | "562","15","007",72293,"15007" 564 | "563","15","009",167417,"15009" 565 | "564","16","000",1787065,"16000" 566 | "565","16","001",481587,"16001" 567 | "566","16","003",4294,"16003" 568 | "567","16","005",87808,"16005" 569 | "568","16","007",6125,"16007" 570 | "569","16","009",9298,"16009" 571 | "570","16","011",46811,"16011" 572 | "571","16","013",23021,"16013" 573 | "572","16","015",7831,"16015" 574 | "573","16","017",45739,"16017" 575 | "574","16","019",119062,"16019" 576 | "575","16","021",12245,"16021" 577 | "576","16","023",2597,"16023" 578 | "577","16","025",1106,"16025" 579 | "578","16","027",229849,"16027" 580 | "579","16","029",7155,"16029" 581 | "580","16","031",24030,"16031" 582 | "581","16","033",845,"16033" 583 | "582","16","035",8756,"16035" 584 | "583","16","037",4315,"16037" 585 | "584","16","039",27511,"16039" 586 | "585","16","041",13876,"16041" 587 | "586","16","043",13099,"16043" 588 | "587","16","045",18112,"16045" 589 | "588","16","047",15179,"16047" 590 | "589","16","049",16667,"16049" 591 | "590","16","051",29871,"16051" 592 | "591","16","053",24412,"16053" 593 | "592","16","055",165697,"16055" 594 | "593","16","057",40108,"16057" 595 | "594","16","059",8027,"16059" 596 | "595","16","061",3838,"16061" 597 | "596","16","063",5366,"16063" 598 | "597","16","065",39907,"16065" 599 | "598","16","067",21039,"16067" 600 | "599","16","069",40408,"16069" 601 | "600","16","071",4531,"16071" 602 | "601","16","073",11823,"16073" 603 | "602","16","075",23951,"16075" 604 | "603","16","077",7681,"16077" 605 | "604","16","079",12882,"16079" 606 | "605","16","081",12142,"16081" 607 | "606","16","083",86878,"16083" 608 | "607","16","085",11392,"16085" 609 | "608","16","087",10194,"16087" 610 | "609","17","000",12671821,"17000" 611 | "610","17","001",65435,"17001" 612 | "611","17","003",5761,"17003" 613 | "612","17","005",16426,"17005" 614 | "613","17","007",53544,"17007" 615 | "614","17","009",6578,"17009" 616 | "615","17","011",32628,"17011" 617 | "616","17","013",4739,"17013" 618 | "617","17","015",14305,"17015" 619 | "618","17","017",12147,"17017" 620 | "619","17","019",209689,"17019" 621 | "620","17","021",32304,"17021" 622 | "621","17","023",15441,"17023" 623 | "622","17","025",13184,"17025" 624 | "623","17","027",37562,"17027" 625 | "624","17","029",50621,"17029" 626 | "625","17","031",5150233,"17031" 627 | "626","17","033",18667,"17033" 628 | "627","17","035",10766,"17035" 629 | "628","17","037",104897,"17037" 630 | "629","17","039",15638,"17039" 631 | "630","17","041",19465,"17041" 632 | "631","17","043",922921,"17043" 633 | "632","17","045",17161,"17045" 634 | "633","17","047",6395,"17047" 635 | "634","17","049",34008,"17049" 636 | "635","17","051",21336,"17051" 637 | "636","17","053",12961,"17053" 638 | "637","17","055",38469,"17055" 639 | "638","17","057",34340,"17057" 640 | "639","17","059",4828,"17059" 641 | "640","17","061",12969,"17061" 642 | "641","17","063",51054,"17063" 643 | "642","17","065",8116,"17065" 644 | "643","17","067",17708,"17067" 645 | "644","17","069",3821,"17069" 646 | "645","17","071",6646,"17071" 647 | "646","17","073",48913,"17073" 648 | "647","17","075",27114,"17075" 649 | "648","17","077",56750,"17077" 650 | "649","17","079",9610,"17079" 651 | "650","17","081",37684,"17081" 652 | "651","17","083",21773,"17083" 653 | "652","17","085",21235,"17085" 654 | "653","17","087",12417,"17087" 655 | "654","17","089",532403,"17089" 656 | "655","17","091",109862,"17091" 657 | "656","17","093",128990,"17093" 658 | "657","17","095",49699,"17095" 659 | "658","17","097",696535,"17097" 660 | "659","17","099",108669,"17099" 661 | "660","17","101",15678,"17101" 662 | "661","17","103",34096,"17103" 663 | "662","17","105",35648,"17105" 664 | "663","17","107",28618,"17107" 665 | "664","17","109",29682,"17109" 666 | "665","17","111",307774,"17111" 667 | "666","17","113",171517,"17113" 668 | "667","17","115",104009,"17115" 669 | "668","17","117",44926,"17117" 670 | "669","17","119",262966,"17119" 671 | "670","17","121",37205,"17121" 672 | "671","17","123",11438,"17123" 673 | "672","17","125",13359,"17125" 674 | "673","17","127",13772,"17127" 675 | "674","17","129",12196,"17129" 676 | "675","17","131",15437,"17131" 677 | "676","17","133",34637,"17133" 678 | "677","17","135",28414,"17135" 679 | "678","17","137",33658,"17137" 680 | "679","17","139",14501,"17139" 681 | "680","17","141",50643,"17141" 682 | "681","17","143",179179,"17143" 683 | "682","17","145",20916,"17145" 684 | "683","17","147",16344,"17147" 685 | "684","17","149",15561,"17149" 686 | "685","17","151",4177,"17151" 687 | "686","17","153",5335,"17153" 688 | "687","17","155",5739,"17155" 689 | "688","17","157",31782,"17157" 690 | "689","17","159",15513,"17159" 691 | "690","17","161",141879,"17161" 692 | "691","17","163",259686,"17163" 693 | "692","17","165",23491,"17165" 694 | "693","17","167",194672,"17167" 695 | "694","17","169",6768,"17169" 696 | "695","17","171",4951,"17171" 697 | "696","17","173",21634,"17173" 698 | "697","17","175",5342,"17175" 699 | "698","17","177",44498,"17177" 700 | "699","17","179",131803,"17179" 701 | "700","17","181",16653,"17181" 702 | "701","17","183",75758,"17183" 703 | "702","17","185",11520,"17185" 704 | "703","17","187",16844,"17187" 705 | "704","17","189",13887,"17189" 706 | "705","17","191",16215,"17191" 707 | "706","17","193",13537,"17193" 708 | "707","17","195",55175,"17195" 709 | "708","17","197",690743,"17197" 710 | "709","17","199",66597,"17199" 711 | "710","17","201",282572,"17201" 712 | "711","17","203",38459,"17203" 713 | "712","18","000",6732219,"18000" 714 | "713","18","001",35777,"18001" 715 | "714","18","003",379299,"18003" 716 | "715","18","005",83779,"18005" 717 | "716","18","007",8748,"18007" 718 | "717","18","009",11758,"18009" 719 | "718","18","011",67843,"18011" 720 | "719","18","013",15092,"18013" 721 | "720","18","015",20257,"18015" 722 | "721","18","017",37689,"18017" 723 | "722","18","019",118302,"18019" 724 | "723","18","021",26225,"18021" 725 | "724","18","023",32399,"18023" 726 | "725","18","025",10577,"18025" 727 | "726","18","027",33351,"18027" 728 | "727","18","029",49458,"18029" 729 | "728","18","031",26559,"18031" 730 | "729","18","033",43475,"18033" 731 | "730","18","035",114135,"18035" 732 | "731","18","037",42736,"18037" 733 | "732","18","039",206341,"18039" 734 | "733","18","041",23102,"18041" 735 | "734","18","043",78522,"18043" 736 | "735","18","045",16346,"18045" 737 | "736","18","047",22758,"18047" 738 | "737","18","049",19974,"18049" 739 | "738","18","051",33659,"18051" 740 | "739","18","053",65769,"18053" 741 | "740","18","055",31922,"18055" 742 | "741","18","057",338011,"18057" 743 | "742","18","059",78168,"18059" 744 | "743","18","061",40515,"18061" 745 | "744","18","063",170311,"18063" 746 | "745","18","065",47972,"18065" 747 | "746","18","067",82544,"18067" 748 | "747","18","069",36520,"18069" 749 | "748","18","071",44231,"18071" 750 | "749","18","073",33562,"18073" 751 | "750","18","075",20436,"18075" 752 | "751","18","077",32308,"18077" 753 | "752","18","079",27735,"18079" 754 | "753","18","081",158167,"18081" 755 | "754","18","083",36594,"18083" 756 | "755","18","085",79456,"18085" 757 | "756","18","087",39614,"18087" 758 | "757","18","089",485493,"18089" 759 | "758","18","091",109888,"18091" 760 | "759","18","093",45370,"18093" 761 | "760","18","095",129569,"18095" 762 | "761","18","097",964582,"18097" 763 | "762","18","099",46258,"18099" 764 | "763","18","101",10255,"18101" 765 | "764","18","103",35516,"18103" 766 | "765","18","105",148431,"18105" 767 | "766","18","107",38338,"18107" 768 | "767","18","109",70489,"18109" 769 | "768","18","111",13984,"18111" 770 | "769","18","113",47744,"18113" 771 | "770","18","115",5875,"18115" 772 | "771","18","117",19646,"18117" 773 | "772","18","119",20799,"18119" 774 | "773","18","121",16937,"18121" 775 | "774","18","123",19169,"18123" 776 | "775","18","125",12389,"18125" 777 | "776","18","127",170389,"18127" 778 | "777","18","129",25427,"18129" 779 | "778","18","131",12353,"18131" 780 | "779","18","133",37576,"18133" 781 | "780","18","135",24665,"18135" 782 | "781","18","137",28324,"18137" 783 | "782","18","139",16581,"18139" 784 | "783","18","141",271826,"18141" 785 | "784","18","143",23873,"18143" 786 | "785","18","145",44729,"18145" 787 | "786","18","147",20277,"18147" 788 | "787","18","149",22995,"18149" 789 | "788","18","151",34594,"18151" 790 | "789","18","153",20669,"18153" 791 | "790","18","155",10751,"18155" 792 | "791","18","157",195732,"18157" 793 | "792","18","159",15148,"18159" 794 | "793","18","161",7054,"18161" 795 | "794","18","163",181451,"18163" 796 | "795","18","165",15498,"18165" 797 | "796","18","167",107038,"18167" 798 | "797","18","169",30996,"18169" 799 | "798","18","171",8265,"18171" 800 | "799","18","173",62998,"18173" 801 | "800","18","175",28036,"18175" 802 | "801","18","177",65884,"18177" 803 | "802","18","179",28296,"18179" 804 | "803","18","181",24102,"18181" 805 | "804","18","183",33964,"18183" 806 | "805","19","000",3155070,"19000" 807 | "806","19","001",7152,"19001" 808 | "807","19","003",3602,"19003" 809 | "808","19","005",13687,"19005" 810 | "809","19","007",12426,"19007" 811 | "810","19","009",5496,"19009" 812 | "811","19","011",25645,"19011" 813 | "812","19","013",131228,"19013" 814 | "813","19","015",26234,"19015" 815 | "814","19","017",25062,"19017" 816 | "815","19","019",21175,"19019" 817 | "816","19","021",19620,"19021" 818 | "817","19","023",14439,"19023" 819 | "818","19","025",9668,"19025" 820 | "819","19","027",20165,"19027" 821 | "820","19","029",12836,"19029" 822 | "821","19","031",18627,"19031" 823 | "822","19","033",42450,"19033" 824 | "823","19","035",11235,"19035" 825 | "824","19","037",11933,"19037" 826 | "825","19","039",9395,"19039" 827 | "826","19","041",16016,"19041" 828 | "827","19","043",17549,"19043" 829 | "828","19","045",46429,"19045" 830 | "829","19","047",16820,"19047" 831 | "830","19","049",93453,"19049" 832 | "831","19","051",9000,"19051" 833 | "832","19","053",7870,"19053" 834 | "833","19","055",17011,"19055" 835 | "834","19","057",38967,"19057" 836 | "835","19","059",17258,"19059" 837 | "836","19","061",97311,"19061" 838 | "837","19","063",9208,"19063" 839 | "838","19","065",19650,"19065" 840 | "839","19","067",15642,"19067" 841 | "840","19","069",10070,"19069" 842 | "841","19","071",6960,"19071" 843 | "842","19","073",8888,"19073" 844 | "843","19","075",12232,"19075" 845 | "844","19","077",10689,"19077" 846 | "845","19","079",14773,"19079" 847 | "846","19","081",10630,"19081" 848 | "847","19","083",16846,"19083" 849 | "848","19","085",14049,"19085" 850 | "849","19","087",19954,"19087" 851 | "850","19","089",9158,"19089" 852 | "851","19","091",9558,"19091" 853 | "852","19","093",6860,"19093" 854 | "853","19","095",16184,"19095" 855 | "854","19","097",19439,"19097" 856 | "855","19","099",37185,"19099" 857 | "856","19","101",18295,"19101" 858 | "857","19","103",151140,"19103" 859 | "858","19","105",20681,"19105" 860 | "859","19","107",10246,"19107" 861 | "860","19","109",14813,"19109" 862 | "861","19","111",33657,"19111" 863 | "862","19","113",226706,"19113" 864 | "863","19","115",11035,"19115" 865 | "864","19","117",8600,"19117" 866 | "865","19","119",11755,"19119" 867 | "866","19","121",16338,"19121" 868 | "867","19","123",22095,"19123" 869 | "868","19","125",33253,"19125" 870 | "869","19","127",39369,"19127" 871 | "870","19","129",15109,"19129" 872 | "871","19","131",10586,"19131" 873 | "872","19","133",8615,"19133" 874 | "873","19","135",7707,"19135" 875 | "874","19","137",9917,"19137" 876 | "875","19","139",42664,"19139" 877 | "876","19","141",13753,"19141" 878 | "877","19","143",5958,"19143" 879 | "878","19","145",15107,"19145" 880 | "879","19","147",8886,"19147" 881 | "880","19","149",25177,"19149" 882 | "881","19","151",6619,"19151" 883 | "882","19","153",490161,"19153" 884 | "883","19","155",93206,"19155" 885 | "884","19","157",18504,"19157" 886 | "885","19","159",4894,"19159" 887 | "886","19","161",9721,"19161" 888 | "887","19","163",172943,"19163" 889 | "888","19","165",11454,"19165" 890 | "889","19","167",34855,"19167" 891 | "890","19","169",97117,"19169" 892 | "891","19","171",16854,"19171" 893 | "892","19","173",6121,"19173" 894 | "893","19","175",12241,"19175" 895 | "894","19","177",7044,"19177" 896 | "895","19","179",34969,"19179" 897 | "896","19","181",51466,"19181" 898 | "897","19","183",21965,"19183" 899 | "898","19","185",6441,"19185" 900 | "899","19","187",35904,"19187" 901 | "900","19","189",10354,"19189" 902 | "901","19","191",19991,"19191" 903 | "902","19","193",103107,"19193" 904 | "903","19","195",7381,"19195" 905 | "904","19","197",12562,"19197" 906 | "905","20","000",2913314,"20000" 907 | "906","20","001",12369,"20001" 908 | "907","20","003",7858,"20003" 909 | "908","20","005",16073,"20005" 910 | "909","20","007",4427,"20007" 911 | "910","20","009",25779,"20009" 912 | "911","20","011",14534,"20011" 913 | "912","20","013",9564,"20013" 914 | "913","20","015",66911,"20015" 915 | "914","20","017",2648,"20017" 916 | "915","20","019",3250,"20019" 917 | "916","20","021",19939,"20021" 918 | "917","20","023",2657,"20023" 919 | "918","20","025",1994,"20025" 920 | "919","20","027",8002,"20027" 921 | "920","20","029",8786,"20029" 922 | "921","20","031",8179,"20031" 923 | "922","20","033",1700,"20033" 924 | "923","20","035",34908,"20035" 925 | "924","20","037",38818,"20037" 926 | "925","20","039",2827,"20039" 927 | "926","20","041",18466,"20041" 928 | "927","20","043",7600,"20043" 929 | "928","20","045",122259,"20045" 930 | "929","20","047",2798,"20047" 931 | "930","20","049",2530,"20049" 932 | "931","20","051",28553,"20051" 933 | "932","20","053",6102,"20053" 934 | "933","20","055",36467,"20055" 935 | "934","20","057",33619,"20057" 936 | "935","20","059",25544,"20059" 937 | "936","20","061",31670,"20061" 938 | "937","20","063",2636,"20063" 939 | "938","20","065",2482,"20065" 940 | "939","20","067",7150,"20067" 941 | "940","20","069",5988,"20069" 942 | "941","20","071",1232,"20071" 943 | "942","20","073",5982,"20073" 944 | "943","20","075",2539,"20075" 945 | "944","20","077",5436,"20077" 946 | "945","20","079",34429,"20079" 947 | "946","20","081",3968,"20081" 948 | "947","20","083",1794,"20083" 949 | "948","20","085",13171,"20085" 950 | "949","20","087",19043,"20087" 951 | "950","20","089",2879,"20089" 952 | "951","20","091",602401,"20091" 953 | "952","20","093",3838,"20093" 954 | "953","20","095",7152,"20095" 955 | "954","20","097",2475,"20097" 956 | "955","20","099",19618,"20099" 957 | "956","20","101",1535,"20101" 958 | "957","20","103",81758,"20103" 959 | "958","20","105",2962,"20105" 960 | "959","20","107",9703,"20107" 961 | "960","20","109",2794,"20109" 962 | "961","20","111",33195,"20111" 963 | "962","20","113",28542,"20113" 964 | "963","20","115",11884,"20115" 965 | "964","20","117",9707,"20117" 966 | "965","20","119",4033,"20119" 967 | "966","20","121",34237,"20121" 968 | "967","20","123",5979,"20123" 969 | "968","20","125",31829,"20125" 970 | "969","20","127",5620,"20127" 971 | "970","20","129",2587,"20129" 972 | "971","20","131",10231,"20131" 973 | "972","20","133",16007,"20133" 974 | "973","20","135",2750,"20135" 975 | "974","20","137",5361,"20137" 976 | "975","20","139",15949,"20139" 977 | "976","20","141",3421,"20141" 978 | "977","20","143",5704,"20143" 979 | "978","20","145",6414,"20145" 980 | "979","20","147",5234,"20147" 981 | "980","20","149",24383,"20149" 982 | "981","20","151",9164,"20151" 983 | "982","20","153",2530,"20153" 984 | "983","20","155",61998,"20155" 985 | "984","20","157",4636,"20157" 986 | "985","20","159",9537,"20159" 987 | "986","20","161",74232,"20161" 988 | "987","20","163",4920,"20163" 989 | "988","20","165",3036,"20165" 990 | "989","20","167",6856,"20167" 991 | "990","20","169",54224,"20169" 992 | "991","20","171",4823,"20171" 993 | "992","20","173",516042,"20173" 994 | "993","20","175",21428,"20175" 995 | "994","20","177",176875,"20177" 996 | "995","20","179",2521,"20179" 997 | "996","20","181",5917,"20181" 998 | "997","20","183",3583,"20183" 999 | "998","20","185",4156,"20185" 1000 | "999","20","187",2006,"20187" 1001 | "1000","20","189",5485,"20189" 1002 | "1001","20","191",22836,"20191" 1003 | "1002","20","193",7777,"20193" 1004 | "1003","20","195",2803,"20195" 1005 | "1004","20","197",6931,"20197" 1006 | "1005","20","199",1518,"20199" 1007 | "1006","20","201",5406,"20201" 1008 | "1007","20","203",2119,"20203" 1009 | "1008","20","205",8525,"20205" 1010 | "1009","20","207",3138,"20207" 1011 | "1010","20","209",165429,"20209" 1012 | "1011","21","000",4467673,"21000" 1013 | "1012","21","001",19202,"21001" 1014 | "1013","21","003",21315,"21003" 1015 | "1014","21","005",22747,"21005" 1016 | "1015","21","007",7888,"21007" 1017 | "1016","21","009",44249,"21009" 1018 | "1017","21","011",12500,"21011" 1019 | "1018","21","013",26032,"21013" 1020 | "1019","21","015",133581,"21015" 1021 | "1020","21","017",19788,"21017" 1022 | "1021","21","019",46718,"21019" 1023 | "1022","21","021",30060,"21021" 1024 | "1023","21","023",8303,"21023" 1025 | "1024","21","025",12630,"21025" 1026 | "1025","21","027",20477,"21027" 1027 | "1026","21","029",81676,"21029" 1028 | "1027","21","031",12879,"21031" 1029 | "1028","21","033",12747,"21033" 1030 | "1029","21","035",39001,"21035" 1031 | "1030","21","037",93584,"21037" 1032 | "1031","21","039",4760,"21039" 1033 | "1032","21","041",10631,"21041" 1034 | "1033","21","043",26797,"21043" 1035 | "1034","21","045",16159,"21045" 1036 | "1035","21","047",70461,"21047" 1037 | "1036","21","049",36263,"21049" 1038 | "1037","21","051",19901,"21051" 1039 | "1038","21","053",10218,"21053" 1040 | "1039","21","055",8806,"21055" 1041 | "1040","21","057",6614,"21057" 1042 | "1041","21","059",101511,"21059" 1043 | "1042","21","061",12150,"21061" 1044 | "1043","21","063",7517,"21063" 1045 | "1044","21","065",14106,"21065" 1046 | "1045","21","067",323152,"21067" 1047 | "1046","21","069",14581,"21069" 1048 | "1047","21","071",35589,"21071" 1049 | "1048","21","073",50991,"21073" 1050 | "1049","21","075",5969,"21075" 1051 | "1050","21","077",8869,"21077" 1052 | "1051","21","079",17666,"21079" 1053 | "1052","21","081",25069,"21081" 1054 | "1053","21","083",37266,"21083" 1055 | "1054","21","085",26427,"21085" 1056 | "1055","21","087",10941,"21087" 1057 | "1056","21","089",35098,"21089" 1058 | "1057","21","091",8722,"21091" 1059 | "1058","21","093",110958,"21093" 1060 | "1059","21","095",26010,"21095" 1061 | "1060","21","097",18886,"21097" 1062 | "1061","21","099",19035,"21099" 1063 | "1062","21","101",45210,"21101" 1064 | "1063","21","103",16126,"21103" 1065 | "1064","21","105",4380,"21105" 1066 | "1065","21","107",44686,"21107" 1067 | "1066","21","109",13329,"21109" 1068 | "1067","21","111",766757,"21111" 1069 | "1068","21","113",54115,"21113" 1070 | "1069","21","115",22188,"21115" 1071 | "1070","21","117",166998,"21117" 1072 | "1071","21","119",14806,"21119" 1073 | "1072","21","121",31145,"21121" 1074 | "1073","21","123",14398,"21123" 1075 | "1074","21","125",60813,"21125" 1076 | "1075","21","127",15317,"21127" 1077 | "1076","21","129",7403,"21129" 1078 | "1077","21","131",9877,"21131" 1079 | "1078","21","133",21553,"21133" 1080 | "1079","21","135",13275,"21135" 1081 | "1080","21","137",24549,"21137" 1082 | "1081","21","139",9194,"21139" 1083 | "1082","21","141",27102,"21141" 1084 | "1083","21","143",8210,"21143" 1085 | "1084","21","145",65418,"21145" 1086 | "1085","21","147",17231,"21147" 1087 | "1086","21","149",9207,"21149" 1088 | "1087","21","151",92987,"21151" 1089 | "1088","21","153",12161,"21153" 1090 | "1089","21","155",19273,"21155" 1091 | "1090","21","157",31100,"21157" 1092 | "1091","21","159",11195,"21159" 1093 | "1092","21","161",17070,"21161" 1094 | "1093","21","163",28572,"21163" 1095 | "1094","21","165",6489,"21165" 1096 | "1095","21","167",21933,"21167" 1097 | "1096","21","169",10071,"21169" 1098 | "1097","21","171",10650,"21171" 1099 | "1098","21","173",28157,"21173" 1100 | "1099","21","175",13309,"21175" 1101 | "1100","21","177",30622,"21177" 1102 | "1101","21","179",46233,"21179" 1103 | "1102","21","181",7269,"21181" 1104 | "1103","21","183",23994,"21183" 1105 | "1104","21","185",66799,"21185" 1106 | "1105","21","187",10901,"21187" 1107 | "1106","21","189",4415,"21189" 1108 | "1107","21","191",14590,"21191" 1109 | "1108","21","193",25758,"21193" 1110 | "1109","21","195",57876,"21195" 1111 | "1110","21","197",12359,"21197" 1112 | "1111","21","199",64979,"21199" 1113 | "1112","21","201",2108,"21201" 1114 | "1113","21","203",16695,"21203" 1115 | "1114","21","205",24460,"21205" 1116 | "1115","21","207",17923,"21207" 1117 | "1116","21","209",57004,"21209" 1118 | "1117","21","211",49024,"21211" 1119 | "1118","21","213",18572,"21213" 1120 | "1119","21","215",19351,"21215" 1121 | "1120","21","217",25769,"21217" 1122 | "1121","21","219",12294,"21219" 1123 | "1122","21","221",14651,"21221" 1124 | "1123","21","223",8471,"21223" 1125 | "1124","21","225",14381,"21225" 1126 | "1125","21","227",132896,"21227" 1127 | "1126","21","229",12095,"21229" 1128 | "1127","21","231",20333,"21231" 1129 | "1128","21","233",12942,"21233" 1130 | "1129","21","235",36264,"21235" 1131 | "1130","21","237",7157,"21237" 1132 | "1131","21","239",26734,"21239" 1133 | "1132","22","000",4648794,"22000" 1134 | "1133","22","001",62045,"22001" 1135 | "1134","22","003",25627,"22003" 1136 | "1135","22","005",126604,"22005" 1137 | "1136","22","007",21891,"22007" 1138 | "1137","22","009",40144,"22009" 1139 | "1138","22","011",37497,"22011" 1140 | "1139","22","013",13241,"22013" 1141 | "1140","22","015",127039,"22015" 1142 | "1141","22","017",240204,"22017" 1143 | "1142","22","019",203436,"22019" 1144 | "1143","22","021",9918,"22021" 1145 | "1144","22","023",6973,"22023" 1146 | "1145","22","025",9494,"22025" 1147 | "1146","22","027",15670,"22027" 1148 | "1147","22","029",19259,"22029" 1149 | "1148","22","031",27463,"22031" 1150 | "1149","22","033",440059,"22033" 1151 | "1150","22","035",6861,"22035" 1152 | "1151","22","037",19135,"22037" 1153 | "1152","22","039",33395,"22039" 1154 | "1153","22","041",20015,"22041" 1155 | "1154","22","043",22389,"22043" 1156 | "1155","22","045",69830,"22045" 1157 | "1156","22","047",32511,"22047" 1158 | "1157","22","049",15744,"22049" 1159 | "1158","22","051",432493,"22051" 1160 | "1159","22","053",31368,"22053" 1161 | "1160","22","055",244390,"22055" 1162 | "1161","22","057",97614,"22057" 1163 | "1162","22","059",14892,"22059" 1164 | "1163","22","061",46742,"22061" 1165 | "1164","22","063",140789,"22063" 1166 | "1165","22","065",10951,"22065" 1167 | "1166","22","067",24874,"22067" 1168 | "1167","22","069",38158,"22069" 1169 | "1168","22","071",390144,"22071" 1170 | "1169","22","073",153279,"22073" 1171 | "1170","22","075",23197,"22075" 1172 | "1171","22","077",21730,"22077" 1173 | "1172","22","079",129648,"22079" 1174 | "1173","22","081",8442,"22081" 1175 | "1174","22","083",20122,"22083" 1176 | "1175","22","085",23884,"22085" 1177 | "1176","22","087",47244,"22087" 1178 | "1177","22","089",53100,"22089" 1179 | "1178","22","091",10132,"22091" 1180 | "1179","22","093",21096,"22093" 1181 | "1180","22","095",42837,"22095" 1182 | "1181","22","097",82124,"22097" 1183 | "1182","22","099",53431,"22099" 1184 | "1183","22","101",49348,"22101" 1185 | "1184","22","103",260419,"22103" 1186 | "1185","22","105",134758,"22105" 1187 | "1186","22","107",4334,"22107" 1188 | "1187","22","109",110461,"22109" 1189 | "1188","22","111",22108,"22111" 1190 | "1189","22","113",59511,"22113" 1191 | "1190","22","115",47429,"22115" 1192 | "1191","22","117",46194,"22117" 1193 | "1192","22","119",38340,"22119" 1194 | "1193","22","121",26465,"22121" 1195 | "1194","22","123",10830,"22123" 1196 | "1195","22","125",15568,"22125" 1197 | "1196","22","127",13904,"22127" 1198 | "1197","23","000",1344212,"23000" 1199 | "1198","23","001",108277,"23001" 1200 | "1199","23","003",67055,"23003" 1201 | "1200","23","005",295003,"23005" 1202 | "1201","23","007",30199,"23007" 1203 | "1202","23","009",54987,"23009" 1204 | "1203","23","011",122302,"23011" 1205 | "1204","23","013",39772,"23013" 1206 | "1205","23","015",34634,"23015" 1207 | "1206","23","017",57975,"23017" 1208 | "1207","23","019",152148,"23019" 1209 | "1208","23","021",16785,"23021" 1210 | "1209","23","023",35856,"23023" 1211 | "1210","23","025",50484,"23025" 1212 | "1211","23","027",39715,"23027" 1213 | "1212","23","029",31379,"23029" 1214 | "1213","23","031",207641,"23031" 1215 | "1214","24","000",6045680,"24000" 1216 | "1215","24","001",70416,"24001" 1217 | "1216","24","003",579234,"24003" 1218 | "1217","24","005",827370,"24005" 1219 | "1218","24","009",92525,"24009" 1220 | "1219","24","011",33406,"24011" 1221 | "1220","24","013",168447,"24013" 1222 | "1221","24","015",102855,"24015" 1223 | "1222","24","017",163257,"24017" 1224 | "1223","24","019",31929,"24019" 1225 | "1224","24","021",259547,"24021" 1226 | "1225","24","023",29014,"24023" 1227 | "1226","24","025",255441,"24025" 1228 | "1227","24","027",325690,"24027" 1229 | "1228","24","029",19422,"24029" 1230 | "1229","24","031",1050688,"24031" 1231 | "1230","24","033",909327,"24033" 1232 | "1231","24","035",50381,"24035" 1233 | "1232","24","037",113510,"24037" 1234 | "1233","24","039",25616,"24039" 1235 | "1234","24","041",37181,"24041" 1236 | "1235","24","043",151049,"24043" 1237 | "1236","24","045",103609,"24045" 1238 | "1237","24","047",52276,"24047" 1239 | "1238","24","510",593490,"24510" 1240 | "1239","25","000",6892503,"25000" 1241 | "1240","25","001",212990,"25001" 1242 | "1241","25","003",124944,"25003" 1243 | "1242","25","005",565217,"25005" 1244 | "1243","25","007",17332,"25007" 1245 | "1244","25","009",789034,"25009" 1246 | "1245","25","011",70180,"25011" 1247 | "1246","25","013",466372,"25013" 1248 | "1247","25","015",160830,"25015" 1249 | "1248","25","017",1611699,"25017" 1250 | "1249","25","019",11399,"25019" 1251 | "1250","25","021",706775,"25021" 1252 | "1251","25","023",521202,"25023" 1253 | "1252","25","025",803907,"25025" 1254 | "1253","25","027",830622,"25027" 1255 | "1254","26","000",9986857,"26000" 1256 | "1255","26","001",10405,"26001" 1257 | "1256","26","003",9108,"26003" 1258 | "1257","26","005",118081,"26005" 1259 | "1258","26","007",28405,"26007" 1260 | "1259","26","009",23324,"26009" 1261 | "1260","26","011",14883,"26011" 1262 | "1261","26","013",8209,"26013" 1263 | "1262","26","015",61550,"26015" 1264 | "1263","26","017",103126,"26017" 1265 | "1264","26","019",17766,"26019" 1266 | "1265","26","021",153401,"26021" 1267 | "1266","26","023",43517,"26023" 1268 | "1267","26","025",134159,"26025" 1269 | "1268","26","027",51787,"26027" 1270 | "1269","26","029",26143,"26029" 1271 | "1270","26","031",25276,"26031" 1272 | "1271","26","033",37349,"26033" 1273 | "1272","26","035",30950,"26035" 1274 | "1273","26","037",79595,"26037" 1275 | "1274","26","039",14029,"26039" 1276 | "1275","26","041",35784,"26041" 1277 | "1276","26","043",25239,"26043" 1278 | "1277","26","045",110268,"26045" 1279 | "1278","26","047",33415,"26047" 1280 | "1279","26","049",405813,"26049" 1281 | "1280","26","051",25449,"26051" 1282 | "1281","26","053",13975,"26053" 1283 | "1282","26","055",93088,"26055" 1284 | "1283","26","057",40711,"26057" 1285 | "1284","26","059",45605,"26059" 1286 | "1285","26","061",35684,"26061" 1287 | "1286","26","063",30981,"26063" 1288 | "1287","26","065",292406,"26065" 1289 | "1288","26","067",64697,"26067" 1290 | "1289","26","069",25127,"26069" 1291 | "1290","26","071",11066,"26071" 1292 | "1291","26","073",69872,"26073" 1293 | "1292","26","075",158510,"26075" 1294 | "1293","26","077",265066,"26077" 1295 | "1294","26","079",18038,"26079" 1296 | "1295","26","081",656955,"26081" 1297 | "1296","26","083",2116,"26083" 1298 | "1297","26","085",11853,"26085" 1299 | "1298","26","087",87607,"26087" 1300 | "1299","26","089",21761,"26089" 1301 | "1300","26","091",98451,"26091" 1302 | "1301","26","093",191995,"26093" 1303 | "1302","26","095",6229,"26095" 1304 | "1303","26","097",10799,"26097" 1305 | "1304","26","099",873972,"26099" 1306 | "1305","26","101",24558,"26101" 1307 | "1306","26","103",66699,"26103" 1308 | "1307","26","105",29144,"26105" 1309 | "1308","26","107",43453,"26107" 1310 | "1309","26","109",22780,"26109" 1311 | "1310","26","111",83156,"26111" 1312 | "1311","26","113",15118,"26113" 1313 | "1312","26","115",150500,"26115" 1314 | "1313","26","117",63888,"26117" 1315 | "1314","26","119",9328,"26119" 1316 | "1315","26","121",173566,"26121" 1317 | "1316","26","123",48980,"26123" 1318 | "1317","26","125",1257584,"26125" 1319 | "1318","26","127",26467,"26127" 1320 | "1319","26","129",20997,"26129" 1321 | "1320","26","131",5720,"26131" 1322 | "1321","26","133",23460,"26133" 1323 | "1322","26","135",8241,"26135" 1324 | "1323","26","137",24668,"26137" 1325 | "1324","26","139",291830,"26139" 1326 | "1325","26","141",12592,"26141" 1327 | "1326","26","143",24019,"26143" 1328 | "1327","26","145",190539,"26145" 1329 | "1328","26","147",159128,"26147" 1330 | "1329","26","149",60964,"26149" 1331 | "1330","26","151",41170,"26151" 1332 | "1331","26","153",8094,"26153" 1333 | "1332","26","155",68122,"26155" 1334 | "1333","26","157",52245,"26157" 1335 | "1334","26","159",75677,"26159" 1336 | "1335","26","161",367601,"26161" 1337 | "1336","26","163",1749343,"26163" 1338 | "1337","26","165",33631,"26165" 1339 | "1338","27","000",5639632,"27000" 1340 | "1339","27","001",15886,"27001" 1341 | "1340","27","003",356921,"27003" 1342 | "1341","27","005",34423,"27005" 1343 | "1342","27","007",47188,"27007" 1344 | "1343","27","009",40889,"27009" 1345 | "1344","27","011",4991,"27011" 1346 | "1345","27","013",67653,"27013" 1347 | "1346","27","015",25008,"27015" 1348 | "1347","27","017",35871,"27017" 1349 | "1348","27","019",105089,"27019" 1350 | "1349","27","021",29779,"27021" 1351 | "1350","27","023",11800,"27023" 1352 | "1351","27","025",56579,"27025" 1353 | "1352","27","027",64222,"27027" 1354 | "1353","27","029",8818,"27029" 1355 | "1354","27","031",5463,"27031" 1356 | "1355","27","033",11196,"27033" 1357 | "1356","27","035",65055,"27035" 1358 | "1357","27","037",429021,"27037" 1359 | "1358","27","039",20934,"27039" 1360 | "1359","27","041",38141,"27041" 1361 | "1360","27","043",13653,"27043" 1362 | "1361","27","045",21067,"27045" 1363 | "1362","27","047",30281,"27047" 1364 | "1363","27","049",46340,"27049" 1365 | "1364","27","051",5972,"27051" 1366 | "1365","27","053",1265843,"27053" 1367 | "1366","27","055",18600,"27055" 1368 | "1367","27","057",21491,"27057" 1369 | "1368","27","059",40596,"27059" 1370 | "1369","27","061",45130,"27061" 1371 | "1370","27","063",9846,"27063" 1372 | "1371","27","065",16337,"27065" 1373 | "1372","27","067",43199,"27067" 1374 | "1373","27","069",4298,"27069" 1375 | "1374","27","071",12229,"27071" 1376 | "1375","27","073",6623,"27073" 1377 | "1376","27","075",10641,"27075" 1378 | "1377","27","077",3740,"27077" 1379 | "1378","27","079",28887,"27079" 1380 | "1379","27","081",5639,"27081" 1381 | "1380","27","083",25474,"27083" 1382 | "1381","27","085",35893,"27085" 1383 | "1382","27","087",5527,"27087" 1384 | "1383","27","089",9336,"27089" 1385 | "1384","27","091",19683,"27091" 1386 | "1385","27","093",23222,"27093" 1387 | "1386","27","095",26277,"27095" 1388 | "1387","27","097",33386,"27097" 1389 | "1388","27","099",40062,"27099" 1390 | "1389","27","101",8194,"27101" 1391 | "1390","27","103",34274,"27103" 1392 | "1391","27","105",21629,"27105" 1393 | "1392","27","107",6375,"27107" 1394 | "1393","27","109",158293,"27109" 1395 | "1394","27","111",58746,"27111" 1396 | "1395","27","113",14119,"27113" 1397 | "1396","27","115",29579,"27115" 1398 | "1397","27","117",9126,"27117" 1399 | "1398","27","119",31364,"27119" 1400 | "1399","27","121",11249,"27121" 1401 | "1400","27","123",550321,"27123" 1402 | "1401","27","125",4055,"27125" 1403 | "1402","27","127",15170,"27127" 1404 | "1403","27","129",14548,"27129" 1405 | "1404","27","131",66972,"27131" 1406 | "1405","27","133",9315,"27133" 1407 | "1406","27","135",15165,"27135" 1408 | "1407","27","137",199070,"27137" 1409 | "1408","27","139",149013,"27139" 1410 | "1409","27","141",97238,"27141" 1411 | "1410","27","143",14865,"27143" 1412 | "1411","27","145",161075,"27145" 1413 | "1412","27","147",36649,"27147" 1414 | "1413","27","149",9805,"27149" 1415 | "1414","27","151",9266,"27151" 1416 | "1415","27","153",24664,"27153" 1417 | "1416","27","155",3259,"27155" 1418 | "1417","27","157",21627,"27157" 1419 | "1418","27","159",13682,"27159" 1420 | "1419","27","161",18612,"27161" 1421 | "1420","27","163",262440,"27163" 1422 | "1421","27","165",10897,"27165" 1423 | "1422","27","167",6207,"27167" 1424 | "1423","27","169",50484,"27169" 1425 | "1424","27","171",138377,"27171" 1426 | "1425","27","173",9709,"27173" 1427 | "1426","28","000",2976149,"28000" 1428 | "1427","28","001",30693,"28001" 1429 | "1428","28","003",36953,"28003" 1430 | "1429","28","005",12297,"28005" 1431 | "1430","28","007",18174,"28007" 1432 | "1431","28","009",8259,"28009" 1433 | "1432","28","011",30628,"28011" 1434 | "1433","28","013",14361,"28013" 1435 | "1434","28","015",9947,"28015" 1436 | "1435","28","017",17103,"28017" 1437 | "1436","28","019",8210,"28019" 1438 | "1437","28","021",8988,"28021" 1439 | "1438","28","023",15541,"28023" 1440 | "1439","28","025",19316,"28025" 1441 | "1440","28","027",22124,"28027" 1442 | "1441","28","029",28065,"28029" 1443 | "1442","28","031",18636,"28031" 1444 | "1443","28","033",184945,"28033" 1445 | "1444","28","035",74897,"28035" 1446 | "1445","28","037",7713,"28037" 1447 | "1446","28","039",24500,"28039" 1448 | "1447","28","041",13586,"28041" 1449 | "1448","28","043",20758,"28043" 1450 | "1449","28","045",47632,"28045" 1451 | "1450","28","047",208080,"28047" 1452 | "1451","28","049",231840,"28049" 1453 | "1452","28","051",17010,"28051" 1454 | "1453","28","053",8064,"28053" 1455 | "1454","28","055",1327,"28055" 1456 | "1455","28","057",23390,"28057" 1457 | "1456","28","059",143617,"28059" 1458 | "1457","28","061",16383,"28061" 1459 | "1458","28","063",6990,"28063" 1460 | "1459","28","065",11128,"28065" 1461 | "1460","28","067",68098,"28067" 1462 | "1461","28","069",9742,"28069" 1463 | "1462","28","071",54019,"28071" 1464 | "1463","28","073",63343,"28073" 1465 | "1464","28","075",74125,"28075" 1466 | "1465","28","077",12586,"28077" 1467 | "1466","28","079",22786,"28079" 1468 | "1467","28","081",85436,"28081" 1469 | "1468","28","083",28183,"28083" 1470 | "1469","28","085",34153,"28085" 1471 | "1470","28","087",58595,"28087" 1472 | "1471","28","089",106272,"28089" 1473 | "1472","28","091",24573,"28091" 1474 | "1473","28","093",35294,"28093" 1475 | "1474","28","095",35252,"28095" 1476 | "1475","28","097",9775,"28097" 1477 | "1476","28","099",29118,"28099" 1478 | "1477","28","101",21018,"28101" 1479 | "1478","28","103",10417,"28103" 1480 | "1479","28","105",49587,"28105" 1481 | "1480","28","107",34192,"28107" 1482 | "1481","28","109",55535,"28109" 1483 | "1482","28","111",11973,"28111" 1484 | "1483","28","113",39288,"28113" 1485 | "1484","28","115",32174,"28115" 1486 | "1485","28","117",25126,"28117" 1487 | "1486","28","119",6792,"28119" 1488 | "1487","28","121",155271,"28121" 1489 | "1488","28","123",28124,"28123" 1490 | "1489","28","125",4321,"28125" 1491 | "1490","28","127",26658,"28127" 1492 | "1491","28","129",15916,"28129" 1493 | "1492","28","131",18336,"28131" 1494 | "1493","28","133",25110,"28133" 1495 | "1494","28","135",13809,"28135" 1496 | "1495","28","137",28321,"28137" 1497 | "1496","28","139",22015,"28139" 1498 | "1497","28","141",19383,"28141" 1499 | "1498","28","143",9632,"28143" 1500 | "1499","28","145",28815,"28145" 1501 | "1500","28","147",14286,"28147" 1502 | "1501","28","149",45381,"28149" 1503 | "1502","28","151",43909,"28151" 1504 | "1503","28","153",20183,"28153" 1505 | "1504","28","155",9689,"28155" 1506 | "1505","28","157",8630,"28157" 1507 | "1506","28","159",17955,"28159" 1508 | "1507","28","161",12108,"28161" 1509 | "1508","28","163",29690,"28163" 1510 | "1509","29","000",6137428,"29000" 1511 | "1510","29","001",25343,"29001" 1512 | "1511","29","003",17712,"29003" 1513 | "1512","29","005",5143,"29005" 1514 | "1513","29","007",25388,"29007" 1515 | "1514","29","009",35789,"29009" 1516 | "1515","29","011",11754,"29011" 1517 | "1516","29","013",16172,"29013" 1518 | "1517","29","015",19443,"29015" 1519 | "1518","29","017",12133,"29017" 1520 | "1519","29","019",180463,"29019" 1521 | "1520","29","021",87364,"29021" 1522 | "1521","29","023",42478,"29023" 1523 | "1522","29","025",9020,"29025" 1524 | "1523","29","027",44743,"29027" 1525 | "1524","29","029",46305,"29029" 1526 | "1525","29","031",78871,"29031" 1527 | "1526","29","033",8679,"29033" 1528 | "1527","29","035",5982,"29035" 1529 | "1528","29","037",105780,"29037" 1530 | "1529","29","039",14349,"29039" 1531 | "1530","29","041",7426,"29041" 1532 | "1531","29","043",88595,"29043" 1533 | "1532","29","045",6797,"29045" 1534 | "1533","29","047",249948,"29047" 1535 | "1534","29","049",20387,"29049" 1536 | "1535","29","051",76745,"29051" 1537 | "1536","29","053",17709,"29053" 1538 | "1537","29","055",23920,"29055" 1539 | "1538","29","057",7561,"29057" 1540 | "1539","29","059",16878,"29059" 1541 | "1540","29","061",8278,"29061" 1542 | "1541","29","063",12547,"29063" 1543 | "1542","29","065",15573,"29065" 1544 | "1543","29","067",13185,"29067" 1545 | "1544","29","069",29131,"29069" 1546 | "1545","29","071",103967,"29071" 1547 | "1546","29","073",14706,"29073" 1548 | "1547","29","075",6571,"29075" 1549 | "1548","29","077",293086,"29077" 1550 | "1549","29","079",9850,"29079" 1551 | "1550","29","081",8352,"29081" 1552 | "1551","29","083",21824,"29083" 1553 | "1552","29","085",9544,"29085" 1554 | "1553","29","087",4403,"29087" 1555 | "1554","29","089",10001,"29089" 1556 | "1555","29","091",40117,"29091" 1557 | "1556","29","093",10125,"29093" 1558 | "1557","29","095",703011,"29095" 1559 | "1558","29","097",121328,"29097" 1560 | "1559","29","099",225081,"29099" 1561 | "1560","29","101",54062,"29101" 1562 | "1561","29","103",3959,"29103" 1563 | "1562","29","105",35723,"29105" 1564 | "1563","29","107",32708,"29107" 1565 | "1564","29","109",38355,"29109" 1566 | "1565","29","111",9776,"29111" 1567 | "1566","29","113",59013,"29113" 1568 | "1567","29","115",11920,"29115" 1569 | "1568","29","117",15227,"29117" 1570 | "1569","29","119",22837,"29119" 1571 | "1570","29","121",15117,"29121" 1572 | "1571","29","123",12088,"29123" 1573 | "1572","29","125",8697,"29125" 1574 | "1573","29","127",28530,"29127" 1575 | "1574","29","129",3617,"29129" 1576 | "1575","29","131",25619,"29131" 1577 | "1576","29","133",13180,"29133" 1578 | "1577","29","135",16132,"29135" 1579 | "1578","29","137",8644,"29137" 1580 | "1579","29","139",11551,"29139" 1581 | "1580","29","141",20627,"29141" 1582 | "1581","29","143",17076,"29143" 1583 | "1582","29","145",58236,"29145" 1584 | "1583","29","147",22092,"29147" 1585 | "1584","29","149",10529,"29149" 1586 | "1585","29","151",13615,"29151" 1587 | "1586","29","153",9174,"29153" 1588 | "1587","29","155",15805,"29155" 1589 | "1588","29","157",19136,"29157" 1590 | "1589","29","159",42339,"29159" 1591 | "1590","29","161",44573,"29161" 1592 | "1591","29","163",18302,"29163" 1593 | "1592","29","165",104418,"29165" 1594 | "1593","29","167",32149,"29167" 1595 | "1594","29","169",52607,"29169" 1596 | "1595","29","171",4696,"29171" 1597 | "1596","29","173",10309,"29173" 1598 | "1597","29","175",24748,"29175" 1599 | "1598","29","177",23018,"29177" 1600 | "1599","29","179",6270,"29179" 1601 | "1600","29","181",13288,"29181" 1602 | "1601","29","183",402022,"29183" 1603 | "1602","29","185",9397,"29185" 1604 | "1603","29","186",17894,"29186" 1605 | "1604","29","187",67215,"29187" 1606 | "1605","29","189",994205,"29189" 1607 | "1606","29","195",22761,"29195" 1608 | "1607","29","197",4660,"29197" 1609 | "1608","29","199",4902,"29199" 1610 | "1609","29","201",38280,"29201" 1611 | "1610","29","203",8166,"29203" 1612 | "1611","29","205",5930,"29205" 1613 | "1612","29","207",29025,"29207" 1614 | "1613","29","209",31952,"29209" 1615 | "1614","29","211",6089,"29211" 1616 | "1615","29","213",55928,"29213" 1617 | "1616","29","215",25398,"29215" 1618 | "1617","29","217",20563,"29217" 1619 | "1618","29","219",35649,"29219" 1620 | "1619","29","221",24730,"29221" 1621 | "1620","29","223",12873,"29223" 1622 | "1621","29","225",39592,"29225" 1623 | "1622","29","227",2013,"29227" 1624 | "1623","29","229",18289,"29229" 1625 | "1624","29","510",300576,"29510" 1626 | "1625","30","000",1068778,"30000" 1627 | "1626","30","001",9453,"30001" 1628 | "1627","30","003",13319,"30003" 1629 | "1628","30","005",6681,"30005" 1630 | "1629","30","007",6237,"30007" 1631 | "1630","30","009",10725,"30009" 1632 | "1631","30","011",1252,"30011" 1633 | "1632","30","013",81366,"30013" 1634 | "1633","30","015",5635,"30015" 1635 | "1634","30","017",11402,"30017" 1636 | "1635","30","019",1690,"30019" 1637 | "1636","30","021",8613,"30021" 1638 | "1637","30","023",9140,"30023" 1639 | "1638","30","025",2846,"30025" 1640 | "1639","30","027",11050,"30027" 1641 | "1640","30","029",103806,"30029" 1642 | "1641","30","031",114434,"30031" 1643 | "1642","30","033",1258,"30033" 1644 | "1643","30","035",13753,"30035" 1645 | "1644","30","037",821,"30037" 1646 | "1645","30","039",3379,"30039" 1647 | "1646","30","041",16484,"30041" 1648 | "1647","30","043",12221,"30043" 1649 | "1648","30","045",2007,"30045" 1650 | "1649","30","047",30458,"30047" 1651 | "1650","30","049",69432,"30049" 1652 | "1651","30","051",2337,"30051" 1653 | "1652","30","053",19980,"30053" 1654 | "1653","30","055",1664,"30055" 1655 | "1654","30","057",8600,"30057" 1656 | "1655","30","059",1862,"30059" 1657 | "1656","30","061",4397,"30061" 1658 | "1657","30","063",119600,"30063" 1659 | "1658","30","065",4633,"30065" 1660 | "1659","30","067",16606,"30067" 1661 | "1660","30","069",487,"30069" 1662 | "1661","30","071",3954,"30071" 1663 | "1662","30","073",5911,"30073" 1664 | "1663","30","075",1682,"30075" 1665 | "1664","30","077",6890,"30077" 1666 | "1665","30","079",1077,"30079" 1667 | "1666","30","081",43806,"30081" 1668 | "1667","30","083",10803,"30083" 1669 | "1668","30","085",11004,"30085" 1670 | "1669","30","087",8937,"30087" 1671 | "1670","30","089",12113,"30089" 1672 | "1671","30","091",3309,"30091" 1673 | "1672","30","093",34915,"30093" 1674 | "1673","30","095",9642,"30095" 1675 | "1674","30","097",3737,"30097" 1676 | "1675","30","099",6147,"30099" 1677 | "1676","30","101",4736,"30101" 1678 | "1677","30","103",696,"30103" 1679 | "1678","30","105",7396,"30105" 1680 | "1679","30","107",2126,"30107" 1681 | "1680","30","109",969,"30109" 1682 | "1681","30","111",161300,"30111" 1683 | "1682","31","000",1934408,"31000" 1684 | "1683","31","001",31363,"31001" 1685 | "1684","31","003",6298,"31003" 1686 | "1685","31","005",463,"31005" 1687 | "1686","31","007",745,"31007" 1688 | "1687","31","009",465,"31009" 1689 | "1688","31","011",5192,"31011" 1690 | "1689","31","013",10783,"31013" 1691 | "1690","31","015",1919,"31015" 1692 | "1691","31","017",2955,"31017" 1693 | "1692","31","019",49659,"31019" 1694 | "1693","31","021",6459,"31021" 1695 | "1694","31","023",8016,"31023" 1696 | "1695","31","025",26248,"31025" 1697 | "1696","31","027",8402,"31027" 1698 | "1697","31","029",3924,"31029" 1699 | "1698","31","031",5689,"31031" 1700 | "1699","31","033",8910,"31033" 1701 | "1700","31","035",6203,"31035" 1702 | "1701","31","037",10709,"31037" 1703 | "1702","31","039",8846,"31039" 1704 | "1703","31","041",10777,"31041" 1705 | "1704","31","043",20026,"31043" 1706 | "1705","31","045",8589,"31045" 1707 | "1706","31","047",23595,"31047" 1708 | "1707","31","049",1794,"31049" 1709 | "1708","31","051",5636,"31051" 1710 | "1709","31","053",36565,"31053" 1711 | "1710","31","055",571327,"31055" 1712 | "1711","31","057",1693,"31057" 1713 | "1712","31","059",5462,"31059" 1714 | "1713","31","061",2979,"31061" 1715 | "1714","31","063",2627,"31063" 1716 | "1715","31","065",4676,"31065" 1717 | "1716","31","067",21513,"31067" 1718 | "1717","31","069",1837,"31069" 1719 | "1718","31","071",1969,"31071" 1720 | "1719","31","073",1990,"31073" 1721 | "1720","31","075",623,"31075" 1722 | "1721","31","077",2356,"31077" 1723 | "1722","31","079",61353,"31079" 1724 | "1723","31","081",9324,"31081" 1725 | "1724","31","083",3380,"31083" 1726 | "1725","31","085",922,"31085" 1727 | "1726","31","087",2762,"31087" 1728 | "1727","31","089",10067,"31089" 1729 | "1728","31","091",682,"31091" 1730 | "1729","31","093",6445,"31093" 1731 | "1730","31","095",7046,"31095" 1732 | "1731","31","097",5071,"31097" 1733 | "1732","31","099",6495,"31099" 1734 | "1733","31","101",8034,"31101" 1735 | "1734","31","103",806,"31103" 1736 | "1735","31","105",3632,"31105" 1737 | "1736","31","107",8332,"31107" 1738 | "1737","31","109",319090,"31109" 1739 | "1738","31","111",34914,"31111" 1740 | "1739","31","113",748,"31113" 1741 | "1740","31","115",664,"31115" 1742 | "1741","31","117",494,"31117" 1743 | "1742","31","119",35099,"31119" 1744 | "1743","31","121",7755,"31121" 1745 | "1744","31","123",4642,"31123" 1746 | "1745","31","125",3519,"31125" 1747 | "1746","31","127",6972,"31127" 1748 | "1747","31","129",4148,"31129" 1749 | "1748","31","131",16012,"31131" 1750 | "1749","31","133",2613,"31133" 1751 | "1750","31","135",2891,"31135" 1752 | "1751","31","137",9034,"31137" 1753 | "1752","31","139",7148,"31139" 1754 | "1753","31","141",33470,"31141" 1755 | "1754","31","143",5213,"31143" 1756 | "1755","31","145",10724,"31145" 1757 | "1756","31","147",7865,"31147" 1758 | "1757","31","149",1357,"31149" 1759 | "1758","31","151",14224,"31151" 1760 | "1759","31","153",187196,"31153" 1761 | "1760","31","155",21578,"31155" 1762 | "1761","31","157",35618,"31157" 1763 | "1762","31","159",17284,"31159" 1764 | "1763","31","161",5246,"31161" 1765 | "1764","31","163",3001,"31163" 1766 | "1765","31","165",1166,"31165" 1767 | "1766","31","167",5920,"31167" 1768 | "1767","31","169",5003,"31169" 1769 | "1768","31","171",722,"31171" 1770 | "1769","31","173",7224,"31173" 1771 | "1770","31","175",4158,"31175" 1772 | "1771","31","177",20729,"31177" 1773 | "1772","31","179",9385,"31179" 1774 | "1773","31","181",3487,"31181" 1775 | "1774","31","183",783,"31183" 1776 | "1775","31","185",13679,"31185" 1777 | "1776","32","000",3080156,"32000" 1778 | "1777","32","001",24909,"32001" 1779 | "1778","32","003",2266715,"32003" 1780 | "1779","32","005",48905,"32005" 1781 | "1780","32","007",52778,"32007" 1782 | "1781","32","009",873,"32009" 1783 | "1782","32","011",2029,"32011" 1784 | "1783","32","013",16831,"32013" 1785 | "1784","32","015",5532,"32015" 1786 | "1785","32","017",5183,"32017" 1787 | "1786","32","019",57510,"32019" 1788 | "1787","32","021",4505,"32021" 1789 | "1788","32","023",46523,"32023" 1790 | "1789","32","027",6725,"32027" 1791 | "1790","32","029",4123,"32029" 1792 | "1791","32","031",471519,"32031" 1793 | "1792","32","033",9580,"32033" 1794 | "1793","32","510",55916,"32510" 1795 | "1794","33","000",1359711,"33000" 1796 | "1795","33","001",61303,"33001" 1797 | "1796","33","003",48910,"33003" 1798 | "1797","33","005",76085,"33005" 1799 | "1798","33","007",31563,"33007" 1800 | "1799","33","009",89886,"33009" 1801 | "1800","33","011",417025,"33011" 1802 | "1801","33","013",151391,"33013" 1803 | "1802","33","015",309769,"33015" 1804 | "1803","33","017",130633,"33017" 1805 | "1804","33","019",43146,"33019" 1806 | "1805","34","000",8882190,"34000" 1807 | "1806","34","001",263670,"34001" 1808 | "1807","34","003",932202,"34003" 1809 | "1808","34","005",445349,"34005" 1810 | "1809","34","007",506471,"34007" 1811 | "1810","34","009",92039,"34009" 1812 | "1811","34","011",149527,"34011" 1813 | "1812","34","013",798975,"34013" 1814 | "1813","34","015",291636,"34015" 1815 | "1814","34","017",672391,"34017" 1816 | "1815","34","019",124371,"34019" 1817 | "1816","34","021",367430,"34021" 1818 | "1817","34","023",825062,"34023" 1819 | "1818","34","025",618795,"34025" 1820 | "1819","34","027",491845,"34027" 1821 | "1820","34","029",607186,"34029" 1822 | "1821","34","031",501826,"34031" 1823 | "1822","34","033",62385,"34033" 1824 | "1823","34","035",328934,"34035" 1825 | "1824","34","037",140488,"34037" 1826 | "1825","34","039",556341,"34039" 1827 | "1826","34","041",105267,"34041" 1828 | "1827","35","000",2096829,"35000" 1829 | "1828","35","001",679121,"35001" 1830 | "1829","35","003",3527,"35003" 1831 | "1830","35","005",64615,"35005" 1832 | "1831","35","006",26675,"35006" 1833 | "1832","35","007",11941,"35007" 1834 | "1833","35","009",48954,"35009" 1835 | "1834","35","011",1748,"35011" 1836 | "1835","35","013",218195,"35013" 1837 | "1836","35","015",58460,"35015" 1838 | "1837","35","017",26998,"35017" 1839 | "1838","35","019",4300,"35019" 1840 | "1839","35","021",625,"35021" 1841 | "1840","35","023",4198,"35023" 1842 | "1841","35","025",71070,"35025" 1843 | "1842","35","027",19572,"35027" 1844 | "1843","35","028",19369,"35028" 1845 | "1844","35","029",23709,"35029" 1846 | "1845","35","031",71367,"35031" 1847 | "1846","35","033",4521,"35033" 1848 | "1847","35","035",67490,"35035" 1849 | "1848","35","037",8253,"35037" 1850 | "1849","35","039",38921,"35039" 1851 | "1850","35","041",18500,"35041" 1852 | "1851","35","043",146748,"35043" 1853 | "1852","35","045",123958,"35045" 1854 | "1853","35","047",27277,"35047" 1855 | "1854","35","049",150358,"35049" 1856 | "1855","35","051",10791,"35051" 1857 | "1856","35","053",16637,"35053" 1858 | "1857","35","055",32723,"35055" 1859 | "1858","35","057",15461,"35057" 1860 | "1859","35","059",4059,"35059" 1861 | "1860","35","061",76688,"35061" 1862 | "1861","36","000",19453561,"36000" 1863 | "1862","36","001",305506,"36001" 1864 | "1863","36","003",46091,"36003" 1865 | "1864","36","005",1418207,"36005" 1866 | "1865","36","007",190488,"36007" 1867 | "1866","36","009",76117,"36009" 1868 | "1867","36","011",76576,"36011" 1869 | "1868","36","013",126903,"36013" 1870 | "1869","36","015",83456,"36015" 1871 | "1870","36","017",47207,"36017" 1872 | "1871","36","019",80485,"36019" 1873 | "1872","36","021",59461,"36021" 1874 | "1873","36","023",47581,"36023" 1875 | "1874","36","025",44135,"36025" 1876 | "1875","36","027",294218,"36027" 1877 | "1876","36","029",918702,"36029" 1878 | "1877","36","031",36885,"36031" 1879 | "1878","36","033",50022,"36033" 1880 | "1879","36","035",53383,"36035" 1881 | "1880","36","037",57280,"36037" 1882 | "1881","36","039",47188,"36039" 1883 | "1882","36","041",4416,"36041" 1884 | "1883","36","043",61319,"36043" 1885 | "1884","36","045",109834,"36045" 1886 | "1885","36","047",2559903,"36047" 1887 | "1886","36","049",26296,"36049" 1888 | "1887","36","051",62914,"36051" 1889 | "1888","36","053",70941,"36053" 1890 | "1889","36","055",741770,"36055" 1891 | "1890","36","057",49221,"36057" 1892 | "1891","36","059",1356924,"36059" 1893 | "1892","36","061",1628706,"36061" 1894 | "1893","36","063",209281,"36063" 1895 | "1894","36","065",228671,"36065" 1896 | "1895","36","067",460528,"36067" 1897 | "1896","36","069",109777,"36069" 1898 | "1897","36","071",384940,"36071" 1899 | "1898","36","073",40352,"36073" 1900 | "1899","36","075",117124,"36075" 1901 | "1900","36","077",59493,"36077" 1902 | "1901","36","079",98320,"36079" 1903 | "1902","36","081",2253858,"36081" 1904 | "1903","36","083",158714,"36083" 1905 | "1904","36","085",476143,"36085" 1906 | "1905","36","087",325789,"36087" 1907 | "1906","36","089",107740,"36089" 1908 | "1907","36","091",229863,"36091" 1909 | "1908","36","093",155299,"36093" 1910 | "1909","36","095",30999,"36095" 1911 | "1910","36","097",17807,"36097" 1912 | "1911","36","099",34016,"36099" 1913 | "1912","36","101",95379,"36101" 1914 | "1913","36","103",1476601,"36103" 1915 | "1914","36","105",75432,"36105" 1916 | "1915","36","107",48203,"36107" 1917 | "1916","36","109",102180,"36109" 1918 | "1917","36","111",177573,"36111" 1919 | "1918","36","113",63944,"36113" 1920 | "1919","36","115",61204,"36115" 1921 | "1920","36","117",89918,"36117" 1922 | "1921","36","119",967506,"36119" 1923 | "1922","36","121",39859,"36121" 1924 | "1923","36","123",24913,"36123" 1925 | "1924","37","000",10488084,"37000" 1926 | "1925","37","001",169509,"37001" 1927 | "1926","37","003",37497,"37003" 1928 | "1927","37","005",11137,"37005" 1929 | "1928","37","007",24446,"37007" 1930 | "1929","37","009",27203,"37009" 1931 | "1930","37","011",17557,"37011" 1932 | "1931","37","013",46994,"37013" 1933 | "1932","37","015",18947,"37015" 1934 | "1933","37","017",32722,"37017" 1935 | "1934","37","019",142820,"37019" 1936 | "1935","37","021",261191,"37021" 1937 | "1936","37","023",90485,"37023" 1938 | "1937","37","025",216453,"37025" 1939 | "1938","37","027",82178,"37027" 1940 | "1939","37","029",10867,"37029" 1941 | "1940","37","031",69473,"37031" 1942 | "1941","37","033",22604,"37033" 1943 | "1942","37","035",159551,"37035" 1944 | "1943","37","037",74470,"37037" 1945 | "1944","37","039",28612,"37039" 1946 | "1945","37","041",13943,"37041" 1947 | "1946","37","043",11231,"37043" 1948 | "1947","37","045",97947,"37045" 1949 | "1948","37","047",55508,"37047" 1950 | "1949","37","049",102139,"37049" 1951 | "1950","37","051",335509,"37051" 1952 | "1951","37","053",27763,"37053" 1953 | "1952","37","055",37009,"37055" 1954 | "1953","37","057",167609,"37057" 1955 | "1954","37","059",42846,"37059" 1956 | "1955","37","061",58741,"37061" 1957 | "1956","37","063",321488,"37063" 1958 | "1957","37","065",51472,"37065" 1959 | "1958","37","067",382295,"37067" 1960 | "1959","37","069",69685,"37069" 1961 | "1960","37","071",224529,"37071" 1962 | "1961","37","073",11562,"37073" 1963 | "1962","37","075",8441,"37075" 1964 | "1963","37","077",60443,"37077" 1965 | "1964","37","079",21069,"37079" 1966 | "1965","37","081",537174,"37081" 1967 | "1966","37","083",50010,"37083" 1968 | "1967","37","085",135976,"37085" 1969 | "1968","37","087",62317,"37087" 1970 | "1969","37","089",117417,"37089" 1971 | "1970","37","091",23677,"37091" 1972 | "1971","37","093",55234,"37093" 1973 | "1972","37","095",4937,"37095" 1974 | "1973","37","097",181806,"37097" 1975 | "1974","37","099",43938,"37099" 1976 | "1975","37","101",209339,"37101" 1977 | "1976","37","103",9419,"37103" 1978 | "1977","37","105",61779,"37105" 1979 | "1978","37","107",55949,"37107" 1980 | "1979","37","109",86111,"37109" 1981 | "1980","37","111",45756,"37111" 1982 | "1981","37","113",35858,"37113" 1983 | "1982","37","115",21755,"37115" 1984 | "1983","37","117",22440,"37117" 1985 | "1984","37","119",1110356,"37119" 1986 | "1985","37","121",14964,"37121" 1987 | "1986","37","123",27173,"37123" 1988 | "1987","37","125",100880,"37125" 1989 | "1988","37","127",94298,"37127" 1990 | "1989","37","129",234473,"37129" 1991 | "1990","37","131",19483,"37131" 1992 | "1991","37","133",197938,"37133" 1993 | "1992","37","135",148476,"37135" 1994 | "1993","37","137",12726,"37137" 1995 | "1994","37","139",39824,"37139" 1996 | "1995","37","141",63060,"37141" 1997 | "1996","37","143",13463,"37143" 1998 | "1997","37","145",39490,"37145" 1999 | "1998","37","147",180742,"37147" 2000 | "1999","37","149",20724,"37149" 2001 | "2000","37","151",143667,"37151" 2002 | "2001","37","153",44829,"37153" 2003 | "2002","37","155",130625,"37155" 2004 | "2003","37","157",91010,"37157" 2005 | "2004","37","159",142088,"37159" 2006 | "2005","37","161",67029,"37161" 2007 | "2006","37","163",63531,"37163" 2008 | "2007","37","165",34823,"37165" 2009 | "2008","37","167",62806,"37167" 2010 | "2009","37","169",45591,"37169" 2011 | "2010","37","171",71783,"37171" 2012 | "2011","37","173",14271,"37173" 2013 | "2012","37","175",34385,"37175" 2014 | "2013","37","177",4016,"37177" 2015 | "2014","37","179",239859,"37179" 2016 | "2015","37","181",44535,"37181" 2017 | "2016","37","183",1111761,"37183" 2018 | "2017","37","185",19731,"37185" 2019 | "2018","37","187",11580,"37187" 2020 | "2019","37","189",56177,"37189" 2021 | "2020","37","191",123131,"37191" 2022 | "2021","37","193",68412,"37193" 2023 | "2022","37","195",81801,"37195" 2024 | "2023","37","197",37667,"37197" 2025 | "2024","37","199",18069,"37199" 2026 | "2025","38","000",762062,"38000" 2027 | "2026","38","001",2216,"38001" 2028 | "2027","38","003",10415,"38003" 2029 | "2028","38","005",6832,"38005" 2030 | "2029","38","007",928,"38007" 2031 | "2030","38","009",6282,"38009" 2032 | "2031","38","011",3024,"38011" 2033 | "2032","38","013",2115,"38013" 2034 | "2033","38","015",95626,"38015" 2035 | "2034","38","017",181923,"38017" 2036 | "2035","38","019",3762,"38019" 2037 | "2036","38","021",4872,"38021" 2038 | "2037","38","023",2264,"38023" 2039 | "2038","38","025",4424,"38025" 2040 | "2039","38","027",2287,"38027" 2041 | "2040","38","029",3241,"38029" 2042 | "2041","38","031",3210,"38031" 2043 | "2042","38","033",1761,"38033" 2044 | "2043","38","035",69451,"38035" 2045 | "2044","38","037",2274,"38037" 2046 | "2045","38","039",2231,"38039" 2047 | "2046","38","041",2499,"38041" 2048 | "2047","38","043",2480,"38043" 2049 | "2048","38","045",4046,"38045" 2050 | "2049","38","047",1850,"38047" 2051 | "2050","38","049",5745,"38049" 2052 | "2051","38","051",2497,"38051" 2053 | "2052","38","053",15024,"38053" 2054 | "2053","38","055",9450,"38055" 2055 | "2054","38","057",8187,"38057" 2056 | "2055","38","059",31364,"38059" 2057 | "2056","38","061",10545,"38061" 2058 | "2057","38","063",2879,"38063" 2059 | "2058","38","065",1959,"38065" 2060 | "2059","38","067",6801,"38067" 2061 | "2060","38","069",3975,"38069" 2062 | "2061","38","071",11519,"38071" 2063 | "2062","38","073",5218,"38073" 2064 | "2063","38","075",2327,"38075" 2065 | "2064","38","077",16177,"38077" 2066 | "2065","38","079",14176,"38079" 2067 | "2066","38","081",3898,"38081" 2068 | "2067","38","083",1315,"38083" 2069 | "2068","38","085",4230,"38085" 2070 | "2069","38","087",750,"38087" 2071 | "2070","38","089",31489,"38089" 2072 | "2071","38","091",1890,"38091" 2073 | "2072","38","093",20704,"38093" 2074 | "2073","38","095",2189,"38095" 2075 | "2074","38","097",8036,"38097" 2076 | "2075","38","099",10641,"38099" 2077 | "2076","38","101",67641,"38101" 2078 | "2077","38","103",3834,"38103" 2079 | "2078","38","105",37589,"38105" 2080 | "2079","39","000",11689100,"39000" 2081 | "2080","39","001",27698,"39001" 2082 | "2081","39","003",102351,"39003" 2083 | "2082","39","005",53484,"39005" 2084 | "2083","39","007",97241,"39007" 2085 | "2084","39","009",65327,"39009" 2086 | "2085","39","011",45656,"39011" 2087 | "2086","39","013",67006,"39013" 2088 | "2087","39","015",43432,"39015" 2089 | "2088","39","017",383134,"39017" 2090 | "2089","39","019",26914,"39019" 2091 | "2090","39","021",38885,"39021" 2092 | "2091","39","023",134083,"39023" 2093 | "2092","39","025",206428,"39025" 2094 | "2093","39","027",41968,"39027" 2095 | "2094","39","029",101883,"39029" 2096 | "2095","39","031",36600,"39031" 2097 | "2096","39","033",41494,"39033" 2098 | "2097","39","035",1235072,"39035" 2099 | "2098","39","037",51113,"39037" 2100 | "2099","39","039",38087,"39039" 2101 | "2100","39","041",209177,"39041" 2102 | "2101","39","043",74266,"39043" 2103 | "2102","39","045",157574,"39045" 2104 | "2103","39","047",28525,"39047" 2105 | "2104","39","049",1316756,"39049" 2106 | "2105","39","051",42126,"39051" 2107 | "2106","39","053",29898,"39053" 2108 | "2107","39","055",93649,"39055" 2109 | "2108","39","057",168937,"39057" 2110 | "2109","39","059",38875,"39059" 2111 | "2110","39","061",817473,"39061" 2112 | "2111","39","063",75783,"39063" 2113 | "2112","39","065",31365,"39065" 2114 | "2113","39","067",15040,"39067" 2115 | "2114","39","069",27006,"39069" 2116 | "2115","39","071",43161,"39071" 2117 | "2116","39","073",28264,"39073" 2118 | "2117","39","075",43960,"39075" 2119 | "2118","39","077",58266,"39077" 2120 | "2119","39","079",32413,"39079" 2121 | "2120","39","081",65325,"39081" 2122 | "2121","39","083",62322,"39083" 2123 | "2122","39","085",230149,"39085" 2124 | "2123","39","087",59463,"39087" 2125 | "2124","39","089",176862,"39089" 2126 | "2125","39","091",45672,"39091" 2127 | "2126","39","093",309833,"39093" 2128 | "2127","39","095",428348,"39095" 2129 | "2128","39","097",44731,"39097" 2130 | "2129","39","099",228683,"39099" 2131 | "2130","39","101",65093,"39101" 2132 | "2131","39","103",179746,"39103" 2133 | "2132","39","105",22907,"39105" 2134 | "2133","39","107",41172,"39107" 2135 | "2134","39","109",106987,"39109" 2136 | "2135","39","111",13654,"39111" 2137 | "2136","39","113",531687,"39113" 2138 | "2137","39","115",14508,"39115" 2139 | "2138","39","117",35328,"39117" 2140 | "2139","39","119",86215,"39119" 2141 | "2140","39","121",14424,"39121" 2142 | "2141","39","123",40525,"39123" 2143 | "2142","39","125",18672,"39125" 2144 | "2143","39","127",36134,"39127" 2145 | "2144","39","129",58457,"39129" 2146 | "2145","39","131",27772,"39131" 2147 | "2146","39","133",162466,"39133" 2148 | "2147","39","135",40882,"39135" 2149 | "2148","39","137",33861,"39137" 2150 | "2149","39","139",121154,"39139" 2151 | "2150","39","141",76666,"39141" 2152 | "2151","39","143",58518,"39143" 2153 | "2152","39","145",75314,"39145" 2154 | "2153","39","147",55178,"39147" 2155 | "2154","39","149",48590,"39149" 2156 | "2155","39","151",370606,"39151" 2157 | "2156","39","153",541013,"39153" 2158 | "2157","39","155",197974,"39155" 2159 | "2158","39","157",91987,"39157" 2160 | "2159","39","159",58988,"39159" 2161 | "2160","39","161",28275,"39161" 2162 | "2161","39","163",13085,"39163" 2163 | "2162","39","165",234602,"39165" 2164 | "2163","39","167",59911,"39167" 2165 | "2164","39","169",115710,"39169" 2166 | "2165","39","171",36692,"39171" 2167 | "2166","39","173",130817,"39173" 2168 | "2167","39","175",21772,"39175" 2169 | "2168","40","000",3956971,"40000" 2170 | "2169","40","001",22194,"40001" 2171 | "2170","40","003",5702,"40003" 2172 | "2171","40","005",13758,"40005" 2173 | "2172","40","007",5311,"40007" 2174 | "2173","40","009",21859,"40009" 2175 | "2174","40","011",9429,"40011" 2176 | "2175","40","013",47995,"40013" 2177 | "2176","40","015",28762,"40015" 2178 | "2177","40","017",148306,"40017" 2179 | "2178","40","019",48111,"40019" 2180 | "2179","40","021",48657,"40021" 2181 | "2180","40","023",14672,"40023" 2182 | "2181","40","025",2137,"40025" 2183 | "2182","40","027",284014,"40027" 2184 | "2183","40","029",5495,"40029" 2185 | "2184","40","031",120749,"40031" 2186 | "2185","40","033",5666,"40033" 2187 | "2186","40","035",14142,"40035" 2188 | "2187","40","037",71522,"40037" 2189 | "2188","40","039",29003,"40039" 2190 | "2189","40","041",43009,"40041" 2191 | "2190","40","043",4891,"40043" 2192 | "2191","40","045",3859,"40045" 2193 | "2192","40","047",61056,"40047" 2194 | "2193","40","049",27711,"40049" 2195 | "2194","40","051",55834,"40051" 2196 | "2195","40","053",4333,"40053" 2197 | "2196","40","055",5712,"40055" 2198 | "2197","40","057",2653,"40057" 2199 | "2198","40","059",3688,"40059" 2200 | "2199","40","061",12627,"40061" 2201 | "2200","40","063",13279,"40063" 2202 | "2201","40","065",24530,"40065" 2203 | "2202","40","067",6002,"40067" 2204 | "2203","40","069",11085,"40069" 2205 | "2204","40","071",43538,"40071" 2206 | "2205","40","073",15765,"40073" 2207 | "2206","40","075",8708,"40075" 2208 | "2207","40","077",10073,"40077" 2209 | "2208","40","079",49853,"40079" 2210 | "2209","40","081",34877,"40081" 2211 | "2210","40","083",48011,"40083" 2212 | "2211","40","085",10253,"40085" 2213 | "2212","40","087",40474,"40087" 2214 | "2213","40","089",32832,"40089" 2215 | "2214","40","091",19596,"40091" 2216 | "2215","40","093",7629,"40093" 2217 | "2216","40","095",16931,"40095" 2218 | "2217","40","097",41100,"40097" 2219 | "2218","40","099",14073,"40099" 2220 | "2219","40","101",67997,"40101" 2221 | "2220","40","103",11131,"40103" 2222 | "2221","40","105",10076,"40105" 2223 | "2222","40","107",11993,"40107" 2224 | "2223","40","109",797434,"40109" 2225 | "2224","40","111",38465,"40111" 2226 | "2225","40","113",46963,"40113" 2227 | "2226","40","115",31127,"40115" 2228 | "2227","40","117",16376,"40117" 2229 | "2228","40","119",81784,"40119" 2230 | "2229","40","121",43654,"40121" 2231 | "2230","40","123",38284,"40123" 2232 | "2231","40","125",72592,"40125" 2233 | "2232","40","127",11096,"40127" 2234 | "2233","40","129",3583,"40129" 2235 | "2234","40","131",92459,"40131" 2236 | "2235","40","133",24258,"40133" 2237 | "2236","40","135",41569,"40135" 2238 | "2237","40","137",43143,"40137" 2239 | "2238","40","139",19983,"40139" 2240 | "2239","40","141",7250,"40141" 2241 | "2240","40","143",651552,"40143" 2242 | "2241","40","145",81289,"40145" 2243 | "2242","40","147",51527,"40147" 2244 | "2243","40","149",10916,"40149" 2245 | "2244","40","151",8793,"40151" 2246 | "2245","40","153",20211,"40153" 2247 | "2246","41","000",4217737,"41000" 2248 | "2247","41","001",16124,"41001" 2249 | "2248","41","003",93053,"41003" 2250 | "2249","41","005",418187,"41005" 2251 | "2250","41","007",40224,"41007" 2252 | "2251","41","009",52354,"41009" 2253 | "2252","41","011",64487,"41011" 2254 | "2253","41","013",24404,"41013" 2255 | "2254","41","015",22925,"41015" 2256 | "2255","41","017",197692,"41017" 2257 | "2256","41","019",110980,"41019" 2258 | "2257","41","021",1912,"41021" 2259 | "2258","41","023",7199,"41023" 2260 | "2259","41","025",7393,"41025" 2261 | "2260","41","027",23382,"41027" 2262 | "2261","41","029",220944,"41029" 2263 | "2262","41","031",24658,"41031" 2264 | "2263","41","033",87487,"41033" 2265 | "2264","41","035",68238,"41035" 2266 | "2265","41","037",7869,"41037" 2267 | "2266","41","039",382067,"41039" 2268 | "2267","41","041",49962,"41041" 2269 | "2268","41","043",129749,"41043" 2270 | "2269","41","045",30571,"41045" 2271 | "2270","41","047",347818,"41047" 2272 | "2271","41","049",11603,"41049" 2273 | "2272","41","051",812855,"41051" 2274 | "2273","41","053",86085,"41053" 2275 | "2274","41","055",1780,"41055" 2276 | "2275","41","057",27036,"41057" 2277 | "2276","41","059",77950,"41059" 2278 | "2277","41","061",26835,"41061" 2279 | "2278","41","063",7208,"41063" 2280 | "2279","41","065",26682,"41065" 2281 | "2280","41","067",601592,"41067" 2282 | "2281","41","069",1332,"41069" 2283 | "2282","41","071",107100,"41071" 2284 | "2283","42","000",12801989,"42000" 2285 | "2284","42","001",103009,"42001" 2286 | "2285","42","003",1216045,"42003" 2287 | "2286","42","005",64735,"42005" 2288 | "2287","42","007",163929,"42007" 2289 | "2288","42","009",47888,"42009" 2290 | "2289","42","011",421164,"42011" 2291 | "2290","42","013",121829,"42013" 2292 | "2291","42","015",60323,"42015" 2293 | "2292","42","017",628270,"42017" 2294 | "2293","42","019",187853,"42019" 2295 | "2294","42","021",130192,"42021" 2296 | "2295","42","023",4447,"42023" 2297 | "2296","42","025",64182,"42025" 2298 | "2297","42","027",162385,"42027" 2299 | "2298","42","029",524989,"42029" 2300 | "2299","42","031",38438,"42031" 2301 | "2300","42","033",79255,"42033" 2302 | "2301","42","035",38632,"42035" 2303 | "2302","42","037",64964,"42037" 2304 | "2303","42","039",84629,"42039" 2305 | "2304","42","041",253370,"42041" 2306 | "2305","42","043",278299,"42043" 2307 | "2306","42","045",566747,"42045" 2308 | "2307","42","047",29910,"42047" 2309 | "2308","42","049",269728,"42049" 2310 | "2309","42","051",129274,"42051" 2311 | "2310","42","053",7247,"42053" 2312 | "2311","42","055",155027,"42055" 2313 | "2312","42","057",14530,"42057" 2314 | "2313","42","059",36233,"42059" 2315 | "2314","42","061",45144,"42061" 2316 | "2315","42","063",84073,"42063" 2317 | "2316","42","065",43425,"42065" 2318 | "2317","42","067",24763,"42067" 2319 | "2318","42","069",209674,"42069" 2320 | "2319","42","071",545724,"42071" 2321 | "2320","42","073",85512,"42073" 2322 | "2321","42","075",141793,"42075" 2323 | "2322","42","077",369318,"42077" 2324 | "2323","42","079",317417,"42079" 2325 | "2324","42","081",113299,"42081" 2326 | "2325","42","083",40625,"42083" 2327 | "2326","42","085",109424,"42085" 2328 | "2327","42","087",46138,"42087" 2329 | "2328","42","089",170271,"42089" 2330 | "2329","42","091",830915,"42091" 2331 | "2330","42","093",18230,"42093" 2332 | "2331","42","095",305285,"42095" 2333 | "2332","42","097",90843,"42097" 2334 | "2333","42","099",46272,"42099" 2335 | "2334","42","101",1584064,"42101" 2336 | "2335","42","103",55809,"42103" 2337 | "2336","42","105",16526,"42105" 2338 | "2337","42","107",141359,"42107" 2339 | "2338","42","109",40372,"42109" 2340 | "2339","42","111",73447,"42111" 2341 | "2340","42","113",6066,"42113" 2342 | "2341","42","115",40328,"42115" 2343 | "2342","42","117",40591,"42117" 2344 | "2343","42","119",44923,"42119" 2345 | "2344","42","121",50668,"42121" 2346 | "2345","42","123",39191,"42123" 2347 | "2346","42","125",206865,"42125" 2348 | "2347","42","127",51361,"42127" 2349 | "2348","42","129",348899,"42129" 2350 | "2349","42","131",26794,"42131" 2351 | "2350","42","133",449058,"42133" 2352 | "2351","44","000",1059361,"44000" 2353 | "2352","44","001",48479,"44001" 2354 | "2353","44","003",164292,"44003" 2355 | "2354","44","005",82082,"44005" 2356 | "2355","44","007",638931,"44007" 2357 | "2356","44","009",125577,"44009" 2358 | "2357","45","000",5148714,"45000" 2359 | "2358","45","001",24527,"45001" 2360 | "2359","45","003",170872,"45003" 2361 | "2360","45","005",8688,"45005" 2362 | "2361","45","007",202558,"45007" 2363 | "2362","45","009",14066,"45009" 2364 | "2363","45","011",20866,"45011" 2365 | "2364","45","013",192122,"45013" 2366 | "2365","45","015",227907,"45015" 2367 | "2366","45","017",14553,"45017" 2368 | "2367","45","019",411406,"45019" 2369 | "2368","45","021",57300,"45021" 2370 | "2369","45","023",32244,"45023" 2371 | "2370","45","025",45650,"45025" 2372 | "2371","45","027",33745,"45027" 2373 | "2372","45","029",37677,"45029" 2374 | "2373","45","031",66618,"45031" 2375 | "2374","45","033",30479,"45033" 2376 | "2375","45","035",162809,"45035" 2377 | "2376","45","037",27260,"45037" 2378 | "2377","45","039",22347,"45039" 2379 | "2378","45","041",138293,"45041" 2380 | "2379","45","043",62680,"45043" 2381 | "2380","45","045",523542,"45045" 2382 | "2381","45","047",70811,"45047" 2383 | "2382","45","049",19222,"45049" 2384 | "2383","45","051",354081,"45051" 2385 | "2384","45","053",30073,"45053" 2386 | "2385","45","055",66551,"45055" 2387 | "2386","45","057",98012,"45057" 2388 | "2387","45","059",67493,"45059" 2389 | "2388","45","061",16828,"45061" 2390 | "2389","45","063",298750,"45063" 2391 | "2390","45","065",9463,"45065" 2392 | "2391","45","067",30657,"45067" 2393 | "2392","45","069",26118,"45069" 2394 | "2393","45","071",38440,"45071" 2395 | "2394","45","073",79546,"45073" 2396 | "2395","45","075",86175,"45075" 2397 | "2396","45","077",126884,"45077" 2398 | "2397","45","079",415759,"45079" 2399 | "2398","45","081",20473,"45081" 2400 | "2399","45","083",319785,"45083" 2401 | "2400","45","085",106721,"45085" 2402 | "2401","45","087",27316,"45087" 2403 | "2402","45","089",30368,"45089" 2404 | "2403","45","091",280979,"45091" 2405 | "2404","46","000",884659,"46000" 2406 | "2405","46","003",2751,"46003" 2407 | "2406","46","005",18453,"46005" 2408 | "2407","46","007",3365,"46007" 2409 | "2408","46","009",6901,"46009" 2410 | "2409","46","011",35077,"46011" 2411 | "2410","46","013",38839,"46013" 2412 | "2411","46","015",5297,"46015" 2413 | "2412","46","017",1962,"46017" 2414 | "2413","46","019",10429,"46019" 2415 | "2414","46","021",1376,"46021" 2416 | "2415","46","023",9292,"46023" 2417 | "2416","46","025",3736,"46025" 2418 | "2417","46","027",14070,"46027" 2419 | "2418","46","029",28009,"46029" 2420 | "2419","46","031",4086,"46031" 2421 | "2420","46","033",8972,"46033" 2422 | "2421","46","035",19775,"46035" 2423 | "2422","46","037",5424,"46037" 2424 | "2423","46","039",4351,"46039" 2425 | "2424","46","041",5892,"46041" 2426 | "2425","46","043",2921,"46043" 2427 | "2426","46","045",3829,"46045" 2428 | "2427","46","047",6713,"46047" 2429 | "2428","46","049",2299,"46049" 2430 | "2429","46","051",7052,"46051" 2431 | "2430","46","053",4185,"46053" 2432 | "2431","46","055",1899,"46055" 2433 | "2432","46","057",6164,"46057" 2434 | "2433","46","059",3191,"46059" 2435 | "2434","46","061",3453,"46061" 2436 | "2435","46","063",1298,"46063" 2437 | "2436","46","065",17526,"46065" 2438 | "2437","46","067",7291,"46067" 2439 | "2438","46","069",1301,"46069" 2440 | "2439","46","071",3344,"46071" 2441 | "2440","46","073",2013,"46073" 2442 | "2441","46","075",903,"46075" 2443 | "2442","46","077",4939,"46077" 2444 | "2443","46","079",12797,"46079" 2445 | "2444","46","081",25844,"46081" 2446 | "2445","46","083",61128,"46083" 2447 | "2446","46","085",3781,"46085" 2448 | "2447","46","087",5586,"46087" 2449 | "2448","46","089",2379,"46089" 2450 | "2449","46","091",4935,"46091" 2451 | "2450","46","093",28332,"46093" 2452 | "2451","46","095",2061,"46095" 2453 | "2452","46","097",2216,"46097" 2454 | "2453","46","099",193134,"46099" 2455 | "2454","46","101",6576,"46101" 2456 | "2455","46","102",14177,"46102" 2457 | "2456","46","103",113775,"46103" 2458 | "2457","46","105",2865,"46105" 2459 | "2458","46","107",2153,"46107" 2460 | "2459","46","109",10394,"46109" 2461 | "2460","46","111",2344,"46111" 2462 | "2461","46","115",6376,"46115" 2463 | "2462","46","117",3098,"46117" 2464 | "2463","46","119",1391,"46119" 2465 | "2464","46","121",10177,"46121" 2466 | "2465","46","123",5441,"46123" 2467 | "2466","46","125",8384,"46125" 2468 | "2467","46","127",15932,"46127" 2469 | "2468","46","129",5435,"46129" 2470 | "2469","46","135",22814,"46135" 2471 | "2470","46","137",2756,"46137" 2472 | "2471","47","000",6829174,"47000" 2473 | "2472","47","001",76978,"47001" 2474 | "2473","47","003",49713,"47003" 2475 | "2474","47","005",16160,"47005" 2476 | "2475","47","007",15064,"47007" 2477 | "2476","47","009",133088,"47009" 2478 | "2477","47","011",108110,"47011" 2479 | "2478","47","013",39842,"47013" 2480 | "2479","47","015",14678,"47015" 2481 | "2480","47","017",27767,"47017" 2482 | "2481","47","019",56391,"47019" 2483 | "2482","47","021",40667,"47021" 2484 | "2483","47","023",17297,"47023" 2485 | "2484","47","025",31959,"47025" 2486 | "2485","47","027",7615,"47027" 2487 | "2486","47","029",36004,"47029" 2488 | "2487","47","031",56520,"47031" 2489 | "2488","47","033",14230,"47033" 2490 | "2489","47","035",60520,"47035" 2491 | "2490","47","037",694144,"47037" 2492 | "2491","47","039",11663,"47039" 2493 | "2492","47","041",20490,"47041" 2494 | "2493","47","043",53948,"47043" 2495 | "2494","47","045",37159,"47045" 2496 | "2495","47","047",41133,"47047" 2497 | "2496","47","049",18523,"47049" 2498 | "2497","47","051",42208,"47051" 2499 | "2498","47","053",49133,"47053" 2500 | "2499","47","055",29464,"47055" 2501 | "2500","47","057",23320,"47057" 2502 | "2501","47","059",69069,"47059" 2503 | "2502","47","061",13427,"47061" 2504 | "2503","47","063",64934,"47063" 2505 | "2504","47","065",367804,"47065" 2506 | "2505","47","067",6620,"47067" 2507 | "2506","47","069",25050,"47069" 2508 | "2507","47","071",25652,"47071" 2509 | "2508","47","073",56786,"47073" 2510 | "2509","47","075",17304,"47075" 2511 | "2510","47","077",28117,"47077" 2512 | "2511","47","079",32345,"47079" 2513 | "2512","47","081",25178,"47081" 2514 | "2513","47","083",8201,"47083" 2515 | "2514","47","085",18582,"47085" 2516 | "2515","47","087",11786,"47087" 2517 | "2516","47","089",54495,"47089" 2518 | "2517","47","091",17788,"47091" 2519 | "2518","47","093",470313,"47093" 2520 | "2519","47","095",7016,"47095" 2521 | "2520","47","097",25633,"47097" 2522 | "2521","47","099",44142,"47099" 2523 | "2522","47","101",12268,"47101" 2524 | "2523","47","103",34366,"47103" 2525 | "2524","47","105",54068,"47105" 2526 | "2525","47","107",53794,"47107" 2527 | "2526","47","109",25694,"47109" 2528 | "2527","47","111",24602,"47111" 2529 | "2528","47","113",97984,"47113" 2530 | "2529","47","115",28907,"47115" 2531 | "2530","47","117",34375,"47117" 2532 | "2531","47","119",96387,"47119" 2533 | "2532","47","121",12422,"47121" 2534 | "2533","47","123",46545,"47123" 2535 | "2534","47","125",208993,"47125" 2536 | "2535","47","127",6488,"47127" 2537 | "2536","47","129",21403,"47129" 2538 | "2537","47","131",30069,"47131" 2539 | "2538","47","133",22241,"47133" 2540 | "2539","47","135",8076,"47135" 2541 | "2540","47","137",5048,"47137" 2542 | "2541","47","139",16832,"47139" 2543 | "2542","47","141",80245,"47141" 2544 | "2543","47","143",33167,"47143" 2545 | "2544","47","145",53382,"47145" 2546 | "2545","47","147",71813,"47147" 2547 | "2546","47","149",332285,"47149" 2548 | "2547","47","151",22068,"47151" 2549 | "2548","47","153",15026,"47153" 2550 | "2549","47","155",98250,"47155" 2551 | "2550","47","157",937166,"47157" 2552 | "2551","47","159",20157,"47159" 2553 | "2552","47","161",13715,"47161" 2554 | "2553","47","163",158348,"47163" 2555 | "2554","47","165",191283,"47165" 2556 | "2555","47","167",61599,"47167" 2557 | "2556","47","169",11284,"47169" 2558 | "2557","47","171",17883,"47171" 2559 | "2558","47","173",19972,"47173" 2560 | "2559","47","175",5872,"47175" 2561 | "2560","47","177",41277,"47177" 2562 | "2561","47","179",129375,"47179" 2563 | "2562","47","181",16673,"47181" 2564 | "2563","47","183",33328,"47183" 2565 | "2564","47","185",27345,"47185" 2566 | "2565","47","187",238412,"47187" 2567 | "2566","47","189",144657,"47189" 2568 | "2567","48","000",28995881,"48000" 2569 | "2568","48","001",57735,"48001" 2570 | "2569","48","003",18705,"48003" 2571 | "2570","48","005",86715,"48005" 2572 | "2571","48","007",23510,"48007" 2573 | "2572","48","009",8553,"48009" 2574 | "2573","48","011",1887,"48011" 2575 | "2574","48","013",51153,"48013" 2576 | "2575","48","015",30032,"48015" 2577 | "2576","48","017",7000,"48017" 2578 | "2577","48","019",23112,"48019" 2579 | "2578","48","021",88723,"48021" 2580 | "2579","48","023",3509,"48023" 2581 | "2580","48","025",32565,"48025" 2582 | "2581","48","027",362924,"48027" 2583 | "2582","48","029",2003554,"48029" 2584 | "2583","48","031",11931,"48031" 2585 | "2584","48","033",654,"48033" 2586 | "2585","48","035",18685,"48035" 2587 | "2586","48","037",93245,"48037" 2588 | "2587","48","039",374264,"48039" 2589 | "2588","48","041",229211,"48041" 2590 | "2589","48","043",9203,"48043" 2591 | "2590","48","045",1546,"48045" 2592 | "2591","48","047",7093,"48047" 2593 | "2592","48","049",37864,"48049" 2594 | "2593","48","051",18443,"48051" 2595 | "2594","48","053",48155,"48053" 2596 | "2595","48","055",43664,"48055" 2597 | "2596","48","057",21290,"48057" 2598 | "2597","48","059",13943,"48059" 2599 | "2598","48","061",423163,"48061" 2600 | "2599","48","063",13094,"48063" 2601 | "2600","48","065",5926,"48065" 2602 | "2601","48","067",30026,"48067" 2603 | "2602","48","069",7530,"48069" 2604 | "2603","48","071",43837,"48071" 2605 | "2604","48","073",52646,"48073" 2606 | "2605","48","075",7306,"48075" 2607 | "2606","48","077",10471,"48077" 2608 | "2607","48","079",2853,"48079" 2609 | "2608","48","081",3387,"48081" 2610 | "2609","48","083",8175,"48083" 2611 | "2610","48","085",1034730,"48085" 2612 | "2611","48","087",2920,"48087" 2613 | "2612","48","089",21493,"48089" 2614 | "2613","48","091",156209,"48091" 2615 | "2614","48","093",13635,"48093" 2616 | "2615","48","095",2726,"48095" 2617 | "2616","48","097",41257,"48097" 2618 | "2617","48","099",75951,"48099" 2619 | "2618","48","101",1398,"48101" 2620 | "2619","48","103",4797,"48103" 2621 | "2620","48","105",3464,"48105" 2622 | "2621","48","107",5737,"48107" 2623 | "2622","48","109",2171,"48109" 2624 | "2623","48","111",7287,"48111" 2625 | "2624","48","113",2635516,"48113" 2626 | "2625","48","115",12728,"48115" 2627 | "2626","48","117",18546,"48117" 2628 | "2627","48","119",5331,"48119" 2629 | "2628","48","121",887207,"48121" 2630 | "2629","48","123",20160,"48123" 2631 | "2630","48","125",2211,"48125" 2632 | "2631","48","127",10124,"48127" 2633 | "2632","48","129",3278,"48129" 2634 | "2633","48","131",11157,"48131" 2635 | "2634","48","133",18360,"48133" 2636 | "2635","48","135",166223,"48135" 2637 | "2636","48","137",1932,"48137" 2638 | "2637","48","139",184826,"48139" 2639 | "2638","48","141",839238,"48141" 2640 | "2639","48","143",42698,"48143" 2641 | "2640","48","145",17297,"48145" 2642 | "2641","48","147",35514,"48147" 2643 | "2642","48","149",25346,"48149" 2644 | "2643","48","151",3830,"48151" 2645 | "2644","48","153",5712,"48153" 2646 | "2645","48","155",1155,"48155" 2647 | "2646","48","157",811688,"48157" 2648 | "2647","48","159",10725,"48159" 2649 | "2648","48","161",19717,"48161" 2650 | "2649","48","163",20306,"48163" 2651 | "2650","48","165",21492,"48165" 2652 | "2651","48","167",342139,"48167" 2653 | "2652","48","169",6229,"48169" 2654 | "2653","48","171",26988,"48171" 2655 | "2654","48","173",1409,"48173" 2656 | "2655","48","175",7658,"48175" 2657 | "2656","48","177",20837,"48177" 2658 | "2657","48","179",21886,"48179" 2659 | "2658","48","181",136212,"48181" 2660 | "2659","48","183",123945,"48183" 2661 | "2660","48","185",28880,"48185" 2662 | "2661","48","187",166847,"48187" 2663 | "2662","48","189",33406,"48189" 2664 | "2663","48","191",2964,"48191" 2665 | "2664","48","193",8461,"48193" 2666 | "2665","48","195",5399,"48195" 2667 | "2666","48","197",3933,"48197" 2668 | "2667","48","199",57602,"48199" 2669 | "2668","48","201",4713325,"48201" 2670 | "2669","48","203",66553,"48203" 2671 | "2670","48","205",5576,"48205" 2672 | "2671","48","207",5658,"48207" 2673 | "2672","48","209",230191,"48209" 2674 | "2673","48","211",3819,"48211" 2675 | "2674","48","213",82737,"48213" 2676 | "2675","48","215",868707,"48215" 2677 | "2676","48","217",36649,"48217" 2678 | "2677","48","219",23021,"48219" 2679 | "2678","48","221",61643,"48221" 2680 | "2679","48","223",37084,"48223" 2681 | "2680","48","225",22968,"48225" 2682 | "2681","48","227",36664,"48227" 2683 | "2682","48","229",4886,"48229" 2684 | "2683","48","231",98594,"48231" 2685 | "2684","48","233",20938,"48233" 2686 | "2685","48","235",1536,"48235" 2687 | "2686","48","237",8935,"48237" 2688 | "2687","48","239",14760,"48239" 2689 | "2688","48","241",35529,"48241" 2690 | "2689","48","243",2274,"48243" 2691 | "2690","48","245",251565,"48245" 2692 | "2691","48","247",5200,"48247" 2693 | "2692","48","249",40482,"48249" 2694 | "2693","48","251",175817,"48251" 2695 | "2694","48","253",20083,"48253" 2696 | "2695","48","255",15601,"48255" 2697 | "2696","48","257",136154,"48257" 2698 | "2697","48","259",47431,"48259" 2699 | "2698","48","261",404,"48261" 2700 | "2699","48","263",762,"48263" 2701 | "2700","48","265",52600,"48265" 2702 | "2701","48","267",4337,"48267" 2703 | "2702","48","269",272,"48269" 2704 | "2703","48","271",3667,"48271" 2705 | "2704","48","273",30680,"48273" 2706 | "2705","48","275",3664,"48275" 2707 | "2706","48","277",49859,"48277" 2708 | "2707","48","279",12893,"48279" 2709 | "2708","48","281",21428,"48281" 2710 | "2709","48","283",7520,"48283" 2711 | "2710","48","285",20154,"48285" 2712 | "2711","48","287",17239,"48287" 2713 | "2712","48","289",17404,"48289" 2714 | "2713","48","291",88219,"48291" 2715 | "2714","48","293",23437,"48293" 2716 | "2715","48","295",3233,"48295" 2717 | "2716","48","297",12207,"48297" 2718 | "2717","48","299",21795,"48299" 2719 | "2718","48","301",169,"48301" 2720 | "2719","48","303",310569,"48303" 2721 | "2720","48","305",5951,"48305" 2722 | "2721","48","307",7984,"48307" 2723 | "2722","48","309",256623,"48309" 2724 | "2723","48","311",743,"48311" 2725 | "2724","48","313",14284,"48313" 2726 | "2725","48","315",9854,"48315" 2727 | "2726","48","317",5771,"48317" 2728 | "2727","48","319",4274,"48319" 2729 | "2728","48","321",36643,"48321" 2730 | "2729","48","323",58722,"48323" 2731 | "2730","48","325",51584,"48325" 2732 | "2731","48","327",2138,"48327" 2733 | "2732","48","329",176832,"48329" 2734 | "2733","48","331",24823,"48331" 2735 | "2734","48","333",4873,"48333" 2736 | "2735","48","335",8545,"48335" 2737 | "2736","48","337",19818,"48337" 2738 | "2737","48","339",607391,"48339" 2739 | "2738","48","341",20940,"48341" 2740 | "2739","48","343",12388,"48343" 2741 | "2740","48","345",1200,"48345" 2742 | "2741","48","347",65204,"48347" 2743 | "2742","48","349",50113,"48349" 2744 | "2743","48","351",13595,"48351" 2745 | "2744","48","353",14714,"48353" 2746 | "2745","48","355",362294,"48355" 2747 | "2746","48","357",9836,"48357" 2748 | "2747","48","359",2112,"48359" 2749 | "2748","48","361",83396,"48361" 2750 | "2749","48","363",29189,"48363" 2751 | "2750","48","365",23194,"48365" 2752 | "2751","48","367",142878,"48367" 2753 | "2752","48","369",9605,"48369" 2754 | "2753","48","371",15823,"48371" 2755 | "2754","48","373",51353,"48373" 2756 | "2755","48","375",117415,"48375" 2757 | "2756","48","377",6704,"48377" 2758 | "2757","48","379",12514,"48379" 2759 | "2758","48","381",137713,"48381" 2760 | "2759","48","383",3849,"48383" 2761 | "2760","48","385",3452,"48385" 2762 | "2761","48","387",12023,"48387" 2763 | "2762","48","389",15976,"48389" 2764 | "2763","48","391",6948,"48391" 2765 | "2764","48","393",854,"48393" 2766 | "2765","48","395",17074,"48395" 2767 | "2766","48","397",104915,"48397" 2768 | "2767","48","399",10264,"48399" 2769 | "2768","48","401",54406,"48401" 2770 | "2769","48","403",10542,"48403" 2771 | "2770","48","405",8237,"48405" 2772 | "2771","48","407",28859,"48407" 2773 | "2772","48","409",66730,"48409" 2774 | "2773","48","411",6055,"48411" 2775 | "2774","48","413",2793,"48413" 2776 | "2775","48","415",16703,"48415" 2777 | "2776","48","417",3265,"48417" 2778 | "2777","48","419",25274,"48419" 2779 | "2778","48","421",3022,"48421" 2780 | "2779","48","423",232751,"48423" 2781 | "2780","48","425",9128,"48425" 2782 | "2781","48","427",64633,"48427" 2783 | "2782","48","429",9366,"48429" 2784 | "2783","48","431",1291,"48431" 2785 | "2784","48","433",1350,"48433" 2786 | "2785","48","435",3776,"48435" 2787 | "2786","48","437",7397,"48437" 2788 | "2787","48","439",2102515,"48439" 2789 | "2788","48","441",138034,"48441" 2790 | "2789","48","443",776,"48443" 2791 | "2790","48","445",12337,"48445" 2792 | "2791","48","447",1501,"48447" 2793 | "2792","48","449",32750,"48449" 2794 | "2793","48","451",119200,"48451" 2795 | "2794","48","453",1273954,"48453" 2796 | "2795","48","455",14651,"48455" 2797 | "2796","48","457",21672,"48457" 2798 | "2797","48","459",41753,"48459" 2799 | "2798","48","461",3657,"48461" 2800 | "2799","48","463",26741,"48463" 2801 | "2800","48","465",49025,"48465" 2802 | "2801","48","467",56590,"48467" 2803 | "2802","48","469",92084,"48469" 2804 | "2803","48","471",72971,"48471" 2805 | "2804","48","473",55246,"48473" 2806 | "2805","48","475",11998,"48475" 2807 | "2806","48","477",35882,"48477" 2808 | "2807","48","479",276652,"48479" 2809 | "2808","48","481",41556,"48481" 2810 | "2809","48","483",5056,"48483" 2811 | "2810","48","485",132230,"48485" 2812 | "2811","48","487",12769,"48487" 2813 | "2812","48","489",21358,"48489" 2814 | "2813","48","491",590551,"48491" 2815 | "2814","48","493",51070,"48493" 2816 | "2815","48","495",8010,"48495" 2817 | "2816","48","497",69984,"48497" 2818 | "2817","48","499",45539,"48499" 2819 | "2818","48","501",8713,"48501" 2820 | "2819","48","503",18010,"48503" 2821 | "2820","48","505",14179,"48505" 2822 | "2821","48","507",11840,"48507" 2823 | "2822","49","000",3205958,"49000" 2824 | "2823","49","001",6710,"49001" 2825 | "2824","49","003",56046,"49003" 2826 | "2825","49","005",128289,"49005" 2827 | "2826","49","007",20463,"49007" 2828 | "2827","49","009",950,"49009" 2829 | "2828","49","011",355481,"49011" 2830 | "2829","49","013",19938,"49013" 2831 | "2830","49","015",10012,"49015" 2832 | "2831","49","017",5051,"49017" 2833 | "2832","49","019",9754,"49019" 2834 | "2833","49","021",54839,"49021" 2835 | "2834","49","023",12017,"49023" 2836 | "2835","49","025",7886,"49025" 2837 | "2836","49","027",13188,"49027" 2838 | "2837","49","029",12124,"49029" 2839 | "2838","49","031",1479,"49031" 2840 | "2839","49","033",2483,"49033" 2841 | "2840","49","035",1160437,"49035" 2842 | "2841","49","037",15308,"49037" 2843 | "2842","49","039",30939,"49039" 2844 | "2843","49","041",21620,"49041" 2845 | "2844","49","043",42145,"49043" 2846 | "2845","49","045",72259,"49045" 2847 | "2846","49","047",35734,"49047" 2848 | "2847","49","049",636235,"49049" 2849 | "2848","49","051",34091,"49051" 2850 | "2849","49","053",177556,"49053" 2851 | "2850","49","055",2711,"49055" 2852 | "2851","49","057",260213,"49057" 2853 | "2852","50","000",623989,"50000" 2854 | "2853","50","001",36777,"50001" 2855 | "2854","50","003",35470,"50003" 2856 | "2855","50","005",29993,"50005" 2857 | "2856","50","007",163774,"50007" 2858 | "2857","50","009",6163,"50009" 2859 | "2858","50","011",49402,"50011" 2860 | "2859","50","013",7235,"50013" 2861 | "2860","50","015",25362,"50015" 2862 | "2861","50","017",28892,"50017" 2863 | "2862","50","019",27037,"50019" 2864 | "2863","50","021",58191,"50021" 2865 | "2864","50","023",58409,"50023" 2866 | "2865","50","025",42222,"50025" 2867 | "2866","50","027",55062,"50027" 2868 | "2867","51","000",8535519,"51000" 2869 | "2868","51","001",32316,"51001" 2870 | "2869","51","003",109330,"51003" 2871 | "2870","51","005",14860,"51005" 2872 | "2871","51","007",13145,"51007" 2873 | "2872","51","009",31605,"51009" 2874 | "2873","51","011",15911,"51011" 2875 | "2874","51","013",236842,"51013" 2876 | "2875","51","015",75558,"51015" 2877 | "2876","51","017",4147,"51017" 2878 | "2877","51","019",78997,"51019" 2879 | "2878","51","021",6280,"51021" 2880 | "2879","51","023",33419,"51023" 2881 | "2880","51","025",16231,"51025" 2882 | "2881","51","027",21004,"51027" 2883 | "2882","51","029",17148,"51029" 2884 | "2883","51","031",54885,"51031" 2885 | "2884","51","033",30725,"51033" 2886 | "2885","51","035",29791,"51035" 2887 | "2886","51","036",6963,"51036" 2888 | "2887","51","037",11880,"51037" 2889 | "2888","51","041",352802,"51041" 2890 | "2889","51","043",14619,"51043" 2891 | "2890","51","045",5131,"51045" 2892 | "2891","51","047",52605,"51047" 2893 | "2892","51","049",9932,"51049" 2894 | "2893","51","051",14318,"51051" 2895 | "2894","51","053",28544,"51053" 2896 | "2895","51","057",10953,"51057" 2897 | "2896","51","059",1147532,"51059" 2898 | "2897","51","061",71222,"51061" 2899 | "2898","51","063",15749,"51063" 2900 | "2899","51","065",27270,"51065" 2901 | "2900","51","067",56042,"51067" 2902 | "2901","51","069",89313,"51069" 2903 | "2902","51","071",16720,"51071" 2904 | "2903","51","073",37348,"51073" 2905 | "2904","51","075",23753,"51075" 2906 | "2905","51","077",15550,"51077" 2907 | "2906","51","079",19819,"51079" 2908 | "2907","51","081",11336,"51081" 2909 | "2908","51","083",33911,"51083" 2910 | "2909","51","085",107766,"51085" 2911 | "2910","51","087",330818,"51087" 2912 | "2911","51","089",50557,"51089" 2913 | "2912","51","091",2190,"51091" 2914 | "2913","51","093",37109,"51093" 2915 | "2914","51","095",76523,"51095" 2916 | "2915","51","097",7025,"51097" 2917 | "2916","51","099",26836,"51099" 2918 | "2917","51","101",17148,"51101" 2919 | "2918","51","103",10603,"51103" 2920 | "2919","51","105",23423,"51105" 2921 | "2920","51","107",413538,"51107" 2922 | "2921","51","109",37591,"51109" 2923 | "2922","51","111",12196,"51111" 2924 | "2923","51","113",13261,"51113" 2925 | "2924","51","115",8834,"51115" 2926 | "2925","51","117",30587,"51117" 2927 | "2926","51","119",10582,"51119" 2928 | "2927","51","121",98535,"51121" 2929 | "2928","51","125",14930,"51125" 2930 | "2929","51","127",23091,"51127" 2931 | "2930","51","131",11710,"51131" 2932 | "2931","51","133",12095,"51133" 2933 | "2932","51","135",15232,"51135" 2934 | "2933","51","137",37051,"51137" 2935 | "2934","51","139",23902,"51139" 2936 | "2935","51","141",17608,"51141" 2937 | "2936","51","143",60354,"51143" 2938 | "2937","51","145",29652,"51145" 2939 | "2938","51","147",22802,"51147" 2940 | "2939","51","149",38353,"51149" 2941 | "2940","51","153",470335,"51153" 2942 | "2941","51","155",34027,"51155" 2943 | "2942","51","157",7370,"51157" 2944 | "2943","51","159",9023,"51159" 2945 | "2944","51","161",94186,"51161" 2946 | "2945","51","163",22573,"51163" 2947 | "2946","51","165",81948,"51165" 2948 | "2947","51","167",26586,"51167" 2949 | "2948","51","169",21566,"51169" 2950 | "2949","51","171",43616,"51171" 2951 | "2950","51","173",30104,"51173" 2952 | "2951","51","175",17631,"51175" 2953 | "2952","51","177",136215,"51177" 2954 | "2953","51","179",152882,"51179" 2955 | "2954","51","181",6422,"51181" 2956 | "2955","51","183",11159,"51183" 2957 | "2956","51","185",40595,"51185" 2958 | "2957","51","187",40164,"51187" 2959 | "2958","51","191",53740,"51191" 2960 | "2959","51","193",18015,"51193" 2961 | "2960","51","195",37383,"51195" 2962 | "2961","51","197",28684,"51197" 2963 | "2962","51","199",68280,"51199" 2964 | "2963","51","510",159428,"51510" 2965 | "2964","51","520",16762,"51520" 2966 | "2965","51","530",6478,"51530" 2967 | "2966","51","540",47266,"51540" 2968 | "2967","51","550",244835,"51550" 2969 | "2968","51","570",17370,"51570" 2970 | "2969","51","580",5538,"51580" 2971 | "2970","51","590",40044,"51590" 2972 | "2971","51","595",5346,"51595" 2973 | "2972","51","600",24019,"51600" 2974 | "2973","51","610",14617,"51610" 2975 | "2974","51","620",7967,"51620" 2976 | "2975","51","630",29036,"51630" 2977 | "2976","51","640",6347,"51640" 2978 | "2977","51","650",134510,"51650" 2979 | "2978","51","660",53016,"51660" 2980 | "2979","51","670",22529,"51670" 2981 | "2980","51","678",7446,"51678" 2982 | "2981","51","680",82168,"51680" 2983 | "2982","51","683",41085,"51683" 2984 | "2983","51","685",17478,"51685" 2985 | "2984","51","690",12554,"51690" 2986 | "2985","51","700",179225,"51700" 2987 | "2986","51","710",242742,"51710" 2988 | "2987","51","720",3981,"51720" 2989 | "2988","51","730",31346,"51730" 2990 | "2989","51","735",12271,"51735" 2991 | "2990","51","740",94398,"51740" 2992 | "2991","51","750",18249,"51750" 2993 | "2992","51","760",230436,"51760" 2994 | "2993","51","770",99143,"51770" 2995 | "2994","51","775",25301,"51775" 2996 | "2995","51","790",24932,"51790" 2997 | "2996","51","800",92108,"51800" 2998 | "2997","51","810",449974,"51810" 2999 | "2998","51","820",22630,"51820" 3000 | "2999","51","830",14954,"51830" 3001 | "3000","51","840",28078,"51840" 3002 | "3001","53","000",7614893,"53000" 3003 | "3002","53","001",19983,"53001" 3004 | "3003","53","003",22582,"53003" 3005 | "3004","53","005",204390,"53005" 3006 | "3005","53","007",77200,"53007" 3007 | "3006","53","009",77331,"53009" 3008 | "3007","53","011",488241,"53011" 3009 | "3008","53","013",3985,"53013" 3010 | "3009","53","015",110593,"53015" 3011 | "3010","53","017",43429,"53017" 3012 | "3011","53","019",7627,"53019" 3013 | "3012","53","021",95222,"53021" 3014 | "3013","53","023",2225,"53023" 3015 | "3014","53","025",97733,"53025" 3016 | "3015","53","027",75061,"53027" 3017 | "3016","53","029",85141,"53029" 3018 | "3017","53","031",32221,"53031" 3019 | "3018","53","033",2252782,"53033" 3020 | "3019","53","035",271473,"53035" 3021 | "3020","53","037",47935,"53037" 3022 | "3021","53","039",22425,"53039" 3023 | "3022","53","041",80707,"53041" 3024 | "3023","53","043",10939,"53043" 3025 | "3024","53","045",66768,"53045" 3026 | "3025","53","047",42243,"53047" 3027 | "3026","53","049",22471,"53049" 3028 | "3027","53","051",13724,"53051" 3029 | "3028","53","053",904980,"53053" 3030 | "3029","53","055",17582,"53055" 3031 | "3030","53","057",129205,"53057" 3032 | "3031","53","059",12083,"53059" 3033 | "3032","53","061",822083,"53061" 3034 | "3033","53","063",522798,"53063" 3035 | "3034","53","065",45723,"53065" 3036 | "3035","53","067",290536,"53067" 3037 | "3036","53","069",4488,"53069" 3038 | "3037","53","071",60760,"53071" 3039 | "3038","53","073",229247,"53073" 3040 | "3039","53","075",50104,"53075" 3041 | "3040","53","077",250873,"53077" 3042 | "3041","54","000",1792147,"54000" 3043 | "3042","54","001",16441,"54001" 3044 | "3043","54","003",119171,"54003" 3045 | "3044","54","005",21457,"54005" 3046 | "3045","54","007",13957,"54007" 3047 | "3046","54","009",21939,"54009" 3048 | "3047","54","011",91945,"54011" 3049 | "3048","54","013",7109,"54013" 3050 | "3049","54","015",8508,"54015" 3051 | "3050","54","017",8448,"54017" 3052 | "3051","54","019",42406,"54019" 3053 | "3052","54","021",7823,"54021" 3054 | "3053","54","023",11568,"54023" 3055 | "3054","54","025",34662,"54025" 3056 | "3055","54","027",23175,"54027" 3057 | "3056","54","029",28810,"54029" 3058 | "3057","54","031",13776,"54031" 3059 | "3058","54","033",67256,"54033" 3060 | "3059","54","035",28576,"54035" 3061 | "3060","54","037",57146,"54037" 3062 | "3061","54","039",178124,"54039" 3063 | "3062","54","041",15907,"54041" 3064 | "3063","54","043",20409,"54043" 3065 | "3064","54","045",32019,"54045" 3066 | "3065","54","047",17624,"54047" 3067 | "3066","54","049",56072,"54049" 3068 | "3067","54","051",30531,"54051" 3069 | "3068","54","053",26516,"54053" 3070 | "3069","54","055",58758,"54055" 3071 | "3070","54","057",26868,"54057" 3072 | "3071","54","059",23424,"54059" 3073 | "3072","54","061",105612,"54061" 3074 | "3073","54","063",13275,"54063" 3075 | "3074","54","065",17884,"54065" 3076 | "3075","54","067",24496,"54067" 3077 | "3076","54","069",41411,"54069" 3078 | "3077","54","071",6969,"54071" 3079 | "3078","54","073",7460,"54073" 3080 | "3079","54","075",8247,"54075" 3081 | "3080","54","077",33432,"54077" 3082 | "3081","54","079",56450,"54079" 3083 | "3082","54","081",73361,"54081" 3084 | "3083","54","083",28695,"54083" 3085 | "3084","54","085",9554,"54085" 3086 | "3085","54","087",13688,"54087" 3087 | "3086","54","089",12573,"54089" 3088 | "3087","54","091",16695,"54091" 3089 | "3088","54","093",6839,"54093" 3090 | "3089","54","095",8591,"54095" 3091 | "3090","54","097",24176,"54097" 3092 | "3091","54","099",39402,"54099" 3093 | "3092","54","101",8114,"54101" 3094 | "3093","54","103",15065,"54103" 3095 | "3094","54","105",5821,"54105" 3096 | "3095","54","107",83518,"54107" 3097 | "3096","54","109",20394,"54109" 3098 | "3097","55","000",5822434,"55000" 3099 | "3098","55","001",20220,"55001" 3100 | "3099","55","003",15562,"55003" 3101 | "3100","55","005",45244,"55005" 3102 | "3101","55","007",15036,"55007" 3103 | "3102","55","009",264542,"55009" 3104 | "3103","55","011",13031,"55011" 3105 | "3104","55","013",15414,"55013" 3106 | "3105","55","015",50089,"55015" 3107 | "3106","55","017",64658,"55017" 3108 | "3107","55","019",34774,"55019" 3109 | "3108","55","021",57532,"55021" 3110 | "3109","55","023",16131,"55023" 3111 | "3110","55","025",546695,"55025" 3112 | "3111","55","027",87839,"55027" 3113 | "3112","55","029",27668,"55029" 3114 | "3113","55","031",43150,"55031" 3115 | "3114","55","033",45368,"55033" 3116 | "3115","55","035",104646,"55035" 3117 | "3116","55","037",4295,"55037" 3118 | "3117","55","039",103403,"55039" 3119 | "3118","55","041",9004,"55041" 3120 | "3119","55","043",51439,"55043" 3121 | "3120","55","045",36960,"55045" 3122 | "3121","55","047",18913,"55047" 3123 | "3122","55","049",23678,"55049" 3124 | "3123","55","051",5687,"55051" 3125 | "3124","55","053",20643,"55053" 3126 | "3125","55","055",84769,"55055" 3127 | "3126","55","057",26687,"55057" 3128 | "3127","55","059",169561,"55059" 3129 | "3128","55","061",20434,"55061" 3130 | "3129","55","063",118016,"55063" 3131 | "3130","55","065",16665,"55065" 3132 | "3131","55","067",19189,"55067" 3133 | "3132","55","069",27593,"55069" 3134 | "3133","55","071",78981,"55071" 3135 | "3134","55","073",135692,"55073" 3136 | "3135","55","075",40350,"55075" 3137 | "3136","55","077",15574,"55077" 3138 | "3137","55","078",4556,"55078" 3139 | "3138","55","079",945726,"55079" 3140 | "3139","55","081",46253,"55081" 3141 | "3140","55","083",37930,"55083" 3142 | "3141","55","085",35595,"55085" 3143 | "3142","55","087",187885,"55087" 3144 | "3143","55","089",89221,"55089" 3145 | "3144","55","091",7287,"55091" 3146 | "3145","55","093",42754,"55093" 3147 | "3146","55","095",43783,"55095" 3148 | "3147","55","097",70772,"55097" 3149 | "3148","55","099",13351,"55099" 3150 | "3149","55","101",196311,"55101" 3151 | "3150","55","103",17252,"55103" 3152 | "3151","55","105",163354,"55105" 3153 | "3152","55","107",14178,"55107" 3154 | "3153","55","109",90687,"55109" 3155 | "3154","55","111",64442,"55111" 3156 | "3155","55","113",16558,"55113" 3157 | "3156","55","115",40899,"55115" 3158 | "3157","55","117",115340,"55117" 3159 | "3158","55","119",20343,"55119" 3160 | "3159","55","121",29649,"55121" 3161 | "3160","55","123",30822,"55123" 3162 | "3161","55","125",22195,"55125" 3163 | "3162","55","127",103868,"55127" 3164 | "3163","55","129",15720,"55129" 3165 | "3164","55","131",136034,"55131" 3166 | "3165","55","133",404198,"55133" 3167 | "3166","55","135",50990,"55135" 3168 | "3167","55","137",24443,"55137" 3169 | "3168","55","139",171907,"55139" 3170 | "3169","55","141",72999,"55141" 3171 | "3170","56","000",578759,"56000" 3172 | "3171","56","001",38880,"56001" 3173 | "3172","56","003",11790,"56003" 3174 | "3173","56","005",46341,"56005" 3175 | "3174","56","007",14800,"56007" 3176 | "3175","56","009",13822,"56009" 3177 | "3176","56","011",7584,"56011" 3178 | "3177","56","013",39261,"56013" 3179 | "3178","56","015",13211,"56015" 3180 | "3179","56","017",4413,"56017" 3181 | "3180","56","019",8445,"56019" 3182 | "3181","56","021",99500,"56021" 3183 | "3182","56","023",19830,"56023" 3184 | "3183","56","025",79858,"56025" 3185 | "3184","56","027",2356,"56027" 3186 | "3185","56","029",29194,"56029" 3187 | "3186","56","031",8393,"56031" 3188 | "3187","56","033",30485,"56033" 3189 | "3188","56","035",9831,"56035" 3190 | "3189","56","037",42343,"56037" 3191 | "3190","56","039",23464,"56039" 3192 | "3191","56","041",20226,"56041" 3193 | "3192","56","043",7805,"56043" 3194 | "3193","56","045",6927,"56045" 3195 | --------------------------------------------------------------------------------