grnsight 3.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +1 -0
- package/.travis.yml +1 -1
- package/GRNsight - Beta.html +194 -0
- package/Gemfile.lock +259 -0
- package/README.md +1 -1
- package/_gh_pages/about.html +360 -45
- package/_gh_pages/assets/css/footer.css +3 -0
- package/_gh_pages/assets/css/main.css +28 -14
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_estimation_output_binary-no-targetless-genes_sif.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_estimation_output_binary_sif.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_graphml_3-edges-and-footer.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_graphml_header-and-3-nodes.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_graphml_output_3-edges-and-footer.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_graphml_output_header-and-3-nodes.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_input_binary-no-targetless-genes_sif.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_input_binary_sif.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_input_concatenated-no-targetless-genes_sif.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_input_concatenated_sif.png +0 -0
- package/_gh_pages/assets/images/Choe-Shin_CMSI402-poster-session_20180430.jpg +0 -0
- package/_gh_pages/assets/images/Choe_SCCUR_2017.jpg +0 -0
- package/_gh_pages/assets/images/Dahlquist-Choe-Shin_CMSI402-poster-session_20180430.jpg +0 -0
- package/_gh_pages/assets/images/Dionisio-Dahlquist_GRNsight-shades_20170506.jpg +0 -0
- package/_gh_pages/assets/images/Klein_Samdarshi_TriBeta_2018_20180317.jpg +0 -0
- package/_gh_pages/assets/images/Shin_SCCUR_2017.jpg +0 -0
- package/{documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure1_zoom145_900pix-wide.png → _gh_pages/assets/images/demo-3_network-sheet.png} +0 -0
- package/{documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure2_zoom145_900pix-wide.png → _gh_pages/assets/images/demo-4_network-optimized-weights-sheet.png} +0 -0
- package/_gh_pages/assets/images/gene-pages-0.png +0 -0
- package/_gh_pages/assets/images/gene-pages-1.png +0 -0
- package/_gh_pages/assets/images/gene-pages-2.png +0 -0
- package/_gh_pages/assets/images/gene-pages-3.png +0 -0
- package/_gh_pages/assets/images/grnsight2020.png +0 -0
- package/_gh_pages/assets/images/v3demo2-grid+nodecoloring.png +0 -0
- package/_gh_pages/assets/images/v3demo2-nodecoloring.png +0 -0
- package/_gh_pages/assets/images/v3demo2.png +0 -0
- package/_gh_pages/assets/js/ga-report.js +11 -11
- package/_gh_pages/assets/js/iframeResizer.min.js +9 -0
- package/_gh_pages/assets/js/main.js +43 -43
- package/_gh_pages/beta.html +29 -24
- package/_gh_pages/contact.html +31 -31
- package/_gh_pages/coverage/coverage.json +1 -0
- package/_gh_pages/coverage/coverage.raw.json +1 -0
- package/_gh_pages/coverage/lcov-report/base.css +223 -0
- package/_gh_pages/coverage/lcov-report/block-navigation.js +63 -0
- package/_gh_pages/coverage/lcov-report/controllers/additional-sheet-parser.js.html +330 -0
- package/_gh_pages/coverage/lcov-report/controllers/constants.js.html +243 -0
- package/_gh_pages/coverage/lcov-report/controllers/export-controller.js.html +285 -0
- package/_gh_pages/coverage/lcov-report/controllers/exporters/graphml.js.html +405 -0
- package/_gh_pages/coverage/lcov-report/controllers/exporters/index.html +110 -0
- package/_gh_pages/coverage/lcov-report/controllers/exporters/sif.js.html +150 -0
- package/_gh_pages/coverage/lcov-report/controllers/helpers.js.html +114 -0
- package/_gh_pages/coverage/lcov-report/controllers/import-controller.js.html +233 -0
- package/_gh_pages/coverage/lcov-report/controllers/importers/graphml.js.html +716 -0
- package/_gh_pages/coverage/lcov-report/controllers/importers/index.html +106 -0
- package/_gh_pages/coverage/lcov-report/controllers/importers/sif.js.html +488 -0
- package/_gh_pages/coverage/lcov-report/controllers/index.html +162 -0
- package/_gh_pages/coverage/lcov-report/controllers/semantic-checker.js.html +810 -0
- package/_gh_pages/coverage/lcov-report/controllers/spreadsheet-controller.js.html +1779 -0
- package/_gh_pages/coverage/lcov-report/index.html +136 -0
- package/_gh_pages/coverage/lcov-report/prettify.css +1 -0
- package/_gh_pages/coverage/lcov-report/prettify.js +1 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/additional-sheet-parser.js.html +330 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/constants.js.html +243 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/export-controller.js.html +285 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/exporters/graphml.js.html +405 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/exporters/index.html +110 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/exporters/sif.js.html +150 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/graphml-constants.js.html +585 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/helpers.js.html +114 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/import-controller.js.html +237 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/importers/graphml.js.html +585 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/importers/index.html +110 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/importers/sif.js.html +492 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/index.html +188 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/semantic-checker.js.html +810 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/spreadsheet-controller.js.html +1779 -0
- package/_gh_pages/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/_gh_pages/coverage/lcov-report/sorter.js +158 -0
- package/_gh_pages/coverage/lcov-report/web-client/public/js/grnstate.js.html +225 -0
- package/_gh_pages/coverage/lcov-report/web-client/public/js/index.html +97 -0
- package/_gh_pages/coverage/lcov.info +49 -0
- package/_gh_pages/documentation.html +998 -320
- package/_gh_pages/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.aux +47 -0
- package/_gh_pages/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.bbl +73 -0
- package/_gh_pages/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.blg +52 -0
- package/_gh_pages/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.log +1056 -0
- package/_gh_pages/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.out +7 -0
- package/_gh_pages/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.synctex.gz +0 -0
- package/_gh_pages/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_text-only_revised-Dondi.docx +0 -0
- package/_gh_pages/encryption/server.cert +21 -0
- package/_gh_pages/encryption/server.key +28 -0
- package/_gh_pages/favicon.ico +0 -0
- package/_gh_pages/index.html +45 -22
- package/_gh_pages/links.html +47 -28
- package/_gh_pages/news.html +103 -21
- package/_gh_pages/onlyfooter.html +78 -0
- package/_gh_pages/onlyheader.html +64 -0
- package/_gh_pages/onlysidebar.html +73 -0
- package/_gh_pages/package-lock.json +14048 -0
- package/_gh_pages/people.html +129 -40
- package/_gh_pages/privacy.html +23 -17
- package/_gh_pages/publications.html +75 -33
- package/_gh_pages/robots.txt +1 -0
- package/_gh_pages/sitemap.xml +87 -74
- package/_gh_pages/test-files/import-samples/attributes.graphml +40 -0
- package/_gh_pages/test-files/import-samples/port.graphml +32 -0
- package/_gh_pages/test-files/import-samples/simple.graphml +31 -0
- package/_gh_pages/web-client/public/js/grnsight.min.js +2347 -0
- package/_gh_pages/web-client/public/stylesheets/grnsight.css +443 -0
- package/coverage/coverage.json +1 -1
- package/coverage/coverage.raw.json +1 -0
- package/coverage/lcov-report/base.css +18 -8
- package/coverage/lcov-report/block-navigation.js +63 -0
- package/coverage/lcov-report/controllers/additional-sheet-parser.js.html +330 -0
- package/coverage/lcov-report/controllers/constants.js.html +65 -61
- package/coverage/lcov-report/controllers/export-controller.js.html +96 -92
- package/coverage/lcov-report/controllers/exporters/graphml.js.html +168 -164
- package/coverage/lcov-report/controllers/exporters/index.html +36 -32
- package/coverage/lcov-report/controllers/exporters/sif.js.html +65 -61
- package/coverage/lcov-report/controllers/helpers.js.html +25 -21
- package/coverage/lcov-report/controllers/index.html +49 -45
- package/coverage/lcov-report/controllers/semantic-checker.js.html +403 -396
- package/coverage/lcov-report/controllers/spreadsheet-controller.js.html +973 -879
- package/coverage/lcov-report/index.html +45 -28
- package/coverage/lcov-report/server/controllers/additional-sheet-parser.js.html +330 -0
- package/coverage/lcov-report/server/controllers/constants.js.html +243 -0
- package/coverage/lcov-report/server/controllers/export-controller.js.html +285 -0
- package/coverage/lcov-report/server/controllers/exporters/graphml.js.html +405 -0
- package/coverage/lcov-report/server/controllers/exporters/index.html +110 -0
- package/coverage/lcov-report/server/controllers/exporters/sif.js.html +150 -0
- package/coverage/lcov-report/server/controllers/graphml-constants.js.html +585 -0
- package/coverage/lcov-report/server/controllers/helpers.js.html +114 -0
- package/coverage/lcov-report/server/controllers/import-controller.js.html +237 -0
- package/coverage/lcov-report/server/controllers/importers/graphml.js.html +585 -0
- package/coverage/lcov-report/server/controllers/importers/index.html +110 -0
- package/coverage/lcov-report/server/controllers/importers/sif.js.html +492 -0
- package/coverage/lcov-report/server/controllers/index.html +188 -0
- package/coverage/lcov-report/server/controllers/semantic-checker.js.html +810 -0
- package/coverage/lcov-report/server/controllers/spreadsheet-controller.js.html +1779 -0
- package/coverage/lcov-report/web-client/public/js/grnstate.js.html +225 -0
- package/coverage/lcov-report/web-client/public/js/index.html +97 -0
- package/coverage/lcov.info +1758 -876
- package/encryption/server.cert +21 -0
- package/encryption/server.key +28 -0
- package/package.json +46 -22
- package/server/app.js +6 -2
- package/server/config/config.js +16 -7
- package/server/controllers/additional-sheet-parser.js +292 -55
- package/server/controllers/api-controllers.js +36 -0
- package/server/controllers/constants.js +4 -37
- package/server/controllers/database-controller.js +129 -0
- package/server/controllers/demo-workbooks.js +5973 -0
- package/server/controllers/export-constants.js +78 -0
- package/server/controllers/export-controller.js +25 -3
- package/server/controllers/exporters/graphml.js +15 -15
- package/server/controllers/exporters/sif.js +7 -7
- package/server/controllers/exporters/xlsx.js +183 -0
- package/server/controllers/expression-sheet-parser.js +170 -0
- package/server/controllers/ga-controller.js +1 -1
- package/server/controllers/graphml-constants.js +0 -17
- package/server/controllers/helpers.js +25 -1
- package/server/controllers/import-controller.js +2 -2
- package/server/controllers/importers/graphml.js +17 -20
- package/server/controllers/importers/sif.js +22 -18
- package/server/controllers/network-sheet-parser.js +307 -0
- package/server/controllers/semantic-checker.js +30 -162
- package/server/controllers/sif-constants.js +36 -0
- package/server/controllers/spreadsheet-controller.js +277 -424
- package/server/controllers/workbook-constants.js +521 -0
- package/test/additional-sheet-parser-tests.js +147 -38
- package/test/api-tests.js +245 -0
- package/test/errors-adjacency-matrix-modifications.js +30 -29
- package/test/errors-gene-name-modifications.js +9 -0
- package/test/errors-graph-tests.js +4 -4
- package/test/errors-sheet-modifications.js +10 -2
- package/test/export-tests.js +431 -24
- package/test/expression-data-import-tests.js +113 -0
- package/test/grnstate-tests.js +29 -0
- package/test/import-graphml-tests.js +59 -40
- package/test/import-sif-tests.js +50 -37
- package/test/test.js +557 -93
- package/test/warnings-adjacency-matrix-modifications.js +8 -7
- package/test-files/additional-sheet-test-files/optimization-diagnostics-default.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-extraneous-data.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-incorrect-MSE-gene-header.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-incorrect-MSE-header.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-incorrect-column-headers.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-invalid-MSE-data.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-invalid-value.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-missing-MSE-data.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-missing-column-headers.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-missing-header.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-unknown-parameter.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-parameters-default.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-parameters-incorrect-headers.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-parameters-invalid-optimization-parameter.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-parameters-missing-headers.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-parameters-unknown-parameter.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-extraneous-data.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-incorrect-cell-A1.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-incorrect-column-header.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-invalid-gene-length.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-invalid-gene-type.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-invalid-value.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-missing-column-header.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-special-character.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/asymmetric-gene-order-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/asymmetric-gene-order-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-column-adjacent-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-column-adjacent-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-column-end-of-sheet-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-column-end-of-sheet-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-data-random-cell-both-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-data-random-cell-network-only-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-data-random-cell-network-only-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-data-random-cell-network-optimized-only-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-row-end-of-sheet-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-row-end-of-sheet-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/incorrect-network-cell-A1.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-column-end-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-column-end-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-data-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-data-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-row-end-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-row-end-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-row-middle-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-row-middle-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-value-bottom-corner-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-value-bottom-corner-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/value-replaced-w-spaces-both-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/value-replaced-w-spaces-net-only-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/value-replaced-w-spaces-net-op-only-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/value-replaced/342/200/223w-spaces-net-only-output.xlsx +0 -0
- package/test-files/demo-files/15-genes_28-edges_db5_Dahlquist-data_estimation_output.xlsx +0 -0
- package/test-files/demo-files/15-genes_28-edges_db5_Dahlquist-data_input.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_correct_numbering.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_different_number_of_columns.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_empty_column.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_empty_row.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_erroneous_data.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_extra_gene_name.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_incorrectly_ordered_time_points.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_mismatched_case_gene_names.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_mismatched_gene_names.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_missing_column_header.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_missing_data_error.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_missing_data_ok.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_missing_data_ok_export_exact.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_missing_gene_name.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_name_not_in_optparams.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_name_not_present.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_negative_time_points.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_non_numerical_time_points.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_not_existing.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_wrong_id_label.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_wrong_order_gene_names.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_wrong_sheet_name_case.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_wrong_sheet_name_convention.xlsx +0 -0
- package/test-files/gene-name-modifications/NaN-as-gene-name-input.xlsx +0 -0
- package/test-files/gene-name-modifications/NaN-as-gene-name-output.xlsx +0 -0
- package/test-files/gene-name-modifications/mismatched-case-related-input.xlsx +0 -0
- package/test-files/gene-name-modifications/mismatched-case-related-output.xlsx +0 -0
- package/test-files/gene-name-modifications/mismatched-case-unrelated-input.xlsx +0 -0
- package/test-files/gene-name-modifications/mismatched-case-unrelated-output.xlsx +0 -0
- package/test-files/gene-name-modifications/numbers-as-gene-name-related-input.xlsx +0 -0
- package/test-files/gene-name-modifications/numbers-as-gene-name-related-output.xlsx +0 -0
- package/test-files/gene-name-modifications/numbers-as-gene-name-unrelated-input.xlsx +0 -0
- package/test-files/gene-name-modifications/numbers-as-gene-name-unrelated-output.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/{80-genes-0-edges.xlsx → 134-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{45-genes-max-edges.xlsx → 44-source-genes-45-target-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{1-gene-0-edges.xlsx → unused-files/1-gene-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{1-gene-1-edges.xlsx → unused-files/1-gene-1-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{10-genes-50-edges.xlsx → unused-files/10-genes-50-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{10-genes-90-edges.xlsx → unused-files/10-genes-90-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{100-genes-0-edges.xlsx → unused-files/100-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{110-genes-0-edges.xlsx → unused-files/110-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{120-genes-0-edges.xlsx → unused-files/120-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{130-genes-0-edges.xlsx → unused-files/130-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{140-genes-0-edges.xlsx → unused-files/140-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{150-genes-10000-edges.xlsx → unused-files/150-genes-10000-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{150-genes-20000-edges.xlsx → unused-files/150-genes-20000-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{150-genes-max-edges.xlsx → unused-files/150-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{160-genes-max-edges.xlsx → unused-files/160-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{20-genes-max-edges.xlsx → unused-files/20-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{25-genes-max-edges.xlsx → unused-files/25-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{30-genes-max-edges.xlsx → unused-files/30-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{34-genes-0-edges.xlsx → unused-files/34-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{34-genes-40-edges.xlsx → unused-files/34-genes-40-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{34-genes-65-edges.xlsx → unused-files/34-genes-65-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{34-genes-90-edges.xlsx → unused-files/34-genes-90-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{5-genes-max-edges.xlsx → unused-files/5-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{51-genes-max-edges.xlsx → unused-files/51-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{52-genes-max-edges.xlsx → unused-files/52-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{55-genes-0-edges.xlsx → unused-files/55-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{55-genes-max-edges.xlsx → unused-files/55-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{65-genes-0-edges.xlsx → unused-files/65-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{7-genes-max-edges.xlsx → unused-files/7-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{70-genes-0-edges.xlsx → unused-files/70-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{9-genes-max-edges.xlsx → unused-files/9-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{90-genes-0-edges.xlsx → unused-files/90-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{regulation-matrix-documented-20140709-AllTF-all-targets.xlsx → unused-files/regulation-matrix-documented-20140709-AllTF-all-targets.xlsx} +0 -0
- package/test-files/node-tests/long-gene-name-no-spaces-first.xlsx +0 -0
- package/test-files/node-tests/long-gene-name-no-spaces-second.xlsx +0 -0
- package/test-files/node-tests/long-gene-name-spaces.xlsx +0 -0
- package/test-files/species-test-data/15-genes_28-edges_db5_Dahlquist-data_input_no-species.xlsx +0 -0
- package/test-files/species-test-data/15-genes_28-edges_db5_Dahlquist-data_input_with-species.xlsx +0 -0
- package/test-files/species-test-data/3-gene_7-edge_elegans.xlsx +0 -0
- package/test-files/species-test-data/3-gene_7-edge_melanogaster.xlsx +0 -0
- package/test-files/species-test-data/3-gene_7-edge_musculus.xlsx +0 -0
- package/test-files/species-test-data/3-gene_7-edge_sapiens.xlsx +0 -0
- package/test-files/species-test-data/kev-fake-data-sapiens-no-exp-data.xlsx +0 -0
- package/test-files/spreadsheet-controller-test-files/sheet-name-capitalized-network-optimized-weights.xlsx +0 -0
- package/test-files/spreadsheet-controller-test-files/sheet-name-capitalized-network.xlsx +0 -0
- package/web-client/app.js +1 -1
- package/web-client/config/config.js +5 -5
- package/web-client/controllers/main.js +5 -1
- package/web-client/public/favicon.ico +0 -0
- package/web-client/public/gene/GRNSight.svg +689 -0
- package/web-client/public/gene/PageDesignREADME.md +1 -0
- package/web-client/public/gene/api.js +442 -0
- package/web-client/public/gene/info.css +181 -0
- package/web-client/public/gene/info.js +334 -0
- package/web-client/public/gene/integrationREADME.md +52 -0
- package/web-client/public/js/constants.js +182 -0
- package/web-client/public/js/getGeneInformationREADME.md +4 -0
- package/web-client/public/js/graph-statistics.js +7 -7
- package/web-client/public/js/graph.js +480 -476
- package/web-client/public/js/grnsight.js +10 -9
- package/web-client/public/js/grnsight.min.js +2335 -0
- package/web-client/public/js/grnstate.js +147 -0
- package/web-client/public/js/iframe-coordination.js +55 -0
- package/web-client/public/js/setup-handlers.js +617 -0
- package/web-client/public/js/setup-load-and-import-handlers.js +180 -0
- package/web-client/public/js/update-app.js +980 -0
- package/web-client/public/js/upload.js +352 -578
- package/web-client/public/js/warnings.js +60 -0
- package/web-client/public/lib/iframeSizer.contentWindow.min.js +10 -0
- package/{documents/SDF/CMSI_402/spring_2018/writtenStatusReport4 → web-client/public/lib/jaspar-front.html} +0 -0
- package/web-client/public/stylesheets/grnsight.styl +176 -26
- package/web-client/public/stylesheets/print.styl +10 -4
- package/web-client/views/{graph.jade → graph.pug} +1 -3
- package/web-client/views/info.pug +215 -0
- package/web-client/views/upload.pug +587 -0
- package/_gh_pages/Gemfile +0 -7
- package/_gh_pages/Gemfile.lock +0 -129
- package/documents/SDF/CMSI_402/spring_2014/Southwick_CMSI402_Spring2014_software-development-plan.md +0 -71
- package/documents/SDF/CMSI_402/spring_2014/Southwick_CMSI402_Spring2014_software-requirements-specification.md +0 -71
- package/documents/SDF/CMSI_402/spring_2014/use-case-diagram-spring-2014.jpg +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_402_Final_Presentation.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_402_Presentation_Final_Poster.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_project-proposal-presentation.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_project-proposal.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_software-development-plan.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_software-requirements-specification.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Design Review Presentation.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/0402report.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/0409report.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/402-gantt.png +0 -0
- package/documents/SDF/CMSI_402/spring_2018/402SRS_GRNSightFeedback01.txt +0 -28
- package/documents/SDF/CMSI_402/spring_2018/402_SPD.md +0 -223
- package/documents/SDF/CMSI_402/spring_2018/ChoeShinCMSI402_Final.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/ProjectProposal.md +0 -22
- package/documents/SDF/CMSI_402/spring_2018/SoftwareRequirementsSpecification.md +0 -88
- package/documents/SDF/CMSI_402/spring_2018/homework/choe_eileen/Choe_Eileen_CMSI 402_HW1.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2018/homework/choe_eileen/Choe_Eileen_CMSI402_HW2.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2018/homework/shin_jen/402hw2.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/homework/shin_jen/Jen - 402Hw1.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/homework/shin_jen/Jen - hw3.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/writtenStatusReport.docx +0 -0
- package/documents/Varshneya_Samdarshi_LMU_Symposium_2016.pptx +0 -0
- package/documents/abstracts/Anguiano_Varshneya_Undergraduate-Research-Symposium_2017_abstract.pdf +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/ACM-Reference-Format.bst +0 -3478
- package/documents/abstracts/SIGGRAPH 2017 Abstract/Figure1_zoom100.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/acmart.cls +0 -2352
- package/documents/abstracts/SIGGRAPH 2017 Abstract/acmart.ins +0 -29
- package/documents/abstracts/SIGGRAPH 2017 Abstract/always-weights.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/auto.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/networkA.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/networkB-normalized.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/networkB.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/never-weights.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/representative-image/screenshot.jpg +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/representative-image/screenshot3x2.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/representative-image/withweights3x2.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/screenshot-auto.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.bib +0 -85
- package/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.pdf +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.tex +0 -235
- package/documents/abstracts/SWE Collegiate Competition 2017.md +0 -9
- package/documents/abstracts/Varshneya_Samdarshi_Southern-California-Systems-Biology_2017_abstract.docx +0 -0
- package/documents/developer_documents/State Diagram.graphml +0 -3525
- package/documents/developer_documents/graphml/State Diagram.graphml +0 -3115
- package/documents/developer_documents/older_versions/GRNsight State Diagram old.png +0 -0
- package/documents/developer_documents/older_versions/GRNsight State Diagram.png +0 -0
- package/documents/developer_documents/testing_script_generator/GRNsightTestingDocument.md +0 -998
- package/documents/developer_documents/testing_script_generator/featureList.json +0 -486
- package/documents/developer_documents/testing_script_generator/testing-script-generator.js +0 -149
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_conference-presentations_2016.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016_Table1.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016_references.rtf +0 -264
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016_text-only.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/21-genes_31-edges_Schade-data_for-screenshots.xlsx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom100.jpg +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom100.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom100.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145.jpg +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145_900pix-wide.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom100.jpg +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom100.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom100.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145.jpg +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145_900pix-wide.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5A.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5B.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5C.eps +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5D.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5E.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5F.eps +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5_compiled.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure3_GRNsight-Architecture.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure4_GRNsight-Screenshot.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure5_compiled.pdf +12 -5383
- package/documents/manuscripts/peerj-computerscience-2016/peerj-reviewing-10823-v0.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_conference-presentations_2016_revised.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_cover-letter-and-response_2016.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_cover-letter_2016.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_cover-letter_2016.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_Table1.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_references_revised.rtf +0 -385
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_text-only_revised.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_text-only_revised_marked.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_response-to-reviewers_2016.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_response-to-reviewers_2016.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/figures/Figure3_GRNsight-Architecture.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/figures/Figure4_GRNsight-Screenshot-auto.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/figures/Figure4_GRNsight-Screenshot.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/peerj-reviewing-10823-v1.pdf +0 -0
- package/documents/posters/Anguiano_402_Presentation_Draft_Poster.pdf +0 -0
- package/documents/posters/Anguiano_402_Presentation_Draft_Poster.pptx +0 -0
- package/documents/posters/Anguiano_Varshneya_LMU-Symposium_2015_poster.pptx +0 -0
- package/documents/posters/Anguiano_Varshneya_SCCUR-Poster_20141122_poster.pptx +0 -0
- package/documents/posters/ChoeShinCMSI402-2.pptx +0 -0
- package/documents/posters/ChoeShinCMSI402.pptx +0 -0
- package/documents/posters/ChoeShinCMSI402Final.pptx +0 -0
- package/documents/posters/Dahlquist-et-al_BOSC_ISMB_2016_poster.pptx +0 -0
- package/documents/posters/Samdarshi et al. LMU Symposium 2017-finalDraft.pptx +0 -0
- package/documents/posters/Samdarshi et al. LMU Symposium 2018-firstDraft.pptx +0 -0
- package/documents/posters/Shin et al. SCCUR 2017 FinalDraft.pptx +0 -0
- package/documents/posters/Southwick_CMSI402_2014_poster.pptx +0 -0
- package/documents/posters/Varshneya_Samdarshi_LMU-Symposium_2016_poster.pptx +0 -0
- package/documents/posters/Varshneya_Samdarshi_Southern-California-Systems-Biology-Conference_2017_poster.pptx +0 -0
- package/documents/posters/~$Samdarshi et al. LMU Symposium 2018-firstDraft.pptx +0 -0
- package/documents/presentations/Anguiano_402_Final_Presentation.pptx +0 -0
- package/documents/presentations/Choe_SCCUR2017.pptx +0 -0
- package/documents/presentations/Choe_SWERapidFire2017_final.pptx +0 -0
- package/documents/presentations/Dahlquist_BOSC_20160709.pptx +0 -0
- package/documents/presentations/Dahlquist_ExperimentalBiology_20160404_talk.pptx +0 -0
- package/documents/presentations/Dahlquist_SoCalSysBio_20150131_talk.pptx +0 -0
- package/documents/presentations/Samdarshi et al. LMU Symposium 2017-draft.pptx +0 -0
- package/documents/presentations/Southwick_Anguiano_LMU-Symposium_20140329_talk.pptx +0 -0
- package/documents/presentations/Southwick_CMSI402_Presentation_20140508_talk.pptx +0 -0
- package/documents/presentations/Varshneya-Anguiano-LMU Symposium-201703.pptx +0 -0
- package/documents/presentations/~$Choe_SWERapidFire2017_final.pptx +0 -0
- package/documents/reports/Varshneya-201701-AnnotatedBibliography.docx +0 -0
- package/documents/reports/Varshneya-201702-Introduction.docx +0 -0
- package/documents/reports/Varshneya-201702-Outline.docx +0 -0
- package/documents/reports/Varshneya-201703-Discussion.docx +0 -0
- package/documents/reports/Varshneya-201703-MMResults.docx +0 -0
- package/documents/reports/Varshneya-201704-Draft-1.docx +0 -0
- package/documents/reports/Varshneya-201704-Final.docx +0 -0
- package/test/graph-library-tests.js +0 -165
- package/test-files/demo-files/21-genes_50-edges_Dahlquist-data_estimation_output.xlsx +0 -0
- package/test-files/demo-files/21-genes_50-edges_Dahlquist-data_input.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/10-genes-max-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/12-genes-max-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/35-genes-max-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/40-genes-0-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/40-genes-max-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/42-genes-max-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/50-genes-max-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/75-genes-150-edges.xlsx +0 -0
- package/web-client/public/js/container.js +0 -121
- package/web-client/public/js/node-coloring.js +0 -306
- package/web-client/public/js/sliders.js +0 -197
- package/web-client/views/upload.jade +0 -458
|
@@ -16,588 +16,642 @@
|
|
|
16
16
|
<div class='wrapper'>
|
|
17
17
|
<div class='pad1'>
|
|
18
18
|
<h1>
|
|
19
|
-
<a href="../index.html">
|
|
19
|
+
<a href="../index.html">All files</a> / <a href="index.html">controllers</a> spreadsheet-controller.js
|
|
20
20
|
</h1>
|
|
21
21
|
<div class='clearfix'>
|
|
22
22
|
<div class='fl pad1y space-right2'>
|
|
23
|
-
<span class="strong">
|
|
23
|
+
<span class="strong">9.74% </span>
|
|
24
24
|
<span class="quiet">Statements</span>
|
|
25
|
-
<span class='fraction'>
|
|
25
|
+
<span class='fraction'>19/195</span>
|
|
26
26
|
</div>
|
|
27
27
|
<div class='fl pad1y space-right2'>
|
|
28
|
-
<span class="strong">
|
|
28
|
+
<span class="strong">1.43% </span>
|
|
29
29
|
<span class="quiet">Branches</span>
|
|
30
|
-
<span class='fraction'>
|
|
30
|
+
<span class='fraction'>1/70</span>
|
|
31
31
|
</div>
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">3.45% </span>
|
|
34
34
|
<span class="quiet">Functions</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>1/29</span>
|
|
36
36
|
</div>
|
|
37
37
|
<div class='fl pad1y space-right2'>
|
|
38
|
-
<span class="strong">
|
|
38
|
+
<span class="strong">9.74% </span>
|
|
39
39
|
<span class="quiet">Lines</span>
|
|
40
|
-
<span class='fraction'>
|
|
40
|
+
<span class='fraction'>19/195</span>
|
|
41
41
|
</div>
|
|
42
42
|
</div>
|
|
43
|
+
<p class="quiet">
|
|
44
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
45
|
+
</p>
|
|
43
46
|
</div>
|
|
44
|
-
<div class='status-line
|
|
47
|
+
<div class='status-line low'></div>
|
|
45
48
|
<pre><table class="coverage">
|
|
46
|
-
<tr><td class="line-count quiet">1
|
|
47
|
-
2
|
|
48
|
-
3
|
|
49
|
-
4
|
|
50
|
-
5
|
|
51
|
-
6
|
|
52
|
-
7
|
|
53
|
-
8
|
|
54
|
-
9
|
|
55
|
-
10
|
|
56
|
-
11
|
|
57
|
-
12
|
|
58
|
-
13
|
|
59
|
-
14
|
|
60
|
-
15
|
|
61
|
-
16
|
|
62
|
-
17
|
|
63
|
-
18
|
|
64
|
-
19
|
|
65
|
-
20
|
|
66
|
-
21
|
|
67
|
-
22
|
|
68
|
-
23
|
|
69
|
-
24
|
|
70
|
-
25
|
|
71
|
-
26
|
|
72
|
-
27
|
|
73
|
-
28
|
|
74
|
-
29
|
|
75
|
-
30
|
|
76
|
-
31
|
|
77
|
-
32
|
|
78
|
-
33
|
|
79
|
-
34
|
|
80
|
-
35
|
|
81
|
-
36
|
|
82
|
-
37
|
|
83
|
-
38
|
|
84
|
-
39
|
|
85
|
-
40
|
|
86
|
-
41
|
|
87
|
-
42
|
|
88
|
-
43
|
|
89
|
-
44
|
|
90
|
-
45
|
|
91
|
-
46
|
|
92
|
-
47
|
|
93
|
-
48
|
|
94
|
-
49
|
|
95
|
-
50
|
|
96
|
-
51
|
|
97
|
-
52
|
|
98
|
-
53
|
|
99
|
-
54
|
|
100
|
-
55
|
|
101
|
-
56
|
|
102
|
-
57
|
|
103
|
-
58
|
|
104
|
-
59
|
|
105
|
-
60
|
|
106
|
-
61
|
|
107
|
-
62
|
|
108
|
-
63
|
|
109
|
-
64
|
|
110
|
-
65
|
|
111
|
-
66
|
|
112
|
-
67
|
|
113
|
-
68
|
|
114
|
-
69
|
|
115
|
-
70
|
|
116
|
-
71
|
|
117
|
-
72
|
|
118
|
-
73
|
|
119
|
-
74
|
|
120
|
-
75
|
|
121
|
-
76
|
|
122
|
-
77
|
|
123
|
-
78
|
|
124
|
-
79
|
|
125
|
-
80
|
|
126
|
-
81
|
|
127
|
-
82
|
|
128
|
-
83
|
|
129
|
-
84
|
|
130
|
-
85
|
|
131
|
-
86
|
|
132
|
-
87
|
|
133
|
-
88
|
|
134
|
-
89
|
|
135
|
-
90
|
|
136
|
-
91
|
|
137
|
-
92
|
|
138
|
-
93
|
|
139
|
-
94
|
|
140
|
-
95
|
|
141
|
-
96
|
|
142
|
-
97
|
|
143
|
-
98
|
|
144
|
-
99
|
|
145
|
-
100
|
|
146
|
-
101
|
|
147
|
-
102
|
|
148
|
-
103
|
|
149
|
-
104
|
|
150
|
-
105
|
|
151
|
-
106
|
|
152
|
-
107
|
|
153
|
-
108
|
|
154
|
-
109
|
|
155
|
-
110
|
|
156
|
-
111
|
|
157
|
-
112
|
|
158
|
-
113
|
|
159
|
-
114
|
|
160
|
-
115
|
|
161
|
-
116
|
|
162
|
-
117
|
|
163
|
-
118
|
|
164
|
-
119
|
|
165
|
-
120
|
|
166
|
-
121
|
|
167
|
-
122
|
|
168
|
-
123
|
|
169
|
-
124
|
|
170
|
-
125
|
|
171
|
-
126
|
|
172
|
-
127
|
|
173
|
-
128
|
|
174
|
-
129
|
|
175
|
-
130
|
|
176
|
-
131
|
|
177
|
-
132
|
|
178
|
-
133
|
|
179
|
-
134
|
|
180
|
-
135
|
|
181
|
-
136
|
|
182
|
-
137
|
|
183
|
-
138
|
|
184
|
-
139
|
|
185
|
-
140
|
|
186
|
-
141
|
|
187
|
-
142
|
|
188
|
-
143
|
|
189
|
-
144
|
|
190
|
-
145
|
|
191
|
-
146
|
|
192
|
-
147
|
|
193
|
-
148
|
|
194
|
-
149
|
|
195
|
-
150
|
|
196
|
-
151
|
|
197
|
-
152
|
|
198
|
-
153
|
|
199
|
-
154
|
|
200
|
-
155
|
|
201
|
-
156
|
|
202
|
-
157
|
|
203
|
-
158
|
|
204
|
-
159
|
|
205
|
-
160
|
|
206
|
-
161
|
|
207
|
-
162
|
|
208
|
-
163
|
|
209
|
-
164
|
|
210
|
-
165
|
|
211
|
-
166
|
|
212
|
-
167
|
|
213
|
-
168
|
|
214
|
-
169
|
|
215
|
-
170
|
|
216
|
-
171
|
|
217
|
-
172
|
|
218
|
-
173
|
|
219
|
-
174
|
|
220
|
-
175
|
|
221
|
-
176
|
|
222
|
-
177
|
|
223
|
-
178
|
|
224
|
-
179
|
|
225
|
-
180
|
|
226
|
-
181
|
|
227
|
-
182
|
|
228
|
-
183
|
|
229
|
-
184
|
|
230
|
-
185
|
|
231
|
-
186
|
|
232
|
-
187
|
|
233
|
-
188
|
|
234
|
-
189
|
|
235
|
-
190
|
|
236
|
-
191
|
|
237
|
-
192
|
|
238
|
-
193
|
|
239
|
-
194
|
|
240
|
-
195
|
|
241
|
-
196
|
|
242
|
-
197
|
|
243
|
-
198
|
|
244
|
-
199
|
|
245
|
-
200
|
|
246
|
-
201
|
|
247
|
-
202
|
|
248
|
-
203
|
|
249
|
-
204
|
|
250
|
-
205
|
|
251
|
-
206
|
|
252
|
-
207
|
|
253
|
-
208
|
|
254
|
-
209
|
|
255
|
-
210
|
|
256
|
-
211
|
|
257
|
-
212
|
|
258
|
-
213
|
|
259
|
-
214
|
|
260
|
-
215
|
|
261
|
-
216
|
|
262
|
-
217
|
|
263
|
-
218
|
|
264
|
-
219
|
|
265
|
-
220
|
|
266
|
-
221
|
|
267
|
-
222
|
|
268
|
-
223
|
|
269
|
-
224
|
|
270
|
-
225
|
|
271
|
-
226
|
|
272
|
-
227
|
|
273
|
-
228
|
|
274
|
-
229
|
|
275
|
-
230
|
|
276
|
-
231
|
|
277
|
-
232
|
|
278
|
-
233
|
|
279
|
-
234
|
|
280
|
-
235
|
|
281
|
-
236
|
|
282
|
-
237
|
|
283
|
-
238
|
|
284
|
-
239
|
|
285
|
-
240
|
|
286
|
-
241
|
|
287
|
-
242
|
|
288
|
-
243
|
|
289
|
-
244
|
|
290
|
-
245
|
|
291
|
-
246
|
|
292
|
-
247
|
|
293
|
-
248
|
|
294
|
-
249
|
|
295
|
-
250
|
|
296
|
-
251
|
|
297
|
-
252
|
|
298
|
-
253
|
|
299
|
-
254
|
|
300
|
-
255
|
|
301
|
-
256
|
|
302
|
-
257
|
|
303
|
-
258
|
|
304
|
-
259
|
|
305
|
-
260
|
|
306
|
-
261
|
|
307
|
-
262
|
|
308
|
-
263
|
|
309
|
-
264
|
|
310
|
-
265
|
|
311
|
-
266
|
|
312
|
-
267
|
|
313
|
-
268
|
|
314
|
-
269
|
|
315
|
-
270
|
|
316
|
-
271
|
|
317
|
-
272
|
|
318
|
-
273
|
|
319
|
-
274
|
|
320
|
-
275
|
|
321
|
-
276
|
|
322
|
-
277
|
|
323
|
-
278
|
|
324
|
-
279
|
|
325
|
-
280
|
|
326
|
-
281
|
|
327
|
-
282
|
|
328
|
-
283
|
|
329
|
-
284
|
|
330
|
-
285
|
|
331
|
-
286
|
|
332
|
-
287
|
|
333
|
-
288
|
|
334
|
-
289
|
|
335
|
-
290
|
|
336
|
-
291
|
|
337
|
-
292
|
|
338
|
-
293
|
|
339
|
-
294
|
|
340
|
-
295
|
|
341
|
-
296
|
|
342
|
-
297
|
|
343
|
-
298
|
|
344
|
-
299
|
|
345
|
-
300
|
|
346
|
-
301
|
|
347
|
-
302
|
|
348
|
-
303
|
|
349
|
-
304
|
|
350
|
-
305
|
|
351
|
-
306
|
|
352
|
-
307
|
|
353
|
-
308
|
|
354
|
-
309
|
|
355
|
-
310
|
|
356
|
-
311
|
|
357
|
-
312
|
|
358
|
-
313
|
|
359
|
-
314
|
|
360
|
-
315
|
|
361
|
-
316
|
|
362
|
-
317
|
|
363
|
-
318
|
|
364
|
-
319
|
|
365
|
-
320
|
|
366
|
-
321
|
|
367
|
-
322
|
|
368
|
-
323
|
|
369
|
-
324
|
|
370
|
-
325
|
|
371
|
-
326
|
|
372
|
-
327
|
|
373
|
-
328
|
|
374
|
-
329
|
|
375
|
-
330
|
|
376
|
-
331
|
|
377
|
-
332
|
|
378
|
-
333
|
|
379
|
-
334
|
|
380
|
-
335
|
|
381
|
-
336
|
|
382
|
-
337
|
|
383
|
-
338
|
|
384
|
-
339
|
|
385
|
-
340
|
|
386
|
-
341
|
|
387
|
-
342
|
|
388
|
-
343
|
|
389
|
-
344
|
|
390
|
-
345
|
|
391
|
-
346
|
|
392
|
-
347
|
|
393
|
-
348
|
|
394
|
-
349
|
|
395
|
-
350
|
|
396
|
-
351
|
|
397
|
-
352
|
|
398
|
-
353
|
|
399
|
-
354
|
|
400
|
-
355
|
|
401
|
-
356
|
|
402
|
-
357
|
|
403
|
-
358
|
|
404
|
-
359
|
|
405
|
-
360
|
|
406
|
-
361
|
|
407
|
-
362
|
|
408
|
-
363
|
|
409
|
-
364
|
|
410
|
-
365
|
|
411
|
-
366
|
|
412
|
-
367
|
|
413
|
-
368
|
|
414
|
-
369
|
|
415
|
-
370
|
|
416
|
-
371
|
|
417
|
-
372
|
|
418
|
-
373
|
|
419
|
-
374
|
|
420
|
-
375
|
|
421
|
-
376
|
|
422
|
-
377
|
|
423
|
-
378
|
|
424
|
-
379
|
|
425
|
-
380
|
|
426
|
-
381
|
|
427
|
-
382
|
|
428
|
-
383
|
|
429
|
-
384
|
|
430
|
-
385
|
|
431
|
-
386
|
|
432
|
-
387
|
|
433
|
-
388
|
|
434
|
-
389
|
|
435
|
-
390
|
|
436
|
-
391
|
|
437
|
-
392
|
|
438
|
-
393
|
|
439
|
-
394
|
|
440
|
-
395
|
|
441
|
-
396
|
|
442
|
-
397
|
|
443
|
-
398
|
|
444
|
-
399
|
|
445
|
-
400
|
|
446
|
-
401
|
|
447
|
-
402
|
|
448
|
-
403
|
|
449
|
-
404
|
|
450
|
-
405
|
|
451
|
-
406
|
|
452
|
-
407
|
|
453
|
-
408
|
|
454
|
-
409
|
|
455
|
-
410
|
|
456
|
-
411
|
|
457
|
-
412
|
|
458
|
-
413
|
|
459
|
-
414
|
|
460
|
-
415
|
|
461
|
-
416
|
|
462
|
-
417
|
|
463
|
-
418
|
|
464
|
-
419
|
|
465
|
-
420
|
|
466
|
-
421
|
|
467
|
-
422
|
|
468
|
-
423
|
|
469
|
-
424
|
|
470
|
-
425
|
|
471
|
-
426
|
|
472
|
-
427
|
|
473
|
-
428
|
|
474
|
-
429
|
|
475
|
-
430
|
|
476
|
-
431
|
|
477
|
-
432
|
|
478
|
-
433
|
|
479
|
-
434
|
|
480
|
-
435
|
|
481
|
-
436
|
|
482
|
-
437
|
|
483
|
-
438
|
|
484
|
-
439
|
|
485
|
-
440
|
|
486
|
-
441
|
|
487
|
-
442
|
|
488
|
-
443
|
|
489
|
-
444
|
|
490
|
-
445
|
|
491
|
-
446
|
|
492
|
-
447
|
|
493
|
-
448
|
|
494
|
-
449
|
|
495
|
-
450
|
|
496
|
-
451
|
|
497
|
-
452
|
|
498
|
-
453
|
|
499
|
-
454
|
|
500
|
-
455
|
|
501
|
-
456
|
|
502
|
-
457
|
|
503
|
-
458
|
|
504
|
-
459
|
|
505
|
-
460
|
|
506
|
-
461
|
|
507
|
-
462
|
|
508
|
-
463
|
|
509
|
-
464
|
|
510
|
-
465
|
|
511
|
-
466
|
|
512
|
-
467
|
|
513
|
-
468
|
|
514
|
-
469
|
|
515
|
-
470
|
|
516
|
-
471
|
|
517
|
-
472
|
|
518
|
-
473
|
|
519
|
-
474
|
|
520
|
-
475
|
|
521
|
-
476
|
|
522
|
-
477
|
|
523
|
-
478
|
|
524
|
-
479
|
|
525
|
-
480
|
|
526
|
-
481
|
|
527
|
-
482
|
|
528
|
-
483
|
|
529
|
-
484
|
|
530
|
-
485
|
|
531
|
-
486
|
|
532
|
-
487
|
|
533
|
-
488
|
|
534
|
-
489
|
|
535
|
-
490
|
|
536
|
-
491
|
|
537
|
-
492
|
|
538
|
-
493
|
|
539
|
-
494
|
|
540
|
-
495
|
|
541
|
-
496
|
|
542
|
-
497
|
|
543
|
-
498
|
|
544
|
-
499
|
|
545
|
-
500
|
|
546
|
-
501
|
|
547
|
-
502
|
|
548
|
-
503
|
|
549
|
-
504
|
|
550
|
-
505
|
|
551
|
-
506
|
|
552
|
-
507
|
|
553
|
-
508
|
|
554
|
-
509
|
|
555
|
-
510
|
|
556
|
-
511
|
|
557
|
-
512
|
|
558
|
-
513
|
|
559
|
-
514
|
|
560
|
-
515
|
|
561
|
-
516
|
|
562
|
-
517
|
|
563
|
-
518
|
|
564
|
-
519
|
|
565
|
-
520
|
|
566
|
-
521
|
|
567
|
-
522
|
|
568
|
-
523
|
|
569
|
-
524
|
|
570
|
-
525
|
|
571
|
-
526
|
|
572
|
-
527
|
|
573
|
-
528
|
|
574
|
-
529
|
|
575
|
-
530
|
|
576
|
-
531
|
|
577
|
-
532
|
|
578
|
-
533
|
|
579
|
-
534
|
|
580
|
-
535
|
|
581
|
-
536
|
|
582
|
-
537
|
|
583
|
-
538
|
|
584
|
-
539
|
|
585
|
-
540
|
|
586
|
-
|
|
587
|
-
<
|
|
49
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
50
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
51
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
52
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
53
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
54
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
55
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
56
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
57
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
58
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
59
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
60
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
61
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
62
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
63
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
64
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
65
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
66
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
67
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
68
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
69
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
70
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
71
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
72
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
73
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
74
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
75
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
76
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
77
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
78
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
79
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
80
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
81
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
82
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
83
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
84
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
85
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
86
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
87
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
88
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
89
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
90
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
91
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
92
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
93
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
94
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
95
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
96
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
97
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
98
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
99
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
100
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
101
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
102
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
103
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
104
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
105
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
106
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
107
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
108
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
109
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
110
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
111
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
112
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
113
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
114
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
115
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
116
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
117
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
118
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
119
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
120
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
121
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
122
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
123
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
124
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
125
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
126
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
127
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
128
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
129
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
130
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
131
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
132
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
133
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
134
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
135
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
136
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
137
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
138
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
139
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
140
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
141
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
142
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
143
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
144
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
145
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
146
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
147
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
148
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
149
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
150
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
151
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
152
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
153
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
154
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
155
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
156
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
157
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
158
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
159
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
160
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
161
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
162
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
163
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
164
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
165
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
166
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
167
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
168
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
169
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
170
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
171
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
172
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
173
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
174
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
175
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
176
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
177
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
178
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
179
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
180
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
181
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
182
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
183
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
184
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
185
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
186
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
187
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
188
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
189
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
190
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
191
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
192
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
193
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
194
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
195
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
196
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
197
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
198
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
199
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
200
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
201
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
202
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
203
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
204
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
205
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
206
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
207
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
208
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
209
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
210
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
211
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
212
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
213
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
214
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
215
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
216
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
217
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
218
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
219
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
220
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
221
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
222
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
223
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
224
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
225
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
226
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
227
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
228
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
229
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
230
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
231
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
232
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
233
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
234
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
235
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
236
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
237
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
238
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
239
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
240
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
241
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
242
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
243
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
244
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
245
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
246
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
247
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
248
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
249
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
250
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
251
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
252
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
253
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
254
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
255
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
256
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
257
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
258
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
259
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
260
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
261
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
262
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
263
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
264
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
265
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
266
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
267
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
268
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
269
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
270
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
271
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
272
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
273
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
274
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
275
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
276
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
277
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
278
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
279
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
280
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
281
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
282
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
283
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
284
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
285
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
286
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
287
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
288
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
289
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
290
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
291
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
292
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
293
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
294
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
295
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
296
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
297
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
298
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
299
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
300
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
301
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
302
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
303
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
304
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
305
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
306
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
307
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
308
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
309
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
310
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
311
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
312
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
313
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
314
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
315
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
316
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
317
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
318
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
319
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
320
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
321
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
322
|
+
<a name='L274'></a><a href='#L274'>274</a>
|
|
323
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
324
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
325
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
326
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
327
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
328
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
329
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
330
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
331
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
332
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
333
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
334
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
335
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
336
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
337
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
338
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
339
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
340
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
341
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
342
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
343
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
344
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
345
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
346
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
347
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
348
|
+
<a name='L300'></a><a href='#L300'>300</a>
|
|
349
|
+
<a name='L301'></a><a href='#L301'>301</a>
|
|
350
|
+
<a name='L302'></a><a href='#L302'>302</a>
|
|
351
|
+
<a name='L303'></a><a href='#L303'>303</a>
|
|
352
|
+
<a name='L304'></a><a href='#L304'>304</a>
|
|
353
|
+
<a name='L305'></a><a href='#L305'>305</a>
|
|
354
|
+
<a name='L306'></a><a href='#L306'>306</a>
|
|
355
|
+
<a name='L307'></a><a href='#L307'>307</a>
|
|
356
|
+
<a name='L308'></a><a href='#L308'>308</a>
|
|
357
|
+
<a name='L309'></a><a href='#L309'>309</a>
|
|
358
|
+
<a name='L310'></a><a href='#L310'>310</a>
|
|
359
|
+
<a name='L311'></a><a href='#L311'>311</a>
|
|
360
|
+
<a name='L312'></a><a href='#L312'>312</a>
|
|
361
|
+
<a name='L313'></a><a href='#L313'>313</a>
|
|
362
|
+
<a name='L314'></a><a href='#L314'>314</a>
|
|
363
|
+
<a name='L315'></a><a href='#L315'>315</a>
|
|
364
|
+
<a name='L316'></a><a href='#L316'>316</a>
|
|
365
|
+
<a name='L317'></a><a href='#L317'>317</a>
|
|
366
|
+
<a name='L318'></a><a href='#L318'>318</a>
|
|
367
|
+
<a name='L319'></a><a href='#L319'>319</a>
|
|
368
|
+
<a name='L320'></a><a href='#L320'>320</a>
|
|
369
|
+
<a name='L321'></a><a href='#L321'>321</a>
|
|
370
|
+
<a name='L322'></a><a href='#L322'>322</a>
|
|
371
|
+
<a name='L323'></a><a href='#L323'>323</a>
|
|
372
|
+
<a name='L324'></a><a href='#L324'>324</a>
|
|
373
|
+
<a name='L325'></a><a href='#L325'>325</a>
|
|
374
|
+
<a name='L326'></a><a href='#L326'>326</a>
|
|
375
|
+
<a name='L327'></a><a href='#L327'>327</a>
|
|
376
|
+
<a name='L328'></a><a href='#L328'>328</a>
|
|
377
|
+
<a name='L329'></a><a href='#L329'>329</a>
|
|
378
|
+
<a name='L330'></a><a href='#L330'>330</a>
|
|
379
|
+
<a name='L331'></a><a href='#L331'>331</a>
|
|
380
|
+
<a name='L332'></a><a href='#L332'>332</a>
|
|
381
|
+
<a name='L333'></a><a href='#L333'>333</a>
|
|
382
|
+
<a name='L334'></a><a href='#L334'>334</a>
|
|
383
|
+
<a name='L335'></a><a href='#L335'>335</a>
|
|
384
|
+
<a name='L336'></a><a href='#L336'>336</a>
|
|
385
|
+
<a name='L337'></a><a href='#L337'>337</a>
|
|
386
|
+
<a name='L338'></a><a href='#L338'>338</a>
|
|
387
|
+
<a name='L339'></a><a href='#L339'>339</a>
|
|
388
|
+
<a name='L340'></a><a href='#L340'>340</a>
|
|
389
|
+
<a name='L341'></a><a href='#L341'>341</a>
|
|
390
|
+
<a name='L342'></a><a href='#L342'>342</a>
|
|
391
|
+
<a name='L343'></a><a href='#L343'>343</a>
|
|
392
|
+
<a name='L344'></a><a href='#L344'>344</a>
|
|
393
|
+
<a name='L345'></a><a href='#L345'>345</a>
|
|
394
|
+
<a name='L346'></a><a href='#L346'>346</a>
|
|
395
|
+
<a name='L347'></a><a href='#L347'>347</a>
|
|
396
|
+
<a name='L348'></a><a href='#L348'>348</a>
|
|
397
|
+
<a name='L349'></a><a href='#L349'>349</a>
|
|
398
|
+
<a name='L350'></a><a href='#L350'>350</a>
|
|
399
|
+
<a name='L351'></a><a href='#L351'>351</a>
|
|
400
|
+
<a name='L352'></a><a href='#L352'>352</a>
|
|
401
|
+
<a name='L353'></a><a href='#L353'>353</a>
|
|
402
|
+
<a name='L354'></a><a href='#L354'>354</a>
|
|
403
|
+
<a name='L355'></a><a href='#L355'>355</a>
|
|
404
|
+
<a name='L356'></a><a href='#L356'>356</a>
|
|
405
|
+
<a name='L357'></a><a href='#L357'>357</a>
|
|
406
|
+
<a name='L358'></a><a href='#L358'>358</a>
|
|
407
|
+
<a name='L359'></a><a href='#L359'>359</a>
|
|
408
|
+
<a name='L360'></a><a href='#L360'>360</a>
|
|
409
|
+
<a name='L361'></a><a href='#L361'>361</a>
|
|
410
|
+
<a name='L362'></a><a href='#L362'>362</a>
|
|
411
|
+
<a name='L363'></a><a href='#L363'>363</a>
|
|
412
|
+
<a name='L364'></a><a href='#L364'>364</a>
|
|
413
|
+
<a name='L365'></a><a href='#L365'>365</a>
|
|
414
|
+
<a name='L366'></a><a href='#L366'>366</a>
|
|
415
|
+
<a name='L367'></a><a href='#L367'>367</a>
|
|
416
|
+
<a name='L368'></a><a href='#L368'>368</a>
|
|
417
|
+
<a name='L369'></a><a href='#L369'>369</a>
|
|
418
|
+
<a name='L370'></a><a href='#L370'>370</a>
|
|
419
|
+
<a name='L371'></a><a href='#L371'>371</a>
|
|
420
|
+
<a name='L372'></a><a href='#L372'>372</a>
|
|
421
|
+
<a name='L373'></a><a href='#L373'>373</a>
|
|
422
|
+
<a name='L374'></a><a href='#L374'>374</a>
|
|
423
|
+
<a name='L375'></a><a href='#L375'>375</a>
|
|
424
|
+
<a name='L376'></a><a href='#L376'>376</a>
|
|
425
|
+
<a name='L377'></a><a href='#L377'>377</a>
|
|
426
|
+
<a name='L378'></a><a href='#L378'>378</a>
|
|
427
|
+
<a name='L379'></a><a href='#L379'>379</a>
|
|
428
|
+
<a name='L380'></a><a href='#L380'>380</a>
|
|
429
|
+
<a name='L381'></a><a href='#L381'>381</a>
|
|
430
|
+
<a name='L382'></a><a href='#L382'>382</a>
|
|
431
|
+
<a name='L383'></a><a href='#L383'>383</a>
|
|
432
|
+
<a name='L384'></a><a href='#L384'>384</a>
|
|
433
|
+
<a name='L385'></a><a href='#L385'>385</a>
|
|
434
|
+
<a name='L386'></a><a href='#L386'>386</a>
|
|
435
|
+
<a name='L387'></a><a href='#L387'>387</a>
|
|
436
|
+
<a name='L388'></a><a href='#L388'>388</a>
|
|
437
|
+
<a name='L389'></a><a href='#L389'>389</a>
|
|
438
|
+
<a name='L390'></a><a href='#L390'>390</a>
|
|
439
|
+
<a name='L391'></a><a href='#L391'>391</a>
|
|
440
|
+
<a name='L392'></a><a href='#L392'>392</a>
|
|
441
|
+
<a name='L393'></a><a href='#L393'>393</a>
|
|
442
|
+
<a name='L394'></a><a href='#L394'>394</a>
|
|
443
|
+
<a name='L395'></a><a href='#L395'>395</a>
|
|
444
|
+
<a name='L396'></a><a href='#L396'>396</a>
|
|
445
|
+
<a name='L397'></a><a href='#L397'>397</a>
|
|
446
|
+
<a name='L398'></a><a href='#L398'>398</a>
|
|
447
|
+
<a name='L399'></a><a href='#L399'>399</a>
|
|
448
|
+
<a name='L400'></a><a href='#L400'>400</a>
|
|
449
|
+
<a name='L401'></a><a href='#L401'>401</a>
|
|
450
|
+
<a name='L402'></a><a href='#L402'>402</a>
|
|
451
|
+
<a name='L403'></a><a href='#L403'>403</a>
|
|
452
|
+
<a name='L404'></a><a href='#L404'>404</a>
|
|
453
|
+
<a name='L405'></a><a href='#L405'>405</a>
|
|
454
|
+
<a name='L406'></a><a href='#L406'>406</a>
|
|
455
|
+
<a name='L407'></a><a href='#L407'>407</a>
|
|
456
|
+
<a name='L408'></a><a href='#L408'>408</a>
|
|
457
|
+
<a name='L409'></a><a href='#L409'>409</a>
|
|
458
|
+
<a name='L410'></a><a href='#L410'>410</a>
|
|
459
|
+
<a name='L411'></a><a href='#L411'>411</a>
|
|
460
|
+
<a name='L412'></a><a href='#L412'>412</a>
|
|
461
|
+
<a name='L413'></a><a href='#L413'>413</a>
|
|
462
|
+
<a name='L414'></a><a href='#L414'>414</a>
|
|
463
|
+
<a name='L415'></a><a href='#L415'>415</a>
|
|
464
|
+
<a name='L416'></a><a href='#L416'>416</a>
|
|
465
|
+
<a name='L417'></a><a href='#L417'>417</a>
|
|
466
|
+
<a name='L418'></a><a href='#L418'>418</a>
|
|
467
|
+
<a name='L419'></a><a href='#L419'>419</a>
|
|
468
|
+
<a name='L420'></a><a href='#L420'>420</a>
|
|
469
|
+
<a name='L421'></a><a href='#L421'>421</a>
|
|
470
|
+
<a name='L422'></a><a href='#L422'>422</a>
|
|
471
|
+
<a name='L423'></a><a href='#L423'>423</a>
|
|
472
|
+
<a name='L424'></a><a href='#L424'>424</a>
|
|
473
|
+
<a name='L425'></a><a href='#L425'>425</a>
|
|
474
|
+
<a name='L426'></a><a href='#L426'>426</a>
|
|
475
|
+
<a name='L427'></a><a href='#L427'>427</a>
|
|
476
|
+
<a name='L428'></a><a href='#L428'>428</a>
|
|
477
|
+
<a name='L429'></a><a href='#L429'>429</a>
|
|
478
|
+
<a name='L430'></a><a href='#L430'>430</a>
|
|
479
|
+
<a name='L431'></a><a href='#L431'>431</a>
|
|
480
|
+
<a name='L432'></a><a href='#L432'>432</a>
|
|
481
|
+
<a name='L433'></a><a href='#L433'>433</a>
|
|
482
|
+
<a name='L434'></a><a href='#L434'>434</a>
|
|
483
|
+
<a name='L435'></a><a href='#L435'>435</a>
|
|
484
|
+
<a name='L436'></a><a href='#L436'>436</a>
|
|
485
|
+
<a name='L437'></a><a href='#L437'>437</a>
|
|
486
|
+
<a name='L438'></a><a href='#L438'>438</a>
|
|
487
|
+
<a name='L439'></a><a href='#L439'>439</a>
|
|
488
|
+
<a name='L440'></a><a href='#L440'>440</a>
|
|
489
|
+
<a name='L441'></a><a href='#L441'>441</a>
|
|
490
|
+
<a name='L442'></a><a href='#L442'>442</a>
|
|
491
|
+
<a name='L443'></a><a href='#L443'>443</a>
|
|
492
|
+
<a name='L444'></a><a href='#L444'>444</a>
|
|
493
|
+
<a name='L445'></a><a href='#L445'>445</a>
|
|
494
|
+
<a name='L446'></a><a href='#L446'>446</a>
|
|
495
|
+
<a name='L447'></a><a href='#L447'>447</a>
|
|
496
|
+
<a name='L448'></a><a href='#L448'>448</a>
|
|
497
|
+
<a name='L449'></a><a href='#L449'>449</a>
|
|
498
|
+
<a name='L450'></a><a href='#L450'>450</a>
|
|
499
|
+
<a name='L451'></a><a href='#L451'>451</a>
|
|
500
|
+
<a name='L452'></a><a href='#L452'>452</a>
|
|
501
|
+
<a name='L453'></a><a href='#L453'>453</a>
|
|
502
|
+
<a name='L454'></a><a href='#L454'>454</a>
|
|
503
|
+
<a name='L455'></a><a href='#L455'>455</a>
|
|
504
|
+
<a name='L456'></a><a href='#L456'>456</a>
|
|
505
|
+
<a name='L457'></a><a href='#L457'>457</a>
|
|
506
|
+
<a name='L458'></a><a href='#L458'>458</a>
|
|
507
|
+
<a name='L459'></a><a href='#L459'>459</a>
|
|
508
|
+
<a name='L460'></a><a href='#L460'>460</a>
|
|
509
|
+
<a name='L461'></a><a href='#L461'>461</a>
|
|
510
|
+
<a name='L462'></a><a href='#L462'>462</a>
|
|
511
|
+
<a name='L463'></a><a href='#L463'>463</a>
|
|
512
|
+
<a name='L464'></a><a href='#L464'>464</a>
|
|
513
|
+
<a name='L465'></a><a href='#L465'>465</a>
|
|
514
|
+
<a name='L466'></a><a href='#L466'>466</a>
|
|
515
|
+
<a name='L467'></a><a href='#L467'>467</a>
|
|
516
|
+
<a name='L468'></a><a href='#L468'>468</a>
|
|
517
|
+
<a name='L469'></a><a href='#L469'>469</a>
|
|
518
|
+
<a name='L470'></a><a href='#L470'>470</a>
|
|
519
|
+
<a name='L471'></a><a href='#L471'>471</a>
|
|
520
|
+
<a name='L472'></a><a href='#L472'>472</a>
|
|
521
|
+
<a name='L473'></a><a href='#L473'>473</a>
|
|
522
|
+
<a name='L474'></a><a href='#L474'>474</a>
|
|
523
|
+
<a name='L475'></a><a href='#L475'>475</a>
|
|
524
|
+
<a name='L476'></a><a href='#L476'>476</a>
|
|
525
|
+
<a name='L477'></a><a href='#L477'>477</a>
|
|
526
|
+
<a name='L478'></a><a href='#L478'>478</a>
|
|
527
|
+
<a name='L479'></a><a href='#L479'>479</a>
|
|
528
|
+
<a name='L480'></a><a href='#L480'>480</a>
|
|
529
|
+
<a name='L481'></a><a href='#L481'>481</a>
|
|
530
|
+
<a name='L482'></a><a href='#L482'>482</a>
|
|
531
|
+
<a name='L483'></a><a href='#L483'>483</a>
|
|
532
|
+
<a name='L484'></a><a href='#L484'>484</a>
|
|
533
|
+
<a name='L485'></a><a href='#L485'>485</a>
|
|
534
|
+
<a name='L486'></a><a href='#L486'>486</a>
|
|
535
|
+
<a name='L487'></a><a href='#L487'>487</a>
|
|
536
|
+
<a name='L488'></a><a href='#L488'>488</a>
|
|
537
|
+
<a name='L489'></a><a href='#L489'>489</a>
|
|
538
|
+
<a name='L490'></a><a href='#L490'>490</a>
|
|
539
|
+
<a name='L491'></a><a href='#L491'>491</a>
|
|
540
|
+
<a name='L492'></a><a href='#L492'>492</a>
|
|
541
|
+
<a name='L493'></a><a href='#L493'>493</a>
|
|
542
|
+
<a name='L494'></a><a href='#L494'>494</a>
|
|
543
|
+
<a name='L495'></a><a href='#L495'>495</a>
|
|
544
|
+
<a name='L496'></a><a href='#L496'>496</a>
|
|
545
|
+
<a name='L497'></a><a href='#L497'>497</a>
|
|
546
|
+
<a name='L498'></a><a href='#L498'>498</a>
|
|
547
|
+
<a name='L499'></a><a href='#L499'>499</a>
|
|
548
|
+
<a name='L500'></a><a href='#L500'>500</a>
|
|
549
|
+
<a name='L501'></a><a href='#L501'>501</a>
|
|
550
|
+
<a name='L502'></a><a href='#L502'>502</a>
|
|
551
|
+
<a name='L503'></a><a href='#L503'>503</a>
|
|
552
|
+
<a name='L504'></a><a href='#L504'>504</a>
|
|
553
|
+
<a name='L505'></a><a href='#L505'>505</a>
|
|
554
|
+
<a name='L506'></a><a href='#L506'>506</a>
|
|
555
|
+
<a name='L507'></a><a href='#L507'>507</a>
|
|
556
|
+
<a name='L508'></a><a href='#L508'>508</a>
|
|
557
|
+
<a name='L509'></a><a href='#L509'>509</a>
|
|
558
|
+
<a name='L510'></a><a href='#L510'>510</a>
|
|
559
|
+
<a name='L511'></a><a href='#L511'>511</a>
|
|
560
|
+
<a name='L512'></a><a href='#L512'>512</a>
|
|
561
|
+
<a name='L513'></a><a href='#L513'>513</a>
|
|
562
|
+
<a name='L514'></a><a href='#L514'>514</a>
|
|
563
|
+
<a name='L515'></a><a href='#L515'>515</a>
|
|
564
|
+
<a name='L516'></a><a href='#L516'>516</a>
|
|
565
|
+
<a name='L517'></a><a href='#L517'>517</a>
|
|
566
|
+
<a name='L518'></a><a href='#L518'>518</a>
|
|
567
|
+
<a name='L519'></a><a href='#L519'>519</a>
|
|
568
|
+
<a name='L520'></a><a href='#L520'>520</a>
|
|
569
|
+
<a name='L521'></a><a href='#L521'>521</a>
|
|
570
|
+
<a name='L522'></a><a href='#L522'>522</a>
|
|
571
|
+
<a name='L523'></a><a href='#L523'>523</a>
|
|
572
|
+
<a name='L524'></a><a href='#L524'>524</a>
|
|
573
|
+
<a name='L525'></a><a href='#L525'>525</a>
|
|
574
|
+
<a name='L526'></a><a href='#L526'>526</a>
|
|
575
|
+
<a name='L527'></a><a href='#L527'>527</a>
|
|
576
|
+
<a name='L528'></a><a href='#L528'>528</a>
|
|
577
|
+
<a name='L529'></a><a href='#L529'>529</a>
|
|
578
|
+
<a name='L530'></a><a href='#L530'>530</a>
|
|
579
|
+
<a name='L531'></a><a href='#L531'>531</a>
|
|
580
|
+
<a name='L532'></a><a href='#L532'>532</a>
|
|
581
|
+
<a name='L533'></a><a href='#L533'>533</a>
|
|
582
|
+
<a name='L534'></a><a href='#L534'>534</a>
|
|
583
|
+
<a name='L535'></a><a href='#L535'>535</a>
|
|
584
|
+
<a name='L536'></a><a href='#L536'>536</a>
|
|
585
|
+
<a name='L537'></a><a href='#L537'>537</a>
|
|
586
|
+
<a name='L538'></a><a href='#L538'>538</a>
|
|
587
|
+
<a name='L539'></a><a href='#L539'>539</a>
|
|
588
|
+
<a name='L540'></a><a href='#L540'>540</a>
|
|
589
|
+
<a name='L541'></a><a href='#L541'>541</a>
|
|
590
|
+
<a name='L542'></a><a href='#L542'>542</a>
|
|
591
|
+
<a name='L543'></a><a href='#L543'>543</a>
|
|
592
|
+
<a name='L544'></a><a href='#L544'>544</a>
|
|
593
|
+
<a name='L545'></a><a href='#L545'>545</a>
|
|
594
|
+
<a name='L546'></a><a href='#L546'>546</a>
|
|
595
|
+
<a name='L547'></a><a href='#L547'>547</a>
|
|
596
|
+
<a name='L548'></a><a href='#L548'>548</a>
|
|
597
|
+
<a name='L549'></a><a href='#L549'>549</a>
|
|
598
|
+
<a name='L550'></a><a href='#L550'>550</a>
|
|
599
|
+
<a name='L551'></a><a href='#L551'>551</a>
|
|
600
|
+
<a name='L552'></a><a href='#L552'>552</a>
|
|
601
|
+
<a name='L553'></a><a href='#L553'>553</a>
|
|
602
|
+
<a name='L554'></a><a href='#L554'>554</a>
|
|
603
|
+
<a name='L555'></a><a href='#L555'>555</a>
|
|
604
|
+
<a name='L556'></a><a href='#L556'>556</a>
|
|
605
|
+
<a name='L557'></a><a href='#L557'>557</a>
|
|
606
|
+
<a name='L558'></a><a href='#L558'>558</a>
|
|
607
|
+
<a name='L559'></a><a href='#L559'>559</a>
|
|
608
|
+
<a name='L560'></a><a href='#L560'>560</a>
|
|
609
|
+
<a name='L561'></a><a href='#L561'>561</a>
|
|
610
|
+
<a name='L562'></a><a href='#L562'>562</a>
|
|
611
|
+
<a name='L563'></a><a href='#L563'>563</a>
|
|
612
|
+
<a name='L564'></a><a href='#L564'>564</a>
|
|
613
|
+
<a name='L565'></a><a href='#L565'>565</a>
|
|
614
|
+
<a name='L566'></a><a href='#L566'>566</a>
|
|
615
|
+
<a name='L567'></a><a href='#L567'>567</a>
|
|
616
|
+
<a name='L568'></a><a href='#L568'>568</a>
|
|
617
|
+
<a name='L569'></a><a href='#L569'>569</a>
|
|
618
|
+
<a name='L570'></a><a href='#L570'>570</a>
|
|
619
|
+
<a name='L571'></a><a href='#L571'>571</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
620
|
+
<span class="cline-any cline-yes">1x</span>
|
|
621
|
+
<span class="cline-any cline-neutral"> </span>
|
|
622
|
+
<span class="cline-any cline-yes">1x</span>
|
|
623
|
+
<span class="cline-any cline-yes">1x</span>
|
|
624
|
+
<span class="cline-any cline-neutral"> </span>
|
|
625
|
+
<span class="cline-any cline-neutral"> </span>
|
|
626
|
+
<span class="cline-any cline-yes">1x</span>
|
|
627
|
+
<span class="cline-any cline-neutral"> </span>
|
|
628
|
+
<span class="cline-any cline-yes">1x</span>
|
|
629
|
+
<span class="cline-any cline-neutral"> </span>
|
|
630
|
+
<span class="cline-any cline-neutral"> </span>
|
|
631
|
+
<span class="cline-any cline-yes">1x</span>
|
|
632
|
+
<span class="cline-any cline-neutral"> </span>
|
|
633
|
+
<span class="cline-any cline-neutral"> </span>
|
|
634
|
+
<span class="cline-any cline-neutral"> </span>
|
|
635
|
+
<span class="cline-any cline-neutral"> </span>
|
|
636
|
+
<span class="cline-any cline-neutral"> </span>
|
|
637
|
+
<span class="cline-any cline-neutral"> </span>
|
|
638
|
+
<span class="cline-any cline-neutral"> </span>
|
|
639
|
+
<span class="cline-any cline-neutral"> </span>
|
|
640
|
+
<span class="cline-any cline-neutral"> </span>
|
|
641
|
+
<span class="cline-any cline-neutral"> </span>
|
|
642
|
+
<span class="cline-any cline-yes">1x</span>
|
|
588
643
|
<span class="cline-any cline-neutral"> </span>
|
|
589
|
-
<span class="cline-any cline-yes">1×</span>
|
|
590
644
|
<span class="cline-any cline-neutral"> </span>
|
|
591
645
|
<span class="cline-any cline-neutral"> </span>
|
|
592
|
-
<span class="cline-any cline-yes">1×</span>
|
|
593
646
|
<span class="cline-any cline-neutral"> </span>
|
|
594
|
-
<span class="cline-any cline-yes">1×</span>
|
|
595
647
|
<span class="cline-any cline-neutral"> </span>
|
|
596
648
|
<span class="cline-any cline-neutral"> </span>
|
|
597
|
-
<span class="cline-any cline-yes">1×</span>
|
|
598
649
|
<span class="cline-any cline-neutral"> </span>
|
|
599
650
|
<span class="cline-any cline-neutral"> </span>
|
|
600
651
|
<span class="cline-any cline-neutral"> </span>
|
|
652
|
+
<span class="cline-any cline-no"> </span>
|
|
653
|
+
<span class="cline-any cline-no"> </span>
|
|
654
|
+
<span class="cline-any cline-no"> </span>
|
|
601
655
|
<span class="cline-any cline-neutral"> </span>
|
|
602
656
|
<span class="cline-any cline-neutral"> </span>
|
|
603
657
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -605,7 +659,9 @@
|
|
|
605
659
|
<span class="cline-any cline-neutral"> </span>
|
|
606
660
|
<span class="cline-any cline-neutral"> </span>
|
|
607
661
|
<span class="cline-any cline-neutral"> </span>
|
|
608
|
-
<span class="cline-any cline-
|
|
662
|
+
<span class="cline-any cline-no"> </span>
|
|
663
|
+
<span class="cline-any cline-no"> </span>
|
|
664
|
+
<span class="cline-any cline-no"> </span>
|
|
609
665
|
<span class="cline-any cline-neutral"> </span>
|
|
610
666
|
<span class="cline-any cline-neutral"> </span>
|
|
611
667
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -615,8 +671,6 @@
|
|
|
615
671
|
<span class="cline-any cline-neutral"> </span>
|
|
616
672
|
<span class="cline-any cline-neutral"> </span>
|
|
617
673
|
<span class="cline-any cline-no"> </span>
|
|
618
|
-
<span class="cline-any cline-no"> </span>
|
|
619
|
-
<span class="cline-any cline-no"> </span>
|
|
620
674
|
<span class="cline-any cline-neutral"> </span>
|
|
621
675
|
<span class="cline-any cline-neutral"> </span>
|
|
622
676
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -634,7 +688,8 @@
|
|
|
634
688
|
<span class="cline-any cline-neutral"> </span>
|
|
635
689
|
<span class="cline-any cline-neutral"> </span>
|
|
636
690
|
<span class="cline-any cline-neutral"> </span>
|
|
637
|
-
<span class="cline-any cline-
|
|
691
|
+
<span class="cline-any cline-no"> </span>
|
|
692
|
+
<span class="cline-any cline-no"> </span>
|
|
638
693
|
<span class="cline-any cline-neutral"> </span>
|
|
639
694
|
<span class="cline-any cline-neutral"> </span>
|
|
640
695
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -642,18 +697,16 @@
|
|
|
642
697
|
<span class="cline-any cline-neutral"> </span>
|
|
643
698
|
<span class="cline-any cline-neutral"> </span>
|
|
644
699
|
<span class="cline-any cline-neutral"> </span>
|
|
645
|
-
<span class="cline-any cline-yes">2×</span>
|
|
646
|
-
<span class="cline-any cline-yes">2×</span>
|
|
647
|
-
<span class="cline-any cline-yes">2×</span>
|
|
648
700
|
<span class="cline-any cline-neutral"> </span>
|
|
649
701
|
<span class="cline-any cline-neutral"> </span>
|
|
702
|
+
<span class="cline-any cline-no"> </span>
|
|
703
|
+
<span class="cline-any cline-no"> </span>
|
|
704
|
+
<span class="cline-any cline-no"> </span>
|
|
650
705
|
<span class="cline-any cline-neutral"> </span>
|
|
651
706
|
<span class="cline-any cline-neutral"> </span>
|
|
652
707
|
<span class="cline-any cline-neutral"> </span>
|
|
653
708
|
<span class="cline-any cline-neutral"> </span>
|
|
654
709
|
<span class="cline-any cline-neutral"> </span>
|
|
655
|
-
<span class="cline-any cline-yes">168×</span>
|
|
656
|
-
<span class="cline-any cline-yes">168×</span>
|
|
657
710
|
<span class="cline-any cline-neutral"> </span>
|
|
658
711
|
<span class="cline-any cline-neutral"> </span>
|
|
659
712
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -663,9 +716,6 @@
|
|
|
663
716
|
<span class="cline-any cline-neutral"> </span>
|
|
664
717
|
<span class="cline-any cline-neutral"> </span>
|
|
665
718
|
<span class="cline-any cline-neutral"> </span>
|
|
666
|
-
<span class="cline-any cline-no"> </span>
|
|
667
|
-
<span class="cline-any cline-no"> </span>
|
|
668
|
-
<span class="cline-any cline-no"> </span>
|
|
669
719
|
<span class="cline-any cline-neutral"> </span>
|
|
670
720
|
<span class="cline-any cline-neutral"> </span>
|
|
671
721
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -689,51 +739,55 @@
|
|
|
689
739
|
<span class="cline-any cline-neutral"> </span>
|
|
690
740
|
<span class="cline-any cline-neutral"> </span>
|
|
691
741
|
<span class="cline-any cline-neutral"> </span>
|
|
742
|
+
<span class="cline-any cline-yes">1x</span>
|
|
692
743
|
<span class="cline-any cline-neutral"> </span>
|
|
744
|
+
<span class="cline-any cline-no"> </span>
|
|
745
|
+
<span class="cline-any cline-no"> </span>
|
|
746
|
+
<span class="cline-any cline-no"> </span>
|
|
693
747
|
<span class="cline-any cline-neutral"> </span>
|
|
694
748
|
<span class="cline-any cline-neutral"> </span>
|
|
695
749
|
<span class="cline-any cline-neutral"> </span>
|
|
696
750
|
<span class="cline-any cline-neutral"> </span>
|
|
697
751
|
<span class="cline-any cline-neutral"> </span>
|
|
698
752
|
<span class="cline-any cline-neutral"> </span>
|
|
753
|
+
<span class="cline-any cline-no"> </span>
|
|
754
|
+
<span class="cline-any cline-no"> </span>
|
|
755
|
+
<span class="cline-any cline-no"> </span>
|
|
756
|
+
<span class="cline-any cline-neutral"> </span>
|
|
699
757
|
<span class="cline-any cline-neutral"> </span>
|
|
700
758
|
<span class="cline-any cline-neutral"> </span>
|
|
701
759
|
<span class="cline-any cline-neutral"> </span>
|
|
702
760
|
<span class="cline-any cline-neutral"> </span>
|
|
703
761
|
<span class="cline-any cline-neutral"> </span>
|
|
762
|
+
<span class="cline-any cline-no"> </span>
|
|
763
|
+
<span class="cline-any cline-no"> </span>
|
|
764
|
+
<span class="cline-any cline-no"> </span>
|
|
704
765
|
<span class="cline-any cline-neutral"> </span>
|
|
705
|
-
<span class="cline-any cline-yes">1×</span>
|
|
706
766
|
<span class="cline-any cline-neutral"> </span>
|
|
707
|
-
<span class="cline-any cline-yes">20×</span>
|
|
708
|
-
<span class="cline-any cline-yes">20×</span>
|
|
709
|
-
<span class="cline-any cline-yes">20×</span>
|
|
710
767
|
<span class="cline-any cline-neutral"> </span>
|
|
711
768
|
<span class="cline-any cline-neutral"> </span>
|
|
712
769
|
<span class="cline-any cline-neutral"> </span>
|
|
713
770
|
<span class="cline-any cline-neutral"> </span>
|
|
771
|
+
<span class="cline-any cline-no"> </span>
|
|
772
|
+
<span class="cline-any cline-no"> </span>
|
|
773
|
+
<span class="cline-any cline-no"> </span>
|
|
714
774
|
<span class="cline-any cline-neutral"> </span>
|
|
715
775
|
<span class="cline-any cline-neutral"> </span>
|
|
716
|
-
<span class="cline-any cline-yes">28×</span>
|
|
717
|
-
<span class="cline-any cline-yes">28×</span>
|
|
718
|
-
<span class="cline-any cline-yes">28×</span>
|
|
719
776
|
<span class="cline-any cline-neutral"> </span>
|
|
720
777
|
<span class="cline-any cline-neutral"> </span>
|
|
721
778
|
<span class="cline-any cline-neutral"> </span>
|
|
722
779
|
<span class="cline-any cline-neutral"> </span>
|
|
723
780
|
<span class="cline-any cline-neutral"> </span>
|
|
781
|
+
<span class="cline-any cline-no"> </span>
|
|
782
|
+
<span class="cline-any cline-no"> </span>
|
|
724
783
|
<span class="cline-any cline-neutral"> </span>
|
|
725
|
-
<span class="cline-any cline-yes">98398×</span>
|
|
726
|
-
<span class="cline-any cline-yes">98398×</span>
|
|
727
|
-
<span class="cline-any cline-yes">98398×</span>
|
|
728
784
|
<span class="cline-any cline-neutral"> </span>
|
|
729
785
|
<span class="cline-any cline-neutral"> </span>
|
|
730
786
|
<span class="cline-any cline-neutral"> </span>
|
|
731
787
|
<span class="cline-any cline-neutral"> </span>
|
|
732
788
|
<span class="cline-any cline-neutral"> </span>
|
|
789
|
+
<span class="cline-any cline-no"> </span>
|
|
733
790
|
<span class="cline-any cline-neutral"> </span>
|
|
734
|
-
<span class="cline-any cline-yes">43×</span>
|
|
735
|
-
<span class="cline-any cline-yes">43×</span>
|
|
736
|
-
<span class="cline-any cline-yes">43×</span>
|
|
737
791
|
<span class="cline-any cline-neutral"> </span>
|
|
738
792
|
<span class="cline-any cline-neutral"> </span>
|
|
739
793
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -741,256 +795,257 @@
|
|
|
741
795
|
<span class="cline-any cline-neutral"> </span>
|
|
742
796
|
<span class="cline-any cline-neutral"> </span>
|
|
743
797
|
<span class="cline-any cline-no"> </span>
|
|
744
|
-
<span class="cline-any cline-no"> </span>
|
|
745
798
|
<span class="cline-any cline-neutral"> </span>
|
|
746
799
|
<span class="cline-any cline-neutral"> </span>
|
|
747
800
|
<span class="cline-any cline-neutral"> </span>
|
|
748
801
|
<span class="cline-any cline-neutral"> </span>
|
|
749
802
|
<span class="cline-any cline-neutral"> </span>
|
|
750
803
|
<span class="cline-any cline-neutral"> </span>
|
|
751
|
-
<span class="cline-any cline-no"> </span>
|
|
752
804
|
<span class="cline-any cline-neutral"> </span>
|
|
753
805
|
<span class="cline-any cline-neutral"> </span>
|
|
754
806
|
<span class="cline-any cline-neutral"> </span>
|
|
807
|
+
<span class="cline-any cline-yes">1x</span>
|
|
808
|
+
<span class="cline-any cline-no"> </span>
|
|
755
809
|
<span class="cline-any cline-neutral"> </span>
|
|
756
810
|
<span class="cline-any cline-neutral"> </span>
|
|
811
|
+
<span class="cline-any cline-yes">1x</span>
|
|
812
|
+
<span class="cline-any cline-no"> </span>
|
|
813
|
+
<span class="cline-any cline-no"> </span>
|
|
814
|
+
<span class="cline-any cline-no"> </span>
|
|
815
|
+
<span class="cline-any cline-no"> </span>
|
|
757
816
|
<span class="cline-any cline-neutral"> </span>
|
|
758
|
-
<span class="cline-any cline-
|
|
817
|
+
<span class="cline-any cline-no"> </span>
|
|
818
|
+
<span class="cline-any cline-no"> </span>
|
|
759
819
|
<span class="cline-any cline-neutral"> </span>
|
|
760
820
|
<span class="cline-any cline-neutral"> </span>
|
|
761
821
|
<span class="cline-any cline-neutral"> </span>
|
|
822
|
+
<span class="cline-any cline-yes">1x</span>
|
|
823
|
+
<span class="cline-any cline-no"> </span>
|
|
824
|
+
<span class="cline-any cline-no"> </span>
|
|
825
|
+
<span class="cline-any cline-no"> </span>
|
|
826
|
+
<span class="cline-any cline-no"> </span>
|
|
762
827
|
<span class="cline-any cline-neutral"> </span>
|
|
828
|
+
<span class="cline-any cline-no"> </span>
|
|
829
|
+
<span class="cline-any cline-no"> </span>
|
|
763
830
|
<span class="cline-any cline-neutral"> </span>
|
|
764
831
|
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-yes">1×</span>
|
|
766
|
-
<span class="cline-any cline-yes">98724×</span>
|
|
767
832
|
<span class="cline-any cline-neutral"> </span>
|
|
833
|
+
<span class="cline-any cline-yes">1x</span>
|
|
768
834
|
<span class="cline-any cline-neutral"> </span>
|
|
769
|
-
<span class="cline-any cline-
|
|
770
|
-
<span class="cline-any cline-
|
|
771
|
-
<span class="cline-any cline-
|
|
772
|
-
<span class="cline-any cline-yes">98552×</span>
|
|
773
|
-
<span class="cline-any cline-yes">428×</span>
|
|
835
|
+
<span class="cline-any cline-no"> </span>
|
|
836
|
+
<span class="cline-any cline-no"> </span>
|
|
837
|
+
<span class="cline-any cline-no"> </span>
|
|
774
838
|
<span class="cline-any cline-neutral"> </span>
|
|
775
|
-
<span class="cline-any cline-yes">98124×</span>
|
|
776
|
-
<span class="cline-any cline-yes">98124×</span>
|
|
777
839
|
<span class="cline-any cline-neutral"> </span>
|
|
778
840
|
<span class="cline-any cline-neutral"> </span>
|
|
841
|
+
<span class="cline-any cline-no"> </span>
|
|
842
|
+
<span class="cline-any cline-no"> </span>
|
|
843
|
+
<span class="cline-any cline-no"> </span>
|
|
779
844
|
<span class="cline-any cline-neutral"> </span>
|
|
780
|
-
<span class="cline-any cline-yes">1×</span>
|
|
781
|
-
<span class="cline-any cline-yes">172×</span>
|
|
782
|
-
<span class="cline-any cline-yes">172×</span>
|
|
783
|
-
<span class="cline-any cline-yes">172×</span>
|
|
784
|
-
<span class="cline-any cline-yes">168×</span>
|
|
785
845
|
<span class="cline-any cline-neutral"> </span>
|
|
786
|
-
<span class="cline-any cline-yes">4×</span>
|
|
787
|
-
<span class="cline-any cline-yes">4×</span>
|
|
788
846
|
<span class="cline-any cline-neutral"> </span>
|
|
789
847
|
<span class="cline-any cline-neutral"> </span>
|
|
848
|
+
<span class="cline-any cline-yes">1x</span>
|
|
790
849
|
<span class="cline-any cline-neutral"> </span>
|
|
791
|
-
<span class="cline-any cline-
|
|
850
|
+
<span class="cline-any cline-no"> </span>
|
|
792
851
|
<span class="cline-any cline-neutral"> </span>
|
|
793
|
-
<span class="cline-any cline-yes">401×</span>
|
|
794
|
-
<span class="cline-any cline-yes">5642×</span>
|
|
795
|
-
<span class="cline-any cline-yes">8×</span>
|
|
796
852
|
<span class="cline-any cline-neutral"> </span>
|
|
797
853
|
<span class="cline-any cline-neutral"> </span>
|
|
798
854
|
<span class="cline-any cline-neutral"> </span>
|
|
799
|
-
<span class="cline-any cline-yes">401×</span>
|
|
800
|
-
<span class="cline-any cline-yes">5641×</span>
|
|
801
|
-
<span class="cline-any cline-yes">8×</span>
|
|
802
855
|
<span class="cline-any cline-neutral"> </span>
|
|
803
856
|
<span class="cline-any cline-neutral"> </span>
|
|
804
857
|
<span class="cline-any cline-neutral"> </span>
|
|
805
858
|
<span class="cline-any cline-neutral"> </span>
|
|
806
|
-
<span class="cline-any cline-yes">1×</span>
|
|
807
|
-
<span class="cline-any cline-yes">409×</span>
|
|
808
|
-
<span class="cline-any cline-yes">409×</span>
|
|
809
859
|
<span class="cline-any cline-neutral"> </span>
|
|
810
860
|
<span class="cline-any cline-neutral"> </span>
|
|
811
861
|
<span class="cline-any cline-neutral"> </span>
|
|
812
862
|
<span class="cline-any cline-neutral"> </span>
|
|
813
863
|
<span class="cline-any cline-neutral"> </span>
|
|
814
864
|
<span class="cline-any cline-neutral"> </span>
|
|
865
|
+
<span class="cline-any cline-no"> </span>
|
|
866
|
+
<span class="cline-any cline-no"> </span>
|
|
867
|
+
<span class="cline-any cline-no"> </span>
|
|
815
868
|
<span class="cline-any cline-neutral"> </span>
|
|
816
869
|
<span class="cline-any cline-neutral"> </span>
|
|
817
|
-
<span class="cline-any cline-
|
|
818
|
-
<span class="cline-any cline-
|
|
819
|
-
<span class="cline-any cline-yes">409×</span>
|
|
820
|
-
<span class="cline-any cline-yes">409×</span>
|
|
821
|
-
<span class="cline-any cline-yes">409×</span>
|
|
822
|
-
<span class="cline-any cline-yes">409×</span>
|
|
823
|
-
<span class="cline-any cline-yes">409×</span>
|
|
824
|
-
<span class="cline-any cline-yes">409×</span>
|
|
825
|
-
<span class="cline-any cline-yes">409×</span>
|
|
870
|
+
<span class="cline-any cline-no"> </span>
|
|
871
|
+
<span class="cline-any cline-no"> </span>
|
|
826
872
|
<span class="cline-any cline-neutral"> </span>
|
|
827
873
|
<span class="cline-any cline-neutral"> </span>
|
|
828
|
-
<span class="cline-any cline-
|
|
829
|
-
<span class="cline-any cline-
|
|
874
|
+
<span class="cline-any cline-no"> </span>
|
|
875
|
+
<span class="cline-any cline-no"> </span>
|
|
830
876
|
<span class="cline-any cline-neutral"> </span>
|
|
831
877
|
<span class="cline-any cline-neutral"> </span>
|
|
832
|
-
<span class="cline-any cline-
|
|
833
|
-
<span class="cline-any cline-
|
|
878
|
+
<span class="cline-any cline-no"> </span>
|
|
879
|
+
<span class="cline-any cline-no"> </span>
|
|
880
|
+
<span class="cline-any cline-no"> </span>
|
|
881
|
+
<span class="cline-any cline-neutral"> </span>
|
|
834
882
|
<span class="cline-any cline-neutral"> </span>
|
|
835
883
|
<span class="cline-any cline-neutral"> </span>
|
|
836
|
-
<span class="cline-any cline-yes">202×</span>
|
|
837
|
-
<span class="cline-any cline-yes">202×</span>
|
|
838
|
-
<span class="cline-any cline-yes">202×</span>
|
|
839
884
|
<span class="cline-any cline-neutral"> </span>
|
|
840
885
|
<span class="cline-any cline-neutral"> </span>
|
|
841
886
|
<span class="cline-any cline-neutral"> </span>
|
|
887
|
+
<span class="cline-any cline-no"> </span>
|
|
888
|
+
<span class="cline-any cline-no"> </span>
|
|
889
|
+
<span class="cline-any cline-no"> </span>
|
|
842
890
|
<span class="cline-any cline-neutral"> </span>
|
|
843
891
|
<span class="cline-any cline-neutral"> </span>
|
|
892
|
+
<span class="cline-any cline-no"> </span>
|
|
893
|
+
<span class="cline-any cline-no"> </span>
|
|
894
|
+
<span class="cline-any cline-no"> </span>
|
|
895
|
+
<span class="cline-any cline-no"> </span>
|
|
844
896
|
<span class="cline-any cline-neutral"> </span>
|
|
845
|
-
<span class="cline-any cline-yes">409×</span>
|
|
846
|
-
<span class="cline-any cline-yes">2×</span>
|
|
847
|
-
<span class="cline-any cline-yes">2×</span>
|
|
848
897
|
<span class="cline-any cline-neutral"> </span>
|
|
849
898
|
<span class="cline-any cline-neutral"> </span>
|
|
850
|
-
<span class="cline-any cline-yes">407×</span>
|
|
851
|
-
<span class="cline-any cline-yes">6663×</span>
|
|
852
|
-
<span class="cline-any cline-yes">168×</span>
|
|
853
|
-
<span class="cline-any cline-yes">4×</span>
|
|
854
899
|
<span class="cline-any cline-neutral"> </span>
|
|
855
900
|
<span class="cline-any cline-neutral"> </span>
|
|
901
|
+
<span class="cline-any cline-no"> </span>
|
|
902
|
+
<span class="cline-any cline-no"> </span>
|
|
856
903
|
<span class="cline-any cline-neutral"> </span>
|
|
904
|
+
<span class="cline-any cline-no"> </span>
|
|
857
905
|
<span class="cline-any cline-neutral"> </span>
|
|
906
|
+
<span class="cline-any cline-no"> </span>
|
|
907
|
+
<span class="cline-any cline-no"> </span>
|
|
858
908
|
<span class="cline-any cline-neutral"> </span>
|
|
859
|
-
<span class="cline-any cline-
|
|
860
|
-
<span class="cline-any cline-
|
|
861
|
-
<span class="cline-any cline-
|
|
909
|
+
<span class="cline-any cline-no"> </span>
|
|
910
|
+
<span class="cline-any cline-no"> </span>
|
|
911
|
+
<span class="cline-any cline-no"> </span>
|
|
912
|
+
<span class="cline-any cline-no"> </span>
|
|
862
913
|
<span class="cline-any cline-neutral"> </span>
|
|
863
|
-
<span class="cline-any cline-yes">6117×</span>
|
|
864
|
-
<span class="cline-any cline-yes">6117×</span>
|
|
865
914
|
<span class="cline-any cline-neutral"> </span>
|
|
866
|
-
<span class="cline-any cline-yes">6117×</span>
|
|
867
|
-
<span class="cline-any cline-yes">20×</span>
|
|
868
|
-
<span class="cline-any cline-yes">6097×</span>
|
|
869
915
|
<span class="cline-any cline-no"> </span>
|
|
916
|
+
<span class="cline-any cline-no"> </span>
|
|
917
|
+
<span class="cline-any cline-no"> </span>
|
|
918
|
+
<span class="cline-any cline-no"> </span>
|
|
919
|
+
<span class="cline-any cline-neutral"> </span>
|
|
870
920
|
<span class="cline-any cline-neutral"> </span>
|
|
871
|
-
<span class="cline-any cline-
|
|
872
|
-
<span class="cline-any cline-
|
|
873
|
-
<span class="cline-any cline-yes">6097×</span>
|
|
874
|
-
<span class="cline-any cline-yes">6097×</span>
|
|
921
|
+
<span class="cline-any cline-no"> </span>
|
|
922
|
+
<span class="cline-any cline-no"> </span>
|
|
875
923
|
<span class="cline-any cline-neutral"> </span>
|
|
924
|
+
<span class="cline-any cline-no"> </span>
|
|
876
925
|
<span class="cline-any cline-neutral"> </span>
|
|
877
926
|
<span class="cline-any cline-no"> </span>
|
|
878
927
|
<span class="cline-any cline-no"> </span>
|
|
928
|
+
<span class="cline-any cline-no"> </span>
|
|
929
|
+
<span class="cline-any cline-no"> </span>
|
|
930
|
+
<span class="cline-any cline-no"> </span>
|
|
931
|
+
<span class="cline-any cline-no"> </span>
|
|
879
932
|
<span class="cline-any cline-neutral"> </span>
|
|
880
|
-
<span class="cline-any cline-yes">225202×</span>
|
|
881
933
|
<span class="cline-any cline-neutral"> </span>
|
|
882
|
-
<span class="cline-any cline-
|
|
883
|
-
<span class="cline-any cline-yes">6088×</span>
|
|
884
|
-
<span class="cline-any cline-yes">6088×</span>
|
|
885
|
-
<span class="cline-any cline-yes">28×</span>
|
|
886
|
-
<span class="cline-any cline-yes">6060×</span>
|
|
934
|
+
<span class="cline-any cline-no"> </span>
|
|
887
935
|
<span class="cline-any cline-no"> </span>
|
|
888
936
|
<span class="cline-any cline-neutral"> </span>
|
|
889
|
-
<span class="cline-any cline-yes">6060×</span>
|
|
890
937
|
<span class="cline-any cline-neutral"> </span>
|
|
891
938
|
<span class="cline-any cline-neutral"> </span>
|
|
892
939
|
<span class="cline-any cline-neutral"> </span>
|
|
940
|
+
<span class="cline-any cline-no"> </span>
|
|
941
|
+
<span class="cline-any cline-no"> </span>
|
|
942
|
+
<span class="cline-any cline-no"> </span>
|
|
943
|
+
<span class="cline-any cline-neutral"> </span>
|
|
893
944
|
<span class="cline-any cline-neutral"> </span>
|
|
894
|
-
<span class="cline-any cline-
|
|
895
|
-
<span class="cline-any cline-
|
|
896
|
-
<span class="cline-any cline-
|
|
897
|
-
<span class="cline-any cline-
|
|
945
|
+
<span class="cline-any cline-neutral"> </span>
|
|
946
|
+
<span class="cline-any cline-no"> </span>
|
|
947
|
+
<span class="cline-any cline-no"> </span>
|
|
948
|
+
<span class="cline-any cline-no"> </span>
|
|
949
|
+
<span class="cline-any cline-no"> </span>
|
|
898
950
|
<span class="cline-any cline-neutral"> </span>
|
|
899
951
|
<span class="cline-any cline-neutral"> </span>
|
|
952
|
+
<span class="cline-any cline-no"> </span>
|
|
953
|
+
<span class="cline-any cline-no"> </span>
|
|
900
954
|
<span class="cline-any cline-neutral"> </span>
|
|
901
955
|
<span class="cline-any cline-no"> </span>
|
|
902
956
|
<span class="cline-any cline-no"> </span>
|
|
957
|
+
<span class="cline-any cline-neutral"> </span>
|
|
903
958
|
<span class="cline-any cline-no"> </span>
|
|
904
959
|
<span class="cline-any cline-no"> </span>
|
|
905
960
|
<span class="cline-any cline-neutral"> </span>
|
|
961
|
+
<span class="cline-any cline-no"> </span>
|
|
906
962
|
<span class="cline-any cline-neutral"> </span>
|
|
907
|
-
<span class="cline-any cline-
|
|
908
|
-
<span class="cline-any cline-
|
|
963
|
+
<span class="cline-any cline-no"> </span>
|
|
964
|
+
<span class="cline-any cline-no"> </span>
|
|
965
|
+
<span class="cline-any cline-no"> </span>
|
|
966
|
+
<span class="cline-any cline-no"> </span>
|
|
967
|
+
<span class="cline-any cline-no"> </span>
|
|
909
968
|
<span class="cline-any cline-neutral"> </span>
|
|
910
|
-
<span class="cline-any cline-
|
|
911
|
-
<span class="cline-any cline-yes">120716×</span>
|
|
912
|
-
<span class="cline-any cline-yes">2×</span>
|
|
913
|
-
<span class="cline-any cline-yes">2×</span>
|
|
969
|
+
<span class="cline-any cline-no"> </span>
|
|
914
970
|
<span class="cline-any cline-neutral"> </span>
|
|
915
|
-
<span class="cline-any cline-yes">120714×</span>
|
|
916
971
|
<span class="cline-any cline-neutral"> </span>
|
|
917
|
-
<span class="cline-any cline-
|
|
918
|
-
<span class="cline-any cline-
|
|
919
|
-
<span class="cline-any cline-yes">11264×</span>
|
|
920
|
-
<span class="cline-any cline-yes">43×</span>
|
|
921
|
-
<span class="cline-any cline-yes">11221×</span>
|
|
972
|
+
<span class="cline-any cline-no"> </span>
|
|
973
|
+
<span class="cline-any cline-no"> </span>
|
|
922
974
|
<span class="cline-any cline-no"> </span>
|
|
923
975
|
<span class="cline-any cline-neutral"> </span>
|
|
924
976
|
<span class="cline-any cline-neutral"> </span>
|
|
925
|
-
<span class="cline-any cline-yes">11221×</span>
|
|
926
|
-
<span class="cline-any cline-yes">11221×</span>
|
|
927
|
-
<span class="cline-any cline-yes">11221×</span>
|
|
928
977
|
<span class="cline-any cline-neutral"> </span>
|
|
929
|
-
<span class="cline-any cline-
|
|
930
|
-
<span class="cline-any cline-
|
|
931
|
-
<span class="cline-any cline-yes">2250×</span>
|
|
932
|
-
<span class="cline-any cline-yes">2250×</span>
|
|
933
|
-
<span class="cline-any cline-yes">2250×</span>
|
|
978
|
+
<span class="cline-any cline-no"> </span>
|
|
979
|
+
<span class="cline-any cline-no"> </span>
|
|
934
980
|
<span class="cline-any cline-neutral"> </span>
|
|
935
|
-
<span class="cline-any cline-
|
|
936
|
-
<span class="cline-any cline-yes">2290×</span>
|
|
937
|
-
<span class="cline-any cline-yes">2290×</span>
|
|
981
|
+
<span class="cline-any cline-no"> </span>
|
|
938
982
|
<span class="cline-any cline-neutral"> </span>
|
|
939
|
-
<span class="cline-any cline-yes">6681×</span>
|
|
940
|
-
<span class="cline-any cline-yes">6681×</span>
|
|
941
|
-
<span class="cline-any cline-yes">6681×</span>
|
|
942
|
-
<span class="cline-any cline-yes">6681×</span>
|
|
943
|
-
<span class="cline-any cline-yes">63×</span>
|
|
944
|
-
<span class="cline-any cline-yes">63×</span>
|
|
945
983
|
<span class="cline-any cline-neutral"> </span>
|
|
946
|
-
<span class="cline-any cline-yes">6681×</span>
|
|
947
984
|
<span class="cline-any cline-neutral"> </span>
|
|
948
|
-
<span class="cline-any cline-
|
|
985
|
+
<span class="cline-any cline-no"> </span>
|
|
986
|
+
<span class="cline-any cline-no"> </span>
|
|
949
987
|
<span class="cline-any cline-neutral"> </span>
|
|
988
|
+
<span class="cline-any cline-no"> </span>
|
|
950
989
|
<span class="cline-any cline-neutral"> </span>
|
|
951
990
|
<span class="cline-any cline-neutral"> </span>
|
|
991
|
+
<span class="cline-any cline-no"> </span>
|
|
992
|
+
<span class="cline-any cline-no"> </span>
|
|
952
993
|
<span class="cline-any cline-neutral"> </span>
|
|
994
|
+
<span class="cline-any cline-no"> </span>
|
|
995
|
+
<span class="cline-any cline-no"> </span>
|
|
996
|
+
<span class="cline-any cline-no"> </span>
|
|
997
|
+
<span class="cline-any cline-no"> </span>
|
|
998
|
+
<span class="cline-any cline-no"> </span>
|
|
999
|
+
<span class="cline-any cline-no"> </span>
|
|
953
1000
|
<span class="cline-any cline-neutral"> </span>
|
|
954
1001
|
<span class="cline-any cline-no"> </span>
|
|
955
1002
|
<span class="cline-any cline-neutral"> </span>
|
|
956
1003
|
<span class="cline-any cline-no"> </span>
|
|
957
1004
|
<span class="cline-any cline-neutral"> </span>
|
|
958
1005
|
<span class="cline-any cline-neutral"> </span>
|
|
959
|
-
<span class="cline-any cline-yes">231317×</span>
|
|
960
1006
|
<span class="cline-any cline-neutral"> </span>
|
|
961
|
-
<span class="cline-any cline-yes">6493×</span>
|
|
962
1007
|
<span class="cline-any cline-neutral"> </span>
|
|
963
1008
|
<span class="cline-any cline-neutral"> </span>
|
|
964
1009
|
<span class="cline-any cline-no"> </span>
|
|
1010
|
+
<span class="cline-any cline-neutral"> </span>
|
|
965
1011
|
<span class="cline-any cline-no"> </span>
|
|
966
1012
|
<span class="cline-any cline-neutral"> </span>
|
|
967
1013
|
<span class="cline-any cline-neutral"> </span>
|
|
1014
|
+
<span class="cline-any cline-no"> </span>
|
|
968
1015
|
<span class="cline-any cline-neutral"> </span>
|
|
1016
|
+
<span class="cline-any cline-no"> </span>
|
|
969
1017
|
<span class="cline-any cline-neutral"> </span>
|
|
970
1018
|
<span class="cline-any cline-neutral"> </span>
|
|
1019
|
+
<span class="cline-any cline-no"> </span>
|
|
1020
|
+
<span class="cline-any cline-no"> </span>
|
|
971
1021
|
<span class="cline-any cline-neutral"> </span>
|
|
972
1022
|
<span class="cline-any cline-neutral"> </span>
|
|
973
1023
|
<span class="cline-any cline-neutral"> </span>
|
|
974
1024
|
<span class="cline-any cline-neutral"> </span>
|
|
975
|
-
<span class="cline-any cline-yes">401×</span>
|
|
976
|
-
<span class="cline-any cline-yes">401×</span>
|
|
977
1025
|
<span class="cline-any cline-neutral"> </span>
|
|
978
1026
|
<span class="cline-any cline-neutral"> </span>
|
|
979
|
-
<span class="cline-any cline-yes">401×</span>
|
|
980
1027
|
<span class="cline-any cline-neutral"> </span>
|
|
981
1028
|
<span class="cline-any cline-neutral"> </span>
|
|
982
1029
|
<span class="cline-any cline-neutral"> </span>
|
|
1030
|
+
<span class="cline-any cline-no"> </span>
|
|
1031
|
+
<span class="cline-any cline-no"> </span>
|
|
1032
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1033
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1034
|
+
<span class="cline-any cline-no"> </span>
|
|
1035
|
+
<span class="cline-any cline-neutral"> </span>
|
|
983
1036
|
<span class="cline-any cline-neutral"> </span>
|
|
984
1037
|
<span class="cline-any cline-neutral"> </span>
|
|
985
1038
|
<span class="cline-any cline-neutral"> </span>
|
|
986
1039
|
<span class="cline-any cline-neutral"> </span>
|
|
987
|
-
<span class="cline-any cline-yes">401×</span>
|
|
988
1040
|
<span class="cline-any cline-neutral"> </span>
|
|
989
1041
|
<span class="cline-any cline-neutral"> </span>
|
|
990
|
-
<span class="cline-any cline-yes">1×</span>
|
|
991
|
-
<span class="cline-any cline-no"> </span>
|
|
992
1042
|
<span class="cline-any cline-no"> </span>
|
|
993
1043
|
<span class="cline-any cline-neutral"> </span>
|
|
1044
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1045
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1046
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
+
<span class="cline-any cline-neutral"> </span>
|
|
994
1049
|
<span class="cline-any cline-no"> </span>
|
|
995
1050
|
<span class="cline-any cline-neutral"> </span>
|
|
996
1051
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1002,6 +1057,10 @@
|
|
|
1002
1057
|
<span class="cline-any cline-no"> </span>
|
|
1003
1058
|
<span class="cline-any cline-no"> </span>
|
|
1004
1059
|
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1061
|
+
<span class="cline-any cline-no"> </span>
|
|
1062
|
+
<span class="cline-any cline-no"> </span>
|
|
1063
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1005
1064
|
<span class="cline-any cline-no"> </span>
|
|
1006
1065
|
<span class="cline-any cline-neutral"> </span>
|
|
1007
1066
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1009,7 +1068,7 @@
|
|
|
1009
1068
|
<span class="cline-any cline-neutral"> </span>
|
|
1010
1069
|
<span class="cline-any cline-neutral"> </span>
|
|
1011
1070
|
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
-
<span class="cline-any cline-yes">
|
|
1071
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1013
1072
|
<span class="cline-any cline-no"> </span>
|
|
1014
1073
|
<span class="cline-any cline-no"> </span>
|
|
1015
1074
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1071,8 +1130,8 @@
|
|
|
1071
1130
|
<span class="cline-any cline-neutral"> </span>
|
|
1072
1131
|
<span class="cline-any cline-neutral"> </span>
|
|
1073
1132
|
<span class="cline-any cline-neutral"> </span>
|
|
1074
|
-
<span class="cline-any cline-yes">
|
|
1075
|
-
<span class="cline-any cline-yes">
|
|
1133
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1134
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1076
1135
|
<span class="cline-any cline-neutral"> </span>
|
|
1077
1136
|
<span class="cline-any cline-neutral"> </span>
|
|
1078
1137
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1095,6 +1154,8 @@
|
|
|
1095
1154
|
<span class="cline-any cline-neutral"> </span>
|
|
1096
1155
|
<span class="cline-any cline-neutral"> </span>
|
|
1097
1156
|
<span class="cline-any cline-neutral"> </span>
|
|
1157
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1158
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1098
1159
|
<span class="cline-any cline-no"> </span>
|
|
1099
1160
|
<span class="cline-any cline-neutral"> </span>
|
|
1100
1161
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1108,6 +1169,7 @@
|
|
|
1108
1169
|
<span class="cline-any cline-no"> </span>
|
|
1109
1170
|
<span class="cline-any cline-neutral"> </span>
|
|
1110
1171
|
<span class="cline-any cline-neutral"> </span>
|
|
1172
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1111
1173
|
<span class="cline-any cline-no"> </span>
|
|
1112
1174
|
<span class="cline-any cline-no"> </span>
|
|
1113
1175
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1118,7 +1180,8 @@
|
|
|
1118
1180
|
<span class="cline-any cline-neutral"> </span>
|
|
1119
1181
|
<span class="cline-any cline-neutral"> </span>
|
|
1120
1182
|
<span class="cline-any cline-neutral"> </span>
|
|
1121
|
-
<span class="cline-any cline-
|
|
1183
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1184
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1122
1185
|
<span class="cline-any cline-neutral"> </span>
|
|
1123
1186
|
<span class="cline-any cline-neutral"> </span>
|
|
1124
1187
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1127,6 +1190,7 @@
|
|
|
1127
1190
|
var xlsx = require("node-xlsx");
|
|
1128
1191
|
// var util = require("util");
|
|
1129
1192
|
var path = require("path");
|
|
1193
|
+
var parseAdditionalSheets = require(__dirname + "/additional-sheet-parser");
|
|
1130
1194
|
// var cytoscape = require("cytoscape"); //NOTE: Commented out for issue #474
|
|
1131
1195
|
|
|
1132
1196
|
var helpers = require(__dirname + "/helpers");
|
|
@@ -1149,13 +1213,14 @@ var errorList = {
|
|
|
1149
1213
|
missingNetworkError: {
|
|
1150
1214
|
errorCode: "MISSING_NETWORK",
|
|
1151
1215
|
possibleCause: "This file does not have a 'network' sheet or a 'network_optimized_weights' sheet.",
|
|
1152
|
-
suggestedFix: "Please select another file, or rename the sheet containing the adjacency matrix accordingly.
|
|
1153
|
-
"<a href='http://dondi.github.io/GRNsight/documentation.html#section1'
|
|
1216
|
+
suggestedFix: "Please select another file, or rename the sheet containing the adjacency matrix accordingly. \
|
|
1217
|
+
Please refer to the " + "<a href='http://dondi.github.io/GRNsight/documentation.html#section1' \
|
|
1218
|
+
target='_blank'>Documentation page</a> for more information."
|
|
1154
1219
|
},
|
|
1155
1220
|
|
|
1156
|
-
corruptGeneError: <span class="fstat-no" title="function not covered" >
|
|
1157
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1158
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1221
|
+
corruptGeneError: <span class="fstat-no" title="function not covered" >fu</span>nction (row, column) {
|
|
1222
|
+
var colLetter = <span class="cstat-no" title="statement not covered" >numbersToLetters[column];</span>
|
|
1223
|
+
var rowNum = <span class="cstat-no" title="statement not covered" >row + 1;</span>
|
|
1159
1224
|
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1160
1225
|
errorCode: "CORRUPT_GENE",
|
|
1161
1226
|
possibleCause: "The gene name in cell " + colLetter + rowNum + " appears to be invalid.",
|
|
@@ -1163,37 +1228,38 @@ var errorList = {
|
|
|
1163
1228
|
};
|
|
1164
1229
|
},
|
|
1165
1230
|
|
|
1166
|
-
missingValueError: <span class="fstat-no" title="function not covered" >
|
|
1167
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1168
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1231
|
+
missingValueError: <span class="fstat-no" title="function not covered" >fu</span>nction (row, column) {
|
|
1232
|
+
var colLetter = <span class="cstat-no" title="statement not covered" >numbersToLetters[column];</span>
|
|
1233
|
+
var rowNum = <span class="cstat-no" title="statement not covered" >row + 1;</span>
|
|
1169
1234
|
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1170
1235
|
errorCode: "MISSING_VALUE",
|
|
1171
|
-
possibleCause: "The value in the cell " + colLetter + rowNum +
|
|
1236
|
+
possibleCause: "The value in the cell " + colLetter + rowNum +
|
|
1237
|
+
" in the adjacency matrix appears to have a missing value.",
|
|
1172
1238
|
suggestedFix: "Please ensure that all cells have a value, then upload the file again."
|
|
1173
1239
|
};
|
|
1174
1240
|
},
|
|
1175
1241
|
|
|
1176
|
-
duplicateGeneError: function(geneType, geneName) {
|
|
1177
|
-
return {
|
|
1242
|
+
duplicateGeneError: <span class="fstat-no" title="function not covered" >fu</span>nction (geneType, geneName) {
|
|
1243
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1178
1244
|
errorCode: "DUPLICATE_GENE",
|
|
1179
1245
|
possibleCause: "There exists a duplicate for " + geneType + " gene " + geneName + ".",
|
|
1180
1246
|
suggestedFix: "Please remove the duplicate gene and submit again."
|
|
1181
1247
|
};
|
|
1182
1248
|
},
|
|
1183
1249
|
|
|
1184
|
-
dataTypeError: function (row, column) {
|
|
1185
|
-
var colLetter = numbersToLetters[column]
|
|
1186
|
-
var rowNum = row + 1
|
|
1187
|
-
return {
|
|
1250
|
+
dataTypeError: <span class="fstat-no" title="function not covered" >fu</span>nction (row, column) {
|
|
1251
|
+
var colLetter = <span class="cstat-no" title="statement not covered" >numbersToLetters[column];</span>
|
|
1252
|
+
var rowNum = <span class="cstat-no" title="statement not covered" >row + 1;</span>
|
|
1253
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1188
1254
|
errorCode: "INVALID_CELL_DATA_TYPE",
|
|
1189
1255
|
possibleCause: "The value in cell " + colLetter + rowNum + " is not a number.",
|
|
1190
1256
|
suggestedFix: "Please ensure all values in the data matrix are numbers and try again."
|
|
1191
1257
|
};
|
|
1192
1258
|
},
|
|
1193
1259
|
|
|
1194
|
-
emptyRowError: function (row) {
|
|
1195
|
-
var rowNum = row + 1
|
|
1196
|
-
return {
|
|
1260
|
+
emptyRowError: <span class="fstat-no" title="function not covered" >fu</span>nction (row) {
|
|
1261
|
+
var rowNum = <span class="cstat-no" title="statement not covered" >row + 1;</span>
|
|
1262
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1197
1263
|
errorCode: "EMPTY_ROW",
|
|
1198
1264
|
possibleCause: "Row " + rowNum + " does not contain any data.",
|
|
1199
1265
|
suggestedFix: "Please ensure all rows contain data and all empty rows are removed. " +
|
|
@@ -1202,9 +1268,9 @@ var errorList = {
|
|
|
1202
1268
|
};
|
|
1203
1269
|
},
|
|
1204
1270
|
|
|
1205
|
-
outsideCellError: <span class="fstat-no" title="function not covered" >
|
|
1206
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1207
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1271
|
+
outsideCellError: <span class="fstat-no" title="function not covered" >fu</span>nction (row, column) {
|
|
1272
|
+
var colLetter = <span class="cstat-no" title="statement not covered" >numbersToLetters[column];</span>
|
|
1273
|
+
var rowNum = <span class="cstat-no" title="statement not covered" >row + 1;</span>
|
|
1208
1274
|
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1209
1275
|
errorCode: "EMPTY_CELL",
|
|
1210
1276
|
possibleCause: "The cell at " + colLetter + rowNum + " contains data that is outside the matrix.",
|
|
@@ -1234,7 +1300,8 @@ var errorList = {
|
|
|
1234
1300
|
unknownError: {
|
|
1235
1301
|
errorCode: "UNKNOWN_ERROR",
|
|
1236
1302
|
possibleCause: "An unexpected error occurred.",
|
|
1237
|
-
suggestedFix: "Please contact the GRNsight team at kdahlquist@lmu.edu,
|
|
1303
|
+
suggestedFix: "Please contact the GRNsight team at kdahlquist@lmu.edu, \
|
|
1304
|
+
and attach the spreadsheet you attempted to upload."
|
|
1238
1305
|
}
|
|
1239
1306
|
|
|
1240
1307
|
};
|
|
@@ -1243,109 +1310,114 @@ var errorList = {
|
|
|
1243
1310
|
// This is the list of warnings.
|
|
1244
1311
|
// The graph will still load if warnings are detected, but these will be reported to the user.
|
|
1245
1312
|
var warningsList = {
|
|
1246
|
-
missingSourceGeneWarning: function (row, column) {
|
|
1247
|
-
var colLetter = numbersToLetters[column]
|
|
1248
|
-
var rowNum = row + 1
|
|
1249
|
-
return {
|
|
1313
|
+
missingSourceGeneWarning: <span class="fstat-no" title="function not covered" >fu</span>nction (row, column) {
|
|
1314
|
+
var colLetter = <span class="cstat-no" title="statement not covered" >numbersToLetters[column];</span>
|
|
1315
|
+
var rowNum = <span class="cstat-no" title="statement not covered" >row + 1;</span>
|
|
1316
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1250
1317
|
warningCode: "MISSING_SOURCE",
|
|
1251
1318
|
errorDescription: "A source gene name is missing in cell " + colLetter + rowNum + "."
|
|
1252
1319
|
};
|
|
1253
1320
|
},
|
|
1254
1321
|
|
|
1255
|
-
missingTargetGeneWarning: function (row, column) {
|
|
1256
|
-
var colLetter = numbersToLetters[column]
|
|
1257
|
-
var rowNum = row + 1
|
|
1258
|
-
return {
|
|
1322
|
+
missingTargetGeneWarning: <span class="fstat-no" title="function not covered" >fu</span>nction (row, column) {
|
|
1323
|
+
var colLetter = <span class="cstat-no" title="statement not covered" >numbersToLetters[column];</span>
|
|
1324
|
+
var rowNum = <span class="cstat-no" title="statement not covered" >row + 1;</span>
|
|
1325
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1259
1326
|
warningCode: "MISSING_TARGET",
|
|
1260
1327
|
errorDescription: "A target gene name is missing in cell " + colLetter + rowNum + "."
|
|
1261
1328
|
};
|
|
1262
1329
|
},
|
|
1263
1330
|
|
|
1264
|
-
invalidMatrixDataWarning: function (row, column) {
|
|
1265
|
-
var colLetter = numbersToLetters[column]
|
|
1266
|
-
var rowNum = row + 1
|
|
1267
|
-
return {
|
|
1331
|
+
invalidMatrixDataWarning: <span class="fstat-no" title="function not covered" >fu</span>nction (row, column) {
|
|
1332
|
+
var colLetter = <span class="cstat-no" title="statement not covered" >numbersToLetters[column];</span>
|
|
1333
|
+
var rowNum = <span class="cstat-no" title="statement not covered" >row + 1;</span>
|
|
1334
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1268
1335
|
warningCode: "INVALID_DATA",
|
|
1269
1336
|
errorDescription: "The value in cell " + colLetter + rowNum + ", is undefined."
|
|
1270
1337
|
};
|
|
1271
1338
|
},
|
|
1272
1339
|
|
|
1273
|
-
randomDataWarning: function (type, row, column) {
|
|
1274
|
-
var colLetter = numbersToLetters[column]
|
|
1275
|
-
var rowNum = row + 1
|
|
1276
|
-
return {
|
|
1340
|
+
randomDataWarning: <span class="fstat-no" title="function not covered" >fu</span>nction (type, row, column) {
|
|
1341
|
+
var colLetter = <span class="cstat-no" title="statement not covered" >numbersToLetters[column];</span>
|
|
1342
|
+
var rowNum = <span class="cstat-no" title="statement not covered" >row + 1;</span>
|
|
1343
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1277
1344
|
warningCode: "RANDOM_DATA",
|
|
1278
|
-
errorDescription: "The value in cell " + colLetter + rowNum +
|
|
1345
|
+
errorDescription: "The value in cell " + colLetter + rowNum +
|
|
1346
|
+
", has a corresponding source and/or target gene that is detected as " + type + "."
|
|
1279
1347
|
};
|
|
1280
1348
|
},
|
|
1281
1349
|
|
|
1282
|
-
emptyRowWarning: <span class="fstat-no" title="function not covered" >
|
|
1283
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1350
|
+
emptyRowWarning: <span class="fstat-no" title="function not covered" >fu</span>nction (row) {
|
|
1351
|
+
var rowNum = <span class="cstat-no" title="statement not covered" >row + 1;</span>
|
|
1284
1352
|
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1285
1353
|
warningCode: "EMPTY_ROW",
|
|
1286
1354
|
errorDescription: "Row " + rowNum + " was found to contain no data."
|
|
1287
1355
|
};
|
|
1288
1356
|
},
|
|
1289
1357
|
|
|
1290
|
-
networkSizeWarning: <span class="fstat-no" title="function not covered" >
|
|
1358
|
+
networkSizeWarning: <span class="fstat-no" title="function not covered" >fu</span>nction (genesLength, edgesLength) {
|
|
1291
1359
|
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1292
1360
|
warningCode: "INVALID_NETWORK_SIZE",
|
|
1293
|
-
errorDescription: "Your network has " + genesLength + " genes, and " + edgesLength +
|
|
1361
|
+
errorDescription: "Your network has " + genesLength + " genes, and " + edgesLength +
|
|
1362
|
+
" edges. Please note that networks are recommended to have less than 50 genes and 100 edges."
|
|
1294
1363
|
};
|
|
1295
1364
|
},
|
|
1296
1365
|
|
|
1297
|
-
incorrectlyNamedSheetWarning: function() {
|
|
1298
|
-
return {
|
|
1366
|
+
incorrectlyNamedSheetWarning: <span class="fstat-no" title="function not covered" >fu</span>nction () {
|
|
1367
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1299
1368
|
warningCode: "INCORRECTLY_NAMED_SHEET",
|
|
1300
|
-
errorDescription: "The uploaded file appears to contain a weighted network, but contains no
|
|
1369
|
+
errorDescription: "The uploaded file appears to contain a weighted network, but contains no \
|
|
1370
|
+
'network_optimized_weights' sheet. A weighted network must be contained in a sheet called \
|
|
1371
|
+
'network_optimized_weights' in order to be drawn as a weighted graph. \
|
|
1372
|
+
Please check if the sheet(s) in the uploaded spreadsheet have been named properly."
|
|
1301
1373
|
};
|
|
1302
1374
|
}
|
|
1303
1375
|
};
|
|
1304
1376
|
|
|
1305
|
-
var addMessageToArray = function (messageArray, message) {
|
|
1306
|
-
messageArray.push(message)
|
|
1377
|
+
var addMessageToArray = <span class="fstat-no" title="function not covered" >fu</span>nction (messageArray, message) {
|
|
1378
|
+
<span class="cstat-no" title="statement not covered" > messageArray.push(message);</span>
|
|
1307
1379
|
};
|
|
1308
1380
|
|
|
1309
|
-
var addWarning = function (network, message) {
|
|
1310
|
-
var warningsCount = network.warnings.length
|
|
1311
|
-
var MAX_WARNINGS = 75
|
|
1312
|
-
if (warningsCount < MAX_WARNINGS) {
|
|
1313
|
-
|
|
1381
|
+
var addWarning = <span class="fstat-no" title="function not covered" >fu</span>nction (network, message) {
|
|
1382
|
+
var warningsCount = <span class="cstat-no" title="statement not covered" >network.warnings.length;</span>
|
|
1383
|
+
var MAX_WARNINGS = <span class="cstat-no" title="statement not covered" >75;</span>
|
|
1384
|
+
<span class="cstat-no" title="statement not covered" > if (warningsCount < MAX_WARNINGS) {</span>
|
|
1385
|
+
<span class="cstat-no" title="statement not covered" > addMessageToArray(network.warnings, message);</span>
|
|
1314
1386
|
} else {
|
|
1315
|
-
|
|
1316
|
-
|
|
1387
|
+
<span class="cstat-no" title="statement not covered" > addMessageToArray(network.errors, errorList.warningsCountError);</span>
|
|
1388
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
1317
1389
|
}
|
|
1318
|
-
}
|
|
1390
|
+
};
|
|
1319
1391
|
|
|
1320
|
-
var addError = function (network, message) {
|
|
1321
|
-
var errorsCount = network.errors.length
|
|
1322
|
-
var MAX_ERRORS = 20
|
|
1323
|
-
if (errorsCount < MAX_ERRORS) {
|
|
1324
|
-
addMessageToArray(network.errors, message)
|
|
1392
|
+
var addError = <span class="fstat-no" title="function not covered" >fu</span>nction (network, message) {
|
|
1393
|
+
var errorsCount = <span class="cstat-no" title="statement not covered" >network.errors.length;</span>
|
|
1394
|
+
var MAX_ERRORS = <span class="cstat-no" title="statement not covered" >20;</span>
|
|
1395
|
+
<span class="cstat-no" title="statement not covered" > if (errorsCount < MAX_ERRORS) {</span>
|
|
1396
|
+
<span class="cstat-no" title="statement not covered" > addMessageToArray(network.errors, message);</span>
|
|
1325
1397
|
} else {
|
|
1326
|
-
addMessageToArray(network.errors, errorList.errorsCountError)
|
|
1327
|
-
return false
|
|
1398
|
+
<span class="cstat-no" title="statement not covered" > addMessageToArray(network.errors, errorList.errorsCountError);</span>
|
|
1399
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
1328
1400
|
}
|
|
1329
1401
|
};
|
|
1330
1402
|
|
|
1331
|
-
var checkDuplicates = function(errorArray, sourceGenes, targetGenes) {
|
|
1403
|
+
var checkDuplicates = <span class="fstat-no" title="function not covered" >fu</span>nction (errorArray, sourceGenes, targetGenes) {
|
|
1332
1404
|
// Run through the source genes and check if the gene in slot i is the same as the one next to it
|
|
1333
|
-
for (var i = 0; i < sourceGenes.length - 1; i++) {
|
|
1334
|
-
if (sourceGenes[i] === sourceGenes[i + 1]) {
|
|
1335
|
-
errorArray.push(errorList.duplicateGeneError("source", sourceGenes[i]))
|
|
1405
|
+
<span class="cstat-no" title="statement not covered" > for (var i = 0; i < sourceGenes.length - 1; i++) {</span>
|
|
1406
|
+
<span class="cstat-no" title="statement not covered" > if (sourceGenes[i] === sourceGenes[i + 1]) {</span>
|
|
1407
|
+
<span class="cstat-no" title="statement not covered" > errorArray.push(errorList.duplicateGeneError("source", sourceGenes[i]));</span>
|
|
1336
1408
|
}
|
|
1337
1409
|
}
|
|
1338
1410
|
// Run through the target genes and check if the gene in slot j is the same as the one next to it
|
|
1339
|
-
for (var j = 0; j < targetGenes.length - 1; j++) {
|
|
1340
|
-
if (targetGenes[j] === targetGenes[j + 1]) {
|
|
1341
|
-
errorArray.push(errorList.duplicateGeneError("target", targetGenes[j]))
|
|
1411
|
+
<span class="cstat-no" title="statement not covered" > for (var j = 0; j < targetGenes.length - 1; j++) {</span>
|
|
1412
|
+
<span class="cstat-no" title="statement not covered" > if (targetGenes[j] === targetGenes[j + 1]) {</span>
|
|
1413
|
+
<span class="cstat-no" title="statement not covered" > errorArray.push(errorList.duplicateGeneError("target", targetGenes[j]));</span>
|
|
1342
1414
|
}
|
|
1343
1415
|
}
|
|
1344
1416
|
};
|
|
1345
1417
|
|
|
1346
|
-
var parseSheet = function(sheet) {
|
|
1418
|
+
var parseSheet = <span class="fstat-no" title="function not covered" >fu</span>nction (sheet) {
|
|
1347
1419
|
var currentSheet;
|
|
1348
|
-
var network = {
|
|
1420
|
+
var network = <span class="cstat-no" title="statement not covered" >{</span>
|
|
1349
1421
|
genes: [],
|
|
1350
1422
|
links: [],
|
|
1351
1423
|
errors: [],
|
|
@@ -1360,81 +1432,84 @@ var parseSheet = function(sheet) {
|
|
|
1360
1432
|
var targetGene;
|
|
1361
1433
|
var sourceGeneNumber;
|
|
1362
1434
|
var targetGeneNumber;
|
|
1363
|
-
var genesList = []
|
|
1364
|
-
var sourceGenes = []
|
|
1365
|
-
var targetGenes = []
|
|
1435
|
+
var genesList = <span class="cstat-no" title="statement not covered" >[];</span> // This will contain all of the genes in upper case for use in error checking
|
|
1436
|
+
var sourceGenes = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1437
|
+
var targetGenes = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1366
1438
|
|
|
1367
1439
|
// Look for the worksheet containing the network data
|
|
1368
|
-
for (var i = 0; i < sheet.length; i++) {
|
|
1369
|
-
if (sheet[i].name === "network") {
|
|
1440
|
+
<span class="cstat-no" title="statement not covered" > for (var i = 0; i < sheet.length; i++) {</span>
|
|
1441
|
+
<span class="cstat-no" title="statement not covered" > if (sheet[i].name === "network") {</span>
|
|
1370
1442
|
// Here we have found a sheet containing simple data. We keep looking
|
|
1371
1443
|
// in case there is also a sheet with optimized weights
|
|
1372
|
-
currentSheet = sheet[i]
|
|
1373
|
-
} else if (sheet[i].name === "network_optimized_weights") {
|
|
1444
|
+
<span class="cstat-no" title="statement not covered" > currentSheet = sheet[i];</span>
|
|
1445
|
+
} else <span class="cstat-no" title="statement not covered" >if (sheet[i].name === "network_optimized_weights") {</span>
|
|
1374
1446
|
// We found a sheet with optimized weights, which is the ideal data source.
|
|
1375
1447
|
// So we stop looking.
|
|
1376
|
-
currentSheet = sheet[i]
|
|
1377
|
-
network.sheetType = "weighted"
|
|
1378
|
-
break
|
|
1448
|
+
<span class="cstat-no" title="statement not covered" > currentSheet = sheet[i];</span>
|
|
1449
|
+
<span class="cstat-no" title="statement not covered" > network.sheetType = "weighted";</span>
|
|
1450
|
+
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1379
1451
|
}
|
|
1380
1452
|
}
|
|
1381
1453
|
|
|
1382
1454
|
// If it didn't find a network/network_optimized_weights sheet
|
|
1383
1455
|
// TODO For expediency, we are wrapping every `return network` statement in `semanticChecker`.
|
|
1384
1456
|
// Some refactoring may be desirable to prevent excessive repetition.
|
|
1385
|
-
if (currentSheet === undefined) {
|
|
1386
|
-
addError(network, errorList.missingNetworkError)
|
|
1387
|
-
return network
|
|
1457
|
+
<span class="cstat-no" title="statement not covered" > if (currentSheet === undefined) {</span>
|
|
1458
|
+
<span class="cstat-no" title="statement not covered" > addError(network, errorList.missingNetworkError);</span>
|
|
1459
|
+
<span class="cstat-no" title="statement not covered" > return network;</span>
|
|
1388
1460
|
}
|
|
1389
1461
|
|
|
1390
|
-
for (var row = 0, column = 1; row < currentSheet.data.length; row++) {
|
|
1391
|
-
if (currentSheet.data[row].length === 0) { // if the current row is empty
|
|
1392
|
-
if (addError(network, errorList.emptyRowError(row)) === false) {
|
|
1393
|
-
return network
|
|
1462
|
+
<span class="cstat-no" title="statement not covered" > for (var row = 0, column = 1; row < currentSheet.data.length; row++) {</span>
|
|
1463
|
+
<span class="cstat-no" title="statement not covered" > if (currentSheet.data[row].length === 0) { // if the current row is empty</span>
|
|
1464
|
+
<span class="cstat-no" title="statement not covered" > if (addError(network, errorList.emptyRowError(row)) === false) {</span>
|
|
1465
|
+
<span class="cstat-no" title="statement not covered" > return network;</span>
|
|
1394
1466
|
}
|
|
1395
1467
|
} else { // if the row has data...
|
|
1396
1468
|
// Genes found when row = 0 are targets. Genes found when column = 0 are source genes.
|
|
1397
1469
|
// We set column = 1 in the for loop so it skips row 0 column 0, since that contains no matrix data.
|
|
1398
1470
|
// Yes, the rows and columns use array numbering. That is, they start at 0, not 1.
|
|
1399
|
-
try { // This prevents the server from crashing if something goes wrong anywhere in here
|
|
1400
|
-
while (column < currentSheet.data[row].length) {
|
|
1401
|
-
|
|
1471
|
+
<span class="cstat-no" title="statement not covered" > try { // This prevents the server from crashing if something goes wrong anywhere in here</span>
|
|
1472
|
+
<span class="cstat-no" title="statement not covered" > while (column < currentSheet.data[row].length) {</span>
|
|
1473
|
+
// While we haven't gone through all of the columns in this row...
|
|
1474
|
+
<span class="cstat-no" title="statement not covered" > if (row === 0) { // If we are at the top of a new column...</span>
|
|
1402
1475
|
// These genes are the source genes
|
|
1403
|
-
try {
|
|
1404
|
-
currentGene = {name: currentSheet.data[0][column]}
|
|
1405
|
-
//
|
|
1406
|
-
if (currentGene.name === undefined) {
|
|
1407
|
-
addWarning(network, warningsList.missingSourceGeneWarning(row, column))
|
|
1408
|
-
} else <span class="
|
|
1476
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1477
|
+
<span class="cstat-no" title="statement not covered" > currentGene = {name: currentSheet.data[0][column]};</span>
|
|
1478
|
+
// ie: Cin5 is the same as cin5
|
|
1479
|
+
<span class="cstat-no" title="statement not covered" > if (currentGene.name === undefined) {</span>
|
|
1480
|
+
<span class="cstat-no" title="statement not covered" > addWarning(network, warningsList.missingSourceGeneWarning(row, column));</span>
|
|
1481
|
+
} else <span class="cstat-no" title="statement not covered" >if (isNaN(currentGene.name) && typeof currentGene.name !== "string") {</span>
|
|
1409
1482
|
<span class="cstat-no" title="statement not covered" > addWarning(network, warningsList.missingSourceGeneWarning(row, column));</span>
|
|
1410
1483
|
} else {
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1484
|
+
// set currentGeneName to a String so toUpperCase doesn't mess up
|
|
1485
|
+
<span class="cstat-no" title="statement not covered" > currentGene.name = currentGene.name.toString();</span>
|
|
1486
|
+
<span class="cstat-no" title="statement not covered" > sourceGenes.push(String(currentGene.name.toUpperCase()));</span>
|
|
1487
|
+
<span class="cstat-no" title="statement not covered" > genesList.push(String(currentGene.name.toUpperCase()));</span>
|
|
1488
|
+
<span class="cstat-no" title="statement not covered" > network.genes.push(currentGene);</span>
|
|
1415
1489
|
}
|
|
1416
1490
|
} catch (err) {
|
|
1417
1491
|
<span class="cstat-no" title="statement not covered" > addError(network, errorList.corruptGeneError(row, column));</span>
|
|
1418
1492
|
<span class="cstat-no" title="statement not covered" > return network;</span>
|
|
1419
1493
|
}
|
|
1420
|
-
} else if (column === 0) { // If we are at the far left of a new row
|
|
1494
|
+
} else <span class="cstat-no" title="statement not covered" >if (column === 0) { // If we are at the far left of a new row...</span>
|
|
1421
1495
|
// These genes are the target genes
|
|
1422
|
-
try {
|
|
1423
|
-
currentGene = {name: currentSheet.data[row][0]}
|
|
1424
|
-
if (currentGene.name === undefined) {
|
|
1425
|
-
addWarning(network, warningsList.missingTargetGeneWarning(row, column))
|
|
1426
|
-
} else <span class="
|
|
1496
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1497
|
+
<span class="cstat-no" title="statement not covered" > currentGene = {name: currentSheet.data[row][0]};</span>
|
|
1498
|
+
<span class="cstat-no" title="statement not covered" > if (currentGene.name === undefined) {</span>
|
|
1499
|
+
<span class="cstat-no" title="statement not covered" > addWarning(network, warningsList.missingTargetGeneWarning(row, column));</span>
|
|
1500
|
+
} else <span class="cstat-no" title="statement not covered" >if (isNaN(currentGene.name) && typeof currentGene.name !== "string") {</span>
|
|
1427
1501
|
<span class="cstat-no" title="statement not covered" > addWarning(network, warningsList.missingTargetGeneWarning(row, column));</span>
|
|
1428
1502
|
} else {
|
|
1429
|
-
|
|
1503
|
+
// set currentGeneName to a String so toUpperCase doesn't mess up
|
|
1504
|
+
<span class="cstat-no" title="statement not covered" > currentGene.name = currentGene.name.toString();</span>
|
|
1505
|
+
<span class="cstat-no" title="statement not covered" > targetGenes.push(String(currentGene.name.toUpperCase()));</span>
|
|
1430
1506
|
// Here we check to see if we've already seen the gene name that we're about to store
|
|
1431
1507
|
// Genes may or may not be present due to asymmetry or unorderedness
|
|
1432
1508
|
// If it's in the genesList, it will return a number > 0, so we won't store it
|
|
1433
1509
|
// If it's not there, it will return -1, so we add it.
|
|
1434
|
-
if (genesList.indexOf(String(currentGene.name.toUpperCase())) === -1) {
|
|
1435
|
-
genesList.push(String(currentGene.name.toUpperCase()))
|
|
1436
|
-
|
|
1437
|
-
network.genes.push(currentGene);
|
|
1510
|
+
<span class="cstat-no" title="statement not covered" > if (genesList.indexOf(String(currentGene.name.toUpperCase())) === -1) {</span>
|
|
1511
|
+
<span class="cstat-no" title="statement not covered" > genesList.push(String(currentGene.name.toUpperCase()));</span>
|
|
1512
|
+
<span class="cstat-no" title="statement not covered" > network.genes.push(currentGene);</span>
|
|
1438
1513
|
}
|
|
1439
1514
|
}
|
|
1440
1515
|
} catch (err) {
|
|
@@ -1444,48 +1519,58 @@ var parseSheet = function(sheet) {
|
|
|
1444
1519
|
<span class="cstat-no" title="statement not covered" > return network;</span>
|
|
1445
1520
|
}
|
|
1446
1521
|
} else { // If we're within the matrix and lookin' at the data...
|
|
1447
|
-
try {
|
|
1448
|
-
if (currentSheet.data[row][column] === undefined) {
|
|
1522
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1523
|
+
<span class="cstat-no" title="statement not covered" > if (currentSheet.data[row][column] === undefined) {</span>
|
|
1449
1524
|
// SHOULD BE: addError(network, errorList.missingValueError(row, column));
|
|
1450
|
-
addWarning(network, warningsList.invalidMatrixDataWarning(row, column))
|
|
1451
|
-
} else if (isNaN(+("" + currentSheet.data[row][column]))
|
|
1452
|
-
|
|
1453
|
-
|
|
1525
|
+
<span class="cstat-no" title="statement not covered" > addWarning(network, warningsList.invalidMatrixDataWarning(row, column));</span>
|
|
1526
|
+
} else <span class="cstat-no" title="statement not covered" >if (isNaN(+("" + currentSheet.data[row][column])) ||</span>
|
|
1527
|
+
typeof currentSheet.data[row][column] !== "number") {
|
|
1528
|
+
<span class="cstat-no" title="statement not covered" > addError(network, errorList.dataTypeError(row, column));</span>
|
|
1529
|
+
<span class="cstat-no" title="statement not covered" > return network;</span>
|
|
1454
1530
|
} else {
|
|
1455
|
-
if (currentSheet.data[row][column] !== 0) { // We only care about non-zero values
|
|
1531
|
+
<span class="cstat-no" title="statement not covered" > if (currentSheet.data[row][column] !== 0) { // We only care about non-zero values</span>
|
|
1456
1532
|
// Grab the source and target genes' names
|
|
1457
|
-
sourceGene = currentSheet.data[0][column]
|
|
1458
|
-
targetGene = currentSheet.data[row][0]
|
|
1459
|
-
if (sourceGene === undefined || targetGene === undefined) {
|
|
1460
|
-
addWarning(network, warningsList.randomDataWarning("undefined", row, column))
|
|
1461
|
-
} else <span class="
|
|
1533
|
+
<span class="cstat-no" title="statement not covered" > sourceGene = currentSheet.data[0][column];</span>
|
|
1534
|
+
<span class="cstat-no" title="statement not covered" > targetGene = currentSheet.data[row][0];</span>
|
|
1535
|
+
<span class="cstat-no" title="statement not covered" > if (sourceGene === undefined || targetGene === undefined) {</span>
|
|
1536
|
+
<span class="cstat-no" title="statement not covered" > addWarning(network, warningsList.randomDataWarning("undefined", row, column));</span>
|
|
1537
|
+
} else <span class="cstat-no" title="statement not covered" >if ((isNaN(sourceGene) && typeof sourceGene !== "string") ||</span>
|
|
1538
|
+
(isNaN(targetGene) && typeof targetGene !== "string")) {
|
|
1462
1539
|
<span class="cstat-no" title="statement not covered" > addWarning(network, warningsList.randomDataWarning("NaN", row, column));</span>
|
|
1463
1540
|
} else {
|
|
1464
1541
|
// Grab the source and target genes' numbers
|
|
1465
|
-
sourceGeneNumber = genesList.indexOf(sourceGene.toUpperCase())
|
|
1466
|
-
targetGeneNumber = genesList.indexOf(targetGene.toUpperCase())
|
|
1467
|
-
currentLink = {source: sourceGeneNumber, target: targetGeneNumber
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1542
|
+
<span class="cstat-no" title="statement not covered" > sourceGeneNumber = genesList.indexOf(sourceGene.toString().toUpperCase());</span>
|
|
1543
|
+
<span class="cstat-no" title="statement not covered" > targetGeneNumber = genesList.indexOf(targetGene.toString().toUpperCase());</span>
|
|
1544
|
+
<span class="cstat-no" title="statement not covered" > currentLink = {source: sourceGeneNumber, target: targetGeneNumber,</span>
|
|
1545
|
+
value: currentSheet.data[row][column]};
|
|
1546
|
+
// Here we set the properties of the current link
|
|
1547
|
+
// before we push them to the network
|
|
1548
|
+
<span class="cstat-no" title="statement not covered" > if (network.sheetType === "weighted") {</span>
|
|
1549
|
+
<span class="cstat-no" title="statement not covered" > if (currentLink.value > 0) {</span>
|
|
1550
|
+
// If it's a positive number, mark it as an activator
|
|
1551
|
+
<span class="cstat-no" title="statement not covered" > currentLink.type = "arrowhead";</span>
|
|
1552
|
+
// GRNsight v1 magenta edge color
|
|
1553
|
+
// currentLink.stroke = "MediumVioletRed";
|
|
1554
|
+
// Node coloring-consistent red edge color
|
|
1555
|
+
<span class="cstat-no" title="statement not covered" > currentLink.stroke = "rgb(195, 61, 61)";</span>
|
|
1556
|
+
<span class="cstat-no" title="statement not covered" > network.positiveWeights.push(currentLink.value);</span>
|
|
1474
1557
|
} else { // if it's a negative number, mark it as a repressor
|
|
1475
|
-
currentLink.type = "repressor"
|
|
1476
|
-
currentLink.stroke = "DarkTurquoise";
|
|
1477
|
-
|
|
1558
|
+
<span class="cstat-no" title="statement not covered" > currentLink.type = "repressor";</span>
|
|
1559
|
+
// currentLink.stroke = "DarkTurquoise"; // GRNsight v1 cyan edge color
|
|
1560
|
+
// Node coloring-consistent blue edge color
|
|
1561
|
+
<span class="cstat-no" title="statement not covered" > currentLink.stroke = "rgb(51, 124, 183)";</span>
|
|
1562
|
+
<span class="cstat-no" title="statement not covered" > network.negativeWeights.push(currentLink.value);</span>
|
|
1478
1563
|
}
|
|
1479
|
-
|
|
1480
|
-
currentLink.type = "arrowhead"
|
|
1481
|
-
currentLink.stroke = "black"
|
|
1482
|
-
if (currentLink.value !== 1) {
|
|
1483
|
-
addWarning(network, warningsList.incorrectlyNamedSheetWarning())
|
|
1484
|
-
currentLink.value = 1
|
|
1564
|
+
} else <span class="cstat-no" title="statement not covered" >if (network.sheetType === "unweighted") {</span>
|
|
1565
|
+
<span class="cstat-no" title="statement not covered" > currentLink.type = "arrowhead";</span>
|
|
1566
|
+
<span class="cstat-no" title="statement not covered" > currentLink.stroke = "black";</span>
|
|
1567
|
+
<span class="cstat-no" title="statement not covered" > if (currentLink.value !== 1) {</span>
|
|
1568
|
+
<span class="cstat-no" title="statement not covered" > addWarning(network, warningsList.incorrectlyNamedSheetWarning());</span>
|
|
1569
|
+
<span class="cstat-no" title="statement not covered" > currentLink.value = 1;</span>
|
|
1485
1570
|
}
|
|
1486
|
-
network.positiveWeights.push(currentLink.value)
|
|
1571
|
+
<span class="cstat-no" title="statement not covered" > network.positiveWeights.push(currentLink.value);</span>
|
|
1487
1572
|
}
|
|
1488
|
-
network.links.push(currentLink)
|
|
1573
|
+
<span class="cstat-no" title="statement not covered" > network.links.push(currentLink);</span>
|
|
1489
1574
|
}
|
|
1490
1575
|
}
|
|
1491
1576
|
}
|
|
@@ -1496,9 +1581,9 @@ var parseSheet = function(sheet) {
|
|
|
1496
1581
|
<span class="cstat-no" title="statement not covered" > return network;</span>
|
|
1497
1582
|
}
|
|
1498
1583
|
}
|
|
1499
|
-
column++;
|
|
1584
|
+
<span class="cstat-no" title="statement not covered" > column++; </span>// Let's move on to the next column!
|
|
1500
1585
|
} // Once we finish with the current row...
|
|
1501
|
-
column = 0;
|
|
1586
|
+
<span class="cstat-no" title="statement not covered" > column = 0; </span>// let's go back to column 0 on the next row!
|
|
1502
1587
|
} catch (err) {
|
|
1503
1588
|
// We only get here if something goes drastically wrong. We don't want to get here.
|
|
1504
1589
|
<span class="cstat-no" title="statement not covered" > addError(network, errorList.unknownError);</span>
|
|
@@ -1512,11 +1597,11 @@ var parseSheet = function(sheet) {
|
|
|
1512
1597
|
|
|
1513
1598
|
// We sort them here because gene order is not relevant before this point
|
|
1514
1599
|
// Sorting them now means duplicates will be right next to each other
|
|
1515
|
-
sourceGenes.sort()
|
|
1516
|
-
targetGenes.sort()
|
|
1600
|
+
<span class="cstat-no" title="statement not covered" > sourceGenes.sort();</span>
|
|
1601
|
+
<span class="cstat-no" title="statement not covered" > targetGenes.sort();</span>
|
|
1517
1602
|
|
|
1518
1603
|
// syntactic duplicate checker for both columns and rows
|
|
1519
|
-
checkDuplicates(network.errors, sourceGenes, targetGenes)
|
|
1604
|
+
<span class="cstat-no" title="statement not covered" > checkDuplicates(network.errors, sourceGenes, targetGenes);</span>
|
|
1520
1605
|
|
|
1521
1606
|
// NOTE: Temporarily commented out pending resolution of #474, and other related issues
|
|
1522
1607
|
// try {
|
|
@@ -1524,12 +1609,12 @@ var parseSheet = function(sheet) {
|
|
|
1524
1609
|
// } catch (err) {
|
|
1525
1610
|
// console.log ("Graph statistics report failed to be complete.");
|
|
1526
1611
|
// }
|
|
1527
|
-
return semanticChecker(network)
|
|
1612
|
+
<span class="cstat-no" title="statement not covered" > return semanticChecker(network);</span>
|
|
1528
1613
|
};
|
|
1529
1614
|
|
|
1530
|
-
var processGRNmap = <span class="fstat-no" title="function not covered" >
|
|
1531
|
-
|
|
1532
|
-
|
|
1615
|
+
var processGRNmap = <span class="fstat-no" title="function not covered" >fu</span>nction (path, res, app) {
|
|
1616
|
+
var sheet;
|
|
1617
|
+
var network;
|
|
1533
1618
|
|
|
1534
1619
|
<span class="cstat-no" title="statement not covered" > helpers.attachCorsHeader(res, app);</span>
|
|
1535
1620
|
|
|
@@ -1541,17 +1626,21 @@ var processGRNmap = <span class="fstat-no" title="function not covered" >functio
|
|
|
1541
1626
|
|
|
1542
1627
|
<span class="cstat-no" title="statement not covered" > helpers.attachFileHeaders(res, path);</span>
|
|
1543
1628
|
<span class="cstat-no" title="statement not covered" > network = parseSheet(sheet);</span>
|
|
1629
|
+
|
|
1630
|
+
// Parse expression and 2-column data, then add to network object
|
|
1631
|
+
var additionalData = <span class="cstat-no" title="statement not covered" >parseAdditionalSheets(sheet);</span>
|
|
1632
|
+
<span class="cstat-no" title="statement not covered" > Object.assign(network, additionalData);</span>
|
|
1544
1633
|
|
|
1545
1634
|
<span class="cstat-no" title="statement not covered" > return (network.errors.length === 0) ?</span>
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1635
|
+
// If all looks well, return the network with an all clear
|
|
1636
|
+
res.json(network) :
|
|
1637
|
+
// If all does not look well, return the network with an error 400
|
|
1638
|
+
res.status(400).json(network);
|
|
1550
1639
|
};
|
|
1551
1640
|
|
|
1552
|
-
var grnSightToCytoscape = <span class="fstat-no" title="function not covered" >
|
|
1553
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1554
|
-
<span class="cstat-no" title="statement not covered" > network.genes.forEach(<span class="fstat-no" title="function not covered" >
|
|
1641
|
+
var grnSightToCytoscape = <span class="fstat-no" title="function not covered" >fu</span>nction (network) {
|
|
1642
|
+
var result = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1643
|
+
<span class="cstat-no" title="statement not covered" > network.genes.forEach(<span class="fstat-no" title="function not covered" >fu</span>nction (gene) {</span>
|
|
1555
1644
|
<span class="cstat-no" title="statement not covered" > result.push({</span>
|
|
1556
1645
|
data: {
|
|
1557
1646
|
id: gene.name
|
|
@@ -1559,9 +1648,9 @@ var grnSightToCytoscape = <span class="fstat-no" title="function not covered" >f
|
|
|
1559
1648
|
});
|
|
1560
1649
|
});
|
|
1561
1650
|
|
|
1562
|
-
<span class="cstat-no" title="statement not covered" > network.links.forEach(<span class="fstat-no" title="function not covered" >
|
|
1563
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1564
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1651
|
+
<span class="cstat-no" title="statement not covered" > network.links.forEach(<span class="fstat-no" title="function not covered" >fu</span>nction (link) {</span>
|
|
1652
|
+
var sourceGene = <span class="cstat-no" title="statement not covered" >network.genes[link.source];</span>
|
|
1653
|
+
var targetGene = <span class="cstat-no" title="statement not covered" >network.genes[link.target];</span>
|
|
1565
1654
|
<span class="cstat-no" title="statement not covered" > result.push({</span>
|
|
1566
1655
|
data: {
|
|
1567
1656
|
id: sourceGene.name + targetGene.name,
|
|
@@ -1615,24 +1704,26 @@ module.exports = function (app) {
|
|
|
1615
1704
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (app) {
|
|
1616
1705
|
|
|
1617
1706
|
// parse the incoming form data, then parse the spreadsheet. Finally, send back json.
|
|
1618
|
-
<span class="cstat-no" title="statement not covered" > app.post("/upload", <span class="fstat-no" title="function not covered" >
|
|
1707
|
+
<span class="cstat-no" title="statement not covered" > app.post("/upload", <span class="fstat-no" title="function not covered" >fu</span>nction (req, res) {</span>
|
|
1619
1708
|
// TODO: Add file validation
|
|
1620
|
-
<span class="cstat-no" title="statement not covered" > (new multiparty.Form()).parse(req, <span class="fstat-no" title="function not covered" >
|
|
1709
|
+
<span class="cstat-no" title="statement not covered" > (new multiparty.Form()).parse(req, <span class="fstat-no" title="function not covered" >fu</span>nction (err, fields, files) {</span>
|
|
1621
1710
|
<span class="cstat-no" title="statement not covered" > if (err) {</span>
|
|
1622
1711
|
<span class="cstat-no" title="statement not covered" > return res.json(400, "There was a problem uploading your file. Please try again.");</span>
|
|
1623
1712
|
}
|
|
1624
|
-
|
|
1713
|
+
var input;
|
|
1625
1714
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1626
|
-
<span class="cstat-no" title="statement not covered" >
|
|
1715
|
+
<span class="cstat-no" title="statement not covered" > input = files.file[0].path;</span>
|
|
1627
1716
|
} catch (err) {
|
|
1628
1717
|
<span class="cstat-no" title="statement not covered" > return res.json(400, "No upload file selected.");</span>
|
|
1629
1718
|
}
|
|
1630
1719
|
|
|
1631
1720
|
<span class="cstat-no" title="statement not covered" > if (path.extname(input) !== ".xlsx") {</span>
|
|
1632
|
-
<span class="cstat-no" title="statement not covered" > return res.json(400, "This file cannot be loaded because:<br><br> The file is
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1721
|
+
<span class="cstat-no" title="statement not covered" > return res.json(400, "This file cannot be loaded because:<br><br> The file is \</span>
|
|
1722
|
+
not in a format GRNsight can read." + "<br>Please select an Excel Workbook \
|
|
1723
|
+
(.xlsx) file. Note that Excel 97-2003 Workbook (.xls) files are not " +
|
|
1724
|
+
" able to be read by GRNsight. <br><br>SIF and GraphML files can be loaded \
|
|
1725
|
+
using the importer under File > Import." + " Additional information about file \
|
|
1726
|
+
types that GRNsight supports is in the Documentation.");
|
|
1636
1727
|
}
|
|
1637
1728
|
|
|
1638
1729
|
<span class="cstat-no" title="statement not covered" > return processGRNmap(input, res, app);</span>
|
|
@@ -1640,20 +1731,22 @@ module.exports = function (app) {
|
|
|
1640
1731
|
});
|
|
1641
1732
|
|
|
1642
1733
|
// Load the demos
|
|
1643
|
-
<span class="cstat-no" title="statement not covered" > app.get("/demo/unweighted", <span class="fstat-no" title="function not covered" >
|
|
1644
|
-
<span class="cstat-no" title="statement not covered" > return processGRNmap("test-files/demo-files/
|
|
1734
|
+
<span class="cstat-no" title="statement not covered" > app.get("/demo/unweighted", <span class="fstat-no" title="function not covered" >fu</span>nction (req, res) {</span>
|
|
1735
|
+
<span class="cstat-no" title="statement not covered" > return processGRNmap("test-files/demo-files/15-genes_28-edges_db5_Dahlquist-data_input.xlsx", res, app);</span>
|
|
1645
1736
|
});
|
|
1646
1737
|
|
|
1647
|
-
<span class="cstat-no" title="statement not covered" > app.get("/demo/weighted", <span class="fstat-no" title="function not covered" >
|
|
1648
|
-
<span class="cstat-no" title="statement not covered" > return processGRNmap("test-files/demo-files/
|
|
1738
|
+
<span class="cstat-no" title="statement not covered" > app.get("/demo/weighted", <span class="fstat-no" title="function not covered" >fu</span>nction (req, res) {</span>
|
|
1739
|
+
<span class="cstat-no" title="statement not covered" > return processGRNmap("test-files/demo-files/15-genes_28-edges_db5_Dahlquist-data_estimation_output.xlsx",</span>
|
|
1740
|
+
res, app);
|
|
1649
1741
|
});
|
|
1650
1742
|
|
|
1651
|
-
<span class="cstat-no" title="statement not covered" > app.get("/demo/schadeInput", <span class="fstat-no" title="function not covered" >
|
|
1743
|
+
<span class="cstat-no" title="statement not covered" > app.get("/demo/schadeInput", <span class="fstat-no" title="function not covered" >fu</span>nction (req, res) {</span>
|
|
1652
1744
|
<span class="cstat-no" title="statement not covered" > return processGRNmap("test-files/demo-files/21-genes_31-edges_Schade-data_input.xlsx", res, app);</span>
|
|
1653
1745
|
});
|
|
1654
1746
|
|
|
1655
|
-
<span class="cstat-no" title="statement not covered" > app.get("/demo/schadeOutput", <span class="fstat-no" title="function not covered" >
|
|
1656
|
-
<span class="cstat-no" title="statement not covered" > return processGRNmap("test-files/demo-files/21-genes_31-edges_Schade-data_estimation_output.xlsx"
|
|
1747
|
+
<span class="cstat-no" title="statement not covered" > app.get("/demo/schadeOutput", <span class="fstat-no" title="function not covered" >fu</span>nction (req, res) {</span>
|
|
1748
|
+
<span class="cstat-no" title="statement not covered" > return processGRNmap("test-files/demo-files/21-genes_31-edges_Schade-data_estimation_output.xlsx",</span>
|
|
1749
|
+
res, app);
|
|
1657
1750
|
});
|
|
1658
1751
|
}
|
|
1659
1752
|
|
|
@@ -1669,7 +1762,7 @@ module.exports = function (app) {
|
|
|
1669
1762
|
</div><!-- /wrapper -->
|
|
1670
1763
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1671
1764
|
Code coverage
|
|
1672
|
-
generated by <a href="
|
|
1765
|
+
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Thu May 31 2018 15:29:17 GMT-0700 (PDT)
|
|
1673
1766
|
</div>
|
|
1674
1767
|
</div>
|
|
1675
1768
|
<script src="../prettify.js"></script>
|
|
@@ -1681,5 +1774,6 @@ window.onload = function () {
|
|
|
1681
1774
|
};
|
|
1682
1775
|
</script>
|
|
1683
1776
|
<script src="../sorter.js"></script>
|
|
1777
|
+
<script src="../block-navigation.js"></script>
|
|
1684
1778
|
</body>
|
|
1685
1779
|
</html>
|