diff options
Diffstat (limited to 'resources/tools/presentation/doc')
-rw-r--r-- | resources/tools/presentation/doc/pal_func_diagram.svg | 1413 | ||||
-rw-r--r-- | resources/tools/presentation/doc/pal_lld.rst | 1228 |
2 files changed, 2641 insertions, 0 deletions
diff --git a/resources/tools/presentation/doc/pal_func_diagram.svg b/resources/tools/presentation/doc/pal_func_diagram.svg new file mode 100644 index 0000000000..c74cb79185 --- /dev/null +++ b/resources/tools/presentation/doc/pal_func_diagram.svg @@ -0,0 +1,1413 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<svg version="1.2" baseProfile="tiny" width="210mm" height="297mm" viewBox="0 0 21000 29700" preserveAspectRatio="xMidYMid" fill-rule="evenodd" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:presentation="http://sun.com/xmlns/staroffice/presentation" xmlns:smil="http://www.w3.org/2001/SMIL20/" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xml:space="preserve"> + <defs class="ClipPathGroup"> + <clipPath id="presentation_clip_path" clipPathUnits="userSpaceOnUse"> + <rect x="0" y="0" width="21000" height="29700"/> + </clipPath> + </defs> + <defs> + <font id="EmbeddedFont_1" horiz-adv-x="2048"> + <font-face font-family="Liberation Sans embedded" units-per-em="2048" font-weight="normal" font-style="normal" ascent="1852" descent="423"/> + <missing-glyph horiz-adv-x="2048" d="M 0,0 L 2047,0 2047,2047 0,2047 0,0 Z"/> + <glyph unicode="x" horiz-adv-x="1033" d="M 801,0 L 510,444 217,0 23,0 408,556 41,1082 240,1082 510,661 778,1082 979,1082 612,558 1002,0 801,0 Z"/> + <glyph unicode="u" horiz-adv-x="901" d="M 314,1082 L 314,396 C 314,343 318,299 326,264 333,229 346,200 363,179 380,157 403,142 432,133 460,124 495,119 537,119 580,119 618,127 653,142 687,157 716,178 741,207 765,235 784,270 797,312 810,353 817,401 817,455 L 817,1082 997,1082 997,231 C 997,208 997,185 998,160 998,135 998,111 999,89 1000,66 1000,47 1001,31 1002,15 1002,5 1003,0 L 833,0 C 832,3 832,12 831,27 830,42 830,59 829,78 828,97 827,116 826,136 825,155 825,172 825,185 L 822,185 C 805,154 786,125 765,100 744,75 720,53 693,36 666,18 634,4 599,-6 564,-15 523,-20 476,-20 416,-20 364,-13 321,2 278,17 242,39 214,70 186,101 166,140 153,188 140,236 133,294 133,361 L 133,1082 314,1082 Z"/> + <glyph unicode="t" horiz-adv-x="531" d="M 554,8 C 527,1 499,-5 471,-10 442,-14 409,-16 372,-16 228,-16 156,66 156,229 L 156,951 31,951 31,1082 163,1082 216,1324 336,1324 336,1082 536,1082 536,951 336,951 336,268 C 336,216 345,180 362,159 379,138 408,127 450,127 467,127 484,128 501,131 517,134 535,137 554,141 L 554,8 Z"/> + <glyph unicode="s" horiz-adv-x="927" d="M 950,299 C 950,248 940,203 921,164 901,124 872,91 835,64 798,37 752,16 698,2 643,-13 581,-20 511,-20 448,-20 392,-15 342,-6 291,4 247,20 209,41 171,62 139,91 114,126 88,161 69,203 57,254 L 216,285 C 231,227 263,185 311,158 359,131 426,117 511,117 550,117 585,120 618,125 650,130 678,140 701,153 724,166 743,183 756,205 769,226 775,253 775,285 775,318 767,345 752,366 737,387 715,404 688,418 661,432 628,444 589,455 550,465 507,476 460,489 417,500 374,513 331,527 288,541 250,560 216,583 181,606 153,634 132,668 111,702 100,745 100,796 100,895 135,970 206,1022 276,1073 378,1099 513,1099 632,1099 727,1078 798,1036 868,994 912,927 931,834 L 769,814 C 763,842 752,866 736,885 720,904 701,919 678,931 655,942 630,951 602,956 573,961 544,963 513,963 432,963 372,951 333,926 294,901 275,864 275,814 275,785 282,761 297,742 311,723 331,707 357,694 382,681 413,669 449,660 485,650 525,640 568,629 597,622 626,614 656,606 686,597 715,587 744,576 772,564 799,550 824,535 849,519 870,500 889,478 908,456 923,430 934,401 945,372 950,338 950,299 Z"/> + <glyph unicode="r" horiz-adv-x="556" d="M 142,0 L 142,830 C 142,853 142,876 142,900 141,923 141,946 140,968 139,990 139,1011 138,1030 137,1049 137,1067 136,1082 L 306,1082 C 307,1067 308,1049 309,1030 310,1010 311,990 312,969 313,948 313,929 314,910 314,891 314,874 314,861 L 318,861 C 331,902 344,938 359,969 373,999 390,1024 409,1044 428,1063 451,1078 478,1088 505,1097 537,1102 575,1102 590,1102 604,1101 617,1099 630,1096 641,1094 648,1092 L 648,927 C 636,930 622,933 606,935 590,936 572,937 552,937 511,937 476,928 447,909 418,890 394,865 376,832 357,799 344,759 335,714 326,668 322,618 322,564 L 322,0 142,0 Z"/> + <glyph unicode="p" horiz-adv-x="953" d="M 1053,546 C 1053,464 1046,388 1033,319 1020,250 998,190 967,140 936,90 895,51 844,23 793,-6 730,-20 655,-20 578,-20 510,-5 452,24 394,53 350,101 319,168 L 314,168 C 315,167 315,161 316,150 316,139 316,126 317,110 317,94 317,76 318,57 318,37 318,17 318,-2 L 318,-425 138,-425 138,861 C 138,887 138,912 138,936 137,960 137,982 136,1002 135,1021 135,1038 134,1052 133,1066 133,1076 132,1082 L 306,1082 C 307,1080 308,1073 309,1061 310,1049 311,1035 312,1018 313,1001 314,982 315,963 316,944 316,925 316,908 L 320,908 C 337,943 356,972 377,997 398,1021 423,1041 450,1057 477,1072 508,1084 542,1091 575,1098 613,1101 655,1101 730,1101 793,1088 844,1061 895,1034 936,997 967,949 998,900 1020,842 1033,774 1046,705 1053,629 1053,546 Z M 864,542 C 864,609 860,668 852,720 844,772 830,816 811,852 791,888 765,915 732,934 699,953 658,962 609,962 569,962 531,956 496,945 461,934 430,912 404,880 377,848 356,804 341,748 326,691 318,618 318,528 318,451 324,387 337,334 350,281 368,238 393,205 417,172 447,149 483,135 519,120 560,113 607,113 657,113 699,123 732,142 765,161 791,189 811,226 830,263 844,308 852,361 860,414 864,474 864,542 Z"/> + <glyph unicode="o" horiz-adv-x="980" d="M 1053,542 C 1053,353 1011,212 928,119 845,26 724,-20 565,-20 490,-20 422,-9 363,14 304,37 254,71 213,118 172,165 140,223 119,294 97,364 86,447 86,542 86,915 248,1102 571,1102 655,1102 728,1090 789,1067 850,1044 900,1009 939,962 978,915 1006,857 1025,787 1044,717 1053,635 1053,542 Z M 864,542 C 864,626 858,695 845,750 832,805 813,848 788,881 763,914 732,937 696,950 660,963 619,969 574,969 528,969 487,962 450,949 413,935 381,912 355,879 329,846 309,802 296,747 282,692 275,624 275,542 275,458 282,389 297,334 312,279 332,235 358,202 383,169 414,146 449,133 484,120 522,113 563,113 609,113 651,120 688,133 725,146 757,168 783,201 809,234 829,278 843,333 857,388 864,458 864,542 Z"/> + <glyph unicode="n" horiz-adv-x="900" d="M 825,0 L 825,686 C 825,739 821,783 814,818 806,853 793,882 776,904 759,925 736,941 708,950 679,959 644,963 602,963 559,963 521,956 487,941 452,926 423,904 399,876 374,847 355,812 342,771 329,729 322,681 322,627 L 322,0 142,0 142,851 C 142,874 142,898 142,923 141,948 141,971 140,994 139,1016 139,1035 138,1051 137,1067 137,1077 136,1082 L 306,1082 C 307,1079 307,1070 308,1055 309,1040 310,1024 311,1005 312,986 312,966 313,947 314,927 314,910 314,897 L 317,897 C 334,928 353,957 374,982 395,1007 419,1029 446,1047 473,1064 505,1078 540,1088 575,1097 616,1102 663,1102 723,1102 775,1095 818,1080 861,1065 897,1043 925,1012 953,981 974,942 987,894 1000,845 1006,788 1006,721 L 1006,0 825,0 Z"/> + <glyph unicode="m" horiz-adv-x="1456" d="M 768,0 L 768,686 C 768,739 765,783 758,818 751,853 740,882 725,904 709,925 688,941 663,950 638,959 607,963 570,963 532,963 498,956 467,941 436,926 410,904 389,876 367,847 350,812 339,771 327,729 321,681 321,627 L 321,0 142,0 142,851 C 142,874 142,898 142,923 141,948 141,971 140,994 139,1016 139,1035 138,1051 137,1067 137,1077 136,1082 L 306,1082 C 307,1079 307,1070 308,1055 309,1040 310,1024 311,1005 312,986 312,966 313,947 314,927 314,910 314,897 L 317,897 C 333,928 350,957 369,982 388,1007 410,1029 435,1047 460,1064 488,1078 521,1088 553,1097 590,1102 633,1102 715,1102 780,1086 828,1053 875,1020 908,968 927,897 L 930,897 C 946,928 964,957 984,982 1004,1007 1027,1029 1054,1047 1081,1064 1111,1078 1144,1088 1177,1097 1215,1102 1258,1102 1313,1102 1360,1095 1400,1080 1439,1065 1472,1043 1497,1012 1522,981 1541,942 1553,894 1565,845 1571,788 1571,721 L 1571,0 1393,0 1393,686 C 1393,739 1390,783 1383,818 1376,853 1365,882 1350,904 1334,925 1313,941 1288,950 1263,959 1232,963 1195,963 1157,963 1123,956 1092,942 1061,927 1035,906 1014,878 992,850 975,815 964,773 952,731 946,682 946,627 L 946,0 768,0 Z"/> + <glyph unicode="l" horiz-adv-x="187" d="M 138,0 L 138,1484 318,1484 318,0 138,0 Z"/> + <glyph unicode="i" horiz-adv-x="187" d="M 137,1312 L 137,1484 317,1484 317,1312 137,1312 Z M 137,0 L 137,1082 317,1082 317,0 137,0 Z"/> + <glyph unicode="g" horiz-adv-x="954" d="M 548,-425 C 486,-425 431,-419 383,-406 335,-393 294,-375 260,-352 226,-328 198,-300 177,-267 156,-234 140,-198 131,-158 L 312,-132 C 324,-182 351,-220 392,-248 433,-274 486,-288 553,-288 594,-288 631,-282 664,-271 697,-260 726,-241 749,-217 772,-191 790,-159 803,-119 816,-79 822,-30 822,27 L 822,201 820,201 C 807,174 790,148 771,123 751,98 727,75 699,56 670,37 637,21 600,10 563,-2 520,-8 472,-8 403,-8 345,4 296,27 247,50 207,84 176,130 145,176 122,233 108,302 93,370 86,449 86,539 86,626 93,704 108,773 122,842 145,901 178,950 210,998 252,1035 304,1061 355,1086 418,1099 492,1099 569,1099 635,1082 692,1047 748,1012 791,962 822,897 L 824,897 C 824,914 825,932 826,953 827,974 828,993 829,1012 830,1030 831,1046 832,1059 833,1072 835,1080 836,1082 L 1007,1082 C 1006,1076 1006,1066 1005,1052 1004,1037 1004,1020 1003,1000 1002,980 1002,958 1002,934 1001,909 1001,884 1001,858 L 1001,31 C 1001,-120 964,-234 890,-311 815,-387 701,-425 548,-425 Z M 822,541 C 822,616 814,681 798,735 781,788 760,832 733,866 706,900 676,925 642,941 607,957 572,965 536,965 490,965 451,957 418,941 385,925 357,900 336,866 314,831 298,787 288,734 277,680 272,616 272,541 272,463 277,398 288,345 298,292 314,249 335,216 356,183 383,160 416,146 449,132 488,125 533,125 569,125 604,133 639,148 673,163 704,188 731,221 758,254 780,297 797,350 814,403 822,466 822,541 Z"/> + <glyph unicode="f" horiz-adv-x="557" d="M 361,951 L 361,0 181,0 181,951 29,951 29,1082 181,1082 181,1204 C 181,1243 185,1280 192,1314 199,1347 213,1377 233,1402 252,1427 279,1446 313,1461 347,1475 391,1482 445,1482 466,1482 489,1481 512,1479 535,1477 555,1474 572,1470 L 572,1333 C 561,1335 548,1337 533,1339 518,1340 504,1341 492,1341 465,1341 444,1337 427,1330 410,1323 396,1312 387,1299 377,1285 370,1268 367,1248 363,1228 361,1205 361,1179 L 361,1082 572,1082 572,951 361,951 Z"/> + <glyph unicode="e" horiz-adv-x="980" d="M 276,503 C 276,446 282,394 294,347 305,299 323,258 348,224 372,189 403,163 441,144 479,125 525,115 578,115 656,115 719,131 766,162 813,193 844,233 861,281 L 1019,236 C 1008,206 992,176 972,146 951,115 924,88 890,64 856,39 814,19 763,4 712,-12 650,-20 578,-20 418,-20 296,28 213,123 129,218 87,360 87,548 87,649 100,735 125,806 150,876 185,933 229,977 273,1021 324,1053 383,1073 442,1092 504,1102 571,1102 662,1102 738,1087 799,1058 860,1029 909,988 946,937 983,885 1009,824 1025,754 1040,684 1048,608 1048,527 L 1048,503 276,503 Z M 862,641 C 852,755 823,838 775,891 727,943 658,969 568,969 538,969 507,964 474,955 441,945 410,928 382,903 354,878 330,845 311,803 292,760 281,706 278,641 L 862,641 Z"/> + <glyph unicode="d" horiz-adv-x="954" d="M 821,174 C 788,105 744,55 689,25 634,-5 565,-20 484,-20 347,-20 247,26 183,118 118,210 86,349 86,536 86,913 219,1102 484,1102 566,1102 634,1087 689,1057 744,1027 788,979 821,914 L 823,914 C 823,921 823,931 823,946 822,960 822,975 822,991 821,1006 821,1021 821,1035 821,1049 821,1059 821,1065 L 821,1484 1001,1484 1001,223 C 1001,197 1001,172 1002,148 1002,124 1002,102 1003,82 1004,62 1004,45 1005,31 1006,16 1006,6 1007,0 L 835,0 C 834,7 833,16 832,29 831,41 830,55 829,71 828,87 827,104 826,122 825,139 825,157 825,174 L 821,174 Z M 275,542 C 275,467 280,403 289,350 298,297 313,253 334,219 355,184 381,159 413,143 445,127 484,119 530,119 577,119 619,127 656,142 692,157 722,182 747,217 771,251 789,296 802,351 815,406 821,474 821,554 821,631 815,696 802,749 789,802 771,844 746,877 721,910 691,933 656,948 620,962 579,969 532,969 488,969 450,961 418,946 386,931 359,906 338,872 317,838 301,794 291,740 280,685 275,619 275,542 Z"/> + <glyph unicode="c" horiz-adv-x="875" d="M 275,546 C 275,484 280,427 289,375 298,323 313,278 334,241 355,203 384,174 419,153 454,132 497,122 548,122 612,122 666,139 709,173 752,206 778,258 788,328 L 970,328 C 964,283 951,239 931,197 911,155 884,118 850,86 815,54 773,28 724,9 675,-10 618,-20 553,-20 468,-20 396,-6 337,23 278,52 230,91 193,142 156,192 129,251 112,320 95,388 87,462 87,542 87,615 93,679 105,735 117,790 134,839 156,881 177,922 203,957 232,986 261,1014 293,1037 328,1054 362,1071 398,1083 436,1091 474,1098 512,1102 551,1102 612,1102 666,1094 713,1077 760,1060 801,1038 836,1009 870,980 898,945 919,906 940,867 955,824 964,779 L 779,765 C 770,825 746,873 708,908 670,943 616,961 546,961 495,961 452,953 418,936 383,919 355,893 334,859 313,824 298,781 289,729 280,677 275,616 275,546 Z"/> + <glyph unicode="b" horiz-adv-x="953" d="M 1053,546 C 1053,169 920,-20 655,-20 573,-20 505,-5 451,25 396,54 352,102 318,168 L 316,168 C 316,151 316,133 315,114 314,95 313,78 312,62 311,46 310,32 309,21 308,10 307,3 306,0 L 132,0 C 133,6 133,16 134,31 135,45 135,62 136,82 137,102 137,124 138,148 138,172 138,197 138,223 L 138,1484 318,1484 318,1061 C 318,1041 318,1022 318,1004 317,985 317,969 316,955 315,938 315,923 314,908 L 318,908 C 351,977 396,1027 451,1057 506,1087 574,1102 655,1102 792,1102 892,1056 957,964 1021,872 1053,733 1053,546 Z M 864,540 C 864,615 859,679 850,732 841,785 826,829 805,864 784,898 758,923 726,939 694,955 655,963 609,963 562,963 520,955 484,940 447,925 417,900 393,866 368,832 350,787 337,732 324,677 318,609 318,529 318,452 324,387 337,334 350,281 368,239 393,206 417,173 447,149 483,135 519,120 560,113 607,113 651,113 689,121 721,136 753,151 780,176 801,210 822,244 838,288 849,343 859,397 864,463 864,540 Z"/> + <glyph unicode="a" horiz-adv-x="1060" d="M 414,-20 C 305,-20 224,9 169,66 114,124 87,203 87,303 87,375 101,434 128,480 155,526 190,562 234,588 277,614 327,632 383,642 439,652 496,657 554,657 L 797,657 797,717 C 797,762 792,800 783,832 774,863 759,889 740,908 721,928 697,942 668,951 639,960 604,965 565,965 530,965 499,963 471,958 443,953 419,944 398,931 377,918 361,900 348,878 335,855 327,827 323,793 L 135,810 C 142,853 154,892 173,928 192,963 218,994 253,1020 287,1046 330,1066 382,1081 433,1095 496,1102 569,1102 705,1102 807,1071 876,1009 945,946 979,856 979,738 L 979,272 C 979,219 986,179 1000,152 1014,125 1041,111 1080,111 1090,111 1100,112 1110,113 1120,114 1130,116 1139,118 L 1139,6 C 1116,1 1094,-3 1072,-6 1049,-9 1025,-10 1000,-10 966,-10 937,-5 913,4 888,13 868,26 853,45 838,63 826,86 818,113 810,140 805,171 803,207 L 797,207 C 778,172 757,141 734,113 711,85 684,61 653,42 622,22 588,7 549,-4 510,-15 465,-20 414,-20 Z M 455,115 C 512,115 563,125 606,146 649,167 684,194 713,226 741,259 762,294 776,332 790,371 797,408 797,443 L 797,531 600,531 C 556,531 514,528 475,522 435,517 400,506 370,489 340,472 316,449 299,418 281,388 272,349 272,300 272,241 288,195 320,163 351,131 396,115 455,115 Z"/> + <glyph unicode="_" horiz-adv-x="1191" d="M -31,-407 L -31,-277 1162,-277 1162,-407 -31,-407 Z"/> + <glyph unicode="Y" horiz-adv-x="1244" d="M 777,584 L 777,0 587,0 587,584 45,1409 255,1409 684,738 1111,1409 1321,1409 777,584 Z"/> + <glyph unicode="T" horiz-adv-x="1139" d="M 720,1253 L 720,0 530,0 530,1253 46,1253 46,1409 1204,1409 1204,1253 720,1253 Z"/> + <glyph unicode="S" horiz-adv-x="1139" d="M 1272,389 C 1272,330 1261,275 1238,225 1215,175 1179,132 1131,96 1083,59 1023,31 950,11 877,-10 790,-20 690,-20 515,-20 378,11 280,72 182,133 120,222 93,338 L 278,375 C 287,338 302,305 321,275 340,245 367,219 400,198 433,176 473,159 522,147 571,135 629,129 697,129 754,129 806,134 853,144 900,153 941,168 975,188 1009,208 1036,234 1055,266 1074,297 1083,335 1083,379 1083,425 1073,462 1052,491 1031,520 1001,543 963,562 925,581 880,596 827,609 774,622 716,635 652,650 613,659 573,668 534,679 494,689 456,701 420,716 383,730 349,747 317,766 285,785 257,809 234,836 211,863 192,894 179,930 166,965 159,1006 159,1053 159,1120 173,1177 200,1225 227,1272 264,1311 312,1342 360,1373 417,1395 482,1409 547,1423 618,1430 694,1430 781,1430 856,1423 918,1410 980,1396 1032,1375 1075,1348 1118,1321 1152,1287 1178,1247 1203,1206 1224,1159 1239,1106 L 1051,1073 C 1042,1107 1028,1137 1011,1164 993,1191 970,1213 941,1231 912,1249 878,1263 837,1272 796,1281 747,1286 692,1286 627,1286 572,1280 528,1269 483,1257 448,1241 421,1221 394,1201 374,1178 363,1151 351,1124 345,1094 345,1063 345,1021 356,987 377,960 398,933 426,910 462,892 498,874 540,859 587,847 634,835 685,823 738,811 781,801 825,791 868,781 911,770 952,758 991,744 1030,729 1067,712 1102,693 1136,674 1166,650 1191,622 1216,594 1236,561 1251,523 1265,485 1272,440 1272,389 Z"/> + <glyph unicode="R" horiz-adv-x="1218" d="M 1164,0 L 798,585 359,585 359,0 168,0 168,1409 831,1409 C 911,1409 982,1400 1044,1382 1105,1363 1157,1337 1199,1302 1241,1267 1273,1225 1295,1175 1317,1125 1328,1069 1328,1006 1328,961 1322,917 1309,874 1296,831 1275,791 1247,755 1219,719 1183,688 1140,662 1097,636 1045,618 984,607 L 1384,0 1164,0 Z M 1136,1004 C 1136,1047 1129,1084 1114,1115 1099,1146 1078,1173 1050,1194 1022,1215 988,1230 948,1241 908,1251 863,1256 812,1256 L 359,1256 359,736 820,736 C 875,736 922,743 962,757 1002,770 1035,789 1061,813 1086,837 1105,865 1118,898 1130,931 1136,966 1136,1004 Z"/> + <glyph unicode="P" horiz-adv-x="1086" d="M 1258,985 C 1258,924 1248,867 1228,814 1207,761 1177,715 1137,676 1096,637 1046,606 985,583 924,560 854,549 773,549 L 359,549 359,0 168,0 168,1409 761,1409 C 844,1409 917,1399 979,1379 1041,1358 1093,1330 1134,1293 1175,1256 1206,1211 1227,1159 1248,1106 1258,1048 1258,985 Z M 1066,983 C 1066,1072 1039,1140 984,1187 929,1233 847,1256 738,1256 L 359,1256 359,700 746,700 C 856,700 937,724 989,773 1040,822 1066,892 1066,983 Z"/> + <glyph unicode="M" horiz-adv-x="1324" d="M 1366,0 L 1366,940 C 1366,974 1366,1009 1367,1044 1368,1079 1369,1112 1370,1141 1371,1175 1373,1208 1375,1240 1366,1206 1356,1172 1346,1139 1337,1110 1328,1080 1318,1048 1307,1015 1297,986 1287,960 L 923,0 789,0 420,960 C 416,970 412,982 408,995 403,1008 399,1023 394,1038 389,1053 384,1068 379,1084 374,1099 369,1115 364,1130 353,1165 342,1202 331,1240 332,1203 333,1166 334,1129 335,1098 336,1065 337,1031 338,996 338,966 338,940 L 338,0 168,0 168,1409 419,1409 794,432 C 799,419 804,402 811,381 818,360 824,338 830,316 836,294 842,273 847,254 852,234 855,219 857,208 859,219 863,234 868,254 873,274 880,295 887,317 894,339 900,360 907,381 914,402 920,419 925,432 L 1293,1409 1538,1409 1538,0 1366,0 Z"/> + <glyph unicode="L" horiz-adv-x="900" d="M 168,0 L 168,1409 359,1409 359,156 1071,156 1071,0 168,0 Z"/> + <glyph unicode="I" horiz-adv-x="186" d="M 189,0 L 189,1409 380,1409 380,0 189,0 Z"/> + <glyph unicode="F" horiz-adv-x="1006" d="M 359,1253 L 359,729 1145,729 1145,571 359,571 359,0 168,0 168,1409 1169,1409 1169,1253 359,1253 Z"/> + <glyph unicode="D" horiz-adv-x="1218" d="M 1381,719 C 1381,602 1363,498 1328,409 1293,319 1244,244 1183,184 1122,123 1049,78 966,47 882,16 792,0 695,0 L 168,0 168,1409 634,1409 C 743,1409 843,1396 935,1369 1026,1342 1105,1300 1171,1244 1237,1187 1289,1116 1326,1029 1363,942 1381,839 1381,719 Z M 1189,719 C 1189,814 1175,896 1148,964 1121,1031 1082,1087 1033,1130 984,1173 925,1205 856,1226 787,1246 712,1256 630,1256 L 359,1256 359,153 673,153 C 747,153 816,165 879,189 942,213 996,249 1042,296 1088,343 1124,402 1150,473 1176,544 1189,626 1189,719 Z"/> + <glyph unicode="A" horiz-adv-x="1350" d="M 1167,0 L 1006,412 364,412 202,0 4,0 579,1409 796,1409 1362,0 1167,0 Z M 768,1026 C 757,1053 747,1080 738,1107 728,1134 719,1159 712,1182 705,1204 699,1223 694,1238 689,1253 686,1262 685,1265 684,1262 681,1252 676,1237 671,1222 665,1203 658,1180 650,1157 641,1132 632,1105 622,1078 612,1051 602,1024 L 422,561 949,561 768,1026 Z"/> + <glyph unicode="4" horiz-adv-x="1033" d="M 881,319 L 881,0 711,0 711,319 47,319 47,459 692,1409 881,1409 881,461 1079,461 1079,319 881,319 Z M 711,1206 C 710,1203 706,1196 701,1187 696,1177 690,1166 683,1154 676,1142 670,1130 663,1118 656,1105 649,1095 644,1087 L 283,555 C 280,550 275,543 269,534 262,525 256,517 249,508 242,499 236,490 229,481 222,472 217,466 213,461 L 711,461 711,1206 Z"/> + <glyph unicode="3" horiz-adv-x="980" d="M 1049,389 C 1049,324 1039,267 1018,216 997,165 966,123 926,88 885,53 835,26 776,8 716,-11 648,-20 571,-20 484,-20 410,-9 351,13 291,34 242,63 203,99 164,134 135,175 116,221 97,266 84,313 78,362 L 264,379 C 269,342 279,308 294,277 308,246 327,220 352,198 377,176 407,159 443,147 479,135 522,129 571,129 662,129 733,151 785,196 836,241 862,307 862,395 862,447 851,489 828,521 805,552 776,577 742,595 707,612 670,624 630,630 589,636 552,639 518,639 L 416,639 416,795 514,795 C 548,795 583,799 620,806 657,813 690,825 721,844 751,862 776,887 796,918 815,949 825,989 825,1038 825,1113 803,1173 759,1217 714,1260 648,1282 561,1282 482,1282 418,1262 369,1221 320,1180 291,1123 283,1049 L 102,1063 C 109,1125 126,1179 153,1225 180,1271 214,1309 255,1340 296,1370 342,1393 395,1408 448,1423 504,1430 563,1430 642,1430 709,1420 766,1401 823,1381 869,1354 905,1321 941,1287 968,1247 985,1202 1002,1157 1010,1108 1010,1057 1010,1016 1004,977 993,941 982,905 964,873 940,844 916,815 886,791 849,770 812,749 767,734 715,723 L 715,719 C 772,713 821,700 863,681 905,661 940,636 967,607 994,578 1015,544 1029,507 1042,470 1049,430 1049,389 Z"/> + <glyph unicode="2" horiz-adv-x="927" d="M 103,0 L 103,127 C 137,205 179,274 228,334 277,393 328,447 382,496 436,544 490,589 543,630 596,671 643,713 686,754 729,795 763,839 790,884 816,929 829,981 829,1038 829,1078 823,1113 811,1144 799,1174 782,1199 759,1220 736,1241 709,1256 678,1267 646,1277 611,1282 572,1282 536,1282 502,1277 471,1267 439,1257 411,1242 386,1222 361,1202 341,1177 326,1148 310,1118 300,1083 295,1044 L 111,1061 C 117,1112 131,1159 153,1204 175,1249 205,1288 244,1322 283,1355 329,1382 384,1401 438,1420 501,1430 572,1430 642,1430 704,1422 759,1405 814,1388 860,1364 898,1331 935,1298 964,1258 984,1210 1004,1162 1014,1107 1014,1044 1014,997 1006,952 989,909 972,866 949,826 921,787 892,748 859,711 822,675 785,639 746,604 705,570 664,535 623,501 582,468 541,434 502,400 466,366 429,332 397,298 368,263 339,228 317,191 301,153 L 1036,153 1036,0 103,0 Z"/> + <glyph unicode="1" horiz-adv-x="874" d="M 156,0 L 156,153 515,153 515,1237 197,1010 197,1180 530,1409 696,1409 696,153 1039,153 1039,0 156,0 Z"/> + <glyph unicode="." horiz-adv-x="186" d="M 187,0 L 187,219 382,219 382,0 187,0 Z"/> + <glyph unicode="-" horiz-adv-x="504" d="M 91,464 L 91,624 591,624 591,464 91,464 Z"/> + <glyph unicode=" " horiz-adv-x="556"/> + </font> + </defs> + <defs class="TextShapeIndex"> + <g ooo:slide="id1" ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29 id30 id31 id32 id33 id34 id35 id36 id37 id38 id39 id40 id41 id42 id43 id44 id45 id46 id47 id48 id49 id50 id51 id52"/> + </defs> + <defs class="EmbeddedBulletChars"> + <g id="bullet-char-template(57356)" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"/> + </g> + <g id="bullet-char-template(57354)" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"/> + </g> + <g id="bullet-char-template(10146)" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"/> + </g> + <g id="bullet-char-template(10132)" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"/> + </g> + <g id="bullet-char-template(10007)" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"/> + </g> + <g id="bullet-char-template(10004)" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"/> + </g> + <g id="bullet-char-template(9679)" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"/> + </g> + <g id="bullet-char-template(8226)" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"/> + </g> + <g id="bullet-char-template(8211)" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"/> + </g> + </defs> + <defs class="TextEmbeddedBitmaps"/> + <g> + <g id="id2" class="Master_Slide"> + <g id="bg-id2" class="Background"/> + <g id="bo-id2" class="BackgroundObjects"/> + </g> + </g> + <g class="SlideGroup"> + <g> + <g id="id1" class="Slide" clip-path="url(#presentation_clip_path)"> + <g class="Page"> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id3"> + <rect class="BoundingBox" stroke="none" fill="none" x="3569" y="2269" width="3813" height="1273"/> + <path fill="rgb(114,159,207)" stroke="none" d="M 5475,3540 L 3570,3540 3570,2270 7380,2270 7380,3540 5475,3540 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 5475,3540 L 3570,3540 3570,2270 7380,2270 7380,3540 5475,3540 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="4068" y="2799"/><tspan class="TextPosition" x="4068" y="2799"><tspan fill="rgb(0,0,0)" stroke="none">Specification</tspan></tspan></tspan><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="4753" y="3354"/><tspan class="TextPosition" x="4753" y="3354"><tspan fill="rgb(0,0,0)" stroke="none">.YAML</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id4"> + <rect class="BoundingBox" stroke="none" fill="none" x="8646" y="2269" width="3813" height="1273"/> + <path fill="rgb(114,159,207)" stroke="none" d="M 10552,3540 L 8647,3540 8647,2270 12457,2270 12457,3540 10552,3540 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 10552,3540 L 8647,3540 8647,2270 12457,2270 12457,3540 10552,3540 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="8810" y="2799"/><tspan class="TextPosition" x="8810" y="2799"><tspan fill="rgb(0,0,0)" stroke="none">Data to process</tspan></tspan></tspan><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="10099" y="3354"/><tspan class="TextPosition" x="10099" y="3354"><tspan fill="rgb(0,0,0)" stroke="none">.xml</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id5"> + <rect class="BoundingBox" stroke="none" fill="none" x="13669" y="2269" width="3813" height="1273"/> + <path fill="rgb(114,159,207)" stroke="none" d="M 15575,3540 L 13670,3540 13670,2270 17480,2270 17480,3540 15575,3540 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 15575,3540 L 13670,3540 13670,2270 17480,2270 17480,3540 15575,3540 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="14068" y="2799"/><tspan class="TextPosition" x="14068" y="2799"><tspan fill="rgb(0,0,0)" stroke="none">Static content</tspan></tspan></tspan><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="15228" y="3354"/><tspan class="TextPosition" x="15228" y="3354"><tspan fill="rgb(0,0,0)" stroke="none">.rst</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id6"> + <rect class="BoundingBox" stroke="none" fill="none" x="3130" y="4779" width="4703" height="1274"/> + <path fill="rgb(207,231,245)" stroke="none" d="M 5480,4780 C 6812,4780 7830,5055 7830,5415 7830,5775 6812,6050 5480,6050 4148,6050 3131,5775 3131,5415 3131,5055 4148,4780 5480,4780 Z M 3131,4780 L 3131,4780 Z M 7831,6051 L 7831,6051 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 5480,4780 C 6812,4780 7830,5055 7830,5415 7830,5775 6812,6050 5480,6050 4148,6050 3131,5775 3131,5415 3131,5055 4148,4780 5480,4780 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 3131,4780 L 3131,4780 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 7831,6051 L 7831,6051 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="3480" y="5587"/><tspan class="TextPosition" x="3480" y="5587"><tspan fill="rgb(0,0,0)" stroke="none">read_specification</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id7"> + <rect class="BoundingBox" stroke="none" fill="none" x="8111" y="4780" width="4830" height="1274"/> + <path fill="rgb(207,231,245)" stroke="none" d="M 10525,4781 C 11893,4781 12938,5056 12938,5416 12938,5776 11893,6051 10525,6051 9157,6051 8112,5776 8112,5416 8112,5056 9157,4781 10525,4781 Z M 8112,4781 L 8112,4781 Z M 12939,6052 L 12939,6052 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 10525,4781 C 11893,4781 12938,5056 12938,5416 12938,5776 11893,6051 10525,6051 9157,6051 8112,5776 8112,5416 8112,5056 9157,4781 10525,4781 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 8112,4781 L 8112,4781 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 12939,6052 L 12939,6052 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="9410" y="5588"/><tspan class="TextPosition" x="9410" y="5588"><tspan fill="rgb(0,0,0)" stroke="none">read_data</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id8"> + <rect class="BoundingBox" stroke="none" fill="none" x="3569" y="7289" width="3813" height="1273"/> + <path fill="rgb(114,159,207)" stroke="none" d="M 5475,8560 L 3570,8560 3570,7290 7380,7290 7380,8560 5475,8560 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 5475,8560 L 3570,8560 3570,7290 7380,7290 7380,8560 5475,8560 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="4068" y="8097"/><tspan class="TextPosition" x="4068" y="8097"><tspan fill="rgb(0,0,0)" stroke="none">Specification</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id9"> + <rect class="BoundingBox" stroke="none" fill="none" x="8619" y="7289" width="3813" height="1273"/> + <path fill="rgb(114,159,207)" stroke="none" d="M 10525,8560 L 8620,8560 8620,7290 12430,7290 12430,8560 10525,8560 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 10525,8560 L 8620,8560 8620,7290 12430,7290 12430,8560 10525,8560 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="9420" y="8097"/><tspan class="TextPosition" x="9420" y="8097"><tspan fill="rgb(0,0,0)" stroke="none">Input data</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id10"> + <rect class="BoundingBox" stroke="none" fill="none" x="3157" y="10699" width="4703" height="1274"/> + <path fill="rgb(207,231,245)" stroke="none" d="M 5507,10700 C 6839,10700 7857,10975 7857,11335 7857,11695 6839,11970 5507,11970 4175,11970 3158,11695 3158,11335 3158,10975 4175,10700 5507,10700 Z M 3158,10700 L 3158,10700 Z M 7858,11971 L 7858,11971 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 5507,10700 C 6839,10700 7857,10975 7857,11335 7857,11695 6839,11970 5507,11970 4175,11970 3158,11695 3158,11335 3158,10975 4175,10700 5507,10700 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 3158,10700 L 3158,10700 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 7858,11971 L 7858,11971 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="4418" y="11507"/><tspan class="TextPosition" x="4418" y="11507"><tspan fill="rgb(0,0,0)" stroke="none">filter_data</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id11"> + <rect class="BoundingBox" stroke="none" fill="none" x="8111" y="10699" width="4830" height="1274"/> + <path fill="rgb(207,231,245)" stroke="none" d="M 10525,10700 C 11893,10700 12938,10975 12938,11335 12938,11695 11893,11970 10525,11970 9157,11970 8112,11695 8112,11335 8112,10975 9157,10700 10525,10700 Z M 8112,10700 L 8112,10700 Z M 12939,11971 L 12939,11971 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 10525,10700 C 11893,10700 12938,10975 12938,11335 12938,11695 11893,11970 10525,11970 9157,11970 8112,11695 8112,11335 8112,10975 9157,10700 10525,10700 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 8112,10700 L 8112,10700 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 12939,11971 L 12939,11971 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="9435" y="11507"/><tspan class="TextPosition" x="9435" y="11507"><tspan fill="rgb(0,0,0)" stroke="none">filter_data</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id12"> + <rect class="BoundingBox" stroke="none" fill="none" x="13317" y="17399" width="4449" height="1274"/> + <path fill="rgb(207,231,245)" stroke="none" d="M 15540,17400 C 16800,17400 17763,17675 17763,18035 17763,18395 16800,18670 15540,18670 14280,18670 13318,18395 13318,18035 13318,17675 14280,17400 15540,17400 Z M 13318,17400 L 13318,17400 Z M 17764,18671 L 17764,18671 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 15540,17400 C 16800,17400 17763,17675 17763,18035 17763,18395 16800,18670 15540,18670 14280,18670 13318,18395 13318,18035 13318,17675 14280,17400 15540,17400 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 13318,17400 L 13318,17400 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 17764,18671 L 17764,18671 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="13982" y="18207"/><tspan class="TextPosition" x="13982" y="18207"><tspan fill="rgb(0,0,0)" stroke="none">generate_files</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id13"> + <rect class="BoundingBox" stroke="none" fill="none" x="3569" y="14909" width="3813" height="1273"/> + <path fill="rgb(114,159,207)" stroke="none" d="M 5475,16180 L 3570,16180 3570,14910 7380,14910 7380,16180 5475,16180 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 5475,16180 L 3570,16180 3570,14910 7380,14910 7380,16180 5475,16180 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="4760" y="15717"/><tspan class="TextPosition" x="4760" y="15717"><tspan fill="rgb(0,0,0)" stroke="none">Tables</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id14"> + <rect class="BoundingBox" stroke="none" fill="none" x="8619" y="14909" width="3813" height="1273"/> + <path fill="rgb(114,159,207)" stroke="none" d="M 10525,16180 L 8620,16180 8620,14910 12430,14910 12430,16180 10525,16180 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 10525,16180 L 8620,16180 8620,14910 12430,14910 12430,16180 10525,16180 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="9973" y="15717"/><tspan class="TextPosition" x="9973" y="15717"><tspan fill="rgb(0,0,0)" stroke="none">Plots</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id15"> + <rect class="BoundingBox" stroke="none" fill="none" x="13669" y="20009" width="3813" height="1273"/> + <path fill="rgb(114,159,207)" stroke="none" d="M 15575,21280 L 13670,21280 13670,20010 17480,20010 17480,21280 15575,21280 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 15575,21280 L 13670,21280 13670,20010 17480,20010 17480,21280 15575,21280 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="15052" y="20817"/><tspan class="TextPosition" x="15052" y="20817"><tspan fill="rgb(0,0,0)" stroke="none">Files</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id16"> + <rect class="BoundingBox" stroke="none" fill="none" x="8111" y="22519" width="4830" height="1274"/> + <path fill="rgb(207,231,245)" stroke="none" d="M 10525,22520 C 11893,22520 12938,22795 12938,23155 12938,23515 11893,23790 10525,23790 9157,23790 8112,23515 8112,23155 8112,22795 9157,22520 10525,22520 Z M 8112,22520 L 8112,22520 Z M 12939,23791 L 12939,23791 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 10525,22520 C 11893,22520 12938,22795 12938,23155 12938,23515 11893,23790 10525,23790 9157,23790 8112,23515 8112,23155 8112,22795 9157,22520 10525,22520 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 8112,22520 L 8112,22520 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 12939,23791 L 12939,23791 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="8762" y="23327"/><tspan class="TextPosition" x="8762" y="23327"><tspan fill="rgb(0,0,0)" stroke="none">generate_report</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id17"> + <rect class="BoundingBox" stroke="none" fill="none" x="8619" y="25129" width="3813" height="1273"/> + <path fill="rgb(114,159,207)" stroke="none" d="M 10525,26400 L 8620,26400 8620,25130 12430,25130 12430,26400 10525,26400 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 10525,26400 L 8620,26400 8620,25130 12430,25130 12430,26400 10525,26400 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="9780" y="25937"/><tspan class="TextPosition" x="9780" y="25937"><tspan fill="rgb(0,0,0)" stroke="none">Report</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id18"> + <rect class="BoundingBox" stroke="none" fill="none" x="1803" y="2904" width="6310" height="20387"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3570,2905 C 1671,2905 -537,22593 7753,23143"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 8112,23155 L 7667,22989 7657,23289 8112,23155 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id19"> + <rect class="BoundingBox" stroke="none" fill="none" x="5330" y="3539" width="302" height="1242"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5475,3540 C 5475,4470 5479,4054 5481,4345"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 5482,4780 L 5631,4330 5331,4330 5482,4780 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id20"> + <rect class="BoundingBox" stroke="none" fill="none" x="10379" y="3539" width="302" height="1243"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10552,3540 C 10552,4471 10536,4055 10529,4346"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 10525,4781 L 10679,4332 10379,4330 10525,4781 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id21"> + <rect class="BoundingBox" stroke="none" fill="none" x="5326" y="6049" width="302" height="1242"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5482,6050 C 5482,6981 5478,6566 5476,6855"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 5475,7290 L 5626,6840 5326,6840 5475,7290 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id22"> + <rect class="BoundingBox" stroke="none" fill="none" x="10375" y="6050" width="301" height="1241"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10525,6051 L 10525,6860"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 10525,7290 L 10675,6840 10375,6840 10525,7290 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id23"> + <rect class="BoundingBox" stroke="none" fill="none" x="5357" y="8559" width="302" height="2142"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5475,8560 C 5475,10165 5502,9296 5508,10266"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 5509,10700 L 5658,10250 5358,10250 5509,10700 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id24"> + <rect class="BoundingBox" stroke="none" fill="none" x="5474" y="8559" width="3418" height="2328"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5475,8560 C 5475,10165 8280,9178 8751,10472"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 8818,10886 L 8890,10417 8595,10468 8818,10886 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id25"> + <rect class="BoundingBox" stroke="none" fill="none" x="5474" y="8559" width="10214" height="8842"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5475,8560 C 5475,10804 15289,6495 15537,16990"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 15542,17400 L 15686,16948 15386,16952 15542,17400 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id26"> + <rect class="BoundingBox" stroke="none" fill="none" x="7097" y="8559" width="3430" height="2328"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10525,8560 C 10525,10165 7710,9178 7237,10472"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 7170,10886 L 7394,10468 7098,10417 7170,10886 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id27"> + <rect class="BoundingBox" stroke="none" fill="none" x="10375" y="8559" width="301" height="2142"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10525,8560 L 10525,10270"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 10525,10700 L 10675,10250 10375,10250 10525,10700 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id28"> + <rect class="BoundingBox" stroke="none" fill="none" x="10524" y="8559" width="6737" height="9028"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10525,8560 C 10525,10457 16948,6057 17110,17154"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 17113,17586 L 17260,17135 16960,17137 17113,17586 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id29"> + <rect class="BoundingBox" stroke="none" fill="none" x="5306" y="14070" width="301" height="841"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5445,14071 C 5445,14701 5452,14431 5459,14481"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 5475,14910 L 5606,14454 5306,14467 5475,14910 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id30"> + <rect class="BoundingBox" stroke="none" fill="none" x="10375" y="14070" width="301" height="841"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10525,14071 L 10525,14480"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 10525,14910 L 10675,14460 10375,14460 10525,14910 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id31"> + <rect class="BoundingBox" stroke="none" fill="none" x="15420" y="18669" width="302" height="1342"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15542,18670 C 15542,19676 15563,19209 15572,19580"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 15575,20010 L 15721,19559 15421,19561 15575,20010 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id32"> + <rect class="BoundingBox" stroke="none" fill="none" x="5474" y="16179" width="3485" height="6528"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5475,16180 C 5475,20935 8606,17874 8808,22246"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 8818,22706 L 8958,22253 8658,22260 8818,22706 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id33"> + <rect class="BoundingBox" stroke="none" fill="none" x="10375" y="16179" width="301" height="6342"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10525,16180 L 10525,22090"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 10525,22520 L 10675,22070 10375,22070 10525,22520 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id34"> + <rect class="BoundingBox" stroke="none" fill="none" x="12232" y="21279" width="3345" height="1428"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15575,21280 C 15575,22210 13025,21651 12379,22332"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 12232,22706 L 12543,22348 12266,22233 12232,22706 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id35"> + <rect class="BoundingBox" stroke="none" fill="none" x="12938" y="2904" width="7822" height="20393"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17480,2905 C 21404,2905 23625,22713 13286,23148"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 12938,23155 L 13391,23295 13385,22995 12938,23155 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id36"> + <rect class="BoundingBox" stroke="none" fill="none" x="10375" y="23789" width="301" height="1342"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10525,23790 L 10525,24700"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 10525,25130 L 10675,24680 10375,24680 10525,25130 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id37"> + <rect class="BoundingBox" stroke="none" fill="none" x="3158" y="12800" width="4576" height="1274"/> + <path fill="rgb(207,231,245)" stroke="none" d="M 5445,12801 C 6741,12801 7731,13076 7731,13436 7731,13796 6741,14071 5445,14071 4149,14071 3159,13796 3159,13436 3159,13076 4149,12801 5445,12801 Z M 3159,12801 L 3159,12801 Z M 7732,14072 L 7732,14072 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 5445,12801 C 6741,12801 7731,13076 7731,13436 7731,13796 6741,14071 5445,14071 4149,14071 3159,13796 3159,13436 3159,13076 4149,12801 5445,12801 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 3159,12801 L 3159,12801 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 7732,14072 L 7732,14072 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="3667" y="13608"/><tspan class="TextPosition" x="3667" y="13608"><tspan fill="rgb(0,0,0)" stroke="none">generate_tables</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.CustomShape"> + <g id="id38"> + <rect class="BoundingBox" stroke="none" fill="none" x="8111" y="12800" width="4830" height="1274"/> + <path fill="rgb(207,231,245)" stroke="none" d="M 10525,12801 C 11893,12801 12938,13076 12938,13436 12938,13796 11893,14071 10525,14071 9157,14071 8112,13796 8112,13436 8112,13076 9157,12801 10525,12801 Z M 8112,12801 L 8112,12801 Z M 12939,14072 L 12939,14072 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 10525,12801 C 11893,12801 12938,13076 12938,13436 12938,13796 11893,14071 10525,14071 9157,14071 8112,13796 8112,13436 8112,13076 9157,12801 10525,12801 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 8112,12801 L 8112,12801 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 12939,14072 L 12939,14072 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="8884" y="13608"/><tspan class="TextPosition" x="8884" y="13608"><tspan fill="rgb(0,0,0)" stroke="none">generate_plots</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id39"> + <rect class="BoundingBox" stroke="none" fill="none" x="5297" y="11952" width="302" height="850"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5477,12371 C 5477,11887 5454,11745 5447,12368"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 5445,12801 L 5597,12352 5297,12350 5445,12801 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id40"> + <rect class="BoundingBox" stroke="none" fill="none" x="10327" y="11987" width="302" height="803"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10478,12359 C 10478,11936 10477,11798 10477,12357"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 10477,12789 L 10627,12339 10327,12339 10477,12789 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id41"> + <rect class="BoundingBox" stroke="none" fill="none" x="12429" y="15544" width="1671" height="2043"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12430,15545 C 13457,15545 13850,16082 13951,17158"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 13970,17586 L 14099,17129 13799,17143 13970,17586 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id42"> + <rect class="BoundingBox" stroke="none" fill="none" x="5474" y="16179" width="7846" height="2006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5475,16180 C 5475,17417 7943,18000 12882,18034"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 13319,18035 L 12870,17883 12868,18183 13319,18035 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.ConnectorShape"> + <g id="id43"> + <rect class="BoundingBox" stroke="none" fill="none" x="15574" y="3539" width="3534" height="14497"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15575,3540 C 15575,4024 17275,3943 18276,7446 19277,10949 19527,16949 18151,17910"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 17764,18035 L 18238,18033 18142,17749 17764,18035 Z"/> + </g> + </g> + <g class="com.sun.star.drawing.LineShape"> + <g id="id44"> + <rect class="BoundingBox" stroke="none" fill="none" x="999" y="999" width="20003" height="6"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1000,1003 L 1053,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1106,1003 L 1159,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1212,1003 L 1265,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1319,1003 L 1372,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1425,1003 L 1478,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1531,1003 L 1584,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1637,1003 L 1690,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1743,1003 L 1796,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1849,1003 L 1903,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1956,1003 L 2009,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2062,1003 L 2115,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2168,1003 L 2221,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2274,1003 L 2327,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2380,1003 L 2433,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2487,1003 L 2540,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2593,1003 L 2646,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2699,1003 L 2752,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2805,1003 L 2858,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2911,1003 L 2964,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3017,1003 L 3071,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3124,1003 L 3177,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3230,1003 L 3283,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3336,1003 L 3389,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3442,1003 L 3495,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3548,1003 L 3601,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3655,1003 L 3708,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3761,1003 L 3814,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3867,1003 L 3920,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3973,1003 L 4026,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4079,1003 L 4132,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4185,1003 L 4239,1003"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4292,1003 L 4345,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4398,1002 L 4451,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4504,1002 L 4557,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4610,1002 L 4663,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4716,1002 L 4769,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4823,1002 L 4876,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4929,1002 L 4982,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5035,1002 L 5088,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5141,1002 L 5194,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5247,1002 L 5300,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5354,1002 L 5407,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5460,1002 L 5513,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5566,1002 L 5619,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5672,1002 L 5725,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5778,1002 L 5831,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5884,1002 L 5938,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5991,1002 L 6044,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6097,1002 L 6150,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6203,1002 L 6256,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6309,1002 L 6362,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6415,1002 L 6468,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6522,1002 L 6575,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6628,1002 L 6681,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6734,1002 L 6787,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6840,1002 L 6893,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6946,1002 L 6999,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7052,1002 L 7106,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7159,1002 L 7212,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7265,1002 L 7318,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7371,1002 L 7424,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7477,1002 L 7530,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7583,1002 L 7636,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7690,1002 L 7743,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7796,1002 L 7849,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7902,1002 L 7955,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8008,1002 L 8061,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8114,1002 L 8167,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8220,1002 L 8274,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8327,1002 L 8380,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8433,1002 L 8486,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8539,1002 L 8592,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8645,1002 L 8698,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8751,1002 L 8804,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8858,1002 L 8911,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8964,1002 L 9017,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9070,1002 L 9123,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9176,1002 L 9229,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9282,1002 L 9335,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9388,1002 L 9442,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9495,1002 L 9548,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9601,1002 L 9654,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9707,1002 L 9760,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9813,1002 L 9866,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9919,1002 L 9972,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10026,1002 L 10079,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10132,1002 L 10185,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10238,1002 L 10291,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10344,1002 L 10397,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10450,1002 L 10503,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10556,1002 L 10610,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10663,1002 L 10716,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10769,1002 L 10822,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10875,1002 L 10928,1002"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10981,1002 L 11034,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11087,1001 L 11140,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11194,1001 L 11247,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11300,1001 L 11353,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11406,1001 L 11459,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11512,1001 L 11565,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11618,1001 L 11671,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11724,1001 L 11778,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11831,1001 L 11884,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11937,1001 L 11990,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12043,1001 L 12096,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12149,1001 L 12202,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12255,1001 L 12308,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12362,1001 L 12415,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12468,1001 L 12521,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12574,1001 L 12627,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12680,1001 L 12733,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12786,1001 L 12839,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12892,1001 L 12946,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12999,1001 L 13052,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13105,1001 L 13158,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13211,1001 L 13264,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13317,1001 L 13370,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13423,1001 L 13477,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13530,1001 L 13583,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13636,1001 L 13689,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13742,1001 L 13795,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13848,1001 L 13901,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13954,1001 L 14007,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14061,1001 L 14114,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14167,1001 L 14220,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14273,1001 L 14326,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14379,1001 L 14432,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14485,1001 L 14538,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14591,1001 L 14645,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14698,1001 L 14751,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14804,1001 L 14857,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14910,1001 L 14963,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15016,1001 L 15069,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15122,1001 L 15175,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15229,1001 L 15282,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15335,1001 L 15388,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15441,1001 L 15494,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15547,1001 L 15600,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15653,1001 L 15706,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15759,1001 L 15813,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15866,1001 L 15919,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15972,1001 L 16025,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16078,1001 L 16131,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16184,1001 L 16237,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16290,1001 L 16343,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16397,1001 L 16450,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16503,1001 L 16556,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16609,1001 L 16662,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16715,1001 L 16768,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16821,1001 L 16874,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16927,1001 L 16981,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17034,1001 L 17087,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17140,1001 L 17193,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17246,1001 L 17299,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17352,1001 L 17405,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17458,1001 L 17511,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17565,1001 L 17618,1001"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17671,1000 L 17724,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17777,1000 L 17830,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17883,1000 L 17936,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17989,1000 L 18042,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18095,1000 L 18149,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18202,1000 L 18255,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18308,1000 L 18361,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18414,1000 L 18467,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18520,1000 L 18573,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18626,1000 L 18679,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18733,1000 L 18786,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18839,1000 L 18892,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18945,1000 L 18998,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19051,1000 L 19104,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19157,1000 L 19210,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19263,1000 L 19317,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19370,1000 L 19423,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19476,1000 L 19529,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19582,1000 L 19635,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19688,1000 L 19741,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19794,1000 L 19847,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19901,1000 L 19954,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20007,1000 L 20060,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20113,1000 L 20166,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20219,1000 L 20272,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20325,1000 L 20378,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20431,1000 L 20485,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20538,1000 L 20591,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20644,1000 L 20697,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20750,1000 L 20803,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20856,1000 L 20909,1000"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20962,1000 L 21000,1000"/> + </g> + </g> + <g class="com.sun.star.drawing.LineShape"> + <g id="id45"> + <rect class="BoundingBox" stroke="none" fill="none" x="999" y="4100" width="20003" height="6"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1000,4104 L 1053,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1106,4104 L 1159,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1212,4104 L 1265,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1319,4104 L 1372,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1425,4104 L 1478,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1531,4104 L 1584,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1637,4104 L 1690,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1743,4104 L 1796,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1849,4104 L 1903,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1956,4104 L 2009,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2062,4104 L 2115,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2168,4104 L 2221,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2274,4104 L 2327,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2380,4104 L 2433,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2487,4104 L 2540,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2593,4104 L 2646,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2699,4104 L 2752,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2805,4104 L 2858,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2911,4104 L 2964,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3017,4104 L 3071,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3124,4104 L 3177,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3230,4104 L 3283,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3336,4104 L 3389,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3442,4104 L 3495,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3548,4104 L 3601,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3655,4104 L 3708,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3761,4104 L 3814,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3867,4104 L 3920,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3973,4104 L 4026,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4079,4104 L 4132,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4185,4104 L 4239,4104"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4292,4104 L 4345,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4398,4103 L 4451,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4504,4103 L 4557,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4610,4103 L 4663,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4716,4103 L 4769,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4823,4103 L 4876,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4929,4103 L 4982,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5035,4103 L 5088,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5141,4103 L 5194,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5247,4103 L 5300,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5354,4103 L 5407,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5460,4103 L 5513,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5566,4103 L 5619,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5672,4103 L 5725,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5778,4103 L 5831,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5884,4103 L 5938,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5991,4103 L 6044,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6097,4103 L 6150,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6203,4103 L 6256,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6309,4103 L 6362,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6415,4103 L 6468,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6522,4103 L 6575,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6628,4103 L 6681,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6734,4103 L 6787,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6840,4103 L 6893,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6946,4103 L 6999,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7052,4103 L 7106,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7159,4103 L 7212,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7265,4103 L 7318,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7371,4103 L 7424,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7477,4103 L 7530,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7583,4103 L 7636,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7690,4103 L 7743,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7796,4103 L 7849,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7902,4103 L 7955,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8008,4103 L 8061,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8114,4103 L 8167,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8220,4103 L 8274,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8327,4103 L 8380,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8433,4103 L 8486,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8539,4103 L 8592,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8645,4103 L 8698,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8751,4103 L 8804,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8858,4103 L 8911,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8964,4103 L 9017,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9070,4103 L 9123,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9176,4103 L 9229,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9282,4103 L 9335,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9388,4103 L 9442,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9495,4103 L 9548,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9601,4103 L 9654,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9707,4103 L 9760,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9813,4103 L 9866,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9919,4103 L 9972,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10026,4103 L 10079,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10132,4103 L 10185,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10238,4103 L 10291,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10344,4103 L 10397,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10450,4103 L 10503,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10556,4103 L 10610,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10663,4103 L 10716,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10769,4103 L 10822,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10875,4103 L 10928,4103"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10981,4103 L 11034,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11087,4102 L 11140,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11194,4102 L 11247,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11300,4102 L 11353,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11406,4102 L 11459,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11512,4102 L 11565,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11618,4102 L 11671,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11724,4102 L 11778,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11831,4102 L 11884,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11937,4102 L 11990,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12043,4102 L 12096,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12149,4102 L 12202,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12255,4102 L 12308,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12362,4102 L 12415,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12468,4102 L 12521,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12574,4102 L 12627,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12680,4102 L 12733,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12786,4102 L 12839,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12892,4102 L 12946,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12999,4102 L 13052,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13105,4102 L 13158,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13211,4102 L 13264,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13317,4102 L 13370,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13423,4102 L 13477,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13530,4102 L 13583,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13636,4102 L 13689,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13742,4102 L 13795,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13848,4102 L 13901,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13954,4102 L 14007,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14061,4102 L 14114,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14167,4102 L 14220,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14273,4102 L 14326,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14379,4102 L 14432,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14485,4102 L 14538,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14591,4102 L 14645,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14698,4102 L 14751,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14804,4102 L 14857,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14910,4102 L 14963,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15016,4102 L 15069,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15122,4102 L 15175,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15229,4102 L 15282,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15335,4102 L 15388,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15441,4102 L 15494,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15547,4102 L 15600,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15653,4102 L 15706,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15759,4102 L 15813,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15866,4102 L 15919,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15972,4102 L 16025,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16078,4102 L 16131,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16184,4102 L 16237,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16290,4102 L 16343,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16397,4102 L 16450,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16503,4102 L 16556,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16609,4102 L 16662,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16715,4102 L 16768,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16821,4102 L 16874,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16927,4102 L 16981,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17034,4102 L 17087,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17140,4102 L 17193,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17246,4102 L 17299,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17352,4102 L 17405,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17458,4102 L 17511,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17565,4102 L 17618,4102"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17671,4101 L 17724,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17777,4101 L 17830,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17883,4101 L 17936,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17989,4101 L 18042,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18095,4101 L 18149,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18202,4101 L 18255,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18308,4101 L 18361,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18414,4101 L 18467,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18520,4101 L 18573,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18626,4101 L 18679,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18733,4101 L 18786,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18839,4101 L 18892,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18945,4101 L 18998,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19051,4101 L 19104,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19157,4101 L 19210,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19263,4101 L 19317,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19370,4101 L 19423,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19476,4101 L 19529,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19582,4101 L 19635,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19688,4101 L 19741,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19794,4101 L 19847,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19901,4101 L 19954,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20007,4101 L 20060,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20113,4101 L 20166,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20219,4101 L 20272,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20325,4101 L 20378,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20431,4101 L 20485,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20538,4101 L 20591,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20644,4101 L 20697,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20750,4101 L 20803,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20856,4101 L 20909,4101"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20962,4101 L 21000,4101"/> + </g> + </g> + <g class="com.sun.star.drawing.LineShape"> + <g id="id46"> + <rect class="BoundingBox" stroke="none" fill="none" x="999" y="12201" width="20003" height="6"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1000,12205 L 1053,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1106,12205 L 1159,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1212,12205 L 1265,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1319,12205 L 1372,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1425,12205 L 1478,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1531,12205 L 1584,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1637,12205 L 1690,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1743,12205 L 1796,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1849,12205 L 1903,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1956,12205 L 2009,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2062,12205 L 2115,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2168,12205 L 2221,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2274,12205 L 2327,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2380,12205 L 2433,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2487,12205 L 2540,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2593,12205 L 2646,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2699,12205 L 2752,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2805,12205 L 2858,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2911,12205 L 2964,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3017,12205 L 3071,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3124,12205 L 3177,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3230,12205 L 3283,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3336,12205 L 3389,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3442,12205 L 3495,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3548,12205 L 3601,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3655,12205 L 3708,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3761,12205 L 3814,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3867,12205 L 3920,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3973,12205 L 4026,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4079,12205 L 4132,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4185,12205 L 4239,12205"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4292,12205 L 4345,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4398,12204 L 4451,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4504,12204 L 4557,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4610,12204 L 4663,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4716,12204 L 4769,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4823,12204 L 4876,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4929,12204 L 4982,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5035,12204 L 5088,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5141,12204 L 5194,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5247,12204 L 5300,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5354,12204 L 5407,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5460,12204 L 5513,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5566,12204 L 5619,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5672,12204 L 5725,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5778,12204 L 5831,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5884,12204 L 5938,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5991,12204 L 6044,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6097,12204 L 6150,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6203,12204 L 6256,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6309,12204 L 6362,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6415,12204 L 6468,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6522,12204 L 6575,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6628,12204 L 6681,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6734,12204 L 6787,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6840,12204 L 6893,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6946,12204 L 6999,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7052,12204 L 7106,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7159,12204 L 7212,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7265,12204 L 7318,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7371,12204 L 7424,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7477,12204 L 7530,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7583,12204 L 7636,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7690,12204 L 7743,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7796,12204 L 7849,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7902,12204 L 7955,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8008,12204 L 8061,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8114,12204 L 8167,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8220,12204 L 8274,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8327,12204 L 8380,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8433,12204 L 8486,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8539,12204 L 8592,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8645,12204 L 8698,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8751,12204 L 8804,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8858,12204 L 8911,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8964,12204 L 9017,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9070,12204 L 9123,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9176,12204 L 9229,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9282,12204 L 9335,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9388,12204 L 9442,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9495,12204 L 9548,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9601,12204 L 9654,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9707,12204 L 9760,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9813,12204 L 9866,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9919,12204 L 9972,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10026,12204 L 10079,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10132,12204 L 10185,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10238,12204 L 10291,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10344,12204 L 10397,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10450,12204 L 10503,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10556,12204 L 10610,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10663,12204 L 10716,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10769,12204 L 10822,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10875,12204 L 10928,12204"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10981,12204 L 11034,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11087,12203 L 11140,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11194,12203 L 11247,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11300,12203 L 11353,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11406,12203 L 11459,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11512,12203 L 11565,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11618,12203 L 11671,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11724,12203 L 11778,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11831,12203 L 11884,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11937,12203 L 11990,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12043,12203 L 12096,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12149,12203 L 12202,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12255,12203 L 12308,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12362,12203 L 12415,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12468,12203 L 12521,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12574,12203 L 12627,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12680,12203 L 12733,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12786,12203 L 12839,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12892,12203 L 12946,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12999,12203 L 13052,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13105,12203 L 13158,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13211,12203 L 13264,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13317,12203 L 13370,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13423,12203 L 13477,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13530,12203 L 13583,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13636,12203 L 13689,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13742,12203 L 13795,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13848,12203 L 13901,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13954,12203 L 14007,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14061,12203 L 14114,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14167,12203 L 14220,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14273,12203 L 14326,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14379,12203 L 14432,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14485,12203 L 14538,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14591,12203 L 14645,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14698,12203 L 14751,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14804,12203 L 14857,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14910,12203 L 14963,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15016,12203 L 15069,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15122,12203 L 15175,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15229,12203 L 15282,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15335,12203 L 15388,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15441,12203 L 15494,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15547,12203 L 15600,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15653,12203 L 15706,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15759,12203 L 15813,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15866,12203 L 15919,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15972,12203 L 16025,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16078,12203 L 16131,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16184,12203 L 16237,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16290,12203 L 16343,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16397,12203 L 16450,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16503,12203 L 16556,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16609,12203 L 16662,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16715,12203 L 16768,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16821,12203 L 16874,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16927,12203 L 16981,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17034,12203 L 17087,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17140,12203 L 17193,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17246,12203 L 17299,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17352,12203 L 17405,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17458,12203 L 17511,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17565,12203 L 17618,12203"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17671,12202 L 17724,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17777,12202 L 17830,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17883,12202 L 17936,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17989,12202 L 18042,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18095,12202 L 18149,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18202,12202 L 18255,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18308,12202 L 18361,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18414,12202 L 18467,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18520,12202 L 18573,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18626,12202 L 18679,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18733,12202 L 18786,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18839,12202 L 18892,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18945,12202 L 18998,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19051,12202 L 19104,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19157,12202 L 19210,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19263,12202 L 19317,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19370,12202 L 19423,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19476,12202 L 19529,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19582,12202 L 19635,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19688,12202 L 19741,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19794,12202 L 19847,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19901,12202 L 19954,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20007,12202 L 20060,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20113,12202 L 20166,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20219,12202 L 20272,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20325,12202 L 20378,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20431,12202 L 20485,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20538,12202 L 20591,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20644,12202 L 20697,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20750,12202 L 20803,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20856,12202 L 20909,12202"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20962,12202 L 21000,12202"/> + </g> + </g> + <g class="com.sun.star.drawing.LineShape"> + <g id="id47"> + <rect class="BoundingBox" stroke="none" fill="none" x="999" y="21902" width="20003" height="6"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1000,21906 L 1053,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1106,21906 L 1159,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1212,21906 L 1265,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1319,21906 L 1372,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1425,21906 L 1478,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1531,21906 L 1584,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1637,21906 L 1690,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1743,21906 L 1796,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1849,21906 L 1903,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1956,21906 L 2009,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2062,21906 L 2115,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2168,21906 L 2221,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2274,21906 L 2327,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2380,21906 L 2433,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2487,21906 L 2540,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2593,21906 L 2646,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2699,21906 L 2752,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2805,21906 L 2858,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2911,21906 L 2964,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3017,21906 L 3071,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3124,21906 L 3177,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3230,21906 L 3283,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3336,21906 L 3389,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3442,21906 L 3495,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3548,21906 L 3601,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3655,21906 L 3708,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3761,21906 L 3814,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3867,21906 L 3920,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3973,21906 L 4026,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4079,21906 L 4132,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4185,21906 L 4239,21906"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4292,21906 L 4345,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4398,21905 L 4451,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4504,21905 L 4557,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4610,21905 L 4663,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4716,21905 L 4769,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4823,21905 L 4876,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4929,21905 L 4982,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5035,21905 L 5088,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5141,21905 L 5194,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5247,21905 L 5300,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5354,21905 L 5407,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5460,21905 L 5513,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5566,21905 L 5619,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5672,21905 L 5725,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5778,21905 L 5831,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5884,21905 L 5938,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5991,21905 L 6044,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6097,21905 L 6150,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6203,21905 L 6256,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6309,21905 L 6362,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6415,21905 L 6468,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6522,21905 L 6575,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6628,21905 L 6681,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6734,21905 L 6787,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6840,21905 L 6893,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6946,21905 L 6999,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7052,21905 L 7106,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7159,21905 L 7212,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7265,21905 L 7318,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7371,21905 L 7424,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7477,21905 L 7530,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7583,21905 L 7636,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7690,21905 L 7743,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7796,21905 L 7849,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7902,21905 L 7955,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8008,21905 L 8061,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8114,21905 L 8167,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8220,21905 L 8274,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8327,21905 L 8380,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8433,21905 L 8486,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8539,21905 L 8592,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8645,21905 L 8698,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8751,21905 L 8804,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8858,21905 L 8911,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8964,21905 L 9017,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9070,21905 L 9123,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9176,21905 L 9229,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9282,21905 L 9335,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9388,21905 L 9442,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9495,21905 L 9548,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9601,21905 L 9654,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9707,21905 L 9760,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9813,21905 L 9866,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9919,21905 L 9972,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10026,21905 L 10079,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10132,21905 L 10185,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10238,21905 L 10291,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10344,21905 L 10397,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10450,21905 L 10503,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10556,21905 L 10610,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10663,21905 L 10716,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10769,21905 L 10822,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10875,21905 L 10928,21905"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10981,21905 L 11034,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11087,21904 L 11140,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11194,21904 L 11247,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11300,21904 L 11353,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11406,21904 L 11459,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11512,21904 L 11565,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11618,21904 L 11671,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11724,21904 L 11778,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11831,21904 L 11884,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11937,21904 L 11990,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12043,21904 L 12096,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12149,21904 L 12202,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12255,21904 L 12308,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12362,21904 L 12415,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12468,21904 L 12521,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12574,21904 L 12627,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12680,21904 L 12733,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12786,21904 L 12839,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12892,21904 L 12946,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12999,21904 L 13052,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13105,21904 L 13158,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13211,21904 L 13264,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13317,21904 L 13370,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13423,21904 L 13477,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13530,21904 L 13583,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13636,21904 L 13689,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13742,21904 L 13795,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13848,21904 L 13901,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13954,21904 L 14007,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14061,21904 L 14114,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14167,21904 L 14220,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14273,21904 L 14326,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14379,21904 L 14432,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14485,21904 L 14538,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14591,21904 L 14645,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14698,21904 L 14751,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14804,21904 L 14857,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14910,21904 L 14963,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15016,21904 L 15069,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15122,21904 L 15175,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15229,21904 L 15282,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15335,21904 L 15388,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15441,21904 L 15494,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15547,21904 L 15600,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15653,21904 L 15706,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15759,21904 L 15813,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15866,21904 L 15919,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15972,21904 L 16025,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16078,21904 L 16131,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16184,21904 L 16237,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16290,21904 L 16343,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16397,21904 L 16450,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16503,21904 L 16556,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16609,21904 L 16662,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16715,21904 L 16768,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16821,21904 L 16874,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16927,21904 L 16981,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17034,21904 L 17087,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17140,21904 L 17193,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17246,21904 L 17299,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17352,21904 L 17405,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17458,21904 L 17511,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17565,21904 L 17618,21904"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17671,21903 L 17724,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17777,21903 L 17830,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17883,21903 L 17936,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17989,21903 L 18042,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18095,21903 L 18149,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18202,21903 L 18255,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18308,21903 L 18361,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18414,21903 L 18467,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18520,21903 L 18573,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18626,21903 L 18679,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18733,21903 L 18786,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18839,21903 L 18892,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18945,21903 L 18998,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19051,21903 L 19104,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19157,21903 L 19210,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19263,21903 L 19317,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19370,21903 L 19423,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19476,21903 L 19529,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19582,21903 L 19635,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19688,21903 L 19741,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19794,21903 L 19847,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19901,21903 L 19954,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20007,21903 L 20060,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20113,21903 L 20166,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20219,21903 L 20272,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20325,21903 L 20378,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20431,21903 L 20485,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20538,21903 L 20591,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20644,21903 L 20697,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20750,21903 L 20803,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20856,21903 L 20909,21903"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20962,21903 L 21000,21903"/> + </g> + </g> + <g class="com.sun.star.drawing.LineShape"> + <g id="id48"> + <rect class="BoundingBox" stroke="none" fill="none" x="999" y="27003" width="20003" height="6"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1000,27007 L 1053,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1106,27007 L 1159,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1212,27007 L 1265,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1319,27007 L 1372,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1425,27007 L 1478,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1531,27007 L 1584,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1637,27007 L 1690,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1743,27007 L 1796,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1849,27007 L 1903,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 1956,27007 L 2009,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2062,27007 L 2115,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2168,27007 L 2221,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2274,27007 L 2327,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2380,27007 L 2433,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2487,27007 L 2540,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2593,27007 L 2646,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2699,27007 L 2752,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2805,27007 L 2858,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 2911,27007 L 2964,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3017,27007 L 3071,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3124,27007 L 3177,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3230,27007 L 3283,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3336,27007 L 3389,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3442,27007 L 3495,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3548,27007 L 3601,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3655,27007 L 3708,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3761,27007 L 3814,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3867,27007 L 3920,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 3973,27007 L 4026,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4079,27007 L 4132,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4185,27007 L 4239,27007"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4292,27007 L 4345,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4398,27006 L 4451,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4504,27006 L 4557,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4610,27006 L 4663,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4716,27006 L 4769,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4823,27006 L 4876,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 4929,27006 L 4982,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5035,27006 L 5088,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5141,27006 L 5194,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5247,27006 L 5300,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5354,27006 L 5407,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5460,27006 L 5513,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5566,27006 L 5619,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5672,27006 L 5725,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5778,27006 L 5831,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5884,27006 L 5938,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 5991,27006 L 6044,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6097,27006 L 6150,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6203,27006 L 6256,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6309,27006 L 6362,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6415,27006 L 6468,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6522,27006 L 6575,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6628,27006 L 6681,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6734,27006 L 6787,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6840,27006 L 6893,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 6946,27006 L 6999,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7052,27006 L 7106,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7159,27006 L 7212,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7265,27006 L 7318,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7371,27006 L 7424,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7477,27006 L 7530,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7583,27006 L 7636,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7690,27006 L 7743,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7796,27006 L 7849,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 7902,27006 L 7955,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8008,27006 L 8061,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8114,27006 L 8167,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8220,27006 L 8274,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8327,27006 L 8380,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8433,27006 L 8486,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8539,27006 L 8592,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8645,27006 L 8698,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8751,27006 L 8804,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8858,27006 L 8911,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 8964,27006 L 9017,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9070,27006 L 9123,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9176,27006 L 9229,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9282,27006 L 9335,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9388,27006 L 9442,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9495,27006 L 9548,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9601,27006 L 9654,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9707,27006 L 9760,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9813,27006 L 9866,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 9919,27006 L 9972,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10026,27006 L 10079,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10132,27006 L 10185,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10238,27006 L 10291,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10344,27006 L 10397,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10450,27006 L 10503,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10556,27006 L 10610,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10663,27006 L 10716,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10769,27006 L 10822,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10875,27006 L 10928,27006"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 10981,27006 L 11034,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11087,27005 L 11140,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11194,27005 L 11247,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11300,27005 L 11353,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11406,27005 L 11459,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11512,27005 L 11565,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11618,27005 L 11671,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11724,27005 L 11778,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11831,27005 L 11884,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 11937,27005 L 11990,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12043,27005 L 12096,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12149,27005 L 12202,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12255,27005 L 12308,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12362,27005 L 12415,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12468,27005 L 12521,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12574,27005 L 12627,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12680,27005 L 12733,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12786,27005 L 12839,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12892,27005 L 12946,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 12999,27005 L 13052,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13105,27005 L 13158,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13211,27005 L 13264,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13317,27005 L 13370,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13423,27005 L 13477,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13530,27005 L 13583,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13636,27005 L 13689,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13742,27005 L 13795,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13848,27005 L 13901,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 13954,27005 L 14007,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14061,27005 L 14114,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14167,27005 L 14220,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14273,27005 L 14326,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14379,27005 L 14432,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14485,27005 L 14538,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14591,27005 L 14645,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14698,27005 L 14751,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14804,27005 L 14857,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 14910,27005 L 14963,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15016,27005 L 15069,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15122,27005 L 15175,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15229,27005 L 15282,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15335,27005 L 15388,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15441,27005 L 15494,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15547,27005 L 15600,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15653,27005 L 15706,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15759,27005 L 15813,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15866,27005 L 15919,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 15972,27005 L 16025,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16078,27005 L 16131,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16184,27005 L 16237,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16290,27005 L 16343,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16397,27005 L 16450,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16503,27005 L 16556,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16609,27005 L 16662,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16715,27005 L 16768,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16821,27005 L 16874,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 16927,27005 L 16981,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17034,27005 L 17087,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17140,27005 L 17193,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17246,27005 L 17299,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17352,27005 L 17405,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17458,27005 L 17511,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17565,27005 L 17618,27005"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17671,27004 L 17724,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17777,27004 L 17830,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17883,27004 L 17936,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 17989,27004 L 18042,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18095,27004 L 18149,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18202,27004 L 18255,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18308,27004 L 18361,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18414,27004 L 18467,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18520,27004 L 18573,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18626,27004 L 18679,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18733,27004 L 18786,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18839,27004 L 18892,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 18945,27004 L 18998,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19051,27004 L 19104,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19157,27004 L 19210,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19263,27004 L 19317,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19370,27004 L 19423,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19476,27004 L 19529,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19582,27004 L 19635,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19688,27004 L 19741,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19794,27004 L 19847,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 19901,27004 L 19954,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20007,27004 L 20060,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20113,27004 L 20166,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20219,27004 L 20272,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20325,27004 L 20378,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20431,27004 L 20485,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20538,27004 L 20591,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20644,27004 L 20697,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20750,27004 L 20803,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20856,27004 L 20909,27004"/> + <path fill="none" stroke="rgb(0,0,0)" d="M 20962,27004 L 21000,27004"/> + </g> + </g> + <g class="com.sun.star.drawing.TextShape"> + <g id="id49"> + <rect class="BoundingBox" stroke="none" fill="none" x="1000" y="1054" width="5081" height="807"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="1250" y="1628"/><tspan class="TextPosition" x="1250" y="1628"><tspan fill="rgb(0,0,0)" stroke="none">sL1 - Data</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.TextShape"> + <g id="id50"> + <rect class="BoundingBox" stroke="none" fill="none" x="1000" y="9054" width="4827" height="1362"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="1250" y="9628"/><tspan class="TextPosition" x="1250" y="9628"><tspan fill="rgb(0,0,0)" stroke="none">sL2 - Data </tspan></tspan><tspan class="TextPosition" x="1250" y="10183"/><tspan class="TextPosition" x="1250" y="10183"><tspan fill="rgb(0,0,0)" stroke="none">processing</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.TextShape"> + <g id="id51"> + <rect class="BoundingBox" stroke="none" fill="none" x="1000" y="20254" width="5081" height="1362"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="1250" y="20828"/><tspan class="TextPosition" x="1250" y="20828"><tspan fill="rgb(0,0,0)" stroke="none">sL3 - Data </tspan></tspan><tspan class="TextPosition" x="1250" y="21383"/><tspan class="TextPosition" x="1250" y="21383"><tspan fill="rgb(0,0,0)" stroke="none">presentation</tspan></tspan></tspan></text> + </g> + </g> + <g class="com.sun.star.drawing.TextShape"> + <g id="id52"> + <rect class="BoundingBox" stroke="none" fill="none" x="1000" y="25054" width="5081" height="1362"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="494px" font-weight="400"><tspan class="TextPosition" x="1250" y="25628"/><tspan class="TextPosition" x="1250" y="25628"><tspan fill="rgb(0,0,0)" stroke="none">sL4 - Report </tspan></tspan><tspan class="TextPosition" x="1250" y="26183"/><tspan class="TextPosition" x="1250" y="26183"><tspan fill="rgb(0,0,0)" stroke="none">generation</tspan></tspan></tspan></text> + </g> + </g> + </g> + </g> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/resources/tools/presentation/doc/pal_lld.rst b/resources/tools/presentation/doc/pal_lld.rst new file mode 100644 index 0000000000..9c2446ea91 --- /dev/null +++ b/resources/tools/presentation/doc/pal_lld.rst @@ -0,0 +1,1228 @@ +=================================================== +Presentation and Analytics Layer - Low Level Design +=================================================== + +Overview +-------- + +The presentation and analytics layer (PAL) is the fourth layer of CSIT +hierarchy. The model of presentation and analytics layer consists of four +sub-layers, bottom up: + + - sL1 - Data - input data to be processed: + + - Static content - .rst text files, .svg static figures, and other files + stored in the CSIT git repository. + - Data to process - .xml files generated by Jenkins jobs executing tests, + stored as robot results files (output.xml). + - Specification - .yaml file with the models of report elements (tables, + plots, layout, ...) generated by this tool. There is also the configuration + of the tool and the specification of input data (jobs and builds). + + - sL2 - Data processing + + - The data are read from the specified input files (.xml) and stored as + multi-indexed `pandas.Series <https://pandas.pydata.org/pandas-docs/stable/ + generated/pandas.Series.html>`_. + - This layer provides also interface to input data and filtering of the input + data. + + - sL3 - Data presentation - This layer generates the elements specified in the + specification file: + + - Tables: .csv files linked to static .rst files. + - Plots: .html files generated using plot.ly linked to static .rst files. + + - sL4 - Report generation - Sphinx generates required formats and versions: + + - formats: html, pdf + - versions: minimal, full (TODO: define the names and scope of versions) + + +Data +---- + +Report Specification +```````````````````` + +The report specification file defines which data is used and which outputs are +generated. It is human readable and structured. It is easy to add / remove / +change items. The specification includes: + + - Specification of the environment. + - Configuration of debug mode (optional). + - Specification of input data (jobs, builds, files, ...). + - Specification of the output. + - What and how is generated: + - What: plots, tables. + - How: specification of all properties and parameters. + - .yaml format. + +Structure of the specification file +''''''''''''''''''''''''''''''''''' + +The specification file is organized as a list of dictionaries distinguished by +the type: + +:: + + - + type: "environment" + - + type: "debug" + - + type: "static" + - + type: "input" + - + type: "output" + - + type: "table" + - + type: "plot" + - + type: "file" + +Each type represents a section. The sections "environment", "debug", "static", +"input" and "output" are listed only once in the specification; "table", "file" +and "plot" can be there multiple times. + +Sections "debug", "table", "file" and "plot" are optional. + +Table(s), files(s) and plot(s) are referred as "elements" in this text. It is +possible to define and implement other elements if needed. + + +Section: Environment +'''''''''''''''''''' + +This section has the following parts: + + - type: "environment" - says that this is the section "environment". + - configuration - configuration of the PAL. + - paths - paths used by the PAL. + - urls - urls pointing to the data sources. + - make-dirs - a list of the directories to be created by the PAL while + preparing the environment. + - remove-dirs - a list of the directories to be removed while cleaning the + environment. + - build-dirs - a list of the directories where the results are stored. + +The structure of the section "Environment" is as follows (example): +:: + + - + type: "environment" + configuration: + # Debug mode: + # - Skip: + # - Download of input data files + # - Do: + # - Read data from given zip / xml files + # - Set the configuration as it is done in normal mode + # If the section "type: debug" is missing, CFG[DEBUG] is set to 0. + CFG[DEBUG]: 0 + + paths: + # Top level directories: + ## Working directory + DIR[WORKING]: "_tmp" + ## Build directories + DIR[BUILD,HTML]: "_build" + DIR[BUILD,LATEX]: "_build_latex" + + # Static .rst files + DIR[RST]: "../../../docs/report" + + # Working directories + ## Input data files (.zip, .xml) + DIR[WORKING,DATA]: "{DIR[WORKING]}/data" + ## Static source files from git + DIR[WORKING,SRC]: "{DIR[WORKING]}/src" + DIR[WORKING,SRC,STATIC]: "{DIR[WORKING,SRC]}/_static" + + # Static html content + DIR[STATIC]: "{DIR[BUILD,HTML]}/_static" + DIR[STATIC,VPP]: "{DIR[STATIC]}/vpp" + DIR[STATIC,DPDK]: "{DIR[STATIC]}/dpdk" + DIR[STATIC,ARCH]: "{DIR[STATIC]}/archive" + + # Detailed test results + DIR[DTR]: "{DIR[WORKING,SRC]}/detailed_test_results" + DIR[DTR,PERF,DPDK]: "{DIR[DTR]}/dpdk_performance_results" + DIR[DTR,PERF,VPP]: "{DIR[DTR]}/vpp_performance_results" + DIR[DTR,PERF,HC]: "{DIR[DTR]}/honeycomb_performance_results" + DIR[DTR,FUNC,VPP]: "{DIR[DTR]}/vpp_functional_results" + DIR[DTR,FUNC,HC]: "{DIR[DTR]}/honeycomb_functional_results" + DIR[DTR,FUNC,NSHSFC]: "{DIR[DTR]}/nshsfc_functional_results" + DIR[DTR,PERF,VPP,IMPRV]: "{DIR[WORKING,SRC]}/vpp_performance_tests/performance_improvements" + + # Detailed test configurations + DIR[DTC]: "{DIR[WORKING,SRC]}/test_configuration" + DIR[DTC,PERF,VPP]: "{DIR[DTC]}/vpp_performance_configuration" + DIR[DTC,FUNC,VPP]: "{DIR[DTC]}/vpp_functional_configuration" + + # Detailed tests operational data + DIR[DTO]: "{DIR[WORKING,SRC]}/test_operational_data" + DIR[DTO,PERF,VPP]: "{DIR[DTO]}/vpp_performance_operational_data" + + # .css patch file to fix tables generated by Sphinx + DIR[CSS_PATCH_FILE]: "{DIR[STATIC]}/theme_overrides.css" + DIR[CSS_PATCH_FILE2]: "{DIR[WORKING,SRC,STATIC]}/theme_overrides.css" + + urls: + URL[JENKINS,CSIT]: "https://jenkins.fd.io/view/csit/job" + URL[JENKINS,HC]: "https://jenkins.fd.io/view/hc2vpp/job" + + make-dirs: + # List the directories which are created while preparing the environment. + # All directories MUST be defined in "paths" section. + - "DIR[WORKING,DATA]" + - "DIR[STATIC,VPP]" + - "DIR[STATIC,DPDK]" + - "DIR[STATIC,ARCH]" + - "DIR[BUILD,LATEX]" + - "DIR[WORKING,SRC]" + - "DIR[WORKING,SRC,STATIC]" + + remove-dirs: + # List the directories which are deleted while cleaning the environment. + # All directories MUST be defined in "paths" section. + #- "DIR[BUILD,HTML]" + + build-dirs: + # List the directories where the results (build) is stored. + # All directories MUST be defined in "paths" section. + - "DIR[BUILD,HTML]" + - "DIR[BUILD,LATEX]" + +It is possible to use defined items in the definition of other items, e.g.: + +:: + + DIR[WORKING,DATA]: "{DIR[WORKING]}/data" + +will be automatically changed to + +:: + + DIR[WORKING,DATA]: "_tmp/data" + + +Section: Debug mode +''''''''''''''''''' + +This section is optional as it configures the debug mode. It is used if one +does not want to download input data files and use local files instead. + +If the debug mode is configured, the "input" section is ignored. + +This section has the following parts: + + - type: "debug" - says that this is the section "debug". + - general: + + - input-format - xml or zip. + - extract - if "zip" is defined as the input format, this file is extracted + from the zip file, otherwise this parameter is ignored. + + - builds - list of builds from which the data is used. Must include a job + name as a key and then a list of builds and their output files. + +The structure of the section "Debug" is as follows (example): + +:: + + - + type: "debug" + general: + input-format: "zip" # zip or xml + extract: "robot-plugin/output.xml" # Only for zip + builds: + # The files must be in the directory DIR[WORKING,DATA] + csit-dpdk-perf-1707-all: + - + build: 10 + file: "csit-dpdk-perf-1707-all__10.xml" + - + build: 9 + file: "csit-dpdk-perf-1707-all__9.xml" + csit-nsh_sfc-verify-func-1707-ubuntu1604-virl: + - + build: 2 + file: "csit-nsh_sfc-verify-func-1707-ubuntu1604-virl-2.xml" + csit-vpp-functional-1707-ubuntu1604-virl: + - + build: lastSuccessfulBuild + file: "csit-vpp-functional-1707-ubuntu1604-virl-lastSuccessfulBuild.xml" + hc2vpp-csit-integration-1707-ubuntu1604: + - + build: lastSuccessfulBuild + file: "hc2vpp-csit-integration-1707-ubuntu1604-lastSuccessfulBuild.xml" + csit-vpp-perf-1707-all: + - + build: 16 + file: "csit-vpp-perf-1707-all__16__output.xml" + - + build: 17 + file: "csit-vpp-perf-1707-all__17__output.xml" + + +Section: Static +''''''''''''''' + +This section defines the static content which is stored in git and will be used +as a source to generate the report. + +This section has these parts: + + - type: "static" - says that this section is the "static". + - src-path - path to the static content. + - dst-path - destination path where the static content is copied and then + processed. + +:: + - + type: "static" + src-path: "{DIR[RST]}" + dst-path: "{DIR[WORKING,SRC]}" + + +Section: Input +'''''''''''''' + +This section defines the data used to generate elements. It is mandatory +if the debug mode is not used. + +This section has the following parts: + + - type: "input" - says that this section is the "input". + - general - parameters common to all builds: + + - file-name: file to be downloaded. + - file-format: format of the downloaded file, ".zip" or ".xml" are supported. + - download-path: path to be added to url pointing to the file, e.g.: + "{job}/{build}/robot/report/*zip*/{filename}"; {job}, {build} and + {filename} are replaced by proper values defined in this section. + - extract: file to be extracted from downloaded zip file, e.g.: "output.xml"; + if xml file is downloaded, this parameter is ignored. + + - builds - list of jobs (keys) and numbers of builds which output data will be + downloaded. + +The structure of the section "Input" is as follows (example from 17.07 report): + +:: + + - + type: "input" # Ignored in debug mode + general: + file-name: "robot-plugin.zip" + file-format: ".zip" + download-path: "{job}/{build}/robot/report/*zip*/{filename}" + extract: "robot-plugin/output.xml" + builds: + csit-vpp-perf-1707-all: + - 9 + - 10 + - 13 + - 14 + - 15 + - 16 + - 17 + - 18 + - 19 + - 21 + - 22 + csit-dpdk-perf-1707-all: + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + csit-vpp-functional-1707-ubuntu1604-virl: + - lastSuccessfulBuild + hc2vpp-csit-perf-master-ubuntu1604: + - 8 + - 9 + hc2vpp-csit-integration-1707-ubuntu1604: + - lastSuccessfulBuild + csit-nsh_sfc-verify-func-1707-ubuntu1604-virl: + - 2 + + +Section: Output +''''''''''''''' + +This section specifies which format(s) will be generated (html, pdf) and which +versions will be generated for each format. + +This section has the following parts: + + - type: "output" - says that this section is the "output". + - format: html or pdf. + - version: defined for each format separately. + +The structure of the section "Output" is as follows (example): + +:: + + - + type: "output" + format: + html: + - full + pdf: + - full + - minimal + +TODO: define the names of versions + + +Content of "minimal" version +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +TODO: define the name and content of this version + + +Section: Table +'''''''''''''' + +This section defines a table to be generated. There can be 0 or more "table" +sections. + +This section has the following parts: + + - type: "table" - says that this section defines a table. + - title: Title of the table. + - algorithm: Algorithm which is used to generate the table. The other + parameters in this section must provide all information needed by the used + algorithm. + - template: (optional) a .csv file used as a template while generating the + table. + - output-file-ext: extension of the output file. + - output-file: file which the table will be written to. + - columns: specification of table columns: + + - title: The title used in the table header. + - data: Specification of the data, it has two parts - command and arguments: + + - command: + + - template - take the data from template, arguments: + + - number of column in the template. + + - data - take the data from the input data, arguments: + + - jobs and builds which data will be used. + + - operation - performs an operation with the data already in the table, + arguments: + + - operation to be done, e.g.: mean, stdev, relative_change (compute + the relative change between two columns) and display number of data + samples ~= number of test jobs. The operations are implemented in the + utils.py + TODO: Move from utils,py to e.g. operations.py + - numbers of columns which data will be used (optional). + + - data: Specify the jobs and builds which data is used to generate the table. + - filter: filter based on tags applied on the input data, if "template" is + used, filtering is based on the template. + - parameters: Only these parameters will be put to the output data structure. + +The structure of the section "Table" is as follows (example of +"table_performance_improvements"): + +:: + + - + type: "table" + title: "Performance improvements" + algorithm: "table_performance_improvements" + template: "{DIR[DTR,PERF,VPP,IMPRV]}/tmpl_performance_improvements.csv" + output-file-ext: ".csv" + output-file: "{DIR[DTR,PERF,VPP,IMPRV]}/performance_improvements" + columns: + - + title: "VPP Functionality" + data: "template 1" + - + title: "Test Name" + data: "template 2" + - + title: "VPP-16.09 mean [Mpps]" + data: "template 3" + - + title: "VPP-17.01 mean [Mpps]" + data: "template 4" + - + title: "VPP-17.04 mean [Mpps]" + data: "template 5" + - + title: "VPP-17.07 mean [Mpps]" + data: "data csit-vpp-perf-1707-all mean" + - + title: "VPP-17.07 stdev [Mpps]" + data: "data csit-vpp-perf-1707-all stdev" + - + title: "17.04 to 17.07 change [%]" + data: "operation relative_change 5 4" + data: + csit-vpp-perf-1707-all: + - 9 + - 10 + - 13 + - 14 + - 15 + - 16 + - 17 + - 18 + - 19 + - 21 + filter: "template" + parameters: + - "throughput" + +Example of "table_details" which generates "Detailed Test Results - VPP +Performance Results": + +:: + + - + type: "table" + title: "Detailed Test Results - VPP Performance Results" + algorithm: "table_details" + output-file-ext: ".csv" + output-file: "{DIR[WORKING]}/vpp_performance_results" + columns: + - + title: "Name" + data: "data test_name" + - + title: "Documentation" + data: "data test_documentation" + - + title: "Status" + data: "data test_msg" + data: + csit-vpp-perf-1707-all: + - 17 + filter: "all" + parameters: + - "parent" + - "doc" + - "msg" + +Example of "table_details" which generates "Test configuration - VPP Performance +Test Configs": + +:: + + - + type: "table" + title: "Test configuration - VPP Performance Test Configs" + algorithm: "table_details" + output-file-ext: ".csv" + output-file: "{DIR[WORKING]}/vpp_test_configuration" + columns: + - + title: "Name" + data: "data name" + - + title: "VPP API Test (VAT) Commands History - Commands Used Per Test Case" + data: "data show-run" + data: + csit-vpp-perf-1707-all: + - 17 + filter: "all" + parameters: + - "parent" + - "name" + - "show-run" + + +Section: Plot +''''''''''''' + +This section defines a plot to be generated. There can be 0 or more "plot" +sections. + +This section has these parts: + + - type: "plot" - says that this section defines a plot. + - title: Plot title used in the logs. Title which is displayed is in the + section "layout". + - output-file-type: format of the output file. + - output-file: file which the plot will be written to. + - algorithm: Algorithm used to generate the plot. The other parameters in this + section must provide all information needed by plot.ly to generate the plot. + For example: + + - traces + - layout + + - These parameters are transparently passed to plot.ly. + + - data: Specify the jobs and numbers of builds which data is used to generate + the plot. + - filter: filter applied on the input data. + - parameters: Only these parameters will be put to the output data structure. + +The structure of the section "Plot" is as follows (example of a plot showing +throughput in a chart box-with-whiskers): + +:: + + - + type: "plot" + title: "VPP Performance 64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" + algorithm: "plot_performance_box" + output-file-type: ".html" + output-file: "{DIR[STATIC,VPP]}/64B-1t1c-l2-sel1-ndrdisc" + data: + csit-vpp-perf-1707-all: + - 9 + - 10 + - 13 + - 14 + - 15 + - 16 + - 17 + - 18 + - 19 + - 21 + # Keep this formatting, the filter is enclosed with " (quotation mark) and + # each tag is enclosed with ' (apostrophe). + filter: "'64B' and 'BASE' and 'NDRDISC' and '1T1C' and ('L2BDMACSTAT' or 'L2BDMACLRN' or 'L2XCFWD') and not 'VHOST'" + parameters: + - "throughput" + - "parent" + traces: + hoverinfo: "x+y" + boxpoints: "outliers" + whiskerwidth: 0 + layout: + title: "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" + xaxis: + autorange: True + autotick: False + fixedrange: False + gridcolor: "rgb(238, 238, 238)" + linecolor: "rgb(238, 238, 238)" + linewidth: 1 + showgrid: True + showline: True + showticklabels: True + tickcolor: "rgb(238, 238, 238)" + tickmode: "linear" + title: "Indexed Test Cases" + zeroline: False + yaxis: + gridcolor: "rgb(238, 238, 238)'" + hoverformat: ".4s" + linecolor: "rgb(238, 238, 238)" + linewidth: 1 + range: [] + showgrid: True + showline: True + showticklabels: True + tickcolor: "rgb(238, 238, 238)" + title: "Packets Per Second [pps]" + zeroline: False + boxmode: "group" + boxgroupgap: 0.5 + autosize: False + margin: + t: 50 + b: 20 + l: 50 + r: 20 + showlegend: True + legend: + orientation: "h" + width: 700 + height: 1000 + +The structure of the section "Plot" is as follows (example of a plot showing +latency in a box chart): + +:: + + - + type: "plot" + title: "VPP Latency 64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" + algorithm: "plot_latency_box" + output-file-type: ".html" + output-file: "{DIR[STATIC,VPP]}/64B-1t1c-l2-sel1-ndrdisc-lat50" + data: + csit-vpp-perf-1707-all: + - 9 + - 10 + - 13 + - 14 + - 15 + - 16 + - 17 + - 18 + - 19 + - 21 + filter: "'64B' and 'BASE' and 'NDRDISC' and '1T1C' and ('L2BDMACSTAT' or 'L2BDMACLRN' or 'L2XCFWD') and not 'VHOST'" + parameters: + - "latency" + - "parent" + traces: + boxmean: False + layout: + title: "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" + xaxis: + autorange: True + autotick: False + fixedrange: False + gridcolor: "rgb(238, 238, 238)" + linecolor: "rgb(238, 238, 238)" + linewidth: 1 + showgrid: True + showline: True + showticklabels: True + tickcolor: "rgb(238, 238, 238)" + tickmode: "linear" + title: "Indexed Test Cases" + zeroline: False + yaxis: + gridcolor: "rgb(238, 238, 238)'" + hoverformat: "" + linecolor: "rgb(238, 238, 238)" + linewidth: 1 + range: [] + showgrid: True + showline: True + showticklabels: True + tickcolor: "rgb(238, 238, 238)" + title: "Latency min/avg/max [uSec]" + zeroline: False + boxmode: "group" + boxgroupgap: 0.5 + autosize: False + margin: + t: 50 + b: 20 + l: 50 + r: 20 + showlegend: True + legend: + orientation: "h" + width: 700 + height: 1000 + + +Section: file +''''''''''''' + +This section defines a file to be generated. There can be 0 or more "file" +sections. + +This section has the following parts: + + - type: "file" - says that this section defines a file. + - title: Title of the table. + - algorithm: Algorithm which is used to generate the file. The other + parameters in this section must provide all information needed by the used + algorithm. + - output-file-ext: extension of the output file. + - output-file: file which the file will be written to. + - file-header: The header of the generated .rst file. + - dir-tables: The directory with the tables. + - data: Specify the jobs and builds which data is used to generate the table. + - filter: filter based on tags applied on the input data, if "all" is + used, no filtering is done. + - parameters: Only these parameters will be put to the output data structure. + - chapters: the hierarchy of chapters in the generated file. + - start-level: the level of the the top-level chapter. + +The structure of the section "file" is as follows (example): + +:: + + - + type: "file" + title: "VPP Performance Results" + algorithm: "file_test_results" + output-file-ext: ".rst" + output-file: "{DIR[DTR,PERF,VPP]}/vpp_performance_results" + file-header: "\n.. |br| raw:: html\n\n <br />\n\n\n.. |prein| raw:: html\n\n <pre>\n\n\n.. |preout| raw:: html\n\n </pre>\n\n" + dir-tables: "{DIR[DTR,PERF,VPP]}" + data: + csit-vpp-perf-1707-all: + - 22 + filter: "all" + parameters: + - "name" + - "doc" + - "level" + data-start-level: 2 # 0, 1, 2, ... + chapters-start-level: 2 # 0, 1, 2, ... + + +Static content +`````````````` + + - Manually created / edited files. + - .rst files, static .csv files, static pictures (.svg), ... + - Stored in CSIT git repository. + +No more details about the static content in this document. + + +Data to process +``````````````` + +The PAL processes tests results and other information produced by Jenkins jobs. +The data are now stored as robot results in Jenkins (TODO: store the data in +nexus) either as .zip and / or .xml files. + + +Data processing +--------------- + +As the first step, the data are downloaded and stored locally (typically on a +Jenkins slave). If .zip files are used, the given .xml files are extracted for +further processing. + +Parsing of the .xml files is performed by a class derived from +"robot.api.ResultVisitor", only necessary methods are overridden. All and only +necessary data is extracted from .xml file and stored in a structured form. + +The parsed data are stored as the multi-indexed pandas.Series data type. Its +structure is as follows: + +:: + + <job name> + <build> + <metadata> + <suites> + <tests> + +"job name", "build", "metadata", "suites", "tests" are indexes to access the +data. For example: + +:: + + data = + + job 1 name: + build 1: + metadata: metadata + suites: suites + tests: tests + ... + build N: + metadata: metadata + suites: suites + tests: tests + ... + job M name: + build 1: + metadata: metadata + suites: suites + tests: tests + ... + build N: + metadata: metadata + suites: suites + tests: tests + +Using indexes data["job 1 name"]["build 1"]["tests"] (e.g.: +data["csit-vpp-perf-1704-all"]["17"]["tests"]) we get a list of all tests with +all tests data. + +Data will not be accessible directly using indexes, but using getters and +filters. + +**Structure of metadata:** + +:: + + "metadata": { + "version": "VPP version", + "job": "Jenkins job name" + "build": "Information about the build" + }, + +**Structure of suites:** + +:: + + "suites": { + "Suite name 1": { + "doc": "Suite 1 documentation" + "parent": "Suite 1 parent" + } + "Suite name N": { + "doc": "Suite N documentation" + "parent": "Suite N parent" + } + +**Structure of tests:** + +Performance tests: + +:: + + "tests": { + "ID": { + "name": "Test name", + "parent": "Name of the parent of the test", + "doc": "Test documentation" + "msg": "Test message" + "tags": ["tag 1", "tag 2", "tag n"], + "type": "PDR" | "NDR", + "throughput": { + "value": int, + "unit": "pps" | "bps" | "percentage" + }, + "latency": { + "direction1": { + "100": { + "min": int, + "avg": int, + "max": int + }, + "50": { # Only for NDR + "min": int, + "avg": int, + "max": int + }, + "10": { # Only for NDR + "min": int, + "avg": int, + "max": int + } + }, + "direction2": { + "100": { + "min": int, + "avg": int, + "max": int + }, + "50": { # Only for NDR + "min": int, + "avg": int, + "max": int + }, + "10": { # Only for NDR + "min": int, + "avg": int, + "max": int + } + } + }, + "lossTolerance": "lossTolerance" # Only for PDR + "vat-history": "DUT1 and DUT2 VAT History" + }, + "show-run": "Show Run" + }, + "ID" { + # next test + } + +Functional tests: + +:: + + "tests": { + "ID": { + "name": "Test name", + "parent": "Name of the parent of the test", + "doc": "Test documentation" + "msg": "Test message" + "tags": ["tag 1", "tag 2", "tag n"], + "vat-history": "DUT1 and DUT2 VAT History" + "show-run": "Show Run" + "status": "PASS" | "FAIL" + }, + "ID" { + # next test + } + } + +Note: ID is the lowercase full path to the test. + + +Data filtering +`````````````` + +The first step when generating an element is getting the data needed to +construct the element. The data are filtered from the processed input data. + +The data filtering is based on: + + - job name(s). + - build number(s). + - tag(s). + - required data - only this data is included in the output. + +WARNING: The filtering is based on tags, so be careful with tagging. + +For example, the element which specification includes: + +:: + + data: + csit-vpp-perf-1707-all: + - 9 + - 10 + - 13 + - 14 + - 15 + - 16 + - 17 + - 18 + - 19 + - 21 + filter: + - "'64B' and 'BASE' and 'NDRDISC' and '1T1C' and ('L2BDMACSTAT' or 'L2BDMACLRN' or 'L2XCFWD') and not 'VHOST'" + +will be constructed using data from the job "csit-vpp-perf-1707-all", for all listed +builds and the tests with the list of tags matching the filter conditions. + +The output data structure for filtered test data is: + +:: + + - job 1 + - build 1 + - test 1 + - parameter 1 + - parameter 2 + ... + - parameter n + ... + - test n + ... + ... + - build n + ... + - job n + + +Data analytics +`````````````` + +Data analytics part implements: + + - methods to compute statistical data from the filtered input data. + - trending. + - etc. + + +Advanced data analytics +``````````````````````` + +As the next steps, advanced data analytics (ADA) will be implemented using +machine learning (ML) and artificial intelligence (AI). + +TODO: + + - describe the concept of ADA. + - add specification. + + +Data presentation +----------------- + +Generates the plots and tables according to the report models per +specification file. The elements are generated using algorithms and data +specified in their models. + + +Tables +`````` + + - tables are generated by algorithms implemented in PAL, the model includes the + algorithm and all necessary information. + - output format: csv + - generated tables are stored in specified directories and linked to .rst files. + + +Plots +````` + + - `plot.ly <https://plot.ly/>`_ is currently used to generate plots, the model + includes the type of plot and all the necessary information to render it. + - output format: html. + - generated plots are stored in specified directories and linked to .rst files. + + +Report generation +----------------- + +Report is generated using Sphinx and Read_the_Docs template. PAL generates html +and pdf formats. It is possible to define the content of the report by specifying +the version (TODO: define the names and content of versions). + + +The process +``````````` + +1. Read the specification. +2. Read the input data. +3. Process the input data. +4. For element (plot, table, file) defined in specification: + + a. Get the data needed to construct the element using a filter. + b. Generate the element. + c. Store the element. + +5. Generate the report. +6. Store the report (Nexus). + +The process is model driven. The elements’ models (tables, plots, files and +report itself) are defined in the specification file. Script reads the elements’ +models from specification file and generates the elements. + +It is easy to add elements to be generated, if a new kind of element is +required, only a new algorithm is implemented and integrated. + + +API +--- + +List of modules, classes, methods and functions +``````````````````````````````````````````````` + +:: + + specification_parser.py + + class Specification + + Methods: + read_specification + set_input_state + set_input_file_name + + Getters: + specification + environment + debug + is_debug + input + builds + output + tables + plots + files + static + + + input_data_parser.py + + class InputData + + Methods: + read_data + filter_data + + Getters: + data + metadata + suites + tests + + + environment.py + + Functions: + clean_environment + + class Environment + + Methods: + set_environment + + Getters: + environment + + + input_data_files.py + + Functions: + download_data_files + unzip_files + + + generator_tables.py + + Functions: + generate_tables + + Functions implementing algorithms to generate particular types of + tables (called by the function "generate_tables"): + table_details + table_performance_improvements + + + generator_plots.py + + Functions: + generate_plots + + Functions implementing algorithms to generate particular types of + plots (called by the function "generate_plots"): + plot_performance_box + plot_latency_box + + + generator_files.py + + Functions: + generate_files + + Functions implementing algorithms to generate particular types of + files (called by the function "generate_files"): + file_test_results + + + report.py + + Functions: + generate_report + + Functions implementing algorithms to generate particular types of + report (called by the function "generate_report"): + generate_html_report + generate_pdf_report + + Other functions called by the function "generate_report": + archive_input_data + archive_report + + +PAL functional diagram +`````````````````````` + +.. figure:: pal_func_diagram.svg + :alt: PAL functional diagram + :align: center + + +How to add an element +````````````````````` + +Element can be added by adding its model to the specification file. If the +element will be generated by an existing algorithm, only its parameters must be +set. + +If a brand new type of element will be added, also the algorithm must be +implemented. +The algorithms are implemented in the files which names start with "generator". +The name of the function implementing the algorithm and the name of algorithm in +the specification file had to be the same. |